diff --git a/EintooAR/Assets/Plugins/Android/gradleTemplate.properties b/EintooAR/Assets/Plugins/Android/gradleTemplate.properties new file mode 100644 index 00000000..d67da298 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/gradleTemplate.properties @@ -0,0 +1,11 @@ +org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M +org.gradle.parallel=true +unityStreamingAssets=**STREAMING_ASSETS** +# Android Resolver Properties Start +android.useAndroidX=true +android.enableJetifier=true +# Android Resolver Properties End +**ADDITIONAL_PROPERTIES** +android.overridePathCheck=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/EintooAR/Assets/Plugins/Android/gradleTemplate.properties.meta b/EintooAR/Assets/Plugins/Android/gradleTemplate.properties.meta new file mode 100644 index 00000000..ee186f22 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/gradleTemplate.properties.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 222e9cd58d6e042479c8e6cd12e4c0e8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle new file mode 100644 index 00000000..0bd6a0ac --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle @@ -0,0 +1,66 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:7 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:15 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:5 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup new file mode 100644 index 00000000..42285ca3 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup @@ -0,0 +1,71 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:19 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:28 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:30 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:25 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:17 + implementation 'com.android.billingclient:billing:7.1.1+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:9 + implementation 'com.google.android.gms:play-services-games-v2:20.0.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:12 + implementation 'com.google.android.play:app-update:2.1.0' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:6 + implementation 'com.google.android.play:review:2.0.1+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:22 + implementation 'com.google.firebase:firebase-messaging:23.1.1+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:15 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup.meta new file mode 100644 index 00000000..cf2bb19f --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 48b45c6db1ca5384cb9d87fe8cd5a308 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2 b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2 new file mode 100644 index 00000000..e28ce35a --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2 @@ -0,0 +1,67 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:16 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:18 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:8 + implementation 'com.google.android.play:app-update:2.1.0' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:6 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2.meta new file mode 100644 index 00000000..9cf2745e --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup2.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c34eb799dc1159b47bcdff0f0525c6b4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3 b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3 new file mode 100644 index 00000000..e28ce35a --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3 @@ -0,0 +1,67 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:16 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:18 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:8 + implementation 'com.google.android.play:app-update:2.1.0' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:6 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3.meta new file mode 100644 index 00000000..39cb8527 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup3.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3c1896b974aa031499b7827a3a765259 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4 b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4 new file mode 100644 index 00000000..0bd6a0ac --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4 @@ -0,0 +1,66 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:7 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:15 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:5 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4.meta new file mode 100644 index 00000000..ef47687d --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup4.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a24eaff3e2f1acd438ffedb999c44d3b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5 b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5 new file mode 100644 index 00000000..0bd6a0ac --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5 @@ -0,0 +1,66 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:7 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:15 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:5 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5.meta new file mode 100644 index 00000000..ff1710aa --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup5.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6c4c69fac7648de4289b812343f9cd8f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6 b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6 new file mode 100644 index 00000000..0bd6a0ac --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6 @@ -0,0 +1,66 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:7 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:15 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:5 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6.meta new file mode 100644 index 00000000..61705215 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup6.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d7d07da015ebead4c8e09ec7cfdf186a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7 b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7 new file mode 100644 index 00000000..0bd6a0ac --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7 @@ -0,0 +1,66 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:7 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:15 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:5 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7.meta new file mode 100644 index 00000000..6b3570c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup7.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b18fc904497daa048b0333cadee80021 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8 b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8 new file mode 100644 index 00000000..0bd6a0ac --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8 @@ -0,0 +1,66 @@ +apply plugin: 'com.android.library' +apply from: '../shared/keepUnitySymbols.gradle' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.2.0' +// Android Resolver Dependencies Start + implementation 'androidx.activity:activity:1.6.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:7 + implementation 'androidx.appcompat:appcompat:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:13 + implementation 'androidx.appcompat:appcompat-resources:1.5.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:15 + implementation 'androidx.core:core:1.7.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:10 + implementation 'androidx.exifinterface:exifinterface:1.3.0+' // Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml:5 +// Android Resolver Dependencies End +**DEPS**} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/armeabi-v7a/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + ndkVersion "**NDKVERSION**" + + compileSdk **APIVERSION** + buildToolsVersion = "**BUILDTOOLS**" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + defaultConfig { + minSdk **MINSDK** + targetSdk **TARGETSDK** + ndk { + abiFilters **ABIFILTERS** + debugSymbolLevel **DEBUGSYMBOLLEVEL** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** +**DEFAULT_CONFIG_SETUP** + } + + lint { + abortOnError false + } + + androidResources { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8.meta new file mode 100644 index 00000000..614bbe96 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.backup8.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3f4ce635d56c2c743ac4e4369d588f3a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.meta b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.meta new file mode 100644 index 00000000..43120dde --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/mainTemplate.gradle.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0d3b1393a526a344eb5288bcfe2e0b59 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/Android/settingsTemplate.gradle b/EintooAR/Assets/Plugins/Android/settingsTemplate.gradle new file mode 100644 index 00000000..0cc1dea8 --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/settingsTemplate.gradle @@ -0,0 +1,27 @@ +pluginManagement { + repositories { + **ARTIFACTORYREPOSITORY** + gradlePluginPortal() + google() + mavenCentral() + } +} + +include ':launcher', ':unityLibrary' +**INCLUDES** + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) + repositories { + **ARTIFACTORYREPOSITORY** + google() + mavenCentral() +// Android Resolver Repos Start + def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/") + mavenLocal() +// Android Resolver Repos End + flatDir { + dirs "${project(':unityLibrary').projectDir}/libs" + } + } +} diff --git a/EintooAR/Assets/Plugins/Android/settingsTemplate.gradle.meta b/EintooAR/Assets/Plugins/Android/settingsTemplate.gradle.meta new file mode 100644 index 00000000..936ad65b --- /dev/null +++ b/EintooAR/Assets/Plugins/Android/settingsTemplate.gradle.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ba42dad9f52e9374f9f332e777d31668 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets.meta new file mode 100644 index 00000000..a8fb9f25 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e13412d4391ff941b8e76f52cfcebaf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling.meta new file mode 100644 index 00000000..e1fbd0a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d231409514a7d14ab7a85e8906b97da +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/ArrayPoolsProvider.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/ArrayPoolsProvider.cs new file mode 100644 index 00000000..16eaf951 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/ArrayPoolsProvider.cs @@ -0,0 +1,43 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using ToolBuddy.Pooling.Pools; + +namespace ToolBuddy.Pooling +{ + /// + /// Provides instances of + /// + /// Is thread safe + public class ArrayPoolsProvider + { + private static Dictionary arrayPools = new Dictionary(); + private static object lockObject = new object(); + + /// + /// Returns an instance of if previously created, otherwise creates a new one. + /// + /// + public static ArrayPool GetPool() + { + Type type = typeof(T); + object pool; + if (arrayPools.TryGetValue(type, out pool) == false) + { + lock (lockObject) + { + if (arrayPools.TryGetValue(type, out pool) == false) + arrayPools[type] = pool = new ArrayPool(1_000_000); + } + } + + return (ArrayPool)pool; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/ArrayPoolsProvider.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/ArrayPoolsProvider.cs.meta new file mode 100644 index 00000000..95fae63b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/ArrayPoolsProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63f40aa4b20670544b815cf3f0a5da3a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections.meta new file mode 100644 index 00000000..ab019730 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1234dcf70b996c4cb133e83886a27fe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArray.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArray.cs new file mode 100644 index 00000000..79e7f777 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArray.cs @@ -0,0 +1,125 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using ToolBuddy.Pooling.Pools; + +namespace ToolBuddy.Pooling.Collections +{ + /// + /// A struct that helps you use a part of an array. + /// + /// Can be reused if you free it by calling + /// +#if CURVY_SANITY_CHECKS + public struct SubArray + { + + private T[] array; + + /// + /// The array where data is stored in + /// + public T[] Array + { + get + { + if (IsDisposed) + throw new InvalidOperationException("Trying to dispose a disposed SubArray"); + return array; + } + set => array = value; + } + + public bool IsDisposed; +#else +public readonly struct SubArray + { + /// + /// The array where data is stored in + /// + public readonly T[] Array; +#endif + /// + /// The number of elements to be used in that array, counted from the start of the array + /// + public readonly int Count; + + /// + /// Creates an instance that will use all the elements of the given array + /// + public SubArray(T[] array) + { +#if CURVY_SANITY_CHECKS + IsDisposed = false; + this.array = +#else + Array = +#endif + array != null ? array : throw new ArgumentNullException(nameof(array)); + Count = array.Length; + } + + /// + /// Creates an instance that will use the first "count" elements of the given array + /// + public SubArray(T[] array, int count) + { + if (array == null) + throw new ArgumentNullException(nameof(array)); + if (count < 0) + throw new ArgumentOutOfRangeException(nameof(count)); + if (count > array.Length) + throw new ArgumentOutOfRangeException(nameof(count)); + +#if CURVY_SANITY_CHECKS + IsDisposed = false; + this.array = +#else + Array = +#endif + array; + + Count = count; + } + + /// + /// Returns a new array that which length is and contains the elements from + /// + public T[] CopyToArray(ArrayPool arrayPool) + { + T[] result = arrayPool.AllocateExactSize(Count, false).Array; + System.Array.Copy(Array, 0, result, 0, Count); + return result; + } + + public override int GetHashCode() + { + return Array != null ? Array.GetHashCode() ^ Count : 0; + } + + public override bool Equals(object obj) + { + return obj is SubArray subArray && Equals(subArray); + } + + public bool Equals(SubArray obj) + { + return obj.Array == Array && obj.Count == Count; + } + + public static bool operator ==(SubArray a, SubArray b) + { + return a.Equals(b); + } + + public static bool operator !=(SubArray a, SubArray b) + { + return !(a == b); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArray.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArray.cs.meta new file mode 100644 index 00000000..f9c316cf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArray.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40ccb37f4e1e70b42a936638fd73f551 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArrayList.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArrayList.cs new file mode 100644 index 00000000..dc4c5cc4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArrayList.cs @@ -0,0 +1,95 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using ToolBuddy.Pooling.Pools; + +namespace ToolBuddy.Pooling.Collections +{ + /// + /// A class that simulates very minimal features of a List, but using a instead of an as a storage + /// + /// + public struct SubArrayList + { + private readonly ArrayPool typePool; + private SubArray subArray; + + /// + /// The used by the underlying for storage + /// + public T[] Array => subArray.Array; + + /// + /// The number of elements occupied in the storage + /// + public int Count { get; private set; } + + /// + /// Creates an instance + /// + /// The initial capacity of the underlying storage + /// A pool that will be used to, if needed, allocate a bigger array if elements + public SubArrayList(int initialCapacity, ArrayPool typePool) + { + this.typePool = typePool; + subArray = typePool.Allocate(initialCapacity, false); + Count = 0; + } + + /// + /// Adds a new element to the array + /// + public void Add(T element) + { + if (Count == subArray.Count) + { + int newSize = subArray.Count == 0 ? 4 : subArray.Count * 2; + typePool.Resize(ref subArray, newSize, false); + } + + subArray.Array[Count] = element; + Count++; + } + + /// + /// Returns a instance that will have as an array (not a copy of it), and as its + /// + /// + public SubArray ToSubArray() + { + return new SubArray(subArray.Array, Count); + } + + public bool Equals(SubArrayList other) + { + return subArray.Equals(other.subArray) && Count == other.Count; + } + + public override bool Equals(object obj) + { + return obj is SubArrayList other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + return (subArray.GetHashCode() * 397) ^ Count; + } + } + + public static bool operator ==(SubArrayList a, SubArrayList b) + { + return a.Equals(b); + } + + public static bool operator !=(SubArrayList a, SubArrayList b) + { + return !(a == b); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArrayList.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArrayList.cs.meta new file mode 100644 index 00000000..269f2be9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Collections/SubArrayList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47f615f5619283e4a9d614fd31165ac8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools.meta new file mode 100644 index 00000000..34da629e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 42406537e9ce771468530c79cc69a08c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPool.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPool.cs new file mode 100644 index 00000000..651db381 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPool.cs @@ -0,0 +1,382 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Runtime.CompilerServices; +using ToolBuddy.Pooling.Collections; +using UnityEngine; +using Random = UnityEngine.Random; + +namespace ToolBuddy.Pooling.Pools +{ + /// + /// A pool of allowing the re-usage of previously allocated and discarded arrays. + /// Helps reducing garbage collection. + /// + /// Is thread safe + /// + public class ArrayPool + { + + private readonly SubArray emptySubArray = new SubArray(new T[0]); + + private readonly System.Random random = new System.Random(); + + private const int keysInitialCapacity = 200; + //Optim: inserting and removing elements from those arrays leads to array copies. That takes a lot of time. Enhance this if needed + private int[] poolKeys = new int[keysInitialCapacity]; + private T[][] poolValues = new T[keysInitialCapacity][]; + private int arraysCount; + + private long elementsCount; + private long elementsCapacity; + + /// + /// The maximal number of elements that the pool will keep, after they have been freed, to be available for future usage. + /// Once this limit is reached, every freed array will simply get ignored, allowing the garbage collector to collect it + /// + /// This is not the maximal number of arrays, but the maximal sum of the arrays' lengths + public long ElementsCapacity + { + get => elementsCapacity; + set + { + if (elementsCapacity != value) + lock (this) + { + elementsCapacity = value; + ApplyCapacity(elementsCapacity); + } + } + } + + /// + /// Log in the console each time a new array is allocated in memory + /// + public bool LogAllocations { get; set; } + + /// + /// Returns data about the pool's usage. + /// + /// + public ArrayPoolUsageData UsageData => new ArrayPoolUsageData(elementsCount, arraysCount, elementsCapacity); + + /// + /// Creates a new pool + /// + /// + /// + public ArrayPool(long elementsCapacity) + { + if (elementsCapacity < 0) + throw new ArgumentOutOfRangeException(nameof(elementsCapacity), "Must be strictly positive."); + + this.elementsCapacity = elementsCapacity; + } + + /// + /// Allocates a new array if none available, or reuses an existing one otherwise + /// + /// The array's guaranteed minimal size + /// Whether the returned array's elements will be guaranteed to be set to their default value + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + + public SubArray Allocate(int minimalSize, bool clearArray = true) + { + //OPTIM set all calls that don't need a cleared array to clearArray == false + return Allocate(minimalSize, false, clearArray, out _); + } + + /// + /// Allocates a new array if none available, or reuses an existing one otherwise + /// + /// The array's exact size + /// Whether the returned array's elements will be guaranteed to be set to their default value + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public SubArray AllocateExactSize(int exactSize, bool clearArray = true) + { + return Allocate(exactSize, true, clearArray, out _); + } + + + /// + /// Returns an array to the pool, ready to be reused + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void Free(SubArray subArray) + { + Free(subArray.Array); +#if CURVY_SANITY_CHECKS + subArray.IsDisposed = true; +#endif + } + + /// + /// Returns an array to the pool, ready to be reused + /// + public void Free(T[] array) + { + if (array.Length > elementsCapacity || array.Length == 0) + return; + + lock (this) + { +#if CURVY_SANITY_CHECKS + for (var i = 0; i < arraysCount; i++) + { + if (poolValues[i] == array) + throw new InvalidOperationException(); + } +#endif + + ApplyCapacity(elementsCapacity - array.Length); + + int indexToInsertInto; + { + int index = BinarySearch(poolKeys, arraysCount, array.Length); + indexToInsertInto = index >= 0 ? index : ~index; + } + + if (arraysCount == poolKeys.Length) + { + //no overflow check. If you reach the point of overflowing, then you have way too much arrays + int newSize = 2 * (arraysCount + 1); + Array.Resize(ref poolValues, newSize); + Array.Resize(ref poolKeys, newSize); + } + + if (indexToInsertInto < arraysCount) + { + Array.Copy(poolKeys, indexToInsertInto, poolKeys, indexToInsertInto + 1, arraysCount - indexToInsertInto); + Array.Copy(poolValues, indexToInsertInto, poolValues, indexToInsertInto + 1, arraysCount - indexToInsertInto); + } + poolKeys[indexToInsertInto] = array.Length; + poolValues[indexToInsertInto] = array; + + ++arraysCount; + + elementsCount += array.Length; + } + } + + /// + /// Resizes the given array + /// + /// The array to resize + /// The new size + /// When resizing and array to make it bigger, should the newly available space be cleared or not. + public void Resize(ref SubArray subArray, int newMinimalSize, bool clearNewSpace = true) + { + //OPTIM set all calls that don't need a cleared new space to clearNewSpace == false + if (subArray.Count == newMinimalSize) + return; + + if (newMinimalSize < 0) + throw new ArgumentOutOfRangeException(nameof(newMinimalSize), "Must be positive."); + + if (newMinimalSize == 0) + { + Free(subArray); + subArray = emptySubArray; + } + else + { + int oldSize = subArray.Count; + + bool isArrayCleared; + if (newMinimalSize > subArray.Array.Length) + { + SubArray destinationSubArray = Allocate(newMinimalSize, false, false, out isArrayCleared); + Array.Copy( + subArray.Array, 0, + destinationSubArray.Array, 0, + subArray.Count); + Free(subArray); + subArray = destinationSubArray; + } + else + { + subArray = new SubArray(subArray.Array, newMinimalSize); + isArrayCleared = false; + } + + if (clearNewSpace && isArrayCleared == false && newMinimalSize > oldSize) + Array.Clear(subArray.Array, oldSize, newMinimalSize - oldSize); + } + } + + /// + /// Resize an array to a new size and clears it. Similar to calling then calling , but done in a more optimized way + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ResizeAndClear(ref SubArray subArray, int newMinimalSize) + { + if (subArray.Count == newMinimalSize) + { + Array.Clear(subArray.Array, 0, newMinimalSize); + return; + } + + if (newMinimalSize < 0) + throw new ArgumentOutOfRangeException(nameof(newMinimalSize), "Must be positive."); + + if (newMinimalSize == 0) + { + Free(subArray); + subArray = emptySubArray; + } + else + { + if (newMinimalSize > subArray.Array.Length) + { + SubArray destinationSubArray = Allocate(newMinimalSize, false, true, out _); + Free(subArray); + subArray = destinationSubArray; + } + else + { + subArray = new SubArray(subArray.Array, newMinimalSize); + Array.Clear(subArray.Array, 0, newMinimalSize); + } + } + } + + /// + /// Return a new instance that will use a copy of the given input array + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public SubArray Clone(T[] source) + { + SubArray clone = Allocate(source.Length, false); + Array.Copy(source, 0, + clone.Array, 0, source.Length); + + return clone; + } + + /// + /// Return a new instance that will use a copy of the given input array + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public SubArray Clone(SubArray source) + { + SubArray clone = Allocate(source.Count, false); + Array.Copy(source.Array, 0, + clone.Array, 0, source.Count); + + return clone; + } + + /// + /// Allocates a new array if none available, or reuses an existing one otherwise + /// + /// The array's minimal or exact size, depending on + /// Whether the parameter should be considered as an exact size or a minimal one + /// Whether the returned array's elements will be guaranteed to be set to their default value + /// Whether the returned array is cleared. This is different from because even if is set to false, a newly created array will have its content cleared by definition + /// + private SubArray Allocate(int size, bool exactSize, bool clearArray, out bool isArrayCleared) + { + + if (size > elementsCapacity) + { + isArrayCleared = true; + if (LogAllocations) + Debug.Log($"[ArrayPools] Type: {typeof(T).Name}. Allocated array size {size}. The requested size is bigger than the pool's capacity {elementsCapacity}"); + return new SubArray(new T[size], size); + } + + if (size == 0) + { + isArrayCleared = true; + return emptySubArray; + } + + if (size < 0) + throw new ArgumentOutOfRangeException(nameof(size), "Must be positive."); + + lock (this) + { + int indexToRemoveFrom; + { + int elementIndex = BinarySearch(poolKeys, arraysCount, size); + + indexToRemoveFrom = elementIndex >= 0 + ? elementIndex + : exactSize + ? arraysCount + : ~elementIndex; + } + + T[] array; + if (indexToRemoveFrom < arraysCount) + { + array = RemoveElementAt(indexToRemoveFrom); + if (clearArray) + Array.Clear(array, 0, array.Length); + isArrayCleared = clearArray; + } + else + { + if (LogAllocations) + Debug.Log($"[ArrayPools] Type: {typeof(T).Name}. Allocated array size {size}. The size of the biggest array available is {(arraysCount == 0 ? "None" : poolKeys[arraysCount - 1].ToString( ))}"); + array = new T[size]; + isArrayCleared = true; + } + + return new SubArray(array, size); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void ApplyCapacity(long capacity) + { + while (elementsCount > capacity) + RemoveElementAt(random.Next(0, arraysCount)); + } + + private T[] RemoveElementAt(int elementIndex) + { + T[] array = poolValues[elementIndex]; + + --arraysCount; + if (elementIndex < arraysCount) + { + Array.Copy(poolKeys, elementIndex + 1, poolKeys, elementIndex, arraysCount - elementIndex); + Array.Copy(poolValues, elementIndex + 1, poolValues, elementIndex, arraysCount - elementIndex); + } + elementsCount -= array.Length; + return array; + } + + /// + /// + /// + private static int BinarySearch( + int[] array, + int length, + int value) + { + int num1 = 0; + int num2 = length - 1; + while (num1 <= num2) + { + int index1 = num1 + (num2 - num1 >> 1); + int num3 = array[index1] - value; + if (num3 == 0) + return index1; + if (num3 < 0) + num1 = index1 + 1; + else + num2 = index1 - 1; + } + return ~num1; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPool.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPool.cs.meta new file mode 100644 index 00000000..674a4f49 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 265a80d77815ce84ca4914d0fe04201a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPoolUsageData.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPoolUsageData.cs new file mode 100644 index 00000000..619a4b00 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPoolUsageData.cs @@ -0,0 +1,75 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +namespace ToolBuddy.Pooling.Pools +{ + /// + /// Data about how full an is + /// + public readonly struct ArrayPoolUsageData + { + /// + /// The number of elements that the pool will keep, after they have been freed, to be available for future usage. + /// + /// This is not the maximal number of arrays, but the maximal sum of the arrays' lengths + public long ElementsCount { get; } + /// + /// The number of arrays stored in the pool + /// + public int ArraysCount { get; } + /// + /// The maximal number of elements that the pool will keep, after they have been freed, to be available for future usage. + /// Once this limit is reached, every freed array will simply get ignored, allowing the garbage collector to collect it + /// + /// This is not the maximal number of arrays, but the maximal sum of the arrays' lengths + public long ElementsCapacity { get; } + + + public ArrayPoolUsageData(long elementsCount, int arraysCount, long elementsCapacity) + { + ElementsCount = elementsCount; + ArraysCount = arraysCount; + ElementsCapacity = elementsCapacity; + } + + public bool Equals(ArrayPoolUsageData other) + { + return ElementsCount == other.ElementsCount && ArraysCount == other.ArraysCount && ElementsCapacity == other.ElementsCapacity; + } + + public override bool Equals(object obj) + { + return obj is ArrayPoolUsageData other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = ElementsCount.GetHashCode(); + hashCode = (hashCode * 397) ^ ArraysCount; + hashCode = (hashCode * 397) ^ ElementsCapacity.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(ArrayPoolUsageData a, ArrayPoolUsageData b) + { + return a.Equals(b); + } + + public static bool operator !=(ArrayPoolUsageData a, ArrayPoolUsageData b) + { + return !(a == b); + } + + public override string ToString() + { + return $"{nameof(ElementsCount)}: {ElementsCount}, {nameof(ArraysCount)}: {ArraysCount}, {nameof(ElementsCapacity)}: {ElementsCapacity}"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPoolUsageData.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPoolUsageData.cs.meta new file mode 100644 index 00000000..688af8eb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Arrays Pooling/Pools/ArrayPoolUsageData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 496538c595f98984291012010b2f1e26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples.meta new file mode 100644 index 00000000..5d806440 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 307763d67386f3841ba48c5da5f56f52 +folderAsset: yes +timeCreated: 1437476977 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor.meta new file mode 100644 index 00000000..65281afa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fda4720cf39a5d241b49abde38593b00 +folderAsset: yes +timeCreated: 1442473707 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor/E01_HeightMetadataEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor/E01_HeightMetadataEditor.cs new file mode 100644 index 00000000..9e20e1a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor/E01_HeightMetadataEditor.cs @@ -0,0 +1,34 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.Curvy.Examples; +using FluffyUnderware.CurvyEditor; + +namespace FluffyUnderware.Curvy.ExamplesEditor +{ + + [CustomEditor(typeof(E01_HeightMetadata))] + public class E01_HeightMetadataEditor : DTEditor + { + + [DrawGizmo(GizmoType.Active|GizmoType.NonSelected|GizmoType.InSelectionHierarchy)] + static void GizmoDrawer(E01_HeightMetadata data, GizmoType context) + { + if (CurvyGlobalManager.ShowMetadataGizmo && data.Spline.ShowGizmos) + { + Vector3 position = data.ControlPoint.transform.position; +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(position, data.MetaDataValue.ToString(), OrientationAxisEnum.Down); +#pragma warning restore CS0618 + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor/E01_HeightMetadataEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor/E01_HeightMetadataEditor.cs.meta new file mode 100644 index 00000000..bfbf4d30 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Editor/E01_HeightMetadataEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 90ad9f4a58552ff48aecd9e1464f44a9 +timeCreated: 1442473718 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes.meta new file mode 100644 index 00000000..13f2dccc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 946aba22c21c03247971e0d4aec7b2c7 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/00_SplineController.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/00_SplineController.unity new file mode 100644 index 00000000..94ee5233 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/00_SplineController.unity @@ -0,0 +1,2995 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientGroundColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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: 1498476212} + m_IndirectSpecularColor: {r: 0.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &15976118 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &99706568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 99706570} + - component: {fileID: 99706569} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &99706569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99706568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.0000005259927, y: -0.00000065749083, z: -11.030865} + m_HandleOut: {x: 0.0000005259927, y: 0.00000065749083, z: 11.030865} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &99706570 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99706568} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -20, y: 1.4215566e-14, z: 0.0000002384976} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &139633144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 139633146} + - component: {fileID: 139633147} + - component: {fileID: 139633145} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &139633145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139633144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!224 &139633146 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139633144} + 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_Children: [] + m_Father: {fileID: 1046550685} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &139633147 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139633144} + m_CullTransparentMesh: 0 +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &239241178 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 239241182} + - component: {fileID: 239241181} + - component: {fileID: 239241180} + - component: {fileID: 239241179} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &239241179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 239241180} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1791199110} + m_MethodName: Stop + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 718310757} + m_MethodName: Stop + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1791199110} + m_MethodName: Play + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 718310757} + m_MethodName: Play + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &239241180 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &239241181 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + m_CullTransparentMesh: 0 +--- !u!224 &239241182 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + 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_Children: + - {fileID: 2131385141} + m_Father: {fileID: 1749425095} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -1.800003, y: 26.900002} + m_SizeDelta: {x: -23.6, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!4 &342501802 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 1443146465} + m_PrefabAsset: {fileID: 0} +--- !u!1 &421263381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 421263382} + - component: {fileID: 421263384} + - component: {fileID: 421263383} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &421263382 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 421263381} + 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_Children: + - {fileID: 807338034} + m_Father: {fileID: 1991743983} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &421263383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 421263381} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &421263384 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 421263381} + m_CullTransparentMesh: 0 +--- !u!1001 &442832823 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: Outer CheckPoint + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.6271189 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: 0.32157904 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.32639155 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: -0.6299027 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Speed + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 2107010019} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animate + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Clamping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.size + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[1].time + value: .354166657 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[2].time + value: .655480742 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[3].time + value: .958333313 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[1].value + value: 1.00879633 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[2].value + value: .993387878 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[3].value + value: 1.0314815 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[2].inSlope + value: -.0208616257 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Animation.m_Curve.Array.data[2].outSlope + value: -.0208616257 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 0} + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!1 &471204074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 471204078} + - component: {fileID: 471204077} + - component: {fileID: 471204076} + - component: {fileID: 471204075} + - component: {fileID: 471204079} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &471204075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471204074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &471204076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471204074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &471204077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471204074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &471204078 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471204074} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &471204079 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471204074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &548469950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 548469952} + - component: {fileID: 548469951} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &548469951 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 548469950} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: 22.061731} + m_HandleOut: {x: 0, y: 0, z: -22.061731} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &548469952 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 548469950} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 40, y: -1.04216074e-13, z: -0.0000017484555} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &589377638 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 589377639} + - component: {fileID: 589377641} + - component: {fileID: 589377640} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &589377639 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589377638} + 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_Children: [] + m_Father: {fileID: 1991743983} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &589377640 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589377638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Absolute +--- !u!222 &589377641 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589377638} + m_CullTransparentMesh: 0 +--- !u!1 &718310755 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194842, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 718310756} + - component: {fileID: 718310757} + m_Layer: 0 + m_Name: Outer Plane Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &718310756 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 421896, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718310755} + m_LocalRotation: {x: -0.21620618, y: 0.6762523, z: -0.21445666, w: 0.6707802} + m_LocalPosition: {x: 0, y: 0, z: 40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 342501802} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &718310757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 718310755} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 0 + m_Speed: 0.25 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 2107010019} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &724124977 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 724124979} + - component: {fileID: 724124978} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &724124978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724124977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -11.030865, y: -0, z: -0} + m_HandleOut: {x: 11.030865, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &724124979 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724124977} + m_LocalRotation: {x: -0.30019733, y: -0.0068442407, z: -0.113784686, w: 0.94704163} + m_LocalPosition: {x: 0, y: 0.0000011920929, z: 19.999998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &730576498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 730576500} + - component: {fileID: 730576499} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &730576499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730576498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 22.061731, y: -2.8739838e-14, z: -0} + m_HandleOut: {x: -22.061731, y: 2.8739838e-14, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &730576500 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730576498} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &807338033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 807338034} + - component: {fileID: 807338036} + - component: {fileID: 807338035} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &807338034 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807338033} + 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_Children: [] + m_Father: {fileID: 421263382} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &807338035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807338033} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &807338036 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807338033} + m_CullTransparentMesh: 0 +--- !u!1 &899151545 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 899151547} + - component: {fileID: 899151546} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &899151546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899151545} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 11.030866, y: -3.1351607e-14, z: -0.0000005259927} + m_HandleOut: {x: -11.030865, y: 3.1351603e-14, z: 0.0000005259926} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &899151547 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899151545} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000017484556, y: -0.0000011920929, z: -19.999998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &984773620 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 984773622} + - component: {fileID: 984773621} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &984773621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984773620} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1046550684} + toggleTransition: 1 + graphic: {fileID: 139633145} + m_Group: {fileID: 1749425098} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1791199110} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: MoveMode=Relative + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1791199110} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Speed=0.25 + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 718310757} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: MoveMode=Relative + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 718310757} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Speed=0.25 + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 1 +--- !u!224 &984773622 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984773620} + 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_Children: + - {fileID: 1046550685} + - {fileID: 2115539740} + m_Father: {fileID: 1749425095} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 90, y: -209.2} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1046550683 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1046550685} + - component: {fileID: 1046550686} + - component: {fileID: 1046550684} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1046550684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046550683} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!224 &1046550685 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046550683} + 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_Children: + - {fileID: 139633146} + m_Father: {fileID: 984773622} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1046550686 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046550683} + m_CullTransparentMesh: 0 +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'The SplineController component makes an object follow a spline + with a specified speed. The speed can be 0. + + + Depending on the movement method + chosen speed means either "Loops per second" (Relative) or "World Units + per second" (Absolute)' +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1396188129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396188131} + - component: {fileID: 1396188130} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1396188130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396188129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 0.00000065749094, z: 11.030865} + m_HandleOut: {x: 0, y: -0.000000657491, z: -11.030866} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1396188131 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396188129} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 20, y: -5.2108037e-14, z: -0.00000087422774} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1443146465 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 718310756} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!1001 &1465485721 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: Inner Checkpoint + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0.0000011920929 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 19.999998 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.62756467 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: 0.3207032 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.3281278 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: -0.6290026 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1655500529} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!1 &1482403671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1482403673} + - component: {fileID: 1482403672} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1482403672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482403671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -22.061731, y: 2.8739838e-14, z: -0} + m_HandleOut: {x: 22.061731, y: -2.8739838e-14, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1482403673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482403671} + m_LocalRotation: {x: -0.3001956, y: -0.0068468265, z: -0.11378632, w: 0.9470419} + m_LocalPosition: {x: 0, y: 0, z: 40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1498476211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1498476213} + - component: {fileID: 1498476212} + 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 &1498476212 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1498476213 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &1612480954 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 1665587587} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 1665809481} + - {fileID: 1498476213} + - {fileID: 141106066} + - {fileID: 135020125} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1655500528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1655500530} + - component: {fileID: 1655500529} + m_Layer: 0 + m_Name: InnerShape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1655500529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655500528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.2 + ControlPoints: + - {fileID: 724124978} + - {fileID: 1396188130} + - {fileID: 899151546} + - {fileID: 99706569} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1655500530 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655500528} + 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_Children: + - {fileID: 724124979} + - {fileID: 1396188131} + - {fileID: 899151547} + - {fileID: 99706570} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1665587587 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1791199109} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + - component: {fileID: 1665809482} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_LocalRotation: {x: 0.119284414, y: 0.16654205, z: -0.020300668, w: 0.9785821} + m_LocalPosition: {x: -24.3, y: 19.1, z: -71.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1665809482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 1655500529} + LineColor: {r: 1, g: 0, b: 0, a: 1} + - Spline: {fileID: 2107010019} + LineColor: {r: 1, g: 0, b: 0, a: 1} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + - {fileID: 984773622} + - {fileID: 1991743983} + - {fileID: 239241182} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -148.2} + m_SizeDelta: {x: 240, y: 296.4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1791199108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194842, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1791199109} + - component: {fileID: 1791199110} + m_Layer: 0 + m_Name: Inner Plane Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1791199109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 421896, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791199108} + m_LocalRotation: {x: -0.21574551, y: 0.6763994, z: -0.21399973, w: 0.6709261} + m_LocalPosition: {x: 0, y: 0.0000011920929, z: 19.999998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1612480954} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1791199110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791199108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 0 + m_Speed: 0.25 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 1655500529} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1991743982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1991743983} + - component: {fileID: 1991743984} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1991743983 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991743982} + 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_Children: + - {fileID: 421263382} + - {fileID: 589377639} + m_Father: {fileID: 1749425095} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 90, y: -235.2} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1991743984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991743982} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 421263383} + toggleTransition: 1 + graphic: {fileID: 807338035} + m_Group: {fileID: 1749425098} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1791199110} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: MoveMode=AbsolutePrecise + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1791199110} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Speed=30 + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 718310757} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: MoveMode=AbsolutePrecise + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 718310757} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Speed=30 + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 0 +--- !u!1 &2007267915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2007267917} + - component: {fileID: 2007267916} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2007267916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2007267915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -22.061731} + m_HandleOut: {x: 0, y: 0, z: 22.061731} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &2007267917 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2007267915} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -40, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2107010018 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2107010020} + - component: {fileID: 2107010019} + m_Layer: 0 + m_Name: OuterShape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2107010019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2107010018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.2 + ControlPoints: + - {fileID: 1482403672} + - {fileID: 548469951} + - {fileID: 730576499} + - {fileID: 2007267916} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &2107010020 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2107010018} + 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_Children: + - {fileID: 1482403673} + - {fileID: 548469952} + - {fileID: 730576500} + - {fileID: 2007267917} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2115539739 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2115539740} + - component: {fileID: 2115539742} + - component: {fileID: 2115539741} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2115539740 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115539739} + 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_Children: [] + m_Father: {fileID: 984773622} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2115539741 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115539739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Relative +--- !u!222 &2115539742 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115539739} + m_CullTransparentMesh: 0 +--- !u!1 &2131385140 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2131385141} + - component: {fileID: 2131385143} + - component: {fileID: 2131385142} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2131385141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131385140} + 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_Children: [] + m_Father: {fileID: 239241182} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2131385142 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131385140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Start over +--- !u!222 &2131385143 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131385140} + m_CullTransparentMesh: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/00_SplineController.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/00_SplineController.unity.meta new file mode 100644 index 00000000..e3506397 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/00_SplineController.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 8965de4a5c3327a4f9ba78f3aa5531ed +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/01_MetaData.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/01_MetaData.unity new file mode 100644 index 00000000..dce1048f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/01_MetaData.unity @@ -0,0 +1,1934 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientGroundColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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: 1274544522} + m_IndirectSpecularColor: {r: 0.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &69368376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 69368380} + - component: {fileID: 69368379} + - component: {fileID: 69368378} + - component: {fileID: 69368377} + - component: {fileID: 69368381} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &69368377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69368376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &69368378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69368376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &69368379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69368376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &69368380 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69368376} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &69368381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69368376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &99706568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 99706570} + - component: {fileID: 99706569} + - component: {fileID: 99706571} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &99706569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99706568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -11.030866} + m_HandleOut: {x: 0, y: 0, z: 11.030866} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &99706570 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99706568} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -20, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &99706571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99706568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8712b26610c3b0646b25d28526c1128f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Height: 0 +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 587010589} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1001 &359227927 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &508267772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 508267775} + - component: {fileID: 508267774} + - component: {fileID: 508267773} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &508267773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 508267772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &508267774 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 508267772} + m_CullTransparentMesh: 0 +--- !u!224 &508267775 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 508267772} + 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_Children: [] + m_Father: {fileID: 1569554921} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &526633673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 526633674} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &526633674 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 526633673} + 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_Children: + - {fileID: 1995755915} + m_Father: {fileID: 1569554921} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &587010588 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 128296, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 587010589} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &587010589 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 496342, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 587010588} + 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_Children: + - {fileID: 1274544521} + - {fileID: 1254592755} + - {fileID: 141106066} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &724124977 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 724124979} + - component: {fileID: 724124978} + - component: {fileID: 724124980} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &724124978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724124977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -11.030866, y: -0, z: -0} + m_HandleOut: {x: 11.030866, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &724124979 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724124977} + m_LocalRotation: {x: 0.04519638, y: -0.70695823, z: 0.045031022, w: -0.70437175} + m_LocalPosition: {x: 0, y: 0, z: 20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &724124980 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724124977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8712b26610c3b0646b25d28526c1128f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Height: 0.5 +--- !u!1 &887777747 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 153764, guid: 889b1b1f3593237458e50add6283474c, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 887777748} + - component: {fileID: 887777749} + m_Layer: 0 + m_Name: Spaceship + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &887777748 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 453764, guid: 889b1b1f3593237458e50add6283474c, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887777747} + m_LocalRotation: {x: -0.045293134, y: 0.7085272, z: -0.04492663, w: 0.70279396} + m_LocalPosition: {x: -0.0051725283, y: 4.9593015, z: 19.363365} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1315608891} + m_Father: {fileID: 1655500530} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &887777749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887777747} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6b01ebf71ba5ff0478c3b1788e587526, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 30 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 1655500529} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + m_MaxHeight: 10 +--- !u!1 &899151545 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 899151547} + - component: {fileID: 899151546} + - component: {fileID: 899151548} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &899151546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899151545} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 11.030866, y: -0, z: -0} + m_HandleOut: {x: -11.030866, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &899151547 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899151545} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &899151548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899151545} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8712b26610c3b0646b25d28526c1128f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Height: 0.5 +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -189} + m_SizeDelta: {x: -20, y: 179} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: This example uses custom MetaData to store a height data in Control points. + The custom controller then reads this data and uses it to set the ship's height. +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1254592754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 191444, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1254592755} + - component: {fileID: 1254592758} + - component: {fileID: 1254592757} + - component: {fileID: 1254592756} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1254592755 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 439540, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254592754} + 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_Children: [] + m_Father: {fileID: 587010589} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1254592756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11406704, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254592754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1254592757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11491320, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254592754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1254592758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11449686, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254592754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1274544520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 150646, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1274544521} + - component: {fileID: 1274544522} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1274544521 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 447668, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274544520} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 587010589} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1274544522 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 10835260, guid: b185f9cdb036478439387ba7eea15ae5, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274544520} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1315608891 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 1494012402} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1344907633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1344907634} + - component: {fileID: 1344907636} + - component: {fileID: 1344907635} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1344907634 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344907633} + 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_Children: [] + m_Father: {fileID: 1509246440} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1344907635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344907633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1344907636 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344907633} + m_CullTransparentMesh: 0 +--- !u!1 &1396188129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396188131} + - component: {fileID: 1396188130} + - component: {fileID: 1396188132} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1396188130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396188129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: 11.030866} + m_HandleOut: {x: 0, y: 0, z: -11.030866} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1396188131 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396188129} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 20, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1396188132 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396188129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8712b26610c3b0646b25d28526c1128f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Height: 1 +--- !u!1 &1480714642 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1480714643} + - component: {fileID: 1480714645} + - component: {fileID: 1480714644} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1480714643 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1480714642} + 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_Children: [] + m_Father: {fileID: 1569554921} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -93, y: -5} + m_SizeDelta: {x: 64, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1480714644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1480714642} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Height:' +--- !u!222 &1480714645 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1480714642} + m_CullTransparentMesh: 0 +--- !u!1001 &1494012402 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 887777748} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.x + value: .5 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.y + value: .5 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.z + value: .5 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!1 &1509246439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1509246440} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1509246440 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509246439} + 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_Children: + - {fileID: 1344907634} + m_Father: {fileID: 1569554921} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1569554920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1569554921} + - component: {fileID: 1569554922} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1569554921 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569554920} + 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_Children: + - {fileID: 508267775} + - {fileID: 526633674} + - {fileID: 1509246440} + - {fileID: 1480714643} + m_Father: {fileID: 1749425095} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 53, y: -115.5} + m_SizeDelta: {x: 106, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1569554922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569554920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1344907635} + m_FillRect: {fileID: 1995755915} + m_HandleRect: {fileID: 1344907634} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 30 + m_WholeNumbers: 0 + m_Value: 15 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 887777749} + m_MethodName: set_MaxHeight + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &1655500528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1655500530} + - component: {fileID: 1655500529} + m_Layer: 0 + m_Name: Curvy Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1655500529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655500528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 724124978} + - {fileID: 1396188130} + - {fileID: 899151546} + - {fileID: 99706569} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1655500530 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655500528} + 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_Children: + - {fileID: 724124979} + - {fileID: 1396188131} + - {fileID: 899151547} + - {fileID: 99706570} + - {fileID: 887777748} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + - component: {fileID: 1665809482} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_LocalRotation: {x: 0.16492918, y: 0.20952912, z: -0.035880588, w: 0.9631244} + m_LocalPosition: {x: -24, y: 27.89, z: -45} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1665809482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 1655500529} + LineColor: {r: 1, g: 0, b: 0, a: 1} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + - {fileID: 1569554921} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 240, y: 141} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!1 &1995755914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1995755915} + - component: {fileID: 1995755917} + - component: {fileID: 1995755916} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1995755915 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1995755914} + 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_Children: [] + m_Father: {fileID: 526633674} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1995755916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1995755914} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1995755917 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1995755914} + m_CullTransparentMesh: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/01_MetaData.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/01_MetaData.unity.meta new file mode 100644 index 00000000..2c9fbc21 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/01_MetaData.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83178807cbeef8149ae1e2612988ac5d +timeCreated: 1436091375 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/02_GUI.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/02_GUI.unity new file mode 100644 index 00000000..5bc89b8d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/02_GUI.unity @@ -0,0 +1,3260 @@ +%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.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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: 993015161} + m_IndirectSpecularColor: {r: 0.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &114981481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 114981482} + - component: {fileID: 114981483} + m_Layer: 0 + m_Name: UI Spline_Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &114981482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114981481} + 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_Children: + - {fileID: 694048042} + - {fileID: 1721279454} + - {fileID: 924514065} + - {fileID: 1085005350} + - {fileID: 1639878489} + - {fileID: 500102263} + - {fileID: 811836090} + - {fileID: 689859180} + m_Father: {fileID: 537524620} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -285, y: -0.0000014290918} + m_SizeDelta: {x: 104, y: 114} + m_Pivot: {x: 0.49999994, y: 0.5000001} +--- !u!114 &114981483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114981481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a6c45371b22846469f6b81fca388a48, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.2 + ControlPoints: + - {fileID: 694048043} + - {fileID: 1721279455} + - {fileID: 924514066} + - {fileID: 1085005349} + - {fileID: 1639878490} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1024, y: 768} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &152962149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 152962150} + - component: {fileID: 152962152} + - component: {fileID: 152962151} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &152962150 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 152962149} + 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_Children: [] + m_Father: {fileID: 2066516726} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &152962151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 152962149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Curvy is, ehm... +--- !u!222 &152962152 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 152962149} + m_CullTransparentMesh: 0 +--- !u!1 &500102262 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 500102263} + - component: {fileID: 500102267} + - component: {fileID: 500102266} + - component: {fileID: 500102265} + - component: {fileID: 500102264} + - component: {fileID: 500102268} + m_Layer: 5 + m_Name: Button2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &500102263 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500102262} + m_LocalRotation: {x: -0, y: -0, z: 0.00009744473, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1141700737} + m_Father: {fileID: 114981482} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.013648987, y: -148.04393} + m_SizeDelta: {x: 90, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &500102264 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500102262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 70 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 0 + m_OrientationMode: 2 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 114981483} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &500102265 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500102262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 500102266} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 848250811} + m_MethodName: RewindThenPlay + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 500102268} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Animation, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &500102266 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500102262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &500102267 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500102262} + m_CullTransparentMesh: 0 +--- !u!111 &500102268 +Animation: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500102262} + m_Enabled: 1 + serializedVersion: 3 + m_Animation: {fileID: 7400000, guid: da2f2d7521e0c0e42b3d4947bfe76503, type: 2} + m_Animations: + - {fileID: 7400000, guid: da2f2d7521e0c0e42b3d4947bfe76503, type: 2} + m_WrapMode: 0 + m_PlayAutomatically: 0 + m_AnimatePhysics: 0 + m_CullingType: 0 +--- !u!1 &505133203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 505133204} + - component: {fileID: 505133205} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &505133204 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505133203} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -181.32, y: -140, z: 0} + m_LocalScale: {x: 1.055409, y: 1.055409, z: 1.055409} + m_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &505133205 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505133203} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &537524619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 537524620} + - component: {fileID: 537524623} + - component: {fileID: 537524622} + - component: {fileID: 537524621} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &537524620 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537524619} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 114981482} + - {fileID: 541586682} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &537524621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537524619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &537524622 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537524619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &537524623 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537524619} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 1 + m_TargetDisplay: 0 +--- !u!1 &541586681 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 541586682} + - component: {fileID: 541586683} + m_Layer: 0 + m_Name: UISpline_Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &541586682 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 541586681} + 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_Children: + - {fileID: 505133204} + - {fileID: 1841008212} + - {fileID: 1766491911} + - {fileID: 1058207385} + - {fileID: 1991591659} + - {fileID: 1383568482} + - {fileID: 1002005017} + - {fileID: 907357183} + m_Father: {fileID: 537524620} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &541586683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 541586681} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a6c45371b22846469f6b81fca388a48, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.2 + ControlPoints: + - {fileID: 505133205} + - {fileID: 1841008213} + - {fileID: 1766491912} + - {fileID: 1058207386} + - {fileID: 1991591660} + - {fileID: 1383568483} + - {fileID: 1002005018} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &689859179 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 689859180} + - component: {fileID: 689859184} + - component: {fileID: 689859183} + - component: {fileID: 689859182} + - component: {fileID: 689859181} + - component: {fileID: 689859185} + m_Layer: 5 + m_Name: Button0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &689859180 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689859179} + m_LocalRotation: {x: -0, y: -0, z: 0.00009744563, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1016060694} + m_Father: {fileID: 114981482} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.0000076293945, y: -218.04398} + m_SizeDelta: {x: 90, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &689859181 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689859179} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 0 + m_OrientationMode: 2 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 114981483} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &689859182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689859179} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 689859183} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 848250811} + m_MethodName: RewindThenPlay + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 500102268} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Animation, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 848250811} + m_MethodName: RewindThenPlay + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 811836095} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Animation, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 848250811} + m_MethodName: RewindThenPlay + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 689859185} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Animation, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &689859183 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689859179} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &689859184 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689859179} + m_CullTransparentMesh: 0 +--- !u!111 &689859185 +Animation: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689859179} + m_Enabled: 1 + serializedVersion: 3 + m_Animation: {fileID: 7400000, guid: bec413d19bf329c4a9b179c1f58f724d, type: 2} + m_Animations: + - {fileID: 7400000, guid: bec413d19bf329c4a9b179c1f58f724d, type: 2} + m_WrapMode: 0 + m_PlayAutomatically: 0 + m_AnimatePhysics: 0 + m_CullingType: 0 +--- !u!1 &694048041 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 694048042} + - component: {fileID: 694048043} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &694048042 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694048041} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -218.044, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 114981482} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &694048043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694048041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &703609791 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 703609792} + - component: {fileID: 703609794} + - component: {fileID: 703609793} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &703609792 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703609791} + 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_Children: [] + m_Father: {fileID: 811836090} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &703609793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703609791} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Or me! +--- !u!222 &703609794 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703609791} + m_CullTransparentMesh: 0 +--- !u!1 &811836089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 811836090} + - component: {fileID: 811836094} + - component: {fileID: 811836093} + - component: {fileID: 811836092} + - component: {fileID: 811836091} + - component: {fileID: 811836095} + m_Layer: 5 + m_Name: Button1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &811836090 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811836089} + m_LocalRotation: {x: -0, y: -0, z: 0.00009744503, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 703609792} + m_Father: {fileID: 114981482} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.0068130493, y: -183.04419} + m_SizeDelta: {x: 90, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &811836091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811836089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 35 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 0 + m_OrientationMode: 2 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 114981483} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &811836092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811836089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 811836093} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 848250811} + m_MethodName: RewindThenPlay + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 500102268} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Animation, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 848250811} + m_MethodName: RewindThenPlay + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 811836095} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Animation, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &811836093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811836089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &811836094 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811836089} + m_CullTransparentMesh: 0 +--- !u!111 &811836095 +Animation: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 811836089} + m_Enabled: 1 + serializedVersion: 3 + m_Animation: {fileID: 7400000, guid: 794f4a2afaadb6248948fbe2a9fd18a9, type: 2} + m_Animations: + - {fileID: 7400000, guid: 794f4a2afaadb6248948fbe2a9fd18a9, type: 2} + m_WrapMode: 0 + m_PlayAutomatically: 0 + m_AnimatePhysics: 0 + m_CullingType: 0 +--- !u!1 &848250810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 848250812} + - component: {fileID: 848250811} + m_Layer: 0 + m_Name: AnimationHelper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &848250811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848250810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6f8ff5781822ed040991ee4ff4ef9eac, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &848250812 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 848250810} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 303.9961, y: 446.0625, z: 25.25} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &907357182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 907357183} + - component: {fileID: 907357188} + - component: {fileID: 907357187} + - component: {fileID: 907357184} + - component: {fileID: 907357185} + - component: {fileID: 907357186} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &907357183 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907357182} + 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_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -31.319765, y: -140} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &907357184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907357182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f3ff25939a248e146b6f134422bd0a55, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 150 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 0 + m_OrientationMode: 0 + m_LockRotation: 1 + m_OrientationAxis: 5 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 541586683} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + staticOrientation: 0 +--- !u!114 &907357185 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907357182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: 1} + m_UseGraphicAlpha: 1 +--- !u!111 &907357186 +Animation: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907357182} + m_Enabled: 1 + serializedVersion: 3 + m_Animation: {fileID: 7400000, guid: 7d780c3f460f81f4dad3ed74dffa6b68, type: 2} + m_Animations: + - {fileID: 7400000, guid: 7d780c3f460f81f4dad3ed74dffa6b68, type: 2} + m_WrapMode: 0 + m_PlayAutomatically: 0 + m_AnimatePhysics: 0 + m_CullingType: 0 +--- !u!114 &907357187 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907357182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.7310345, b: 0.25, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 40 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Awesome! +--- !u!222 &907357188 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907357182} + m_CullTransparentMesh: 0 +--- !u!1 &924514064 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 924514065} + - component: {fileID: 924514066} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &924514065 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924514064} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 198.68, y: -22.827, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 114981482} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &924514066 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924514064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -25.389828, y: -78.42693, z: -0} + m_HandleOut: {x: 16.660795, y: 51.463722, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &937728839 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 937728843} + - component: {fileID: 937728842} + - component: {fileID: 937728841} + - component: {fileID: 937728840} + - component: {fileID: 937728844} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &937728840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937728839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &937728841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937728839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &937728842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937728839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &937728843 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937728839} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &937728844 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937728839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &993015160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 993015162} + - component: {fileID: 993015161} + 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 &993015161 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993015160} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &993015162 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993015160} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: -65.097565, y: 19.769388, z: -6.397726} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1002005016 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002005017} + - component: {fileID: 1002005018} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1002005017 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002005016} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 308.514, y: 196.872, z: 0} + m_LocalScale: {x: 1.1412268, y: 1.1412268, z: 1.1412268} + m_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002005018 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002005016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1016060693 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1016060694} + - component: {fileID: 1016060696} + - component: {fileID: 1016060695} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1016060694 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016060693} + 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_Children: [] + m_Father: {fileID: 689859180} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1016060695 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016060693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Or me! +--- !u!222 &1016060696 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016060693} + m_CullTransparentMesh: 0 +--- !u!1 &1058207384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1058207385} + - component: {fileID: 1058207386} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1058207385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058207384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 246.246, y: -206.428, z: 0} + m_LocalScale: {x: 1.055409, y: 1.055409, z: 1.055409} + m_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1058207386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058207384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -51.85034, y: -3.3466587, z: -0} + m_HandleOut: {x: 39.72388, y: 2.5639613, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1085005348 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1085005350} + - component: {fileID: 1085005349} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1085005349 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085005348} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -17.259386, y: -51.26607, z: -0} + m_HandleOut: {x: 42.141632, y: 125.17455, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1085005350 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085005348} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 120.745, y: 91.908, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 114981482} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1141700736 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1141700737} + - component: {fileID: 1141700739} + - component: {fileID: 1141700738} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1141700737 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141700736} + 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_Children: [] + m_Father: {fileID: 500102263} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1141700738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141700736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Click me! +--- !u!222 &1141700739 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141700736} + m_CullTransparentMesh: 0 +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Curvy provides the CurvyUISpline component to work seamlessly with + the new UI system. + + + The buttons below use regular SplineController + components together with a UI spline. + + + The text is driven by a UITextSplineController.' +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1383568481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1383568482} + - component: {fileID: 1383568483} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1383568482 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383568481} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 195.283, y: 38.997, z: 0} + m_LocalScale: {x: 1.1412268, y: 1.1412268, z: 1.1412268} + m_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1383568483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383568481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.95197684, y: -76.6912, z: -0} + m_HandleOut: {x: 0.94047254, y: 75.76442, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &1484136834 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1639878488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1639878489} + - component: {fileID: 1639878490} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1639878489 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639878488} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 441.717, y: 199.929, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 114981482} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1639878490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639878488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + - component: {fileID: 1665809482} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_LocalRotation: {x: -0.11984459, y: 0.10370629, z: -0.012588754, w: -0.987281} + m_LocalPosition: {x: 4.5, y: 47.3, z: -98.9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1665809482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: [] +--- !u!1 &1721279453 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1721279454} + - component: {fileID: 1721279455} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1721279454 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721279453} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.024, y: -94.897, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 114981482} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1721279455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721279453} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 1.298, y: 97.299, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + - {fileID: 2066516726} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -112.5} + m_SizeDelta: {x: 240, y: 225} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1766491910 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1766491911} + - component: {fileID: 1766491912} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1766491911 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1766491910} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 155.134, y: -109.228, z: 0} + m_LocalScale: {x: 1.055409, y: 1.055409, z: 1.055409} + m_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1766491912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1766491910} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -49.177605, y: 14.722049, z: -0} + m_HandleOut: {x: 49.775658, y: -14.901085, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1841008211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1841008212} + - component: {fileID: 1841008213} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1841008212 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841008211} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 27.156, y: -140, z: 0} + m_LocalScale: {x: 1.1412268, y: 1.1412268, z: 1.1412268} + m_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1841008213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841008211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 50.70918, y: 6.1793976, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1991591658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1991591659} + - component: {fileID: 1991591660} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1991591659 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991591658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 305.897, y: -123.605, z: 0} + m_LocalScale: {x: 1.055409, y: 1.055409, z: 1.055409} + m_Children: [] + m_Father: {fileID: 541586682} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1991591660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991591658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.53349954, y: -39.802967, z: -0} + m_HandleOut: {x: 1.0279183, y: 76.69023, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2066516722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2066516726} + - component: {fileID: 2066516725} + - component: {fileID: 2066516724} + - component: {fileID: 2066516723} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2066516723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066516722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2066516724} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 848250811} + m_MethodName: RewindThenPlay + m_Mode: 2 + m_Arguments: + m_ObjectArgument: {fileID: 907357186} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Animation, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &2066516724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066516722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2066516725 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066516722} + m_CullTransparentMesh: 0 +--- !u!224 &2066516726 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066516722} + 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_Children: + - {fileID: 152962150} + m_Father: {fileID: 1749425095} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -86} + m_SizeDelta: {x: 220, y: 30} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/02_GUI.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/02_GUI.unity.meta new file mode 100644 index 00000000..5788a9c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/02_GUI.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: e5f6ca220bf4cd542adf758b55cd6057 +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/03_Connections.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/03_Connections.unity new file mode 100644 index 00000000..bf94c81d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/03_Connections.unity @@ -0,0 +1,2931 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientGroundColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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: 1498476212} + m_IndirectSpecularColor: {r: 0.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &99706568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 99706570} + - component: {fileID: 99706569} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &99706569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99706568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0.00000032874541, z: -11.030865} + m_HandleOut: {x: 0, y: 0.00000032874544, z: 11.030866} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &99706570 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99706568} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -20, y: 1.4215566e-14, z: 0.0000002384976} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &139693433 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 139693435} + - component: {fileID: 139693434} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &139693434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139693433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 724124978} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 1602075579} +--- !u!4 &139693435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139693433} + m_LocalRotation: {x: 0.10031812, y: 0, z: 0, w: -0.9949554} + m_LocalPosition: {x: 0, y: 0, z: 20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1610048481} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &238530623 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 238530625} + - component: {fileID: 238530624} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &238530624 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 238530623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -5.515433, z: -0} + m_HandleOut: {x: 0, y: 5.515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &238530625 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 238530623} + m_LocalRotation: {x: 0.55131465, y: 0.44277775, z: 0.4427775, w: -0.55131495} + m_LocalPosition: {x: -10, y: 10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1495815335} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &425980629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 425980631} + - component: {fileID: 425980630} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &425980630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 425980629} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 2007267916} + - {fileID: 1502486490} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 2007267916} + Position: {x: -40, y: 0, z: 0} + Rotation: {x: -0.00071834645, y: 0.0035880206, z: -0.19630988, w: 0.9805351} + - ControlPoint: {fileID: 1502486490} + Position: {x: -40, y: 0, z: 0} + Rotation: {x: -0, y: -0, z: 0.28245842, w: -0.9592796} +--- !u!4 &425980631 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 425980629} + m_LocalRotation: {x: -0.00071834645, y: 0.0035880206, z: -0.19630988, w: 0.9805351} + m_LocalPosition: {x: -40, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1733724142} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &509962736 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 509962737} + - component: {fileID: 509962738} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &509962737 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509962736} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: 10.000002, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1495815335} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &509962738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 509962736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.0000002629963, y: 5.5154324, z: -0} + m_HandleOut: {x: 0.00000026299634, y: -5.515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &548469950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 548469952} + - component: {fileID: 548469951} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &548469951 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 548469950} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: 22.061731} + m_HandleOut: {x: 0, y: 0, z: -22.061731} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &548469952 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 548469950} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 40, y: -1.04216074e-13, z: -0.0000017484555} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &617963247 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 617963249} + - component: {fileID: 617963248} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &617963248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617963247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 730576499} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 1278349336} +--- !u!4 &617963249 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617963247} + m_LocalRotation: {x: 0.01891743, y: 0, z: 0, w: 0.99982107} + m_LocalPosition: {x: 0, y: 0, z: -40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1666207287} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &724124977 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 724124979} + - component: {fileID: 724124978} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &724124978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724124977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -11.030866, y: 3.9202497e-15, z: -0} + m_HandleOut: {x: 11.030866, y: -3.9202497e-15, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 1602075579} +--- !u!4 &724124979 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 724124977} + m_LocalRotation: {x: 0.10031812, y: 0, z: 0, w: -0.9949554} + m_LocalPosition: {x: 0, y: 0, z: 20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &730576498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 730576500} + - component: {fileID: 730576499} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &730576499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730576498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 22.061731, y: -2.8739838e-14, z: -0} + m_HandleOut: {x: -22.061731, y: 2.8739838e-14, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 1278349336} +--- !u!4 &730576500 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730576498} + m_LocalRotation: {x: 0.01891743, y: 0, z: 0, w: 0.99982107} + m_LocalPosition: {x: 0, y: 0, z: -40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &769692747 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 769692748} + - component: {fileID: 769692749} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &769692748 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769692747} + m_LocalRotation: {x: 0.018918242, y: 0, z: 0, w: 0.999821} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1495815335} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &769692749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769692747} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 2 + m_SwirlTurns: 1 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.515433, y: 0.00000026299634, z: -0} + m_HandleOut: {x: -5.515433, y: -0.00000026299634, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 1278349336} +--- !u!1 &846560737 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 846560739} + - component: {fileID: 846560738} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &846560738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846560737} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 1396188130} + - {fileID: 2060697033} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 1396188130} + Position: {x: 20, y: 0, z: 0} + Rotation: {x: -0, y: -0, z: 0.19161418, w: 0.98147035} + - ControlPoint: {fileID: 2060697033} + Position: {x: 20, y: 0, z: 0} + Rotation: {x: -0, y: -0, z: 0.19161661, w: 0.98146987} +--- !u!4 &846560739 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846560737} + m_LocalRotation: {x: 0, y: 0, z: 0.19161661, w: 0.98146987} + m_LocalPosition: {x: 20, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1733724142} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &899151545 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 899151547} + - component: {fileID: 899151546} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &899151546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899151545} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 11.030866, y: -3.1351607e-14, z: -0.0000005259927} + m_HandleOut: {x: -11.030865, y: 3.1351603e-14, z: 0.0000005259926} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &899151547 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899151545} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000017484556, y: -0.0000011920929, z: -19.999998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1005637251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1005637253} + - component: {fileID: 1005637252} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1005637252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005637251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.3652697, y: -0, z: -2.5401175} + m_HandleOut: {x: 10.557598, y: 0, z: 11.338047} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1005637253 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005637251} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -38.08, y: 0, z: 8.69} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1610048481} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -214.4} + m_SizeDelta: {x: -20, y: 209.5} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Connections allow to connect multiple splines. + + In this example the + ship randomly follows one of the connected splines, if the movement angle is + smooth enough. + + You can easily define your own connected splines selection + logic if none of the built-in logics meets your needs.' +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1278349335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1278349337} + - component: {fileID: 1278349336} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1278349336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278349335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 769692749} + - {fileID: 730576499} + - {fileID: 617963248} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 769692749} + Position: {x: 0, y: 0, z: -40} + Rotation: {x: 0.018918242, y: -0, z: -0, w: 0.999821} + - ControlPoint: {fileID: 730576499} + Position: {x: 0, y: 0, z: -40} + Rotation: {x: 0.01891743, y: -0, z: -0, w: 0.99982107} + - ControlPoint: {fileID: 617963248} + Position: {x: 0, y: 0, z: -40} + Rotation: {x: 0.01891743, y: -0, z: -0, w: 0.99982107} +--- !u!4 &1278349337 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1278349335} + m_LocalRotation: {x: 0.01891743, y: 0, z: 0, w: 0.99982107} + m_LocalPosition: {x: 0, y: 0, z: -40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1733724142} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1396188129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396188131} + - component: {fileID: 1396188130} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1396188130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396188129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.0000005259927, y: 0.00000032874541, z: 11.030866} + m_HandleOut: {x: -0.0000005259927, y: -0.00000032874541, z: -11.030866} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 846560738} +--- !u!4 &1396188131 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396188129} + m_LocalRotation: {x: 0, y: 0, z: 0.19161418, w: 0.98147035} + m_LocalPosition: {x: 20, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1655500530} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1482403671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1482403673} + - component: {fileID: 1482403672} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1482403672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482403671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -22.061731, y: 2.8739838e-14, z: -0} + m_HandleOut: {x: 22.061731, y: -2.8739838e-14, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1482403673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482403671} + m_LocalRotation: {x: -0.3001956, y: -0.0068468265, z: -0.11378632, w: 0.9470419} + m_LocalPosition: {x: 0, y: 0, z: 40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1495815334 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1495815335} + - component: {fileID: 1495815336} + m_Layer: 0 + m_Name: Looping + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1495815335 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1495815334} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 769692748} + - {fileID: 238530625} + - {fileID: 1947257642} + - {fileID: 509962737} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1495815336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1495815334} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 769692749} + - {fileID: 238530624} + - {fileID: 1947257643} + - {fileID: 509962738} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1498476211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1498476213} + - component: {fileID: 1498476212} + 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 &1498476212 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1498476213 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1502486489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1502486491} + - component: {fileID: 1502486490} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1502486490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1502486489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 425980630} +--- !u!4 &1502486491 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1502486489} + m_LocalRotation: {x: 0, y: 0, z: 0.28245842, w: -0.9592796} + m_LocalPosition: {x: -40, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1610048481} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1602075577 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1602075578} + - component: {fileID: 1602075579} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1602075578 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602075577} + m_LocalRotation: {x: 0.10031812, y: 0, z: 0, w: -0.9949554} + m_LocalPosition: {x: 0, y: 0, z: 20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1733724142} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1602075579 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602075577} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 139693434} + - {fileID: 724124978} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 139693434} + Position: {x: 0, y: 0, z: 20} + Rotation: {x: 0.10031812, y: -0, z: -0, w: -0.9949554} + - ControlPoint: {fileID: 724124978} + Position: {x: 0, y: 0, z: 20} + Rotation: {x: 0.10031812, y: -0, z: -0, w: -0.9949554} +--- !u!1 &1610048479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1610048481} + - component: {fileID: 1610048480} + m_Layer: 0 + m_Name: OuterToInner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1610048480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1610048479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 1502486490} + - {fileID: 1005637252} + - {fileID: 139693434} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1610048481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1610048479} + 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_Children: + - {fileID: 1502486491} + - {fileID: 1005637253} + - {fileID: 139693435} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 1665809481} + - {fileID: 1498476213} + - {fileID: 141106066} + - {fileID: 135020125} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1655500528 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1655500530} + - component: {fileID: 1655500529} + m_Layer: 0 + m_Name: InnerShape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1655500529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655500528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 724124978} + - {fileID: 1396188130} + - {fileID: 899151546} + - {fileID: 99706569} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1655500530 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655500528} + 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_Children: + - {fileID: 724124979} + - {fileID: 1396188131} + - {fileID: 899151547} + - {fileID: 99706570} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + - component: {fileID: 1665809482} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_LocalRotation: {x: 0.32606226, y: -0.32424995, z: 0.12016571, w: 0.87983274} + m_LocalPosition: {x: 45.1, y: 52.5, z: -59.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1665809482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 1655500529} + LineColor: {r: 1, g: 0.4758621, b: 0, a: 1} + - Spline: {fileID: 2107010019} + LineColor: {r: 1, g: 0, b: 0, a: 1} + - Spline: {fileID: 1495815336} + LineColor: {r: 1, g: 0.7241379, b: 0, a: 1} + - Spline: {fileID: 1610048480} + LineColor: {r: 1, g: 0.36862746, b: 0, a: 1} + - Spline: {fileID: 1666207288} + LineColor: {r: 1, g: 0.36862746, b: 0, a: 1} +--- !u!1 &1666207286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1666207287} + - component: {fileID: 1666207288} + m_Layer: 0 + m_Name: InnerToOuter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1666207287 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1666207286} + 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_Children: + - {fileID: 2060697034} + - {fileID: 1928796845} + - {fileID: 617963249} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1666207288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1666207286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 2060697033} + - {fileID: 1928796844} + - {fileID: 617963248} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1733724139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1733724142} + - component: {fileID: 1733724141} + - component: {fileID: 1733724140} + - component: {fileID: 1733724143} + - component: {fileID: 1733724144} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1733724140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733724139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1733724141 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733724139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1733724142 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733724139} + 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_Children: + - {fileID: 1278349337} + - {fileID: 425980631} + - {fileID: 1602075578} + - {fileID: 846560739} + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1733724143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733724139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1733724144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1733724139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -87} + m_SizeDelta: {x: 240, y: 172} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.853} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1790727349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194842, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1790727351} + - component: {fileID: 1790727352} + m_Layer: 0 + m_Name: Plane Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1790727351 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 421896, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1790727349} + m_LocalRotation: {x: -0.19768593, y: 0.9570639, z: -0.042886674, w: 0.20762879} + m_LocalPosition: {x: 36.29657, y: -8.9923335e-14, z: 16.809156} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2007269165} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1790727352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1790727349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0.182 + m_MoveMode: 1 + m_Speed: 50 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 2107010019} + m_UseCache: 0 + connectionBehavior: 3 + allowDirectionChange: 1 + rejectCurrentSpline: 0 + rejectTooDivergentSplines: 1 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1923012111 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1928796843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1928796845} + - component: {fileID: 1928796844} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1928796844 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928796843} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 10.3686695, y: -0, z: 10.648751} + m_HandleOut: {x: -3.077767, y: 0, z: -3.1609044} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1928796845 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1928796843} + m_LocalRotation: {x: 0.35505804, y: 0, z: 0, w: 0.93484426} + m_LocalPosition: {x: 10.91, y: 0, z: -37.01} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1666207287} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1947257641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1947257642} + - component: {fileID: 1947257643} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1947257642 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1947257641} + m_LocalRotation: {x: 0.99610597, y: 0.00000017665003, z: 0.00000017665003, w: -0.08816414} + m_LocalPosition: {x: 0, y: 20, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1495815335} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1947257643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1947257641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.515433, y: -0.00000026299634, z: -0} + m_HandleOut: {x: 5.5154324, y: 0.0000002629963, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2007267915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2007267917} + - component: {fileID: 2007267916} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2007267916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2007267915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 1 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -22.061731} + m_HandleOut: {x: 0, y: 0, z: 22.061731} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 425980630} +--- !u!4 &2007267917 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2007267915} + m_LocalRotation: {x: -0.00071834645, y: 0.0035880206, z: -0.19630988, w: 0.9805351} + m_LocalPosition: {x: -40, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2107010020} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &2007269164 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1790727351} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.x + value: 0.50000006 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.y + value: 0.49999997 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.z + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!4 &2007269165 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 2007269164} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2060697032 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2060697034} + - component: {fileID: 2060697033} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2060697033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060697032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 846560738} +--- !u!4 &2060697034 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2060697032} + m_LocalRotation: {x: 0, y: 0, z: 0.19161661, w: 0.98146987} + m_LocalPosition: {x: 20, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1666207287} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2107010018 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2107010020} + - component: {fileID: 2107010019} + m_Layer: 0 + m_Name: OuterShape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2107010019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2107010018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 1482403672} + - {fileID: 548469951} + - {fileID: 730576499} + - {fileID: 2007267916} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &2107010020 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2107010018} + 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_Children: + - {fileID: 1482403673} + - {fileID: 548469952} + - {fileID: 730576500} + - {fileID: 2007267917} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/03_Connections.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/03_Connections.unity.meta new file mode 100644 index 00000000..8dd6b36e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/03_Connections.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10ae0c98bf753c04d8c6e2a378e3dabd +timeCreated: 1432539542 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/04_PaintSpline.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/04_PaintSpline.unity new file mode 100644 index 00000000..430d4de3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/04_PaintSpline.unity @@ -0,0 +1,1301 @@ +%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.2205882, g: 0.2205882, b: 0.2205882, a: 1} + m_AmbientEquatorColor: {r: 0.2205882, g: 0.2205882, b: 0.2205882, a: 1} + m_AmbientGroundColor: {r: 0.2205882, g: 0.2205882, b: 0.2205882, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + - {fileID: 575457789} + - {fileID: 1323957289} + - {fileID: 1101700557} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 1665809480} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &196645481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 196645483} + - component: {fileID: 196645482} + 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 &196645482 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196645481} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 1 + 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: 1 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &196645483 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 196645481} + m_LocalRotation: {x: 0.2962019, y: 0.027832499, z: 0.07128639, w: 0.9520547} + m_LocalPosition: {x: -40.918545, y: 145.00452, z: -332.6568} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &575457788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 575457789} + - component: {fileID: 575457793} + - component: {fileID: 575457792} + - component: {fileID: 575457791} + - component: {fileID: 575457790} + m_Layer: 0 + m_Name: UI Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &575457789 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575457788} + 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_Children: [] + m_Father: {fileID: 141106066} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 400, y: -299.999} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &575457790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575457788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 519164ed9b6fe2844ab6927e80fc3dd8, type: 3} + m_Name: + m_EditorClassIdentifier: + StepDistance: 25 + Controller: {fileID: 1101700556} + InfoText: {fileID: 1323957290} +--- !u!114 &575457791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575457788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f2d74ea90b9d85945b180cf66c7c0f6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Spline: {fileID: 575457793} +--- !u!120 &575457792 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575457788} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, 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: 288.8889, y: -461.90222, z: 100} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 5 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + 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.5882353, g: 0.4, b: 0, a: 1} + key1: {r: 0.9137255, g: 0.7058824, b: 0.25490198, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + shadowBias: 0 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!114 &575457793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575457788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a6c45371b22846469f6b81fca388a48, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.2 + ControlPoints: [] + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 0, b: 0, a: 1} + m_GizmoSelectionColor: {r: 1, g: 1, b: 1, a: 1} + m_CacheDensity: 25 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &695325474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 695325478} + - component: {fileID: 695325477} + - component: {fileID: 695325476} + - component: {fileID: 695325475} + - component: {fileID: 695325479} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &695325475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695325474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &695325476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695325474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &695325477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695325474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &695325478 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695325474} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &695325479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 695325474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1101700555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1101700557} + - component: {fileID: 1101700556} + m_Layer: 5 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &1101700556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1101700555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 150 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 4 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 575457793} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!224 &1101700557 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1101700555} + m_LocalRotation: {x: -0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1645325810} + m_Father: {fileID: 141106066} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 51.000004, y: 121.002014} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Draw a path for the airplane! (Use mouse drag or screen touch) +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1323957288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1323957289} + - component: {fileID: 1323957291} + - component: {fileID: 1323957290} + m_Layer: 5 + m_Name: Infotext + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1323957289 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323957288} + 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_Children: [] + m_Father: {fileID: 141106066} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 31} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1323957290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323957288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Control Points: 0' +--- !u!222 &1323957291 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323957288} + m_CullTransparentMesh: 0 +--- !u!4 &1645325810 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 1797987941} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.375, g: 0.3611562, b: 0.33639705, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 1 + orthographic size: 300 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -28} + m_SizeDelta: {x: 240, y: 54} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1001 &1797987941 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1101700557} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.z + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 8.97999954 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!1001 &1917860090 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/04_PaintSpline.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/04_PaintSpline.unity.meta new file mode 100644 index 00000000..2dd3fad7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/04_PaintSpline.unity.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 4eb3b9721e597834bad1e6baf42d3a6a +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/05_NearestPoint.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/05_NearestPoint.unity new file mode 100644 index 00000000..d61b25bb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/05_NearestPoint.unity @@ -0,0 +1,16158 @@ +%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, g: 0.16470589, b: 0.30784315, a: 0.5} + m_AmbientEquatorColor: {r: 0.42352945, g: 0.45686278, b: 0.48431376, a: 0.5} + m_AmbientGroundColor: {r: 0.12651384, g: 0.16840948, b: 0.23897058, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 1 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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: 1498476212} + m_IndirectSpecularColor: {r: 0.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 112000000, guid: cf975c2a7190fc143b29df15e5b1968f, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &41148497 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 41148498} + - component: {fileID: 41148499} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &41148498 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 41148497} + m_LocalRotation: {x: -0.43389723, y: -0.12984534, z: -0.86533, w: -0.2146568} + m_LocalPosition: {x: 0, y: 15.727, z: 81.143} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &41148499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 41148497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -4.4802628, y: -0.22524448, z: -3.2846103} + m_HandleOut: {x: 4.6403894, y: 0.23329483, z: 3.4020038} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &53473956 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 53473957} + - component: {fileID: 53473958} + m_Layer: 0 + m_Name: CP0029 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &53473957 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53473956} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 21.057945, y: 21.057903, z: 208.37718} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &53473958 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53473956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -6.442433, y: 5.86924, z: -2.0071313} + m_HandleOut: {x: 6.6576114, y: -6.065274, z: 2.0741699} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &76646008 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 76646009} + - component: {fileID: 76646011} + - component: {fileID: 76646010} + m_Layer: 5 + m_Name: StatisticsText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &76646009 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76646008} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -96.40001} + m_SizeDelta: {x: 220, y: 56.4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &76646010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76646008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "Blue Curve Cache Points: 2077 \nAverage Lookup (ms): 0.041" +--- !u!222 &76646011 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76646008} + m_CullTransparentMesh: 0 +--- !u!1 &79089867 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 79089868} + - component: {fileID: 79089869} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &79089868 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79089867} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -14.152638, y: 0.000009391798, z: 65.27324} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &79089869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 79089867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.2929818, y: -3.9926965, z: -3.089909} + m_HandleOut: {x: -0.30844986, y: 4.203492, z: 3.2530417} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &140738932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 140738933} + - component: {fileID: 140738934} + m_Layer: 0 + m_Name: CP0037 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &140738933 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140738932} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 236.8, y: -17.1, z: 235.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 37 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &140738934 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140738932} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -43.58614, y: 2.8339477, z: 60.182606} + m_HandleOut: {x: 37.83994, y: -2.4603329, z: -52.248405} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &172174062 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 172174063} + - component: {fileID: 172174064} + m_Layer: 0 + m_Name: CP0019 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &172174063 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 172174062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -12.912439, y: 12.912433, z: 139.54913} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &172174064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 172174062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -3.5858629, y: -3.8947055, z: -3.351789} + m_HandleOut: {x: 3.6711528, y: 3.9873412, z: 3.4315114} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &199931869 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 199931870} + - component: {fileID: 199931871} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &199931870 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 199931869} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 57.764874, y: 0.0000011597813, z: 94.142} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &199931871 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 199931869} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -12.520318, y: -3.7240636, z: 10.470107} + m_HandleOut: {x: 36.37656, y: 10.819902, z: -30.419872} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &209211171 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 209211172} + - component: {fileID: 209211173} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &209211172 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 209211171} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 164.729} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &209211173 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 209211171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -27.545992, y: 1.0503082, z: -7.198989} + m_HandleOut: {x: 9.500784, y: -0.36225784, z: 2.482976} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &210158062 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 210158063} + - component: {fileID: 210158064} + m_Layer: 0 + m_Name: CP0031 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &210158063 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210158062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 22.592115, y: -22.59219, z: 216.9267} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &210158064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210158062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 6.402786, y: 6.874366, z: -1.5294278} + m_HandleOut: {x: -6.5681047, y: -7.051861, z: 1.5689174} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &231333760 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 231333761} + - component: {fileID: 231333762} + m_Layer: 0 + m_Name: CP0022 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &231333761 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 231333760} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 20.993237, y: -0.000014431956, z: 163.45459} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &231333762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 231333760} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.36419103, y: 6.0655775, z: -3.118605} + m_HandleOut: {x: 0.377867, y: -6.29335, z: 3.2357137} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &249377769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 249377770} + - component: {fileID: 249377772} + m_Layer: 0 + m_Name: Spline A (Ship) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &249377770 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 249377769} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 76.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 500136793} + - {fileID: 1960840643} + - {fileID: 372350497} + - {fileID: 1230882264} + - {fileID: 1660024539} + - {fileID: 315918101} + - {fileID: 1140183951} + - {fileID: 731451287} + - {fileID: 740283341} + - {fileID: 1143906519} + - {fileID: 79089868} + - {fileID: 1741685488} + - {fileID: 41148498} + - {fileID: 1734952960} + - {fileID: 797973938} + - {fileID: 1396752234} + - {fileID: 1648714337} + - {fileID: 1935147994} + - {fileID: 340082177} + - {fileID: 172174063} + - {fileID: 897789035} + - {fileID: 339285249} + - {fileID: 231333761} + - {fileID: 611299728} + - {fileID: 2118702426} + - {fileID: 571299102} + - {fileID: 742309105} + - {fileID: 460248762} + - {fileID: 1905340788} + - {fileID: 53473957} + - {fileID: 818343721} + - {fileID: 210158063} + - {fileID: 1509838622} + - {fileID: 548550522} + - {fileID: 406485865} + - {fileID: 995124676} + - {fileID: 1409001012} + - {fileID: 140738933} + - {fileID: 1049485759} + - {fileID: 466000894} + - {fileID: 1058289214} + - {fileID: 1566421848} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &249377772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 249377769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 500136794} + - {fileID: 1960840644} + - {fileID: 372350498} + - {fileID: 1230882265} + - {fileID: 1660024540} + - {fileID: 315918102} + - {fileID: 1140183952} + - {fileID: 731451288} + - {fileID: 740283342} + - {fileID: 1143906520} + - {fileID: 79089869} + - {fileID: 1741685489} + - {fileID: 41148499} + - {fileID: 1734952961} + - {fileID: 797973939} + - {fileID: 1396752235} + - {fileID: 1648714338} + - {fileID: 1935147995} + - {fileID: 340082178} + - {fileID: 172174064} + - {fileID: 897789036} + - {fileID: 339285250} + - {fileID: 231333762} + - {fileID: 611299729} + - {fileID: 2118702427} + - {fileID: 571299103} + - {fileID: 742309106} + - {fileID: 460248763} + - {fileID: 1905340789} + - {fileID: 53473958} + - {fileID: 818343722} + - {fileID: 210158064} + - {fileID: 1509838623} + - {fileID: 548550523} + - {fileID: 406485866} + - {fileID: 995124677} + - {fileID: 1409001013} + - {fileID: 140738934} + - {fileID: 1049485760} + - {fileID: 466000893} + - {fileID: 1058289215} + - {fileID: 1566421849} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &270487601 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 270487606} + - component: {fileID: 270487605} + - component: {fileID: 270487604} + - component: {fileID: 270487603} + - component: {fileID: 270487602} + m_Layer: 5 + m_Name: MovingFollower + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &270487602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 270487601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90d77a0360522274d962d1170d9f3207, type: 3} + m_Name: + m_EditorClassIdentifier: + Lookup: {fileID: 1141779464} + Spline: {fileID: 585357937} + StatisticsText: {fileID: 76646010} + Density: {fileID: 671939771} +--- !u!23 &270487603 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 270487601} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 10a05de62c8737647baf13ce9ffa61b8, 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: 1 + 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 +--- !u!135 &270487604 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 270487601} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &270487605 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 270487601} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &270487606 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 270487601} + m_LocalRotation: {x: -0.5907566, y: 0.59213156, z: -0.27701327, w: 0.47291714} + m_LocalPosition: {x: 119.38535, y: 44.40145, z: 298.35052} + m_LocalScale: {x: 8, y: 8, z: 8} + m_Children: + - {fileID: 923985013} + - {fileID: 1020837580} + - {fileID: 2046641048} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &274821152 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 274821153} + - component: {fileID: 274821154} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &274821153 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274821152} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -57.764877, y: -0.000000102007064, z: -94.142} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &274821154 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274821152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.8539045, y: -0.7618535, z: -16.478016} + m_HandleOut: {x: -3.3981807, y: 0.9071487, z: 19.620584} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &315918100 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315918101} + - component: {fileID: 315918102} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &315918101 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315918100} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.445665, y: 6.445665, z: 30.579592} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &315918102 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315918100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.0051422, y: 1.5301555, z: -2.3244586} + m_HandleOut: {x: 2.2087636, y: -1.6855423, z: 2.5605066} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &326361454 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 326361456} + - component: {fileID: 326361455} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &326361455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326361454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.526482, y: -0.000000047096727, z: -9.234003} + m_HandleOut: {x: -8.597078, y: 0.000000073264374, z: 14.364554} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &326361456 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326361454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -40.11, y: 0, z: -133.268} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &339285248 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 339285249} + - component: {fileID: 339285250} + m_Layer: 0 + m_Name: CP0021 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &339285249 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339285248} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 14.101392, y: 14.101381, z: 155.68565} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &339285250 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 339285248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -4.3034267, y: 3.8458192, z: -3.2111685} + m_HandleOut: {x: 4.45029, y: -3.977066, z: 3.3207567} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &340082176 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 340082177} + - component: {fileID: 340082178} + m_Layer: 0 + m_Name: CP0018 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &340082177 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340082176} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -17.683773, y: 0.000023259296, z: 131.26454} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &340082178 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340082176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.15358031, y: -5.135834, z: -3.4015343} + m_HandleOut: {x: -0.15616897, y: 5.2224007, z: 3.4588685} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &372350496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 372350497} + - component: {fileID: 372350498} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &372350497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 372350496} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.1852036, y: 0.00000007375782, z: 14.837824} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &372350498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 372350496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 1.0267594, y: -5.7297726, z: -9.968359} + m_HandleOut: {x: -0.24266426, y: 1.3541741, z: 2.3559215} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &406485864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 406485865} + - component: {fileID: 406485866} + m_Layer: 0 + m_Name: CP0034 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &406485865 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406485864} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -34.119736, y: 0.000024269611, z: 224.93484} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 34 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &406485866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 406485864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.15237851, y: -10.111158, z: -0.67170167} + m_HandleOut: {x: -0.1540404, y: 10.221433, z: 0.6790274} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &409151439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 409151440} + - component: {fileID: 409151441} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &409151440 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409151439} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 170.2, y: 48.7, z: 70.9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &409151441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 409151439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -30.221745, y: -11.948762, z: 36.187927} + m_HandleOut: {x: 12.380533, y: 4.8948874, z: -14.824619} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &460248761 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 460248762} + - component: {fileID: 460248763} + m_Layer: 0 + m_Name: CP0027 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &460248762 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 460248761} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -19.29071, y: 19.290724, z: 197.6464} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &460248763 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 460248761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.302379, y: -5.9233665, z: -2.4118524} + m_HandleOut: {x: 5.507682, y: 6.152713, z: 2.5052369} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &466000892 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 466000894} + - component: {fileID: 466000893} + m_Layer: 0 + m_Name: CP0039 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &466000893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 466000892} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 14.666574, y: -8.131217, z: 16.606565} + m_HandleOut: {x: -28.505005, y: 15.8033085, z: -32.275448} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &466000894 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 466000892} + m_LocalRotation: {x: -0.6847562, y: -0.6193988, z: 0.12344418, w: 0.3636147} + m_LocalPosition: {x: 198.36, y: -45.52, z: 74.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 39 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &500136792 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 500136793} + - component: {fileID: 500136794} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &500136793 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500136792} + m_LocalRotation: {x: 0.47928172, y: -0.6222573, z: -0.41502252, w: 0.4591746} + m_LocalPosition: {x: 28.18, y: 1.24, z: -14.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &500136794 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 500136792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 42.75118, y: -3.5431817, z: 10.310533} + m_HandleOut: {x: -9.703768, y: 0.80424005, z: -2.34031} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &548550521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 548550522} + - component: {fileID: 548550523} + m_Layer: 0 + m_Name: CP0033 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &548550522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 548550521} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -23.742386, y: -23.742367, z: 222.96292} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 33 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &548550523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 548550521} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 7.172782, y: -6.858058, z: -0.97672975} + m_HandleOut: {x: -7.289916, y: 6.9700527, z: 0.99268013} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &571299101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 571299102} + - component: {fileID: 571299103} + m_Layer: 0 + m_Name: CP0025 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &571299102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571299101} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -17.44154, y: -17.44155, z: 185.06624} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &571299103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571299101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.363181, y: -4.747245, z: -2.74543} + m_HandleOut: {x: -5.583576, y: 4.942329, z: 2.858251} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &585357935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 585357936} + - component: {fileID: 585357937} + m_Layer: 0 + m_Name: Spline B (Follower) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &585357936 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 585357935} + m_LocalRotation: {x: -0.081577115, y: 0.06896422, z: -0.21918014, w: 0.9698192} + m_LocalPosition: {x: 60.6, y: 45.2, z: 173} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 209211172} + - {fileID: 1396952683} + - {fileID: 1192625496} + - {fileID: 199931870} + - {fileID: 409151440} + - {fileID: 609814226} + - {fileID: 871024858} + - {fileID: 1568948437} + - {fileID: 1231811563} + - {fileID: 876497435} + - {fileID: 1226957226} + - {fileID: 1524138635} + - {fileID: 326361456} + - {fileID: 274821153} + - {fileID: 1027481808} + - {fileID: 1519764401} + - {fileID: 846798737} + - {fileID: 867532252} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &585357937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 585357935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 209211173} + - {fileID: 1396952684} + - {fileID: 1192625497} + - {fileID: 199931871} + - {fileID: 409151441} + - {fileID: 609814227} + - {fileID: 871024859} + - {fileID: 1568948438} + - {fileID: 1231811564} + - {fileID: 876497436} + - {fileID: 1226957227} + - {fileID: 1524138636} + - {fileID: 326361455} + - {fileID: 274821154} + - {fileID: 1027481809} + - {fileID: 1519764402} + - {fileID: 846798738} + - {fileID: 867532253} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &606700381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 157206, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 606700382} + - component: {fileID: 606700385} + - component: {fileID: 606700384} + - component: {fileID: 606700383} + - component: {fileID: 606700386} + m_Layer: 0 + m_Name: MovingFollowerTrail + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &606700382 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 489470, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 606700381} + m_LocalRotation: {x: 0.12732239, y: 0.56482595, z: -0.40054798, w: -0.7101564} + m_LocalPosition: {x: 119.38535, y: 44.40145, z: 298.35052} + m_LocalScale: {x: 1.8, y: 1.8000001, z: 1.8000003} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &606700383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 606700381} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 270487606} + MoveTo: {fileID: 270487606} + RollTo: {fileID: 0} + ChaseTime: 0.5 +--- !u!199 &606700384 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19904112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 606700381} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_RenderMode: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 4.14 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &606700385 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19893762, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 606700381} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 0.6509804, b: 0.5058824, a: 0.31764707} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 4 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 5 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 0.5, y: 0.5, z: 0.5} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 1 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.2723493 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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: 32382 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 3 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!114 &606700386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 606700381} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 270487606} + MoveTo: {fileID: 0} + RollTo: {fileID: 0} + ChaseTime: 0.5 +--- !u!1 &609814225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 609814226} + - component: {fileID: 609814227} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &609814226 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 609814225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 174.6, y: 48.7, z: 20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &609814227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 609814225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.39792, y: -10.456586, z: 16.903034} + m_HandleOut: {x: 2.2172914, y: 16.585567, z: -26.81051} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &611299727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 611299728} + - component: {fileID: 611299729} + m_Layer: 0 + m_Name: CP0023 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &611299728 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611299727} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 15.661413, y: -15.661445, z: 170.96867} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &611299729 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 611299727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.2472324, y: 4.8080225, z: -3.0104518} + m_HandleOut: {x: -4.4162846, y: -4.999396, z: 3.1302764} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &616151509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 616151512} + - component: {fileID: 616151511} + - component: {fileID: 616151510} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &616151510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616151509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Go +--- !u!222 &616151511 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616151509} + m_CullTransparentMesh: 0 +--- !u!224 &616151512 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 616151509} + 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_Children: [] + m_Father: {fileID: 2135218537} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &638081811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 638081814} + - component: {fileID: 638081813} + - component: {fileID: 638081812} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &638081812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638081811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &638081813 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638081811} + m_CullTransparentMesh: 0 +--- !u!224 &638081814 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638081811} + 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_Children: [] + m_Father: {fileID: 671939770} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &667682151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 667682154} + - component: {fileID: 667682153} + - component: {fileID: 667682155} + - component: {fileID: 667682152} + m_Layer: 5 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &667682152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667682151} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a20feb36c253ae940912006b89d21e84, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 1141779464} + distance: 193.7 + height: 89 + rotationDamping: 1 + heightDamping: 4.9 +--- !u!20 &667682153 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667682151} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &667682154 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667682151} + m_LocalRotation: {x: 0.17053285, y: 0.51367766, z: -0.10499898, w: 0.83428353} + m_LocalPosition: {x: 119.385345, y: 44.40145, z: 298.35052} + m_LocalScale: {x: 8, y: 8, z: 8} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &667682155 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667682151} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 249377772} + LineColor: {r: 0.36862746, g: 1, b: 1, a: 1} + - Spline: {fileID: 585357937} + LineColor: {r: 1, g: 0.39310348, b: 0, a: 1} +--- !u!1 &671939769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 671939770} + - component: {fileID: 671939771} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &671939770 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 671939769} + m_LocalRotation: {x: 0, y: -0.007469202, z: 0, w: 0.9999721} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 638081814} + - {fileID: 924926474} + - {fileID: 858794389} + m_Father: {fileID: 1749425095} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 48.399994, y: -17.899994} + m_SizeDelta: {x: 119.4, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &671939771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 671939769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1393908669} + m_FillRect: {fileID: 1254712174} + m_HandleRect: {fileID: 1393908668} + m_Direction: 0 + m_MinValue: 10 + m_MaxValue: 100 + m_WholeNumbers: 1 + m_Value: 50 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 270487602} + m_MethodName: OnSliderChange + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &731451286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 731451287} + - component: {fileID: 731451288} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &731451287 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731451286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.9289584, y: -7.928969, z: 43.39592} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &731451288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 731451286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 1.960861, y: 2.4412837, z: -2.677367} + m_HandleOut: {x: -2.1179845, y: -2.6369033, z: 2.8919039} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &740283340 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740283341} + - component: {fileID: 740283342} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &740283341 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740283340} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -12.242, z: 50.376} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &740283342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740283340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 3.4175146, y: 0.33127835, z: -2.830737} + m_HandleOut: {x: -3.658773, y: -0.35466486, z: 3.030572} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &742309104 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 742309105} + - component: {fileID: 742309106} + m_Layer: 0 + m_Name: CP0026 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &742309105 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742309104} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -25.974771, y: 0.0000015487303, z: 191.56674} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &742309106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742309104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.44186422, y: -7.542089, z: -2.5873134} + m_HandleOut: {x: -0.4596792, y: 7.8461695, z: 2.691628} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &797973937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 797973938} + - component: {fileID: 797973939} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &797973938 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 797973937} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 16.796066, y: -0.00000060087325, z: 97.652214} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &797973939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 797973937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.12735625, y: 4.829135, z: -3.413967} + m_HandleOut: {x: 0.12970555, y: -4.918216, z: 3.4769433} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &818343720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 818343721} + - component: {fileID: 818343722} + m_Layer: 0 + m_Name: CP0030 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &818343721 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 818343720} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 30.9198, y: -0.000041405943, z: 212.94537} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &818343722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 818343720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.37424383, y: 9.061661, z: -1.7775717} + m_HandleOut: {x: 0.3854212, y: -9.332301, z: 1.8306617} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &846798736 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 846798737} + - component: {fileID: 846798738} + m_Layer: 0 + m_Name: CP0016 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &846798737 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846798736} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -64.899, y: 0, z: 50.904} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &846798738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846798736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -4.1471314, y: -0.7190648, z: -19.474852} + m_HandleOut: {x: 4.877053, y: 0.8456246, z: 22.902548} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &858794388 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 858794389} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &858794389 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858794388} + 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_Children: + - {fileID: 1393908668} + m_Father: {fileID: 671939770} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &867532251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 867532252} + - component: {fileID: 867532253} + m_Layer: 0 + m_Name: CP0017 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &867532252 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 867532251} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -45.2, y: 4.3, z: 107.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &867532253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 867532251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -11.2701845, y: -0.15131333, z: -20.542334} + m_HandleOut: {x: 13.703596, y: 0.18398428, z: 24.977749} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &871024857 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 871024858} + - component: {fileID: 871024859} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &871024858 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 871024857} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 177.3, y: 121.1, z: -16.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &871024859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 871024857} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.4025009, y: -16.65779, z: 26.749708} + m_HandleOut: {x: -1.2979565, y: 8.999408, z: -14.45159} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &876497434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 876497435} + - component: {fileID: 876497436} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &876497435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 876497434} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 28.9, y: 35, z: -147.9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &876497436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 876497434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 10.308444, y: -8.05442, z: 8.17693} + m_HandleOut: {x: -7.1516657, y: 5.587897, z: -5.67289} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &894533198 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 894533199} + - component: {fileID: 894533202} + - component: {fileID: 894533201} + - component: {fileID: 894533200} + m_Layer: 5 + m_Name: Button 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &894533199 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894533198} + 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_Children: + - {fileID: 1901908673} + m_Father: {fileID: 1749425095} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 57.899994, y: 17.800003} + m_SizeDelta: {x: 100.5, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &894533200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894533198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 894533201} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1141779460} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Speed=0 + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &894533201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894533198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &894533202 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894533198} + m_CullTransparentMesh: 0 +--- !u!1 &897789034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 897789035} + - component: {fileID: 897789036} + m_Layer: 0 + m_Name: CP0020 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &897789035 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 897789034} + m_LocalRotation: {x: 0.48684666, y: 0.08421989, z: 0.86280376, w: 0.1070379} + m_LocalPosition: {x: 0, y: 19.023, z: 147.703} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &897789036 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 897789034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.500999, y: -0.27502355, z: -3.2885995} + m_HandleOut: {x: 5.6636767, y: 0.28315666, z: 3.3858514} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &923985010 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 175260, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 923985013} + - component: {fileID: 923985012} + - component: {fileID: 923985011} + m_Layer: 0 + m_Name: emitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!199 &923985011 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19972718, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923985010} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 1.19 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &923985012 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19890446, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923985010} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 2.01 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 3.05 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 0.7607843} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 1.38 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 0 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 34.87 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 3 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 3 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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: 9445 + ctime2: 22745 + ctime3: 65535 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 32382 + atime2: 65535 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 4 + m_NumAlphaKeys: 3 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!4 &923985013 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 429948, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923985010} + m_LocalRotation: {x: 0.7071067, y: 0.00000008429371, z: -0.000000084293674, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 270487606} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &924926473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 924926474} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &924926474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924926473} + 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_Children: + - {fileID: 1254712174} + m_Father: {fileID: 671939770} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &995124675 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 995124676} + - component: {fileID: 995124677} + m_Layer: 0 + m_Name: CP0035 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &995124676 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995124675} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -24.358, y: 24.358, z: 226.154} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 35 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &995124677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995124675} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -7.977456, y: -3.555824, z: -5.355261} + m_HandleOut: {x: 45.386223, y: 20.230185, z: 30.467741} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1020837579 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1020837580} + - component: {fileID: 1020837581} + m_Layer: 5 + m_Name: light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1020837580 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1020837579} + 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_Children: [] + m_Father: {fileID: 270487606} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1020837581 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1020837579} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 0.8602434, b: 0.6102941, a: 1} + m_Intensity: 5 + m_Range: 70 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &1027481807 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1027481808} + - component: {fileID: 1027481809} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1027481808 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1027481807} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -53.6, y: 4.5, z: -43.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1027481809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1027481807} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.6208613, y: 0.09264006, z: -19.76007} + m_HandleOut: {x: -2.3767135, y: -0.084010124, z: 17.919312} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1049485758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1049485759} + - component: {fileID: 1049485760} + m_Layer: 0 + m_Name: CP0038 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1049485759 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049485758} + m_LocalRotation: {x: 0.4706493, y: -0.8559585, z: 0.00031276047, w: 0.21406583} + m_LocalPosition: {x: 258.1, y: -55.1, z: 75.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 38 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1049485760 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049485758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 42.36534, y: 3.5160587, z: 48.58627} + m_HandleOut: {x: -15.48765, y: -1.2853782, z: -17.761856} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1058289213 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1058289214} + - component: {fileID: 1058289215} + m_Layer: 0 + m_Name: CP0040 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1058289214 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058289213} + m_LocalRotation: {x: 0.6423342, y: -0.5791146, z: -0.38661295, w: 0.32025528} + m_LocalPosition: {x: 214.776, y: -8.87, z: -35.945} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 40 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1058289215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058289213} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 39.756855, y: -1.7047138, z: 22.813828} + m_HandleOut: {x: -44.60125, y: 1.9124341, z: -25.593704} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1140183950 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1140183951} + - component: {fileID: 1140183952} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1140183951 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1140183950} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10.164096, y: -0.0000034330885, z: 36.783234} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1140183952 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1140183950} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.34117416, y: 2.8048098, z: -2.5084908} + m_HandleOut: {x: 0.3720109, y: -3.0583203, z: 2.7352185} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1141779459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1141779464} + - component: {fileID: 1141779463} + - component: {fileID: 1141779462} + - component: {fileID: 1141779461} + - component: {fileID: 1141779460} + m_Layer: 5 + m_Name: MovingShip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1141779460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141779459} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 876 + m_MoveMode: 1 + m_Speed: 50 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 249377772} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!23 &1141779461 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141779459} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fa90813a05e58e64582140e7b76336c1, 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: 1 + 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 +--- !u!135 &1141779462 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141779459} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1141779463 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141779459} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1141779464 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141779459} + m_LocalRotation: {x: -0.4001538, y: 0.7104051, z: -0.12696354, w: 0.5648733} + m_LocalPosition: {x: 144.45073, y: 32.425137, z: 310.98883} + m_LocalScale: {x: 6, y: 6, z: 6} + m_Children: + - {fileID: 1687548275} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1143906518 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1143906519} + - component: {fileID: 1143906520} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1143906519 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1143906518} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.354097, y: -9.354092, z: 57.682404} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1143906520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1143906518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.848695, y: -2.4022064, z: -2.968352} + m_HandleOut: {x: -3.02393, y: 2.549976, z: 3.1509476} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1192625495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1192625496} + - component: {fileID: 1192625497} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1192625496 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192625495} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 40.11, y: 0, z: 133.268} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1192625497 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192625495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.5265107, y: -0.00000020945056, z: 9.234169} + m_HandleOut: {x: 8.596998, y: 0.00000032581968, z: -14.364602} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Finding the nearest point on a spline is a must have! +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1226957225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1226957226} + - component: {fileID: 1226957227} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1226957226 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1226957225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.6, y: 35, z: -162.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1226957227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1226957225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 9.28631, y: 4.7843013, z: 2.3296971} + m_HandleOut: {x: -15.554793, y: -8.013821, z: -3.9022992} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1230882263 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1230882264} + - component: {fileID: 1230882265} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1230882264 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1230882263} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5.024, y: 5.024, z: 19.565} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1230882265 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1230882263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.1427991, y: -1.5757786, z: -1.9115366} + m_HandleOut: {x: 1.2895802, y: 1.7781715, z: 2.1570542} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1231811562 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1231811563} + - component: {fileID: 1231811564} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1231811563 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231811562} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 40.11, y: 0, z: -133.268} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1231811564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231811562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 57.776, y: -15.385426, z: 45.360073} + m_HandleOut: {x: -11.876607, y: 3.162674, z: -9.324352} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1254712173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1254712174} + - component: {fileID: 1254712176} + - component: {fileID: 1254712175} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1254712174 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254712173} + 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_Children: [] + m_Father: {fileID: 924926474} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1254712175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254712173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1254712176 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254712173} + m_CullTransparentMesh: 0 +--- !u!1 &1393908667 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1393908668} + - component: {fileID: 1393908670} + - component: {fileID: 1393908669} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1393908668 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1393908667} + 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_Children: [] + m_Father: {fileID: 858794389} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1393908669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1393908667} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1393908670 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1393908667} + m_CullTransparentMesh: 0 +--- !u!1 &1396752233 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396752234} + - component: {fileID: 1396752235} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1396752234 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396752233} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 12.083028, y: -12.083036, z: 106.04341} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1396752235 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396752233} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 3.4426522, y: 3.5372193, z: -3.454133} + m_HandleOut: {x: -3.474724, y: -3.5701718, z: 3.4863117} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1396952682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396952683} + - component: {fileID: 1396952684} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1396952683 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396952682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.306803, y: -0.00000032140196, z: 155.15576} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1396952684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396952682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -7.80548, y: 0.0000000056396785, z: 5.969571} + m_HandleOut: {x: 8.54821, y: -0.000000006176322, z: -6.5376053} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1409001011 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1409001012} + - component: {fileID: 1409001013} + m_Layer: 0 + m_Name: CP0036 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1409001012 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1409001011} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 68, y: -48.3, z: 318.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 36 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1409001013 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1409001011} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -56.5931, y: 12.14193, z: -6.873629} + m_HandleOut: {x: 72.20025, y: -15.49041, z: 8.769227} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &1498257845 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1498476211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1498476213} + - component: {fileID: 1498476212} + 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 &1498476212 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1498476213 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1509838621 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1509838622} + - component: {fileID: 1509838623} + m_Layer: 0 + m_Name: CP0032 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1509838622 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509838621} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000023500138, y: -32.84469, z: 220.27972} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1509838623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509838621} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 9.677611, y: 0.2829161, z: -1.2625552} + m_HandleOut: {x: -9.883804, y: -0.28894398, z: 1.2894555} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1519764400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1519764401} + - component: {fileID: 1519764402} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1519764401 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519764400} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -69.2364, y: -8.526513e-14, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1519764402 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519764400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.3383658, y: 0.89927065, z: -17.90198} + m_HandleOut: {x: -2.577431, y: -0.9912085, z: 19.732206} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1524138634 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1524138635} + - component: {fileID: 1524138636} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1524138635 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524138634} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -23.306803, y: -0.00000030548782, z: -155.15526} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1524138636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524138634} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 12.778057, y: 7.860035, z: -9.815393} + m_HandleOut: {x: -7.670296, y: -4.71815, z: 5.8918953} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1566421847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1566421848} + - component: {fileID: 1566421849} + m_Layer: 0 + m_Name: CP0041 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1566421848 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566421847} + m_LocalRotation: {x: -0.46421614, y: 0, z: 0, w: 0.885722} + m_LocalPosition: {x: 114.458, y: -46.474, z: 41.072} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 41 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1566421849 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1566421847} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 51.15687, y: -4.5943413, z: -3.1357925} + m_HandleOut: {x: -43.860912, y: 3.9390996, z: 2.6885679} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1568948436 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1568948437} + - component: {fileID: 1568948438} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1568948437 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1568948436} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 170.2, y: 121.1, z: -59.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 585357936} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1568948438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1568948436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 8.296283, y: 6.2287183, z: 13.560871} + m_HandleOut: {x: -36.466236, y: -27.378275, z: -59.60669} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Other + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 1498476213} + - {fileID: 141106066} + - {fileID: 135020125} + - {fileID: 667682154} + - {fileID: 606700382} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1648714336 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1648714337} + - component: {fileID: 1648714338} + m_Layer: 0 + m_Name: CP0016 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1648714337 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1648714336} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000011612404, y: -17.19, z: 114.470184} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1648714338 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1648714336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.998876, y: 0.03809774, z: -3.46179} + m_HandleOut: {x: -5.021667, y: -0.03827144, z: 3.4775734} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1660024538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1660024539} + - component: {fileID: 1660024540} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1660024539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660024538} + m_LocalRotation: {x: 0.39178884, y: -0.046394974, z: 0.8881263, w: -0.23575585} + m_LocalPosition: {x: 0, y: 8.089, z: 24.826} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1660024540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1660024538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.203605, y: -0.32414788, z: -2.1252875} + m_HandleOut: {x: 2.4551473, y: 0.36114946, z: 2.36789} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &1687548274 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1141779464} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.x + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.y + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.z + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2332604, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!4 &1687548275 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 1687548274} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1734952959 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1734952960} + - component: {fileID: 1734952961} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1734952960 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734952959} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 11.55088, y: 11.550865, z: 89.33811} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1734952961 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734952959} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -3.4332342, y: 3.1784317, z: -3.3573422} + m_HandleOut: {x: 3.5267267, y: -3.2649856, z: 3.4487681} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1741685487 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1741685488} + - component: {fileID: 1741685489} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1741685488 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741685487} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10.601312, y: 10.601313, z: 73.107124} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1741685489 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1741685487} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.8197129, y: -3.1914332, z: -3.1954246} + m_HandleOut: {x: 2.9445422, y: 3.3327186, z: 3.3368866} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + - {fileID: 2135218537} + - {fileID: 894533199} + - {fileID: 76646009} + - {fileID: 671939770} + - {fileID: 2022148449} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 240, y: 258.9} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1858371886 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1858371890} + - component: {fileID: 1858371889} + - component: {fileID: 1858371888} + - component: {fileID: 1858371887} + - component: {fileID: 1858371891} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1858371887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858371886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1858371888 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858371886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1858371889 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858371886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1858371890 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858371886} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1858371891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858371886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1901908672 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1901908673} + - component: {fileID: 1901908675} + - component: {fileID: 1901908674} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1901908673 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901908672} + 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_Children: [] + m_Father: {fileID: 894533199} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7.2, y: 0} + m_SizeDelta: {x: 14.4, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1901908674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901908672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Stop +--- !u!222 &1901908675 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901908672} + m_CullTransparentMesh: 0 +--- !u!1 &1905340787 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1905340788} + - component: {fileID: 1905340789} + m_Layer: 0 + m_Name: CP0028 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1905340788 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1905340787} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 28.559, z: 203.264} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1905340789 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1905340787} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -8.328411, y: -0.4269166, z: -2.2185493} + m_HandleOut: {x: 8.631296, y: 0.44244257, z: 2.2992327} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1935147993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1935147994} + - component: {fileID: 1935147995} + m_Layer: 0 + m_Name: CP0017 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1935147994 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935147993} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -12.245612, y: -12.245587, z: 122.89106} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1935147995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935147993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 3.626437, y: -3.5127187, z: -3.4382973} + m_HandleOut: {x: -3.6583066, y: 3.543589, z: 3.4685135} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1960840642 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1960840643} + - component: {fileID: 1960840644} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1960840643 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960840642} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.6, y: -5.93, z: -12.46} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1960840644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960840642} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 7.9070053, y: 0.48432273, z: -6.1263094} + m_HandleOut: {x: -9.114395, y: -0.5582782, z: 7.061789} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2022148448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2022148449} + - component: {fileID: 2022148451} + - component: {fileID: 2022148450} + m_Layer: 5 + m_Name: Cachesize + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2022148449 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022148448} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -60.6, y: -25.300003} + m_SizeDelta: {x: 98.75, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2022148450 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022148448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Cache Density:' +--- !u!222 &2022148451 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022148448} + m_CullTransparentMesh: 0 +--- !u!1 &2046641047 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2046641048} + - component: {fileID: 2046641050} + - component: {fileID: 2046641049} + m_Layer: 5 + m_Name: glow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2046641048 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046641047} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 270487606} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2046641049 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046641047} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9bf8420b0b03d774aa5191b894c1d5fc, 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 +--- !u!33 &2046641050 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046641047} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2118702425 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2118702426} + - component: {fileID: 2118702427} + m_Layer: 0 + m_Name: CP0024 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2118702426 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2118702425} + m_LocalRotation: {x: -0.0633511, y: -0.5481538, z: 0.1454743, w: 0.821189} + m_LocalPosition: {x: 0, y: -23.382, z: 178.186} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 249377770} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2118702427 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2118702425} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 6.766752, y: 0.42040414, z: -2.8862584} + m_HandleOut: {x: -7.044052, y: -0.43763223, z: 3.0045369} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2135218536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2135218537} + - component: {fileID: 2135218540} + - component: {fileID: 2135218539} + - component: {fileID: 2135218538} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2135218537 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2135218536} + 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_Children: + - {fileID: 616151512} + m_Father: {fileID: 1749425095} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -61.5, y: 17.800003} + m_SizeDelta: {x: 100.5, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2135218538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2135218536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2135218539} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1141779460} + m_MethodName: SetFromString + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Speed=30 + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &2135218539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2135218536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &2135218540 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2135218536} + m_CullTransparentMesh: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/05_NearestPoint.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/05_NearestPoint.unity.meta new file mode 100644 index 00000000..86bfc989 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/05_NearestPoint.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74b5a9d3a9a9bb54399b79495001fca8 +timeCreated: 1432901464 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/06_Orientation.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/06_Orientation.unity new file mode 100644 index 00000000..8bcb5382 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/06_Orientation.unity @@ -0,0 +1,21801 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.057, g: 0.0625, b: 0.0665, a: 0.5} + m_AmbientGroundColor: {r: 0.0235, g: 0.0215, b: 0.0175, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 2048 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 112000000, guid: 2ac06cfdf02a4d84c95261b28cbdd520, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &11552393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 11552394} + - component: {fileID: 11552397} + - component: {fileID: 11552396} + - component: {fileID: 11552395} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &11552394 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + 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_Children: + - {fileID: 988828307} + m_Father: {fileID: 801592542} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -33.75} + m_SizeDelta: {x: 240, y: 67.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11552395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &11552396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &11552397 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_CullTransparentMesh: 0 +--- !u!1 &140951592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 140951593} + - component: {fileID: 140951596} + - component: {fileID: 140951595} + - component: {fileID: 140951594} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &140951593 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + 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_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &140951594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &140951595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &140951596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &162006051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 162006053} + - component: {fileID: 162006052} + - component: {fileID: 162006054} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &162006052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162006051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -12.834052, y: 0.2378854, z: 0.6110936} + m_HandleOut: {x: 13.456836, y: -0.249429, z: -0.6407474} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &162006053 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162006051} + m_LocalRotation: {x: 0.69863844, y: -0.032790415, z: 0.71470267, w: -0.0054095592} + m_LocalPosition: {x: -17.9, y: 46.5, z: -29.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &162006054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162006051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &168302388 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 168302390} + - component: {fileID: 168302389} + - component: {fileID: 168302391} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &168302389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168302388} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 1 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 8.920739, y: -3.5974312, z: 6.257907} + m_HandleOut: {x: -6.41499, y: 2.5869477, z: -4.5001216} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &168302390 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168302388} + m_LocalRotation: {x: -0.20108566, y: 0.8485722, z: 0.28998357, w: -0.39420727} + m_LocalPosition: {x: -71.9, y: 0.4, z: -32.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &168302391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168302388} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &213392932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 213392934} + - component: {fileID: 213392933} + - component: {fileID: 213392935} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &213392933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 213392932} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.815169, y: 12.582511, z: 0.23188415} + m_HandleOut: {x: -4.327785, y: -11.308929, z: -0.2084132} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &213392934 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 213392932} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5.6, y: 14.23, z: -30.22} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &213392935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 213392932} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &303086541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 303086542} + - component: {fileID: 303086543} + - component: {fileID: 303086544} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &303086542 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -17.8, y: -0.5, z: -52.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &303086543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 1 + m_SwirlTurns: 1 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -12.401446, y: -0, z: -0.11711465} + m_HandleOut: {x: 17.552347, y: 0, z: 0.16575782} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &303086544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &337869187 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 337869189} + - component: {fileID: 337869188} + - component: {fileID: 337869190} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &337869188 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337869187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 9.322546, y: -0.08770897, z: -0.38564748} + m_HandleOut: {x: -11.464986, y: 0.10786562, z: 0.47427416} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &337869189 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337869187} + m_LocalRotation: {x: -0.3845394, y: -0.58465713, z: 0.38989866, w: 0.59856886} + m_LocalPosition: {x: -49.804, y: 0, z: -12.874} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &337869190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337869187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &554804641 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 554804643} + - component: {fileID: 554804642} + - component: {fileID: 554804644} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &554804642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 554804641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 11.824762, y: -3.3234258, z: -0.22594371} + m_HandleOut: {x: -11.6627865, y: 3.2779012, z: 0.22284871} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &554804643 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 554804641} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.3, y: 0, z: -30.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &554804644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 554804641} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &636993770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 157206, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 636993771} + - component: {fileID: 636993773} + - component: {fileID: 636993772} + m_Layer: 0 + m_Name: emitter_r (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &636993771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 489470, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636993770} + m_LocalRotation: {x: 0, y: 1, z: -0.000000014901161, w: -0.00000021606684} + m_LocalPosition: {x: 2.720002, y: 0, z: -2.2600012} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 818359938} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!199 &636993772 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19904112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636993770} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b98c629cc06985046861231728d21687, type: 2} + - {fileID: 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_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 4 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &636993773 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19893762, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636993770} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 3 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 0.6784314, g: 0.8, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.15 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 5 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 2, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 60 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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: 32382 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 3 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!1 &801592538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 801592542} + - component: {fileID: 801592541} + - component: {fileID: 801592540} + - component: {fileID: 801592539} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &801592539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &801592540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &801592541 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &801592542 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 11552394} + m_Father: {fileID: 1742575540} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &818092609 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: -25.57305 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 32.96786 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 15.361185 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.12575786 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: 0.53967077 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.69362855 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: -0.460239 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &818359938 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1406142096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} + m_Children: + - {fileID: 1347162885} + - {fileID: 1572971935} + - {fileID: 942037316} + - {fileID: 636993771} + - {fileID: 1545669588} + m_Father: {fileID: 1523349470} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &924017173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 924017176} + - component: {fileID: 924017174} + - component: {fileID: 924017175} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &924017174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924017173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 2 + m_SwirlTurns: 2 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -8.702311, y: 0.17553568, z: -0} + m_HandleOut: {x: 12.399477, y: -0.25011182, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &924017175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924017173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!4 &924017176 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 924017173} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -49.6, y: -0.5, z: -52.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &934533698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 934533700} + - component: {fileID: 934533699} + - component: {fileID: 934533701} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &934533699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 934533698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.010258063, y: -0.20726514, z: -8.832827} + m_HandleOut: {x: 0.010272154, y: 0.20754984, z: 8.84496} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &934533700 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 934533698} + m_LocalRotation: {x: -0.011723829, y: -0.0051739295, z: 0.73697084, w: 0.6758031} + m_LocalPosition: {x: 45.6, y: 7.3, z: -41.181} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &934533701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 934533698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &942037315 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 157206, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 942037316} + - component: {fileID: 942037318} + - component: {fileID: 942037317} + m_Layer: 0 + m_Name: emitter_l (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &942037316 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 489470, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942037315} + m_LocalRotation: {x: 0, y: 1, z: -0.000000014901161, w: -0.00000021606684} + m_LocalPosition: {x: -2.7200007, y: 0, z: -2.2600012} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 818359938} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!199 &942037317 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19904112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942037315} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b98c629cc06985046861231728d21687, type: 2} + - {fileID: 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_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 4 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &942037318 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19893762, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942037315} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 3 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 0.6784314, g: 0.8, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.15 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 5 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 2, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 60 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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: 32382 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 3 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!1 &971357943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 971357945} + - component: {fileID: 971357944} + - component: {fileID: 971357946} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &971357944 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971357943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -16.666868, y: -3.1668708, z: -4.505419} + m_HandleOut: {x: 8.38917, y: 1.5940259, z: 2.267776} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &971357945 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971357943} + m_LocalRotation: {x: 0.24248919, y: 0, z: 0, w: 0.9701541} + m_LocalPosition: {x: 27.2, y: -0.5, z: -51.85} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &971357946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 971357943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &988828306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 988828307} + - component: {fileID: 988828309} + - component: {fileID: 988828308} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &988828307 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + 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_Children: [] + m_Father: {fileID: 11552394} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &988828308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Spline points can also contain orientation data. In this example, the ships + uses this data to roll +--- !u!222 &988828309 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_CullTransparentMesh: 0 +--- !u!1 &1049783417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1049783418} + - component: {fileID: 1049783419} + m_Layer: 0 + m_Name: Point light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1049783418 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049783417} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0, z: 0.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1523349470} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1049783419 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049783417} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 0.4044118, g: 0.72890466, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 32.2 + m_SpotAngle: 60 + m_InnerSpotAngle: 45.074013 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1001 &1146716977 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1232564713 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1232564715} + - component: {fileID: 1232564714} + - component: {fileID: 1232564716} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1232564714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1232564713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 3.6947865, y: -11.537255, z: -0.23488492} + m_HandleOut: {x: -3.9186304, y: 12.236225, z: 0.24911511} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1232564715 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1232564713} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -30.8, y: 16.18, z: -29} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1232564716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1232564713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!4 &1232943867 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 818092609} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1244766098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1244766099} + - component: {fileID: 1244766100} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1244766099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + m_LocalRotation: {x: 0.3242176, y: 0.24717665, z: -0.0881761, w: 0.90885186} + m_LocalPosition: {x: 10.6, y: 0, z: 41.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 303086542} + - {fileID: 971357945} + - {fileID: 934533700} + - {fileID: 1420072247} + - {fileID: 554804643} + - {fileID: 1232564715} + - {fileID: 162006053} + - {fileID: 213392934} + - {fileID: 1473308325} + - {fileID: 337869189} + - {fileID: 168302390} + - {fileID: 1856649322} + - {fileID: 2016824867} + - {fileID: 924017176} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1244766100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 303086543} + - {fileID: 971357944} + - {fileID: 934533699} + - {fileID: 1420072246} + - {fileID: 554804642} + - {fileID: 1232564714} + - {fileID: 162006052} + - {fileID: 213392933} + - {fileID: 1473308324} + - {fileID: 337869188} + - {fileID: 168302389} + - {fileID: 1856649321} + - {fileID: 2016824866} + - {fileID: 924017174} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 1, g: 1, b: 1, a: 1} + m_GizmoSelectionColor: {r: 0.23299523, g: 0.6784314, b: 0.14901961, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1347162882 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 109452, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1347162885} + - component: {fileID: 1347162884} + - component: {fileID: 1347162883} + m_Layer: 0 + m_Name: ship_final + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1347162883 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2306100, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1347162882} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e644d34adc0982e4584dae581d62b753, 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 +--- !u!33 &1347162884 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3358408, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1347162882} + m_Mesh: {fileID: 4300000, guid: b05649bcdf167a24db2cedd2c5881ee3, type: 3} +--- !u!4 &1347162885 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 476716, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1347162882} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1565770874} + m_Father: {fileID: 818359938} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1375666200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1375666205} + - component: {fileID: 1375666204} + - component: {fileID: 1375666202} + - component: {fileID: 1375666201} + - component: {fileID: 1375666206} + - component: {fileID: 1375666207} + 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 &1375666201 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!124 &1375666202 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!20 &1375666204 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1375666205 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_LocalRotation: {x: 0.50641304, y: -0.20246704, z: -0.50687623, w: 0.66755486} + m_LocalPosition: {x: -23.76365, y: 22.129856, z: 37.448513} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1375666206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 1647996439} + MoveTo: {fileID: 1459487497} + RollTo: {fileID: 1459487497} + ChaseTime: 0.5 +--- !u!114 &1375666207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 1244766100} + LineColor: {r: 0.9411765, g: 0.9411765, b: 0.9411765, a: 0.453} +--- !u!1 &1406142096 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 181814, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 818359938} + m_Layer: 0 + m_Name: Ship + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1420072245 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1420072247} + - component: {fileID: 1420072246} + - component: {fileID: 1420072248} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1420072246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420072245} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 8.419188, y: 1.4959016, z: -2.2706964} + m_HandleOut: {x: -11.690408, y: -2.077124, z: 3.1529605} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1420072247 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420072245} + m_LocalRotation: {x: 0.28390625, y: 0, z: 0, w: -0.95885205} + m_LocalPosition: {x: 27.2, y: 0, z: -30.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1420072248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1420072245} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1459487496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1459487497} + m_Layer: 0 + m_Name: ChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1459487497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1459487496} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 3.3, z: -6.27} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1523349470} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1473308323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1473308325} + - component: {fileID: 1473308324} + - component: {fileID: 1473308326} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1473308324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473308323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 1 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 10.650495, y: 3.0835395, z: -4.870709} + m_HandleOut: {x: -8.205999, y: -2.3758073, z: 3.7527866} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1473308325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473308323} + m_LocalRotation: {x: 0.30236918, y: -0.44196618, z: -0.26816437, w: 0.8008288} + m_LocalPosition: {x: -33.2, y: 0, z: -30.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1473308326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473308323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1523349469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1523349470} + - component: {fileID: 1523349471} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1523349470 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523349469} + m_LocalRotation: {x: 0.4266771, y: -0.14311987, z: -0.52671915, w: 0.72113127} + m_LocalPosition: {x: -29.979975, y: 18.949347, z: 38.650414} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 818359938} + - {fileID: 1459487497} + - {fileID: 1049783418} + - {fileID: 1647996439} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1523349471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523349469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0.572 + m_MoveMode: 1 + m_Speed: 25 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0.2 + m_DampingUp: 0.1 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 1244766100} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1545669587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 175260, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1545669588} + - component: {fileID: 1545669590} + - component: {fileID: 1545669589} + m_Layer: 0 + m_Name: emitter_l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1545669588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 429948, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1545669587} + m_LocalRotation: {x: 0, y: 1, z: -0.000000014901161, w: -0.00000021606684} + m_LocalPosition: {x: -2.719999, y: 0, z: -2.2599986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 818359938} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!199 &1545669589 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19972718, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1545669587} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b98c629cc06985046861231728d21687, type: 2} + - {fileID: 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_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &1545669590 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19890446, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1545669587} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 7 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 0.36862746, g: 0.7137255, b: 1, a: 0.13725491} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 3 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 5 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 3.6, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 60 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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: 7517 + atime2: 32382 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 4 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!1 &1565770873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 113010, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1565770874} + - component: {fileID: 1565770876} + - component: {fileID: 1565770875} + m_Layer: 0 + m_Name: ship_fx_01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1565770874 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 459282, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1565770873} + m_LocalRotation: {x: 0.00000013315807, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.02, y: -0.01, z: -3.15} + m_LocalScale: {x: 1, y: 1, z: 3} + m_Children: [] + m_Father: {fileID: 1347162885} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1565770875 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2332604, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1565770873} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bf4292b17c0db714d9da9355221ebd99, 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 +--- !u!33 &1565770876 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3359996, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1565770873} + m_Mesh: {fileID: 4300000, guid: faf49e0a7f5c2e14481335d8ed99d706, type: 3} +--- !u!1 &1572971934 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 175260, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1572971935} + - component: {fileID: 1572971937} + - component: {fileID: 1572971936} + m_Layer: 0 + m_Name: emitter_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1572971935 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 429948, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572971934} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000018812716} + m_LocalPosition: {x: 2.719999, y: -0, z: -2.2600005} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 818359938} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!199 &1572971936 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19972718, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572971934} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b98c629cc06985046861231728d21687, type: 2} + - {fileID: 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_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &1572971937 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 19890446, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1572971934} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 5 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 7 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 0.36862746, g: 0.7137255, b: 1, a: 0.13725491} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 3 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 5 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 3.6, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 60 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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: 7517 + atime2: 32382 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 4 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0.5 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.5 + inSlope: 0.5 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!1 &1629425598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1629425601} + - component: {fileID: 1629425600} + - component: {fileID: 1629425599} + - component: {fileID: 1629425602} + - component: {fileID: 1629425603} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1629425599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1629425600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1629425601 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1629425602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1629425603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1647996438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647996439} + m_Layer: 0 + m_Name: LookTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1647996439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647996438} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 1.74, z: 0.41} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1523349470} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1742575539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1742575540} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1742575540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742575539} + 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_Children: + - {fileID: 2049692232} + - {fileID: 801592542} + - {fileID: 140951593} + - {fileID: 1375666205} + - {fileID: 1232943867} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1856649320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1856649322} + - component: {fileID: 1856649321} + - component: {fileID: 1856649323} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1856649321 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856649320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.58989155, y: -0.47384128, z: 8.2172365} + m_HandleOut: {x: -0.64852995, y: 0.52094364, z: -9.034075} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1856649322 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856649320} + m_LocalRotation: {x: -0.7560939, y: -0.6544002, z: 0.0049291346, w: 0.0076129474} + m_LocalPosition: {x: -87.2, y: 12.69, z: -40.21} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1856649323 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856649320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2016824865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2016824867} + - component: {fileID: 2016824866} + - component: {fileID: 2016824868} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2016824866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2016824865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 1 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -8.204275, y: 2.815705, z: 2.6586006} + m_HandleOut: {x: 7.871293, y: -2.7014258, z: -2.5506976} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &2016824867 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2016824865} + m_LocalRotation: {x: 0.6896936, y: 0.4074678, z: 0.3932269, w: 0.4512929} + m_LocalPosition: {x: -71.9, y: 0.4, z: -52.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2016824868 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2016824865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2049692231 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2049692232} + - component: {fileID: 2049692233} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049692232 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_LocalRotation: {x: 0.13425766, y: 0.86382353, z: -0.3109956, w: 0.37291497} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &2049692233 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 0.9568628, g: 0.909804, b: 0.94117653, 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/06_Orientation.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/06_Orientation.unity.meta new file mode 100644 index 00000000..37cac48f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/06_Orientation.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a8705a7c11af64b489986edef4a07358 +timeCreated: 1444156166 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/10_RBSplineController.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/10_RBSplineController.unity new file mode 100644 index 00000000..851d0fcd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/10_RBSplineController.unity @@ -0,0 +1,3243 @@ +%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, g: 0.16470589, b: 0.30784315, a: 0.5} + m_AmbientEquatorColor: {r: 0.42352945, g: 0.45686278, b: 0.48431376, a: 0.5} + m_AmbientGroundColor: {r: 0.12651384, g: 0.16840948, b: 0.23897058, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 1 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 4 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &33356626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 33356627} + - component: {fileID: 33356628} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &33356627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33356626} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &33356628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33356626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1166210764 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 578 + y: 14 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 033dc10817dc0b34eaf876897c62889e, type: 2} +--- !u!1 &60450291 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 60450292} + - component: {fileID: 60450293} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &60450292 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60450291} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &60450293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60450291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1166200750 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 292 + y: 11 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 1 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 60 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 25 + m_CrossOptimize: 0 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 0.07 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &92035739 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 92035740} + - component: {fileID: 92035741} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &92035740 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92035739} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2110411147} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &92035741 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92035739} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &178016980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 178016981} + - component: {fileID: 178016982} + - component: {fileID: 178016983} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &178016981 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178016980} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000008742278, y: -10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &178016982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178016980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.515433, y: -0.00000026299634, z: -0} + m_HandleOut: {x: -5.5154324, y: 0.0000002629963, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &178016983 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178016980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &202988542 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 202988545} + - component: {fileID: 202988544} + - component: {fileID: 202988543} + - component: {fileID: 202988546} + - component: {fileID: 202988547} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &202988543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &202988544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &202988545 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &202988546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &202988547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &226556154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 226556156} + - component: {fileID: 226556155} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &226556155 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226556154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: -20, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &226556156 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226556154} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 17, z: -14.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &447909676 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 447909677} + - component: {fileID: 447909678} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &447909677 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447909676} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 40.8, y: 0, z: -29.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &447909678 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447909676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 20, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &540934300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 540934301} + - component: {fileID: 540934302} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &540934301 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540934300} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 69.2, y: 25, z: 51.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1775922571} + - {fileID: 825060284} + - {fileID: 2063804313} + - {fileID: 1563089023} + - {fileID: 447909677} + - {fileID: 226556156} + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &540934302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540934300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1775922572} + - {fileID: 825060285} + - {fileID: 2063804314} + - {fileID: 1563089024} + - {fileID: 447909678} + - {fileID: 226556155} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &615077550 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 615077551} + - component: {fileID: 615077552} + - component: {fileID: 615077553} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &615077551 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 615077550} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10, y: 0.00000011924881, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &615077552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 615077550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -5.5154324, z: -0} + m_HandleOut: {x: 0, y: 5.515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &615077553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 615077550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &649831754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 649831755} + - component: {fileID: 649831757} + - component: {fileID: 649831756} + m_Layer: 0 + m_Name: Spline Shape_1_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &649831755 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649831754} + 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_Children: + - {fileID: 977203683} + - {fileID: 1831172492} + - {fileID: 178016981} + - {fileID: 615077551} + m_Father: {fileID: 996839139} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &649831756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649831754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Count: 4 + m_Radius: 10 +--- !u!114 &649831757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649831754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 977203684} + - {fileID: 1831172491} + - {fileID: 178016982} + - {fileID: 615077552} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &661921879 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 661921880} + - component: {fileID: 661921881} + - component: {fileID: 661921882} + - component: {fileID: 661921883} + m_Layer: 0 + m_Name: Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &661921880 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 69.2, y: 25, z: 51.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 996839139} + - {fileID: 1360634724} + - {fileID: 60450292} + - {fileID: 33356627} + - {fileID: 1545490439} + - {fileID: 1399895522} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &661921881 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 996839140} + - {fileID: 1360634725} + - {fileID: 60450293} + - {fileID: 33356628} + - {fileID: 1545490440} + - {fileID: 1399895523} + m_LastModuleID: 7 +--- !u!114 &661921882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &661921883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &717133635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 717133636} + - component: {fileID: 717133639} + - component: {fileID: 717133638} + - component: {fileID: 717133637} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &717133636 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1098584818} + m_Father: {fileID: 2110411147} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &717133637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &717133638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &717133639 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &825060283 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 825060284} + - component: {fileID: 825060285} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &825060284 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825060283} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -13.2, y: 0, z: 58.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &825060285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825060283} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -20, y: 0, z: 0} + m_HandleOut: {x: 20, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &867310436 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &977203682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 977203683} + - component: {fileID: 977203684} + - component: {fileID: 977203685} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &977203683 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977203682} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &977203684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977203682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.515433, y: -0, z: -0} + m_HandleOut: {x: 5.515433, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &977203685 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 977203682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &996839138 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 996839139} + - component: {fileID: 996839140} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &996839139 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996839138} + 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_Children: + - {fileID: 649831755} + m_Father: {fileID: 661921880} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &996839140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996839138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1166190691 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 11 + y: 179 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 649831757} +--- !u!1 &1080159955 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1080159961} + - component: {fileID: 1080159960} + - component: {fileID: 1080159958} + - component: {fileID: 1080159956} + - component: {fileID: 1080159962} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &1080159956 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080159955} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 1 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &1080159958 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080159955} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 1 + 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 +--- !u!33 &1080159960 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080159955} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1080159961 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080159955} + m_LocalRotation: {x: 0.09594084, y: -0.10706944, z: 0.11337739, w: 0.9830957} + m_LocalPosition: {x: 44.199997, y: 25, z: 51.5} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: + - {fileID: 1549429253} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1080159962 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1080159955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 967866bd6dfb207458ed4a36e414e5bc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 1 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 540934302} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + MaxSpeed: 15 +--- !u!1 &1098584817 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1098584818} + - component: {fileID: 1098584821} + - component: {fileID: 1098584820} + - component: {fileID: 1098584819} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1098584818 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + 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_Children: + - {fileID: 2078986189} + m_Father: {fileID: 717133636} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -87} + m_SizeDelta: {x: 240, y: 174} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1098584819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &1098584820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1098584821 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + m_CullTransparentMesh: 0 +--- !u!1 &1360634723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1360634724} + - component: {fileID: 1360634725} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1360634724 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360634723} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1360634725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360634723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1166190691 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 540934302} +--- !u!1 &1399895521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399895522} + - component: {fileID: 1399895523} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1399895522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399895521} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1399895523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399895521} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1166190691 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 875 + y: 15 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 1 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1467783891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1467783896} + - component: {fileID: 1467783895} + - component: {fileID: 1467783893} + - component: {fileID: 1467783892} + - component: {fileID: 1467783897} + 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 &1467783892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 +--- !u!124 &1467783893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 +--- !u!20 &1467783895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1467783896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_LocalRotation: {x: 0.13017224, y: -0.47564477, z: 0.07141242, w: 0.86701643} + m_LocalPosition: {x: 67.00255, y: 33.30587, z: 36.97222} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1467783897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 1080159961} + MoveTo: {fileID: 1549429253} + RollTo: {fileID: 0} + ChaseTime: 0.5 +--- !u!1 &1545490438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1545490439} + - component: {fileID: 1545490440} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1545490439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1545490438} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1545490440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1545490438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1166190691 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 578 + y: 340 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1549429252 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1549429253} + m_Layer: 0 + m_Name: ChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1549429253 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549429252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1080159961} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1563089022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1563089023} + - component: {fileID: 1563089024} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1563089023 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563089022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 96.1, y: 0, z: 48} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1563089024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563089022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0.0000011920929, z: 19.999998} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1775922570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1775922571} + - component: {fileID: 1775922572} + - component: {fileID: 1775922573} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1775922571 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775922570} + m_LocalRotation: {x: -0.0061799157, y: -0.04967187, z: 0.10217722, w: 0.9935061} + m_LocalPosition: {x: -25, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1775922572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775922570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0.0000011920929, z: -19.999998} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1775922573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775922570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1825925829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1825925835} + - component: {fileID: 1825925834} + - component: {fileID: 1825925833} + - component: {fileID: 1825925832} + - component: {fileID: 1825925831} + - component: {fileID: 1825925830} + m_Layer: 0 + m_Name: Capsule (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!59 &1825925830 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825925829} + m_ConnectedBody: {fileID: 1872499194} + m_Anchor: {x: 0, y: 1, z: 0} + m_Axis: {x: 1, y: 0, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: -0.026506774, y: -1.2909491, z: 0.058073945} + m_UseSpring: 0 + m_Spring: + spring: 0 + damper: 0 + targetPosition: 0 + m_UseMotor: 0 + m_Motor: + targetVelocity: 0 + force: 0 + freeSpin: 0 + m_UseLimits: 1 + m_Limits: + min: -90 + max: 90 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 0 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!54 &1825925831 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825925829} + serializedVersion: 2 + m_Mass: 100 + m_Drag: 0.2 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &1825925832 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825925829} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 565ef250fc41ce145a81dd01a16e3db6, 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: 1 + 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 +--- !u!136 &1825925833 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825925829} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1825925834 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825925829} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1825925835 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825925829} + m_LocalRotation: {x: 0.040375914, y: -0.09887691, z: 0.049172863, w: 0.99306357} + m_LocalPosition: {x: 45.11, y: 12.65, z: 50.97} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1831172490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1831172492} + - component: {fileID: 1831172491} + - component: {fileID: 1831172493} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1831172491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831172490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 5.515433, z: -0} + m_HandleOut: {x: 0, y: -5.515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1831172492 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831172490} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: -0.0000004371139, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1831172493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831172490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1854695435 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1854695436} + - component: {fileID: 1854695439} + - component: {fileID: 1854695438} + - component: {fileID: 1854695437} + - component: {fileID: 1854695440} + - component: {fileID: 1854695441} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1854695436 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854695435} + m_LocalRotation: {x: 0.040375914, y: -0.09887691, z: 0.049172863, w: 0.99306357} + m_LocalPosition: {x: 44.39, y: 21.64, z: 51.32} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1854695437 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854695435} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 565ef250fc41ce145a81dd01a16e3db6, 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: 1 + 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 +--- !u!136 &1854695438 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854695435} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1854695439 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854695435} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &1854695440 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854695435} + serializedVersion: 2 + m_Mass: 10 + m_Drag: 0.2 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!59 &1854695441 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854695435} + m_ConnectedBody: {fileID: 1080159956} + m_Anchor: {x: 0, y: 1, z: 0} + m_Axis: {x: 1, y: 0, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: -0.15392104, y: -0.65835774, z: 0.12979127} + m_UseSpring: 0 + m_Spring: + spring: 0 + damper: 0 + targetPosition: 0 + m_UseMotor: 0 + m_Motor: + targetVelocity: 0 + force: 0 + freeSpin: 0 + m_UseLimits: 1 + m_Limits: + min: -90 + max: 90 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 0 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!1 &1872469420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872469421} + - component: {fileID: 1872469424} + - component: {fileID: 1872469423} + - component: {fileID: 1872469422} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1872469421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + 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_Children: [] + m_Father: {fileID: 2110411147} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1872469422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1872469423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1872469424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1872499193 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872499199} + - component: {fileID: 1872499198} + - component: {fileID: 1872499197} + - component: {fileID: 1872499196} + - component: {fileID: 1872499194} + - component: {fileID: 1872499195} + m_Layer: 0 + m_Name: Capsule (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &1872499194 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872499193} + serializedVersion: 2 + m_Mass: 10 + m_Drag: 0.2 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!59 &1872499195 +HingeJoint: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872499193} + m_ConnectedBody: {fileID: 1854695440} + m_Anchor: {x: 0, y: 1, z: 0} + m_Axis: {x: 1, y: 0, z: 0} + m_AutoConfigureConnectedAnchor: 1 + m_ConnectedAnchor: {x: -0.060441993, y: -1.218023, z: 0.105821505} + m_UseSpring: 0 + m_Spring: + spring: 0 + damper: 0 + targetPosition: 0 + m_UseMotor: 0 + m_Motor: + targetVelocity: 0 + force: 0 + freeSpin: 0 + m_UseLimits: 1 + m_Limits: + min: -90 + max: 90 + bounciness: 0 + bounceMinVelocity: 0.2 + contactDistance: 0 + m_BreakForce: Infinity + m_BreakTorque: Infinity + m_EnableCollision: 0 + m_EnablePreprocessing: 0 + m_MassScale: 1 + m_ConnectedMassScale: 1 +--- !u!23 &1872499196 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872499193} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 565ef250fc41ce145a81dd01a16e3db6, 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: 1 + 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 +--- !u!136 &1872499197 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872499193} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1872499198 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872499193} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1872499199 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872499193} + m_LocalRotation: {x: 0.040375914, y: -0.09887691, z: 0.049172863, w: 0.99306357} + m_LocalPosition: {x: 44.7, y: 17.21, z: 51.19} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2063804312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2063804313} + - component: {fileID: 2063804314} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2063804313 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2063804312} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 24.2, y: -10.3, z: 27.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2063804314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2063804312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 20, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2078986188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2078986189} + - component: {fileID: 2078986191} + - component: {fileID: 2078986190} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2078986189 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2078986188} + 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_Children: [] + m_Father: {fileID: 1098584818} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &2078986190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2078986188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Here we have a simple custom controller (MotorController.cs) that + sets the speed of the kinematic rigidbody sphere and several capsules attached + to the sphere by hinge joints. + + + Use Up/Down to move the sphere!' +--- !u!222 &2078986191 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2078986188} + m_CullTransparentMesh: 0 +--- !u!1 &2110411146 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2110411147} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2110411147 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110411146} + 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_Children: + - {fileID: 92035740} + - {fileID: 717133636} + - {fileID: 1872469421} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/10_RBSplineController.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/10_RBSplineController.unity.meta new file mode 100644 index 00000000..d92a5433 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/10_RBSplineController.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f06f4a7d7481c841bafde49fad30896 +timeCreated: 1438594004 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/11_Rigidbody.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/11_Rigidbody.unity new file mode 100644 index 00000000..717b0b7d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/11_Rigidbody.unity @@ -0,0 +1,3209 @@ +%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.8, g: 0.8, b: 0.8, a: 0.8} + m_AmbientEquatorColor: {r: 0.0912, g: 0.1, b: 0.106400006, a: 0.8} + m_AmbientGroundColor: {r: 0.0376, g: 0.0344, b: 0.028, a: 0.8} + m_AmbientIntensity: 0.8 + m_AmbientMode: 3 + 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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 1 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 20 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &33356626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 33356627} + - component: {fileID: 33356628} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &33356627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33356626} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &33356628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33356626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1152904151 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 586 + y: 14 + width: 250 + height: 320 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 30 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 4, y: 2} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 53f8c8b79a8c4374db97e82e5a35b4af, type: 2} +--- !u!1 &60450291 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 60450292} + - component: {fileID: 60450293} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &60450292 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60450291} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &60450293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60450291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1152894140 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 292 + y: 11 + width: 270 + height: 319 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 1 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 60 + m_Optimize: 1 + m_AngleThreshold: 5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 1 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 1 + m_ScaleReference: 0 + m_ScaleOffset: 0.55 + m_ScaleUniform: 0 + m_ScaleX: 0.3 + m_ScaleY: 0.1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.080828324 + value: 2.4683094 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.26814356 + value: 2.3303826 + inSlope: -3.523032 + outSlope: -3.523032 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.49572772 + value: 0.9925771 + inSlope: -1.2171268 + outSlope: -1.2171268 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &62332743 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 62332744} + - component: {fileID: 62332745} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &62332744 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 62332743} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 46.9, y: -12.95, z: -43.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &62332745 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 62332743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &71062427 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &92035739 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 92035740} + - component: {fileID: 92035741} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &92035740 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92035739} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2110411147} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &92035741 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92035739} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &202988542 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 202988545} + - component: {fileID: 202988544} + - component: {fileID: 202988543} + - component: {fileID: 202988546} + - component: {fileID: 202988547} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &202988543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &202988544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &202988545 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &202988546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &202988547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202988542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &226556154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 226556156} + - component: {fileID: 226556155} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &226556155 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226556154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: -20, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &226556156 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226556154} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2, y: 17, z: -14.56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &447909676 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 447909677} + - component: {fileID: 447909678} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &447909677 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447909676} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 40.8, y: 0, z: 6.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &447909678 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447909676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 20, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &540934300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 540934301} + - component: {fileID: 540934302} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &540934301 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540934300} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 69.2, y: 12.9, z: 51.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1775922571} + - {fileID: 825060284} + - {fileID: 2063804313} + - {fileID: 62332744} + - {fileID: 1954375028} + - {fileID: 1563089023} + - {fileID: 447909677} + - {fileID: 226556156} + - {fileID: 661921880} + - {fileID: 804937264} + - {fileID: 1014462172} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &540934302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 540934300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1775922572} + - {fileID: 825060285} + - {fileID: 2063804314} + - {fileID: 62332745} + - {fileID: 1954375029} + - {fileID: 1563089024} + - {fileID: 447909678} + - {fileID: 226556155} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &619388480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 619388484} + - component: {fileID: 619388483} + - component: {fileID: 619388482} + - component: {fileID: 619388481} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &619388481 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619388480} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 059cceb0ba6e50741bfe6ec2c755d5f4, 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: 1 + 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 +--- !u!64 &619388482 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619388480} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &619388483 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619388480} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &619388484 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619388480} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 130.3, y: -1.9, z: 74.6} + m_LocalScale: {x: 22, y: 22, z: 22} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &649831754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 649831755} + - component: {fileID: 649831757} + m_Layer: 0 + m_Name: Spline Shape_1_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &649831755 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649831754} + m_LocalRotation: {x: 0.11972554, y: -0.079067744, z: -0.13973874, w: 0.9797383} + m_LocalPosition: {x: -25, y: 0, z: 0} + m_LocalScale: {x: 0.34277198, y: 0.1, z: 1} + m_Children: + - {fileID: 1839776659} + - {fileID: 2021368442} + - {fileID: 1868395879} + - {fileID: 1475711985} + m_Father: {fileID: 996839139} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &649831757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649831754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1839776660} + - {fileID: 2021368441} + - {fileID: 1868395880} + - {fileID: 1475711986} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &661921879 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 661921880} + - component: {fileID: 661921881} + - component: {fileID: 661921882} + - component: {fileID: 661921883} + m_Layer: 0 + m_Name: Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &661921880 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + 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_Children: + - {fileID: 996839139} + - {fileID: 1360634724} + - {fileID: 60450292} + - {fileID: 33356627} + - {fileID: 1545490439} + - {fileID: 1399895522} + m_Father: {fileID: 540934301} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &661921881 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 996839140} + - {fileID: 1360634725} + - {fileID: 60450293} + - {fileID: 33356628} + - {fileID: 1545490440} + - {fileID: 1399895523} + m_LastModuleID: 7 +--- !u!114 &661921882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &661921883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661921879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &717133635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 717133636} + - component: {fileID: 717133639} + - component: {fileID: 717133638} + - component: {fileID: 717133637} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &717133636 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1098584818} + m_Father: {fileID: 2110411147} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &717133637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &717133638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &717133639 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717133635} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &804937258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 804937264} + - component: {fileID: 804937263} + - component: {fileID: 804937262} + - component: {fileID: 804937261} + - component: {fileID: 804937260} + - component: {fileID: 804937259} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &804937259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804937258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6f96fa824fa43342b16b5dac66031f0, type: 3} + m_Name: + m_EditorClassIdentifier: + Spline: {fileID: 540934302} + CameraController: {fileID: 0} + VSpeed: 1 + HSpeed: 0.5 + CenterDrag: 0.5 + JumpForce: 10 +--- !u!54 &804937260 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804937258} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!23 &804937261 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804937258} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 1 + 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 +--- !u!136 &804937262 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804937258} + m_Material: {fileID: 13400000, guid: 52d1f41d0bd484e4d8ccd4afef6bff5a, type: 2} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &804937263 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804937258} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &804937264 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804937258} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -25, y: 1.6800003, z: 19.43} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &825060283 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 825060284} + - component: {fileID: 825060285} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &825060284 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825060283} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -13.2, y: 0, z: 58.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &825060285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825060283} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -20, y: 0, z: 0} + m_HandleOut: {x: 20, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &996839138 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 996839139} + - component: {fileID: 996839140} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &996839139 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996839138} + 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_Children: + - {fileID: 649831755} + m_Father: {fileID: 661921880} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &996839140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996839138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1152884126 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 196 + width: 250 + height: 243 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 649831757} +--- !u!1 &1014462171 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1014462172} + - component: {fileID: 1014462177} + - component: {fileID: 1014462176} + - component: {fileID: 1014462175} + - component: {fileID: 1014462174} + - component: {fileID: 1014462173} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1014462172 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014462171} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -25.675, y: 0.841, z: 5.087} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &1014462173 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014462171} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 3 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!114 &1014462174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014462171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6f96fa824fa43342b16b5dac66031f0, type: 3} + m_Name: + m_EditorClassIdentifier: + Spline: {fileID: 540934302} + CameraController: {fileID: 2127771161} + VSpeed: 20 + HSpeed: 20 + CenterDrag: 0.2 + JumpForce: 20 +--- !u!23 &1014462175 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014462171} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bcffcab81ca65fe4db75d1f4bfda9af1, 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: 1 + 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 +--- !u!135 &1014462176 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014462171} + m_Material: {fileID: 13400000, guid: 18e82d72ffbfa004d8fadda064c8e4cc, type: 2} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1014462177 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014462171} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1098584817 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1098584818} + - component: {fileID: 1098584821} + - component: {fileID: 1098584820} + - component: {fileID: 1098584819} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1098584818 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + 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_Children: + - {fileID: 2078986189} + m_Father: {fileID: 717133636} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -87} + m_SizeDelta: {x: 240, y: 174} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1098584819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &1098584820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1098584821 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1098584817} + m_CullTransparentMesh: 0 +--- !u!1 &1360634723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1360634724} + - component: {fileID: 1360634725} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1360634724 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360634723} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1360634725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360634723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1152884126 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 225 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 540934302} +--- !u!1 &1399895521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399895522} + - component: {fileID: 1399895523} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1399895522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399895521} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1399895523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399895521} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1152884126 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 875 + y: 15 + width: 250 + height: 391 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1467783891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1467783896} + - component: {fileID: 1467783895} + - component: {fileID: 1467783893} + - component: {fileID: 1467783892} + - component: {fileID: 1467783897} + 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 &1467783892 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 +--- !u!124 &1467783893 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 +--- !u!20 &1467783895 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1467783896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_LocalRotation: {x: 0.26834443, y: -0.083865754, z: 0.2066289, w: 0.9371565} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2127771160} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1467783897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1467783891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 1014462172} + MoveTo: {fileID: 0} + RollTo: {fileID: 0} + ChaseTime: 1 +--- !u!1 &1475711984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1475711985} + - component: {fileID: 1475711986} + - component: {fileID: 1475711987} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1475711985 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475711984} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1475711986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475711984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -5.5154324, z: -0} + m_HandleOut: {x: 0, y: 20.405, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1475711987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475711984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1545490438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1545490439} + - component: {fileID: 1545490440} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1545490439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1545490438} + 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_Children: [] + m_Father: {fileID: 661921880} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1545490440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1545490438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1152884126 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 588 + y: 340 + width: 250 + height: 261 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1563089022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1563089023} + - component: {fileID: 1563089024} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1563089023 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563089022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 96.1, y: 0, z: 42.9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1563089024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563089022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0.0000011920929, z: 19.999998} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1775922570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1775922571} + - component: {fileID: 1775922572} + - component: {fileID: 1775922573} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1775922571 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775922570} + m_LocalRotation: {x: 0.007217253, y: 0.04953997, z: 0.14830142, w: -0.98767424} + m_LocalPosition: {x: -25, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1775922572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775922570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0.0000011920929, z: -19.999998} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1775922573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1775922570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1839776658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1839776659} + - component: {fileID: 1839776660} + - component: {fileID: 1839776661} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1839776659 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1839776658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.456, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1839776660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1839776658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.806 + m_HandleIn: {x: -8.068376, y: -0, z: -0} + m_HandleOut: {x: 8.068376, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1839776661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1839776658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1868395878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1868395879} + - component: {fileID: 1868395880} + - component: {fileID: 1868395881} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1868395879 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868395878} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1868395880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868395878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.515433, y: -0, z: -0} + m_HandleOut: {x: -5.515433, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1868395881 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868395878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1872469420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872469421} + - component: {fileID: 1872469424} + - component: {fileID: 1872469423} + - component: {fileID: 1872469422} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1872469421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + 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_Children: [] + m_Father: {fileID: 2110411147} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1872469422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1872469423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1872469424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872469420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1954375027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1954375028} + - component: {fileID: 1954375029} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1954375028 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1954375027} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 134.6, y: -8.02, z: -27.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1954375029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1954375027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2021368440 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2021368442} + - component: {fileID: 2021368441} + - component: {fileID: 2021368443} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2021368441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021368440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.000002026558, y: 21.65699, z: -0.00000071525574} + m_HandleOut: {x: 0, y: -5.515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &2021368442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021368440} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 649831755} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2021368443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021368440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2063804312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2063804313} + - component: {fileID: 2063804314} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2063804313 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2063804312} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 24.2, y: -10.3, z: 27.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 540934301} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2063804314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2063804312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 20, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2078986188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2078986189} + - component: {fileID: 2078986191} + - component: {fileID: 2078986190} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2078986189 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2078986188} + 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_Children: [] + m_Father: {fileID: 1098584818} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &2078986190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2078986188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'In this example the sphere isn''t connected to the spline in any way. + Instead, we add constant gravity toward the spline and apply force based on tangent + and orientation. + + + Use Up/Down/Left/Right to move the sphere!' +--- !u!222 &2078986191 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2078986188} + m_CullTransparentMesh: 0 +--- !u!1 &2110411146 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2110411147} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2110411147 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110411146} + 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_Children: + - {fileID: 92035740} + - {fileID: 717133636} + - {fileID: 1872469421} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2127771159 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2127771160} + - component: {fileID: 2127771161} + m_Layer: 0 + m_Name: CameraController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2127771160 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2127771159} + m_LocalRotation: {x: 0.11966482, y: -0.07916724, z: -0.13895404, w: 0.97984934} + m_LocalPosition: {x: 44.199997, y: 12.9, z: 51.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1467783896} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2127771161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2127771159} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 540934302} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/11_Rigidbody.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/11_Rigidbody.unity.meta new file mode 100644 index 00000000..cbdcc7d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/11_Rigidbody.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f20a478aecc1e5c45b30ad1fe79a5378 +timeCreated: 1438601336 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/12_Train.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/12_Train.unity new file mode 100644 index 00000000..2d5d6a18 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/12_Train.unity @@ -0,0 +1,12381 @@ +%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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 112000000, guid: e72a8e02528d4f34f82687c69a95581d, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &21087475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 21087476} + - component: {fileID: 21087483} + - component: {fileID: 21087482} + - component: {fileID: 21087481} + - component: {fileID: 21087480} + - component: {fileID: 21087479} + - component: {fileID: 21087478} + - component: {fileID: 21087477} + - component: {fileID: 21087484} + m_Layer: 0 + m_Name: RailtrackGeneratorB + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &21087476 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + 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_Children: + - {fileID: 1122611345} + - {fileID: 48398073} + - {fileID: 2123651732} + - {fileID: 907351442} + - {fileID: 440666399} + - {fileID: 148143346} + - {fileID: 2123193022} + - {fileID: 2139822865} + - {fileID: 514786074} + - {fileID: 1347619118} + - {fileID: 699580519} + - {fileID: 1694064193} + - {fileID: 1418854609} + - {fileID: 556237944} + - {fileID: 770472907} + - {fileID: 920781819} + - {fileID: 1397240665} + - {fileID: 1477939570} + - {fileID: 1813737618} + - {fileID: 636013161} + - {fileID: 1603260145} + - {fileID: 1154646025} + - {fileID: 1283302881} + - {fileID: 1511214170} + - {fileID: 1905003169} + - {fileID: 1793455809} + - {fileID: 872501559} + - {fileID: 1063056312} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &21087477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_d + m_Prefabs: + - {fileID: 100000, guid: ea5c61c14ea67cf419612c0a501df4bb, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &21087478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_c + m_Prefabs: + - {fileID: 100000, guid: 90c5239fbdc98f347b17525ec6d1569f, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &21087479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_b + m_Prefabs: + - {fileID: 100000, guid: 5873b19dcde231d48939d2ddacd8d14f, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &21087480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_a + m_Prefabs: + - {fileID: 100000, guid: db95e59c116ef034eb7d8478fc8c85ca, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &21087481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &21087482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &21087483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1122611346} + - {fileID: 48398074} + - {fileID: 2123651733} + - {fileID: 907351443} + - {fileID: 440666400} + - {fileID: 148143347} + - {fileID: 2123193023} + - {fileID: 2139822866} + - {fileID: 514786075} + - {fileID: 1347619119} + - {fileID: 699580520} + - {fileID: 1694064194} + - {fileID: 1418854610} + - {fileID: 556237945} + - {fileID: 770472908} + - {fileID: 920781820} + - {fileID: 1397240666} + - {fileID: 1477939571} + - {fileID: 1813737619} + - {fileID: 636013162} + - {fileID: 1603260146} + - {fileID: 1154646026} + - {fileID: 1283302882} + - {fileID: 1511214171} + - {fileID: 1905003170} + - {fileID: 1793455810} + - {fileID: 872501560} + - {fileID: 1063056313} + m_LastModuleID: 68 +--- !u!114 &21087484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21087475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 55_rail_bridge_cap + m_Prefabs: + - {fileID: 100000, guid: 00d2e0d1a4d1b0f46a67109828a5fa18, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &48398072 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 48398073} + - component: {fileID: 48398074} + m_Layer: 0 + m_Name: Input Spline Shape (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &48398073 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48398072} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &48398074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48398072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 12 + y: 181 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1435569009} +--- !u!1 &103352575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 103352576} + - component: {fileID: 103352577} + - component: {fileID: 103352578} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &103352576 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103352575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.8, y: 0.32, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &103352577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103352575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &103352578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103352575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &147395210 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 147395211} + - component: {fileID: 147395213} + - component: {fileID: 147395212} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &147395211 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147395210} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &147395212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147395210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &147395213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147395210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &148143345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 148143346} + - component: {fileID: 148143347} + m_Layer: 0 + m_Name: Input Spline Shape (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &148143346 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148143345} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &148143347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148143345} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -351887862 + m_UniqueID: 65 + Properties: + Dimensions: + serializedVersion: 2 + x: 45 + y: 1416 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 65 + m_SlotName: Shape + m_TargetModuleID: 60 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 2134829441} +--- !u!1 &212791757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 212791758} + - component: {fileID: 212791759} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &212791758 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212791757} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -96, y: 0, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &212791759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212791757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -23} + m_HandleOut: {x: 0, y: 0, z: 36} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 1000289340} + m_FollowUpHeading: 1 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 380794129} +--- !u!1 &222532715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 222532716} + - component: {fileID: 222532717} + m_Layer: 0 + m_Name: Volume Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &222532716 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222532715} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &222532717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222532715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 981 + y: 10 + width: 250 + height: 231 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} +--- !u!1001 &239928233 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1634526077} + m_Modifications: + - target: {fileID: 143266, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Name + value: TrainCarB + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -61.967937 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -95.13084 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.6118966 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0.61189663 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.3543763 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -0.3543763 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -66.10251 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -92.578514 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.8829332 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.46949863 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: 39.618294 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.y + value: -19.53248 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: 54.854046 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -70.04158 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -89.73367 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.63594675 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0.63594675 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.3091468 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -0.3091468 + objectReference: {fileID: 0} + - target: {fileID: 11406500, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11478866, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11494186, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + m_RemovedComponents: + - {fileID: 6441064, guid: 39089712dba12024695770a9a81f5205, type: 3} + - {fileID: 6492380, guid: 39089712dba12024695770a9a81f5205, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 39089712dba12024695770a9a81f5205, type: 3} +--- !u!4 &239928234 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 239928233} + m_PrefabAsset: {fileID: 0} +--- !u!1 &241214472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 241214473} + - component: {fileID: 241214474} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &241214473 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &241214474 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 1 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &279440824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 279440825} + - component: {fileID: 279440826} + m_Layer: 0 + m_Name: RailtrackPathA + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &279440825 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 279440824} + 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_Children: + - {fileID: 1000289341} + - {fileID: 715485936} + - {fileID: 547106839} + - {fileID: 1924399041} + - {fileID: 1292614001} + - {fileID: 1029514110} + - {fileID: 1151888798} + - {fileID: 860126537} + - {fileID: 1149984504} + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &279440826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 279440824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1000289340} + - {fileID: 715485937} + - {fileID: 547106840} + - {fileID: 1924399042} + - {fileID: 1292614002} + - {fileID: 1029514109} + - {fileID: 1151888799} + - {fileID: 860126538} + - {fileID: 1149984505} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &281277590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 281277591} + - component: {fileID: 281277592} + - component: {fileID: 281277593} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &281277591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 281277590} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: 8.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1225646784} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &281277592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 281277590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: -0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &281277593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 281277590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &300013538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 300013539} + - component: {fileID: 300013540} + - component: {fileID: 300013541} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &300013539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300013538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.84, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &300013540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300013538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &300013541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300013538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &314435438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 314435439} + - component: {fileID: 314435440} + m_Layer: 0 + m_Name: Create Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &314435439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314435438} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &314435440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314435438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1434 + y: 11 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &315549759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315549760} + - component: {fileID: 315549762} + - component: {fileID: 315549761} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &315549760 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315549759} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &315549761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315549759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &315549762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315549759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &328436143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 328436144} + - component: {fileID: 328436145} + - component: {fileID: 328436146} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &328436144 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328436143} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &328436145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328436143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &328436146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328436143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &376336371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 376336372} + - component: {fileID: 376336373} + - component: {fileID: 376336374} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &376336372 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376336371} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.76, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &376336373 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376336371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &376336374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376336371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 1 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &377235780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 377235781} + - component: {fileID: 377235782} + - component: {fileID: 377235783} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &377235781 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377235780} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &377235782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377235780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &377235783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377235780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 1 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &380794128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 380794130} + - component: {fileID: 380794129} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &380794129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380794128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 212791759} + - {fileID: 1000289340} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 212791759} + Position: {x: -96, y: 0, z: -4} + Rotation: {x: -0, y: -0, z: -0, w: 1} + - ControlPoint: {fileID: 1000289340} + Position: {x: -96, y: 0, z: -4} + Rotation: {x: -0, y: -0, z: -0, w: 1} +--- !u!4 &380794130 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 380794128} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -96, y: 0, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1390099838} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &382199823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 382199824} + - component: {fileID: 382199825} + - component: {fileID: 382199826} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &382199824 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382199823} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &382199825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382199823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &382199826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382199823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.5 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &438258916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 438258917} + - component: {fileID: 438258919} + - component: {fileID: 438258918} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &438258917 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438258916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &438258918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438258916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &438258919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438258916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &439261489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 439261490} + - component: {fileID: 439261492} + - component: {fileID: 439261491} + m_Layer: 0 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &439261490 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439261489} + 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_Children: [] + m_Father: {fileID: 987352482} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &439261491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439261489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &439261492 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439261489} + m_CullTransparentMesh: 0 +--- !u!1 &440666398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 440666399} + - component: {fileID: 440666400} + m_Layer: 0 + m_Name: Input GO (Bridge Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &440666399 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440666398} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &440666400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440666398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1590494541 + m_UniqueID: 53 + Properties: + Dimensions: + serializedVersion: 2 + x: 594 + y: 2159 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 53 + m_SlotName: GameObject + m_TargetModuleID: 54 + m_TargetSlotName: Bounds + - m_ModuleID: 53 + m_SlotName: GameObject + m_TargetModuleID: 55 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 100000, guid: 00d2e0d1a4d1b0f46a67109828a5fa18, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &461021312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 461021314} + - component: {fileID: 461021313} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &461021313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461021312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -16, y: -0, z: 0} + m_HandleOut: {x: 16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &461021314 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461021312} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32, y: 0, z: 64} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &461207586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 461207587} + - component: {fileID: 461207588} + - component: {fileID: 461207589} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &461207587 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461207586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.5, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &461207588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461207586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &461207589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461207586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &464464357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 464464358} + - component: {fileID: 464464359} + - component: {fileID: 464464360} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &464464358 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464464357} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.84, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &464464359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464464357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &464464360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464464357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.5 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &498311068 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 498311069} + - component: {fileID: 498311071} + - component: {fileID: 498311070} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &498311069 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498311068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &498311070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498311068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &498311071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498311068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &514786073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 514786074} + - component: {fileID: 514786075} + m_Layer: 0 + m_Name: Shape Extrusion (Elevation B) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &514786074 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 514786073} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &514786075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 514786073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -536413460 + m_UniqueID: 56 + Properties: + Dimensions: + serializedVersion: 2 + x: 477 + y: 976 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 56 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 56 + m_SlotName: Cross + m_TargetModuleID: 49 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 56 + m_SlotName: Volume + m_TargetModuleID: 57 + m_TargetSlotName: Volume + m_Range: + From: 0.534 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 1 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 0 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 0.99722224 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.26255876 + value: 1.0012116 + inSlope: 0.004172325 + outSlope: 0.004172325 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.43376282 + value: 0.996704 + inSlope: -0.0023841858 + outSlope: -0.0023841858 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5909514 + value: 1.0014186 + inSlope: 0.008940697 + outSlope: 0.008940697 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.7923702 + value: 0.995603 + inSlope: -0.007748604 + outSlope: -0.007748604 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &521736971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 521736972} + - component: {fileID: 521736973} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &521736972 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 521736971} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 144, y: 8, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &521736973 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 521736971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 36} + m_HandleOut: {x: 0, y: -0, z: -30} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &530200590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 530200591} + - component: {fileID: 530200598} + - component: {fileID: 530200597} + - component: {fileID: 530200596} + - component: {fileID: 530200595} + - component: {fileID: 530200594} + - component: {fileID: 530200593} + - component: {fileID: 530200592} + m_Layer: 0 + m_Name: RailtrackGeneratorA + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &530200591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + 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_Children: + - {fileID: 1180360421} + - {fileID: 757260271} + - {fileID: 854123515} + - {fileID: 2067056567} + - {fileID: 222532716} + - {fileID: 2004620633} + - {fileID: 314435439} + - {fileID: 1179413746} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &530200592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_d + m_Prefabs: + - {fileID: 100000, guid: ea5c61c14ea67cf419612c0a501df4bb, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_c + m_Prefabs: + - {fileID: 100000, guid: 90c5239fbdc98f347b17525ec6d1569f, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_b + m_Prefabs: + - {fileID: 100000, guid: 5873b19dcde231d48939d2ddacd8d14f, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_a + m_Prefabs: + - {fileID: 100000, guid: db95e59c116ef034eb7d8478fc8c85ca, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1180360422} + - {fileID: 757260272} + - {fileID: 854123516} + - {fileID: 2067056568} + - {fileID: 222532717} + - {fileID: 2004620634} + - {fileID: 314435440} + - {fileID: 1179413747} + m_LastModuleID: 47 +--- !u!1 &547106838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 547106839} + - component: {fileID: 547106840} + - component: {fileID: 547106841} + - component: {fileID: 547106842} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &547106839 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 547106838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1731522884} + m_Father: {fileID: 279440825} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &547106840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 547106838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -16, y: 0, z: 0} + m_HandleOut: {x: 16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 615573430} +--- !u!114 &547106841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 547106838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 420a5d570986b8a41bfffcbf071af14e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UseJunction: 0 +--- !u!114 &547106842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 547106838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &556237943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 556237944} + - component: {fileID: 556237945} + m_Layer: 0 + m_Name: Volume Mesh (Elevation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &556237944 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 556237943} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &556237945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 556237943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -126378796 + m_UniqueID: 50 + Properties: + Dimensions: + serializedVersion: 2 + x: 978 + y: 783 + width: 250 + height: 213 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 50 + m_SlotName: Volume + m_TargetModuleID: 48 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 50 + m_SlotName: VMesh + m_TargetModuleID: 52 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 059cceb0ba6e50741bfe6ec2c755d5f4, type: 2} +--- !u!1 &615573429 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 615573431} + - component: {fileID: 615573430} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &615573430 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 615573429} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 547106840} + - {fileID: 1153701227} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 547106840} + Position: {x: 0, y: 0, z: 60} + Rotation: {x: -0, y: -0, z: -0, w: 1} + - ControlPoint: {fileID: 1153701227} + Position: {x: 0, y: 0, z: 60} + Rotation: {x: -0, y: -0, z: -0, w: 1} +--- !u!4 &615573431 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 615573429} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1390099838} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &617133826 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 617133828} + - component: {fileID: 617133827} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &617133827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617133826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 16, y: 0, z: 0} + m_HandleOut: {x: -48, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &617133828 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 617133826} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 66.4, y: 8, z: -46.979} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &629398496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 629398497} + - component: {fileID: 629398498} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &629398497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629398496} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 80, y: 0, z: 64} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &629398498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 629398496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -16, y: 0, z: 0} + m_HandleOut: {x: 36, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &636013160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 636013161} + - component: {fileID: 636013162} + m_Layer: 0 + m_Name: Create GO (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &636013161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636013160} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &636013162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636013160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 818504287 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 1434 + y: 336 + width: 250 + height: 211 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Spots + m_TargetModuleID: 8 + m_TargetSlotName: Spots + - m_ModuleID: 6 + m_SlotName: GameObject + m_TargetModuleID: 11 + m_TargetSlotName: GameObject + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 1 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!1 &649012888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 649012889} + - component: {fileID: 649012890} + - component: {fileID: 649012891} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &649012889 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649012888} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &649012890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649012888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &649012891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649012888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &697280286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 697280288} + - component: {fileID: 697280287} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &697280287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697280286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 30, y: 0, z: 0} + m_HandleOut: {x: -16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &697280288 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697280286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 96, y: 8, z: -48} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &699580518 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 699580519} + - component: {fileID: 699580520} + m_Layer: 0 + m_Name: Volume Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &699580519 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 699580518} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &699580520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 699580518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 977 + y: 10 + width: 250 + height: 231 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} +--- !u!1 &715485935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 715485936} + - component: {fileID: 715485937} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &715485936 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715485935} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -32, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &715485937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715485935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -36, y: -0, z: 0} + m_HandleOut: {x: 16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &735872751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 735872752} + - component: {fileID: 735872753} + - component: {fileID: 735872754} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &735872752 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735872751} + 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_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &735872753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735872751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &735872754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735872751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.75 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &744915575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 744915578} + - component: {fileID: 744915577} + - component: {fileID: 744915576} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &744915576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744915575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &744915577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744915575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &744915578 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744915575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &747008905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 747008909} + - component: {fileID: 747008908} + - component: {fileID: 747008907} + - component: {fileID: 747008906} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &747008906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &747008907 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &747008908 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + m_CullTransparentMesh: 0 +--- !u!224 &747008909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + 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_Children: + - {fileID: 1412585785} + m_Father: {fileID: 1168797904} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -99.65} + m_SizeDelta: {x: 240, y: 199.3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &757260270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 757260271} + - component: {fileID: 757260272} + m_Layer: 0 + m_Name: Input Spline Shape (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &757260271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757260270} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &757260272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757260270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 232 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1435569009} +--- !u!4 &761360688 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 1749390803} + m_PrefabAsset: {fileID: 0} +--- !u!1 &770472906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 770472907} + - component: {fileID: 770472908} + m_Layer: 0 + m_Name: Volume Mesh (Elevation B) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &770472907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770472906} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &770472908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770472906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -126378796 + m_UniqueID: 57 + Properties: + Dimensions: + serializedVersion: 2 + x: 980 + y: 1013 + width: 250 + height: 213 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 57 + m_SlotName: Volume + m_TargetModuleID: 56 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 57 + m_SlotName: VMesh + m_TargetModuleID: 58 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 059cceb0ba6e50741bfe6ec2c755d5f4, type: 2} +--- !u!1 &823809035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 823809036} + - component: {fileID: 823809037} + - component: {fileID: 823809038} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &823809036 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823809035} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 16, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1225646784} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &823809037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823809035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: -0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &823809038 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823809035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &853602678 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 853602679} + - component: {fileID: 853602680} + - component: {fileID: 853602681} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &853602679 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853602678} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &853602680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853602678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &853602681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853602678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &854123514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 854123515} + - component: {fileID: 854123516} + m_Layer: 0 + m_Name: Input GO (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &854123515 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854123514} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &854123516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854123514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -2070075534 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 480 + y: 331 + width: 250 + height: 359 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 11 + m_SlotName: GameObject + m_TargetModuleID: 8 + m_TargetSlotName: Bounds + - m_ModuleID: 11 + m_SlotName: GameObject + m_TargetModuleID: 6 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 100000, guid: db95e59c116ef034eb7d8478fc8c85ca, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: 5873b19dcde231d48939d2ddacd8d14f, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: 90c5239fbdc98f347b17525ec6d1569f, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: ea5c61c14ea67cf419612c0a501df4bb, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &858902468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 858902469} + - component: {fileID: 858902470} + - component: {fileID: 858902471} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &858902469 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858902468} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.5, y: -0.25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &858902470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858902468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &858902471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858902468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &860126536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 860126537} + - component: {fileID: 860126538} + - component: {fileID: 860126539} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &860126537 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860126536} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -28, y: 0, z: -104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &860126538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860126536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 16, y: -0, z: 0} + m_HandleOut: {x: -38, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &860126539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860126536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &872501558 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 872501559} + - component: {fileID: 872501560} + m_Layer: 0 + m_Name: Create Mesh (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &872501559 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 872501558} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &872501560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 872501558} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 201678946 + m_UniqueID: 64 + Properties: + Dimensions: + serializedVersion: 2 + x: 1613 + y: 1418 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 64 + m_SlotName: VMesh + m_TargetModuleID: 62 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &891611310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 891611311} + - component: {fileID: 891611312} + - component: {fileID: 891611313} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &891611311 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891611310} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.84, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &891611312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891611310} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &891611313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891611310} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &907351441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 907351442} + - component: {fileID: 907351443} + m_Layer: 0 + m_Name: Input Spline Shape (Elevation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907351442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907351441} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &907351443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907351441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -351887862 + m_UniqueID: 49 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 750 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 49 + m_SlotName: Shape + m_TargetModuleID: 48 + m_TargetSlotName: Cross + - m_ModuleID: 49 + m_SlotName: Shape + m_TargetModuleID: 56 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1225646785} +--- !u!1 &920781818 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 920781819} + - component: {fileID: 920781820} + m_Layer: 0 + m_Name: Volume Mesh (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &920781819 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 920781818} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &920781820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 920781818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -126378796 + m_UniqueID: 61 + Properties: + Dimensions: + serializedVersion: 2 + x: 983 + y: 1414 + width: 250 + height: 213 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 61 + m_SlotName: Volume + m_TargetModuleID: 60 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 61 + m_SlotName: VMesh + m_TargetModuleID: 62 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 5a955516767ce5f468c818f1f44ab381, type: 2} +--- !u!1 &970856668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 970856669} + - component: {fileID: 970856670} + - component: {fileID: 970856671} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &970856669 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970856668} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.76, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &970856670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970856668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &970856671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970856668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 1 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!1 &987352481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 987352482} + - component: {fileID: 987352484} + - component: {fileID: 987352483} + m_Layer: 0 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &987352482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987352481} + 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_Children: + - {fileID: 439261490} + m_Father: {fileID: 1865881801} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &987352483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987352481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &987352484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987352481} + m_CullTransparentMesh: 0 +--- !u!1 &1000289339 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1000289341} + - component: {fileID: 1000289340} + - component: {fileID: 1000289342} + - component: {fileID: 1000289343} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1000289340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000289339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -23} + m_HandleOut: {x: 0, y: 0, z: 36} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 380794129} +--- !u!4 &1000289341 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000289339} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -96, y: 0, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1000289342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000289339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 420a5d570986b8a41bfffcbf071af14e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UseJunction: 0 +--- !u!114 &1000289343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000289339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1026641880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1026641881} + - component: {fileID: 1026641883} + - component: {fileID: 1026641882} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1026641881 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1026641880} + 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_Children: [] + m_Father: {fileID: 1865881801} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 9, y: -0.5} + m_SizeDelta: {x: -28, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1026641882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1026641880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Use Junction +--- !u!222 &1026641883 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1026641880} + m_CullTransparentMesh: 0 +--- !u!1 &1029514107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1029514110} + - component: {fileID: 1029514109} + - component: {fileID: 1029514108} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1029514108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1029514107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1029514109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1029514107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: 16} + m_HandleOut: {x: 0, y: 0, z: -30} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1029514110 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1029514107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 80, y: 0, z: -56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1036311916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1036311917} + - component: {fileID: 1036311918} + - component: {fileID: 1036311919} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1036311917 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036311916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1036311918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036311916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1036311919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036311916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0.39305732 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &1051589950 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1634526077} + m_Modifications: + - target: {fileID: 143266, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Name + value: TrainCarD + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -30.102125 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -103.968666 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.5082901 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0.5082902 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.49157012 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -0.49157012 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -34.951454 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -103.66062 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7422557 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.6701168 + objectReference: {fileID: 0} + - target: {fileID: 433866, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: 39.618294 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.y + value: -19.53248 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: 54.854046 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -39.76775 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -103.01841 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.54105955 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0.54105955 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.4552522 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -0.4552522 + objectReference: {fileID: 0} + - target: {fileID: 11406500, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11406500, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_InitialPosition + value: 470.439972 + objectReference: {fileID: 0} + - target: {fileID: 11478866, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11478866, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_InitialPosition + value: 475.299957 + objectReference: {fileID: 0} + - target: {fileID: 11492322, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: UIElement + value: + objectReference: {fileID: 1865881802} + - target: {fileID: 11494186, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11494186, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_InitialPosition + value: 465.579987 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6441064, guid: 39089712dba12024695770a9a81f5205, type: 3} + - {fileID: 6492380, guid: 39089712dba12024695770a9a81f5205, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 39089712dba12024695770a9a81f5205, type: 3} +--- !u!4 &1051589951 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 1051589950} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1063056311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1063056312} + - component: {fileID: 1063056313} + m_Layer: 0 + m_Name: Create Mesh (Bridge Caps) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1063056312 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1063056311} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1063056313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1063056311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -533868381 + m_UniqueID: 68 + Properties: + Dimensions: + serializedVersion: 2 + x: 1611 + y: 1750 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 68 + m_SlotName: VMesh + m_TargetModuleID: 67 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1107298965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1107298968} + - component: {fileID: 1107298967} + - component: {fileID: 1107298966} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1107298966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107298965} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1107298967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107298965} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: -0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1107298968 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107298965} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -16, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1225646784} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1107685729 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1107685730} + - component: {fileID: 1107685731} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1107685730 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107685729} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -28, y: 0, z: -100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1107685731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107685729} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 48, y: 0, z: 0} + m_HandleOut: {x: -36, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1122611344 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1122611345} + - component: {fileID: 1122611346} + m_Layer: 0 + m_Name: Input Spline Path (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1122611345 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122611344} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1122611346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1122611344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 35 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 48 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 56 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 60 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 2001401025} +--- !u!1 &1149984503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1149984504} + - component: {fileID: 1149984505} + - component: {fileID: 1149984506} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1149984504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1149984503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -96, y: 0, z: -36} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1149984505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1149984503} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -38} + m_HandleOut: {x: 0, y: 0, z: 16} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1149984506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1149984503} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1151272599 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1151272604} + - component: {fileID: 1151272603} + - component: {fileID: 1151272601} + - component: {fileID: 1151272600} + - component: {fileID: 1151272605} + 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 &1151272600 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 +--- !u!124 &1151272601 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 +--- !u!20 &1151272603 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1151272604 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_LocalRotation: {x: 0.14331716, y: -0.20488892, z: 0.03034232, w: 0.9677604} + m_LocalPosition: {x: -56.076447, y: 16.9, z: -132.69304} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1151272605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 761360688} + MoveTo: {fileID: 1805500856} + RollTo: {fileID: 0} + ChaseTime: 1 +--- !u!1 &1151888797 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1151888798} + - component: {fileID: 1151888799} + - component: {fileID: 1151888800} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1151888798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151888797} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32, y: 0, z: -104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1151888799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151888797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 30, y: -0, z: 0} + m_HandleOut: {x: -16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1151888800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151888797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1153701225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1153701226} + - component: {fileID: 1153701227} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1153701226 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1153701225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1153701227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1153701225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -16, y: -0, z: 0} + m_HandleOut: {x: 16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 547106840} + m_FollowUpHeading: -1 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 615573430} +--- !u!1 &1154646024 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1154646025} + - component: {fileID: 1154646026} + m_Layer: 0 + m_Name: TRS Mesh (Elevation B) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1154646025 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154646024} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1154646026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154646024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1751647494 + m_UniqueID: 58 + Properties: + Dimensions: + serializedVersion: 2 + x: 1320 + y: 1009 + width: 200 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 58 + m_SlotName: VMesh + m_TargetModuleID: 57 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 58 + m_SlotName: VMesh + m_TargetModuleID: 59 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: -8.4, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &1168797903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1168797904} + - component: {fileID: 1168797907} + - component: {fileID: 1168797906} + - component: {fileID: 1168797905} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1168797904 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 747008909} + m_Father: {fileID: 1491094075} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1168797905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1168797906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1168797907 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1179413745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1179413746} + - component: {fileID: 1179413747} + m_Layer: 0 + m_Name: Create GO (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1179413746 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179413745} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1179413747 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1179413745} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 818504287 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 1434 + y: 336 + width: 250 + height: 211 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Spots + m_TargetModuleID: 8 + m_TargetSlotName: Spots + - m_ModuleID: 6 + m_SlotName: GameObject + m_TargetModuleID: 11 + m_TargetSlotName: GameObject + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 1 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!1 &1180360420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1180360421} + - component: {fileID: 1180360422} + m_Layer: 0 + m_Name: Input Spline Path (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1180360421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1180360420} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1180360422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1180360420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 14 + y: 35 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 279440826} +--- !u!1 &1215189935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1215189938} + - component: {fileID: 1215189937} + - component: {fileID: 1215189936} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1215189936 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215189935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1215189937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215189935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1215189938 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215189935} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1225646783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1225646784} + - component: {fileID: 1225646785} + m_Layer: 0 + m_Name: RailtrackShapeElevation + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1225646784 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225646783} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1107298968} + - {fileID: 281277591} + - {fileID: 1381306554} + - {fileID: 823809036} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1225646785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225646783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1107298967} + - {fileID: 281277592} + - {fileID: 1381306555} + - {fileID: 823809037} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1283302880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1283302881} + - component: {fileID: 1283302882} + m_Layer: 0 + m_Name: TRS Mesh (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1283302881 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283302880} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1283302882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283302880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1751647494 + m_UniqueID: 62 + Properties: + Dimensions: + serializedVersion: 2 + x: 1333 + y: 1415 + width: 200 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 62 + m_SlotName: VMesh + m_TargetModuleID: 61 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 62 + m_SlotName: VMesh + m_TargetModuleID: 64 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: -0.2, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &1292614000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1292614001} + - component: {fileID: 1292614002} + - component: {fileID: 1292614003} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1292614001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292614000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 80, y: 0, z: 12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1292614002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292614000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: 30} + m_HandleOut: {x: 0, y: 0, z: -16} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1292614003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292614000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1347619117 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1347619118} + - component: {fileID: 1347619119} + m_Layer: 0 + m_Name: Shape Extrusion (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1347619118 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1347619117} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1347619119 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1347619117} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -536413460 + m_UniqueID: 60 + Properties: + Dimensions: + serializedVersion: 2 + x: 471 + y: 1414 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 60 + m_SlotName: Cross + m_TargetModuleID: 65 + m_TargetSlotName: Shape + - m_ModuleID: 60 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 60 + m_SlotName: Volume + m_TargetModuleID: 61 + m_TargetSlotName: Volume + - m_ModuleID: 60 + m_SlotName: Volume + m_TargetModuleID: 66 + m_TargetSlotName: Volume + m_Range: + From: 0.4924 + To: 0.534 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 0.99722224 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.26255876 + value: 1.0012116 + inSlope: 0.004172325 + outSlope: 0.004172325 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.43376282 + value: 0.996704 + inSlope: -0.0023841858 + outSlope: -0.0023841858 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5909514 + value: 1.0014186 + inSlope: 0.008940697 + outSlope: 0.008940697 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.7923702 + value: 0.995603 + inSlope: -0.007748604 + outSlope: -0.007748604 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &1381306553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1381306554} + - component: {fileID: 1381306555} + - component: {fileID: 1381306556} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1381306554 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381306553} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 8.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1225646784} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1381306555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381306553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: -0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1381306556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1381306553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1390099835 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1390099838} + - component: {fileID: 1390099837} + - component: {fileID: 1390099836} + - component: {fileID: 1390099839} + - component: {fileID: 1390099840} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1390099836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1390099837 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1390099838 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + 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_Children: + - {fileID: 615573431} + - {fileID: 380794130} + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1390099839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1390099840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1397240664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1397240665} + - component: {fileID: 1397240666} + m_Layer: 0 + m_Name: Volume Caps (Bridge Caps) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1397240665 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1397240664} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1397240666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1397240664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1202471016 + m_UniqueID: 66 + Properties: + Dimensions: + serializedVersion: 2 + x: 972 + y: 1753 + width: 250 + height: 228 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 66 + m_SlotName: Volume + m_TargetModuleID: 60 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 66 + m_SlotName: VMesh + m_TargetModuleID: 67 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0.2} + UVScale: {x: 2, y: 1} + m_StartMaterial: {fileID: 2100000, guid: 5a955516767ce5f468c818f1f44ab381, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1412585784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1412585785} + - component: {fileID: 1412585787} + - component: {fileID: 1412585786} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1412585785 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412585784} + 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_Children: [] + m_Father: {fileID: 747008909} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 16.5, y: -187.9} + m_SizeDelta: {x: -34, y: 177.6} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1412585786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412585784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'A more complex example using Metadata to hold junction state and several + SplineControllers to keep Axes and Waggons on the track. Also showing a way to + address float inaccuracy and keep relative distances between all elements constant. + + Click + on the floating checkbox before the train reaches it to activate/deactivate the + junction.' +--- !u!222 &1412585787 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412585784} + m_CullTransparentMesh: 0 +--- !u!1 &1418854608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1418854609} + - component: {fileID: 1418854610} + m_Layer: 0 + m_Name: Volume Spots (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1418854609 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1418854608} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1418854610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1418854608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1313367643 + m_UniqueID: 8 + Properties: + Dimensions: + serializedVersion: 2 + x: 974 + y: 388 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 8 + m_SlotName: Bounds + m_TargetModuleID: 11 + m_TargetSlotName: GameObject + - m_ModuleID: 8 + m_SlotName: Path/Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 8 + m_SlotName: Spots + m_TargetModuleID: 6 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0.03 + To: 0.97 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: a + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: b + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 1 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: c + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 2 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: d + m_KeepTogether: 1 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 3 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 3 + SimpleValue: 0 + m_RepeatingOrder: 0 + m_FitEnd: 0 +--- !u!1 &1419464519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1419464520} + - component: {fileID: 1419464521} + - component: {fileID: 1419464522} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1419464520 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419464519} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.5, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1419464521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419464519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1419464522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419464519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1423683375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1423683376} + - component: {fileID: 1423683377} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1423683376 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1423683375} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -92, y: 0, z: -36} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001401024} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1423683377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1423683375} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -36} + m_HandleOut: {x: 0, y: 0, z: 16} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1435569007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435569008} + - component: {fileID: 1435569009} + m_Layer: 0 + m_Name: RailtrackShapeMain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1435569008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435569007} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -42.76, y: 0, z: 57.49} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 858902469} + - {fileID: 744915578} + - {fileID: 464464358} + - {fileID: 1506439644} + - {fileID: 1951881762} + - {fileID: 1984637577} + - {fileID: 376336372} + - {fileID: 735872752} + - {fileID: 970856669} + - {fileID: 1681444216} + - {fileID: 103352576} + - {fileID: 300013539} + - {fileID: 891611311} + - {fileID: 1036311917} + - {fileID: 1955931099} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1435569009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435569007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 858902470} + - {fileID: 744915577} + - {fileID: 464464359} + - {fileID: 1506439645} + - {fileID: 1951881763} + - {fileID: 1984637578} + - {fileID: 376336373} + - {fileID: 735872753} + - {fileID: 970856670} + - {fileID: 1681444217} + - {fileID: 103352577} + - {fileID: 300013540} + - {fileID: 891611312} + - {fileID: 1036311918} + - {fileID: 1955931100} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1439194254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1439194255} + - component: {fileID: 1439194256} + - component: {fileID: 1439194257} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1439194255 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439194254} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1439194256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439194254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1439194257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439194254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1470089471 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1470089472} + - component: {fileID: 1470089473} + - component: {fileID: 1470089474} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1470089472 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470089471} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1470089473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470089471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1470089474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470089471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1477939569 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1477939570} + - component: {fileID: 1477939571} + m_Layer: 0 + m_Name: Create Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1477939570 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477939569} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1477939571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477939569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1430 + y: 11 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1491094074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1491094075} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1491094075 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1491094074} + 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_Children: + - {fileID: 1151272604} + - {fileID: 241214473} + - {fileID: 1645787245} + - {fileID: 1671600030} + - {fileID: 1168797904} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1506439643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1506439644} + - component: {fileID: 1506439645} + - component: {fileID: 1506439646} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1506439644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506439643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.84, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1506439645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506439643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1506439646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506439643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1511214169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1511214170} + - component: {fileID: 1511214171} + m_Layer: 0 + m_Name: TRS Mesh (Bridge Caps) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1511214170 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1511214169} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1511214171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1511214169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -774075844 + m_UniqueID: 67 + Properties: + Dimensions: + serializedVersion: 2 + x: 1330 + y: 1752 + width: 200 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 67 + m_SlotName: VMesh + m_TargetModuleID: 66 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 67 + m_SlotName: VMesh + m_TargetModuleID: 68 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: -0.2, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &1521427199 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1521427200} + - component: {fileID: 1521427201} + - component: {fileID: 1521427202} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1521427200 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521427199} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1521427201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521427199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1521427202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521427199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!1 &1603260144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1603260145} + - component: {fileID: 1603260146} + m_Layer: 0 + m_Name: TRS Mesh (Elevation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1603260145 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603260144} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1603260146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1603260144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1751647494 + m_UniqueID: 52 + Properties: + Dimensions: + serializedVersion: 2 + x: 1322 + y: 784 + width: 200 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 52 + m_SlotName: VMesh + m_TargetModuleID: 50 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 52 + m_SlotName: VMesh + m_TargetModuleID: 51 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: -8.4, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &1634526076 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1634526077} + - component: {fileID: 1634526078} + m_Layer: 0 + m_Name: Train + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1634526077 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634526076} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -39.618294, y: 19.53248, z: -54.854046} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1809789846} + - {fileID: 239928234} + - {fileID: 1750288831} + - {fileID: 1051589951} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1634526078 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634526076} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e821631cf9a29834281810463e753f57, type: 3} + m_Name: + m_EditorClassIdentifier: + Spline: {fileID: 279440826} + Speed: 25 + Position: 511.84 + CarSize: 16 + AxisDistance: 9.72 + CarGap: 0.7 + Limit: 0.2 +--- !u!1 &1645787244 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1645787245} + - component: {fileID: 1645787248} + - component: {fileID: 1645787247} + - component: {fileID: 1645787246} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1645787245 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + 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_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1645787246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1645787247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1645787248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1671600029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1671600030} + - component: {fileID: 1671600033} + - component: {fileID: 1671600032} + - component: {fileID: 1671600031} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1671600030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10.2, y: -0.36108923, z: -16.1} + m_LocalScale: {x: 34.298588, y: 34.29859, z: 34.29859} + m_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1671600031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3fbb64eeb951ac14381179a841926902, 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: 1 + 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 +--- !u!64 &1671600032 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1671600033 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1681444215 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1681444216} + - component: {fileID: 1681444217} + - component: {fileID: 1681444218} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1681444216 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1681444215} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.76, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1681444217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1681444215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1681444218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1681444215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1694064192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1694064193} + - component: {fileID: 1694064194} + m_Layer: 0 + m_Name: Volume Spots (Bridge Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1694064193 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694064192} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1694064194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694064192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1420437214 + m_UniqueID: 54 + Properties: + Dimensions: + serializedVersion: 2 + x: 954 + y: 2222 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 54 + m_SlotName: Bounds + m_TargetModuleID: 53 + m_TargetSlotName: GameObject + - m_ModuleID: 54 + m_SlotName: Path/Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 54 + m_SlotName: Spots + m_TargetModuleID: 55 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0.491 + To: 0.536 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 20 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1 &1731522883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1731522884} + - component: {fileID: 1731522887} + - component: {fileID: 1731522886} + - component: {fileID: 1731522885} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1731522884 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1731522883} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 23.1} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: + - {fileID: 1865881801} + m_Father: {fileID: 547106839} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -12.99, y: 15.6} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1731522885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1731522883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1731522886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1731522883} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1731522887 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1731522883} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 1151272603} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1001 &1749390803 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1634526077} + m_Modifications: + - target: {fileID: 143266, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Name + value: TrainCarA + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -75.3154449 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -85.1661453 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: .651174307 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -.651174307 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -.275630355 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -.275630355 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -78.693375 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -81.673454 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.93442535 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.35615906 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: 39.618294 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.y + value: -19.53248 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: 54.854046 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -81.80904 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -77.94493 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.669434 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0.669434 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.22772376 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -0.22772376 + objectReference: {fileID: 0} + - target: {fileID: 11406500, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11416956, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: UIElement + value: + objectReference: {fileID: 1865881802} + - target: {fileID: 11478866, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11494186, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + m_RemovedComponents: + - {fileID: 6441064, guid: 39089712dba12024695770a9a81f5205, type: 3} + - {fileID: 6492380, guid: 39089712dba12024695770a9a81f5205, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 39089712dba12024695770a9a81f5205, type: 3} +--- !u!1001 &1750288830 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1634526077} + m_Modifications: + - target: {fileID: 143266, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Name + value: TrainCarC + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -46.579052 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -101.5066 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.5635067 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0.5635067 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.4271536 + objectReference: {fileID: 0} + - target: {fileID: 406214, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -0.42715362 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -51.213455 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -100.0467 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.8180224 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 429098, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.5751865 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: 39.618294 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.y + value: -19.53248 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: 54.854046 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.x + value: -55.731262 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalPosition.z + value: -98.25824 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.w + value: 0.59268886 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.x + value: -0.59268886 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.y + value: -0.38564223 + objectReference: {fileID: 0} + - target: {fileID: 497572, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_LocalRotation.z + value: -0.38564223 + objectReference: {fileID: 0} + - target: {fileID: 11406500, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11406500, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_InitialPosition + value: 487.139984 + objectReference: {fileID: 0} + - target: {fileID: 11478866, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11478866, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_InitialPosition + value: 491.999969 + objectReference: {fileID: 0} + - target: {fileID: 11494186, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 279440826} + - target: {fileID: 11494186, guid: 39089712dba12024695770a9a81f5205, type: 3} + propertyPath: m_InitialPosition + value: 482.279999 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6441064, guid: 39089712dba12024695770a9a81f5205, type: 3} + - {fileID: 6492380, guid: 39089712dba12024695770a9a81f5205, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 39089712dba12024695770a9a81f5205, type: 3} +--- !u!4 &1750288831 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 1750288830} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1793455808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1793455809} + - component: {fileID: 1793455810} + m_Layer: 0 + m_Name: Create Mesh (Elevation B) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1793455809 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1793455808} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1793455810 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1793455808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 201678946 + m_UniqueID: 59 + Properties: + Dimensions: + serializedVersion: 2 + x: 1615 + y: 1100 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 59 + m_SlotName: VMesh + m_TargetModuleID: 58 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!4 &1805500856 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 466658, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 1749390803} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1809789846 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 442336, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 1749390803} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1813737617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1813737618} + - component: {fileID: 1813737619} + m_Layer: 0 + m_Name: Create GO (Bridge Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1813737618 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1813737617} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1813737619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1813737617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1020208161 + m_UniqueID: 55 + Properties: + Dimensions: + serializedVersion: 2 + x: 1372 + y: 2162 + width: 250 + height: 211 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 55 + m_SlotName: GameObject + m_TargetModuleID: 53 + m_TargetSlotName: GameObject + - m_ModuleID: 55 + m_SlotName: Spots + m_TargetModuleID: 54 + m_TargetSlotName: Spots + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 1 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!1 &1852452133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1852452134} + - component: {fileID: 1852452135} + - component: {fileID: 1852452136} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1852452134 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852452133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1852452135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852452133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1852452136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852452133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1865881800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1865881801} + - component: {fileID: 1865881802} + - component: {fileID: 1865881803} + - component: {fileID: 1865881804} + m_Layer: 0 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1865881801 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865881800} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: + - {fileID: 987352482} + - {fileID: 1026641881} + m_Father: {fileID: 1731522884} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 60.1, y: 0} + m_SizeDelta: {x: 160, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1865881802 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865881800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 987352483} + toggleTransition: 1 + graphic: {fileID: 439261491} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 547106841} + m_MethodName: Toggle + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_IsOn: 0 +--- !u!65 &1865881803 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865881800} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 50, z: 10} + m_Center: {x: -27.66, y: -29.74, z: 0} +--- !u!54 &1865881804 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1865881800} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1001 &1894647745 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1905003168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1905003169} + - component: {fileID: 1905003170} + m_Layer: 0 + m_Name: Create Mesh (Elevation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1905003169 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1905003168} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1905003170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1905003168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 201678946 + m_UniqueID: 51 + Properties: + Dimensions: + serializedVersion: 2 + x: 1615 + y: 782 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 51 + m_SlotName: VMesh + m_TargetModuleID: 52 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1924399040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1924399041} + - component: {fileID: 1924399042} + - component: {fileID: 1924399043} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1924399041 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1924399040} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1924399042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1924399040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -16, y: -0, z: 0} + m_HandleOut: {x: 30, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1924399043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1924399040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1951881761 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1951881762} + - component: {fileID: 1951881763} + - component: {fileID: 1951881764} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1951881762 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951881761} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.8, y: 0.32, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1951881763 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951881761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1951881764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951881761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1955931098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1955931099} + - component: {fileID: 1955931100} + - component: {fileID: 1955931101} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1955931099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955931098} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.5, y: -0.25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1955931100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955931098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1955931101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955931098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1984637576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1984637577} + - component: {fileID: 1984637578} + - component: {fileID: 1984637579} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1984637577 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984637576} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.76, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1984637578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984637576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1984637579 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984637576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2001401023 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2001401024} + - component: {fileID: 2001401025} + m_Layer: 0 + m_Name: RailtrackPathB + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2001401024 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001401023} + 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_Children: + - {fileID: 1153701226} + - {fileID: 461021314} + - {fileID: 629398497} + - {fileID: 521736972} + - {fileID: 697280288} + - {fileID: 617133828} + - {fileID: 1107685730} + - {fileID: 1423683376} + - {fileID: 212791758} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2001401025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001401023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1153701227} + - {fileID: 461021313} + - {fileID: 629398498} + - {fileID: 521736973} + - {fileID: 697280287} + - {fileID: 617133827} + - {fileID: 1107685731} + - {fileID: 1423683377} + - {fileID: 212791759} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2004620632 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2004620633} + - component: {fileID: 2004620634} + m_Layer: 0 + m_Name: Volume Spots (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2004620633 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2004620632} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2004620634 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2004620632} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1313367643 + m_UniqueID: 8 + Properties: + Dimensions: + serializedVersion: 2 + x: 978 + y: 388 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 8 + m_SlotName: Path/Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + - m_ModuleID: 8 + m_SlotName: Bounds + m_TargetModuleID: 11 + m_TargetSlotName: GameObject + OutputLinks: + - m_ModuleID: 8 + m_SlotName: Spots + m_TargetModuleID: 6 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: a + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: b + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 1 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: c + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 2 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: d + m_KeepTogether: 1 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 3 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 3 + SimpleValue: 0 + m_RepeatingOrder: 0 + m_FitEnd: 0 +--- !u!1 &2010794650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2010794653} + - component: {fileID: 2010794651} + - component: {fileID: 2010794652} + m_Layer: 0 + m_Name: CP0016 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2010794651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2010794650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2010794652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2010794650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!4 &2010794653 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2010794650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2067056566 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2067056567} + - component: {fileID: 2067056568} + m_Layer: 0 + m_Name: Shape Extrusion (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2067056567 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067056566} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2067056568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067056566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 481 + y: 32 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 8 + m_TargetSlotName: Path/Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 60 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 82 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &2123193021 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2123193022} + - component: {fileID: 2123193023} + m_Layer: 0 + m_Name: Shape Extrusion (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2123193022 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123193021} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2123193023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123193021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 477 + y: 32 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 54 + m_TargetSlotName: Path/Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 8 + m_TargetSlotName: Path/Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 60 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 82 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &2123651731 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2123651732} + - component: {fileID: 2123651733} + m_Layer: 0 + m_Name: Input GO (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2123651732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123651731} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2123651733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2123651731} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -2070075534 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 477 + y: 328 + width: 250 + height: 359 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 11 + m_SlotName: GameObject + m_TargetModuleID: 8 + m_TargetSlotName: Bounds + - m_ModuleID: 11 + m_SlotName: GameObject + m_TargetModuleID: 6 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 100000, guid: db95e59c116ef034eb7d8478fc8c85ca, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: 5873b19dcde231d48939d2ddacd8d14f, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: 90c5239fbdc98f347b17525ec6d1569f, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: ea5c61c14ea67cf419612c0a501df4bb, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &2134829439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2134829440} + - component: {fileID: 2134829441} + m_Layer: 0 + m_Name: RailtrackShapeBridge + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2134829440 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134829439} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: -0.7071068} + m_LocalPosition: {x: -9.47, y: 9, z: 34.93} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 649012889} + - {fileID: 315549760} + - {fileID: 438258917} + - {fileID: 498311069} + - {fileID: 328436144} + - {fileID: 1215189938} + - {fileID: 1852452134} + - {fileID: 382199824} + - {fileID: 377235781} + - {fileID: 147395211} + - {fileID: 461207587} + - {fileID: 1419464520} + - {fileID: 1439194255} + - {fileID: 1470089472} + - {fileID: 853602679} + - {fileID: 1521427200} + - {fileID: 2010794653} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2134829441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134829439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 649012890} + - {fileID: 315549762} + - {fileID: 438258919} + - {fileID: 498311071} + - {fileID: 328436145} + - {fileID: 1215189937} + - {fileID: 1852452135} + - {fileID: 382199825} + - {fileID: 377235782} + - {fileID: 147395213} + - {fileID: 461207588} + - {fileID: 1419464521} + - {fileID: 1439194256} + - {fileID: 1470089473} + - {fileID: 853602680} + - {fileID: 1521427201} + - {fileID: 2010794651} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 59 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2139822864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2139822865} + - component: {fileID: 2139822866} + m_Layer: 0 + m_Name: Shape Extrusion (Elevation) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2139822865 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2139822864} + 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_Children: [] + m_Father: {fileID: 21087476} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2139822866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2139822864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -536413460 + m_UniqueID: 48 + Properties: + Dimensions: + serializedVersion: 2 + x: 476 + y: 731 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 48 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 48 + m_SlotName: Cross + m_TargetModuleID: 49 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 48 + m_SlotName: Volume + m_TargetModuleID: 50 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 0.4924 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 1 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 0 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 0.99722224 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.26255876 + value: 1.0012116 + inSlope: 0.004172325 + outSlope: 0.004172325 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.43376282 + value: 0.996704 + inSlope: -0.0023841858 + outSlope: -0.0023841858 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5909514 + value: 1.0014186 + inSlope: 0.008940697 + outSlope: 0.008940697 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.7923702 + value: 0.995603 + inSlope: -0.007748604 + outSlope: -0.007748604 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/12_Train.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/12_Train.unity.meta new file mode 100644 index 00000000..905035aa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/12_Train.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f2d7c4a4f6ce11245967f1921eac4572 +timeCreated: 1438609635 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/13_TrainMultiTrackDrifting.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/13_TrainMultiTrackDrifting.unity new file mode 100644 index 00000000..3fb656f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/13_TrainMultiTrackDrifting.unity @@ -0,0 +1,18287 @@ +%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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 112000000, guid: e72a8e02528d4f34f82687c69a95581d, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &96157575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 96157576} + - component: {fileID: 96157577} + - component: {fileID: 96157578} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &96157576 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96157575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -92, y: 0, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &96157577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96157575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -23} + m_HandleOut: {x: 0, y: 0, z: 33.093} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 0} +--- !u!114 &96157578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96157575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &103352575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 103352576} + - component: {fileID: 103352577} + - component: {fileID: 103352578} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &103352576 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103352575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.8, y: 0.32, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &103352577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103352575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &103352578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 103352575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &132875097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 132875099} + - component: {fileID: 132875098} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &132875098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132875097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 9.739525, y: -0, z: 0.38699648} + m_HandleOut: {x: -14.15717, y: 0, z: -0.56253} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &132875099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132875097} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.793, y: 0, z: -106.218} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &139387019 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 139387020} + - component: {fileID: 139387021} + - component: {fileID: 139387022} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &139387020 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139387019} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -92, y: 0, z: -36} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &139387021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139387019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -33.093} + m_HandleOut: {x: 0, y: 0, z: 16} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &139387022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139387019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &147395210 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 147395211} + - component: {fileID: 147395213} + - component: {fileID: 147395212} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &147395211 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147395210} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &147395212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147395210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &147395213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 147395210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &222532715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 150254, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 222532716} + - component: {fileID: 222532717} + m_Layer: 0 + m_Name: Volume Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &222532716 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 491410, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222532715} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &222532717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11413480, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222532715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 776 + y: 12 + width: 250 + height: 231 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} +--- !u!1 &241214472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 241214473} + - component: {fileID: 241214474} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &241214473 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &241214474 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 1 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &279440824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 279440825} + - component: {fileID: 279440826} + m_Layer: 0 + m_Name: RailtrackPathOuter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &279440825 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 279440824} + 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_Children: + - {fileID: 1000289341} + - {fileID: 715485936} + - {fileID: 1924399041} + - {fileID: 1292614001} + - {fileID: 1029514110} + - {fileID: 1151888798} + - {fileID: 1048681238} + - {fileID: 860126537} + - {fileID: 1149984504} + - {fileID: 659881104} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &279440826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 279440824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1000289340} + - {fileID: 715485937} + - {fileID: 1924399042} + - {fileID: 1292614002} + - {fileID: 1029514109} + - {fileID: 1151888799} + - {fileID: 1048681237} + - {fileID: 860126538} + - {fileID: 1149984505} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &300013538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 300013539} + - component: {fileID: 300013540} + - component: {fileID: 300013541} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &300013539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300013538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.84, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &300013540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300013538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &300013541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300013538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &314435438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 182576, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 314435439} + - component: {fileID: 314435440} + m_Layer: 0 + m_Name: Create Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &314435439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 489540, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314435438} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &314435440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11468422, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314435438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1143 + y: 11 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &315549759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 315549760} + - component: {fileID: 315549762} + - component: {fileID: 315549761} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &315549760 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315549759} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &315549761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315549759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &315549762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 315549759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &328436143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 328436144} + - component: {fileID: 328436145} + - component: {fileID: 328436146} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &328436144 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328436143} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &328436145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328436143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &328436146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328436143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &376336371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 376336372} + - component: {fileID: 376336373} + - component: {fileID: 376336374} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &376336372 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376336371} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.76, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &376336373 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376336371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &376336374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376336371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 1 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &377235780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 377235781} + - component: {fileID: 377235782} + - component: {fileID: 377235783} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &377235781 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377235780} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &377235782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377235780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &377235783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377235780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 1 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &382199823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 382199824} + - component: {fileID: 382199825} + - component: {fileID: 382199826} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &382199824 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382199823} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &382199825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382199823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &382199826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382199823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.5 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1001 &427340841 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1999590541} + m_Modifications: + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalPosition.y + value: 0.286 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} +--- !u!1 &433006906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433006907} + - component: {fileID: 433006908} + m_Layer: 0 + m_Name: WheelLeading + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433006907 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433006906} + m_LocalRotation: {x: -0, y: 0.07389188, z: -0, w: 0.9972663} + m_LocalPosition: {x: -95.373825, y: 0, z: 4.970968} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1761493515} + m_Father: {fileID: 1176254939} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &433006908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433006906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 9 + m_MoveMode: 1 + m_Speed: 20 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 279440826} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &437274899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 119682, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 437274902} + - component: {fileID: 437274901} + - component: {fileID: 437274900} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &437274900 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2373902, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437274899} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, 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 +--- !u!33 &437274901 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3356568, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437274899} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!4 &437274902 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 407968, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437274899} + m_LocalRotation: {x: 0.00000007062884, y: 0.7071069, z: 0.7071067, w: 0.00000002235174} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: -1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &438258916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 438258917} + - component: {fileID: 438258919} + - component: {fileID: 438258918} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &438258917 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438258916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &438258918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438258916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &438258919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438258916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &440157675 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 157056, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 440157676} + - component: {fileID: 440157678} + - component: {fileID: 440157677} + m_Layer: 0 + m_Name: rail_car_coupling + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &440157676 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 472340, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440157675} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 0.12400091, z: -7.766999} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &440157677 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2331026, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440157675} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 258cd2fde7ecd5940ba82055ab0a1993, 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 +--- !u!33 &440157678 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3382752, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 440157675} + m_Mesh: {fileID: 4300000, guid: 352a27f768da8184286150473a8e96c3, type: 3} +--- !u!1 &461207586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 461207587} + - component: {fileID: 461207588} + - component: {fileID: 461207589} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &461207587 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461207586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.5, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &461207588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461207586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &461207589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461207586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &464464357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 464464358} + - component: {fileID: 464464359} + - component: {fileID: 464464360} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &464464358 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464464357} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.84, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &464464359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464464357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &464464360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 464464357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.5 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &498311068 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 498311069} + - component: {fileID: 498311071} + - component: {fileID: 498311070} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &498311069 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498311068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &498311070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498311068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &498311071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498311068} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &530200590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 102088, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 530200591} + - component: {fileID: 530200598} + - component: {fileID: 530200597} + - component: {fileID: 530200596} + m_Layer: 0 + m_Name: RailtrackGeneratorSimple + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &530200591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 472056, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + 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_Children: + - {fileID: 1180360421} + - {fileID: 757260271} + - {fileID: 2067056567} + - {fileID: 222532716} + - {fileID: 314435439} + m_Father: {fileID: 2031863536} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &530200596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494926, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11470534, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &530200598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11444054, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530200590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1180360422} + - {fileID: 757260272} + - {fileID: 2067056568} + - {fileID: 222532717} + - {fileID: 314435440} + m_LastModuleID: 47 +--- !u!1 &548315890 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 166630, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 548315891} + m_Layer: 0 + m_Name: Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &548315891 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 442410, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 548315890} + m_LocalRotation: {x: -0, y: -0.17147902, z: -0, w: 0.98518777} + m_LocalPosition: {x: -93.68691, y: 1.4, z: 0.27192092} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1371292512} + - {fileID: 1231410785} + - {fileID: 437274902} + - {fileID: 1236504766} + - {fileID: 571584659} + - {fileID: 440157676} + - {fileID: 1710985140} + - {fileID: 2033824380} + - {fileID: 584087470} + m_Father: {fileID: 1176254939} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &571584658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 132526, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 571584659} + - component: {fileID: 571584661} + - component: {fileID: 571584660} + m_Layer: 0 + m_Name: rail_car_coupling + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &571584659 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 495074, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571584658} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000010430813} + m_LocalPosition: {x: 0, y: 0.124, z: 7.767} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &571584660 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2339260, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571584658} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 258cd2fde7ecd5940ba82055ab0a1993, 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 +--- !u!33 &571584661 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3301654, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 571584658} + m_Mesh: {fileID: 4300000, guid: 352a27f768da8184286150473a8e96c3, type: 3} +--- !u!1 &582375135 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 582375136} + - component: {fileID: 582375137} + - component: {fileID: 582375138} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &582375136 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582375135} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 76, y: 0, z: 12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &582375137 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582375135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: 24.268} + m_HandleOut: {x: 0, y: 0, z: -9.5} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &582375138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582375135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &584087469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 584087470} + m_Layer: 0 + m_Name: LookTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &584087470 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 584087469} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.17, y: 2.58, z: -1.72} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &649012888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 649012889} + - component: {fileID: 649012890} + - component: {fileID: 649012891} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &649012889 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649012888} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &649012890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649012888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &649012891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649012888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &659881103 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 102088, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 659881104} + - component: {fileID: 659881107} + - component: {fileID: 659881106} + - component: {fileID: 659881105} + m_Layer: 0 + m_Name: RailtrackGeneratorSimple + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &659881104 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 472056, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 659881103} + 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_Children: + - {fileID: 747075898} + - {fileID: 2141123370} + - {fileID: 1254545868} + - {fileID: 1255817920} + - {fileID: 1751981603} + m_Father: {fileID: 279440825} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &659881105 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494926, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 659881103} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &659881106 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11470534, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 659881103} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &659881107 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11444054, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 659881103} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 747075899} + - {fileID: 2141123371} + - {fileID: 1254545869} + - {fileID: 1255817921} + - {fileID: 1751981604} + m_LastModuleID: 47 +--- !u!1 &715485935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 715485936} + - component: {fileID: 715485937} + - component: {fileID: 715485938} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &715485936 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715485935} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -32, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &715485937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715485935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -35.299, y: -0, z: 0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &715485938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 715485935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &735872751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 735872752} + - component: {fileID: 735872753} + - component: {fileID: 735872754} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &735872752 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735872751} + 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_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &735872753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735872751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &735872754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735872751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.75 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &744915575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 744915578} + - component: {fileID: 744915577} + - component: {fileID: 744915576} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &744915576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744915575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &744915577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744915575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &744915578 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744915575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &747008905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 747008909} + - component: {fileID: 747008908} + - component: {fileID: 747008907} + - component: {fileID: 747008906} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &747008906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &747008907 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &747008908 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + m_CullTransparentMesh: 0 +--- !u!224 &747008909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747008905} + 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_Children: + - {fileID: 1412585785} + m_Father: {fileID: 1168797904} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -81.6} + m_SizeDelta: {x: 240, y: 163.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &747075897 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 153440, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 747075898} + - component: {fileID: 747075899} + m_Layer: 0 + m_Name: Input Spline Path (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &747075898 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 424020, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747075897} + 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_Children: [] + m_Father: {fileID: 659881104} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &747075899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11401396, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747075897} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 14 + y: 10 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 279440826} +--- !u!1 &757260270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 157240, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 757260271} + - component: {fileID: 757260272} + m_Layer: 0 + m_Name: Input Spline Shape (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &757260271 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 410440, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757260270} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &757260272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11478874, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757260270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 207 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1435569009} +--- !u!1 &807668710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 807668711} + - component: {fileID: 807668712} + - component: {fileID: 807668713} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &807668711 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807668710} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 76, y: 0, z: -56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &807668712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807668710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: 16} + m_HandleOut: {x: 0, y: 0, z: -24.268} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &807668713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807668710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &823809035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 823809036} + - component: {fileID: 823809037} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &823809036 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823809035} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 16, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1225646784} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &823809037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823809035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: -0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &853602678 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 853602679} + - component: {fileID: 853602680} + - component: {fileID: 853602681} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &853602679 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853602678} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &853602680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853602678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &853602681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853602678} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &858902468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 858902469} + - component: {fileID: 858902470} + - component: {fileID: 858902471} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &858902469 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858902468} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.5, y: -0.25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &858902470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858902468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &858902471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858902468} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &860126536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 860126537} + - component: {fileID: 860126538} + - component: {fileID: 860126539} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &860126537 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860126536} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -28, y: 0, z: -104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &860126538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860126536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 16, y: -0, z: 0} + m_HandleOut: {x: -35.299, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &860126539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 860126536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &891611310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 891611311} + - component: {fileID: 891611312} + - component: {fileID: 891611313} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &891611311 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891611310} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.84, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &891611312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891611310} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &891611313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891611310} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &970856668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 970856669} + - component: {fileID: 970856670} + - component: {fileID: 970856671} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &970856669 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970856668} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.76, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &970856670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970856668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &970856671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970856668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 1 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!1 &984524881 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 984524882} + - component: {fileID: 984524884} + - component: {fileID: 984524883} + m_Layer: 0 + m_Name: emitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &984524882 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984524881} + m_LocalRotation: {x: -0.44032848, y: -0.014660671, z: -0.009468422, w: 0.89766717} + m_LocalPosition: {x: -0.74799913, y: 1.1860228, z: -0.00000000762671} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1761493515} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!199 &984524883 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984524881} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b98c629cc06985046861231728d21687, type: 2} + - {fileID: 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_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 5 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &984524884 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 984524881} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 2 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 9 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.3 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 4 + angle: 15 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 0.1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 100 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 0.9411765, b: 0.45490196, a: 1} + key2: {r: 1, g: 1, b: 1, a: 1} + 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: 6168 + ctime2: 65535 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 1928 + atime2: 52235 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 3 + m_NumAlphaKeys: 4 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 1 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 1742243841} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!1 &1000289339 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1000289341} + - component: {fileID: 1000289340} + - component: {fileID: 1000289343} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1000289340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000289339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -23} + m_HandleOut: {x: 0, y: 0, z: 35.299} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1000289341 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000289339} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -96, y: 0, z: -4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1000289343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000289339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1005090746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1005090747} + - component: {fileID: 1005090749} + - component: {fileID: 1005090748} + m_Layer: 0 + m_Name: emitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1005090747 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005090746} + m_LocalRotation: {x: -0.51569456, y: 0.051099125, z: -0.07470188, w: 0.85197866} + m_LocalPosition: {x: 0.8123961, y: 1.2282469, z: -0.0000000025931968} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1979368593} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!199 &1005090748 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005090746} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b98c629cc06985046861231728d21687, type: 2} + - {fileID: 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_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 5 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &1005090749 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005090746} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 2 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 9 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.3 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 4 + angle: 15 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 0.1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 100 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 0.9411765, b: 0.45490196, a: 1} + key2: {r: 1, g: 1, b: 1, a: 1} + 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: 6168 + ctime2: 65535 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 1928 + atime2: 52235 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 3 + m_NumAlphaKeys: 4 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 1 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 2054340168} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!1 &1029514107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1029514110} + - component: {fileID: 1029514109} + - component: {fileID: 1029514108} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1029514108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1029514107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1029514109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1029514107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: 16} + m_HandleOut: {x: 0, y: 0, z: -26.474} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1029514110 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1029514107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 80, y: 0, z: -56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1036311916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1036311917} + - component: {fileID: 1036311918} + - component: {fileID: 1036311919} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1036311917 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036311916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1036311918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036311916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1036311919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1036311916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0.39305732 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1048681236 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1048681238} + - component: {fileID: 1048681237} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1048681237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1048681236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 12.482527, y: -0, z: 0.08979673} + m_HandleOut: {x: -11.088804, y: 0, z: -0.07977057} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1048681238 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1048681236} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.2, y: 0, z: -100.363} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1107298965 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1107298968} + - component: {fileID: 1107298967} + - component: {fileID: 1107298966} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1107298966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107298965} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1107298967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107298965} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: -0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1107298968 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1107298965} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -16, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1225646784} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1149984503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1149984504} + - component: {fileID: 1149984505} + - component: {fileID: 1149984506} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1149984504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1149984503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -96, y: 0, z: -36} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1149984505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1149984503} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -35.299} + m_HandleOut: {x: 0, y: 0, z: 16} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1149984506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1149984503} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1151272599 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1151272604} + - component: {fileID: 1151272603} + - component: {fileID: 1151272601} + - component: {fileID: 1151272600} + - component: {fileID: 1151272605} + 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 &1151272600 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 +--- !u!124 &1151272601 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 +--- !u!20 &1151272603 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1151272604 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_LocalRotation: {x: 0.015794775, y: 0.9754542, z: -0.07457968, w: 0.2065855} + m_LocalPosition: {x: -110.73974, y: 10.61, z: 37.999542} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1151272605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151272599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 584087470} + MoveTo: {fileID: 1798748535} + RollTo: {fileID: 0} + ChaseTime: 1 +--- !u!1 &1151888797 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1151888798} + - component: {fileID: 1151888799} + - component: {fileID: 1151888800} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1151888798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151888797} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32, y: 0, z: -104} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1151888799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151888797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 26.474, y: -0, z: 0} + m_HandleOut: {x: -16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1151888800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151888797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1168797903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1168797904} + - component: {fileID: 1168797907} + - component: {fileID: 1168797906} + - component: {fileID: 1168797905} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1168797904 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 747008909} + m_Father: {fileID: 1491094075} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1168797905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1168797906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1168797907 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1168797903} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1176254938 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1176254939} + - component: {fileID: 1176254940} + m_Layer: 0 + m_Name: Train + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1176254939 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1176254938} + 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_Children: + - {fileID: 433006907} + - {fileID: 1999590541} + - {fileID: 548315891} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1176254940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1176254938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e4acfeadde244094e868d60561400891, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 20 + wheelSpacing: 9.72 + bodyOffset: {x: 0, y: 1.4, z: 0} + controllerWheelLeading: {fileID: 433006908} + controllerWheelTrailing: {fileID: 1999590540} + trainCar: {fileID: 548315891} +--- !u!1 &1180360420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 153440, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1180360421} + - component: {fileID: 1180360422} + m_Layer: 0 + m_Name: Input Spline Path (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1180360421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 424020, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1180360420} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1180360422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11401396, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1180360420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 14 + y: 10 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 2031863537} +--- !u!1 &1215189935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1215189938} + - component: {fileID: 1215189937} + - component: {fileID: 1215189936} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1215189936 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215189935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1215189937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215189935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1215189938 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1215189935} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1225646783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1225646784} + - component: {fileID: 1225646785} + m_Layer: 0 + m_Name: RailtrackShapeElevation + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1225646784 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225646783} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1107298968} + - {fileID: 823809036} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1225646785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225646783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1107298967} + - {fileID: 823809037} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1231410784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 130518, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1231410785} + - component: {fileID: 1231410787} + - component: {fileID: 1231410786} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1231410785 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 451932, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231410784} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: -1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1231410786 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2389648, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231410784} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, 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 +--- !u!33 &1231410787 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3339550, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1231410784} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!1 &1236504765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 187826, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1236504766} + - component: {fileID: 1236504768} + - component: {fileID: 1236504767} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1236504766 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 404740, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236504765} + m_LocalRotation: {x: 0.00000007062884, y: 0.7071069, z: 0.7071067, w: 0.00000002235174} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1236504767 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2364782, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236504765} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, 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 +--- !u!33 &1236504768 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3304060, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236504765} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!1 &1254545867 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 190894, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1254545868} + - component: {fileID: 1254545869} + m_Layer: 0 + m_Name: Shape Extrusion (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1254545868 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 486478, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254545867} + 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_Children: [] + m_Father: {fileID: 659881104} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1254545869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11408056, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1254545867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 386 + y: 10 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 60 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 82 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &1255817919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 150254, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1255817920} + - component: {fileID: 1255817921} + m_Layer: 0 + m_Name: Volume Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1255817920 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 491410, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1255817919} + 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_Children: [] + m_Father: {fileID: 659881104} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1255817921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11413480, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1255817919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 776 + y: 12 + width: 250 + height: 231 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} +--- !u!1 &1292614000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1292614001} + - component: {fileID: 1292614002} + - component: {fileID: 1292614003} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1292614001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292614000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 80, y: 0, z: 12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1292614002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292614000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: 26.474} + m_HandleOut: {x: 0, y: 0, z: -16} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1292614003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292614000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1371292511 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 190140, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1371292512} + - component: {fileID: 1371292514} + - component: {fileID: 1371292513} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1371292512 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 432216, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1371292511} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1371292513 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2367678, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1371292511} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, 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 +--- !u!33 &1371292514 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3317856, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1371292511} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!1 &1390099835 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1390099838} + - component: {fileID: 1390099837} + - component: {fileID: 1390099836} + - component: {fileID: 1390099839} + - component: {fileID: 1390099840} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1390099836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1390099837 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1390099838 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1390099839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1390099840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390099835} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1412585784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1412585785} + - component: {fileID: 1412585787} + - component: {fileID: 1412585786} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1412585785 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412585784} + 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_Children: [] + m_Father: {fileID: 747008909} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 16.5, y: -192.7} + m_SizeDelta: {x: -34, y: 177.6} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1412585786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412585784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Because come on, we had to. + + + This example combines use of NearestPoint + with SplineControllers and a custom component to move two wheel assemblies and + the train car body.' +--- !u!222 &1412585787 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1412585784} + m_CullTransparentMesh: 0 +--- !u!1 &1416451560 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1416451562} + - component: {fileID: 1416451561} + - component: {fileID: 1416451563} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1416451561 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416451560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -12.48, y: -0, z: -0} + m_HandleOut: {x: 12.48, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1416451562 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416451560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1416451563 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1416451560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1419464519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1419464520} + - component: {fileID: 1419464521} + - component: {fileID: 1419464522} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1419464520 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419464519} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.5, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1419464521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419464519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1419464522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419464519} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1435569007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435569008} + - component: {fileID: 1435569009} + m_Layer: 0 + m_Name: RailtrackShapeMain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1435569008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435569007} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -42.76, y: 0, z: 57.49} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 858902469} + - {fileID: 744915578} + - {fileID: 464464358} + - {fileID: 1506439644} + - {fileID: 1951881762} + - {fileID: 1984637577} + - {fileID: 376336372} + - {fileID: 735872752} + - {fileID: 970856669} + - {fileID: 1681444216} + - {fileID: 103352576} + - {fileID: 300013539} + - {fileID: 891611311} + - {fileID: 1036311917} + - {fileID: 1955931099} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1435569009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435569007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 858902470} + - {fileID: 744915577} + - {fileID: 464464359} + - {fileID: 1506439645} + - {fileID: 1951881763} + - {fileID: 1984637578} + - {fileID: 376336373} + - {fileID: 735872753} + - {fileID: 970856670} + - {fileID: 1681444217} + - {fileID: 103352577} + - {fileID: 300013540} + - {fileID: 891611312} + - {fileID: 1036311918} + - {fileID: 1955931100} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1439194254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1439194255} + - component: {fileID: 1439194256} + - component: {fileID: 1439194257} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1439194255 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439194254} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1439194256 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439194254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1439194257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1439194254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1470089471 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1470089472} + - component: {fileID: 1470089473} + - component: {fileID: 1470089474} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1470089472 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470089471} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1470089473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470089471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1470089474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1470089471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1491094074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1491094075} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1491094075 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1491094074} + 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_Children: + - {fileID: 1151272604} + - {fileID: 241214473} + - {fileID: 1645787245} + - {fileID: 1671600030} + - {fileID: 1168797904} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1506439643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1506439644} + - component: {fileID: 1506439645} + - component: {fileID: 1506439646} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1506439644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506439643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.84, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1506439645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506439643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1506439646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1506439643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1521427199 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1521427200} + - component: {fileID: 1521427201} + - component: {fileID: 1521427202} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1521427200 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521427199} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1521427201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521427199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1521427202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521427199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!1 &1542615717 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1542615718} + - component: {fileID: 1542615719} + - component: {fileID: 1542615720} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1542615718 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542615717} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32, y: 0, z: -100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1542615719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542615717} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 24.268, y: -0, z: 0} + m_HandleOut: {x: -16, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1542615720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542615717} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1583815250 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1583815251} + - component: {fileID: 1583815252} + - component: {fileID: 1583815253} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1583815251 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1583815250} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -28, y: 0, z: -100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1583815252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1583815250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 16, y: -0, z: 0} + m_HandleOut: {x: -33.093, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1583815253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1583815250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1645787244 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1645787245} + - component: {fileID: 1645787248} + - component: {fileID: 1645787247} + - component: {fileID: 1645787246} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1645787245 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + 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_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1645787246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1645787247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1645787248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1645787244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1671600029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1671600030} + - component: {fileID: 1671600033} + - component: {fileID: 1671600032} + - component: {fileID: 1671600031} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1671600030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10.2, y: -0.36108923, z: -16.1} + m_LocalScale: {x: 34.298588, y: 34.29859, z: 34.29859} + m_Children: [] + m_Father: {fileID: 1491094075} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1671600031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3fbb64eeb951ac14381179a841926902, 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: 1 + 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 +--- !u!64 &1671600032 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1671600033 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1681444215 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1681444216} + - component: {fileID: 1681444217} + - component: {fileID: 1681444218} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1681444216 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1681444215} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.76, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1681444217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1681444215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1681444218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1681444215} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1710985139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 198424, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1710985140} + - component: {fileID: 1710985143} + - component: {fileID: 1710985141} + m_Layer: 0 + m_Name: vehicle_logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1710985140 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 451214, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1710985139} + m_LocalRotation: {x: 0, y: -0.707107, z: 0, w: 0.70710665} + m_LocalPosition: {x: 1.5189998, y: 0.721001, z: 0.07300156} + m_LocalScale: {x: 0.42813098, y: 0.42813098, z: 0.42813098} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1710985141 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2344574, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1710985139} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: cb28faac4cf326048ab74f457dfe8e0e, 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: 1 + 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 +--- !u!33 &1710985143 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3348712, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1710985139} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1723107200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1723107201} + - component: {fileID: 1723107202} + - component: {fileID: 1723107203} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1723107201 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723107200} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32, y: 0, z: 56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1723107202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723107200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: 0} + m_HandleOut: {x: 24.268, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1723107203 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723107200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1742243840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1742243841} + m_Layer: 0 + m_Name: emitter_plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1742243841 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742243840} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1761493515} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1751981602 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 182576, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1751981603} + - component: {fileID: 1751981604} + m_Layer: 0 + m_Name: Create Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1751981603 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 489540, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751981602} + 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_Children: [] + m_Father: {fileID: 659881104} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1751981604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11468422, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751981602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1143 + y: 11 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!4 &1761493515 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, + type: 3} + m_PrefabInstance: {fileID: 1846253036} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1798748534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1798748535} + m_Layer: 0 + m_Name: ChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1798748535 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1798748534} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -18.8, y: 10.61, z: 42.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1999590541} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1844901483 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1844901485} + - component: {fileID: 1844901484} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1844901484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844901483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.36548403, y: -0, z: 7.767302} + m_HandleOut: {x: 0.2689081, y: 0, z: -5.714862} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1844901485 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844901483} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 74.94, y: 0, z: -7.91} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1846253036 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 433006907} + m_Modifications: + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalPosition.y + value: .286000013 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.w + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.x + value: -.707106829 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} +--- !u!1 &1852452133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1852452134} + - component: {fileID: 1852452135} + - component: {fileID: 1852452136} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1852452134 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852452133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2134829440} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1852452135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852452133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1852452136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1852452133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &1890378309 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1924399040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1924399041} + - component: {fileID: 1924399042} + - component: {fileID: 1924399043} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1924399041 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1924399040} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 279440825} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1924399042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1924399040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2, y: -0, z: 0} + m_HandleOut: {x: 26.474, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1924399043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1924399040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1949530766 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1949530768} + - component: {fileID: 1949530767} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1949530767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1949530766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.04069935, y: -0, z: 5.7210402} + m_HandleOut: {x: 0.04167583, y: 0, z: -5.858302} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1949530768 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1949530766} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 77.092, y: 0, z: -22.421} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1950700214 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1950700217} + - component: {fileID: 1950700216} + - component: {fileID: 1950700215} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1950700215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950700214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1950700216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950700214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -33.093, y: -0, z: 0} + m_HandleOut: {x: 2, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1950700217 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950700214} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -32, y: 0, z: 56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1951881761 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1951881762} + - component: {fileID: 1951881763} + - component: {fileID: 1951881764} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1951881762 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951881761} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.8, y: 0.32, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1951881763 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951881761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1951881764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1951881761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1955931098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1955931099} + - component: {fileID: 1955931100} + - component: {fileID: 1955931101} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1955931099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955931098} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.5, y: -0.25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1955931100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955931098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1955931101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955931098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1959062533 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1959062535} + - component: {fileID: 1959062534} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1959062534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959062533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.24856822, y: -0, z: 5.853174} + m_HandleOut: {x: -0.3096276, y: 0, z: -7.2909737} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1959062535 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959062533} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 75.1, y: 0, z: -37.31} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2031863536} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &1979368593 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 400000, guid: ab277e3cf5b9d96439028ce23217a409, + type: 3} + m_PrefabInstance: {fileID: 427340841} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1984637576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1984637577} + - component: {fileID: 1984637578} + - component: {fileID: 1984637579} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1984637577 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984637576} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.76, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1435569008} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1984637578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984637576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1984637579 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984637576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1999590539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1999590541} + - component: {fileID: 1999590540} + m_Layer: 0 + m_Name: WheelTrailing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1999590540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1999590539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 1 + m_PositionMode: 1 + m_Position: 557.92145 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 2031863537} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1999590541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1999590539} + m_LocalRotation: {x: -0, y: 0.0007104276, z: -0, w: 0.99999976} + m_LocalPosition: {x: -92, y: 0, z: -4.427126} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1979368593} + - {fileID: 1798748535} + m_Father: {fileID: 1176254939} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2031863535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2031863536} + - component: {fileID: 2031863537} + m_Layer: 0 + m_Name: RailtrackPathInner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2031863536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2031863535} + 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_Children: + - {fileID: 96157576} + - {fileID: 1950700217} + - {fileID: 1416451562} + - {fileID: 1723107201} + - {fileID: 582375136} + - {fileID: 1844901485} + - {fileID: 1949530768} + - {fileID: 1959062535} + - {fileID: 807668711} + - {fileID: 1542615718} + - {fileID: 132875099} + - {fileID: 1583815251} + - {fileID: 139387020} + - {fileID: 530200591} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2031863537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2031863535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 96157577} + - {fileID: 1950700216} + - {fileID: 1416451561} + - {fileID: 1723107202} + - {fileID: 582375137} + - {fileID: 1844901484} + - {fileID: 1949530767} + - {fileID: 1959062534} + - {fileID: 807668712} + - {fileID: 1542615719} + - {fileID: 132875098} + - {fileID: 1583815252} + - {fileID: 139387021} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2033824379 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 168738, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2033824380} + - component: {fileID: 2033824383} + - component: {fileID: 2033824381} + m_Layer: 0 + m_Name: vehicle_logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2033824380 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 457936, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2033824379} + m_LocalRotation: {x: 0, y: 0.70710635, z: 0, w: 0.7071073} + m_LocalPosition: {x: -1.52, y: 0.72500074, z: -0.06100452} + m_LocalScale: {x: 0.42813084, y: 0.42813098, z: 0.42813087} + m_Children: [] + m_Father: {fileID: 548315891} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2033824381 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 2322458, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2033824379} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: cb28faac4cf326048ab74f457dfe8e0e, 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: 1 + 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 +--- !u!33 &2033824383 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 3325318, guid: 39089712dba12024695770a9a81f5205, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2033824379} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2054340167 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2054340168} + m_Layer: 0 + m_Name: emitter_plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2054340168 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2054340167} + m_LocalRotation: {x: 0.70538247, y: 0.049352393, z: 0.049352378, w: 0.70538235} + m_LocalPosition: {x: 0.794, y: 1.158, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1979368593} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2067056566 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 190894, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2067056567} + - component: {fileID: 2067056568} + m_Layer: 0 + m_Name: Shape Extrusion (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2067056567 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 486478, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067056566} + 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_Children: [] + m_Father: {fileID: 530200591} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2067056568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11408056, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067056566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 386 + y: 10 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 60 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 82 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &2134829439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2134829440} + - component: {fileID: 2134829441} + m_Layer: 0 + m_Name: RailtrackShapeBridge + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2134829440 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134829439} + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071067} + m_LocalPosition: {x: -9.47, y: 9, z: 34.93} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 649012889} + - {fileID: 315549760} + - {fileID: 438258917} + - {fileID: 498311069} + - {fileID: 328436144} + - {fileID: 1215189938} + - {fileID: 1852452134} + - {fileID: 382199824} + - {fileID: 377235781} + - {fileID: 147395211} + - {fileID: 461207587} + - {fileID: 1419464520} + - {fileID: 1439194255} + - {fileID: 1470089472} + - {fileID: 853602679} + - {fileID: 1521427200} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2134829441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2134829439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 649012890} + - {fileID: 315549762} + - {fileID: 438258919} + - {fileID: 498311071} + - {fileID: 328436145} + - {fileID: 1215189937} + - {fileID: 1852452135} + - {fileID: 382199825} + - {fileID: 377235782} + - {fileID: 147395213} + - {fileID: 461207588} + - {fileID: 1419464521} + - {fileID: 1439194256} + - {fileID: 1470089473} + - {fileID: 853602680} + - {fileID: 1521427201} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 59 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2141123369 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 157240, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2141123370} + - component: {fileID: 2141123371} + m_Layer: 0 + m_Name: Input Spline Shape (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2141123370 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 410440, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141123369} + 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_Children: [] + m_Father: {fileID: 659881104} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2141123371 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11478874, guid: dc8fac1bdfdd8a8449262e25b5ed641e, + type: 3} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141123369} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 207 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1435569009} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/13_TrainMultiTrackDrifting.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/13_TrainMultiTrackDrifting.unity.meta new file mode 100644 index 00000000..cb28e08f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/13_TrainMultiTrackDrifting.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7540e462e613248419dc494e8bb46554 +timeCreated: 1442657153 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/20_CGPaths.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/20_CGPaths.unity new file mode 100644 index 00000000..de458b3d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/20_CGPaths.unity @@ -0,0 +1,3550 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.057, g: 0.0625, b: 0.0665, a: 0.5} + m_AmbientGroundColor: {r: 0.0235, g: 0.0215, b: 0.0175, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &59572089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 59572090} + - component: {fileID: 59572091} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &59572090 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 59572089} + m_LocalRotation: {x: 0, y: -0.007469202, z: 0, w: 0.9999721} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1325580737} + - {fileID: 1840325755} + - {fileID: 585920631} + m_Father: {fileID: 539816353} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.003348589, y: -67.2} + m_SizeDelta: {x: 220.02, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &59572091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 59572089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 760832042} + m_FillRect: {fileID: 911202135} + m_HandleRect: {fileID: 760832041} + m_Direction: 0 + m_MinValue: -1 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 71916253} + m_MethodName: set_Mix + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &71916251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 71916252} + - component: {fileID: 71916253} + m_Layer: 0 + m_Name: Mix Paths + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &71916252 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71916251} + 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_Children: [] + m_Father: {fileID: 1046110922} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &71916253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71916251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b25376c289be4147bed2f4e7a7ec677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1192673798 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 327 + y: 45 + width: 200 + height: 141 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path A + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Path B + m_TargetModuleID: 3 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 5 + m_TargetSlotName: Path + m_Mix: -0.31 +--- !u!1 &123535663 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 123535665} + - component: {fileID: 123535664} + - component: {fileID: 123535666} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &123535664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123535663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0.00000029802322, z: 4.9999995} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &123535665 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123535663} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10, y: 0, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &123535666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123535663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &158560797 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 158560798} + - component: {fileID: 158560800} + - component: {fileID: 158560799} + m_Layer: 0 + m_Name: Create Path Line Renderer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &158560798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 158560797} + 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_Children: [] + m_Father: {fileID: 1046110922} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &158560799 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 158560797} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9d633bd8737c7424d9b669d9741f499b, 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_Positions: + - {x: 0, y: 0, z: 10} + - {x: 0.45110905, y: 0, z: 9.99304} + - {x: 0.90289927, y: 0, z: 9.975044} + - {x: 1.3544674, y: 0, z: 9.945992} + - {x: 1.804258, y: 0, z: 9.905888} + - {x: 2.2515, y: 0, z: 9.854754} + - {x: 2.697737, y: 0, z: 9.791944} + - {x: 3.140579, y: 0, z: 9.7160845} + - {x: 3.579808, y: 0, z: 9.629519} + - {x: 4.0135183, y: 0, z: 9.53239} + - {x: 4.4427633, y: 1.6457016e-11, z: 9.424854} + - {x: 4.8721504, y: 5.6825994e-10, z: 9.306947} + - {x: 5.2892756, y: 0.0000000019022872, z: 9.177093} + - {x: 5.7047176, y: 0.0000000041923256, z: 9.034586} + - {x: 6.113499, y: 0.000000007527271, z: 8.879651} + - {x: 6.512088, y: 0.000000011959211, z: 8.710396} + - {x: 6.9047294, y: 0.000000017762517, z: 8.52267} + - {x: 7.288994, y: 0.000000025079004, z: 8.308421} + - {x: 7.654192, y: 0.0000000335278, z: 8.051467} + - {x: 7.978438, y: 0.00000004108936, z: 7.7395678} + - {x: 8.247396, y: 0.00000004516411, z: 7.382565} + - {x: 8.4713745, y: 0.00000004536293, z: 7.003022} + - {x: 8.665955, y: 0.00000004265098, z: 6.6133537} + - {x: 8.840686, y: 0.00000003780725, z: 6.2151737} + - {x: 8.997857, y: 0.000000031188847, z: 5.8048286} + - {x: 9.141871, y: 0.000000023509632, z: 5.3942046} + - {x: 9.274414, y: 0.000000014656926, z: 4.9752975} + - {x: 9.396188, y: 0.0000000048993383, z: 4.551035} + - {x: 9.507608, y: 0, z: 4.1178594} + - {x: 9.608117, y: 0, z: 3.6886575} + - {x: 9.695831, y: 0, z: 3.2502797} + - {x: 9.772818, y: 0, z: 2.8084786} + - {x: 9.838965, y: 0, z: 2.3633757} + - {x: 9.894183, y: 0, z: 1.9153417} + - {x: 9.938402, y: 0, z: 1.4678626} + - {x: 9.970253, y: 0, z: 1.0173526} + - {x: 9.9894285, y: 0, z: 0.56508344} + - {x: 9.997581, y: 0, z: 0.11249992} + - {x: 9.99473, y: 0, z: -0.34035036} + - {x: 9.980868, y: 0, z: -0.79223216} + - {x: 9.955961, y: 0, z: -1.2431045} + - {x: 9.917937, y: 0, z: -1.6939498} + - {x: 9.86797, y: 0, z: -2.1421309} + - {x: 9.807036, y: 0, z: -2.5868886} + - {x: 9.73522, y: 0, z: -3.0281634} + - {x: 9.652627, y: 0, z: -3.4675732} + - {x: 9.559382, y: 0, z: -3.9066846} + - {x: 9.453096, y: 0, z: -4.339782} + - {x: 9.336348, y: -0.000000010002911, z: -4.7668495} + - {x: 9.209113, y: -0.00000001898543, z: -5.1817946} + - {x: 9.070713, y: -0.000000027604841, z: -5.6034026} + - {x: 8.920275, y: -0.000000034706186, z: -6.0118394} + - {x: 8.75558, y: -0.000000040377206, z: -6.413173} + - {x: 8.571255, y: -0.000000044319588, z: -6.8105426} + - {x: 8.363148, y: -0.000000045692374, z: -7.196421} + - {x: 8.118998, y: -0.000000043647294, z: -7.5657134} + - {x: 7.822045, y: -0.00000003760634, z: -7.9028945} + - {x: 7.4756026, y: -0.000000029307468, z: -8.186159} + - {x: 7.1008253, y: -0.000000021359114, z: -8.419816} + - {x: 6.7116933, y: -0.000000014776638, z: -8.619567} + - {x: 6.312764, y: -0.000000009582333, z: -8.797528} + - {x: 5.9048204, y: -0.000000005637876, z: -8.959214} + - {x: 5.498493, y: -0.000000002943583, z: -9.107375} + - {x: 5.078704, y: -0.0000000011145438, z: -9.243948} + - {x: 4.658686, y: -1.9550184e-10, z: -9.367869} + - {x: 4.229901, y: 0, z: -9.480397} + - {x: 3.794061, y: 0, z: -9.582573} + - {x: 3.3583853, y: 0, z: -9.674257} + - {x: 2.9175327, y: 0, z: -9.755295} + - {x: 2.472929, y: 0, z: -9.825543} + - {x: 2.0274894, y: 0, z: -9.88223} + - {x: 1.5795609, y: 0, z: -9.927611} + - {x: 1.1289635, y: 0, z: -9.961952} + - {x: 0.6771952, y: 0, z: -9.985245} + - {x: 0.225406, y: 0, z: -9.9975} + - {x: -0.22829321, y: 0, z: -9.998337} + - {x: -0.67991656, y: 0, z: -9.985652} + - {x: -1.131605, y: 0, z: -9.961929} + - {x: -1.5821303, y: 0, z: -9.927158} + - {x: -2.0300322, y: 0, z: -9.881336} + - {x: -2.4755127, y: 0, z: -9.824483} + - {x: -2.9205112, y: 0, z: -9.755579} + - {x: -3.361235, y: 0, z: -9.6741085} + - {x: -3.7967, y: 0, z: -9.582006} + - {x: -4.232362, y: 0, z: -9.479428} + - {x: -4.6610165, y: -1.988963e-10, z: -9.366516} + - {x: -5.0811777, y: -0.0000000011223056, z: -9.243124} + - {x: -5.5013814, y: -0.0000000029576142, z: -9.1071205} + - {x: -5.9075694, y: -0.0000000056595284, z: -8.958551} + - {x: -6.315143, y: -0.0000000096086294, z: -8.796469} + - {x: -6.713833, y: -0.0000000148121515, z: -8.618102} + - {x: -7.1026654, y: -0.000000021404237, z: -8.41792} + - {x: -7.478199, y: -0.000000029358876, z: -8.185043} + - {x: -7.8244557, y: -0.00000003765291, z: -7.901425} + - {x: -8.1208, y: -0.000000043671022, z: -7.563723} + - {x: -8.36441, y: -0.00000004569335, z: -7.1940503} + - {x: -8.572035, y: -0.000000044303487, z: -6.807907} + - {x: -8.755909, y: -0.000000040349292, z: -6.4103355} + - {x: -8.921962, y: -0.000000034664517, z: -6.0098286} + - {x: -9.072029, y: -0.000000027557991, z: -5.6011906} + - {x: -9.210048, y: -0.000000018935008, z: -5.1794043} + - {x: -9.336886, y: -0.000000009943254, z: -4.7641764} + - {x: -9.453225, y: 0, z: -4.337231} + - {x: -9.559274, y: 0, z: -3.9036753} + - {x: -9.653939, y: 0, z: -3.4652412} + - {x: -9.736126, y: 0, z: -3.0254686} + - {x: -9.807523, y: 0, z: -2.5840697} + - {x: -9.868027, y: 0, z: -2.1392064} + - {x: -9.917552, y: 0, z: -1.690977} + - {x: -9.956029, y: 0, z: -1.2403451} + - {x: -9.98169, y: 0, z: -0.789672} + - {x: -9.995115, y: 0, z: -0.33776808} + - {x: -9.997535, y: 0, z: 0.11536402} + - {x: -9.988947, y: 0, z: 0.5678639} + - {x: -9.969335, y: 0, z: 1.0200089} + - {x: -9.938672, y: 0, z: 1.4706229} + - {x: -9.894517, y: 0, z: 1.9180762} + - {x: -9.838866, y: 0, z: 2.3660386} + - {x: -9.772293, y: 0, z: 2.8110394} + - {x: -9.694874, y: 0, z: 3.252751} + - {x: -9.606719, y: 0, z: 3.691034} + - {x: -9.507781, y: 0, z: 4.121042} + - {x: -9.39594, y: 0.0000000049637467, z: 4.5539694} + - {x: -9.273761, y: 0.000000014711782, z: 4.9779563} + - {x: -9.140829, y: 0.000000023562308, z: 5.3967094} + - {x: -8.996441, y: 0.00000003123019, z: 5.806977} + - {x: -8.838986, y: 0.000000037841794, z: 6.2171407} + - {x: -8.665486, y: 0.000000042675513, z: 6.616286} + - {x: -8.47044, y: 0.000000045372094, z: 7.005724} + - {x: -8.245944, y: 0.00000004515128, z: 7.384928} + - {x: -7.9764, y: 0.000000041051667, z: 7.7414417} + - {x: -7.651573, y: 0.000000033474397, z: 8.052735} + - {x: -7.28663, y: 0.00000002503383, z: 8.309652} + - {x: -6.902873, y: 0.000000017725542, z: 8.524451} + - {x: -6.509758, y: 0.000000011925523, z: 8.711801} + - {x: -6.1109614, y: 0.000000007503029, z: 8.880651} + - {x: -5.702033, y: 0.0000000041759995, z: 9.035168} + - {x: -5.286337, y: 0.0000000018906994, z: 9.1772375} + - {x: -4.869817, y: 5.6259497e-10, z: 9.308043} + - {x: -4.440386, y: 1.5468167e-11, z: 9.426111} + - {x: -3.9931471, y: 0, z: 9.533254} + - {x: -3.5594876, y: 0, z: 9.629973} + - {x: -3.128149, y: 0, z: 9.716115} + - {x: -2.6811926, y: 0, z: 9.791542} + - {x: -2.239267, y: 0, z: 9.856015} + - {x: -1.797956, y: 0, z: 9.906724} + - {x: -1.3465651, y: 0, z: 9.946396} + - {x: -0.90131736, y: 0, z: 9.975009} + - {x: -0.4514932, y: 0, z: 9.992562} + - {x: 0, y: 0, z: 10} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.2 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0.2 + 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: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + shadowBias: 0 + generateLightingData: 0 + m_UseWorldSpace: 0 + m_Loop: 0 +--- !u!114 &158560800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 158560797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 359139391bbb6514fb37f1b3fb94879c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1039117972 + m_UniqueID: 14 + Properties: + Dimensions: + serializedVersion: 2 + x: 932 + y: 113 + width: 250 + height: 170 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 14 + m_SlotName: Path + m_TargetModuleID: 5 + m_TargetSlotName: Path + OutputLinks: [] +--- !u!1001 &228063378 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 240339606} + m_Modifications: + - target: {fileID: 181814, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!1 &240339604 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 240339606} + - component: {fileID: 240339605} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &240339605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240339604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8c51951f66b4a4099916a8055d980a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 1 + m_PositionMode: 0 + m_Position: 0.12 + m_MoveMode: 1 + m_Speed: 15 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Path: + m_Module: {fileID: 242250003} + m_SlotName: Path +--- !u!4 &240339606 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240339604} + m_LocalRotation: {x: -0.30740416, y: 0.8500894, z: -0.14541443, w: 0.40212613} + m_LocalPosition: {x: 7.6129475, y: 0.000000032573613, z: 8.080487} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: + - {fileID: 363470116} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &242250001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 242250002} + - component: {fileID: 242250003} + m_Layer: 0 + m_Name: Rasterize Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &242250002 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 242250001} + 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_Children: [] + m_Father: {fileID: 1046110922} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &242250003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 242250001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4dd47aa60d1b454886133ad3297289c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1192653743 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 585 + y: 59 + width: 250 + height: 179 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 112 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 5 + m_SlotName: Path + m_TargetModuleID: 14 + m_TargetSlotName: Path + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 0 + m_AngleTreshold: 10 + useBuggedRange: 0 +--- !u!1 &292451812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 292451813} + m_Layer: 0 + m_Name: Clone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &292451813 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 292451812} + 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_Children: [] + m_Father: {fileID: 1046110922} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &363470116 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 228063378} + m_PrefabAsset: {fileID: 0} +--- !u!1 &433407335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433407336} + - component: {fileID: 433407337} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433407336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433407335} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 721179344} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &433407337 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433407335} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &481697570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 481697575} + - component: {fileID: 481697574} + - component: {fileID: 481697572} + - component: {fileID: 481697571} + - component: {fileID: 481697576} + 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 &481697571 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 +--- !u!124 &481697572 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 +--- !u!20 &481697574 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &481697575 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_LocalRotation: {x: -0.26815858, y: -0.011560202, z: 0.0032180394, w: -0.96330005} + m_LocalPosition: {x: -1, y: 21.854347, z: -29} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &481697576 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 499101506} + LineColor: {r: 0.111645766, g: 0.43382353, b: 0.3271716, a: 1} + - Spline: {fileID: 1365329333} + LineColor: {r: 0.1119161, g: 0.29463965, b: 0.33088237, a: 1} +--- !u!1 &499101505 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 499101507} + - component: {fileID: 499101506} + m_Layer: 0 + m_Name: Rectangle_3_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &499101506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499101505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1356862635} + - {fileID: 1331080920} + - {fileID: 1075930189} + - {fileID: 572531797} + - {fileID: 855615029} + - {fileID: 1295474750} + - {fileID: 834937198} + - {fileID: 123535664} + - {fileID: 1872605314} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &499101507 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499101505} + 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_Children: + - {fileID: 1356862634} + - {fileID: 1331080921} + - {fileID: 1075930190} + - {fileID: 572531798} + - {fileID: 855615030} + - {fileID: 1295474751} + - {fileID: 834937199} + - {fileID: 123535665} + - {fileID: 1872605315} + m_Father: {fileID: 1070900638} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &539816352 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 539816353} + - component: {fileID: 539816356} + - component: {fileID: 539816355} + - component: {fileID: 539816354} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &539816353 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + 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_Children: + - {fileID: 1591979009} + - {fileID: 59572090} + m_Father: {fileID: 2036569540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -129.45} + m_SizeDelta: {x: 240, y: 258.9} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &539816354 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &539816355 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &539816356 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + m_CullTransparentMesh: 0 +--- !u!1 &572531796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 572531798} + - component: {fileID: 572531797} + - component: {fileID: 572531799} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &572531797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572531796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0, y: -0.00000029802322, z: -4.9999995} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &572531798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572531796} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: 0, z: -5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &572531799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572531796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &585920630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 585920631} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &585920631 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 585920630} + 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_Children: + - {fileID: 760832041} + m_Father: {fileID: 59572090} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &661179522 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 661179523} + - component: {fileID: 661179524} + - component: {fileID: 661179525} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &661179523 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661179522} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1365329332} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &661179524 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661179522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.515433, y: -0, z: -0} + m_HandleOut: {x: -5.515433, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &661179525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 661179522} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &721179343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 721179344} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &721179344 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721179343} + 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_Children: + - {fileID: 433407336} + - {fileID: 2036569540} + - {fileID: 1718672099} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &760832040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 760832041} + - component: {fileID: 760832043} + - component: {fileID: 760832042} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &760832041 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760832040} + 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_Children: [] + m_Father: {fileID: 585920631} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &760832042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760832040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &760832043 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760832040} + m_CullTransparentMesh: 0 +--- !u!1 &834937197 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 834937199} + - component: {fileID: 834937198} + - component: {fileID: 834937200} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &834937198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 834937197} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0.00000029802322, z: -4.9999995} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &834937199 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 834937197} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -10, y: 0, z: -5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &834937200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 834937197} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &855615028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 855615030} + - component: {fileID: 855615029} + - component: {fileID: 855615031} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &855615029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855615028} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &855615030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855615028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &855615031 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855615028} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &877618331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 877618334} + - component: {fileID: 877618333} + - component: {fileID: 877618332} + - component: {fileID: 877618335} + - component: {fileID: 877618336} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &877618332 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 877618331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &877618333 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 877618331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &877618334 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 877618331} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &877618335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 877618331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &877618336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 877618331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &911202134 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 911202135} + - component: {fileID: 911202137} + - component: {fileID: 911202136} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &911202135 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 911202134} + 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_Children: [] + m_Father: {fileID: 1840325755} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &911202136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 911202134} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &911202137 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 911202134} + m_CullTransparentMesh: 0 +--- !u!1 &1046110921 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1046110922} + - component: {fileID: 1046110923} + - component: {fileID: 1046110924} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1046110922 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046110921} + 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_Children: + - {fileID: 1897770866} + - {fileID: 1070900638} + - {fileID: 71916252} + - {fileID: 242250002} + - {fileID: 158560798} + - {fileID: 292451813} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1046110923 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046110921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1897770867} + - {fileID: 1070900637} + - {fileID: 71916253} + - {fileID: 242250003} + - {fileID: 158560800} + m_LastModuleID: 14 +--- !u!114 &1046110924 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046110921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &1070900636 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1070900638} + - component: {fileID: 1070900637} + m_Layer: 0 + m_Name: Rectangle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1070900637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1070900636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1192623722 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 11 + y: 139 + width: 250 + height: 174 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path B + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 499101506} +--- !u!4 &1070900638 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1070900636} + 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_Children: + - {fileID: 499101507} + m_Father: {fileID: 1046110922} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1075930188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1075930190} + - component: {fileID: 1075930189} + - component: {fileID: 1075930191} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1075930189 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1075930188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0.00000029802322, z: 4.9999995} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1075930190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1075930188} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: 0, z: 5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1075930191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1075930188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1295474749 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1295474751} + - component: {fileID: 1295474750} + - component: {fileID: 1295474752} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1295474750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295474749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: -5, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1295474751 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295474749} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1295474752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1295474749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1325580734 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1325580737} + - component: {fileID: 1325580736} + - component: {fileID: 1325580735} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1325580735 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325580734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1325580736 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325580734} + m_CullTransparentMesh: 0 +--- !u!224 &1325580737 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325580734} + 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_Children: [] + m_Father: {fileID: 59572090} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1331080919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1331080921} + - component: {fileID: 1331080920} + - component: {fileID: 1331080922} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1331080920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1331080919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 5, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1331080921 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1331080919} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1331080922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1331080919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1356862633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356862634} + - component: {fileID: 1356862635} + - component: {fileID: 1356862636} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1356862634 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356862633} + m_LocalRotation: {x: -0.1496734, y: 0, z: 0, w: 0.9887355} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1356862635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356862633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.9499999, y: -0, z: -0} + m_HandleOut: {x: 1.9499999, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1356862636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356862633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1365329331 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1365329332} + - component: {fileID: 1365329333} + m_Layer: 0 + m_Name: Circle_2_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1365329332 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1365329331} + 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_Children: + - {fileID: 1776824582} + - {fileID: 1641298359} + - {fileID: 661179523} + - {fileID: 1751715934} + m_Father: {fileID: 1897770866} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1365329333 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1365329331} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1776824583} + - {fileID: 1641298360} + - {fileID: 661179524} + - {fileID: 1751715935} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1591979008 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1591979009} + - component: {fileID: 1591979011} + - component: {fileID: 1591979010} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1591979009 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591979008} + 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_Children: [] + m_Father: {fileID: 539816353} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1591979010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591979008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'The CG Path Controller follows a Path created by the Curvy Generator. + + + In + this example, two Curvy Splines (Rounded Rectangle and Circle) are used to generate + a blend path. + + + Use the slider to change blend weight!' +--- !u!222 &1591979011 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591979008} + m_CullTransparentMesh: 0 +--- !u!1001 &1602267080 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1641298358 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1641298359} + - component: {fileID: 1641298360} + - component: {fileID: 1641298361} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1641298359 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641298358} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1365329332} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1641298360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641298358} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: 5.515433} + m_HandleOut: {x: 0, y: 0, z: -5.515433} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1641298361 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641298358} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1718672098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1718672099} + - component: {fileID: 1718672102} + - component: {fileID: 1718672101} + - component: {fileID: 1718672100} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1718672099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + 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_Children: [] + m_Father: {fileID: 721179344} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1718672100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1718672101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1718672102 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1751715933 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1751715934} + - component: {fileID: 1751715935} + - component: {fileID: 1751715936} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1751715934 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751715933} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1365329332} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1751715935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751715933} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -5.515433} + m_HandleOut: {x: 0, y: 0, z: 5.515433} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1751715936 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751715933} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1776824581 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1776824582} + - component: {fileID: 1776824583} + - component: {fileID: 1776824584} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1776824582 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776824581} + m_LocalRotation: {x: -0.4438665, y: -0.12703884, z: -0.064527705, w: 0.88469195} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1365329332} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1776824583 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776824581} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.515433, y: -0, z: -0} + m_HandleOut: {x: 5.515433, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1776824584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1776824581} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1840325754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1840325755} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1840325755 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1840325754} + 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_Children: + - {fileID: 911202135} + m_Father: {fileID: 59572090} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1872605313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872605315} + - component: {fileID: 1872605314} + - component: {fileID: 1872605316} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1872605314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872605313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5, y: 0, z: 0} + m_HandleOut: {x: 5, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1872605315 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872605313} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 499101507} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1872605316 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872605313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1897770865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1897770866} + - component: {fileID: 1897770867} + m_Layer: 0 + m_Name: Circle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1897770866 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897770865} + 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_Children: + - {fileID: 1365329332} + m_Father: {fileID: 1046110922} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1897770867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897770865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1192623722 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 174 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path A + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1365329333} +--- !u!1 &2036569539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2036569540} + - component: {fileID: 2036569543} + - component: {fileID: 2036569542} + - component: {fileID: 2036569541} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2036569540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 539816353} + m_Father: {fileID: 721179344} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &2036569541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2036569542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &2036569543 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/20_CGPaths.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/20_CGPaths.unity.meta new file mode 100644 index 00000000..830323b6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/20_CGPaths.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95b17c526f31be2408b98593522bf0b6 +timeCreated: 1433333357 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/21_CGExtrusion.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/21_CGExtrusion.unity new file mode 100644 index 00000000..111711d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/21_CGExtrusion.unity @@ -0,0 +1,8941 @@ +%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.2784314, g: 0.3529412, b: 0.48627454, a: 1} + m_AmbientEquatorColor: {r: 0.8235295, g: 0.9333334, b: 0.93725497, a: 1} + m_AmbientGroundColor: {r: 0.427451, g: 0.4039216, b: 0.40000004, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 1 + 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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &2998517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2998518} + - component: {fileID: 2998519} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2998518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998517} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -215.803, y: 0, z: 48.902} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2998519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.6662345, y: 7.0360694, z: 41.75565} + m_HandleOut: {x: 2.9811401, y: -3.7018428, z: -21.968636} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &11552393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 11552394} + - component: {fileID: 11552397} + - component: {fileID: 11552396} + - component: {fileID: 11552395} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &11552394 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + 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_Children: + - {fileID: 988828307} + m_Father: {fileID: 801592542} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -76} + m_SizeDelta: {x: 240, y: 152} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11552395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &11552396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &11552397 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_CullTransparentMesh: 0 +--- !u!1 &140951592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 140951593} + - component: {fileID: 140951596} + - component: {fileID: 140951595} + - component: {fileID: 140951594} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &140951593 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + 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_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &140951594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &140951595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &140951596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &167205238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 167205239} + - component: {fileID: 167205241} + - component: {fileID: 167205240} + m_Layer: 0 + m_Name: emitter_explosion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &167205239 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167205238} + m_LocalRotation: {x: 0.49983662, y: -0.5001634, z: -0.49983615, w: 0.50016373} + m_LocalPosition: {x: 2.2640004, y: 0.00060949114, z: 0.93200004} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1682782279} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!199 &167205240 +ParticleSystemRenderer: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167205238} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: b98c629cc06985046861231728d21687, type: 2} + - {fileID: 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_RenderMode: 1 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 3.79 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_ShadowBias: 0 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Flip: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_EnableGPUInstancing: 0 + m_ApplyActiveColorSpace: 0 + m_AllowRoll: 1 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &167205241 +ParticleSystem: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167205238} + serializedVersion: 6 + lengthInSec: 5 + simulationSpeed: 1 + stopAction: 0 + cullingMode: 3 + ringBufferMode: 0 + ringBufferLoopRange: {x: 0, y: 1} + looping: 1 + prewarm: 0 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1.2 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 15.13 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.3 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 3.79 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 6 + enabled: 1 + type: 5 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 3.66, y: 1, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshSpawn: + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_Sprite: {fileID: 0} + m_SpriteRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + m_Texture: {fileID: 0} + m_TextureClipChannel: 3 + m_TextureClipThreshold: 0 + m_TextureUVChannel: 0 + m_TextureColorAffectsParticles: 1 + m_TextureAlphaAffectsParticles: 1 + m_TextureBilinearFiltering: 0 + randomDirectionAmount: 1 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 2.97 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 0 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 1 + m_Bursts: + - serializedVersion: 2 + time: 1 + countCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 300 + minScalar: 300 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + cycleCount: 1 + repeatInterval: 0.01 + probability: 1 + SizeModule: + enabled: 1 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.57588357 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.4605174 + value: 0.9832504 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 3 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 0.57254905, g: 0.9098039, b: 1, a: 1} + key2: {r: 1, g: 0.8901961, b: 0.59607846, a: 1} + key3: {r: 1, g: 0.7921569, b: 0.6313726, a: 0} + key4: {r: 1, g: 0.4745098, b: 0.2, a: 0} + key5: {r: 1, g: 0.3019608, b: 0.3019608, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 6554 + ctime2: 10023 + ctime3: 15420 + ctime4: 32189 + ctime5: 65535 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 5590 + atime2: 50693 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 6 + m_NumAlphaKeys: 4 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 0.9764706, b: 0.11764706, a: 1} + key2: {r: 1, g: 0.30980393, b: 0.30980393, a: 1} + key3: {r: 1, g: 1, b: 1, 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: 7132 + ctime2: 47417 + ctime3: 65535 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 7325 + atime2: 47609 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 4 + m_NumAlphaKeys: 4 + UVModule: + serializedVersion: 2 + enabled: 0 + mode: 0 + timeMode: 0 + fps: 30 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedRange: {x: 0, y: 1} + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + rowMode: 1 + sprites: + - sprite: {fileID: 0} + flipU: 0 + flipV: 0 + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 2 + scalar: 7 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.18087316 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.39810422 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.09771311 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.6240126 + value: 0.970894 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 2 + scalar: 7 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.15592515 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.14246856 + value: -0.89289206 + inSlope: -0.63091516 + outSlope: -0.63091516 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.2972072 + value: -0.29693925 + inSlope: -0.32126904 + outSlope: -0.32126904 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.9431279 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.05613303 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16560926 + value: 0.48605484 + inSlope: 0.8419156 + outSlope: 0.8419156 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25650018 + value: 0.038930953 + inSlope: 0.89764595 + outSlope: 0.89764595 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.43121937 + value: 0.7344008 + inSlope: 1.719147 + outSlope: 1.719147 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.9478672 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 2 + scalar: 7 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.11434513 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.15150891 + value: -0.6887082 + inSlope: -1.8581748 + outSlope: -1.8581748 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.26612213 + value: -0.4122349 + inSlope: 0.7292628 + outSlope: 0.7292628 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.42184126 + value: -0.6375702 + inSlope: 2.2023916 + outSlope: 2.2023916 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5256124 + value: -0.16839975 + inSlope: 0.7554889 + outSlope: 0.7554889 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.68246436 + value: -0.7588358 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.98736167 + value: -0.92515594 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.04365903 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.15007897 + value: 0.36382532 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.250315 + value: -0.03634897 + inSlope: 0.9521842 + outSlope: 0.9521842 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.38362336 + value: 0.63060075 + inSlope: 2.7443469 + outSlope: 2.7443469 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.519228 + value: 0.17325896 + inSlope: 0.73850155 + outSlope: 0.73850155 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.728278 + value: 0.9542619 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + orbitalOffsetZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + radial: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 1 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + serializedVersion: 2 + enabled: 0 + multiplierCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + influenceFilter: 0 + influenceMask: + serializedVersion: 2 + m_Bits: 4294967295 + influenceList: [] + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 1 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 1698296054} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 3 + emitter: {fileID: 0} + type: 0 + properties: 0 + emitProbability: 1 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + shadowBias: 0.5 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + attachRibbonsToTransform: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!1 &225671077 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 225671078} + - component: {fileID: 225671079} + - component: {fileID: 225671080} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &225671078 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 225671077} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -7.826, y: 5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &225671079 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 225671077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.118, y: 0.107, z: -0.181} + m_HandleOut: {x: 5.606, y: 0, z: 0.731} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &225671080 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 225671077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 0 + m_MaxStepDistance: 0.3 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &303086541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 303086542} + - component: {fileID: 303086543} + - component: {fileID: 303086544} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &303086542 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.7, y: 0, z: -65.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &303086543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -43.14746, y: 1.8190798, z: -3.5789587} + m_HandleOut: {x: 47.694218, y: -2.0107691, z: 3.9560993} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &303086544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &353699662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 353699663} + - component: {fileID: 353699664} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &353699663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353699662} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &353699664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353699662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1136306158 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 343 + y: 10 + width: 270 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 2 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 11 + m_TargetSlotName: Path/Volume + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 7 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 20 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 1 + m_ScaleReference: 1 + m_ScaleOffset: 0.85 + m_ScaleUniform: 0 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 2.476549 + tangentMode: 1 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.25213587 + value: 2.4906812 + inSlope: 0 + outSlope: 0 + tangentMode: 1 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.7497384 + value: 0.8293337 + inSlope: -0.88870525 + outSlope: -0.88870525 + tangentMode: 1 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2.054324 + outSlope: 0 + tangentMode: 1 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 1 + m_PostInfinity: 1 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.3359473 + value: 1.0127053 + inSlope: 0.1872848 + outSlope: 0.1872848 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.49715102 + value: 2.1079755 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.59523374 + value: 1.0088885 + inSlope: -0.046116672 + outSlope: -0.046116672 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &355882556 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 355882557} + - component: {fileID: 355882558} + m_Layer: 0 + m_Name: Input Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &355882557 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 355882556} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &355882558 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 355882556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4dcd8018d6d8ecf4f876101d6e13a763, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -125505797 + m_UniqueID: 12 + Properties: + Dimensions: + serializedVersion: 2 + x: 15 + y: 418 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 12 + m_SlotName: VMesh + m_TargetModuleID: 11 + m_TargetSlotName: Bounds + - m_ModuleID: 12 + m_SlotName: VMesh + m_TargetModuleID: 13 + m_TargetSlotName: VMesh + m_Meshes: + - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + m_Material: + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + m_Translation: {x: 0, y: 4, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 4, y: 8, z: 4} +--- !u!1 &496654243 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 496654244} + - component: {fileID: 496654245} + - component: {fileID: 496654246} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &496654244 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496654243} + m_LocalRotation: {x: 0, y: -0.6640176, z: 0, w: 0.74771696} + m_LocalPosition: {x: 11.865, y: -9.829, z: 0.968} + m_LocalScale: {x: 0.9999999, y: 1, z: 0.58749825} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &496654245 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496654243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.221578, y: 4.507443, z: 0.3444483} + m_HandleOut: {x: -6.3375287, y: -6.7666755, z: -0.5170936} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &496654246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496654243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &528416557 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &574807767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 574807768} + - component: {fileID: 574807769} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &574807768 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574807767} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -161.5, y: 28.4, z: 139.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &574807769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574807767} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 41.086163, y: 3.1582482, z: 21.46602} + m_HandleOut: {x: -37.777615, y: -2.9039237, z: -19.737427} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &666838578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 666838579} + - component: {fileID: 666838580} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &666838579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666838578} + m_LocalRotation: {x: 0, y: 0, z: -0.1537447, w: 0.9881106} + m_LocalPosition: {x: -205.3, y: 7.3, z: -46.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &666838580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666838578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 8.858679, y: -1.5445073, z: 14.39615} + m_HandleOut: {x: -7.715311, y: 1.3451614, z: -12.538074} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &687742778 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 687742779} + - component: {fileID: 687742780} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &687742779 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687742778} + m_LocalRotation: {x: -0.104276784, y: 0, z: 0, w: 0.9945483} + m_LocalPosition: {x: -91.7, y: 7.9, z: -14.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &687742780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687742778} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -43.832546, y: 2.395645, z: -6.379196} + m_HandleOut: {x: 42.819504, y: -2.3402777, z: 6.231762} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &736826107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 736826108} + - component: {fileID: 736826109} + - component: {fileID: 736826110} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &736826108 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736826107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -11.194, y: 6, z: -0.913} + m_LocalScale: {x: 0.58749825, y: 1, z: 1.0000005} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &736826109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736826107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -4.846542, y: -3.6148546, z: -1.273793} + m_HandleOut: {x: 1.1104378, y: 0.82823396, z: 0.29185092} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &736826110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 736826107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &801592538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 801592542} + - component: {fileID: 801592541} + - component: {fileID: 801592540} + - component: {fileID: 801592539} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &801592539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &801592540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &801592541 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &801592542 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 11552394} + m_Father: {fileID: 1742575540} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &802331627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 802331628} + - component: {fileID: 802331629} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &802331628 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802331627} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -43.8, y: 11.1, z: 133.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &802331629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802331627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 26.714354, y: -4.297587, z: -7.3740187} + m_HandleOut: {x: -44.25931, y: 7.120076, z: 12.2169895} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &873417891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 873417892} + - component: {fileID: 873417893} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &873417892 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873417891} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &873417893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873417891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1846416220 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 697 + y: 459 + width: 350 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 11 + m_SlotName: Bounds + m_TargetModuleID: 12 + m_TargetSlotName: VMesh + - m_ModuleID: 11 + m_SlotName: Path/Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 11 + m_SlotName: Spots + m_TargetModuleID: 13 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0.0582 + To: 1 + SimpleValue: 0 + m_UseVolume: 1 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Obstacles + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 5 + To: 60 + SimpleValue: 0 + m_CrossBase: + From: -0.2 + To: 0.2 + SimpleValue: 0 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: -10 + To: 10 + SimpleValue: 0 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: -0.2 + To: 0.2 + SimpleValue: 0 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 10} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1 &963462554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963462555} + - component: {fileID: 963462556} + m_Layer: 0 + m_Name: Create Mesh (Obstacles) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &963462555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963462554} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &963462556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963462554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -125505797 + m_UniqueID: 13 + Properties: + Dimensions: + serializedVersion: 2 + x: 1126 + y: 411 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 13 + m_SlotName: Spots + m_TargetModuleID: 11 + m_TargetSlotName: Spots + - m_ModuleID: 13 + m_SlotName: VMesh + m_TargetModuleID: 12 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 1 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &988828306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 988828307} + - component: {fileID: 988828309} + - component: {fileID: 988828308} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &988828307 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + 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_Children: [] + m_Father: {fileID: 11552394} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &988828308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'The CG Volume Controller follows the "hull" of an extruded volume + created by a Curvy Generator. + + + Use Up/Left/Right to control the car''s + velocity and angular position!' +--- !u!222 &988828309 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_CullTransparentMesh: 0 +--- !u!1 &1024997325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1024997326} + - component: {fileID: 1024997327} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1024997326 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024997325} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 105.06, y: 0, z: 8.055} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1024997327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024997325} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -28.511822, y: -0, z: -38.490368} + m_HandleOut: {x: 27.192669, y: 0, z: 36.709538} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1035175548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1035175549} + - component: {fileID: 1035175550} + - component: {fileID: 1035175551} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1035175549 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035175548} + m_LocalRotation: {x: 0, y: -0.6640176, z: 0, w: 0.74771696} + m_LocalPosition: {x: -11.865, y: -9.829, z: -0.968} + m_LocalScale: {x: 0.9999999, y: 1, z: 0.58749825} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1035175550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035175548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 6.4035177, y: -6.703856, z: 0.52231896} + m_HandleOut: {x: -4.2611446, y: 4.4610014, z: -0.34757096} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1035175551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035175548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1086252423 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1086252424} + - component: {fileID: 1086252425} + m_Layer: 0 + m_Name: Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1086252424 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086252423} + m_LocalRotation: {x: -0.015234689, y: -0.6748543, z: 0.0139726335, w: -0.7376614} + m_LocalPosition: {x: 6.7, y: 0, z: -65.5} + m_LocalScale: {x: 2.0159855, y: 0.99839413, z: 1} + m_Children: + - {fileID: 225671078} + - {fileID: 1825649112} + - {fileID: 1639250074} + - {fileID: 496654244} + - {fileID: 1035175549} + - {fileID: 736826108} + m_Father: {fileID: 1108340980} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1086252425 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086252423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 225671079} + - {fileID: 1825649113} + - {fileID: 1639250075} + - {fileID: 496654245} + - {fileID: 1035175550} + - {fileID: 736826109} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1108340979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1108340980} + - component: {fileID: 1108340981} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1108340980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108340979} + 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_Children: + - {fileID: 1086252424} + m_Father: {fileID: 2072519609} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1108340981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108340979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -125505797 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 206 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 2 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1086252425} +--- !u!1 &1190463478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1190463479} + - component: {fileID: 1190463480} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1190463479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190463478} + m_LocalRotation: {x: 0.2525423, y: 0, z: 0, w: 0.9675859} + m_LocalPosition: {x: -173.7, y: 9.8, z: -93.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1190463480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190463478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -14.193434, y: -0.44019204, z: -3.7500014} + m_HandleOut: {x: 42.868153, y: 1.3295034, z: 11.3260565} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1244766098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1244766099} + - component: {fileID: 1244766100} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1244766099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + 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_Children: + - {fileID: 303086542} + - {fileID: 1024997326} + - {fileID: 1606007129} + - {fileID: 2089173456} + - {fileID: 1978027896} + - {fileID: 802331628} + - {fileID: 574807768} + - {fileID: 2998518} + - {fileID: 1394824518} + - {fileID: 1655437975} + - {fileID: 666838579} + - {fileID: 1580448889} + - {fileID: 1190463479} + - {fileID: 687742779} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1244766100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 303086543} + - {fileID: 1024997327} + - {fileID: 1606007130} + - {fileID: 2089173457} + - {fileID: 1978027895} + - {fileID: 802331629} + - {fileID: 574807769} + - {fileID: 2998519} + - {fileID: 1394824519} + - {fileID: 1655437976} + - {fileID: 666838580} + - {fileID: 1580448890} + - {fileID: 1190463480} + - {fileID: 687742780} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1375666200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1375666205} + - component: {fileID: 1375666204} + - component: {fileID: 1375666202} + - component: {fileID: 1375666201} + - component: {fileID: 1375666206} + 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 &1375666201 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!124 &1375666202 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!20 &1375666204 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1375666205 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_LocalRotation: {x: 0.059903897, y: 0.6310494, z: -0.048974704, w: 0.7718742} + m_LocalPosition: {x: -2.8831944, y: 10.306487, z: -64.57999} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1375666206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 1388412541} + MoveTo: {fileID: 2033279866} + RollTo: {fileID: 0} + ChaseTime: 0.3 +--- !u!1 &1388412540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1388412541} + m_Layer: 0 + m_Name: CameraLookTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1388412541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1388412540} + m_LocalRotation: {x: 0.50000024, y: 0.49999973, z: 0.49999994, w: 0.5000001} + m_LocalPosition: {x: 0, y: -0, z: 3.75} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1682782279} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1394824517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1394824518} + - component: {fileID: 1394824519} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1394824518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394824517} + m_LocalRotation: {x: -0.18323079, y: 0, z: 0, w: 0.98306996} + m_LocalPosition: {x: -175.2, y: 0, z: 8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1394824519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394824517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -10.406606, y: -0, z: 19.92271} + m_HandleOut: {x: 5.617095, y: 0, z: -10.753531} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1537388632 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1537388633} + m_Layer: 0 + m_Name: VehicleHolder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1537388633 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537388632} + 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_Children: + - {fileID: 1682782279} + m_Father: {fileID: 1998100736} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1580448888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1580448889} + - component: {fileID: 1580448890} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1580448889 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1580448888} + m_LocalRotation: {x: 0.26417813, y: -0.025414817, z: -0.09236209, w: 0.9597048} + m_LocalPosition: {x: -210.1, y: 7.2, z: -84} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1580448890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1580448888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -8.287501, y: -0.6551807, z: 12.224028} + m_HandleOut: {x: 8.233686, y: 0.65092623, z: -12.14465} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1606007128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1606007129} + - component: {fileID: 1606007130} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1606007129 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606007128} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 144.832, y: 0, z: 118.235} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1606007130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606007128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 18.082685, y: -0, z: -41.952927} + m_HandleOut: {x: -12.5982485, y: 0, z: 29.2287} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1629425598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1629425601} + - component: {fileID: 1629425600} + - component: {fileID: 1629425599} + - component: {fileID: 1629425602} + - component: {fileID: 1629425603} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1629425599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1629425600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1629425601 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1629425602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1629425603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1639250073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1639250074} + - component: {fileID: 1639250075} + - component: {fileID: 1639250076} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1639250074 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639250073} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10.883, y: 6, z: 0.888} + m_LocalScale: {x: 0.58749825, y: 1, z: 1.0000005} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1639250075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639250073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.314458, y: 0.99318755, z: -0.275861} + m_HandleOut: {x: 4.86718, y: -3.6775784, z: 1.0214591} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1639250076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1639250073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1655437974 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1655437975} + - component: {fileID: 1655437976} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1655437975 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655437974} + m_LocalRotation: {x: 0, y: 0, z: 0.12520339, w: 0.9921311} + m_LocalPosition: {x: -169.6, y: 0, z: -22.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1655437976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655437974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.658277, y: -1.2203546, z: 11.135591} + m_HandleOut: {x: -6.5172696, y: 1.707365, z: -15.579504} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1682782279 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, + type: 3} + m_PrefabInstance: {fileID: 1956319353} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1698296053 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1698296054} + - component: {fileID: 1698296055} + m_Layer: 0 + m_Name: emitter_plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1698296054 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698296053} + m_LocalRotation: {x: 0.70710695, y: 0.0000000016496031, z: -0.00000006111052, w: 0.70710665} + m_LocalPosition: {x: -1.1500041, y: -0.0000011783845, z: -0.41999987} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1682782279} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1698296055 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698296053} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1742575539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1742575540} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1742575540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742575539} + 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_Children: + - {fileID: 2049692232} + - {fileID: 801592542} + - {fileID: 140951593} + - {fileID: 1375666205} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1825649111 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1825649112} + - component: {fileID: 1825649113} + - component: {fileID: 1825649114} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1825649112 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825649111} + m_LocalRotation: {x: 0, y: 0.6640173, z: 0, w: -0.7477172} + m_LocalPosition: {x: 6.814, y: 5, z: 0} + m_LocalScale: {x: 0.9999999, y: 1, z: 0.9999999} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1825649113 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825649111} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.638, y: 0, z: -0.599} + m_HandleOut: {x: 1.6494143, y: 0.19748397, z: 0.17536576} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1825649114 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1825649111} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 1 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &1956319353 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1537388633} + m_Modifications: + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalPosition.y + value: .019999953 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalRotation.w + value: .500000119 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalRotation.x + value: -.500000238 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalRotation.y + value: -.499999732 + objectReference: {fileID: 0} + - target: {fileID: 445198, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + propertyPath: m_LocalRotation.z + value: -.49999994 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6402096, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + - {fileID: 6484568, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + - {fileID: 6407980, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 19d19d9eb3c0c0448b2dd42b12951170, type: 3} +--- !u!1 &1965732108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1965732109} + - component: {fileID: 1965732110} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1965732109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1965732108} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1965732110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1965732108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -125505797 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 695 + y: 10 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 8 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 30 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 4, y: 4} + MaterialID: 0 + - SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 1 + m_Material: + - {fileID: 2100000, guid: 059cceb0ba6e50741bfe6ec2c755d5f4, type: 2} + - {fileID: 2100000, guid: 5fffa843b7891b94a9210f2c6e7c6fcc, type: 2} + - {fileID: 0} +--- !u!1 &1973745540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1973745541} + - component: {fileID: 1973745542} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1973745541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973745540} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1973745542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973745540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -125505797 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 12 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1244766100} +--- !u!1 &1978027894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1978027896} + - component: {fileID: 1978027895} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1978027895 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978027894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 27.545053, y: -2.6848311, z: 4.2522035} + m_HandleOut: {x: -27.58863, y: 2.6890786, z: -4.25893} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1978027896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978027894} + m_LocalRotation: {x: 0.16897969, y: 0, z: 0, w: 0.98561954} + m_LocalPosition: {x: 19.066, y: 0, z: 100.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1998100735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1998100736} + - component: {fileID: 1998100739} + - component: {fileID: 1998100740} + - component: {fileID: 1998100738} + - component: {fileID: 1998100737} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1998100736 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998100735} + m_LocalRotation: {x: 0.011457144, y: 0.63305503, z: -0.0116749685, w: 0.77393395} + m_LocalPosition: {x: 6.7500997, y: 4.9840035, z: -62.61255} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2033279866} + - {fileID: 1537388633} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1998100737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998100735} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 198782fdd1a89d540977c923f65caf18, type: 3} + m_Name: + m_EditorClassIdentifier: + AngularVelocity: 0.2 + explosionEmitter: {fileID: 167205241} + volumeController: {fileID: 1998100738} + rotatedTransform: {fileID: 1537388633} + maxSpeed: 60 + accelerationForward: 40 + accelerationBackward: 80 +--- !u!114 &1998100738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998100735} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 978716ea84cf827468383a8fad80663e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 0 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0.15 + m_DampingUp: 0.15 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Volume: + m_Module: {fileID: 353699664} + m_SlotName: Volume + m_CrossRange: + From: -0.1148 + To: 0.0852 + SimpleValue: 0 + crossRelativePosition: -0.014800001 + m_CrossClamping: 0 + m_CrossInitialPosition: NaN +--- !u!65 &1998100739 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998100735} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 3.0575485, y: 1.1301274, z: 4.795444} + m_Center: {x: -0.011232128, y: 1.3637904, z: -0.04746776} +--- !u!54 &1998100740 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1998100735} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &2023792361 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2023792362} + - component: {fileID: 2023792363} + m_Layer: 0 + m_Name: Create Mesh (Track) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2023792362 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023792361} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2023792363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023792361} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -125505797 + m_UniqueID: 8 + Properties: + Dimensions: + serializedVersion: 2 + x: 1123 + y: 13 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 8 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &2033279865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2033279866} + m_Layer: 0 + m_Name: CameraChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2033279866 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2033279865} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1998100736} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2049692231 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2049692232} + - component: {fileID: 2049692233} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049692232 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &2049692233 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1.5 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &2072519608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2072519609} + - component: {fileID: 2072519610} + - component: {fileID: 2072519611} + - component: {fileID: 2072519612} + m_Layer: 0 + m_Name: Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2072519609 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + 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_Children: + - {fileID: 1973745541} + - {fileID: 1108340980} + - {fileID: 355882557} + - {fileID: 353699663} + - {fileID: 873417892} + - {fileID: 1965732109} + - {fileID: 963462555} + - {fileID: 2023792362} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2072519610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1973745542} + - {fileID: 1108340981} + - {fileID: 355882558} + - {fileID: 353699664} + - {fileID: 873417893} + - {fileID: 1965732110} + - {fileID: 963462556} + - {fileID: 2023792363} + m_LastModuleID: 13 +--- !u!114 &2072519611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &2072519612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &2089173455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2089173456} + - component: {fileID: 2089173457} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2089173456 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089173455} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 70, y: 0, z: 150.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2089173457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089173455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 31.280224, y: -0, z: 5.8805156} + m_HandleOut: {x: -27.518295, y: 0, z: -5.173293} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/21_CGExtrusion.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/21_CGExtrusion.unity.meta new file mode 100644 index 00000000..64639eec --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/21_CGExtrusion.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f64f2e16941ca42428683f89332f6c2c +timeCreated: 1433838612 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/22_CGClonePrefabs.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/22_CGClonePrefabs.unity new file mode 100644 index 00000000..cf651ac5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/22_CGClonePrefabs.unity @@ -0,0 +1,2819 @@ +%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.1392157, g: 0.1764706, b: 0.24313727, a: 0.5} + m_AmbientEquatorColor: {r: 0.41176474, g: 0.4666667, b: 0.46862748, a: 0.5} + m_AmbientGroundColor: {r: 0.2137255, g: 0.2019608, b: 0.20000002, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 1 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &2998517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2998518} + - component: {fileID: 2998519} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2998518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998517} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -215.803, y: 0, z: 48.902} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2998519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.6662345, y: 7.0360694, z: 41.75565} + m_HandleOut: {x: 2.9811401, y: -3.7018428, z: -21.968636} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &11552393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 11552394} + - component: {fileID: 11552397} + - component: {fileID: 11552396} + - component: {fileID: 11552395} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &11552394 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + 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_Children: + - {fileID: 988828307} + m_Father: {fileID: 801592542} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -41.305} + m_SizeDelta: {x: 240, y: 82.61} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11552395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &11552396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &11552397 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_CullTransparentMesh: 0 +--- !u!1 &140951592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 140951593} + - component: {fileID: 140951596} + - component: {fileID: 140951595} + - component: {fileID: 140951594} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &140951593 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + 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_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &140951594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &140951595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &140951596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &303086541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 303086542} + - component: {fileID: 303086543} + - component: {fileID: 303086544} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &303086542 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.7, y: 0, z: -65.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &303086543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -43.14746, y: 1.8190798, z: -3.5789587} + m_HandleOut: {x: 47.694218, y: -2.0107691, z: 3.9560993} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &303086544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &304554633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 304554635} + - component: {fileID: 304554634} + m_Layer: 0 + m_Name: Rasterize Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &304554634 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 304554633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4dd47aa60d1b454886133ad3297289c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470382152 + m_UniqueID: 16 + Properties: + Dimensions: + serializedVersion: 2 + x: 316 + y: 10 + width: 250 + height: 227 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 112 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 16 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 16 + m_SlotName: Path + m_TargetModuleID: 11 + m_TargetSlotName: Path/Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 0 + m_AngleTreshold: 10 + useBuggedRange: 0 +--- !u!4 &304554635 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 304554633} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &528416557 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &574807767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 574807768} + - component: {fileID: 574807769} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &574807768 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574807767} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -161.5, y: 28.4, z: 139.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &574807769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574807767} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 41.086163, y: 3.1582482, z: 21.46602} + m_HandleOut: {x: -37.777615, y: -2.9039237, z: -19.737427} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &666838578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 666838579} + - component: {fileID: 666838580} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &666838579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666838578} + m_LocalRotation: {x: 0, y: 0, z: -0.1537447, w: 0.9881106} + m_LocalPosition: {x: -205.3, y: 7.3, z: -46.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &666838580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666838578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 8.858679, y: -1.5445073, z: 14.39615} + m_HandleOut: {x: -7.715311, y: 1.3451614, z: -12.538074} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &687742778 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 687742779} + - component: {fileID: 687742780} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &687742779 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687742778} + m_LocalRotation: {x: -0.104276784, y: 0, z: 0, w: 0.9945483} + m_LocalPosition: {x: -91.7, y: 7.9, z: -14.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &687742780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687742778} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -43.832546, y: 2.395645, z: -6.379196} + m_HandleOut: {x: 42.819504, y: -2.3402777, z: 6.231762} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &801592538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 801592542} + - component: {fileID: 801592541} + - component: {fileID: 801592540} + - component: {fileID: 801592539} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &801592539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &801592540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &801592541 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &801592542 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 11552394} + m_Father: {fileID: 1742575540} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &802331627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 802331628} + - component: {fileID: 802331629} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &802331628 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802331627} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -43.8, y: 11.1, z: 133.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &802331629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802331627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 42.527733, y: 16.276165, z: 18.827387} + m_HandleOut: {x: -40.101307, y: -15.347526, z: -17.753187} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &873417891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 873417892} + - component: {fileID: 873417893} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &873417892 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873417891} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &873417893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873417891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1020394460 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 655 + y: 247 + width: 350 + height: 398 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 11 + m_SlotName: Path/Volume + m_TargetModuleID: 16 + m_TargetSlotName: Path + - m_ModuleID: 11 + m_SlotName: Bounds + m_TargetModuleID: 17 + m_TargetSlotName: GameObject + OutputLinks: + - m_ModuleID: 11 + m_SlotName: Spots + m_TargetModuleID: 18 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Obstacles + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 35 + To: 60 + SimpleValue: 1 + m_CrossBase: + From: -0.2 + To: 0.2 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: -0.2 + To: 0.2 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: Ships + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: -45 + To: 45 + SimpleValue: 0 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 1 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 45} + m_RepeatingGroups: + From: 0 + To: 1 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1 &988828306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 988828307} + - component: {fileID: 988828309} + - component: {fileID: 988828308} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &988828307 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + 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_Children: [] + m_Father: {fileID: 11552394} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &988828308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Through Generators, the Volume Spots module can be used to clone + GameObjects/Meshes along a path or volume. +--- !u!222 &988828309 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_CullTransparentMesh: 0 +--- !u!1 &1024997325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1024997326} + - component: {fileID: 1024997327} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1024997326 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024997325} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 105.06, y: 0, z: 8.055} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1024997327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024997325} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -28.511822, y: -0, z: -38.490368} + m_HandleOut: {x: 27.192669, y: 0, z: 36.709538} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1162792375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1162792377} + - component: {fileID: 1162792376} + m_Layer: 0 + m_Name: Create GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1162792376 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162792375} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1744164192 + m_UniqueID: 18 + Properties: + Dimensions: + serializedVersion: 2 + x: 1132 + y: 216 + width: 250 + height: 239 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 18 + m_SlotName: Spots + m_TargetModuleID: 11 + m_TargetSlotName: Spots + - m_ModuleID: 18 + m_SlotName: GameObject + m_TargetModuleID: 17 + m_TargetSlotName: GameObject + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 0 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!4 &1162792377 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162792375} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1183560359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1183560361} + - component: {fileID: 1183560360} + m_Layer: 0 + m_Name: Note + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1183560360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183560359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8b0cfe04ef5e5d4aaf9ff8c26cabecb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1848070346 + m_UniqueID: 19 + Properties: + Dimensions: + serializedVersion: 2 + x: 702 + y: 19 + width: 200 + height: 201 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: [] + OutputLinks: [] + m_Note: Simple Prefab cloning example. Note that the "Volume Spots" module either + takes a Volume or a Rasterized Path! +--- !u!4 &1183560361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183560359} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1190463478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1190463479} + - component: {fileID: 1190463480} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1190463479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190463478} + m_LocalRotation: {x: 0.2525423, y: 0, z: 0, w: 0.9675859} + m_LocalPosition: {x: -173.7, y: 9.8, z: -93.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1190463480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190463478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -14.193434, y: -0.44019204, z: -3.7500014} + m_HandleOut: {x: 42.868153, y: 1.3295034, z: 11.3260565} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1244766098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1244766099} + - component: {fileID: 1244766100} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1244766099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + 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_Children: + - {fileID: 303086542} + - {fileID: 1024997326} + - {fileID: 1606007129} + - {fileID: 2089173456} + - {fileID: 1978027896} + - {fileID: 802331628} + - {fileID: 574807768} + - {fileID: 2998518} + - {fileID: 1394824518} + - {fileID: 1655437975} + - {fileID: 666838579} + - {fileID: 1580448889} + - {fileID: 1190463479} + - {fileID: 687742779} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1244766100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 303086543} + - {fileID: 1024997327} + - {fileID: 1606007130} + - {fileID: 2089173457} + - {fileID: 1978027895} + - {fileID: 802331629} + - {fileID: 574807769} + - {fileID: 2998519} + - {fileID: 1394824519} + - {fileID: 1655437976} + - {fileID: 666838580} + - {fileID: 1580448890} + - {fileID: 1190463480} + - {fileID: 687742780} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1375666200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1375666205} + - component: {fileID: 1375666204} + - component: {fileID: 1375666202} + - component: {fileID: 1375666201} + - component: {fileID: 1375666206} + 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 &1375666201 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!124 &1375666202 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!20 &1375666204 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1375666205 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_LocalRotation: {x: 0.04265945, y: -0.9382144, z: 0.3198013, w: 0.125144} + m_LocalPosition: {x: 63.385452, y: 180.37433, z: 261.00433} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 37.6446, y: 195.19499, z: -0.0004} +--- !u!114 &1375666206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 1244766100} + LineColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} +--- !u!1 &1394824517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1394824518} + - component: {fileID: 1394824519} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1394824518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394824517} + m_LocalRotation: {x: -0.18323079, y: 0, z: 0, w: 0.98306996} + m_LocalPosition: {x: -175.2, y: 0, z: 8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1394824519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394824517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -10.406606, y: -0, z: 19.92271} + m_HandleOut: {x: 5.617095, y: 0, z: -10.753531} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1580448888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1580448889} + - component: {fileID: 1580448890} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1580448889 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1580448888} + m_LocalRotation: {x: 0.26417813, y: -0.025414817, z: -0.09236209, w: 0.9597048} + m_LocalPosition: {x: -210.1, y: 7.2, z: -84} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1580448890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1580448888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -8.287501, y: -0.6551807, z: 12.224028} + m_HandleOut: {x: 8.233686, y: 0.65092623, z: -12.14465} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1606007128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1606007129} + - component: {fileID: 1606007130} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1606007129 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606007128} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 144.832, y: 0, z: 118.235} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1606007130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606007128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 18.082685, y: -0, z: -41.952927} + m_HandleOut: {x: -12.5982485, y: 0, z: 29.2287} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1629425598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1629425601} + - component: {fileID: 1629425600} + - component: {fileID: 1629425599} + - component: {fileID: 1629425602} + - component: {fileID: 1629425603} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1629425599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1629425600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1629425601 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1629425602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1629425603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1646623751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1646623753} + - component: {fileID: 1646623752} + m_Layer: 0 + m_Name: Input GameObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1646623752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646623751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1481177080 + m_UniqueID: 17 + Properties: + Dimensions: + serializedVersion: 2 + x: 14 + y: 260 + width: 250 + height: 345 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 17 + m_SlotName: GameObject + m_TargetModuleID: 11 + m_TargetSlotName: Bounds + - m_ModuleID: 17 + m_SlotName: GameObject + m_TargetModuleID: 18 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: -90, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 181814, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!4 &1646623753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646623751} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1655437974 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1655437975} + - component: {fileID: 1655437976} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1655437975 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655437974} + m_LocalRotation: {x: 0, y: 0, z: 0.12520339, w: 0.9921311} + m_LocalPosition: {x: -169.6, y: 0, z: -22.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1655437976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655437974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.658277, y: -1.2203546, z: 11.135591} + m_HandleOut: {x: -6.5172696, y: 1.707365, z: -15.579504} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1742575539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1742575540} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1742575540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742575539} + 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_Children: + - {fileID: 2049692232} + - {fileID: 801592542} + - {fileID: 140951593} + - {fileID: 1375666205} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1973745540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1973745541} + - component: {fileID: 1973745542} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1973745541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973745540} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1973745542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973745540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -125505797 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 202 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 16 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1244766100} +--- !u!1 &1978027894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1978027896} + - component: {fileID: 1978027895} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1978027895 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978027894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 51.044014, y: -2.8103392, z: 9.7009} + m_HandleOut: {x: -48.337532, y: 2.661328, z: -9.186534} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1978027896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978027894} + m_LocalRotation: {x: 0.16897969, y: 0, z: 0, w: 0.98561954} + m_LocalPosition: {x: 2.4, y: 94.9, z: 215.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 19.456999, y: 0, z: 0} +--- !u!1 &2049692231 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2049692232} + - component: {fileID: 2049692233} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049692232 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &2049692233 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1.5 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &2072519608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2072519609} + - component: {fileID: 2072519610} + - component: {fileID: 2072519611} + - component: {fileID: 2072519612} + - component: {fileID: 2072519614} + - component: {fileID: 2072519613} + m_Layer: 0 + m_Name: Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2072519609 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + 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_Children: + - {fileID: 1973745541} + - {fileID: 1646623753} + - {fileID: 304554635} + - {fileID: 873417892} + - {fileID: 1162792377} + - {fileID: 1183560361} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2072519610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1973745542} + - {fileID: 1646623752} + - {fileID: 304554634} + - {fileID: 873417893} + - {fileID: 1162792376} + - {fileID: 1183560360} + m_LastModuleID: 19 +--- !u!114 &2072519611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &2072519612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &2072519613 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 18_Ship + m_Prefabs: + - {fileID: 181814, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &2072519614 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 18_Checkpoint + m_Prefabs: + - {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &2089173455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2089173456} + - component: {fileID: 2089173457} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2089173456 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089173455} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 70, y: 0, z: 150.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2089173457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089173455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 24.87519, y: -12.428593, z: -15.485083} + m_HandleOut: {x: -40.66667, y: 20.318619, z: 25.315456} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/22_CGClonePrefabs.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/22_CGClonePrefabs.unity.meta new file mode 100644 index 00000000..472e176a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/22_CGClonePrefabs.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d066c0ad1e5e27d4faa7592b507c854f +timeCreated: 1460901411 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/23_CGTube.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/23_CGTube.unity new file mode 100644 index 00000000..414fb944 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/23_CGTube.unity @@ -0,0 +1,5605 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.057, g: 0.0625, b: 0.0665, a: 0.5} + m_AmbientGroundColor: {r: 0.0235, g: 0.0215, b: 0.0175, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 2048 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 112000000, guid: f518d498f140a434580c49717406f4ba, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &2998517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2998518} + - component: {fileID: 2998519} + - component: {fileID: 2998520} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2998518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998517} + m_LocalRotation: {x: 0.31167203, y: 0.94354284, z: -0.052888907, w: 0.098945946} + m_LocalPosition: {x: -215.803, y: 0, z: 48.902} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2998519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.6662345, y: 7.0360694, z: 41.75565} + m_HandleOut: {x: 2.9811401, y: -3.7018428, z: -21.968636} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2998520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &11552393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 11552394} + - component: {fileID: 11552397} + - component: {fileID: 11552396} + - component: {fileID: 11552395} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &11552394 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + 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_Children: + - {fileID: 988828307} + m_Father: {fileID: 801592542} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -20.9} + m_SizeDelta: {x: 240, y: 41.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11552395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &11552396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &11552397 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 11552393} + m_CullTransparentMesh: 0 +--- !u!1 &20619722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 20619723} + - component: {fileID: 20619724} + m_Layer: 0 + m_Name: Point light (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &20619723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 20619722} + 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_Children: [] + m_Father: {fileID: 1444172799} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &20619724 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 20619722} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &140951592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 140951593} + - component: {fileID: 140951596} + - component: {fileID: 140951595} + - component: {fileID: 140951594} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &140951593 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + 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_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &140951594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &140951595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &140951596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140951592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1001 &146789592 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: CheckpointReverse + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: -139.77026 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 9.958053 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: -63.958153 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.69778377 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: -0.6618986 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.15130743 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0.22824141 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: .828000009 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &146789593 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 146789592} + m_PrefabAsset: {fileID: 0} +--- !u!1 &222226939 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 222226940} + - component: {fileID: 222226941} + m_Layer: 0 + m_Name: Point light (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &222226940 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222226939} + 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_Children: [] + m_Father: {fileID: 1729692328} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &222226941 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222226939} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &303086541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 303086542} + - component: {fileID: 303086543} + - component: {fileID: 303086544} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &303086542 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -13.719, y: -8.3, z: -48.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &303086543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -13.862185, y: 1.5541439, z: -0.7315247} + m_HandleOut: {x: 51.051826, y: -5.723621, z: 2.6940684} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &303086544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 303086541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &328909480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: Checkpoint (1) + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: -117.582405 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 8.375743 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: -31.680557 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.6117545 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: -0.66334176 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.3977332 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0.16595937 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: 1056 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &328909481 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 328909480} + m_PrefabAsset: {fileID: 0} +--- !u!1 &353699662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 353699663} + - component: {fileID: 353699664} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &353699663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353699662} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &353699664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353699662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170436036 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 312 + y: 40 + width: 270 + height: 314 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 2 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 7 + m_TargetSlotName: Volume + - m_ModuleID: 2 + m_SlotName: VolumeHollow + m_TargetModuleID: 11 + m_TargetSlotName: Volume + - m_ModuleID: 2 + m_SlotName: VolumeHollow + m_TargetModuleID: 13 + m_TargetSlotName: VolumeHoles + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 13 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 0.9 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 0.73 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.0018577594 + value: 2.4998333 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.0982906 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.8974359 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.0025996 + value: 2.5001254 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.3359473 + value: 1.0127053 + inSlope: 0.1872848 + outSlope: 0.1872848 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.49715102 + value: 2.1079755 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.59523374 + value: 1.0088885 + inSlope: -0.046116672 + outSlope: -0.046116672 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0.1 + m_HollowReverseNormals: 0 +--- !u!1 &381439800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 381439801} + - component: {fileID: 381439802} + m_Layer: 0 + m_Name: Point light (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &381439801 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381439800} + 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_Children: [] + m_Father: {fileID: 328909481} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &381439802 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381439800} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1001 &524051813 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &574807767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 574807768} + - component: {fileID: 574807769} + - component: {fileID: 574807770} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &574807768 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574807767} + m_LocalRotation: {x: -0.35225815, y: -0.7799777, z: 0.25025415, w: 0.45268312} + m_LocalPosition: {x: -161.5, y: 28.4, z: 139.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &574807769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574807767} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 41.086163, y: 3.1582482, z: 21.46602} + m_HandleOut: {x: -37.777615, y: -2.9039237, z: -19.737427} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &574807770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574807767} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &655994629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 655994630} + - component: {fileID: 655994631} + m_Layer: 0 + m_Name: Point light (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &655994630 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 655994629} + 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_Children: [] + m_Father: {fileID: 1232943867} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &655994631 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 655994629} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &664729500 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 664729501} + - component: {fileID: 664729502} + m_Layer: 0 + m_Name: Point light (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &664729501 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 664729500} + 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_Children: [] + m_Father: {fileID: 996954005} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &664729502 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 664729500} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &666838578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 666838579} + - component: {fileID: 666838580} + - component: {fileID: 666838581} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &666838579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666838578} + m_LocalRotation: {x: 0.58892894, y: 0.7605868, z: -0.13009058, w: -0.24030611} + m_LocalPosition: {x: -205.3, y: 7.3, z: -46.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &666838580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666838578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 8.858679, y: -1.5445073, z: 14.39615} + m_HandleOut: {x: -7.715311, y: 1.3451614, z: -12.538074} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &666838581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666838578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &667074646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 667074647} + - component: {fileID: 667074648} + - component: {fileID: 667074649} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &667074647 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667074646} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000008742278, y: -10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &667074648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667074646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.515433, y: -0.00000026299634, z: -0} + m_HandleOut: {x: -5.5154324, y: 0.0000002629963, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &667074649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667074646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &687742778 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 687742779} + - component: {fileID: 687742780} + - component: {fileID: 687742781} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &687742779 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687742778} + m_LocalRotation: {x: 0.17077392, y: -0.5713231, z: 0.2224884, w: -0.7713139} + m_LocalPosition: {x: -96.78, y: 6.64, z: -20.45} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &687742780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687742778} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 1 + m_SwirlTurns: -1 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -40.172813, y: 3.1575263, z: -9.210607} + m_HandleOut: {x: 20.277426, y: -1.593777, z: 4.6490993} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &687742781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687742778} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &801592538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 801592542} + - component: {fileID: 801592541} + - component: {fileID: 801592540} + - component: {fileID: 801592539} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &801592539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &801592540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &801592541 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &801592542 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801592538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 11552394} + m_Father: {fileID: 1742575540} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &802331627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 802331628} + - component: {fileID: 802331629} + - component: {fileID: 802331630} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &802331628 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802331627} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -43.8, y: 11.1, z: 133.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &802331629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802331627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 28.272446, y: -4.532465, z: -9.779054} + m_HandleOut: {x: -43.41533, y: 6.960079, z: 15.01677} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &802331630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802331627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &818359937 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1523349470} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.x + value: 0.4 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.y + value: 0.4 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.z + value: 0.4 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!4 &818359938 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 818359937} + m_PrefabAsset: {fileID: 0} +--- !u!1 &819844490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 819844491} + - component: {fileID: 819844492} + m_Layer: 0 + m_Name: Hollow Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &819844491 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819844490} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &819844492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819844490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170425922 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 653 + y: 184 + width: 250 + height: 362 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 11 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: VolumeHollow + OutputLinks: + - m_ModuleID: 11 + m_SlotName: VMesh + m_TargetModuleID: 14 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 1 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: bcffcab81ca65fe4db75d1f4bfda9af1, type: 2} +--- !u!1 &914697135 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 914697136} + - component: {fileID: 914697137} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &914697136 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 914697135} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &914697137 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 914697135} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170416014 + m_UniqueID: 13 + Properties: + Dimensions: + serializedVersion: 2 + x: 656 + y: 530 + width: 250 + height: 312 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 13 + m_SlotName: VolumeHoles + m_TargetModuleID: 2 + m_TargetSlotName: VolumeHollow + - m_ModuleID: 13 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 13 + m_SlotName: VMesh + m_TargetModuleID: 8 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 1 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 1 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &962849845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 962849846} + - component: {fileID: 962849847} + m_Layer: 0 + m_Name: Point light (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &962849846 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962849845} + 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_Children: [] + m_Father: {fileID: 1366700430} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &962849847 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 962849845} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &988828306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 988828307} + - component: {fileID: 988828309} + - component: {fileID: 988828308} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &988828307 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + 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_Children: [] + m_Father: {fileID: 11552394} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &988828308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Tubes! Give us tubes! +--- !u!222 &988828309 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 988828306} + m_CullTransparentMesh: 0 +--- !u!1001 &996954004 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: CheckpointReverse (4) + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 129.04965 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 137.40692 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.5755959 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: -0.6714501 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: -0.41134098 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: -0.22055118 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: .150999993 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &996954005 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 996954004} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1024997325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1024997326} + - component: {fileID: 1024997327} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1024997326 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024997325} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 105.06, y: 0, z: 8.055} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1024997327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024997325} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -34.48899, y: -1.7501318, z: -38.12812} + m_HandleOut: {x: 30.62844, y: 1.5542295, z: 33.860218} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1049783417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1049783418} + - component: {fileID: 1049783419} + m_Layer: 0 + m_Name: Point light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1049783418 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049783417} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: -0, z: -0.67} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1523349470} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1049783419 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1049783417} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 0 + m_Shape: 0 + m_Color: {r: 0.4044118, g: 0.72890466, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 100 + m_SpotAngle: 60 + m_InnerSpotAngle: 45.074013 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &1086252423 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1086252424} + - component: {fileID: 1086252425} + - component: {fileID: 1086252426} + m_Layer: 0 + m_Name: Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1086252424 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086252423} + 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_Children: + - {fileID: 1703670582} + - {fileID: 1694706337} + - {fileID: 667074647} + - {fileID: 1991352057} + m_Father: {fileID: 1108340980} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1086252425 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086252423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1703670583} + - {fileID: 1694706338} + - {fileID: 667074648} + - {fileID: 1991352058} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1086252426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086252423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Count: 4 + m_Radius: 10 +--- !u!1 &1108340979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1108340980} + - component: {fileID: 1108340981} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1108340980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108340979} + 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_Children: + - {fileID: 1086252424} + m_Father: {fileID: 2072519609} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1108340981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1108340979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170406000 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 11 + y: 228 + width: 250 + height: 274 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 2 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1086252425} +--- !u!1 &1190463478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1190463479} + - component: {fileID: 1190463480} + - component: {fileID: 1190463481} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1190463479 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190463478} + m_LocalRotation: {x: 0.2525423, y: 0, z: 0, w: 0.9675859} + m_LocalPosition: {x: -173.7, y: 9.8, z: -93.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1190463480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190463478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -14.210114, y: -0.32937926, z: -3.6978405} + m_HandleOut: {x: 39.99359, y: 0.9270201, z: 10.4073715} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1190463481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1190463478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &1232943866 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: -12.537854 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: -8.429565 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: -48.635124 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.48681435 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: 0.54124093 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.45865324 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: -0.5096148 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: 1.19000006 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &1232943867 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 1232943866} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1244766098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1244766099} + - component: {fileID: 1244766100} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1244766099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + 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_Children: + - {fileID: 303086542} + - {fileID: 1024997326} + - {fileID: 1606007129} + - {fileID: 2089173456} + - {fileID: 1978027896} + - {fileID: 802331628} + - {fileID: 574807768} + - {fileID: 2998518} + - {fileID: 1394824518} + - {fileID: 1655437975} + - {fileID: 666838579} + - {fileID: 1580448889} + - {fileID: 1190463479} + - {fileID: 687742779} + - {fileID: 1473308325} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1244766100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1244766098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 303086543} + - {fileID: 1024997327} + - {fileID: 1606007130} + - {fileID: 2089173457} + - {fileID: 1978027895} + - {fileID: 802331629} + - {fileID: 574807769} + - {fileID: 2998519} + - {fileID: 1394824519} + - {fileID: 1655437976} + - {fileID: 666838580} + - {fileID: 1580448890} + - {fileID: 1190463480} + - {fileID: 687742780} + - {fileID: 1473308324} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1366700429 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: CheckpointReverse (1) + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: -213.89798 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 7.1234493 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: -74.918236 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.42431512 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: 0.30010313 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.57579786 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0.6311511 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: .717000008 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &1366700430 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 1366700429} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1375666200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1375666205} + - component: {fileID: 1375666204} + - component: {fileID: 1375666202} + - component: {fileID: 1375666201} + - component: {fileID: 1375666206} + 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 &1375666201 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!124 &1375666202 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 +--- !u!20 &1375666204 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1375666205 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_LocalRotation: {x: 0.09939413, y: 0.87723476, z: -0.20676449, w: 0.4216971} + m_LocalPosition: {x: -59.389797, y: 5.4366646, z: -29.533634} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1375666206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375666200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 818359938} + MoveTo: {fileID: 1459487497} + RollTo: {fileID: 0} + ChaseTime: 0.1 +--- !u!1 &1394824517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1394824518} + - component: {fileID: 1394824519} + - component: {fileID: 1394824520} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1394824518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394824517} + m_LocalRotation: {x: -0.1847812, y: -0.95344037, z: -0.043750122, w: -0.23429324} + m_LocalPosition: {x: -175.2, y: 0, z: 8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1394824519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394824517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -10.406606, y: -0, z: 19.92271} + m_HandleOut: {x: 5.617095, y: 0, z: -10.753531} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1394824520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394824517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1404025304 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1404025305} + - component: {fileID: 1404025306} + m_Layer: 0 + m_Name: Point light (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1404025305 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1404025304} + 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_Children: [] + m_Father: {fileID: 146789593} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1404025306 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1404025304} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1001 &1444172798 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: CheckpointReverse (3) + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: -47.03729 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 11.633904 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 134.42169 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.5097199 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: -0.64077556 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: -0.40099272 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: -0.41084933 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: .335000008 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &1444172799 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 1444172798} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1459487496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1459487497} + m_Layer: 0 + m_Name: ChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1459487497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1459487496} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2.15, z: -5.37} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1523349470} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1473308323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1473308325} + - component: {fileID: 1473308324} + - component: {fileID: 1473308326} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1473308324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473308323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 1 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -19.38622, y: 3.8421502, z: 6.688839} + m_HandleOut: {x: 12.978522, y: -2.5722098, z: -4.477987} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1473308325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473308323} + m_LocalRotation: {x: -0.19750729, y: 0.80833656, z: -0.24183847, w: 0.49909633} + m_LocalPosition: {x: -46.1, y: 1.2, z: -36.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1473308326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473308323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1523349469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1523349470} + - component: {fileID: 1523349471} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1523349470 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523349469} + m_LocalRotation: {x: 0.26244926, y: 0.8064819, z: 0.082692616, w: 0.52332526} + m_LocalPosition: {x: -55.347927, y: 2.8534026, z: -32.766193} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 818359938} + - {fileID: 1459487497} + - {fileID: 1049783418} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1523349471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523349469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0.922 + m_MoveMode: 1 + m_Speed: 40 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 1244766100} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1580448888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1580448889} + - component: {fileID: 1580448890} + - component: {fileID: 1580448891} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1580448889 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1580448888} + m_LocalRotation: {x: 0.4583907, y: 0.8351369, z: 0.16723973, w: 0.25388026} + m_LocalPosition: {x: -210.1, y: 7.2, z: -84} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1580448890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1580448888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -8.287501, y: -0.6551807, z: 12.224028} + m_HandleOut: {x: 8.233686, y: 0.65092623, z: -12.14465} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1580448891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1580448888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1606007128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1606007129} + - component: {fileID: 1606007130} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1606007129 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606007128} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 144.832, y: 0, z: 118.235} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1606007130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1606007128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 20.206257, y: -0, z: -40.972412} + m_HandleOut: {x: -14.982824, y: 0, z: 30.38081} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1629425598 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1629425601} + - component: {fileID: 1629425600} + - component: {fileID: 1629425599} + - component: {fileID: 1629425602} + - component: {fileID: 1629425603} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1629425599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1629425600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1629425601 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1629425602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1629425603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629425598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1655437974 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1655437975} + - component: {fileID: 1655437976} + - component: {fileID: 1655437977} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1655437975 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655437974} + m_LocalRotation: {x: -0.20439857, y: -0.95451134, z: -0.008951821, w: 0.21690851} + m_LocalPosition: {x: -169.6, y: 0, z: -22.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1655437976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655437974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.658277, y: -1.2203546, z: 11.135591} + m_HandleOut: {x: -6.5172696, y: 1.707365, z: -15.579504} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1655437977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1655437974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1694706336 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1694706337} + - component: {fileID: 1694706338} + - component: {fileID: 1694706339} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1694706337 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694706336} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 10, y: -0.0000004371139, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1694706338 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694706336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 5.515433, z: -0} + m_HandleOut: {x: 0, y: -5.515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1694706339 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694706336} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1703670581 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1703670582} + - component: {fileID: 1703670583} + - component: {fileID: 1703670584} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1703670582 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1703670581} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1703670583 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1703670581} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.515433, y: -0, z: -0} + m_HandleOut: {x: 5.515433, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1703670584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1703670581} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &1729692327 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: CheckpointReverse (5) + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 91.63082 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: -1.153426 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: -5.7093415 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.64133674 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: -0.6510148 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.2170016 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0.34318703 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: .0579999983 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &1729692328 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 1729692327} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1742575539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1742575540} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1742575540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742575539} + 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_Children: + - {fileID: 2049692232} + - {fileID: 801592542} + - {fileID: 140951593} + - {fileID: 1375666205} + - {fileID: 1232943867} + - {fileID: 328909481} + - {fileID: 146789593} + - {fileID: 1366700430} + - {fileID: 2127890635} + - {fileID: 1444172799} + - {fileID: 996954005} + - {fileID: 1729692328} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1965732108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1965732109} + - component: {fileID: 1965732110} + m_Layer: 0 + m_Name: Outer Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1965732109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1965732108} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1965732110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1965732108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170395989 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 653 + y: 10 + width: 250 + height: 362 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 8 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 2, y: 2} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + - {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1973745540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1973745541} + - component: {fileID: 1973745542} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1973745541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973745540} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1973745542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1973745540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170385966 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 202 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1244766100} +--- !u!1 &1978027894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1978027896} + - component: {fileID: 1978027895} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1978027895 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978027894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 26.87977, y: -2.7012062, z: 4.1817417} + m_HandleOut: {x: -29.75135, y: 2.9897773, z: -4.6284795} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1978027896 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1978027894} + m_LocalRotation: {x: -0.09956098, y: -0.6663658, z: -0.3705279, w: 0.63933825} + m_LocalPosition: {x: 19.066, y: 0, z: 89.212} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1991352056 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1991352057} + - component: {fileID: 1991352058} + - component: {fileID: 1991352059} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1991352057 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991352056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10, y: 0.00000011924881, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1086252424} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1991352058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991352056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -5.5154324, z: -0} + m_HandleOut: {x: 0, y: 5.515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1991352059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1991352056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2023792361 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2023792362} + - component: {fileID: 2023792363} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2023792362 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023792361} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2023792363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023792361} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170385966 + m_UniqueID: 8 + Properties: + Dimensions: + serializedVersion: 2 + x: 978 + y: 28 + width: 250 + height: 367 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 8 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + - m_ModuleID: 8 + m_SlotName: VMesh + m_TargetModuleID: 13 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &2035433045 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2035433046} + - component: {fileID: 2035433047} + m_Layer: 0 + m_Name: Hollow Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2035433046 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035433045} + 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_Children: [] + m_Father: {fileID: 2072519609} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2035433047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035433045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1170385966 + m_UniqueID: 14 + Properties: + Dimensions: + serializedVersion: 2 + x: 985 + y: 462 + width: 250 + height: 367 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 14 + m_SlotName: VMesh + m_TargetModuleID: 11 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &2049692231 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2049692232} + - component: {fileID: 2049692233} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049692232 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1742575540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &2049692233 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049692231} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1.5 + 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &2066873958 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2066873959} + - component: {fileID: 2066873960} + m_Layer: 0 + m_Name: Point light (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2066873959 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066873958} + 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_Children: [] + m_Father: {fileID: 2127890635} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &2066873960 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2066873958} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 2 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 3.02 + m_Range: 15 + m_SpotAngle: 77.69888 + m_InnerSpotAngle: 60.134113 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &2072519608 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2072519609} + - component: {fileID: 2072519610} + - component: {fileID: 2072519612} + - component: {fileID: 2072519611} + m_Layer: 0 + m_Name: Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2072519609 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + 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_Children: + - {fileID: 1973745541} + - {fileID: 1108340980} + - {fileID: 353699663} + - {fileID: 1965732109} + - {fileID: 819844491} + - {fileID: 914697136} + - {fileID: 2035433046} + - {fileID: 2023792362} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2072519610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1973745542} + - {fileID: 1108340981} + - {fileID: 353699664} + - {fileID: 1965732110} + - {fileID: 819844492} + - {fileID: 914697137} + - {fileID: 2035433047} + - {fileID: 2023792363} + m_LastModuleID: 16 +--- !u!114 &2072519611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &2072519612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072519608} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &2089173455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2089173456} + - component: {fileID: 2089173457} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2089173456 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089173455} + m_LocalRotation: {x: -0.14629652, y: -0.798792, z: 0.10599331, w: 0.57384163} + m_LocalPosition: {x: 62.063, y: 0, z: 144.57} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1244766099} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2089173457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089173455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 32.349598, y: -0, z: 10.048986} + m_HandleOut: {x: -26.10632, y: 0, z: -8.109593} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &2127890634 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1742575540} + m_Modifications: + - target: {fileID: 159084, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Name + value: CheckpointReverse (2) + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: -216.6794 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 2.4265563 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 61.058044 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: 0.25294456 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: 0.19530506 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0.7403876 + objectReference: {fileID: 0} + - target: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0.59135544 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalScale.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.x + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482822, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_Spline + value: + objectReference: {fileID: 1244766100} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_PositionMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_InitialPosition + value: .460000008 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationAxis + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11485522, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} + propertyPath: m_OrientationMode + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, type: 3} +--- !u!4 &2127890635 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 481836, guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64, + type: 3} + m_PrefabInstance: {fileID: 2127890634} + m_PrefabAsset: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/23_CGTube.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/23_CGTube.unity.meta new file mode 100644 index 00000000..377367cb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/23_CGTube.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c9d0bf66a0b714f4f91521515d2e3ab5 +timeCreated: 1439366519 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/24_CGConformPath.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/24_CGConformPath.unity new file mode 100644 index 00000000..38024e4f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/24_CGConformPath.unity @@ -0,0 +1,2979 @@ +%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.4456702, g: 0.49536812, b: 0.57421434, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + 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: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &47077092 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 47077096} + - component: {fileID: 47077095} + - component: {fileID: 47077094} + - component: {fileID: 47077093} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &47077093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 47077092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &47077094 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 47077092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &47077095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 47077092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1402155084} + - {fileID: 1242029976} + - {fileID: 519780016} + - {fileID: 360435641} + - {fileID: 1202425152} + - {fileID: 1282281261} + m_LastModuleID: 13 +--- !u!4 &47077096 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 47077092} + 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_Children: + - {fileID: 1402155085} + - {fileID: 1242029977} + - {fileID: 519780015} + - {fileID: 360435642} + - {fileID: 1202425153} + - {fileID: 1282281262} + - {fileID: 2040574550} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &72089477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 72089480} + - component: {fileID: 72089479} + - component: {fileID: 72089478} + 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 &72089478 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 +--- !u!20 &72089479 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &72089480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_LocalRotation: {x: -0.3350847, y: 0.21305136, z: -0.078068085, w: -0.9144576} + m_LocalPosition: {x: 8.43, y: 12.77, z: -1.51} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 40.249, y: -26.230001, z: 0} +--- !u!1 &89238588 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 89238590} + - component: {fileID: 89238589} + - component: {fileID: 89238591} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &89238589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89238588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &89238590 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89238588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.23, y: 8.73, z: 5.72} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1520495998} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &89238591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89238588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &282950800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 282950802} + - component: {fileID: 282950801} + m_Layer: 0 + m_Name: Directional Light 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &282950801 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282950800} + 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: 0.7 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &282950802 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282950800} + m_LocalRotation: {x: 0.86605287, y: -0.11461374, z: 0.23205814, w: 0.42774433} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 127.42999, y: -30, z: 0} +--- !u!1001 &303659041 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &360435640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 360435642} + - component: {fileID: 360435641} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &360435641 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360435640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 610 + y: 10 + width: 270 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 11 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 100 + m_Optimize: 0 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 1 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!4 &360435642 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360435640} + 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_Children: [] + m_Father: {fileID: 47077096} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &499079391 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 499079393} + - component: {fileID: 499079392} + m_Layer: 0 + m_Name: Directional Light 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &499079392 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499079391} + 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: 0.7 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &499079393 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499079391} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &519780014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519780015} + - component: {fileID: 519780016} + m_Layer: 0 + m_Name: Conform Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &519780015 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519780014} + 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_Children: [] + m_Father: {fileID: 47077096} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &519780016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519780014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 013f55592f4a5d4408ed23aed18bdece, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1575317968 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 250 + height: 244 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 80 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 11 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 11 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_Direction: {x: 0, y: -1, z: 0} + m_MaxDistance: 100 + m_Offset: 0 + m_Warp: 0 + m_LayerMask: + serializedVersion: 2 + m_Bits: 16 +--- !u!1 &758455857 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 758455859} + - component: {fileID: 758455858} + - component: {fileID: 758455861} + - component: {fileID: 758455860} + m_Layer: 0 + m_Name: Input Spline Shape_2_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &758455858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758455857} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.0.0 + ControlPoints: + - {fileID: 1435969474} + - {fileID: 1151327021} + - {fileID: 1096756126} + - {fileID: 1650738274} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &758455859 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758455857} + 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_Children: + - {fileID: 1435969472} + - {fileID: 1151327019} + - {fileID: 1096756124} + - {fileID: 1650738276} + m_Father: {fileID: 1242029977} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &758455860 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758455857} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb08e1dcb0ad99946b5fa3f2aab502ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Width: 1 + m_Height: 1 +--- !u!114 &758455861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 758455857} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb08e1dcb0ad99946b5fa3f2aab502ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Width: 0.5 + m_Height: 0.2 +--- !u!1 &1002869708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002869709} + - component: {fileID: 1002869711} + - component: {fileID: 1002869710} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1002869709 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002869708} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.33, y: 8.73, z: 7.26} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1520495998} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1002869710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002869708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1002869711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1002869708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1055040023 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1055040027} + - component: {fileID: 1055040026} + - component: {fileID: 1055040025} + - component: {fileID: 1055040024} + - component: {fileID: 1055040028} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1055040024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1055040023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1055040025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1055040023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1055040026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1055040023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1055040027 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1055040023} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1055040028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1055040023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1096756123 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1096756124} + - component: {fileID: 1096756126} + - component: {fileID: 1096756125} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1096756124 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1096756123} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.25, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 758455859} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1096756125 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1096756123} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1096756126 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1096756123} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1151327018 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1151327019} + - component: {fileID: 1151327021} + - component: {fileID: 1151327020} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1151327019 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151327018} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.25, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 758455859} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1151327020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151327018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1151327021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1151327018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1154999626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1154999627} + - component: {fileID: 1154999629} + - component: {fileID: 1154999628} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1154999627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154999626} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.17, y: 8.73, z: 3.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1520495998} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1154999628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154999626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1154999629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1154999626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1202425151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202425153} + - component: {fileID: 1202425152} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1202425152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202425151} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 930 + y: 10 + width: 250 + height: 302 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: bcffcab81ca65fe4db75d1f4bfda9af1, type: 2} +--- !u!4 &1202425153 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202425151} + 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_Children: [] + m_Father: {fileID: 47077096} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: The Conform Path module allows you to project a Path onto a collider. + The conformed path is used here to both generate a road mesh, and to move a capsule + allong it. +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1242029975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242029977} + - component: {fileID: 1242029976} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1242029976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242029975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 290 + width: 250 + height: 297 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 758455858} +--- !u!4 &1242029977 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242029975} + 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_Children: + - {fileID: 758455859} + m_Father: {fileID: 47077096} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1282281260 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1282281262} + - component: {fileID: 1282281261} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1282281261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282281260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1230 + y: 10 + width: 273 + height: 391 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 0 + includeTangents: 0 + m_AddNormals: 1 + m_AddTangents: 1 + m_AddUV2: 0 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 0 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!4 &1282281262 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1282281260} + 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_Children: [] + m_Father: {fileID: 47077096} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1402155083 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1402155085} + - component: {fileID: 1402155084} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1402155084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402155083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 225 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 11 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1520495997} +--- !u!4 &1402155085 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1402155083} + 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_Children: [] + m_Father: {fileID: 47077096} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1435969471 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435969472} + - component: {fileID: 1435969474} + - component: {fileID: 1435969473} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1435969472 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435969471} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.25, y: -0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 758455859} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1435969473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435969471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1435969474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435969471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1520495996 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1520495998} + - component: {fileID: 1520495997} + m_Layer: 0 + m_Name: Curvy Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1520495997 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1520495996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 1002869711} + - {fileID: 1880792874} + - {fileID: 1989531950} + - {fileID: 1154999629} + - {fileID: 1867031680} + - {fileID: 89238589} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 1, g: 0.43529412, b: 0, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1520495998 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1520495996} + 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_Children: + - {fileID: 1002869709} + - {fileID: 1880792872} + - {fileID: 1989531949} + - {fileID: 1154999627} + - {fileID: 1867031678} + - {fileID: 89238590} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 141106066} + - {fileID: 72089480} + - {fileID: 135020125} + - {fileID: 282950802} + - {fileID: 499079393} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1650738273 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1650738276} + - component: {fileID: 1650738274} + - component: {fileID: 1650738275} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1650738274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1650738273} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1650738275 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1650738273} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!4 &1650738276 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1650738273} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.25, y: -0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 758455859} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -59} + m_SizeDelta: {x: 240, y: 117} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1805152464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1805152467} + - component: {fileID: 1805152466} + - component: {fileID: 1805152465} + - component: {fileID: 1805152468} + m_Layer: 4 + m_Name: Terrain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!154 &1805152465 +TerrainCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805152464} + m_Material: {fileID: 0} + m_Enabled: 1 + m_TerrainData: {fileID: 15600000, guid: b25a33df98cfd91449b8927cb50edd5f, type: 2} + m_EnableTreeColliders: 1 +--- !u!218 &1805152466 +Terrain: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805152464} + m_Enabled: 1 + serializedVersion: 6 + m_TerrainData: {fileID: 15600000, guid: b25a33df98cfd91449b8927cb50edd5f, type: 2} + m_TreeDistance: 2000 + m_TreeBillboardDistance: 50 + m_TreeCrossFadeLength: 5 + m_TreeMaximumFullLODCount: 50 + m_DetailObjectDistance: 80 + m_DetailObjectDensity: 1 + m_HeightmapPixelError: 5 + m_SplatMapDistance: 1000 + m_HeightmapMaximumLOD: 0 + m_ShadowCastingMode: 2 + m_DrawHeightmap: 1 + m_DrawInstanced: 0 + m_DrawTreesAndFoliage: 1 + m_ReflectionProbeUsage: 1 + m_MaterialTemplate: {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0} + m_BakeLightProbesForTrees: 1 + m_PreserveTreePrototypeLayers: 0 + m_DeringLightProbesForTrees: 1 + m_ScaleInLightmap: 0.0256 + m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} + m_GroupingID: 0 + m_RenderingLayerMask: 1 + m_AllowAutoConnect: 0 +--- !u!4 &1805152467 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805152464} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1805152468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805152464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7f764b97d74553340b32fd397974aab0, type: 3} + m_Name: + m_EditorClassIdentifier: + CurvyGenerator: {fileID: 47077095} +--- !u!1 &1867031677 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1867031678} + - component: {fileID: 1867031680} + - component: {fileID: 1867031679} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1867031678 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867031677} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.94, y: 8.73, z: 3.11} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1520495998} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1867031679 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867031677} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1867031680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867031677} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1880792871 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1880792872} + - component: {fileID: 1880792874} + - component: {fileID: 1880792873} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1880792872 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880792871} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.83, y: 8.73, z: 7.55} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1520495998} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1880792873 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880792871} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1880792874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880792871} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1904728139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1904728144} + - component: {fileID: 1904728143} + - component: {fileID: 1904728142} + - component: {fileID: 1904728141} + - component: {fileID: 1904728140} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1904728140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1904728139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec8c51951f66b4a4099916a8055d980a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 3 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0.3 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Path: + m_Module: {fileID: 360435641} + m_SlotName: Volume +--- !u!136 &1904728141 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1904728139} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1904728142 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1904728139} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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 +--- !u!33 &1904728143 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1904728139} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1904728144 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1904728139} + m_LocalRotation: {x: 0, y: 0.46555105, z: 0, w: 0.88502103} + m_LocalPosition: {x: 3.33, y: 6.872862, z: 7.26} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1989531948 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1989531949} + - component: {fileID: 1989531950} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1989531949 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989531948} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.263, y: 8.73, z: 4.884} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1520495998} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1989531950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989531948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2040574549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2040574550} + m_Layer: 0 + m_Name: Conform Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2040574550 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2040574549} + 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_Children: [] + m_Father: {fileID: 47077096} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/24_CGConformPath.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/24_CGConformPath.unity.meta new file mode 100644 index 00000000..660d4d70 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/24_CGConformPath.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 04df53ffda142144bbd5b74428b7298e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/25_CGExtrusionAdvanced.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/25_CGExtrusionAdvanced.unity new file mode 100644 index 00000000..31714edc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/25_CGExtrusionAdvanced.unity @@ -0,0 +1,9843 @@ +%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.7484321, g: 0.76635545, b: 0.8014706, a: 1} + m_AmbientEquatorColor: {r: 1, g: 0.9393509, b: 0.8088235, a: 1} + m_AmbientGroundColor: {r: 0.53211504, g: 0.5661765, b: 0.34137112, 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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 112000000, guid: 4e3d5ef3f2536854f9f2c02abffc7ebe, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &17702880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 17702881} + - component: {fileID: 17702882} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &17702881 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 17702880} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 75.6, y: 0, z: 30.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &17702882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 17702880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 12.617, y: 0, z: -10.051} + m_HandleOut: {x: -13.193, y: 0, z: 10.51} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &39135266 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 39135267} + - component: {fileID: 39135268} + - component: {fileID: 39135269} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &39135267 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39135266} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &39135268 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39135266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &39135269 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39135266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0.39305732 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &39385268 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 39385269} + - component: {fileID: 39385270} + m_Layer: 0 + m_Name: Create Mesh (Post) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &39385269 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39385268} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &39385270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39385268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -24361468 + m_UniqueID: 16 + Properties: + Dimensions: + serializedVersion: 2 + x: 1438 + y: 1940 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 16 + m_SlotName: VMesh + m_TargetModuleID: 17 + m_TargetSlotName: VMesh + - m_ModuleID: 16 + m_SlotName: Spots + m_TargetModuleID: 14 + m_TargetSlotName: Spots + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 1 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 1 + m_AddNormals: 0 + m_AddTangents: 0 + m_AddUV2: 0 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 0 + m_Material: {fileID: 0} +--- !u!1 &55084770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 55084771} + - component: {fileID: 55084772} + m_Layer: 0 + m_Name: TRS Mesh (Wire Support) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &55084771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55084770} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &55084772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55084770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1073122455 + m_UniqueID: 40 + Properties: + Dimensions: + serializedVersion: 2 + x: 1446 + y: 1225 + width: 250 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 40 + m_SlotName: VMesh + m_TargetModuleID: 36 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 40 + m_SlotName: VMesh + m_TargetModuleID: 41 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: 8.1, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &110203340 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 110203341} + - component: {fileID: 110203342} + - component: {fileID: 110203343} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &110203341 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110203340} + 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_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &110203342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110203340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &110203343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110203340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.75 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &112177127 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 112177128} + - component: {fileID: 112177129} + - component: {fileID: 112177130} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &112177128 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112177127} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.76, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &112177129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112177127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &112177130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 112177127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 1 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &175841623 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 175841624} + - component: {fileID: 175841625} + m_Layer: 0 + m_Name: RailtrackShapeBridge + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &175841624 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175841623} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: -0.7071068} + m_LocalPosition: {x: -9.47, y: 8.67, z: 34.93} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 492842129} + - {fileID: 925195394} + - {fileID: 1022696087} + - {fileID: 881520503} + - {fileID: 790987108} + - {fileID: 1609695420} + - {fileID: 545278820} + - {fileID: 1674573018} + - {fileID: 2115202422} + - {fileID: 1341877417} + - {fileID: 2049991384} + - {fileID: 1661899618} + - {fileID: 1500029113} + - {fileID: 1399006752} + - {fileID: 697348360} + - {fileID: 981079485} + - {fileID: 958228005} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &175841625 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175841623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 492842128} + - {fileID: 925195395} + - {fileID: 1022696088} + - {fileID: 881520504} + - {fileID: 790987109} + - {fileID: 1609695419} + - {fileID: 545278821} + - {fileID: 1674573019} + - {fileID: 2115202423} + - {fileID: 1341877418} + - {fileID: 2049991385} + - {fileID: 1661899619} + - {fileID: 1500029114} + - {fileID: 1399006753} + - {fileID: 697348361} + - {fileID: 981079486} + - {fileID: 958228003} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 59 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &204621475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 204621477} + - component: {fileID: 204621476} + m_Layer: 0 + m_Name: RailtrackTrainViewer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &204621476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 204621475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 2070575504} + MoveTo: {fileID: 786163612} + RollTo: {fileID: 0} + ChaseTime: 0.1 +--- !u!4 &204621477 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 204621475} + m_LocalRotation: {x: 0, y: 0.9999188, z: 0, w: -0.012745931} + m_LocalPosition: {x: 17.497583, y: 2.5, z: 48.77239} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1901178733} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &230261054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 230261055} + - component: {fileID: 230261056} + - component: {fileID: 230261057} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &230261055 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230261054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.84, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &230261056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230261054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &230261057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230261054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.5 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &269685837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 269685838} + - component: {fileID: 269685839} + m_Layer: 0 + m_Name: Volume Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &269685838 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269685837} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &269685839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269685837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 988 + y: 10 + width: 250 + height: 385 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 1 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} +--- !u!1 &274187277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 274187278} + - component: {fileID: 274187279} + m_Layer: 0 + m_Name: RailtrackShapeMain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &274187278 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274187277} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -42.76, y: 0, z: 57.49} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1105913678} + - {fileID: 593513257} + - {fileID: 230261055} + - {fileID: 917275655} + - {fileID: 1300744903} + - {fileID: 112177128} + - {fileID: 110203341} + - {fileID: 1715885238} + - {fileID: 703963514} + - {fileID: 888458646} + - {fileID: 345730287} + - {fileID: 39135267} + - {fileID: 1725955208} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &274187279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 274187277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1105913677} + - {fileID: 593513258} + - {fileID: 230261056} + - {fileID: 917275656} + - {fileID: 1300744904} + - {fileID: 112177129} + - {fileID: 110203342} + - {fileID: 1715885239} + - {fileID: 703963515} + - {fileID: 888458647} + - {fileID: 345730288} + - {fileID: 39135268} + - {fileID: 1725955209} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &307032789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 307032790} + - component: {fileID: 307032791} + m_Layer: 0 + m_Name: Volume Spots (Wire Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &307032790 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 307032789} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &307032791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 307032789} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1249283151 + m_UniqueID: 32 + Properties: + Dimensions: + serializedVersion: 2 + x: 990 + y: 2998 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 32 + m_SlotName: Bounds + m_TargetModuleID: 31 + m_TargetSlotName: GameObject + - m_ModuleID: 32 + m_SlotName: Path/Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 32 + m_SlotName: Spots + m_TargetModuleID: 33 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Poles + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 10 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 2 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1 &334910239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 334910240} + - component: {fileID: 334910241} + m_Layer: 0 + m_Name: TRS Mesh (Wire) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &334910240 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334910239} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &334910241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334910239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 263882844 + m_UniqueID: 38 + Properties: + Dimensions: + serializedVersion: 2 + x: 1449 + y: 994 + width: 250 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 38 + m_SlotName: VMesh + m_TargetModuleID: 36 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 38 + m_SlotName: VMesh + m_TargetModuleID: 39 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: 6.25, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &345730286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 345730287} + - component: {fileID: 345730288} + - component: {fileID: 345730289} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &345730287 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345730286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.84, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &345730288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345730286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &345730289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345730286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &349591569 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 349591570} + - component: {fileID: 349591571} + - component: {fileID: 349591572} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &349591570 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349591569} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.28, y: 9.75, z: 35} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &349591571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349591569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 11.09, y: 0, z: 0} + m_HandleOut: {x: -11.09, y: -0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &349591572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349591569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &372754200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 372754201} + - component: {fileID: 372754202} + m_Layer: 0 + m_Name: TRS Mesh (Post) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &372754201 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 372754200} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &372754202 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 372754200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 2089363522 + m_UniqueID: 22 + Properties: + Dimensions: + serializedVersion: 2 + x: 1443 + y: 341 + width: 250 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 22 + m_SlotName: VMesh + m_TargetModuleID: 21 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 22 + m_SlotName: VMesh + m_TargetModuleID: 23 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: -0.25, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &432909414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 432909415} + - component: {fileID: 432909416} + m_Layer: 0 + m_Name: Shape Extrusion (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &432909415 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432909414} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &432909416 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432909414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 488 + y: 20 + width: 270 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 8 + m_TargetSlotName: Path/Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 14 + m_TargetSlotName: Path/Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 32 + m_TargetSlotName: Path/Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 43 + m_TargetSlotName: Path/Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 82 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &454274540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 454274541} + - component: {fileID: 454274542} + m_Layer: 0 + m_Name: Volume Mesh (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &454274541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454274540} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &454274542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 454274540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 559921109 + m_UniqueID: 21 + Properties: + Dimensions: + serializedVersion: 2 + x: 989 + y: 340 + width: 250 + height: 309 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 21 + m_SlotName: Volume + m_TargetModuleID: 19 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 21 + m_SlotName: VMesh + m_TargetModuleID: 22 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 10} + MaterialID: 0 + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0.5, y: 0} + UVScale: {x: 0.5, y: 0.25} + MaterialID: 1 + m_Material: + - {fileID: 2100000, guid: 5a955516767ce5f468c818f1f44ab381, type: 2} + - {fileID: 2100000, guid: 5a955516767ce5f468c818f1f44ab381, type: 2} +--- !u!1 &459783049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 459783050} + - component: {fileID: 459783051} + m_Layer: 0 + m_Name: Shape Extrusion (Wire) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &459783050 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459783049} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &459783051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459783049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1206665701 + m_UniqueID: 35 + Properties: + Dimensions: + serializedVersion: 2 + x: 489 + y: 740 + width: 270 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 35 + m_SlotName: Cross + m_TargetModuleID: 34 + m_TargetSlotName: Shape + - m_ModuleID: 35 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 35 + m_SlotName: Volume + m_TargetModuleID: 36 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &480188898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 480188899} + - component: {fileID: 480188900} + - component: {fileID: 480188901} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &480188899 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480188898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.03, y: -0.0000000013113416, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1387561707} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &480188900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480188898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.136647e-10, y: 0.016546298, z: -0} + m_HandleOut: {x: -5.136647e-10, y: -0.016546298, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &480188901 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480188898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1001 &486394629 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &492842127 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 492842129} + - component: {fileID: 492842128} + - component: {fileID: 492842130} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &492842128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492842127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &492842129 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492842127} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &492842130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 492842127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &544951582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 544951583} + - component: {fileID: 544951584} + m_Layer: 0 + m_Name: Volume Spots (Posts) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &544951583 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 544951582} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &544951584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 544951582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1391835978 + m_UniqueID: 14 + Properties: + Dimensions: + serializedVersion: 2 + x: 988 + y: 1790 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 14 + m_SlotName: Path/Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + - m_ModuleID: 14 + m_SlotName: Bounds + m_TargetModuleID: 17 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 14 + m_SlotName: Spots + m_TargetModuleID: 16 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 1 + m_CrossBase: -0.03 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: post + m_KeepTogether: 0 + m_SpaceBefore: + From: 5.04 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0.1 + To: 0.2 + SimpleValue: 0 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: -0.02 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 1 + m_PositionOffset: + From: 0.1 + To: 0.2 + SimpleValue: 0 + m_Height: + From: -0.02 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1 &545278819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 545278820} + - component: {fileID: 545278821} + - component: {fileID: 545278822} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &545278820 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 545278819} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &545278821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 545278819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &545278822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 545278819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &567697835 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 567697837} + - component: {fileID: 567697836} + 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 &567697836 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567697835} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.86388093, b: 0.49264705, 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &567697837 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567697835} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: -19.951036, y: 8.03109, z: -24.347883} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1507523281} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &593513256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 593513257} + - component: {fileID: 593513258} + - component: {fileID: 593513259} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &593513257 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 593513256} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &593513258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 593513256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &593513259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 593513256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &686387756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 686387758} + - component: {fileID: 686387757} + - component: {fileID: 686387759} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &686387757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686387756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0.016546296, z: -0} + m_HandleOut: {x: 0, y: 0.016546298, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &686387758 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686387756} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.03, y: 3.5774642e-10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1387561707} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &686387759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 686387756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &697348359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 697348360} + - component: {fileID: 697348361} + - component: {fileID: 697348362} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &697348360 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697348359} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &697348361 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697348359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &697348362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697348359} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &703963513 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 703963514} + - component: {fileID: 703963515} + - component: {fileID: 703963516} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &703963514 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703963513} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.76, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &703963515 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703963513} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &703963516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703963513} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &759920513 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 759920517} + - component: {fileID: 759920516} + - component: {fileID: 759920515} + - component: {fileID: 759920514} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &759920514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 759920513} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &759920515 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 759920513} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &759920516 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 759920513} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &759920517 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 759920513} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1286487864} + m_Father: {fileID: 1507523281} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &786163611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 786163612} + m_Layer: 0 + m_Name: TargetMove + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &786163612 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786163611} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 2.5, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1292288151} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &790987107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 790987108} + - component: {fileID: 790987109} + - component: {fileID: 790987110} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &790987108 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790987107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &790987109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790987107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &790987110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790987107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &825225154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 825225155} + - component: {fileID: 825225156} + m_Layer: 0 + m_Name: Create GO (Wire Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &825225155 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825225154} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &825225156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825225154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -900813817 + m_UniqueID: 33 + Properties: + Dimensions: + serializedVersion: 2 + x: 1426 + y: 3267 + width: 250 + height: 211 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 33 + m_SlotName: GameObject + m_TargetModuleID: 31 + m_TargetSlotName: GameObject + - m_ModuleID: 33 + m_SlotName: Spots + m_TargetModuleID: 32 + m_TargetSlotName: Spots + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 1 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!1 &865036958 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 865036959} + - component: {fileID: 865036961} + - component: {fileID: 865036960} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &865036959 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865036958} + 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_Children: [] + m_Father: {fileID: 1286487864} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &865036960 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865036958} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'This is an advanced example showing the simultaneous use of multiple modules. + It''s using complex shape extrusions, manual UV mapping, mesh and object placement, + and modifiers. + + + Use Up/Down to control the speed and the mouse to + look around.' +--- !u!222 &865036961 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865036958} + m_CullTransparentMesh: 0 +--- !u!1 &881520502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 881520503} + - component: {fileID: 881520504} + - component: {fileID: 881520505} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &881520503 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 881520502} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &881520504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 881520502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &881520505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 881520502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &888458645 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 888458646} + - component: {fileID: 888458647} + - component: {fileID: 888458648} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &888458646 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888458645} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.84, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &888458647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888458645} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &888458648 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888458645} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &900183193 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 900183194} + - component: {fileID: 900183195} + m_Layer: 0 + m_Name: Create Mesh (Bridge Caps) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &900183194 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 900183193} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &900183195 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 900183193} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1859389596 + m_UniqueID: 25 + Properties: + Dimensions: + serializedVersion: 2 + x: 1750 + y: 672 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 25 + m_SlotName: VMesh + m_TargetModuleID: 27 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &917275654 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 917275655} + - component: {fileID: 917275656} + - component: {fileID: 917275657} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &917275655 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917275654} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.84, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &917275656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917275654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &917275657 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917275654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &919765671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 919765672} + - component: {fileID: 919765673} + m_Layer: 0 + m_Name: TRS Mesh (Bridge Caps) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &919765672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 919765671} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &919765673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 919765671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fffc7e9dfb6294185e9c3289854b61, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -839994072 + m_UniqueID: 27 + Properties: + Dimensions: + serializedVersion: 2 + x: 1443 + y: 671 + width: 250 + height: 207 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 50 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 27 + m_SlotName: VMesh + m_TargetModuleID: 24 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 27 + m_SlotName: VMesh + m_TargetModuleID: 25 + m_TargetSlotName: VMesh + m_Transpose: {x: 0, y: -0.25, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &925195393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 925195394} + - component: {fileID: 925195395} + - component: {fileID: 925195396} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &925195394 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 925195393} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &925195395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 925195393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &925195396 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 925195393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &958228002 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 958228005} + - component: {fileID: 958228003} + - component: {fileID: 958228004} + m_Layer: 0 + m_Name: CP0016 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &958228003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958228002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &958228004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958228002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!4 &958228005 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958228002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &981079484 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 981079485} + - component: {fileID: 981079486} + - component: {fileID: 981079487} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &981079485 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 981079484} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &981079486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 981079484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &981079487 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 981079484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!1 &1022696086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1022696087} + - component: {fileID: 1022696088} + - component: {fileID: 1022696089} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1022696087 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022696086} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1022696088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022696086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1022696089 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022696086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1073722062 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1073722063} + - component: {fileID: 1073722064} + - component: {fileID: 1073722065} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1073722063 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1073722062} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 8.3, y: 0, z: 75} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1073722064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1073722062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -15.350741, y: -0, z: 15.851337} + m_HandleOut: {x: 26.123396, y: 0, z: -26.975292} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1073722065 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1073722062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1085613599 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1085613600} + - component: {fileID: 1085613601} + m_Layer: 0 + m_Name: Input Spline Shape (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1085613600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085613599} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1085613601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085613599} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 163 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 274187279} +--- !u!1 &1105913676 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1105913678} + - component: {fileID: 1105913677} + - component: {fileID: 1105913679} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1105913677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105913676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1105913678 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105913676} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.5, y: -0.25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1105913679 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105913676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1109984236 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1109984237} + - component: {fileID: 1109984240} + - component: {fileID: 1109984239} + - component: {fileID: 1109984238} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1109984237 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1109984236} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -19.951036, y: 5.0310893, z: -24.347883} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1507523281} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1109984238 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1109984236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1109984239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1109984236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1109984240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1109984236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1227627161 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1227627162} + - component: {fileID: 1227627163} + - component: {fileID: 1227627164} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1227627162 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227627161} + m_LocalRotation: {x: -0.000025626918, y: -0.4894717, z: 0.00004565568, w: 0.8720192} + m_LocalPosition: {x: -44.7, y: 0, z: 45.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1227627163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227627161} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 1 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 12.471, y: 0, z: -7.34} + m_HandleOut: {x: -12.675, y: 0, z: 7.461} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1227627164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227627161} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1263109833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1263109834} + - component: {fileID: 1263109835} + - component: {fileID: 1263109836} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1263109834 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263109833} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000000026226832, y: -0.03, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1387561707} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1263109835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263109833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.016546298, y: -0.000000001540994, z: -0} + m_HandleOut: {x: -0.016546296, y: 0.0000000015409938, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1263109836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263109833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1276200850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1276200851} + - component: {fileID: 1276200852} + m_Layer: 0 + m_Name: Volume Spots (Wire Holders) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1276200851 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276200850} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1276200852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1276200850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -292533001 + m_UniqueID: 43 + Properties: + Dimensions: + serializedVersion: 2 + x: 997 + y: 3476 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 43 + m_SlotName: Bounds + m_TargetModuleID: 42 + m_TargetSlotName: GameObject + - m_ModuleID: 43 + m_SlotName: Path/Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 43 + m_SlotName: Spots + m_TargetModuleID: 44 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 6 + To: 3 + SimpleValue: 0 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 2 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: -180 + To: 180 + SimpleValue: 0 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 180, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1001 &1277525079 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1292288151} + m_Modifications: + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalPosition.y + value: .238000005 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.x + value: -.707106829 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6480248, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + - {fileID: 6470380, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + - {fileID: 6486020, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} +--- !u!1 &1286487863 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1286487864} + - component: {fileID: 1286487867} + - component: {fileID: 1286487866} + - component: {fileID: 1286487865} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1286487864 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286487863} + 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_Children: + - {fileID: 865036959} + m_Father: {fileID: 759920517} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -89.35} + m_SizeDelta: {x: 240, y: 178.7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1286487865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286487863} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &1286487866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286487863} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1286487867 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1286487863} + m_CullTransparentMesh: 0 +--- !u!1 &1292288149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1292288151} + - component: {fileID: 1292288150} + - component: {fileID: 1292288152} + m_Layer: 0 + m_Name: RailtrackTrainController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1292288150 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292288149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0.035 + m_MoveMode: 1 + m_Speed: 4 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 1407177232} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1292288151 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292288149} + m_LocalRotation: {x: -0.000003253745, y: 0.99991876, z: 0.000000041476333, w: -0.012746225} + m_LocalPosition: {x: 17.4976, y: 0, z: 48.77239} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 786163612} + - {fileID: 2070575504} + - {fileID: 1702386383} + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1292288152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292288149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4deb53928c8b3045996fc7bf678201f, type: 3} + m_Name: + m_EditorClassIdentifier: + acceleration: 2 + limit: 30 + splineController: {fileID: 1292288150} +--- !u!1 &1300744902 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1300744903} + - component: {fileID: 1300744904} + - component: {fileID: 1300744905} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1300744903 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1300744902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.76, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1300744904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1300744902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1300744905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1300744902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1315556277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1315556281} + - component: {fileID: 1315556280} + - component: {fileID: 1315556279} + - component: {fileID: 1315556278} + - component: {fileID: 1315556282} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1315556278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1315556277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1315556279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1315556277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1315556280 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1315556277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1315556281 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1315556277} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1315556282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1315556277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1322155244 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1322155245} + - component: {fileID: 1322155248} + - component: {fileID: 1322155247} + - component: {fileID: 1322155246} + - component: {fileID: 1322155252} + - component: {fileID: 1322155251} + - component: {fileID: 1322155250} + - component: {fileID: 1322155249} + - component: {fileID: 1322155254} + - component: {fileID: 1322155255} + - component: {fileID: 1322155253} + m_Layer: 0 + m_Name: RailtrackGenerator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1322155245 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + 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_Children: + - {fileID: 1351196850} + - {fileID: 1085613600} + - {fileID: 2062652760} + - {fileID: 1423438458} + - {fileID: 1786240925} + - {fileID: 1608052724} + - {fileID: 1860925691} + - {fileID: 2021445305} + - {fileID: 2018811644} + - {fileID: 432909415} + - {fileID: 1584446636} + - {fileID: 459783050} + - {fileID: 269685838} + - {fileID: 1527545695} + - {fileID: 544951583} + - {fileID: 307032790} + - {fileID: 1276200851} + - {fileID: 454274541} + - {fileID: 1415126776} + - {fileID: 2112834641} + - {fileID: 1396232812} + - {fileID: 1533416532} + - {fileID: 1743263965} + - {fileID: 39385269} + - {fileID: 825225155} + - {fileID: 2117960143} + - {fileID: 372754201} + - {fileID: 919765672} + - {fileID: 1876492557} + - {fileID: 334910240} + - {fileID: 55084771} + - {fileID: 1505057083} + - {fileID: 900183194} + - {fileID: 1667247429} + - {fileID: 1605441112} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1322155246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1351196851} + - {fileID: 1085613601} + - {fileID: 2062652761} + - {fileID: 1423438459} + - {fileID: 1786240926} + - {fileID: 1608052725} + - {fileID: 1860925692} + - {fileID: 2021445306} + - {fileID: 2018811645} + - {fileID: 432909416} + - {fileID: 1584446637} + - {fileID: 459783051} + - {fileID: 269685839} + - {fileID: 1527545696} + - {fileID: 544951584} + - {fileID: 307032791} + - {fileID: 1276200852} + - {fileID: 454274542} + - {fileID: 1415126777} + - {fileID: 2112834642} + - {fileID: 1396232813} + - {fileID: 1533416533} + - {fileID: 1743263966} + - {fileID: 39385270} + - {fileID: 825225156} + - {fileID: 2117960144} + - {fileID: 372754202} + - {fileID: 919765673} + - {fileID: 1876492558} + - {fileID: 334910241} + - {fileID: 55084772} + - {fileID: 1505057084} + - {fileID: 900183195} + - {fileID: 1667247430} + - {fileID: 1605441113} + m_LastModuleID: 44 +--- !u!114 &1322155249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_d + m_Prefabs: + - {fileID: 100000, guid: ea5c61c14ea67cf419612c0a501df4bb, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155250 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_c + m_Prefabs: + - {fileID: 100000, guid: 90c5239fbdc98f347b17525ec6d1569f, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155251 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_b + m_Prefabs: + - {fileID: 100000, guid: 5873b19dcde231d48939d2ddacd8d14f, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 6_rail_sleeper_a + m_Prefabs: + - {fileID: 100000, guid: db95e59c116ef034eb7d8478fc8c85ca, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 44_rail_wire_attachment_a + m_Prefabs: + - {fileID: 100000, guid: 8a7d08206a43f934eabc16cdaea15657, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 30_rail_bridge_support + m_Prefabs: + - {fileID: 100002, guid: 51d6f4c434846684d989fa66e7a4edff, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1322155255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322155244} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 33_rail_support + m_Prefabs: + - {fileID: 100000, guid: 6a2cc975c4ce2824b8bf4a727feccbb0, type: 3} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &1341877416 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1341877417} + - component: {fileID: 1341877418} + - component: {fileID: 1341877419} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1341877417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341877416} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1341877418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341877416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1341877419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341877416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1351196849 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1351196850} + - component: {fileID: 1351196851} + m_Layer: 0 + m_Name: Input Spline Path (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1351196850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1351196849} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1351196851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1351196849} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 19 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 19 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 35 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1407177232} +--- !u!1 &1387561706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1387561707} + - component: {fileID: 1387561709} + - component: {fileID: 1387561708} + m_Layer: 0 + m_Name: RailtrackShapeWire + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1387561707 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1387561706} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.005, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1791650634} + - {fileID: 480188899} + - {fileID: 1263109834} + - {fileID: 686387758} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1387561708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1387561706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Count: 4 + m_Radius: 0.03 +--- !u!114 &1387561709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1387561706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1791650635} + - {fileID: 480188900} + - {fileID: 1263109835} + - {fileID: 686387757} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1396232811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1396232812} + - component: {fileID: 1396232813} + m_Layer: 0 + m_Name: Volume Mesh (Wire) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1396232812 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396232811} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1396232813 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1396232811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1901730233 + m_UniqueID: 36 + Properties: + Dimensions: + serializedVersion: 2 + x: 989 + y: 910 + width: 250 + height: 213 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 36 + m_SlotName: Volume + m_TargetModuleID: 35 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 36 + m_SlotName: VMesh + m_TargetModuleID: 38 + m_TargetSlotName: VMesh + - m_ModuleID: 36 + m_SlotName: VMesh + m_TargetModuleID: 40 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0.5, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} +--- !u!1 &1399006751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399006752} + - component: {fileID: 1399006753} + - component: {fileID: 1399006754} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1399006752 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399006751} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1399006753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399006751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1399006754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1399006751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1407177230 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1407177231} + - component: {fileID: 1407177232} + m_Layer: 0 + m_Name: RailtrackPath + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1407177231 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1407177230} + 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_Children: + - {fileID: 1073722063} + - {fileID: 1493666283} + - {fileID: 2042997771} + - {fileID: 17702881} + - {fileID: 1930501671} + - {fileID: 349591570} + - {fileID: 1227627162} + - {fileID: 1993852841} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1407177232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1407177230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1073722064} + - {fileID: 1493666282} + - {fileID: 2042997772} + - {fileID: 17702882} + - {fileID: 1930501672} + - {fileID: 349591571} + - {fileID: 1227627163} + - {fileID: 1993852840} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1415126775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1415126776} + - component: {fileID: 1415126777} + m_Layer: 0 + m_Name: Volume Caps (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1415126776 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1415126775} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1415126777 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1415126775} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1664037744 + m_UniqueID: 24 + Properties: + Dimensions: + serializedVersion: 2 + x: 990 + y: 661 + width: 250 + height: 265 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 24 + m_SlotName: Volume + m_TargetModuleID: 19 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 24 + m_SlotName: VMesh + m_TargetModuleID: 27 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0.25} + UVScale: {x: 1, y: 0.5} + m_StartMaterial: {fileID: 2100000, guid: 5a955516767ce5f468c818f1f44ab381, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 90 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1423438457 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1423438458} + - component: {fileID: 1423438459} + m_Layer: 0 + m_Name: Input Mesh (Posts) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1423438458 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1423438457} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1423438459 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1423438457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4dcd8018d6d8ecf4f876101d6e13a763, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 49881043 + m_UniqueID: 17 + Properties: + Dimensions: + serializedVersion: 2 + x: 514 + y: 2007 + width: 250 + height: 357 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 17 + m_SlotName: VMesh + m_TargetModuleID: 14 + m_TargetSlotName: Bounds + - m_ModuleID: 17 + m_SlotName: VMesh + m_TargetModuleID: 16 + m_TargetSlotName: VMesh + m_Meshes: + - m_Mesh: {fileID: 4300000, guid: 1b4d7b9afdf68ee4c8ffb212e7ee7606, type: 3} + m_Material: + - {fileID: 2100000, guid: e3d9562a082e55a4eac388df619cbabb, type: 2} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &1493666281 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1493666283} + - component: {fileID: 1493666282} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1493666282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1493666281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -30.573921, y: -0, z: 21.802145} + m_HandleOut: {x: 21.231852, y: 0, z: -15.140351} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1493666283 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1493666281} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.98, y: 0, z: -20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1500029112 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1500029113} + - component: {fileID: 1500029114} + - component: {fileID: 1500029115} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1500029113 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1500029112} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.3, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1500029114 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1500029112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1500029115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1500029112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1505057082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1505057083} + - component: {fileID: 1505057084} + m_Layer: 0 + m_Name: Create Mesh (Post) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1505057083 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1505057082} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1505057084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1505057082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1994242750 + m_UniqueID: 23 + Properties: + Dimensions: + serializedVersion: 2 + x: 1747 + y: 342 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 23 + m_SlotName: VMesh + m_TargetModuleID: 22 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1507523280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1507523281} + m_Layer: 0 + m_Name: Other + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1507523281 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1507523280} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 19.951036, y: -5.0310893, z: 24.347883} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 567697837} + - {fileID: 1777733070} + - {fileID: 759920517} + - {fileID: 1109984237} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1527545694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1527545695} + - component: {fileID: 1527545696} + m_Layer: 0 + m_Name: Volume Spots (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1527545695 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527545694} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1527545696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527545694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1313367643 + m_UniqueID: 8 + Properties: + Dimensions: + serializedVersion: 2 + x: 988 + y: 1203 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 8 + m_SlotName: Path/Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + - m_ModuleID: 8 + m_SlotName: Bounds + m_TargetModuleID: 11 + m_TargetSlotName: GameObject + OutputLinks: + - m_ModuleID: 8 + m_SlotName: Spots + m_TargetModuleID: 6 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: a + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: b + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 1 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: c + m_KeepTogether: 0 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 2 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + - m_Weight: 0.5 + m_Name: d + m_KeepTogether: 1 + m_SpaceBefore: + From: 0.15 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0.15 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 1 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0.03 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 3 + m_DistributionMode: 1 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0.03 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 3 + SimpleValue: 0 + m_RepeatingOrder: 0 + m_FitEnd: 0 +--- !u!1 &1533416531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1533416532} + - component: {fileID: 1533416533} + m_Layer: 0 + m_Name: Create Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1533416532 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1533416531} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1533416533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1533416531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1441 + y: 11 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1584446635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1584446636} + - component: {fileID: 1584446637} + m_Layer: 0 + m_Name: Shape Extrusion (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1584446636 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1584446635} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1584446637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1584446635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -256936625 + m_UniqueID: 19 + Properties: + Dimensions: + serializedVersion: 2 + x: 488 + y: 372 + width: 270 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 19 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 19 + m_SlotName: Cross + m_TargetModuleID: 18 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 19 + m_SlotName: Volume + m_TargetModuleID: 21 + m_TargetSlotName: Volume + - m_ModuleID: 19 + m_SlotName: Volume + m_TargetModuleID: 24 + m_TargetSlotName: Volume + - m_ModuleID: 19 + m_SlotName: Volume + m_TargetModuleID: 29 + m_TargetSlotName: Path/Volume + m_Range: + From: 1.475 + To: 0.3 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 100 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &1605441111 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1605441112} + - component: {fileID: 1605441113} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1605441112 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605441111} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 34 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1605441113 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605441111} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -951132687 + m_UniqueID: 41 + Properties: + Dimensions: + serializedVersion: 2 + x: 1747 + y: 1328 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 41 + m_SlotName: VMesh + m_TargetModuleID: 40 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1608052723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1608052724} + - component: {fileID: 1608052725} + m_Layer: 0 + m_Name: Input GO (Bridge Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1608052724 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608052723} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1608052725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608052723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -788330283 + m_UniqueID: 28 + Properties: + Dimensions: + serializedVersion: 2 + x: 538 + y: 2540 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 28 + m_SlotName: GameObject + m_TargetModuleID: 29 + m_TargetSlotName: Bounds + - m_ModuleID: 28 + m_SlotName: GameObject + m_TargetModuleID: 30 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 100002, guid: 51d6f4c434846684d989fa66e7a4edff, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &1609695418 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1609695420} + - component: {fileID: 1609695419} + - component: {fileID: 1609695421} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1609695419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1609695418} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1609695420 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1609695418} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.5, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1609695421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1609695418} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1661899617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1661899618} + - component: {fileID: 1661899619} + - component: {fileID: 1661899620} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1661899618 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661899617} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.5, y: 0.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1661899619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661899617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1661899620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661899617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1667247428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1667247429} + - component: {fileID: 1667247430} + m_Layer: 0 + m_Name: Create Mesh (Wire) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1667247429 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1667247428} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 33 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1667247430 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1667247428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 442184838 + m_UniqueID: 39 + Properties: + Dimensions: + serializedVersion: 2 + x: 1748 + y: 996 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 39 + m_SlotName: VMesh + m_TargetModuleID: 38 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1674573017 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1674573018} + - component: {fileID: 1674573019} + - component: {fileID: 1674573020} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1674573018 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674573017} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.8, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1674573019 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674573017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1674573020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674573017} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.5 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!4 &1702386383 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, + type: 3} + m_PrefabInstance: {fileID: 1277525079} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1715885237 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1715885238} + - component: {fileID: 1715885239} + - component: {fileID: 1715885240} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1715885238 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715885237} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.76, y: 0.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1715885239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715885237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1715885240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715885237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 1 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!1 &1725955207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1725955208} + - component: {fileID: 1725955209} + - component: {fileID: 1725955210} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1725955208 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725955207} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.5, y: -0.25, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 274187278} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1725955209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725955207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1725955210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1725955207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1743263964 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1743263965} + - component: {fileID: 1743263966} + m_Layer: 0 + m_Name: Create GO (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1743263965 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743263964} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1743263966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743263964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 818504287 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 1396 + y: 1500 + width: 250 + height: 211 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Spots + m_TargetModuleID: 8 + m_TargetSlotName: Spots + - m_ModuleID: 6 + m_SlotName: GameObject + m_TargetModuleID: 11 + m_TargetSlotName: GameObject + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 1 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!1 &1777733066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1777733070} + - component: {fileID: 1777733069} + - component: {fileID: 1777733068} + - component: {fileID: 1777733067} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1777733067 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1777733066} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3fbb64eeb951ac14381179a841926902, 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: 1 + 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 +--- !u!64 &1777733068 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1777733066} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1777733069 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1777733066} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1777733070 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1777733066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -14.9, y: 4.67, z: 8.9} + m_LocalScale: {x: 25, y: 25, z: 25} + m_Children: [] + m_Father: {fileID: 1507523281} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1786240924 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1786240925} + - component: {fileID: 1786240926} + m_Layer: 0 + m_Name: Input Spline Shape (Bridge) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1786240925 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1786240924} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1786240926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1786240924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -442953131 + m_UniqueID: 18 + Properties: + Dimensions: + serializedVersion: 2 + x: 14 + y: 304 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 18 + m_SlotName: Shape + m_TargetModuleID: 19 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 175841625} +--- !u!1 &1791650633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1791650634} + - component: {fileID: 1791650635} + - component: {fileID: 1791650636} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1791650634 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791650633} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.03, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1387561707} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1791650635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791650633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.016546298, y: 5.136647e-10, z: -0} + m_HandleOut: {x: 0.016546298, y: -5.136647e-10, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1791650636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791650633} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1860925690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1860925691} + - component: {fileID: 1860925692} + m_Layer: 0 + m_Name: Input GO (Wire Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1860925691 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1860925690} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1860925692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1860925690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -788330283 + m_UniqueID: 31 + Properties: + Dimensions: + serializedVersion: 2 + x: 566 + y: 3269 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 31 + m_SlotName: GameObject + m_TargetModuleID: 32 + m_TargetSlotName: Bounds + - m_ModuleID: 31 + m_SlotName: GameObject + m_TargetModuleID: 33 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 100000, guid: 6a2cc975c4ce2824b8bf4a727feccbb0, type: 3} + m_Translation: {x: 3, y: -0.2, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &1876492556 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1876492557} + - component: {fileID: 1876492558} + m_Layer: 0 + m_Name: Create GO (Bridge Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1876492557 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1876492556} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1876492558 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1876492556} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -115304907 + m_UniqueID: 30 + Properties: + Dimensions: + serializedVersion: 2 + x: 1429 + y: 2535 + width: 250 + height: 211 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 30 + m_SlotName: Spots + m_TargetModuleID: 29 + m_TargetSlotName: Spots + - m_ModuleID: 30 + m_SlotName: GameObject + m_TargetModuleID: 28 + m_TargetSlotName: GameObject + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 0 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!1 &1901178728 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1901178733} + - component: {fileID: 1901178732} + - component: {fileID: 1901178730} + - component: {fileID: 1901178729} + - component: {fileID: 1901178734} + 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 &1901178729 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901178728} + m_Enabled: 1 +--- !u!124 &1901178730 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901178728} + m_Enabled: 1 +--- !u!20 &1901178732 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901178728} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1901178733 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901178728} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 204621477} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1901178734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1901178728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e44af8091779fcb40801d5b284353dbe, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TurnSpeed: 2 +--- !u!1 &1930501670 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1930501671} + - component: {fileID: 1930501672} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1930501671 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1930501670} + m_LocalRotation: {x: 0, y: -0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 33.32, y: 9.75, z: 35} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1930501672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1930501670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 1 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 12, y: 0, z: 0} + m_HandleOut: {x: -12, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1993852839 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1993852841} + - component: {fileID: 1993852840} + - component: {fileID: 1993852842} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1993852840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993852839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -11.944234, y: -0, z: -10.440375} + m_HandleOut: {x: 16.61385, y: 0, z: 14.522056} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1993852841 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993852839} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -47.2, y: 0, z: 86} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1993852842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993852839} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2018811643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2018811644} + - component: {fileID: 2018811645} + m_Layer: 0 + m_Name: Input GO (Wire Holders) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2018811644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2018811643} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2018811645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2018811643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -532830451 + m_UniqueID: 42 + Properties: + Dimensions: + serializedVersion: 2 + x: 561 + y: 3745 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 42 + m_SlotName: GameObject + m_TargetModuleID: 43 + m_TargetSlotName: Bounds + - m_ModuleID: 42 + m_SlotName: GameObject + m_TargetModuleID: 44 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 100000, guid: 8a7d08206a43f934eabc16cdaea15657, type: 3} + m_Translation: {x: -0.06, y: 6.3, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &2021445304 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2021445305} + - component: {fileID: 2021445306} + m_Layer: 0 + m_Name: Input Spline Shape (Wire) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2021445305 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021445304} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2021445306 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021445304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1036278237 + m_UniqueID: 34 + Properties: + Dimensions: + serializedVersion: 2 + x: 21 + y: 757 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 34 + m_SlotName: Shape + m_TargetModuleID: 35 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1387561709} +--- !u!1 &2042997770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2042997771} + - component: {fileID: 2042997772} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2042997771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042997770} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 89.9, y: 0, z: -8.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1407177231} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2042997772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2042997770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -13.100763, y: -0, z: -22.547544} + m_HandleOut: {x: 8.17552, y: 0, z: 14.070777} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2049991383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2049991384} + - component: {fileID: 2049991385} + - component: {fileID: 2049991386} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2049991384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049991383} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.5, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2049991385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049991383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2049991386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2049991383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2062652759 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2062652760} + - component: {fileID: 2062652761} + m_Layer: 0 + m_Name: Input GO (Sleepers) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2062652760 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062652759} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2062652761 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2062652759} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -2070075534 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 490 + y: 1195 + width: 250 + height: 359 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 11 + m_SlotName: GameObject + m_TargetModuleID: 8 + m_TargetSlotName: Bounds + - m_ModuleID: 11 + m_SlotName: GameObject + m_TargetModuleID: 6 + m_TargetSlotName: GameObject + m_GameObjects: + - m_Object: {fileID: 100000, guid: db95e59c116ef034eb7d8478fc8c85ca, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: 5873b19dcde231d48939d2ddacd8d14f, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: 90c5239fbdc98f347b17525ec6d1569f, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} + - m_Object: {fileID: 100000, guid: ea5c61c14ea67cf419612c0a501df4bb, type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!1 &2070575503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2070575504} + m_Layer: 0 + m_Name: TargetLook + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2070575504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070575503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2.5, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1292288151} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2112834640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2112834641} + - component: {fileID: 2112834642} + m_Layer: 0 + m_Name: Volume Spots (Bridge Supports) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2112834641 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2112834640} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2112834642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2112834640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -593618790 + m_UniqueID: 29 + Properties: + Dimensions: + serializedVersion: 2 + x: 990 + y: 2397 + width: 350 + height: 370 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 29 + m_SlotName: Bounds + m_TargetModuleID: 28 + m_TargetSlotName: GameObject + - m_ModuleID: 29 + m_SlotName: Path/Volume + m_TargetModuleID: 19 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 29 + m_SlotName: Spots + m_TargetModuleID: 30 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0.1976 + To: 0.7393 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 6 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 6 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: -1.22 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 2 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: -1.22 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1 &2115202421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2115202422} + - component: {fileID: 2115202423} + - component: {fileID: 2115202424} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2115202422 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115202421} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.8, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 175841624} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2115202423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115202421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2115202424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115202421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 1 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &2117960142 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2117960143} + - component: {fileID: 2117960144} + m_Layer: 0 + m_Name: Create GO (Wire Holders) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2117960143 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2117960142} + 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_Children: [] + m_Father: {fileID: 1322155245} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2117960144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2117960142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -116059741 + m_UniqueID: 44 + Properties: + Dimensions: + serializedVersion: 2 + x: 1434 + y: 3730 + width: 250 + height: 211 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 44 + m_SlotName: Spots + m_TargetModuleID: 43 + m_TargetSlotName: Spots + - m_ModuleID: 44 + m_SlotName: GameObject + m_TargetModuleID: 42 + m_TargetSlotName: GameObject + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 0 + m_Layer: 0 + applyLayerOnChildren: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/25_CGExtrusionAdvanced.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/25_CGExtrusionAdvanced.unity.meta new file mode 100644 index 00000000..73ce092b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/25_CGExtrusionAdvanced.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8be04e02acdc1745aa0c813f38ab400 +timeCreated: 1441928497 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/26_CGExtrusionExtendedUV.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/26_CGExtrusionExtendedUV.unity new file mode 100644 index 00000000..548d09f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/26_CGExtrusionExtendedUV.unity @@ -0,0 +1,5328 @@ +%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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &21232005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 21232006} + - component: {fileID: 21232007} + m_Layer: 0 + m_Name: Debug Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &21232006 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21232005} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &21232007 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21232005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b3ffa9a202f99b745a2a3d9a2619ffb3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1761617858 + m_UniqueID: 9 + Properties: + Dimensions: + serializedVersion: 2 + x: 671 + y: 731 + width: 393 + height: 353 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 9 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: [] + ShowPathSamples: 0 + ShowCrossSamples: 1 + LimitCross: + From: 0 + To: 1 + SimpleValue: 1 + ShowNormals: 0 + ShowIndex: 0 + ShowMap: 1 + PathColor: {r: 1, g: 1, b: 1, a: 1} + VolumeColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + NormalColor: {r: 1, g: 0.015686274, b: 0.1989722, a: 1} + Interpolate: 0 + InterpolatePathF: 0 + InterpolateCrossF: 0 +--- !u!1 &129086444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 129086445} + - component: {fileID: 129086446} + - component: {fileID: 129086447} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &129086445 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129086444} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.15, y: -3.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &129086446 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129086444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0.5, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &129086447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129086444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.342 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &154431090 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 154431091} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &154431091 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154431090} + 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_Children: + - {fileID: 238840324} + - {fileID: 531311087} + - {fileID: 937599829} + - {fileID: 1103220769} + - {fileID: 790465127} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &230789795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 230789796} + - component: {fileID: 230789797} + - component: {fileID: 230789798} + m_Layer: 0 + m_Name: CP0024 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &230789796 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230789795} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 13.78, y: -6.19, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &230789797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230789795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &230789798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 230789795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &238840319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 238840324} + - component: {fileID: 238840323} + - component: {fileID: 238840321} + - component: {fileID: 238840320} + - component: {fileID: 238840325} + 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 &238840320 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 238840319} + m_Enabled: 1 +--- !u!124 &238840321 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 238840319} + m_Enabled: 1 +--- !u!20 &238840323 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 238840319} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &238840324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 238840319} + m_LocalRotation: {x: 0.15719998, y: -0.3278868, z: 0.05542965, w: 0.9298957} + m_LocalPosition: {x: 27.504677, y: 4.31, z: -12.926469} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 154431091} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &238840325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 238840319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 624736176} + MoveTo: {fileID: 581289894} + RollTo: {fileID: 0} + ChaseTime: 0.5 +--- !u!1 &360315501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 360315504} + - component: {fileID: 360315503} + - component: {fileID: 360315502} + m_Layer: 0 + m_Name: CP0023 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &360315502 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360315501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.75 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &360315503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360315501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &360315504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360315501} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 25.52, y: -6.19, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &382298512 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 382298513} + - component: {fileID: 382298514} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &382298513 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382298512} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -24.97, y: 0, z: 7.48} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &382298514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 382298512} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 39.84378, y: -0, z: 17.94095} + m_HandleOut: {x: -16.23683, y: 0, z: -7.3111577} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &429981324 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 429981325} + - component: {fileID: 429981326} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &429981325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429981324} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.7, y: 0, z: 108.4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &429981326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 429981324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 23.465775, y: -0, z: -10.133066} + m_HandleOut: {x: -40.116257, y: 0, z: 17.32313} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &477915843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 477915844} + - component: {fileID: 477915845} + m_Layer: 0 + m_Name: Input Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &477915844 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 477915843} + 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_Children: + - {fileID: 1341883318} + - {fileID: 957835654} + - {fileID: 1476537350} + - {fileID: 483870809} + - {fileID: 129086445} + - {fileID: 1023101728} + - {fileID: 1494190861} + - {fileID: 2108286991} + - {fileID: 1287211257} + - {fileID: 967698744} + - {fileID: 1043163210} + - {fileID: 580062090} + - {fileID: 821669320} + - {fileID: 1977295714} + - {fileID: 693958000} + - {fileID: 551643157} + - {fileID: 2091508803} + - {fileID: 1536068480} + - {fileID: 2005272974} + - {fileID: 1647815240} + - {fileID: 852919863} + - {fileID: 1202391598} + - {fileID: 557097500} + - {fileID: 360315504} + - {fileID: 230789796} + - {fileID: 1301471510} + - {fileID: 823151083} + - {fileID: 654066021} + m_Father: {fileID: 2081934522} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &477915845 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 477915843} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1341883319} + - {fileID: 957835655} + - {fileID: 1476537351} + - {fileID: 483870810} + - {fileID: 129086446} + - {fileID: 1023101729} + - {fileID: 1494190862} + - {fileID: 2108286993} + - {fileID: 1287211259} + - {fileID: 967698745} + - {fileID: 1043163211} + - {fileID: 580062092} + - {fileID: 821669321} + - {fileID: 1977295715} + - {fileID: 693958001} + - {fileID: 551643158} + - {fileID: 2091508804} + - {fileID: 1536068481} + - {fileID: 2005272975} + - {fileID: 1647815242} + - {fileID: 852919864} + - {fileID: 1202391599} + - {fileID: 557097501} + - {fileID: 360315503} + - {fileID: 230789797} + - {fileID: 1301471511} + - {fileID: 823151084} + - {fileID: 654066023} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 71 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &483870808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 483870809} + - component: {fileID: 483870810} + - component: {fileID: 483870811} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &483870809 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483870808} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.22, y: -2.56, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &483870810 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483870808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0.51, y: 0.33, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &483870811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 483870808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.282 + m_SecondU: 0.5 + uVEdgeUpdated: 1 +--- !u!1 &494711055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 494711056} + - component: {fileID: 494711057} + m_Layer: 0 + m_Name: Create Mesh (Caps) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &494711056 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 494711055} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &494711057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 494711055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 188671274 + m_UniqueID: 12 + Properties: + Dimensions: + serializedVersion: 2 + x: 1150 + y: 762 + width: 250 + height: 391 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 12 + m_SlotName: VMesh + m_TargetModuleID: 13 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 14 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &531311085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 531311087} + - component: {fileID: 531311086} + 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 &531311086 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 531311085} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &531311087 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 531311085} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: -224.78215, y: -76.9474, z: 62.476433} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 154431091} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &551643156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 551643157} + - component: {fileID: 551643158} + - component: {fileID: 551643159} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &551643157 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 551643156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 14.53, y: -4.62, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &551643158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 551643156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0.2, y: 0.72, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &551643159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 551643156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.282 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &557097499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 557097500} + - component: {fileID: 557097501} + - component: {fileID: 557097502} + m_Layer: 0 + m_Name: CP0022 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &557097500 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557097499} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 25.52, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &557097501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557097499} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &557097502 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557097499} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.6875 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &580062089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 580062090} + - component: {fileID: 580062092} + - component: {fileID: 580062091} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &580062090 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580062089} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 9.5, y: -1.29, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &580062091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580062089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.6875 + m_SecondU: 0.6875 + uVEdgeUpdated: 1 +--- !u!114 &580062092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 580062089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &581289893 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 581289894} + m_Layer: 0 + m_Name: MoveTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &581289894 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 581289893} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 27.47, y: 4.31, z: -13} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 937599829} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &624736175 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 624736176} + m_Layer: 0 + m_Name: LookTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &624736176 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 624736175} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 17.25, y: -1.38, z: -0.24} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 937599829} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &654066020 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 654066021} + - component: {fileID: 654066023} + - component: {fileID: 654066022} + m_Layer: 0 + m_Name: CP0027 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &654066021 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654066020} + 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_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &654066022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654066020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.125 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!114 &654066023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 654066020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &668837740 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 668837741} + - component: {fileID: 668837742} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &668837741 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668837740} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &668837742 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668837740} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 368 + y: 10 + width: 270 + height: 319 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 9 + m_TargetSlotName: Volume + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 13 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 70 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &693957999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 693958000} + - component: {fileID: 693958001} + - component: {fileID: 693958002} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &693958000 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 693957999} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 13.87, y: -4.62, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &693958001 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 693957999} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &693958002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 693957999} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 1 + m_SecondU: 0.25 + uVEdgeUpdated: 1 +--- !u!1 &714638441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 714638442} + - component: {fileID: 714638443} + m_Layer: 0 + m_Name: Debug VMesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &714638442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 714638441} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &714638443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 714638441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 057c96da40c092343886bcef75fde4c4, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 0 + m_RandomizeSeed: 0 + m_Seed: -247457894 + m_UniqueID: 10 + Properties: + Dimensions: + serializedVersion: 2 + x: 1150 + y: 497 + width: 250 + height: 245 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 10 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + OutputLinks: [] + ShowVertices: 0 + ShowVertexID: 0 + ShowUV: 1 +--- !u!1 &774310106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 774310107} + - component: {fileID: 774310108} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &774310107 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 774310106} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &774310108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 774310106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 412399566 + m_UniqueID: 13 + Properties: + Dimensions: + serializedVersion: 2 + x: 812 + y: 399 + width: 250 + height: 317 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 13 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 13 + m_SlotName: VMesh + m_TargetModuleID: 12 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 1 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 2, y: 2} + m_StartMaterial: {fileID: 2100000, guid: 406ee6ffffb6a604dbc7576cdee8123b, type: 2} + m_CloneStartCap: 0 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 2, y: 2} + m_EndMaterial: {fileID: 2100000, guid: 406ee6ffffb6a604dbc7576cdee8123b, type: 2} +--- !u!1 &790465126 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 790465127} + - component: {fileID: 790465130} + - component: {fileID: 790465129} + - component: {fileID: 790465128} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &790465127 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790465126} + 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_Children: [] + m_Father: {fileID: 154431091} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &790465128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790465126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &790465129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790465126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &790465130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790465126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &821669319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 821669320} + - component: {fileID: 821669321} + - component: {fileID: 821669322} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &821669320 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821669319} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 9.783, y: -2.56, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &821669321 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821669319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.4, y: 0, z: 0} + m_HandleOut: {x: 0.3996067, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &821669322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 821669319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.75 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &823151082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 823151083} + - component: {fileID: 823151084} + - component: {fileID: 823151085} + m_Layer: 0 + m_Name: CP0026 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &823151083 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823151082} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4.62, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &823151084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823151082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &823151085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 823151082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.125 + m_SecondU: 1 + uVEdgeUpdated: 1 +--- !u!1 &852919862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 852919863} + - component: {fileID: 852919864} + - component: {fileID: 852919865} + m_Layer: 0 + m_Name: CP0020 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &852919863 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 852919862} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 21.982, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &852919864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 852919862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -0} + m_HandleOut: {x: -0.44, y: 1.97, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &852919865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 852919862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.342 + m_SecondU: 0.282 + uVEdgeUpdated: 1 +--- !u!1 &867402648 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 867402649} + - component: {fileID: 867402650} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &867402649 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 867402648} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.25, y: 0, z: 47.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &867402650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 867402648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.1560905, y: -0, z: -11.384947} + m_HandleOut: {x: 4.756066, y: 0, z: 25.11377} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &922144269 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 922144270} + - component: {fileID: 922144271} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &922144270 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 922144269} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -68.91, y: 0, z: 19.89} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &922144271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 922144269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 9.684369, y: -0, z: -14.943247} + m_HandleOut: {x: -15.522356, y: 0, z: 23.951422} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &937599827 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 937599829} + - component: {fileID: 937599828} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &937599828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937599827} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 15 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 1891142663} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &937599829 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937599827} + m_LocalRotation: {x: -0, y: -0.001337539, z: -0, w: 0.9999991} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 624736176} + - {fileID: 581289894} + m_Father: {fileID: 154431091} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &957835653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 957835654} + - component: {fileID: 957835655} + - component: {fileID: 957835656} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &957835654 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 957835653} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.56, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &957835655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 957835653} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &957835656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 957835653} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.125 + m_SecondU: 0.125 + uVEdgeUpdated: 1 +--- !u!1 &967698743 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 967698744} + - component: {fileID: 967698745} + - component: {fileID: 967698746} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &967698744 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967698743} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 8.22, y: -0.81, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &967698745 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967698743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &967698746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967698743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.6016 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1023101727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1023101728} + - component: {fileID: 1023101729} + - component: {fileID: 1023101730} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1023101728 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023101727} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.81, y: -3.1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1023101729 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023101727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.3053875, y: -0, z: -0} + m_HandleOut: {x: 0.305, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1023101730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023101727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.376 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1028358306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1028358307} + - component: {fileID: 1028358308} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1028358307 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028358306} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1028358308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028358306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 11 + width: 250 + height: 225 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1891142663} +--- !u!1 &1043163209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1043163210} + - component: {fileID: 1043163211} + - component: {fileID: 1043163212} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1043163210 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043163209} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 8.316, y: -1.29, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1043163211 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043163209} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.14936829, y: -0, z: -0} + m_HandleOut: {x: 0.149, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1043163212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043163209} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.625 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1103220768 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1103220769} + - component: {fileID: 1103220772} + - component: {fileID: 1103220771} + - component: {fileID: 1103220770} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1103220769 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103220768} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1401684730} + m_Father: {fileID: 154431091} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1103220770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103220768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1103220771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103220768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1103220772 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103220768} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1202391597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202391598} + - component: {fileID: 1202391599} + - component: {fileID: 1202391600} + m_Layer: 0 + m_Name: CP0021 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202391598 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202391597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.8, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1202391599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202391597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.58, y: 1.69, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1202391600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202391597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 1 + m_FirstU: 0.342 + m_SecondU: 0.625 + uVEdgeUpdated: 1 +--- !u!1 &1233701368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1233701369} + - component: {fileID: 1233701372} + - component: {fileID: 1233701371} + - component: {fileID: 1233701370} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1233701369 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233701368} + 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_Children: + - {fileID: 1028358307} + - {fileID: 2081934522} + - {fileID: 668837741} + - {fileID: 2068939212} + - {fileID: 21232006} + - {fileID: 774310107} + - {fileID: 2004387047} + - {fileID: 714638442} + - {fileID: 494711056} + m_Father: {fileID: 1891142662} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1233701370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233701368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1233701371 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233701368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1233701372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1233701368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1028358308} + - {fileID: 2081934523} + - {fileID: 668837742} + - {fileID: 2068939213} + - {fileID: 21232007} + - {fileID: 774310108} + - {fileID: 2004387048} + - {fileID: 714638443} + - {fileID: 494711057} + m_LastModuleID: 13 +--- !u!1001 &1271931768 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1287211256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1287211257} + - component: {fileID: 1287211259} + - component: {fileID: 1287211258} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1287211257 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1287211256} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.9, y: -0.81, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1287211258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1287211256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.5859 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1287211259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1287211256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1301471509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1301471510} + - component: {fileID: 1301471511} + - component: {fileID: 1301471512} + m_Layer: 0 + m_Name: CP0025 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1301471510 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301471509} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 12.262, y: -4.62, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1301471511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301471509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1301471512 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301471509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1341883317 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1341883318} + - component: {fileID: 1341883319} + - component: {fileID: 1341883320} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1341883318 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341883317} + 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_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1341883319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341883317} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1341883320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341883317} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1394409038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1394409039} + - component: {fileID: 1394409040} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1394409039 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394409038} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -58.3, y: 0, z: 92.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1394409040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394409038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.0744371, y: -0, z: -28.46596} + m_HandleOut: {x: 0.86738175, y: 0, z: 11.902435} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1401684726 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1401684730} + - component: {fileID: 1401684729} + - component: {fileID: 1401684728} + - component: {fileID: 1401684727} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1401684727 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401684726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &1401684728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401684726} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1401684729 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401684726} + m_CullTransparentMesh: 0 +--- !u!224 &1401684730 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401684726} + 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_Children: + - {fileID: 1815241183} + m_Father: {fileID: 1103220769} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -81.6} + m_SizeDelta: {x: 240, y: 163.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1476537349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1476537350} + - component: {fileID: 1476537351} + - component: {fileID: 1476537352} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1476537350 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1476537349} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.725, y: -2.56, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1476537351 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1476537349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.22372818, y: -0, z: -0} + m_HandleOut: {x: 0.224, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1476537352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1476537349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.25 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1494190860 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1494190861} + - component: {fileID: 1494190862} + - component: {fileID: 1494190863} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1494190861 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1494190860} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.62, y: -1.29, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1494190862 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1494190860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1494190863 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1494190860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.5 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1536068479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1536068480} + - component: {fileID: 1536068481} + - component: {fileID: 1536068482} + m_Layer: 0 + m_Name: CP0017 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1536068480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536068479} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 17.52, y: -3.8, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1536068481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536068479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.088, y: 1.353, z: 0} + m_HandleOut: {x: 0.66, y: 0.455, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1536068482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536068479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 1 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 0.342 + m_SecondU: 0.282 + uVEdgeUpdated: 1 +--- !u!1 &1592210745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1592210746} + - component: {fileID: 1592210747} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1592210746 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592210745} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 17.49} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1592210747 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1592210745} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.028697908, y: -0, z: -6.8210397} + m_HandleOut: {x: 0.04875043, y: 0, z: 11.587208} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1647815239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647815240} + - component: {fileID: 1647815242} + - component: {fileID: 1647815241} + m_Layer: 0 + m_Name: CP0019 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1647815240 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647815239} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 20.564, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1647815241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647815239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.376 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1647815242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647815239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1815241182 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1815241183} + - component: {fileID: 1815241185} + - component: {fileID: 1815241184} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1815241183 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1815241182} + 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_Children: [] + m_Father: {fileID: 1401684730} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 16.5, y: -192.7} + m_SizeDelta: {x: -34, y: 177.6} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1815241184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1815241182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: A simple example using Extended UV functionality. Some of the control points + have explicitly defined U coordinate, or even two coordinates (a UV edge), allowing + very precise and flexible mapping of a texture to the extrusion mesh. +--- !u!222 &1815241185 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1815241182} + m_CullTransparentMesh: 0 +--- !u!1 &1891142661 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1891142662} + - component: {fileID: 1891142663} + m_Layer: 0 + m_Name: Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1891142662 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891142661} + 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_Children: + - {fileID: 1955490102} + - {fileID: 1592210746} + - {fileID: 867402649} + - {fileID: 429981325} + - {fileID: 382298513} + - {fileID: 922144270} + - {fileID: 1394409039} + - {fileID: 1993833772} + - {fileID: 1233701369} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1891142663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891142661} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: + - {fileID: 1955490103} + - {fileID: 1592210747} + - {fileID: 867402650} + - {fileID: 429981326} + - {fileID: 382298514} + - {fileID: 922144271} + - {fileID: 1394409040} + - {fileID: 1993833773} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1955490101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1955490102} + - component: {fileID: 1955490103} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1955490102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955490101} + 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_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1955490103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955490101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1977295713 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1977295714} + - component: {fileID: 1977295715} + - component: {fileID: 1977295716} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1977295714 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977295713} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 12.06, y: -2.56, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1977295715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977295713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1977295716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977295713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.875 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1993833771 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1993833772} + - component: {fileID: 1993833773} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1993833772 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993833771} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -58.3, y: 0, z: 122.9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1891142662} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1993833773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993833771} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2004387046 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2004387047} + - component: {fileID: 2004387048} + m_Layer: 0 + m_Name: Create Mesh (Surface) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2004387047 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2004387046} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2004387048 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2004387046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 1150 + y: 108 + width: 250 + height: 391 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 14 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &2005272973 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2005272974} + - component: {fileID: 2005272975} + - component: {fileID: 2005272976} + m_Layer: 0 + m_Name: CP0018 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2005272974 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2005272973} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 19.267, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2005272975 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2005272973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.346, y: 0.472, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2005272976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2005272973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.342 + m_SecondU: 0.282 + uVEdgeUpdated: 1 +--- !u!1 &2034117686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2034117690} + - component: {fileID: 2034117689} + - component: {fileID: 2034117688} + - component: {fileID: 2034117687} + - component: {fileID: 2034117691} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2034117687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2034117686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &2034117688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2034117686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2034117689 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2034117686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &2034117690 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2034117686} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2034117691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2034117686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &2068939211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2068939212} + - component: {fileID: 2068939213} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2068939212 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068939211} + 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_Children: [] + m_Father: {fileID: 1233701369} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2068939213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068939211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 814 + y: 72 + width: 250 + height: 297 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 10 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 2} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 6df88c479e4033444a81bbc3b0b097a9, type: 2} +--- !u!1 &2081934521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2081934522} + - component: {fileID: 2081934523} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2081934522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2081934521} + 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_Children: + - {fileID: 477915844} + m_Father: {fileID: 1233701369} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2081934523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2081934521} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 177 + width: 250 + height: 242.8 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 477915845} +--- !u!1 &2091508802 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2091508803} + - component: {fileID: 2091508804} + - component: {fileID: 2091508805} + m_Layer: 0 + m_Name: CP0016 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2091508803 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091508802} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 15.874, y: -3.828, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2091508804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091508802} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.67, y: 0.17, z: -0} + m_HandleOut: {x: -0.097, y: 1.12, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2091508805 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091508802} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 1 + m_ExplicitU: 0 + m_FirstU: 0.342 + m_SecondU: 0.282 + uVEdgeUpdated: 1 +--- !u!1 &2108286990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2108286991} + - component: {fileID: 2108286993} + - component: {fileID: 2108286992} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2108286991 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108286990} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.743, y: -1.29, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 477915844} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2108286992 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108286990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 1 + m_FirstU: 0.5625 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &2108286993 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108286990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.18070221, y: -0, z: -0} + m_HandleOut: {x: 0.181, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/26_CGExtrusionExtendedUV.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/26_CGExtrusionExtendedUV.unity.meta new file mode 100644 index 00000000..6845faf3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/26_CGExtrusionExtendedUV.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67522100332a1574999b46e45c6cbd90 +timeCreated: 1442776717 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/27_CGVariableExtrusion.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/27_CGVariableExtrusion.unity new file mode 100644 index 00000000..e56a4384 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/27_CGVariableExtrusion.unity @@ -0,0 +1,3370 @@ +%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.44600606, g: 0.49045128, b: 0.5458931, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 1 + m_EnableBakedLightmaps: 0 + 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: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &24917497 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 24917499} + - component: {fileID: 24917498} + m_Layer: 0 + m_Name: MixingAnimator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &24917498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 24917497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c61af012c444d924c92ce27a636066f0, type: 3} + m_Name: + m_EditorClassIdentifier: + VariableMixShapes: {fileID: 553738528} +--- !u!4 &24917499 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 24917497} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -9.722419, y: -2.7265744, z: 1.9754286} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &40235293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 40235294} + - component: {fileID: 40235295} + - component: {fileID: 40235296} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &40235294 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40235293} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.7071069, y: -0.70710665, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &40235295 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40235293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &40235296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40235293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &63547404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 63547406} + - component: {fileID: 63547405} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &63547405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 63547404} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 610 + y: 10 + width: 270 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 8 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 9 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 40 + m_Optimize: 0 + m_AngleThreshold: 0.1 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 70 + m_CrossOptimize: 0 + m_CrossAngleThreshold: 0.1 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!4 &63547406 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 63547404} + 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_Children: [] + m_Father: {fileID: 1263437475} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &72089477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 72089480} + - component: {fileID: 72089479} + - component: {fileID: 72089478} + 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 &72089478 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 +--- !u!20 &72089479 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &72089480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_LocalRotation: {x: 0.24280564, y: 0.34075034, z: -0.091560125, w: 0.90363234} + m_LocalPosition: {x: -4.6233664, y: 5.841408, z: -1.5054744} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 33.588, y: 0, z: 0} +--- !u!1 &75108003 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 75108005} + - component: {fileID: 75108004} + - component: {fileID: 75108006} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &75108004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75108003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &75108005 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75108003} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 729770939} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &75108006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 75108003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &99491979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 99491981} + - component: {fileID: 99491980} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &99491980 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99491979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 930 + y: 10 + width: 250 + height: 302 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!4 &99491981 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 99491979} + 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_Children: [] + m_Father: {fileID: 1263437475} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &102242320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 102242321} + - component: {fileID: 102242322} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &102242321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102242320} + 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_Children: [] + m_Father: {fileID: 1263437475} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &102242322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102242320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1170365996 + m_UniqueID: 9 + Properties: + Dimensions: + serializedVersion: 2 + x: 939 + y: 381 + width: 250 + height: 385 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 9 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 9 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 0.1, y: 0.1} + m_StartMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &134222051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 134222053} + - component: {fileID: 134222052} + - component: {fileID: 134222054} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &134222052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 134222051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &134222053 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 134222051} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.70710653, y: 0.707107, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &134222054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 134222051} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1001 &303659041 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &323758694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 323758695} + - component: {fileID: 323758697} + - component: {fileID: 323758696} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &323758695 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323758694} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &323758696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323758694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &323758697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 323758694} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 1 + m_HandleIn: {x: -2.3994493, y: -0.000000404517, z: -0} + m_HandleOut: {x: 2.3994498, y: 0.0000004045171, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &331908258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 331908261} + - component: {fileID: 331908259} + - component: {fileID: 331908260} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &331908259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 331908258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &331908260 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 331908258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!4 &331908261 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 331908258} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.70710677, y: 0.70710677, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &442314357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 442314359} + - component: {fileID: 442314358} + - component: {fileID: 442314360} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &442314358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 442314357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.00000001643727, y: -0.55154324, z: -0} + m_HandleOut: {x: 0.00000001643727, y: 0.55154324, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &442314359 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 442314357} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0.000000011924881, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1647879890} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &442314360 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 442314357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &553738527 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 553738529} + - component: {fileID: 553738528} + m_Layer: 0 + m_Name: Variable Mix Shapes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &553738528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 553738527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e9f9ee6c17ecbcf429b7eaa26063afd1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1694784830 + m_UniqueID: 8 + Properties: + Dimensions: + serializedVersion: 2 + x: 318 + y: 285 + width: 250 + height: 174 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 8 + m_SlotName: Shape A + m_TargetModuleID: 1 + m_TargetSlotName: Shape + - m_ModuleID: 8 + m_SlotName: Shape B + m_TargetModuleID: 7 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 8 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_MixCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!4 &553738529 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 553738527} + 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_Children: [] + m_Father: {fileID: 1263437475} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &658630928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 658630930} + - component: {fileID: 658630929} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &658630929 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 658630928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 250 + height: 225 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 729770938} +--- !u!4 &658630930 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 658630928} + 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_Children: + - {fileID: 729770939} + m_Father: {fileID: 1263437475} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &680195201 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 680195202} + - component: {fileID: 680195203} + - component: {fileID: 680195204} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &680195202 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 680195201} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3, y: 0.00000003577464, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &680195203 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 680195201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 1 + m_HandleIn: {x: -0, y: -2.3994498, z: -0} + m_HandleOut: {x: 0, y: 2.39945, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &680195204 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 680195201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &687224353 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 687224355} + - component: {fileID: 687224354} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &687224354 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687224353} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1230 + y: 10 + width: 250 + height: 391 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 9 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 0 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 0 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!4 &687224355 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687224353} + 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_Children: [] + m_Father: {fileID: 1263437475} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &729770937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 729770939} + - component: {fileID: 729770938} + m_Layer: 0 + m_Name: Input Spline Path_2_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &729770938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 729770937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 1893380555} + - {fileID: 75108004} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &729770939 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 729770937} + 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_Children: + - {fileID: 1893380553} + - {fileID: 75108005} + m_Father: {fileID: 658630930} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &746478851 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 746478855} + - component: {fileID: 746478854} + - component: {fileID: 746478853} + - component: {fileID: 746478852} + - component: {fileID: 746478856} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &746478852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746478851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &746478853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746478851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &746478854 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746478851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &746478855 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746478851} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &746478856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746478851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &850534420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 850534421} + - component: {fileID: 850534422} + - component: {fileID: 850534423} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &850534421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850534420} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.00000026226832, y: -3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &850534422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850534420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 1 + m_HandleIn: {x: 2.3994498, y: -0.00000040451695, z: -0} + m_HandleOut: {x: -2.3994498, y: 0.00000040451695, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &850534423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 850534420} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &926939943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 926939944} + - component: {fileID: 926939945} + - component: {fileID: 926939946} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &926939944 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926939943} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000008742278, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1647879890} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &926939945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926939943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.5515433, y: -0.000000049311815, z: -0} + m_HandleOut: {x: -0.55154324, y: 0.000000049311808, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &926939946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 926939943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &935475706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 935475707} + - component: {fileID: 935475708} + - component: {fileID: 935475709} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &935475707 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 935475706} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3, y: -0.00000013113416, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &935475708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 935475706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 1 + m_HandleIn: {x: -0, y: 2.3994498, z: -0} + m_HandleOut: {x: 0, y: -2.3994498, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &935475709 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 935475706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1178398517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178398518} + - component: {fileID: 1178398519} + - component: {fileID: 1178398520} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1178398518 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178398517} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.70710677, y: -0.70710677, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1861297328} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1178398519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178398517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1178398520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178398517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -191} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: The Variable Mix Shapes module is used to modify the extrusion shape's + along the length of the extrusion. An additional script, MixingAnimator, is used + to animate Variable Mix Shapes's mixing curve +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1220139850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1220139852} + - component: {fileID: 1220139851} + 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 &1220139851 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1220139850} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1220139852 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1220139850} + m_LocalRotation: {x: -0.9560321, y: 0.25865927, z: -0.00909989, w: -0.13789596} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 15.568001, y: -176.79001, z: -509.28302} +--- !u!1 &1263437471 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1263437475} + - component: {fileID: 1263437474} + - component: {fileID: 1263437473} + - component: {fileID: 1263437472} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1263437472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263437471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1263437473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263437471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1263437474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263437471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1538569157} + - {fileID: 658630929} + - {fileID: 1949686859} + - {fileID: 553738528} + - {fileID: 63547405} + - {fileID: 99491980} + - {fileID: 102242322} + - {fileID: 687224354} + m_LastModuleID: 9 +--- !u!4 &1263437475 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1263437471} + 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_Children: + - {fileID: 1538569158} + - {fileID: 658630930} + - {fileID: 1949686860} + - {fileID: 553738529} + - {fileID: 63547406} + - {fileID: 99491981} + - {fileID: 102242321} + - {fileID: 687224355} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1275954250 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1275954251} + - component: {fileID: 1275954252} + - component: {fileID: 1275954253} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1275954251 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1275954250} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: -0.00000004371139, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1647879890} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1275954252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1275954250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 0.55154324, z: -0} + m_HandleOut: {x: 0, y: -0.5515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1275954253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1275954250} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1538569156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1538569158} + - component: {fileID: 1538569157} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1538569157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1538569156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 293 + width: 250 + height: 297 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Shape + m_TargetModuleID: 8 + m_TargetSlotName: Shape A + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1647879889} +--- !u!4 &1538569158 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1538569156} + 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_Children: + - {fileID: 1647879890} + m_Father: {fileID: 1263437475} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 141106066} + - {fileID: 72089480} + - {fileID: 1220139852} + - {fileID: 135020125} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1647879888 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647879890} + - component: {fileID: 1647879889} + - component: {fileID: 1647879891} + m_Layer: 0 + m_Name: Input Spline Shape_1_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1647879889 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647879888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.0.0 + ControlPoints: + - {fileID: 2080600939} + - {fileID: 1275954252} + - {fileID: 926939945} + - {fileID: 442314358} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1647879890 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647879888} + 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_Children: + - {fileID: 2080600937} + - {fileID: 1275954251} + - {fileID: 926939944} + - {fileID: 442314359} + m_Father: {fileID: 1538569158} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1647879891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647879888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Count: 4 + m_Radius: 1 +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -67.1} + m_SizeDelta: {x: 240, y: 129.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1861297326 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1861297328} + - component: {fileID: 1861297327} + - component: {fileID: 1861297329} + m_Layer: 0 + m_Name: Input Spline Shape_7_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1861297327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1861297326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 323758697} + - {fileID: 331908259} + - {fileID: 935475708} + - {fileID: 1178398519} + - {fileID: 850534422} + - {fileID: 40235295} + - {fileID: 680195203} + - {fileID: 134222052} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1861297328 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1861297326} + 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_Children: + - {fileID: 323758695} + - {fileID: 331908261} + - {fileID: 935475707} + - {fileID: 1178398518} + - {fileID: 850534421} + - {fileID: 40235294} + - {fileID: 680195202} + - {fileID: 134222053} + m_Father: {fileID: 1949686860} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1861297329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1861297326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c23adbe234d78794db53da7b155a4b75, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Sides: 4 + m_OuterRadius: 3 + m_OuterRoundness: 1 + m_InnerRadius: 1 + m_InnerRoundness: 0 +--- !u!1 &1893380552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1893380553} + - component: {fileID: 1893380555} + - component: {fileID: 1893380554} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1893380553 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1893380552} + 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_Children: [] + m_Father: {fileID: 729770939} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1893380554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1893380552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1893380555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1893380552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1949686858 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1949686860} + - component: {fileID: 1949686859} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1949686859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1949686858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 658560351 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 605 + width: 250 + height: 351 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 7 + m_SlotName: Shape + m_TargetModuleID: 8 + m_TargetSlotName: Shape B + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1861297327} +--- !u!4 &1949686860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1949686858} + 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_Children: + - {fileID: 1861297328} + m_Father: {fileID: 1263437475} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2080600936 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2080600937} + - component: {fileID: 2080600939} + - component: {fileID: 2080600938} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2080600937 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2080600936} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1647879890} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2080600938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2080600936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &2080600939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2080600936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.55154324, y: -0, z: -0} + m_HandleOut: {x: 0.55154324, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/27_CGVariableExtrusion.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/27_CGVariableExtrusion.unity.meta new file mode 100644 index 00000000..c187cce2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/27_CGVariableExtrusion.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 517cdea3295e0a444b7f8e953430a1ba +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/28_AsteroidBelt.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/28_AsteroidBelt.unity new file mode 100644 index 00000000..fa942cf2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/28_AsteroidBelt.unity @@ -0,0 +1,2070 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientGroundColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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: 1498476212} + m_IndirectSpecularColor: {r: 0.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &21165515 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 21165517} + - component: {fileID: 21165516} + m_Layer: 0 + m_Name: Input GameObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &21165516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21165515} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -2005214151 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 250 + height: 305 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: GameObject + m_TargetModuleID: 3 + m_TargetSlotName: GameObject + - m_ModuleID: 2 + m_SlotName: GameObject + m_TargetModuleID: 4 + m_TargetSlotName: Bounds + m_GameObjects: + - m_Object: {fileID: 4604349930422234896} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!4 &21165517 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 21165515} + 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_Children: [] + m_Father: {fileID: 1016804045} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &212499334 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 212499335} + - component: {fileID: 212499337} + - component: {fileID: 212499336} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &212499335 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212499334} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0.000008940697, z: 149.99998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1740930936} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &212499336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212499334} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &212499337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212499334} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -82.73148, y: 0.0000018081537, z: -0} + m_HandleOut: {x: 82.73148, y: -0.0000018081537, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &303659041 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &498926889 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 498926891} + - component: {fileID: 498926890} + m_Layer: 0 + m_Name: Rasterize Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &498926890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498926889} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4dd47aa60d1b454886133ad3297289c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -282786924 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 401 + width: 250 + height: 184 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 112 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 5 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path/Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 26 + m_Optimize: 0 + m_AngleTreshold: 10 + useBuggedRange: 0 +--- !u!4 &498926891 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 498926889} + 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_Children: [] + m_Father: {fileID: 1016804045} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &666339412 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 666339414} + - component: {fileID: 666339413} + m_Layer: 0 + m_Name: Create GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &666339413 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666339412} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1747590249 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 1010 + y: 10 + width: 250 + height: 226 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: GameObject + m_TargetModuleID: 2 + m_TargetSlotName: GameObject + - m_ModuleID: 3 + m_SlotName: Spots + m_TargetModuleID: 4 + m_TargetSlotName: Spots + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 0 + m_Layer: 0 + applyLayerOnChildren: 0 +--- !u!4 &666339414 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 666339412} + 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_Children: [] + m_Father: {fileID: 1016804045} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &667262223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 667262225} + - component: {fileID: 667262224} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &667262224 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667262223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -2102472162 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 401 + width: 250 + height: 197 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 5 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1740930935} +--- !u!4 &667262225 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667262223} + 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_Children: [] + m_Father: {fileID: 1016804045} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &863162783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 863162784} + - component: {fileID: 863162785} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &863162784 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863162783} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.000013113417, y: -0.000008940697, z: -149.99998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1740930936} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &863162785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863162783} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 82.73149, y: -0.0000018081545, z: -0.0000042079414} + m_HandleOut: {x: -82.73148, y: 0.0000018081543, z: 0.000004207941} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &873069897 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 873069901} + - component: {fileID: 873069900} + - component: {fileID: 873069899} + - component: {fileID: 873069898} + m_Layer: 0 + m_Name: Planet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &873069898 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873069897} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &873069899 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873069897} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: de116dccf1b16c24daaf876b841affcd, 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 +--- !u!33 &873069900 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873069897} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &873069901 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 873069897} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 50, y: 50, z: 50} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1016804039 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1016804045} + - component: {fileID: 1016804044} + - component: {fileID: 1016804043} + - component: {fileID: 1016804040} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1016804040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016804039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f3bdfa960a223645a04f11686263106, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: 3_Asteroid Template + m_Prefabs: + - {fileID: 4604349930422234896} + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1016804043 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016804039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1016804044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016804039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 667262224} + - {fileID: 21165516} + - {fileID: 498926890} + - {fileID: 1558869480} + - {fileID: 666339413} + m_LastModuleID: 5 +--- !u!4 &1016804045 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016804039} + 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_Children: + - {fileID: 667262225} + - {fileID: 21165517} + - {fileID: 498926891} + - {fileID: 1558869481} + - {fileID: 666339414} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: The Volume Spots module allows you to place objects along a volume + or a path. It is used here to put asteroids along a path with random positions, + rotations and scales. +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1 &1211817493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1211817494} + - component: {fileID: 1211817495} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1211817494 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1211817493} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 150, y: -0.0000065567083, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1740930936} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1211817495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1211817493} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 0.000004931181, z: 82.73148} + m_HandleOut: {x: 0, y: -0.0000049311816, z: -82.73149} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1498476211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1498476213} + - component: {fileID: 1498476212} + 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 &1498476212 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 2 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 1 + 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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: 0 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1498476213 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_LocalRotation: {x: 0.40821797, y: -0.23456973, z: 0.10938168, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1550963862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1550963866} + - component: {fileID: 1550963865} + - component: {fileID: 1550963864} + - component: {fileID: 1550963863} + - component: {fileID: 1550963867} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1550963863 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550963862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &1550963864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550963862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1550963865 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550963862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &1550963866 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550963862} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1550963867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1550963862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &1558869479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1558869481} + - component: {fileID: 1558869480} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1558869480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558869479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -119044463 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 610 + y: 401 + width: 350 + height: 577 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Bounds + m_TargetModuleID: 2 + m_TargetSlotName: GameObject + - m_ModuleID: 4 + m_SlotName: Path/Volume + m_TargetModuleID: 5 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Spots + m_TargetModuleID: 3 + m_TargetSlotName: Spots + m_WasUpgraded: 1 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 1 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: -2 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 1 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: -5 + To: 5 + SimpleValue: 0 + m_TranslationY: + From: -20 + To: 20 + SimpleValue: 0 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 90 + SimpleValue: 0 + m_RotationY: + From: 0 + To: 90 + SimpleValue: 0 + m_RotationZ: + From: 0 + To: 90 + SimpleValue: 0 + m_UniformScaling: 1 + m_ScaleX: + From: 0.5 + To: 2 + SimpleValue: 0 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!4 &1558869481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558869479} + 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_Children: [] + m_Father: {fileID: 1016804045} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 141106066} + - {fileID: 135020125} + - {fileID: 1498476213} + - {fileID: 1665809481} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + - component: {fileID: 1665809482} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_LocalRotation: {x: 0.119284414, y: 0.16654205, z: -0.020300668, w: 0.9785821} + m_LocalPosition: {x: -72, y: 36, z: -209} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1665809482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: [] +--- !u!1 &1740930934 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1740930936} + - component: {fileID: 1740930935} + - component: {fileID: 1740930937} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1740930935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740930934} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 212499337} + - {fileID: 1211817495} + - {fileID: 863162785} + - {fileID: 1814857746} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 1, g: 0.43529412, b: 0, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1740930936 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740930934} + 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_Children: + - {fileID: 212499335} + - {fileID: 1211817494} + - {fileID: 863162784} + - {fileID: 1814857747} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1740930937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1740930934} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 1 + m_Count: 4 + m_Radius: 150 +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -59} + m_SizeDelta: {x: 240, y: 117} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1814857745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1814857747} + - component: {fileID: 1814857746} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1814857746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1814857745} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.0000042079414, y: -0.000004931181, z: -82.73148} + m_HandleOut: {x: 0.0000042079414, y: 0.000004931181, z: 82.73148} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1814857747 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1814857745} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -150, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1740930936} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &4604349930420084026 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4604349930422234896} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 44f9d629006bb76409d3626dd82797c0, 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 +--- !u!33 &4604349930421114432 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4604349930422234896} + m_Mesh: {fileID: 4300000, guid: 1b6e00e79bdc23d4888bfb8e5613ab1c, type: 3} +--- !u!1 &4604349930422234896 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4604349930422429376} + - component: {fileID: 4604349930421114432} + - component: {fileID: 4604349930420084026} + m_Layer: 0 + m_Name: Asteroid Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4604349930422429376 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4604349930422234896} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/28_AsteroidBelt.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/28_AsteroidBelt.unity.meta new file mode 100644 index 00000000..5c27ba8e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/28_AsteroidBelt.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7b6cc4acf7df7244889b69e880b69908 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29_CGDeformMesh_BarbedWire.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29_CGDeformMesh_BarbedWire.unity new file mode 100644 index 00000000..f4ef162b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29_CGDeformMesh_BarbedWire.unity @@ -0,0 +1,2302 @@ +%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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &8353419 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8353421} + - component: {fileID: 8353420} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &8353420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8353419} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 242 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 24 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1708587475} +--- !u!4 &8353421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8353419} + 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_Children: + - {fileID: 1708587476} + m_Father: {fileID: 453396187} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &72089477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 72089480} + - component: {fileID: 72089479} + - component: {fileID: 72089478} + 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 &72089478 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 +--- !u!20 &72089479 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &72089480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_LocalRotation: {x: 0.2979857, y: 0.32738394, z: -0.10960811, w: 0.8899497} + m_LocalPosition: {x: -24.461918, y: 14.65851, z: -49.289337} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 39.58, y: -26.23, z: 0} +--- !u!1 &82294999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 82295002} + - component: {fileID: 82295001} + - component: {fileID: 82295000} + m_Layer: 0 + m_Name: Original Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &82295000 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82294999} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -3033667219593020291, guid: b1258906d22626643bb30f42b6bea168, type: 3} + 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 +--- !u!33 &82295001 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82294999} + m_Mesh: {fileID: -2432090755550338912, guid: b1258906d22626643bb30f42b6bea168, type: 3} +--- !u!4 &82295002 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82294999} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -8.6, y: 1.19, z: -42.4} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &161669221 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 161669222} + - component: {fileID: 161669223} + - component: {fileID: 161669224} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &161669222 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161669221} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.8, y: 0, z: -28.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1708587476} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &161669223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161669221} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 11.394419, y: -0, z: 0.16800565} + m_HandleOut: {x: -5.6747875, y: 0, z: -0.083672225} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &161669224 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161669221} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2659e51412d4823409c01bc5d946b67b, type: 3} + m_Name: + m_EditorClassIdentifier: + Variation: 0.59 + Magnitude: 3 + Period: 3 +--- !u!1 &241214472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 241214473} + - component: {fileID: 241214474} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &241214473 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_LocalRotation: {x: 0.40821797, y: -0.23456973, z: 0.10938168, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &241214474 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 1 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1001 &303659041 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &453396183 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 453396187} + - component: {fileID: 453396186} + - component: {fileID: 453396185} + - component: {fileID: 453396184} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &453396184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453396183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &453396185 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453396183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &453396186 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453396183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 8353420} + - {fileID: 1842010446} + - {fileID: 638783405} + - {fileID: 1092591916} + - {fileID: 717370627} + - {fileID: 1534261210} + m_LastModuleID: 27 +--- !u!4 &453396187 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453396183} + 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_Children: + - {fileID: 8353421} + - {fileID: 1842010447} + - {fileID: 638783406} + - {fileID: 1092591917} + - {fileID: 717370628} + - {fileID: 1534261211} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &543508807 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 543508808} + - component: {fileID: 543508810} + - component: {fileID: 543508809} + - component: {fileID: 543508811} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &543508808 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 543508807} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 16, y: 0, z: -33.6} + m_LocalScale: {x: 0.507673, y: 0.507673, z: 0.507673} + m_Children: [] + m_Father: {fileID: 1708587476} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &543508809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 543508807} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &543508810 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 543508807} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &543508811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 543508807} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2659e51412d4823409c01bc5d946b67b, type: 3} + m_Name: + m_EditorClassIdentifier: + Variation: 0.29 + Magnitude: 3 + Period: 3 +--- !u!1 &550104229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 550104234} + - component: {fileID: 550104233} + - component: {fileID: 550104232} + - component: {fileID: 550104231} + - component: {fileID: 550104230} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &550104230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &550104231 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &550104232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!114 &550104233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &550104234 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &638783404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 638783406} + - component: {fileID: 638783405} + m_Layer: 0 + m_Name: Rasterize Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &638783405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638783404} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4dd47aa60d1b454886133ad3297289c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1407282305 + m_UniqueID: 24 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 242 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 112 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 24 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 24 + m_SlotName: Path + m_TargetModuleID: 13 + m_TargetSlotName: Path/Volume + - m_ModuleID: 24 + m_SlotName: Path + m_TargetModuleID: 26 + m_TargetSlotName: Path + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 0 + m_AngleTreshold: 10 + useBuggedRange: 0 +--- !u!4 &638783406 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638783404} + 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_Children: [] + m_Father: {fileID: 453396187} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &717370626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 717370628} + - component: {fileID: 717370627} + m_Layer: 0 + m_Name: Deform Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &717370627 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717370626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484a3e33b7b7161448fd889c96322e73, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1362538623 + m_UniqueID: 26 + Properties: + Dimensions: + serializedVersion: 2 + x: 1010 + y: 10 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 26 + m_SlotName: Spots + m_TargetModuleID: 13 + m_TargetSlotName: Spots + - m_ModuleID: 26 + m_SlotName: Path + m_TargetModuleID: 24 + m_TargetSlotName: Path + - m_ModuleID: 26 + m_SlotName: VMesh + m_TargetModuleID: 27 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 26 + m_SlotName: VMesh + m_TargetModuleID: 14 + m_TargetSlotName: VMesh + - m_ModuleID: 26 + m_SlotName: Spots + m_TargetModuleID: 14 + m_TargetSlotName: Spots + stretchToEnd: 1 +--- !u!4 &717370628 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 717370626} + 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_Children: [] + m_Father: {fileID: 453396187} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &933282813 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 933282814} + - component: {fileID: 933282815} + - component: {fileID: 933282816} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &933282814 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933282813} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -18.9, y: 0, z: -24.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1708587476} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &933282815 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933282813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.3067474, y: -0, z: 2.0121238} + m_HandleOut: {x: -5.067294, y: 0, z: -1.9213319} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &933282816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933282813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2659e51412d4823409c01bc5d946b67b, type: 3} + m_Name: + m_EditorClassIdentifier: + Variation: 0 + Magnitude: 3 + Period: 3 +--- !u!1 &1092591915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1092591917} + - component: {fileID: 1092591916} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1092591916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1092591915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1572407500 + m_UniqueID: 13 + Properties: + Dimensions: + serializedVersion: 2 + x: 619 + y: 117 + width: 350 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 13 + m_SlotName: Path/Volume + m_TargetModuleID: 24 + m_TargetSlotName: Path + - m_ModuleID: 13 + m_SlotName: Bounds + m_TargetModuleID: 27 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 13 + m_SlotName: Spots + m_TargetModuleID: 26 + m_TargetSlotName: Spots + m_WasUpgraded: 0 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + 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: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!4 &1092591917 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1092591915} + 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_Children: [] + m_Father: {fileID: 453396187} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'The Deform Mesh module allows you to deform a mesh following a + path. + + It is used here to make the curved barbed wire from a straight one.' +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 1 +--- !u!1 &1534261209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1534261211} + - component: {fileID: 1534261210} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1534261210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1534261209} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1463024124 + m_UniqueID: 14 + Properties: + Dimensions: + serializedVersion: 2 + x: 1310 + y: 10 + width: 273 + height: 398 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 14 + m_SlotName: VMesh + m_TargetModuleID: 26 + m_TargetSlotName: VMesh + - m_ModuleID: 14 + m_SlotName: Spots + m_TargetModuleID: 26 + m_TargetSlotName: Spots + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 0 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!4 &1534261211 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1534261209} + 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_Children: [] + m_Father: {fileID: 453396187} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1557027212 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1557027214} + - component: {fileID: 1557027213} + - component: {fileID: 1557027215} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1557027213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557027212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1557027214 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557027212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -26.7, y: 0, z: -36.2} + m_LocalScale: {x: 0.507673, y: 0.507673, z: 0.507673} + m_Children: [] + m_Father: {fileID: 1708587476} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1557027215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1557027212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2659e51412d4823409c01bc5d946b67b, type: 3} + m_Name: + m_EditorClassIdentifier: + Variation: -1.85 + Magnitude: 3 + Period: 3 +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 141106066} + - {fileID: 72089480} + - {fileID: 135020125} + - {fileID: 241214473} + - {fileID: 1671600030} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1671600029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1671600030} + - component: {fileID: 1671600033} + - component: {fileID: 1671600032} + - component: {fileID: 1671600031} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1671600030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 10.2, y: -0.2, z: -16.1} + m_LocalScale: {x: 34.298588, y: 34.29859, z: 34.29859} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1671600031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3fbb64eeb951ac14381179a841926902, 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: 1 + 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 +--- !u!64 &1671600032 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1671600033 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1708587474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1708587476} + - component: {fileID: 1708587475} + m_Layer: 0 + m_Name: Input Spline Path_2_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1708587475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1708587474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 543508810} + - {fileID: 1878821434} + - {fileID: 161669223} + - {fileID: 933282815} + - {fileID: 1557027213} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 1 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1708587476 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1708587474} + 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_Children: + - {fileID: 543508808} + - {fileID: 1878821433} + - {fileID: 161669222} + - {fileID: 933282814} + - {fileID: 1557027214} + m_Father: {fileID: 8353421} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -51} + m_SizeDelta: {x: 240, y: 100.42} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 1 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1842010445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1842010447} + - component: {fileID: 1842010446} + m_Layer: 0 + m_Name: Input Meshes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1842010446 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842010445} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4dcd8018d6d8ecf4f876101d6e13a763, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 957902854 + m_UniqueID: 27 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 27 + m_SlotName: VMesh + m_TargetModuleID: 13 + m_TargetSlotName: Bounds + - m_ModuleID: 27 + m_SlotName: VMesh + m_TargetModuleID: 26 + m_TargetSlotName: VMesh + m_Meshes: + - m_Mesh: {fileID: -2432090755550338912, guid: b1258906d22626643bb30f42b6bea168, + type: 3} + m_Material: + - {fileID: -3033667219593020291, guid: b1258906d22626643bb30f42b6bea168, type: 3} + m_Translation: {x: 0, y: 1.19, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 0.1, y: 0.1, z: 0.1} +--- !u!4 &1842010447 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1842010445} + 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_Children: [] + m_Father: {fileID: 453396187} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1878821432 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1878821433} + - component: {fileID: 1878821434} + - component: {fileID: 1878821435} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1878821433 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1878821432} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.286, y: 0, z: -20.24} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1708587476} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1878821434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1878821432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 3.7109697, y: -0, z: -4.6315556} + m_HandleOut: {x: -7.125511, y: 0, z: 8.893147} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1878821435 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1878821432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2659e51412d4823409c01bc5d946b67b, type: 3} + m_Name: + m_EditorClassIdentifier: + Variation: -0.35 + Magnitude: 3 + Period: 3 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29_CGDeformMesh_BarbedWire.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29_CGDeformMesh_BarbedWire.unity.meta new file mode 100644 index 00000000..d522a91e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29_CGDeformMesh_BarbedWire.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e54d4512cb8b1194381b9565f8541a19 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29bis_CGDeformMesh_Railway.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29bis_CGDeformMesh_Railway.unity new file mode 100644 index 00000000..7eacb71f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29bis_CGDeformMesh_Railway.unity @@ -0,0 +1,2463 @@ +%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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &72089477 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 72089480} + - component: {fileID: 72089479} + - component: {fileID: 72089478} + 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 &72089478 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 +--- !u!20 &72089479 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &72089480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 72089477} + m_LocalRotation: {x: 0.40910023, y: -0.010949386, z: 0.00490942, w: 0.91241056} + m_LocalPosition: {x: -1.2375458, y: 15.800584, z: -34} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 39.58, y: -26.23, z: 0} +--- !u!1 &73561296 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 73561297} + - component: {fileID: 73561298} + - component: {fileID: 73561300} + - component: {fileID: 73561299} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &73561297 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73561296} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -6.203} + m_LocalScale: {x: 0.507673, y: 0.507673, z: 0.507673} + m_Children: [] + m_Father: {fileID: 2003272614} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &73561298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73561296} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 3.421223, y: -0, z: -0} + m_HandleOut: {x: -3.421223, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!95 &73561299 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73561296} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: c462f0a5a9f7e684286ad2d178e3df06, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!114 &73561300 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 73561296} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &88490019 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 88490021} + - component: {fileID: 88490020} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &88490020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88490019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1463024124 + m_UniqueID: 14 + Properties: + Dimensions: + serializedVersion: 2 + x: 1358 + y: 28 + width: 273 + height: 398 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 14 + m_SlotName: VMesh + m_TargetModuleID: 26 + m_TargetSlotName: VMesh + - m_ModuleID: 14 + m_SlotName: Spots + m_TargetModuleID: 26 + m_TargetSlotName: Spots + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 0 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!4 &88490021 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88490019} + 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_Children: [] + m_Father: {fileID: 1100802245} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &123724151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 123724153} + - component: {fileID: 123724152} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &123724152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123724151} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1572407500 + m_UniqueID: 13 + Properties: + Dimensions: + serializedVersion: 2 + x: 608 + y: 198 + width: 350 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 13 + m_SlotName: Bounds + m_TargetModuleID: 21 + m_TargetSlotName: VMesh + - m_ModuleID: 13 + m_SlotName: Path/Volume + m_TargetModuleID: 24 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 13 + m_SlotName: Spots + m_TargetModuleID: 26 + m_TargetSlotName: Spots + m_WasUpgraded: 0 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + 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: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!4 &123724153 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123724151} + 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_Children: [] + m_Father: {fileID: 1100802245} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &126326249 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5782803670599948109, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_Name + value: RailBlock + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalPosition.z + value: -29.5 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5785955877103874077, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 93890153f30a45e4f9f536d64c5be5d2, type: 3} +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &241214472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 241214473} + - component: {fileID: 241214474} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &241214473 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_LocalRotation: {x: 0.40821797, y: -0.23456973, z: 0.10938168, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &241214474 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241214472} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 1 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &260581015 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 260581017} + - component: {fileID: 260581016} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &260581016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 260581015} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -3.421223} + m_HandleOut: {x: 0, y: 0, z: 3.421223} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &260581017 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 260581015} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.203, y: 0, z: 0} + m_LocalScale: {x: 0.507673, y: 0.507673, z: 0.507673} + m_Children: [] + m_Father: {fileID: 2003272614} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &303659041 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &410758919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 410758921} + - component: {fileID: 410758920} + m_Layer: 0 + m_Name: Game Object To Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &410758920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410758919} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7773b5e28f4f8ca48a528baec6332880, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1366649641 + m_UniqueID: 21 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 21 + m_SlotName: GameObjects + m_TargetModuleID: 11 + m_TargetSlotName: GameObject + OutputLinks: + - m_ModuleID: 21 + m_SlotName: VMesh + m_TargetModuleID: 13 + m_TargetSlotName: Bounds + - m_ModuleID: 21 + m_SlotName: VMesh + m_TargetModuleID: 26 + m_TargetSlotName: VMesh + useChildrenMeshes: 1 + centerMesh: 0 +--- !u!4 &410758921 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410758919} + 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_Children: [] + m_Father: {fileID: 1100802245} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &502194295 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 502194297} + - component: {fileID: 502194296} + m_Layer: 0 + m_Name: Input GameObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &502194296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502194295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1679565744 + m_UniqueID: 11 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 11 + m_SlotName: GameObject + m_TargetModuleID: 21 + m_TargetSlotName: GameObjects + m_GameObjects: + - m_Object: {fileID: 5782803670599948109, guid: 93890153f30a45e4f9f536d64c5be5d2, + type: 3} + m_Translation: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 1, y: 1, z: 1} +--- !u!4 &502194297 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 502194295} + 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_Children: [] + m_Father: {fileID: 1100802245} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &550104229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 550104234} + - component: {fileID: 550104233} + - component: {fileID: 550104232} + - component: {fileID: 550104231} + - component: {fileID: 550104230} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &550104230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &550104231 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &550104232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!114 &550104233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &550104234 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550104229} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &608589956 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608589958} + - component: {fileID: 608589957} + m_Layer: 0 + m_Name: Deform Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &608589957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608589956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484a3e33b7b7161448fd889c96322e73, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1362538623 + m_UniqueID: 26 + Properties: + Dimensions: + serializedVersion: 2 + x: 1031 + y: 26 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 26 + m_SlotName: Spots + m_TargetModuleID: 13 + m_TargetSlotName: Spots + - m_ModuleID: 26 + m_SlotName: VMesh + m_TargetModuleID: 21 + m_TargetSlotName: VMesh + - m_ModuleID: 26 + m_SlotName: Path + m_TargetModuleID: 24 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 26 + m_SlotName: VMesh + m_TargetModuleID: 14 + m_TargetSlotName: VMesh + - m_ModuleID: 26 + m_SlotName: Spots + m_TargetModuleID: 14 + m_TargetSlotName: Spots + stretchToEnd: 1 +--- !u!4 &608589958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608589956} + 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_Children: [] + m_Father: {fileID: 1100802245} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &786163611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 786163612} + m_Layer: 0 + m_Name: TargetMove + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &786163612 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 786163611} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 2.5, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1292288151} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1100802241 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1100802245} + - component: {fileID: 1100802244} + - component: {fileID: 1100802243} + - component: {fileID: 1100802242} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1100802242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100802241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1100802243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100802241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1100802244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100802241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1185578693} + - {fileID: 502194296} + - {fileID: 2090803320} + - {fileID: 410758920} + - {fileID: 123724152} + - {fileID: 608589957} + - {fileID: 88490020} + m_LastModuleID: 26 +--- !u!4 &1100802245 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100802241} + 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_Children: + - {fileID: 1185578694} + - {fileID: 502194297} + - {fileID: 2090803321} + - {fileID: 410758921} + - {fileID: 123724153} + - {fileID: 608589958} + - {fileID: 88490021} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1185578692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1185578694} + - component: {fileID: 1185578693} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1185578693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1185578692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 431 + width: 250 + height: 237 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 24 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 2003272613} +--- !u!4 &1185578694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1185578692} + 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_Children: + - {fileID: 2003272614} + m_Father: {fileID: 1100802245} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'The Deform Mesh module allows you to deform a mesh following a + path. + + It is used here to deform a straight rail block to match the curvature + of a curved path.' +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 1 +--- !u!1001 &1277525079 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1292288151} + m_Modifications: + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalPosition.y + value: .238000005 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.x + value: -.707106829 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 6480248, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + - {fileID: 6470380, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + - {fileID: 6486020, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: a5477333d439b6c4f8fb42e2136f1997, type: 3} +--- !u!1 &1292288149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1292288151} + - component: {fileID: 1292288150} + m_Layer: 0 + m_Name: RailtrackTrainController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1292288150 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292288149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0.202 + m_MoveMode: 1 + m_Speed: 12 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 2003272613} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1292288151 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1292288149} + m_LocalRotation: {x: 0, y: 0.9886765, z: 0, w: 0.1500627} + m_LocalPosition: {x: 5.910521, y: 0, z: 1.8847433} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 786163612} + - {fileID: 2070575504} + - {fileID: 1702386383} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1325375127 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1325375128} + - component: {fileID: 1325375129} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1325375128 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325375127} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.203, y: -0, z: 0} + m_LocalScale: {x: 0.507673, y: 0.507673, z: 0.507673} + m_Children: [] + m_Father: {fileID: 2003272614} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1325375129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325375127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: 3.421223} + m_HandleOut: {x: 0, y: 0, z: -3.421223} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 141106066} + - {fileID: 72089480} + - {fileID: 135020125} + - {fileID: 1671600030} + - {fileID: 241214473} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1647830095 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647830096} + - component: {fileID: 1647830098} + - component: {fileID: 1647830097} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1647830096 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647830095} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 6.203} + m_LocalScale: {x: 0.507673, y: 0.507673, z: 0.507673} + m_Children: [] + m_Father: {fileID: 2003272614} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1647830097 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647830095} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!114 &1647830098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647830095} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -3.421223, y: 0, z: -0} + m_HandleOut: {x: 3.421223, y: -0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1671600029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1671600030} + - component: {fileID: 1671600033} + - component: {fileID: 1671600032} + - component: {fileID: 1671600031} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1671600030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 34.298588, y: 34.29859, z: 34.29859} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1671600031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 3fbb64eeb951ac14381179a841926902, 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: 1 + 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 +--- !u!64 &1671600032 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1671600033 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671600029} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1702386383 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 460312, guid: a5477333d439b6c4f8fb42e2136f1997, + type: 3} + m_PrefabInstance: {fileID: 1277525079} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -56} + m_SizeDelta: {x: 240, y: 111.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 1 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &2003272612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2003272614} + - component: {fileID: 2003272613} + m_Layer: 0 + m_Name: Input Spline Path_2_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2003272613 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2003272612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 1647830098} + - {fileID: 1325375129} + - {fileID: 73561298} + - {fileID: 260581016} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 1 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &2003272614 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2003272612} + 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_Children: + - {fileID: 1647830096} + - {fileID: 1325375128} + - {fileID: 73561297} + - {fileID: 260581017} + m_Father: {fileID: 1185578694} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2070575503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2070575504} + m_Layer: 0 + m_Name: TargetLook + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2070575504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2070575503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2.5, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1292288151} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2090803319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2090803321} + - component: {fileID: 2090803320} + m_Layer: 0 + m_Name: Rasterize Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2090803320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2090803319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4dd47aa60d1b454886133ad3297289c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1407282305 + m_UniqueID: 24 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 431 + width: 250 + height: 278 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 112 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 24 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 24 + m_SlotName: Path + m_TargetModuleID: 13 + m_TargetSlotName: Path/Volume + - m_ModuleID: 24 + m_SlotName: Path + m_TargetModuleID: 26 + m_TargetSlotName: Path + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 0 + m_AngleTreshold: 10 + useBuggedRange: 0 +--- !u!4 &2090803321 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2090803319} + 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_Children: [] + m_Father: {fileID: 1100802245} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29bis_CGDeformMesh_Railway.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29bis_CGDeformMesh_Railway.unity.meta new file mode 100644 index 00000000..b5ba7f5d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/29bis_CGDeformMesh_Railway.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 281a044b74b3d4c4abcc08a68931a404 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/50_EndlessRunner.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/50_EndlessRunner.unity new file mode 100644 index 00000000..8e326925 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/50_EndlessRunner.unity @@ -0,0 +1,7898 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.057, g: 0.0625, b: 0.0665, a: 0.5} + m_AmbientGroundColor: {r: 0.0235, g: 0.0215, b: 0.0175, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 112000000, guid: c272ec6bdf73d084385c3174ef6de08c, + type: 2} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &28401676 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 28401677} + - component: {fileID: 28401678} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &28401677 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28401676} + 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_Children: [] + m_Father: {fileID: 2131062044} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &28401678 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 28401676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191071798 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 616 + y: 16 + width: 250 + height: 299 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + - {fileID: 0} +--- !u!1 &50093177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 50093178} + - component: {fileID: 50093179} + - component: {fileID: 50093180} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &50093178 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 50093177} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.0000005, y: 0, z: 0.00000036507845} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1186019827} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &50093179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 50093177} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &50093180 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 50093177} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &66167350 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 66167351} + - component: {fileID: 66167352} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &66167351 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66167350} + 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_Children: [] + m_Father: {fileID: 737780734} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &66167352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66167350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191061772 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 939 + y: 80 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &87954014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 87954015} + m_Layer: 0 + m_Name: ChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &87954015 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 87954014} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 4.9, z: -8.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 911327400} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &102499819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 102499820} + - component: {fileID: 102499821} + - component: {fileID: 102499822} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &102499820 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102499819} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 565804801} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &102499821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102499819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &102499822 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102499819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &186540294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 186540295} + - component: {fileID: 186540296} + m_Layer: 0 + m_Name: RightLaneSwitchable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &186540295 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 186540294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 17.83, y: 0, z: -47.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1517463302} + - {fileID: 1864296795} + - {fileID: 236755759} + - {fileID: 737780734} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &186540296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 186540294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 1517463303} + - {fileID: 1864296796} + - {fileID: 236755758} + ShowGizmos: 1 + m_Interpolation: 0 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &222886772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 222886774} + - component: {fileID: 222886773} + m_Layer: 0 + m_Name: Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &222886773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222886772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 1831282061} + - {fileID: 2139365669} + - {fileID: 756895339} + - {fileID: 799709196} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &222886774 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222886772} + m_LocalRotation: {x: 0, y: -0.010899367, z: 0, w: 0.99994063} + m_LocalPosition: {x: 7.807, y: 2, z: 2.511} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1831282062} + - {fileID: 2139365670} + - {fileID: 756895340} + - {fileID: 799709197} + m_Father: {fileID: 891937840} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &225031011 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 225031012} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &225031012 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 225031011} + 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_Children: + - {fileID: 1195379364} + - {fileID: 2141713491} + - {fileID: 1294785521} + - {fileID: 1011192312} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &236755757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 236755759} + - component: {fileID: 236755758} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &236755758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236755757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 1822205508} +--- !u!4 &236755759 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236755757} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 35.32} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 186540295} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &246109579 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 246109580} + - component: {fileID: 246109581} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &246109580 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246109579} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -32.341, y: 22.25, z: -53.79} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &246109581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246109579} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -20.201} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 574565354} +--- !u!1 &269783697 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 269783698} + - component: {fileID: 269783699} + - component: {fileID: 269783700} + - component: {fileID: 269783701} + m_Layer: 0 + m_Name: CG_LeftSwitch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &269783698 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269783697} + 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_Children: + - {fileID: 1421587288} + - {fileID: 882645387} + - {fileID: 1339009556} + - {fileID: 1264433773} + - {fileID: 1370071266} + m_Father: {fileID: 471963857} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &269783699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269783697} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1421587289} + - {fileID: 882645388} + - {fileID: 1339009557} + - {fileID: 1264433774} + - {fileID: 1370071265} + m_LastModuleID: 6 +--- !u!114 &269783700 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269783697} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &269783701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269783697} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &277940003 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 277940005} + - component: {fileID: 277940004} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &277940004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 277940003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 1993336283} + - {fileID: 682727529} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 1993336283} + Position: {x: 7.9, y: 0, z: -91.92} + Rotation: {x: -0, y: -0, z: -0, w: 1} + - ControlPoint: {fileID: 682727529} + Position: {x: 7.9, y: 0, z: -91.92} + Rotation: {x: -0, y: -0, z: -0, w: 1} +--- !u!4 &277940005 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 277940003} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.9, y: 0, z: -91.92} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 651518238} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &291518368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 291518369} + - component: {fileID: 291518370} + - component: {fileID: 291518371} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &291518369 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291518368} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 993714772} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &291518370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291518368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &291518371 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 291518368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &337280446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 337280448} + - component: {fileID: 337280447} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &337280447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337280446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -5.149} + m_HandleOut: {x: 0.206, y: 0, z: 12.31} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 877119479} +--- !u!4 &337280448 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 337280446} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.807, y: 0, z: 2.511} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1361935468} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &452818840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 452818841} + - component: {fileID: 452818842} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &452818841 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 452818840} + m_LocalRotation: {x: 0, y: 0.0035342847, z: 0, w: 0.99999374} + m_LocalPosition: {x: -32.3, y: 0, z: 67.757} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &452818842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 452818840} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: -0, z: -14.909} + m_HandleOut: {x: 0, y: 0, z: 39.62} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &465875332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 465875333} + - component: {fileID: 465875334} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &465875333 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465875332} + m_LocalRotation: {x: -0.16523696, y: 0, z: 0, w: 0.9862539} + m_LocalPosition: {x: -26.507, y: 0, z: 23.43} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1361935468} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &465875334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465875332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 15.658264, y: -0, z: -0.68459266} + m_HandleOut: {x: -14.683876, y: 0, z: 0.6419916} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &471963856 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 471963857} + - component: {fileID: 471963858} + m_Layer: 0 + m_Name: LeftLaneSwitchable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &471963857 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471963856} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.9, y: 0, z: -47.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 682727528} + - {fileID: 519377123} + - {fileID: 1965564290} + - {fileID: 269783698} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &471963858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471963856} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 682727529} + - {fileID: 519377124} + - {fileID: 1965564289} + ShowGizmos: 1 + m_Interpolation: 0 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &477528088 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 477528089} + - component: {fileID: 477528090} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &477528089 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 477528088} + m_LocalRotation: {x: 0.29159555, y: 0, z: 0, w: 0.9565417} + m_LocalPosition: {x: -31.1, y: 11.5, z: -133.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1361935468} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &477528090 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 477528088} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -29.03883, y: 4.6917725, z: 2.663739} + m_HandleOut: {x: 22.244553, y: -3.5940285, z: -2.040498} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &484452588 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 911327400} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalScale.z + value: .49999994 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!1 &495649881 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 495649882} + - component: {fileID: 495649884} + - component: {fileID: 495649883} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &495649882 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 495649881} + 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_Children: [] + m_Father: {fileID: 1208342364} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -299.3} + m_SizeDelta: {x: -20, y: 290.3} + m_Pivot: {x: 0, y: 0} +--- !u!114 &495649883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 495649881} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Use Fire to jump and Left/Right to switch lanes! + + + This + example uses a custom SplineController featuring several techniques: + + + - + OnCPReached event is used to retrieve metadata about lane switching + + - + SwitchTo() is used to switch lanes' +--- !u!222 &495649884 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 495649881} + m_CullTransparentMesh: 0 +--- !u!1 &519377122 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519377123} + - component: {fileID: 519377124} + - component: {fileID: 519377125} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &519377123 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519377122} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1.92} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 471963857} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &519377124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519377122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.63999844, y: -0, z: -7.036584} + m_HandleOut: {x: 0.7429827, y: 0, z: 8.168864} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &519377125 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519377122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e84c43cd1f981c6408996efed1303788, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Spline: {fileID: 186540296} + CP: {fileID: 1517463303} + Options: Right +--- !u!1 &565804800 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 565804801} + - component: {fileID: 565804802} + m_Layer: 0 + m_Name: Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &565804801 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 565804800} + m_LocalRotation: {x: 0, y: -0.010899367, z: 0, w: 0.99994063} + m_LocalPosition: {x: 7.807, y: 2, z: 2.511} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1478310856} + - {fileID: 1216984071} + - {fileID: 102499820} + - {fileID: 1041647636} + m_Father: {fileID: 1164191440} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &565804802 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 565804800} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 1478310857} + - {fileID: 1216984072} + - {fileID: 102499821} + - {fileID: 1041647637} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &572324636 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 572324637} + - component: {fileID: 572324638} + m_Layer: 0 + m_Name: RightLane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &572324637 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572324636} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 50.13, y: -11.1, z: -38.653} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1608207740} + - {fileID: 452818841} + - {fileID: 2105345549} + - {fileID: 1205246398} + - {fileID: 832080371} + - {fileID: 1647602099} + - {fileID: 854872329} + - {fileID: 246109580} + - {fileID: 2131062044} + - {fileID: 698968138} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &572324638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572324636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 1608207741} + - {fileID: 452818842} + - {fileID: 2105345550} + - {fileID: 1205246399} + - {fileID: 832080372} + - {fileID: 1647602098} + - {fileID: 854872330} + - {fileID: 246109581} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &574565353 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 574565355} + - component: {fileID: 574565354} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &574565354 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574565353} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 246109581} + - {fileID: 1517463303} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 246109581} + Position: {x: 17.789001, y: 11.15, z: -92.443} + Rotation: {x: -0, y: -0, z: -0, w: 1} + - ControlPoint: {fileID: 1517463303} + Position: {x: 17.83, y: 0, z: -91.92} + Rotation: {x: -0, y: -0, z: -0, w: 1} +--- !u!4 &574565355 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 574565353} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 17.789001, y: 11.15, z: -92.443} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 651518238} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &609995064 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 609995065} + - component: {fileID: 609995066} + - component: {fileID: 609995067} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &609995065 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 609995064} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 993714772} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &609995066 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 609995064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &609995067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 609995064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &651518235 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 651518238} + - component: {fileID: 651518237} + - component: {fileID: 651518236} + - component: {fileID: 651518239} + - component: {fileID: 651518240} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &651518236 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651518235} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &651518237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651518235} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &651518238 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651518235} + 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_Children: + - {fileID: 877119480} + - {fileID: 277940005} + - {fileID: 1822205507} + - {fileID: 574565355} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &651518239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651518235} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &651518240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651518235} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &662626311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 662626312} + - component: {fileID: 662626313} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &662626312 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662626311} + 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_Children: [] + m_Father: {fileID: 1597645286} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &662626313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 662626311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191041762 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 939 + y: 80 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &682727527 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 682727528} + - component: {fileID: 682727529} + - component: {fileID: 682727530} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &682727528 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 682727527} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -44.12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 471963857} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &682727529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 682727527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 277940004} +--- !u!114 &682727530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 682727527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e84c43cd1f981c6408996efed1303788, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Spline: {fileID: 186540296} + CP: {fileID: 1517463303} + Options: Right +--- !u!1001 &698968137 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 572324637} + m_Modifications: + - target: {fileID: 449654, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalPosition.z + value: -.263999999 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalPosition.x + value: -32.341 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalPosition.y + value: 26.23 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalPosition.z + value: -53.15 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 10898336, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} + propertyPath: m_DrawHalo + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d70956f95c65d1a4bb05b556fd7f5b94, type: 3} +--- !u!4 &698968138 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 458426, guid: d70956f95c65d1a4bb05b556fd7f5b94, + type: 3} + m_PrefabInstance: {fileID: 698968137} + m_PrefabAsset: {fileID: 0} +--- !u!1 &735804054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 735804055} + - component: {fileID: 735804056} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &735804055 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735804054} + 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_Children: [] + m_Father: {fileID: 1597645286} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &735804056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735804054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191041762 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 625 + y: 53 + width: 250 + height: 299 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + - {fileID: 0} +--- !u!1 &737780733 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 737780734} + - component: {fileID: 737780735} + - component: {fileID: 737780737} + - component: {fileID: 737780736} + m_Layer: 0 + m_Name: CG_RightSwitch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &737780734 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 737780733} + 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_Children: + - {fileID: 980614369} + - {fileID: 1164191440} + - {fileID: 840093545} + - {fileID: 1422370717} + - {fileID: 2030447689} + - {fileID: 66167351} + m_Father: {fileID: 186540295} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &737780735 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 737780733} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 980614370} + - {fileID: 1164191441} + - {fileID: 840093546} + - {fileID: 1422370718} + - {fileID: 2030447690} + - {fileID: 66167352} + m_LastModuleID: 7 +--- !u!114 &737780736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 737780733} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &737780737 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 737780733} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &756895338 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 756895340} + - component: {fileID: 756895339} + - component: {fileID: 756895341} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &756895339 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756895338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &756895340 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756895338} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.0000005, y: 0, z: -0.00000011175871} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 222886774} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &756895341 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756895338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &799709195 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 799709197} + - component: {fileID: 799709196} + - component: {fileID: 799709198} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &799709196 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 799709195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &799709197 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 799709195} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.0000005, y: -4, z: -0.00000011175871} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 222886774} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &799709198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 799709195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &832080370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 832080371} + - component: {fileID: 832080372} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &832080371 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832080370} + m_LocalRotation: {x: 0.2354207, y: 0.96960056, z: 0.06513671, w: -0.014459619} + m_LocalPosition: {x: -4.8, y: 9.5, z: 2.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &832080372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832080370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.43900675, y: -3.6044486, z: 26.643837} + m_HandleOut: {x: -0.48559582, y: 3.9869661, z: -29.47138} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &840093544 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 840093545} + - component: {fileID: 840093546} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &840093545 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 840093544} + 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_Children: [] + m_Father: {fileID: 737780734} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &840093546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 840093544} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191031748 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 330 + y: 15 + width: 270 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 2 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 7 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 25 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &854872328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 854872329} + - component: {fileID: 854872330} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &854872329 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854872328} + m_LocalRotation: {x: 0.20714629, y: -0.39097303, z: -0.44943672, w: 0.7760394} + m_LocalPosition: {x: -9.22, y: 24.19, z: -102.14} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &854872330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854872328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 21.601564, y: -1.7845573, z: -4.3133926} + m_HandleOut: {x: -20.443424, y: 1.6888807, z: 4.0821357} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &877119478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 877119480} + - component: {fileID: 877119479} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &877119479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 877119478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 337280447} + - {fileID: 1965564289} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 337280447} + Position: {x: 7.807, y: 0, z: 2.511} + Rotation: {x: -0, y: -0, z: -0, w: 1} + - ControlPoint: {fileID: 1965564289} + Position: {x: 7.807, y: 0, z: 2.5110016} + Rotation: {x: -0, y: -0, z: -0, w: 1} +--- !u!4 &877119480 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 877119478} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.807, y: 0, z: 2.5110016} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 651518238} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &882645386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 882645387} + - component: {fileID: 882645388} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &882645387 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 882645386} + 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_Children: + - {fileID: 993714772} + m_Father: {fileID: 269783698} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &882645388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 882645386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191051773 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 12 + y: 138 + width: 250 + height: 192 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 2 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 993714773} +--- !u!1 &886661869 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 886661870} + - component: {fileID: 886661871} + - component: {fileID: 886661872} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &886661870 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 886661869} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 993714772} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &886661871 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 886661869} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &886661872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 886661869} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &891937838 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 891937840} + - component: {fileID: 891937839} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &891937839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891937838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191031748 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 12 + y: 138 + width: 250 + height: 192 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 2 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 222886773} +--- !u!4 &891937840 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 891937838} + 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_Children: + - {fileID: 222886774} + m_Father: {fileID: 1597645286} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &911327399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 911327400} + m_Layer: 0 + m_Name: Offset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &911327400 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 911327399} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 87954015} + - {fileID: 1737641466} + - {fileID: 1599690286} + m_Father: {fileID: 1669810794} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &978152310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 978152311} + - component: {fileID: 978152312} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &978152311 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978152310} + m_LocalRotation: {x: 0.2699219, y: -0.25555903, z: -0.014075533, w: 0.92824227} + m_LocalPosition: {x: -73.724, y: 11.6, z: -70.701} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1361935468} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &978152312 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978152310} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -4.256356, y: 2.4848502, z: 16.676441} + m_HandleOut: {x: 7.229349, y: -4.2204766, z: -28.324656} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &980614368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 980614369} + - component: {fileID: 980614370} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &980614369 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 980614368} + 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_Children: [] + m_Father: {fileID: 737780734} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &980614370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 980614368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191041762 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 174 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 186540296} +--- !u!1 &991730335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 991730336} + - component: {fileID: 991730337} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &991730336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 991730335} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -60.275, y: 0, z: 6.696} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1361935468} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &991730337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 991730335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 9.196912, y: -4.584957, z: 10.508251} + m_HandleOut: {x: -10.423271, y: 5.1963367, z: -11.90947} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &993714771 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 993714772} + - component: {fileID: 993714773} + m_Layer: 0 + m_Name: Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &993714772 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993714771} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -44.12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 886661870} + - {fileID: 291518369} + - {fileID: 1593985406} + - {fileID: 609995065} + m_Father: {fileID: 882645387} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &993714773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993714771} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 886661871} + - {fileID: 291518370} + - {fileID: 1593985407} + - {fileID: 609995066} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &996452984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 996452985} + - component: {fileID: 996452986} + - component: {fileID: 996452987} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &996452985 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996452984} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.0000005, y: -4, z: 0.00000036507845} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1186019827} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &996452986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996452984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &996452987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996452984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1011192307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1011192312} + - component: {fileID: 1011192311} + - component: {fileID: 1011192309} + - component: {fileID: 1011192308} + - component: {fileID: 1011192313} + 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 &1011192308 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011192307} + m_Enabled: 1 +--- !u!124 &1011192309 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011192307} + m_Enabled: 1 +--- !u!20 &1011192311 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011192307} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1011192312 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011192307} + m_LocalRotation: {x: 0.074903436, y: -0.5824246, z: 0.05401735, w: 0.80762196} + m_LocalPosition: {x: -5.611615, y: 7.675597, z: 17.156902} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 225031012} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1011192313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011192307} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 1599690286} + MoveTo: {fileID: 87954015} + RollTo: {fileID: 0} + ChaseTime: 0.5 +--- !u!1 &1041647635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1041647636} + - component: {fileID: 1041647637} + - component: {fileID: 1041647638} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1041647636 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1041647635} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 565804801} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1041647637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1041647635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1041647638 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1041647635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1164191439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1164191440} + - component: {fileID: 1164191441} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1164191440 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164191439} + 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_Children: + - {fileID: 565804801} + m_Father: {fileID: 737780734} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1164191441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164191439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191031748 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 12 + y: 138 + width: 250 + height: 192 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 2 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 565804802} +--- !u!1 &1186019826 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1186019827} + - component: {fileID: 1186019828} + m_Layer: 0 + m_Name: Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1186019827 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186019826} + m_LocalRotation: {x: 0, y: -0.010899367, z: 0, w: 0.99994063} + m_LocalPosition: {x: 7.807, y: 2, z: 2.511} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1885214163} + - {fileID: 1980613277} + - {fileID: 50093178} + - {fileID: 996452985} + m_Father: {fileID: 1755611803} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1186019828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186019826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 1885214164} + - {fileID: 1980613278} + - {fileID: 50093179} + - {fileID: 996452986} + ShowGizmos: 0 + m_Interpolation: 0 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 2 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 1 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1195379363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1195379364} + - component: {fileID: 1195379365} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1195379364 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195379363} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 225031012} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &1195379365 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195379363} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &1205246397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1205246398} + - component: {fileID: 1205246399} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1205246398 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1205246397} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 30.6, y: 0, z: 60.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1205246399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1205246397} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.305307, y: -1.714, z: 21.388512} + m_HandleOut: {x: -0.38257363, y: 2.1477764, z: -26.801483} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1208342363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1208342364} + - component: {fileID: 1208342367} + - component: {fileID: 1208342366} + - component: {fileID: 1208342365} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1208342364 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1208342363} + 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_Children: + - {fileID: 495649882} + m_Father: {fileID: 2141713491} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -106} + m_SizeDelta: {x: 240, y: 211} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1208342365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1208342363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &1208342366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1208342363} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1208342367 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1208342363} + m_CullTransparentMesh: 0 +--- !u!1 &1216984070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1216984071} + - component: {fileID: 1216984072} + - component: {fileID: 1216984073} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1216984071 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1216984070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 565804801} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1216984072 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1216984070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1216984073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1216984070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 1 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1264433772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1264433773} + - component: {fileID: 1264433774} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1264433773 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1264433772} + 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_Children: [] + m_Father: {fileID: 269783698} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1264433774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1264433772} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191051773 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 625 + y: 53 + width: 250 + height: 299 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 2} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + - {fileID: 2100000, guid: e3d3fc405aabcbb48a873e5fcd3e1ab6, type: 2} + - {fileID: 0} +--- !u!1 &1294785520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1294785521} + - component: {fileID: 1294785524} + - component: {fileID: 1294785523} + - component: {fileID: 1294785522} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1294785521 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294785520} + 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_Children: [] + m_Father: {fileID: 225031012} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1294785522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294785520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1294785523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294785520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1294785524 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1294785520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &1317058401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1317058402} + - component: {fileID: 1317058403} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1317058402 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1317058401} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -51.4, y: 0, z: 38.653} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2131062044} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1317058403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1317058401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191001703 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 611 + y: 322 + width: 250 + height: 228 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1339009555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1339009556} + - component: {fileID: 1339009557} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1339009556 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1339009555} + 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_Children: [] + m_Father: {fileID: 269783698} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1339009557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1339009555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191051773 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 330 + y: 15 + width: 270 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 2 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 25 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &1361935467 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1361935468} + - component: {fileID: 1361935469} + m_Layer: 0 + m_Name: LeftLane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1361935468 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1361935467} + 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_Children: + - {fileID: 337280448} + - {fileID: 465875333} + - {fileID: 991730336} + - {fileID: 2124237388} + - {fileID: 978152311} + - {fileID: 477528089} + - {fileID: 1993336282} + - {fileID: 1597645286} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1361935469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1361935467} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.4.1 + ControlPoints: + - {fileID: 337280447} + - {fileID: 465875334} + - {fileID: 991730337} + - {fileID: 2124237389} + - {fileID: 978152312} + - {fileID: 477528090} + - {fileID: 1993336283} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1370071264 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1370071266} + - component: {fileID: 1370071265} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1370071265 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1370071264} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191051773 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 939 + y: 80 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!4 &1370071266 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1370071264} + 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_Children: [] + m_Father: {fileID: 269783698} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1394201080 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1394201082} + - component: {fileID: 1394201081} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1394201081 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394201080} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1190981687 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 330 + y: 15 + width: 270 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 2 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 6 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 70 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 25 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!4 &1394201082 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1394201080} + 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_Children: [] + m_Father: {fileID: 2131062044} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1421587287 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1421587288} + - component: {fileID: 1421587289} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1421587288 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1421587287} + 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_Children: [] + m_Father: {fileID: 269783698} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1421587289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1421587287} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191051773 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 174 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 471963858} +--- !u!1 &1422370716 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1422370717} + - component: {fileID: 1422370718} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1422370717 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1422370716} + 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_Children: [] + m_Father: {fileID: 737780734} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1422370718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1422370716} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191031748 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 635 + y: 18 + width: 250 + height: 299 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 2} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: a6618069855ac9541b01ac06ce4b5ed5, type: 2} + - {fileID: 2100000, guid: e3d3fc405aabcbb48a873e5fcd3e1ab6, type: 2} + - {fileID: 0} +--- !u!1 &1475331955 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1475331956} + - component: {fileID: 1475331957} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1475331956 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475331955} + 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_Children: [] + m_Father: {fileID: 1597645286} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1475331957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1475331955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1190981687 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 174 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1361935469} +--- !u!1 &1478310855 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1478310856} + - component: {fileID: 1478310857} + - component: {fileID: 1478310858} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1478310856 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1478310855} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 565804801} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1478310857 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1478310855} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1478310858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1478310855} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1517463301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1517463302} + - component: {fileID: 1517463303} + - component: {fileID: 1517463304} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1517463302 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517463301} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -44.12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 186540295} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1517463303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517463301} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: -7.9432526} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 574565354} +--- !u!114 &1517463304 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517463301} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e84c43cd1f981c6408996efed1303788, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Spline: {fileID: 471963858} + CP: {fileID: 682727529} + Options: Left +--- !u!1 &1549845425 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1549845426} + - component: {fileID: 1549845427} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1549845426 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549845425} + 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_Children: [] + m_Father: {fileID: 1597645286} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1549845427 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1549845425} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1190971673 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 330 + y: 15 + width: 270 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 2 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 2.5 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 25 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 0 + m_CrossMaterials: 1 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1001 &1574268102 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1593985405 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1593985406} + - component: {fileID: 1593985407} + - component: {fileID: 1593985408} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1593985406 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1593985405} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 993714772} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1593985407 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1593985405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1593985408 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1593985405} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1597645285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1597645286} + - component: {fileID: 1597645287} + - component: {fileID: 1597645288} + - component: {fileID: 1597645289} + m_Layer: 0 + m_Name: CG_LeftLane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1597645286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1597645285} + 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_Children: + - {fileID: 1475331956} + - {fileID: 891937840} + - {fileID: 1549845426} + - {fileID: 735804055} + - {fileID: 662626312} + m_Father: {fileID: 1361935468} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1597645287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1597645285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1475331957} + - {fileID: 891937839} + - {fileID: 1549845427} + - {fileID: 735804056} + - {fileID: 662626313} + m_LastModuleID: 5 +--- !u!114 &1597645288 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1597645285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1597645289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1597645285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &1599690285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1599690286} + m_Layer: 0 + m_Name: LookTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1599690286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1599690285} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 3.3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 911327400} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1608207739 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1608207740} + - component: {fileID: 1608207741} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1608207740 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608207739} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -32.3, y: 0, z: 25.86} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1608207741 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608207739} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 1822205508} +--- !u!1 &1634916150 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1634916151} + - component: {fileID: 1634916152} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1634916151 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634916150} + 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_Children: [] + m_Father: {fileID: 2131062044} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1634916152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634916150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1190971673 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 939 + y: 80 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1647602097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647602099} + - component: {fileID: 1647602098} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1647602098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647602097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 4.6425486, y: -4.279691, z: 29.065872} + m_HandleOut: {x: -3.449495, y: 3.1798856, z: -21.596453} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1647602099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647602097} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32.2, y: 16.7, z: -64.2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1669810792 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194842, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1669810794} + - component: {fileID: 1669810795} + - component: {fileID: 1669810796} + - component: {fileID: 1669810793} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1669810793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669810792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46b03da15a1df7c47a0f71cb6e6341b1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0.12 + m_MoveMode: 1 + m_Speed: 50 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 1361935469} + m_UseCache: 0 + connectionBehavior: 3 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1669810793} + m_MethodName: OnCPReached + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnEndReached: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1669810793} + m_MethodName: UseFollowUpOrFall + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + JumpHeight: 30 + JumpSpeed: 1 + JumpCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1.9954172 + outSlope: 1.9954172 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.500334 + value: 0.9983751 + inSlope: -0.009020984 + outSlope: -0.009020984 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.988656 + value: 0.0151587725 + inSlope: -2.0134592 + outSlope: -2.0134592 + tangentMode: 34 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + Gravity: 2 +--- !u!4 &1669810794 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 421896, guid: 7ba49b2daac69b84ca73ad6852632ec7, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669810792} + m_LocalRotation: {x: -0.07189341, y: -0.5989592, z: 0.09504761, w: 0.79186183} + m_LocalPosition: {x: -13.089498, y: 0, z: 21.214794} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 911327400} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1669810795 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669810792} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0.7, z: 0} +--- !u!54 &1669810796 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669810792} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!4 &1737641466 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 484452588} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1755611802 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1755611803} + - component: {fileID: 1755611804} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1755611803 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1755611802} + 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_Children: + - {fileID: 1186019827} + m_Father: {fileID: 2131062044} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1755611804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1755611802} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1190951648 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 12 + y: 138 + width: 250 + height: 192 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 2 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1186019828} +--- !u!1 &1822205506 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1822205507} + - component: {fileID: 1822205508} + m_Layer: 0 + m_Name: Connection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1822205507 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1822205506} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 17.830002, y: -11.1, z: -12.792999} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 651518238} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1822205508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1822205506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 320a2489ca748ce44a808c78b9a5c740, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ControlPoints: + - {fileID: 1608207741} + - {fileID: 236755758} + processedControlPointsCoordinates: + - ControlPoint: {fileID: 1608207741} + Position: {x: 17.830002, y: -11.1, z: -12.792999} + Rotation: {x: -0, y: -0, z: -0, w: 1} + - ControlPoint: {fileID: 236755758} + Position: {x: 17.83, y: 0, z: -12.48} + Rotation: {x: -0, y: -0, z: -0, w: 1} +--- !u!1 &1831282060 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1831282062} + - component: {fileID: 1831282061} + - component: {fileID: 1831282063} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1831282061 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831282060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1831282062 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831282060} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: -4, z: 0.00000010430813} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 222886774} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1831282063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831282060} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1858458482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1858458483} + - component: {fileID: 1858458484} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1858458483 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858458482} + 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_Children: [] + m_Father: {fileID: 2131062044} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1858458484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1858458482} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1190951648 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 174 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 572324638} +--- !u!1 &1864296794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1864296795} + - component: {fileID: 1864296796} + - component: {fileID: 1864296797} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1864296795 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1864296794} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1.92} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 186540295} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1864296796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1864296794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.63999844, y: -0, z: -7.036584} + m_HandleOut: {x: 0.7429827, y: 0, z: 8.168864} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1864296797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1864296794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e84c43cd1f981c6408996efed1303788, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Spline: {fileID: 471963858} + CP: {fileID: 682727529} + Options: Left +--- !u!1 &1885214162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1885214163} + - component: {fileID: 1885214164} + - component: {fileID: 1885214165} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1885214163 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885214162} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.9999986, y: -4, z: -0.0000008791685} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1186019827} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1885214164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885214162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1885214165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885214162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1965564288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1965564290} + - component: {fileID: 1965564289} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1965564289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1965564288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -0} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 337280447} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 877119479} +--- !u!4 &1965564290 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1965564288} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.093, y: 0, z: 50.311} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 471963857} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1980613276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1980613277} + - component: {fileID: 1980613278} + - component: {fileID: 1980613279} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1980613277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1980613276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.9999986, y: 0, z: -0.0000008791685} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1186019827} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1980613278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1980613276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1980613279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1980613276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1993336281 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1993336282} + - component: {fileID: 1993336283} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1993336282 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993336281} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 7.9, y: 0, z: -91.92} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1361935468} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1993336283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993336281} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: -0, z: -21.25} + m_HandleOut: {x: 0, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 682727529} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 1 + m_ConnectionSyncRotation: 1 + m_Connection: {fileID: 277940004} +--- !u!1 &2030447688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2030447689} + - component: {fileID: 2030447690} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2030447689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2030447688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -17.83, y: 0, z: 47.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 737780734} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2030447690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2030447688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1191031748 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 641 + y: 306 + width: 250 + height: 228 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: Volume + m_TargetModuleID: 2 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &2105345548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2105345549} + - component: {fileID: 2105345550} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2105345549 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2105345548} + m_LocalRotation: {x: -0.32568365, y: 0.6761613, z: -0.2876601, w: 0.5949687} + m_LocalPosition: {x: 3.7, y: 0, z: 108.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 572324637} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2105345550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2105345548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -21.083937, y: -0, z: 2.2525547} + m_HandleOut: {x: 21.33782, y: 0, z: -2.2796788} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2124237387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2124237388} + - component: {fileID: 2124237389} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2124237388 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124237387} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -68.942, y: 23.4, z: -27.969} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1361935468} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2124237389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124237387} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.8402, y: -2.5933795, z: 16.207703} + m_HandleOut: {x: -2.9649587, y: 2.7072964, z: -16.919641} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2131062043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2131062044} + - component: {fileID: 2131062045} + - component: {fileID: 2131062047} + - component: {fileID: 2131062046} + m_Layer: 0 + m_Name: CG_RightLane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2131062044 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131062043} + 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_Children: + - {fileID: 1858458483} + - {fileID: 1755611803} + - {fileID: 1394201082} + - {fileID: 28401677} + - {fileID: 1317058402} + - {fileID: 1634916151} + m_Father: {fileID: 572324637} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2131062045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131062043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1858458484} + - {fileID: 1755611804} + - {fileID: 1394201081} + - {fileID: 28401678} + - {fileID: 1317058403} + - {fileID: 1634916152} + m_LastModuleID: 6 +--- !u!114 &2131062046 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131062043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &2131062047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131062043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &2139365668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2139365670} + - component: {fileID: 2139365669} + - component: {fileID: 2139365671} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2139365669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2139365668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &2139365670 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2139365668} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 0.00000010430813} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 222886774} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2139365671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2139365668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2141713490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2141713491} + - component: {fileID: 2141713494} + - component: {fileID: 2141713493} + - component: {fileID: 2141713492} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2141713491 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141713490} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1208342364} + m_Father: {fileID: 225031012} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &2141713492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141713490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2141713493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141713490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &2141713494 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141713490} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/50_EndlessRunner.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/50_EndlessRunner.unity.meta new file mode 100644 index 00000000..e0157d7c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/50_EndlessRunner.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4909477262300cb4fb6c4a92cb496b34 +timeCreated: 1436098989 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/51_InfiniteTrack.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/51_InfiniteTrack.unity new file mode 100644 index 00000000..1ce95bb3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/51_InfiniteTrack.unity @@ -0,0 +1,2452 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.057, g: 0.0625, b: 0.0665, a: 0.5} + m_AmbientGroundColor: {r: 0.0235, g: 0.0215, b: 0.0175, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &40133211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 40133212} + - component: {fileID: 40133213} + m_Layer: 0 + m_Name: InfiniteTrack + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &40133212 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40133211} + 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_Children: + - {fileID: 208096429} + - {fileID: 1485757533} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &40133213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 40133211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 364607810a942f749bd512526921dc9b, type: 3} + m_Name: + m_EditorClassIdentifier: + TrackSpline: {fileID: 208096428} + Controller: {fileID: 1485757532} + RoadMaterial: {fileID: 2100000, guid: 53f8c8b79a8c4374db97e82e5a35b4af, type: 2} + TxtStats: {fileID: 672591661} + CurvationX: 25 + CurvationY: 25 + CPStepSize: 25 + HeadCP: 3 + TailCP: 1 + Sections: 4 + SectionCPCount: 3 +--- !u!1 &64251628 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 64251632} + - component: {fileID: 64251631} + - component: {fileID: 64251630} + - component: {fileID: 64251629} + - component: {fileID: 64251633} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &64251629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64251628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &64251630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64251628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &64251631 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64251628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &64251632 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64251628} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &64251633 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64251628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &66673441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 66673442} + m_Layer: 0 + m_Name: ChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &66673442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 66673441} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 15, z: -15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1485757533} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &208096427 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 208096429} + - component: {fileID: 208096428} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &208096428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208096427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: [] + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 25 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &208096429 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208096427} + 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_Children: [] + m_Father: {fileID: 40133212} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &226215483 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 226215484} + - component: {fileID: 226215487} + - component: {fileID: 226215486} + - component: {fileID: 226215485} + m_Layer: 5 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &226215484 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226215483} + 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_Children: + - {fileID: 819795617} + - {fileID: 1275376813} + - {fileID: 245190648} + m_Father: {fileID: 539816353} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 44.45, y: -39.4} + m_SizeDelta: {x: 131.1, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &226215485 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226215483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 226215486} + m_Template: {fileID: 245190648} + m_CaptionText: {fileID: 819795618} + m_CaptionImage: {fileID: 0} + m_ItemText: {fileID: 1553709988} + m_ItemImage: {fileID: 0} + m_Value: 0 + m_Options: + m_Options: + - m_Text: None + m_Image: {fileID: 0} + - m_Text: Mesh + m_Image: {fileID: 0} + - m_Text: Box + m_Image: {fileID: 0} + - m_Text: Sphere + m_Image: {fileID: 0} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 40133213} + m_MethodName: setColliderMode + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_AlphaFadeSpeed: 0.15 +--- !u!114 &226215486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226215483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &226215487 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226215483} + m_CullTransparentMesh: 0 +--- !u!1 &245190647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 245190648} + - component: {fileID: 245190651} + - component: {fileID: 245190650} + - component: {fileID: 245190649} + m_Layer: 5 + m_Name: Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &245190648 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245190647} + 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_Children: + - {fileID: 271955422} + - {fileID: 537405397} + m_Father: {fileID: 226215484} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 0, y: 150} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &245190649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245190647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 1356176899} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 271955422} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 537405398} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &245190650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245190647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &245190651 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 245190647} + m_CullTransparentMesh: 0 +--- !u!1 &271955421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 271955422} + - component: {fileID: 271955425} + - component: {fileID: 271955424} + - component: {fileID: 271955423} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &271955422 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271955421} + 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_Children: + - {fileID: 1356176899} + m_Father: {fileID: 245190648} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -18, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &271955423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271955421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &271955424 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271955421} + m_CullTransparentMesh: 0 +--- !u!114 &271955425 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271955421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &368218880 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 368218881} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &368218881 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 368218880} + 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_Children: + - {fileID: 1142241709} + m_Father: {fileID: 537405397} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &433407335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433407336} + - component: {fileID: 433407337} + m_Layer: 0 + m_Name: Directional light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433407336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433407335} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 721179344} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!108 &433407337 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433407335} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1 &481697570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 481697575} + - component: {fileID: 481697574} + - component: {fileID: 481697572} + - component: {fileID: 481697571} + - component: {fileID: 481697577} + 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 &481697571 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 +--- !u!124 &481697572 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 +--- !u!20 &481697574 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &481697575 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_LocalRotation: {x: 0.28978416, y: -0, z: -0, w: 0.95709205} + m_LocalPosition: {x: 0, y: 15, z: -15} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 721179344} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &481697577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481697570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 434e0e7bb669a364a94813e14dffb65b, type: 3} + m_Name: + m_EditorClassIdentifier: + LookAt: {fileID: 893544072} + MoveTo: {fileID: 66673442} + RollTo: {fileID: 0} + ChaseTime: 0.7 +--- !u!1001 &502637092 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &537405396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 537405397} + - component: {fileID: 537405400} + - component: {fileID: 537405399} + - component: {fileID: 537405398} + m_Layer: 5 + m_Name: Scrollbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &537405397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537405396} + 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_Children: + - {fileID: 368218881} + m_Father: {fileID: 245190648} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!114 &537405398 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537405396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1142241710} + m_HandleRect: {fileID: 1142241709} + m_Direction: 2 + m_Value: 0 + m_Size: 0.2 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &537405399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537405396} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &537405400 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 537405396} + m_CullTransparentMesh: 0 +--- !u!1 &539816352 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 539816353} + - component: {fileID: 539816356} + - component: {fileID: 539816355} + - component: {fileID: 539816354} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &539816353 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + 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_Children: + - {fileID: 1591979009} + - {fileID: 672591663} + - {fileID: 226215484} + - {fileID: 1706280153} + m_Father: {fileID: 2036569540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -107.7} + m_SizeDelta: {x: 240, y: 214.7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &539816354 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &539816355 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &539816356 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 539816352} + m_CullTransparentMesh: 0 +--- !u!1 &672591660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 672591663} + - component: {fileID: 672591662} + - component: {fileID: 672591661} + m_Layer: 5 + m_Name: Stats + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &672591661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672591660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Spline Update: 0ms + + Generator Update: 0ms' +--- !u!222 &672591662 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672591660} + m_CullTransparentMesh: 0 +--- !u!224 &672591663 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 672591660} + 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_Children: [] + m_Father: {fileID: 539816353} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.35, y: -81.4} + m_SizeDelta: {x: 220.7, y: 39.7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &721179343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 721179344} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &721179344 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 721179343} + 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_Children: + - {fileID: 433407336} + - {fileID: 2036569540} + - {fileID: 1718672099} + - {fileID: 481697575} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &818269810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 818269811} + - component: {fileID: 818269813} + - component: {fileID: 818269812} + m_Layer: 5 + m_Name: Item Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &818269811 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 818269810} + 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_Children: [] + m_Father: {fileID: 1368553786} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &818269812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 818269810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &818269813 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 818269810} + m_CullTransparentMesh: 0 +--- !u!1 &819795616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 819795617} + - component: {fileID: 819795619} + - component: {fileID: 819795618} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &819795617 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819795616} + 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_Children: [] + m_Father: {fileID: 226215484} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7.5, y: -0.5} + m_SizeDelta: {x: -35, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &819795618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819795616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: None +--- !u!222 &819795619 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819795616} + m_CullTransparentMesh: 0 +--- !u!1 &825106884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 825106885} + - component: {fileID: 825106887} + - component: {fileID: 825106886} + m_Layer: 5 + m_Name: Item Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &825106885 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825106884} + 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_Children: [] + m_Father: {fileID: 1368553786} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &825106886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825106884} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &825106887 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 825106884} + m_CullTransparentMesh: 0 +--- !u!4 &893544072 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, + type: 3} + m_PrefabInstance: {fileID: 1005301203} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1005301203 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1485757533} + m_Modifications: + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.y + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 492112, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ffbb5901c3829b14f8b88e5068bdd36e, type: 3} +--- !u!1 &1142241708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1142241709} + - component: {fileID: 1142241711} + - component: {fileID: 1142241710} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1142241709 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1142241708} + 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_Children: [] + m_Father: {fileID: 368218881} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.2} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1142241710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1142241708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1142241711 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1142241708} + m_CullTransparentMesh: 0 +--- !u!1 &1275376812 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1275376813} + - component: {fileID: 1275376815} + - component: {fileID: 1275376814} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1275376813 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1275376812} + 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_Children: [] + m_Father: {fileID: 226215484} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -15, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1275376814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1275376812} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1275376815 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1275376812} + m_CullTransparentMesh: 0 +--- !u!1 &1356176898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1356176899} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1356176899 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1356176898} + 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_Children: + - {fileID: 1368553786} + m_Father: {fileID: 271955422} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 28} + m_Pivot: {x: 0.5, y: 1} +--- !u!1 &1368553785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1368553786} + - component: {fileID: 1368553787} + m_Layer: 5 + m_Name: Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1368553786 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1368553785} + 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_Children: + - {fileID: 818269811} + - {fileID: 825106885} + - {fileID: 1553709987} + m_Father: {fileID: 1356176899} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1368553787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1368553785} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 818269812} + toggleTransition: 1 + graphic: {fileID: 825106886} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1485757531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1485757533} + - component: {fileID: 1485757532} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1485757532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1485757531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 1 + m_PositionMode: 1 + m_Position: 0 + m_MoveMode: 1 + m_Speed: 30 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0.2 + m_DampingUp: 0.2 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 208096428} + m_UseCache: 1 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 40133213} + m_MethodName: Track_OnControlPointReached + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1485757533 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1485757531} + 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_Children: + - {fileID: 893544072} + - {fileID: 66673442} + m_Father: {fileID: 40133212} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1553709986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1553709987} + - component: {fileID: 1553709989} + - component: {fileID: 1553709988} + m_Layer: 5 + m_Name: Item Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1553709987 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553709986} + 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_Children: [] + m_Father: {fileID: 1368553786} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 5, y: -0.5} + m_SizeDelta: {x: -30, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1553709988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553709986} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Option A +--- !u!222 &1553709989 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553709986} + m_CullTransparentMesh: 0 +--- !u!1 &1591979008 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1591979009} + - component: {fileID: 1591979011} + - component: {fileID: 1591979010} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1591979009 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591979008} + 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_Children: [] + m_Father: {fileID: 539816353} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -203.69998} + m_SizeDelta: {x: -20, y: 194.7} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1591979010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591979008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: This example features runtime usage. Control Points as well as Curvy Generators + (including all modules, links and settings) are completely created by code and + changed dynamically. +--- !u!222 &1591979011 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591979008} + m_CullTransparentMesh: 0 +--- !u!1 &1706280152 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1706280153} + - component: {fileID: 1706280155} + - component: {fileID: 1706280154} + m_Layer: 5 + m_Name: Text (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1706280153 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706280152} + 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_Children: [] + m_Father: {fileID: 539816353} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -68.4, y: -39.4} + m_SizeDelta: {x: 86.4, y: 22.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1706280154 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706280152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Colliders +--- !u!222 &1706280155 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706280152} + m_CullTransparentMesh: 0 +--- !u!1 &1718672098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1718672099} + - component: {fileID: 1718672102} + - component: {fileID: 1718672101} + - component: {fileID: 1718672100} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1718672099 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + 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_Children: [] + m_Father: {fileID: 721179344} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1718672100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1718672101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1718672102 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1718672098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &2036569539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2036569540} + - component: {fileID: 2036569543} + - component: {fileID: 2036569542} + - component: {fileID: 2036569541} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2036569540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 539816353} + m_Father: {fileID: 721179344} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &2036569541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2036569542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &2036569543 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2036569539} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/51_InfiniteTrack.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/51_InfiniteTrack.unity.meta new file mode 100644 index 00000000..e1fa9ec6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/51_InfiniteTrack.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5cf72ca5ff168f48bf33ddedce933b1 +timeCreated: 1448048134 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/97_Pooling.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/97_Pooling.unity new file mode 100644 index 00000000..8806dcc3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/97_Pooling.unity @@ -0,0 +1,1795 @@ +%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.5, g: 0.5, b: 0.5, a: 0.5} + m_AmbientEquatorColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientGroundColor: {r: 0.1, g: 0.1, b: 0.1, a: 0.5} + m_AmbientIntensity: 0.5 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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: 1498476212} + m_IndirectSpecularColor: {r: 0.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &117219222 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 117219223} + - component: {fileID: 117219225} + - component: {fileID: 117219224} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &117219223 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117219222} + 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_Children: [] + m_Father: {fileID: 1114313476} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.49999982} +--- !u!114 &117219224 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117219222} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Delete Spline +--- !u!222 &117219225 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117219222} + m_CullTransparentMesh: 0 +--- !u!1 &135020121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 135020125} + - component: {fileID: 135020124} + - component: {fileID: 135020123} + - component: {fileID: 135020122} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &135020122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &135020123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &135020124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &135020125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135020121} + 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_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &141106065 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141106066} + - component: {fileID: 141106069} + - component: {fileID: 141106068} + - component: {fileID: 141106067} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &141106066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1749425095} + m_Father: {fileID: 1630799190} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &141106067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &141106068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &141106069 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141106065} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &239241178 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 239241182} + - component: {fileID: 239241181} + - component: {fileID: 239241180} + - component: {fileID: 239241179} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &239241179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 239241180} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 471168834} + m_MethodName: AddCP + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &239241180 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &239241181 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + m_CullTransparentMesh: 0 +--- !u!224 &239241182 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239241178} + 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_Children: + - {fileID: 2131385141} + m_Father: {fileID: 1749425095} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -1.800003, y: 238} + m_SizeDelta: {x: -23.6, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &471168833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 471168835} + - component: {fileID: 471168834} + m_Layer: 0 + m_Name: PoolTestRunner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &471168834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471168833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6cd0bfd0c7789df4fab3d6824797bd93, type: 3} + m_Name: + m_EditorClassIdentifier: + Spline: {fileID: 0} + PoolCountInfo: {fileID: 1897106639} +--- !u!4 &471168835 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471168833} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &697343926 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 697343927} + - component: {fileID: 697343930} + - component: {fileID: 697343929} + - component: {fileID: 697343928} + m_Layer: 5 + m_Name: Button (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &697343927 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697343926} + 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_Children: + - {fileID: 1559051199} + m_Father: {fileID: 1749425095} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -1.800003, y: 201} + m_SizeDelta: {x: -23.600006, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &697343928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697343926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 697343929} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 471168834} + m_MethodName: DeleteCP + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 0} + m_MethodName: Prepare + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &697343929 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697343926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &697343930 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 697343926} + m_CullTransparentMesh: 0 +--- !u!1 &1114313475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1114313476} + - component: {fileID: 1114313479} + - component: {fileID: 1114313478} + - component: {fileID: 1114313477} + m_Layer: 5 + m_Name: Button (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1114313476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114313475} + 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_Children: + - {fileID: 117219223} + m_Father: {fileID: 1749425095} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -1.800003, y: 127.2} + m_SizeDelta: {x: -23.600006, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1114313477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114313475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1114313478} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 471168834} + m_MethodName: DeleteSpline + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 0} + m_MethodName: Prepare + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1114313478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114313475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1114313479 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114313475} + m_CullTransparentMesh: 0 +--- !u!1 &1206593770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206593771} + - component: {fileID: 1206593773} + - component: {fileID: 1206593772} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206593771 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -193} + m_SizeDelta: {x: -20, y: 184} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1206593772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Just a small pooling test... +--- !u!222 &1206593773 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1206593770} + m_CullTransparentMesh: 0 +--- !u!1001 &1261041559 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1298878764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1298878765} + - component: {fileID: 1298878767} + - component: {fileID: 1298878766} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1298878765 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298878764} + 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_Children: [] + m_Father: {fileID: 1820650269} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.49999982} +--- !u!114 &1298878766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298878764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Clear Spline +--- !u!222 &1298878767 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298878764} + m_CullTransparentMesh: 0 +--- !u!1 &1498476211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1498476213} + - component: {fileID: 1498476212} + 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 &1498476212 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + 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: 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: 12100000, guid: 54fbbf098d116effa00081aba8ad6659, type: 2} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1498476213 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498476211} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 638.3, y: 18.6, z: 346} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1559051198 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1559051199} + - component: {fileID: 1559051201} + - component: {fileID: 1559051200} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1559051199 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1559051198} + 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_Children: [] + m_Father: {fileID: 697343927} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.49999982} +--- !u!114 &1559051200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1559051198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Delete random Control Point +--- !u!222 &1559051201 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1559051198} + m_CullTransparentMesh: 0 +--- !u!1 &1630799189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1630799190} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1630799190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1630799189} + 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_Children: + - {fileID: 1665809481} + - {fileID: 1498476213} + - {fileID: 141106066} + - {fileID: 135020125} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + - component: {fileID: 1665809482} + - component: {fileID: 1665809483} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1630799190} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1665809482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: [] +--- !u!114 &1665809483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: [] +--- !u!1 &1749425094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1749425095} + - component: {fileID: 1749425097} + - component: {fileID: 1749425096} + - component: {fileID: 1749425098} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1749425095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + 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_Children: + - {fileID: 1206593771} + - {fileID: 239241182} + - {fileID: 697343927} + - {fileID: 1820650269} + - {fileID: 1114313476} + - {fileID: 1897106641} + m_Father: {fileID: 141106066} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120, y: -148.2} + m_SizeDelta: {x: 240, y: 296.4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1749425096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1749425097 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_CullTransparentMesh: 0 +--- !u!114 &1749425098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1749425094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1820650268 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1820650269} + - component: {fileID: 1820650272} + - component: {fileID: 1820650271} + - component: {fileID: 1820650270} + m_Layer: 5 + m_Name: Button (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1820650269 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820650268} + 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_Children: + - {fileID: 1298878765} + m_Father: {fileID: 1749425095} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -1.800003, y: 164.6} + m_SizeDelta: {x: -23.600006, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1820650270 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820650268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1820650271} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 471168834} + m_MethodName: ClearSpline + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 0} + m_MethodName: Prepare + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1820650271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820650268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1820650272 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1820650268} + m_CullTransparentMesh: 0 +--- !u!1 &1897106638 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1897106641} + - component: {fileID: 1897106640} + - component: {fileID: 1897106639} + m_Layer: 5 + m_Name: Text (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1897106639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897106638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Control Points in Pool:' +--- !u!222 &1897106640 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897106638} + m_CullTransparentMesh: 0 +--- !u!224 &1897106641 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897106638} + 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_Children: [] + m_Father: {fileID: 1749425095} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -282.6} + m_SizeDelta: {x: -20, y: 21.5} + m_Pivot: {x: 0, y: 0} +--- !u!1 &2131385140 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2131385141} + - component: {fileID: 2131385143} + - component: {fileID: 2131385142} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2131385141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131385140} + 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_Children: [] + m_Father: {fileID: 239241182} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.49999982} +--- !u!114 &2131385142 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131385140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.196, g: 0.196, b: 0.196, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Add Control Point +--- !u!222 &2131385143 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2131385140} + m_CullTransparentMesh: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/97_Pooling.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/97_Pooling.unity.meta new file mode 100644 index 00000000..1dbf3cb7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/97_Pooling.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cfb46ea8455e6e94f924c444441ec13e +timeCreated: 1447413833 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/98_Curvy.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/98_Curvy.unity new file mode 100644 index 00000000..512f4573 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/98_Curvy.unity @@ -0,0 +1,13723 @@ +%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, g: 0, b: 0, a: 0} + m_AmbientEquatorColor: {r: 0, g: 0, b: 0, a: 0} + m_AmbientGroundColor: {r: 0, g: 0, b: 0, a: 0} + m_AmbientIntensity: 0 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: a4f78a684965a2d4bbc20a4b86231606, type: 2} + 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.22276601, g: 0.24450892, b: 0.33784735, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 20 + m_AtlasSize: 2048 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &13004568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 13004569} + - component: {fileID: 13004570} + m_Layer: 0 + m_Name: CameraMotion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &13004569 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 13004568} + 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_Children: + - {fileID: 691741064} + - {fileID: 1105826703} + - {fileID: 846875137} + - {fileID: 1504116261} + - {fileID: 463961170} + - {fileID: 1221366688} + - {fileID: 33117301} + - {fileID: 1060268329} + - {fileID: 1650174515} + - {fileID: 1961775160} + - {fileID: 1164518504} + - {fileID: 810773010} + - {fileID: 1687936270} + - {fileID: 1177946867} + - {fileID: 213872506} + - {fileID: 201341308} + - {fileID: 608647571} + - {fileID: 433236170} + - {fileID: 968300116} + - {fileID: 1341476425} + - {fileID: 1319606291} + - {fileID: 1939582613} + - {fileID: 1005617248} + - {fileID: 447465805} + - {fileID: 2065941960} + - {fileID: 1283600439} + - {fileID: 145187140} + - {fileID: 114841922} + - {fileID: 1629041892} + - {fileID: 1618253208} + - {fileID: 219521899} + - {fileID: 85752228} + - {fileID: 1527592763} + - {fileID: 932854494} + - {fileID: 1564949302} + - {fileID: 2017174472} + - {fileID: 1064665402} + - {fileID: 1092371027} + - {fileID: 433835445} + - {fileID: 1514121470} + - {fileID: 89851389} + - {fileID: 579087851} + - {fileID: 173546073} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &13004570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 13004568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 691741065} + - {fileID: 1105826702} + - {fileID: 846875138} + - {fileID: 1504116260} + - {fileID: 463961169} + - {fileID: 1221366689} + - {fileID: 33117302} + - {fileID: 1060268330} + - {fileID: 1650174516} + - {fileID: 1961775161} + - {fileID: 1164518505} + - {fileID: 810773011} + - {fileID: 1687936271} + - {fileID: 1177946868} + - {fileID: 213872507} + - {fileID: 201341309} + - {fileID: 608647572} + - {fileID: 433236171} + - {fileID: 968300117} + - {fileID: 1341476426} + - {fileID: 1319606292} + - {fileID: 1939582614} + - {fileID: 1005617249} + - {fileID: 447465806} + - {fileID: 2065941961} + - {fileID: 1283600440} + - {fileID: 145187141} + - {fileID: 114841923} + - {fileID: 1629041893} + - {fileID: 1618253209} + - {fileID: 219521900} + - {fileID: 85752229} + - {fileID: 1527592764} + - {fileID: 932854495} + - {fileID: 1564949303} + - {fileID: 2017174473} + - {fileID: 1064665403} + - {fileID: 1092371028} + - {fileID: 433835446} + - {fileID: 1514121471} + - {fileID: 89851390} + - {fileID: 579087852} + - {fileID: 173546074} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 60 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &33117300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 33117301} + - component: {fileID: 33117302} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &33117301 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33117300} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.43, y: 32.5, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &33117302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 33117300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &58870108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 58870109} + - component: {fileID: 58870110} + - component: {fileID: 58870111} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &58870109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 58870108} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -15.418, y: 18.001, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &58870110 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 58870108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.593, y: -0.564, z: 0} + m_HandleOut: {x: -6.7536483, y: 1.3789155, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &58870111 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 58870108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &82748899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 82748901} + - component: {fileID: 82748900} + - component: {fileID: 82748902} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &82748900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82748899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.643, y: -0.474, z: 0} + m_HandleOut: {x: -0.6341025, y: 0.46742275, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &82748901 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82748899} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 16.864, y: 5.687, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1157467171} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &82748902 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 82748899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &85752227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 85752228} + - component: {fileID: 85752229} + m_Layer: 0 + m_Name: CP0031 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &85752228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 85752227} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -44.07, y: 5.2, z: 1.111} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &85752229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 85752227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &86707865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 86707866} + - component: {fileID: 86707867} + - component: {fileID: 86707868} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &86707866 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86707865} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 34.219, y: -3.657, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &86707867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86707865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.1517224, y: -0.22543275, z: -0} + m_HandleOut: {x: 0.65292025, y: 0.12779954, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &86707868 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86707865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &89851388 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 89851389} + - component: {fileID: 89851390} + m_Layer: 0 + m_Name: CP0040 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &89851389 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89851388} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.4, y: 8.4, z: -44} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 40 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &89851390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89851388} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 3 + m_SwirlTurns: 1 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &102051643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 102051644} + - component: {fileID: 102051645} + m_Layer: 0 + m_Name: R + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &102051644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102051643} + 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_Children: + - {fileID: 414144325} + - {fileID: 1710401766} + - {fileID: 1977709794} + - {fileID: 689632785} + - {fileID: 1941015210} + - {fileID: 1123051723} + - {fileID: 1521994001} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &102051645 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 102051643} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 414144326} + - {fileID: 1710401767} + - {fileID: 1977709795} + - {fileID: 689632786} + - {fileID: 1941015209} + - {fileID: 1123051724} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &114841921 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 114841922} + - component: {fileID: 114841923} + m_Layer: 0 + m_Name: CP0027 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &114841922 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114841921} + m_LocalRotation: {x: 0.19365224, y: 0, z: 0, w: 0.9810702} + m_LocalPosition: {x: 4.12, y: 11.76, z: 0.485} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114841923 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114841921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &122706788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 122706790} + - component: {fileID: 122706789} + - component: {fileID: 122706791} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &122706789 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 122706788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.658, y: -2.025, z: 0} + m_HandleOut: {x: -1.225, y: 0.726, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &122706790 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 122706788} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -11.162, y: 16.328, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &122706791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 122706788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &131654073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 131654074} + - component: {fileID: 131654075} + - component: {fileID: 131654076} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &131654074 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 131654073} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 35.596, y: -4.664, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &131654075 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 131654073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.135, y: 0.458, z: 0} + m_HandleOut: {x: -0.42, y: -0.312, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &131654076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 131654073} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &145187139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 145187140} + - component: {fileID: 145187141} + m_Layer: 0 + m_Name: CP0026 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &145187140 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145187139} + m_LocalRotation: {x: 0.7071066, y: 0, z: 0, w: -0.70710695} + m_LocalPosition: {x: 11.6, y: 30.81, z: 1.71} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &145187141 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145187139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &151327326 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 151327327} + - component: {fileID: 151327328} + - component: {fileID: 151327329} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &151327327 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 151327326} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 42.475, y: 6.983, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &151327328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 151327326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.013823536, y: 0.60806364, z: -0} + m_HandleOut: {x: 0.058, y: -2.57, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &151327329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 151327326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &166676898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 166676899} + - component: {fileID: 166676900} + - component: {fileID: 166676901} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &166676899 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166676898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 36.556, y: -0.346, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &166676900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166676898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 1.4687201, y: 0.19633768, z: 0.21699886} + m_HandleOut: {x: -1.097, y: -0.147, z: -0.162} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &166676901 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166676898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &173546072 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 173546073} + - component: {fileID: 173546074} + m_Layer: 0 + m_Name: CP0042 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &173546073 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173546072} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10.82, y: 4.7, z: -63.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 42 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &173546074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173546072} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &191770938 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 191770939} + - component: {fileID: 191770940} + - component: {fileID: 191770941} + - component: {fileID: 191770942} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &191770939 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191770938} + 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_Children: + - {fileID: 567842660} + - {fileID: 772705867} + - {fileID: 1803358190} + - {fileID: 326050650} + - {fileID: 922808608} + - {fileID: 2114476876} + m_Father: {fileID: 1197648166} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &191770940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191770938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 567842661} + - {fileID: 772705868} + - {fileID: 1803358191} + - {fileID: 326050651} + - {fileID: 922808609} + - {fileID: 2114476877} + m_LastModuleID: 9 +--- !u!114 &191770941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191770938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &191770942 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 191770938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &201341307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 201341308} + - component: {fileID: 201341309} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &201341308 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 201341307} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 13.65, y: 12.97, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &201341309 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 201341307} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &213872505 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 213872506} + - component: {fileID: 213872507} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &213872506 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 213872505} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 9.48, y: 7.25, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &213872507 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 213872505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &214382833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 214382834} + - component: {fileID: 214382835} + - component: {fileID: 214382836} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &214382834 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214382833} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 33.992, y: 1.578, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &214382835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214382833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.616, y: -1.205, z: -0.109} + m_HandleOut: {x: -0.9115855, y: 1.7830032, z: 0.1619215} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &214382836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214382833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &219521898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 219521899} + - component: {fileID: 219521900} + m_Layer: 0 + m_Name: CP0030 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &219521899 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 219521898} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -33.63, y: 3.74, z: 1.098} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &219521900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 219521898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &254733872 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 254733873} + - component: {fileID: 254733874} + - component: {fileID: 254733875} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &254733873 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254733872} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -24.123, y: 12.248, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &254733874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254733872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 8.586, y: -0.433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &254733875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254733872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &284421866 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 284421867} + - component: {fileID: 284421868} + - component: {fileID: 284421869} + - component: {fileID: 284421870} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &284421867 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284421866} + 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_Children: + - {fileID: 1713707549} + - {fileID: 2068580921} + - {fileID: 1106950171} + - {fileID: 1830199958} + - {fileID: 1265914505} + - {fileID: 1164862798} + m_Father: {fileID: 1803760666} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &284421868 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284421866} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1713707550} + - {fileID: 2068580922} + - {fileID: 1106950172} + - {fileID: 1830199959} + - {fileID: 1265914506} + - {fileID: 1164862799} + m_LastModuleID: 8 +--- !u!114 &284421869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284421866} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &284421870 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284421866} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &312159955 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 312159958} + - component: {fileID: 312159957} + - component: {fileID: 312159956} + - component: {fileID: 312159959} + - component: {fileID: 312159960} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &312159956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312159955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &312159957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312159955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &312159958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312159955} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &312159959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312159955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &312159960 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 312159955} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &326050649 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 326050650} + - component: {fileID: 326050651} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &326050650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326050649} + 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_Children: [] + m_Father: {fileID: 191770939} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &326050651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326050649} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 593 + y: 10 + width: 250 + height: 362 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 80, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e3d3fc405aabcbb48a873e5fcd3e1ab6, type: 2} +--- !u!1 &348083573 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 348083574} + - component: {fileID: 348083575} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &348083574 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 348083573} + 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_Children: [] + m_Father: {fileID: 1486181238} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &348083575 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 348083573} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181139399 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 292 + y: 16 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 6 + m_TargetSlotName: Volume + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 25 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 0 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &375982680 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 375982681} + - component: {fileID: 375982682} + - component: {fileID: 375982683} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &375982681 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 375982680} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.91, y: 1.64, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1157467171} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &375982682 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 375982680} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.808, y: -0.253, z: 0} + m_HandleOut: {x: 3.7853403, y: 1.1839999, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &375982683 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 375982680} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &402636588 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 402636589} + - component: {fileID: 402636590} + - component: {fileID: 402636591} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &402636589 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 402636588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10.18, y: 17.408, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &402636590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 402636588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.134, y: 3.213, z: 0} + m_HandleOut: {x: 0.5146673, y: -0.32212982, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &402636591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 402636588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &414144324 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 414144325} + - component: {fileID: 414144326} + - component: {fileID: 414144327} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &414144325 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 414144324} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 9.184, y: 5.197, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 102051644} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &414144326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 414144324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.913, y: 1.141, z: 0} + m_HandleOut: {x: 0.505, y: 0.503, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &414144327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 414144324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &418959757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 418959758} + - component: {fileID: 418959759} + - component: {fileID: 418959760} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &418959758 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 418959757} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 33.955, y: 6.062, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &418959759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 418959757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.70664936, y: 0.911174, z: -0} + m_HandleOut: {x: 1.522, y: -1.962, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &418959760 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 418959757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &433236169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433236170} + - component: {fileID: 433236171} + m_Layer: 0 + m_Name: CP0017 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433236170 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433236169} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 24.38, y: 4.78, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &433236171 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433236169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &433835444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433835445} + - component: {fileID: 433835446} + m_Layer: 0 + m_Name: CP0038 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433835445 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433835444} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -25.7, y: 13.12, z: 1.119} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 38 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &433835446 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 433835444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &438644958 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 438644959} + - component: {fileID: 438644960} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &438644959 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438644958} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2112910286} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &438644960 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438644958} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &447465804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 447465805} + - component: {fileID: 447465806} + m_Layer: 0 + m_Name: CP0023 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &447465805 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447465804} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 37, y: -0.386, z: 12.3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &447465806 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447465804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &450162851 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 450162852} + - component: {fileID: 450162853} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &450162852 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 450162851} + 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_Children: [] + m_Father: {fileID: 1486181238} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &450162853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 450162851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181139399 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 912 + y: 30 + width: 250 + height: 367 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 1 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &453202081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 453202082} + - component: {fileID: 453202083} + - component: {fileID: 453202084} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &453202082 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453202081} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -23.668, y: 0.932, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &453202083 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453202081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 7.4757323, y: 1.506425, z: -0} + m_HandleOut: {x: -7.669, y: -1.545, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &453202084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 453202081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &463961168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 463961170} + - component: {fileID: 463961169} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &463961169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 463961168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &463961170 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 463961168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.43, y: 134.5, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &468527111 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 468527113} + - component: {fileID: 468527112} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &468527112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 468527111} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181129361 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 588 + y: 350 + width: 250 + height: 312 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: 9d633bd8737c7424d9b669d9741f499b, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!4 &468527113 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 468527111} + 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_Children: [] + m_Father: {fileID: 1304329765} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &494946165 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 494946166} + - component: {fileID: 494946167} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &494946166 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 494946165} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 732926239} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &494946167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 494946165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &499713935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 499713937} + - component: {fileID: 499713936} + - component: {fileID: 499713938} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &499713936 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499713935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.098, y: -2.486, z: -0.478} + m_HandleOut: {x: -0.63674176, y: -0.8499327, z: 0.25511682} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &499713937 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499713935} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 40.364, y: 1.327, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &499713938 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499713935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &556187350 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 556187351} + - component: {fileID: 556187352} + - component: {fileID: 556187353} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &556187351 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 556187350} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -7.211, y: 6.267, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &556187352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 556187350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.37341487, y: 0.58937305, z: -0} + m_HandleOut: {x: 1.715, y: -2.246, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &556187353 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 556187350} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &561219263 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 561219264} + - component: {fileID: 561219265} + m_Layer: 0 + m_Name: Spline Path_3_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &561219264 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 561219263} + 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_Children: + - {fileID: 730803436} + - {fileID: 878664427} + m_Father: {fileID: 1906943972} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &561219265 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 561219263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 730803437} + - {fileID: 878664428} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &567842659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 567842660} + - component: {fileID: 567842661} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &567842660 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567842659} + 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_Children: [] + m_Father: {fileID: 191770939} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &567842661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 567842659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 187 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1197648167} +--- !u!1 &579087850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 579087851} + - component: {fileID: 579087852} + m_Layer: 0 + m_Name: CP0041 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &579087851 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 579087850} + m_LocalRotation: {x: -0.6822269, y: -0.034855876, z: 0.037061635, w: 0.72936827} + m_LocalPosition: {x: -13, y: 3.8, z: -90.6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 41 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &579087852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 579087850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &582067527 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 582067528} + - component: {fileID: 582067529} + m_Layer: 0 + m_Name: U + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &582067528 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582067527} + 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_Children: + - {fileID: 1698892921} + - {fileID: 556187351} + - {fileID: 1907780228} + - {fileID: 613057648} + - {fileID: 906983955} + - {fileID: 1960145542} + - {fileID: 772886548} + - {fileID: 1001425815} + - {fileID: 1983866050} + - {fileID: 1486181238} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &582067529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582067527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1698892922} + - {fileID: 556187352} + - {fileID: 1907780229} + - {fileID: 613057649} + - {fileID: 906983954} + - {fileID: 1960145543} + - {fileID: 772886549} + - {fileID: 1001425816} + - {fileID: 1983866051} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &608647570 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608647571} + - component: {fileID: 608647572} + m_Layer: 0 + m_Name: CP0016 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &608647571 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608647570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 18.86, y: 8.57, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &608647572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608647570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &613057647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 613057648} + - component: {fileID: 613057649} + - component: {fileID: 613057650} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &613057648 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613057647} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.907, y: 8.311, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &613057649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613057647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.469, y: -0.252, z: 0} + m_HandleOut: {x: 1.6485698, y: 0.2832882, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &613057650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613057647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &647038090 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 647038091} + - component: {fileID: 647038092} + - component: {fileID: 647038093} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &647038091 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 647038090} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -23.901, y: 2.387, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &647038092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 647038090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -5.733, y: -0.825, z: 0} + m_HandleOut: {x: 5.5610495, y: 0.7998072, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &647038093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 647038090} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &676515382 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 676515383} + - component: {fileID: 676515384} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &676515383 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 676515382} + 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_Children: [] + m_Father: {fileID: 1486181238} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &676515384 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 676515382} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181119374 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 187 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 582067529} +--- !u!1 &689632784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 689632785} + - component: {fileID: 689632786} + - component: {fileID: 689632787} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &689632785 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689632784} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 9.814, y: -0.224, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 102051644} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &689632786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689632784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.229, y: 2.741, z: 0} + m_HandleOut: {x: -0.84, y: 0.084, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &689632787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 689632784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &691741063 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 691741064} + - component: {fileID: 691741065} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &691741064 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691741063} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.43, y: 615, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &691741065 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691741063} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 3 + m_SwirlTurns: 1 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &701134797 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 701134798} + - component: {fileID: 701134799} + - component: {fileID: 701134800} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &701134798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 701134797} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -33.017, y: 20.046, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &701134799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 701134797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -3.538857, y: -0.24483776, z: 0} + m_HandleOut: {x: 8.839, y: 0.728, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &701134800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 701134797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &701394173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 701394174} + - component: {fileID: 701394175} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &701394174 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 701394173} + 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_Children: [] + m_Father: {fileID: 1304329765} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &701394175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 701394173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181119374 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 292 + y: 16 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 6 + m_TargetSlotName: Volume + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 25 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 0 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &730803435 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 730803436} + - component: {fileID: 730803437} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &730803436 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730803435} + 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_Children: [] + m_Father: {fileID: 561219264} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &730803437 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730803435} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &732926238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 732926239} + - component: {fileID: 732926240} + m_Layer: 0 + m_Name: Spline Path_3_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &732926239 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 732926238} + 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_Children: + - {fileID: 1177038716} + - {fileID: 494946166} + m_Father: {fileID: 2106046380} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &732926240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 732926238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1177038717} + - {fileID: 494946167} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &744080808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 744080809} + - component: {fileID: 744080810} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &744080809 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744080808} + 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_Children: + - {fileID: 2028220043} + m_Father: {fileID: 1304329765} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &744080810 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744080808} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181109363 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 15 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 2028220044} +--- !u!1 &772705866 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 772705867} + - component: {fileID: 772705868} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &772705867 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772705866} + 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_Children: + - {fileID: 1539671428} + m_Father: {fileID: 191770939} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &772705868 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772705866} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 15 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1539671429} +--- !u!1 &772886547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 772886548} + - component: {fileID: 772886549} + - component: {fileID: 772886550} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &772886548 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772886547} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.666, y: 3.236, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &772886549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772886547} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.578, y: -3.869, z: 0} + m_HandleOut: {x: -1.147, y: -0.704, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &772886550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 772886547} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &810773009 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 810773010} + - component: {fileID: 810773011} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &810773010 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 810773009} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10.6, y: 9.61, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &810773011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 810773009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &846875136 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 846875137} + - component: {fileID: 846875138} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &846875137 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846875136} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.43, y: 356.737, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &846875138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 846875136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &861183593 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 861183594} + - component: {fileID: 861183595} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &861183594 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861183593} + 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_Children: [] + m_Father: {fileID: 1521994001} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &861183595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861183593} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181109363 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 912 + y: 30 + width: 250 + height: 367 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 1 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &865397038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 865397039} + - component: {fileID: 865397040} + - component: {fileID: 865397041} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &865397039 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865397038} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 18.701, y: 6.076, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1157467171} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &865397040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865397038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 1.607, y: -1.202, z: -0.115} + m_HandleOut: {x: -0.695, y: -0.19, z: 0.047} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &865397041 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865397038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &878664426 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 878664427} + - component: {fileID: 878664428} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &878664427 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878664426} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 561219264} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &878664428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 878664426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &890605913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 890605914} + - component: {fileID: 890605915} + - component: {fileID: 890605916} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &890605914 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890605913} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 36.883, y: 1.014, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &890605915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890605913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.598, y: 0.061, z: 0} + m_HandleOut: {x: 2.5420296, y: -0.059719793, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &890605916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 890605913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &892208779 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 892208780} + - component: {fileID: 892208781} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &892208780 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892208779} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1539671428} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &892208781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892208779} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1001 &906119834 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &906983953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 906983955} + - component: {fileID: 906983954} + - component: {fileID: 906983956} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &906983954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906983953} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.31 + m_HandleIn: {x: -0.055, y: 0.884, z: 0} + m_HandleOut: {x: -0.285, y: -1.866, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &906983955 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906983953} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.366, y: 3.945, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &906983956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906983953} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &922808607 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 922808608} + - component: {fileID: 922808609} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &922808608 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 922808607} + 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_Children: [] + m_Father: {fileID: 191770939} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &922808609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 922808607} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 588 + y: 350 + width: 250 + height: 312 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: 9d633bd8737c7424d9b669d9741f499b, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &932854493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 932854494} + - component: {fileID: 932854495} + m_Layer: 0 + m_Name: CP0033 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &932854494 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932854493} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -44.68, y: 13.7, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 33 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &932854495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932854493} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &968300115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 968300116} + - component: {fileID: 968300117} + m_Layer: 0 + m_Name: CP0018 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &968300116 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 968300115} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 31.34, y: 8.87, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &968300117 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 968300115} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1001425814 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1001425815} + - component: {fileID: 1001425816} + - component: {fileID: 1001425817} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1001425815 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001425814} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.777, y: -0.454, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1001425816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001425814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.234, y: -0.183, z: 0} + m_HandleOut: {x: -1.464, y: 0.051, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1001425817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001425814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1005617247 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1005617248} + - component: {fileID: 1005617249} + m_Layer: 0 + m_Name: CP0022 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1005617248 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005617247} + m_LocalRotation: {x: 0.69424427, y: -0.13425602, z: -0.13425595, w: -0.6942446} + m_LocalPosition: {x: 49.5, y: 10.31, z: 15.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1005617249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005617247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1060268328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1060268329} + - component: {fileID: 1060268330} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1060268329 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060268328} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -47.52, y: 18.9, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1060268330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1060268328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1064665401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1064665402} + - component: {fileID: 1064665403} + m_Layer: 0 + m_Name: CP0036 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1064665402 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1064665401} + m_LocalRotation: {x: -0.4310292, y: 0.5252613, z: 0.46817827, w: 0.5649103} + m_LocalPosition: {x: -12.99, y: 16.45, z: 1.117} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 36 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1064665403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1064665401} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1092371026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1092371027} + - component: {fileID: 1092371028} + m_Layer: 0 + m_Name: CP0037 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1092371027 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1092371026} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -17.39, y: 13.59, z: 1.118} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 37 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1092371028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1092371026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1094561156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1094561157} + - component: {fileID: 1094561158} + - component: {fileID: 1094561159} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1094561157 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094561156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 31.723, y: 7.57, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1094561158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094561156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.34357226, y: -0.10921424, z: 0} + m_HandleOut: {x: 0.87559694, y: 0.27833346, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1094561159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094561156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1105826701 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1105826703} + - component: {fileID: 1105826702} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1105826702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105826701} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1105826703 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105826701} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.43, y: 493.64764, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1106950170 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1106950171} + - component: {fileID: 1106950172} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1106950171 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106950170} + 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_Children: [] + m_Father: {fileID: 284421867} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1106950172 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106950170} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 292 + y: 16 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 6 + m_TargetSlotName: Volume + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 25 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 0 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &1109893604 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1109893605} + - component: {fileID: 1109893606} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1109893605 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1109893604} + 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_Children: [] + m_Father: {fileID: 1304329765} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1109893606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1109893604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181099349 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 593 + y: 10 + width: 250 + height: 362 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 40, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e3d3fc405aabcbb48a873e5fcd3e1ab6, type: 2} +--- !u!1 &1123051722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1123051723} + - component: {fileID: 1123051724} + - component: {fileID: 1123051725} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1123051723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123051722} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 6.065, y: 6.903, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 102051644} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1123051724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123051722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.713, y: -0.87, z: 0} + m_HandleOut: {x: 1.0416651, y: 0.9150712, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1123051725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123051722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1157467170 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1157467171} + - component: {fileID: 1157467172} + m_Layer: 0 + m_Name: V + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1157467171 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1157467170} + 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_Children: + - {fileID: 1438483660} + - {fileID: 375982681} + - {fileID: 2044366723} + - {fileID: 1473996144} + - {fileID: 1433304989} + - {fileID: 865397039} + - {fileID: 82748901} + - {fileID: 1304329765} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1157467172 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1157467170} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1438483661} + - {fileID: 375982682} + - {fileID: 2044366722} + - {fileID: 1473996145} + - {fileID: 1433304990} + - {fileID: 865397040} + - {fileID: 82748900} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1164518503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1164518504} + - component: {fileID: 1164518505} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1164518504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164518503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.08, y: 18.45, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1164518505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164518503} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1164862797 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1164862798} + - component: {fileID: 1164862799} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1164862798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164862797} + 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_Children: [] + m_Father: {fileID: 284421867} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1164862799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164862797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 912 + y: 30 + width: 250 + height: 367 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 1 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1165642308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1165642309} + - component: {fileID: 1165642310} + - component: {fileID: 1165642311} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1165642309 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165642308} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -50.455, y: 7.686, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1165642310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165642308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.49484676, y: -2.8986135, z: -0} + m_HandleOut: {x: -1.021, y: 5.982, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1165642311 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165642308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1177038715 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1177038716} + - component: {fileID: 1177038717} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1177038716 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177038715} + 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_Children: [] + m_Father: {fileID: 732926239} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1177038717 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177038715} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1177946866 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1177946867} + - component: {fileID: 1177946868} + m_Layer: 0 + m_Name: CP0013 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1177946867 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177946866} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.41, y: 19.03, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1177946868 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177946866} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1197648165 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1197648166} + - component: {fileID: 1197648167} + m_Layer: 0 + m_Name: C + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1197648166 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197648165} + 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_Children: + - {fileID: 254733873} + - {fileID: 122706790} + - {fileID: 58870109} + - {fileID: 2116627504} + - {fileID: 2074437747} + - {fileID: 1929086075} + - {fileID: 647038091} + - {fileID: 1594852437} + - {fileID: 453202082} + - {fileID: 1483852008} + - {fileID: 1165642309} + - {fileID: 1454978731} + - {fileID: 701134798} + - {fileID: 402636589} + - {fileID: 1536619068} + - {fileID: 1671621585} + - {fileID: 191770939} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1197648167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197648165} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 254733874} + - {fileID: 122706789} + - {fileID: 58870110} + - {fileID: 2116627505} + - {fileID: 2074437748} + - {fileID: 1929086076} + - {fileID: 647038092} + - {fileID: 1594852438} + - {fileID: 453202083} + - {fileID: 1483852009} + - {fileID: 1165642310} + - {fileID: 1454978732} + - {fileID: 701134799} + - {fileID: 402636590} + - {fileID: 1536619069} + - {fileID: 1671621586} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1221366687 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1221366688} + - component: {fileID: 1221366689} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1221366688 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1221366687} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.43, y: 89.8, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1221366689 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1221366687} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1265914504 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1265914505} + - component: {fileID: 1265914506} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1265914505 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265914504} + 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_Children: [] + m_Father: {fileID: 284421867} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1265914506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265914504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 588 + y: 350 + width: 250 + height: 312 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: 9d633bd8737c7424d9b669d9741f499b, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1283600438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1283600439} + - component: {fileID: 1283600440} + m_Layer: 0 + m_Name: CP0025 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1283600439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283600438} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 13.051, y: 10.25, z: 7.85} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1283600440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1283600438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1304329764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1304329765} + - component: {fileID: 1304329766} + - component: {fileID: 1304329767} + - component: {fileID: 1304329768} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1304329765 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304329764} + 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_Children: + - {fileID: 1856793159} + - {fileID: 744080809} + - {fileID: 701394174} + - {fileID: 1109893605} + - {fileID: 468527113} + - {fileID: 1435984661} + m_Father: {fileID: 1157467171} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1304329766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304329764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1856793160} + - {fileID: 744080810} + - {fileID: 701394175} + - {fileID: 1109893606} + - {fileID: 468527112} + - {fileID: 1435984662} + m_LastModuleID: 8 +--- !u!114 &1304329767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304329764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1304329768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304329764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &1319606290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1319606291} + - component: {fileID: 1319606292} + m_Layer: 0 + m_Name: CP0020 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1319606291 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319606290} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 41.9, y: 10.58, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1319606292 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1319606290} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1341476424 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1341476425} + - component: {fileID: 1341476426} + m_Layer: 0 + m_Name: CP0019 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1341476425 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341476424} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 37.94, y: 4.13, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1341476426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1341476424} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1411267708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1411267709} + - component: {fileID: 1411267710} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1411267709 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1411267708} + 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_Children: [] + m_Father: {fileID: 1521994001} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1411267710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1411267708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181099349 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 292 + y: 16 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 6 + m_TargetSlotName: Volume + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 25 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 0 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &1433304988 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1433304989} + - component: {fileID: 1433304990} + - component: {fileID: 1433304991} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1433304989 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433304988} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 23.775, y: -0.001, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1157467171} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1433304990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433304988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.9263554, y: 0.021949183, z: 0.002033488} + m_HandleOut: {x: -2.059, y: -0.015, z: -0.001} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1433304991 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1433304988} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1435984660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1435984661} + - component: {fileID: 1435984662} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1435984661 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435984660} + 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_Children: [] + m_Father: {fileID: 1304329765} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1435984662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1435984660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181099349 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 912 + y: 30 + width: 250 + height: 367 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 1 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &1438483659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1438483660} + - component: {fileID: 1438483661} + - component: {fileID: 1438483662} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1438483660 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1438483659} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 18.743, y: 7.503, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1157467171} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1438483661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1438483659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.95211047, y: 0.22429867, z: -0} + m_HandleOut: {x: 2.941, y: -0.693, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1438483662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1438483659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1454978730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1454978731} + - component: {fileID: 1454978732} + - component: {fileID: 1454978733} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1454978731 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454978730} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -45.005, y: 16.985, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1454978732 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454978730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.603, y: -0.696, z: 0} + m_HandleOut: {x: 4.0435896, y: 1.7545997, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1454978733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454978730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1462748559 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1462748560} + - component: {fileID: 1462748561} + - component: {fileID: 1462748562} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1462748560 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462748559} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 32.639, y: -6.218, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1462748561 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462748559} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.07154482, y: -1.2838514, z: -0} + m_HandleOut: {x: 0.063, y: 1.131, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1462748562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1462748559} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1473996143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1473996144} + - component: {fileID: 1473996145} + - component: {fileID: 1473996146} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1473996144 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473996143} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 30.549, y: 7.002, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1157467171} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1473996145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473996143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0, y: 0, z: 0} + m_HandleOut: {x: 0.305, y: -1.267, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1473996146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1473996143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1483852007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1483852008} + - component: {fileID: 1483852009} + - component: {fileID: 1483852010} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1483852008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483852007} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -44.642, y: 1.883, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1483852009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483852007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.293 + m_HandleIn: {x: 4.547, y: -1.669, z: 0} + m_HandleOut: {x: -2.3721733, y: 0.8708639, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1483852010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483852007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1484394652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1484394653} + - component: {fileID: 1484394654} + - component: {fileID: 1484394655} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1484394653 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1484394652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 31.164, y: 6.912, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1484394654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1484394652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 1.998, y: -1.732, z: 0} + m_HandleOut: {x: -0.22301193, y: 0.19337972, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1484394655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1484394652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1486181237 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1486181238} + - component: {fileID: 1486181239} + - component: {fileID: 1486181240} + - component: {fileID: 1486181241} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1486181238 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486181237} + 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_Children: + - {fileID: 676515383} + - {fileID: 2106046380} + - {fileID: 348083574} + - {fileID: 1521368755} + - {fileID: 1647696486} + - {fileID: 450162852} + m_Father: {fileID: 582067528} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1486181239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486181237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 676515384} + - {fileID: 2106046381} + - {fileID: 348083575} + - {fileID: 1521368756} + - {fileID: 1647696487} + - {fileID: 450162853} + m_LastModuleID: 8 +--- !u!114 &1486181240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486181237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1486181241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486181237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &1504116259 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1504116261} + - component: {fileID: 1504116260} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1504116260 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504116259} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1504116261 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504116259} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -48.43, y: 232.27081, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1514121469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1514121470} + - component: {fileID: 1514121471} + m_Layer: 0 + m_Name: CP0039 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1514121470 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1514121469} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -26.102, y: 1.747, z: -5.8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 39 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1514121471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1514121469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1521368754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1521368755} + - component: {fileID: 1521368756} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1521368755 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521368754} + 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_Children: [] + m_Father: {fileID: 1486181238} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1521368756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521368754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181089338 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 593 + y: 10 + width: 250 + height: 362 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 60, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e3d3fc405aabcbb48a873e5fcd3e1ab6, type: 2} +--- !u!1 &1521994000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1521994001} + - component: {fileID: 1521994002} + - component: {fileID: 1521994003} + - component: {fileID: 1521994004} + m_Layer: 0 + m_Name: Curvy Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1521994001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521994000} + 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_Children: + - {fileID: 1844185470} + - {fileID: 1906943972} + - {fileID: 1411267709} + - {fileID: 2074049691} + - {fileID: 1532901815} + - {fileID: 861183594} + m_Father: {fileID: 102051644} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1521994002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521994000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 1 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 1844185471} + - {fileID: 1906943973} + - {fileID: 1411267710} + - {fileID: 2074049692} + - {fileID: 1532901816} + - {fileID: 861183595} + m_LastModuleID: 8 +--- !u!114 &1521994003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521994000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &1521994004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1521994000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &1527592762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1527592763} + - component: {fileID: 1527592764} + m_Layer: 0 + m_Name: CP0032 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1527592763 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527592762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -47.42, y: 8.29, z: 1.113} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1527592764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1527592762} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1528624665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1528624666} + - component: {fileID: 1528624667} + - component: {fileID: 1528624668} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1528624666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1528624665} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 41.069, y: 7.437, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1528624667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1528624665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.273, y: -1.206, z: 0} + m_HandleOut: {x: 0.13443695, y: 0.59317726, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1528624668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1528624665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1528851003 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1528851007} + - component: {fileID: 1528851006} + - component: {fileID: 1528851005} + - component: {fileID: 1528851004} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1528851004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1528851003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &1528851005 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1528851003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1528851006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1528851003} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1528851007 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1528851003} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1532901814 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1532901815} + - component: {fileID: 1532901816} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1532901815 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1532901814} + 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_Children: [] + m_Father: {fileID: 1521994001} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1532901816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1532901814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181089338 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 588 + y: 350 + width: 250 + height: 312 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: 9d633bd8737c7424d9b669d9741f499b, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1536619067 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1536619068} + - component: {fileID: 1536619069} + - component: {fileID: 1536619070} + m_Layer: 0 + m_Name: CP0014 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1536619068 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536619067} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -10.199, y: 14.297, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1536619069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536619067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.625, y: 1.011, z: 0} + m_HandleOut: {x: -4.165, y: -3.288, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1536619070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1536619067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1539671427 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1539671428} + - component: {fileID: 1539671429} + m_Layer: 0 + m_Name: Spline Path_3_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1539671428 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539671427} + 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_Children: + - {fileID: 1691222008} + - {fileID: 892208780} + m_Father: {fileID: 772705867} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1539671429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539671427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1691222009} + - {fileID: 892208781} + ShowGizmos: 0 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1564949301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1564949302} + - component: {fileID: 1564949303} + m_Layer: 0 + m_Name: CP0034 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1564949302 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1564949301} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -34.09, y: 17.5, z: 1.115} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 34 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1564949303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1564949301} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1594852436 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1594852437} + - component: {fileID: 1594852438} + - component: {fileID: 1594852439} + m_Layer: 0 + m_Name: CP0007 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1594852437 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1594852436} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.947, y: 6.9, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1594852438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1594852436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.14, y: -0.318, z: 0} + m_HandleOut: {x: -0.041, y: -3.421, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1594852439 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1594852436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1611386911 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1611386912} + - component: {fileID: 1611386913} + - component: {fileID: 1611386914} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1611386912 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1611386911} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 41.07, y: -2.716, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1611386913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1611386911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 1.283, y: 3.853, z: 0} + m_HandleOut: {x: -0.21035315, y: -0.6319079, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1611386914 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1611386911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1618253207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1618253208} + - component: {fileID: 1618253209} + m_Layer: 0 + m_Name: CP0029 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1618253208 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618253207} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -19.414, y: 5.11, z: 1.086} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1618253209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1618253207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1629041891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1629041892} + - component: {fileID: 1629041893} + m_Layer: 0 + m_Name: CP0028 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1629041892 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629041891} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -9.83, y: 9.06, z: 1.061} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1629041893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629041891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1647696485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647696486} + - component: {fileID: 1647696487} + m_Layer: 0 + m_Name: Volume Caps + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1647696486 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647696485} + 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_Children: [] + m_Father: {fileID: 1486181238} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1647696487 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647696485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81201693d1fd6b04ebb00aa8dd268476, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181089338 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 588 + y: 350 + width: 250 + height: 312 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_StartCap: 2 + m_EndCap: 2 + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + m_GenerateUV2: 1 + m_StartMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_StartMaterial: {fileID: 2100000, guid: 9d633bd8737c7424d9b669d9741f499b, type: 2} + m_CloneStartCap: 1 + m_EndMaterialSettings: + SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + m_EndMaterial: {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!1 &1650174514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1650174515} + - component: {fileID: 1650174516} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1650174515 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1650174514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -40.16, y: 21.073, z: 1.188} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1650174516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1650174514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1671621584 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1671621585} + - component: {fileID: 1671621586} + - component: {fileID: 1671621587} + m_Layer: 0 + m_Name: CP0015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1671621585 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671621584} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -23.73, y: 10.868, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1671621586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671621584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 5.677, y: 0.392, z: 0} + m_HandleOut: {x: 0, y: 0, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1671621587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1671621584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1687936269 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1687936270} + - component: {fileID: 1687936271} + m_Layer: 0 + m_Name: CP0012 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1687936270 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1687936269} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.37, y: 6.02, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1687936271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1687936269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1691222007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1691222008} + - component: {fileID: 1691222009} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1691222008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1691222007} + 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_Children: [] + m_Father: {fileID: 1539671428} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1691222009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1691222007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1698892920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1698892921} + - component: {fileID: 1698892922} + - component: {fileID: 1698892923} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1698892921 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698892920} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -8.915, y: 7.391, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1698892922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698892920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.37162936, y: -0.33521697, z: 0} + m_HandleOut: {x: 0.52544564, y: 0.47396225, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1698892923 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1698892920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1710401765 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1710401766} + - component: {fileID: 1710401767} + - component: {fileID: 1710401768} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1710401766 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1710401765} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 15.469, y: 7.258, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 102051644} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1710401767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1710401765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -3.416, y: 2.351, z: 0} + m_HandleOut: {x: -0.54, y: -0.959, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1710401768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1710401765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1713707548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1713707549} + - component: {fileID: 1713707550} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1713707549 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713707548} + 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_Children: [] + m_Father: {fileID: 284421867} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1713707550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713707548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 187 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1803760667} +--- !u!1 &1754730148 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1754730149} + - component: {fileID: 1754730150} + - component: {fileID: 1754730151} + m_Layer: 0 + m_Name: CP0006 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1754730149 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754730148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 35.731, y: -7.341, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1754730150 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754730148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 3.962, y: 0.654, z: 0} + m_HandleOut: {x: -1.2686675, y: -0.20946638, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1754730151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754730148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1793046563 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1793046564} + - component: {fileID: 1793046565} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1793046564 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1793046563} + 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_Children: [] + m_Father: {fileID: 2112910286} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1793046565 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1793046563} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1803358189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1803358190} + - component: {fileID: 1803358191} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1803358190 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1803358189} + 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_Children: [] + m_Father: {fileID: 191770939} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1803358191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1803358189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 292 + y: 16 + width: 250 + height: 296 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 1, g: 1, b: 1, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 6 + m_TargetSlotName: Volume + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 25 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 0 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &1803760665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1803760666} + - component: {fileID: 1803760667} + m_Layer: 0 + m_Name: Y + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1803760666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1803760665} + 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_Children: + - {fileID: 1094561157} + - {fileID: 418959758} + - {fileID: 890605914} + - {fileID: 1528624666} + - {fileID: 151327327} + - {fileID: 1611386912} + - {fileID: 1754730149} + - {fileID: 1462748560} + - {fileID: 86707866} + - {fileID: 131654074} + - {fileID: 2102823569} + - {fileID: 1809450579} + - {fileID: 499713937} + - {fileID: 166676899} + - {fileID: 214382834} + - {fileID: 1484394653} + - {fileID: 284421867} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1803760667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1803760665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1094561158} + - {fileID: 418959759} + - {fileID: 890605915} + - {fileID: 1528624667} + - {fileID: 151327328} + - {fileID: 1611386913} + - {fileID: 1754730150} + - {fileID: 1462748561} + - {fileID: 86707867} + - {fileID: 131654075} + - {fileID: 2102823570} + - {fileID: 1809450580} + - {fileID: 499713936} + - {fileID: 166676900} + - {fileID: 214382835} + - {fileID: 1484394654} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 0 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1809450578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1809450579} + - component: {fileID: 1809450580} + - component: {fileID: 1809450581} + m_Layer: 0 + m_Name: CP0011 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1809450579 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1809450578} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 35.929, y: -6.428, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1809450580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1809450578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.811, y: 0.054, z: -0.207} + m_HandleOut: {x: 2.6802983, y: -0.17808263, z: 0.684208} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1809450581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1809450578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1830199957 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1830199958} + - component: {fileID: 1830199959} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1830199958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1830199957} + 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_Children: [] + m_Father: {fileID: 284421867} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1830199959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1830199957} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 593 + y: 10 + width: 250 + height: 362 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 40, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e3d3fc405aabcbb48a873e5fcd3e1ab6, type: 2} +--- !u!1 &1844185469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1844185470} + - component: {fileID: 1844185471} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1844185470 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844185469} + 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_Children: [] + m_Father: {fileID: 1521994001} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1844185471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1844185469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181089338 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 187 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 102051645} +--- !u!1 &1856793158 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1856793159} + - component: {fileID: 1856793160} + m_Layer: 0 + m_Name: Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1856793159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856793158} + 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_Children: [] + m_Father: {fileID: 1304329765} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1856793160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856793158} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181099349 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 13 + y: 187 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 1157467172} +--- !u!1 &1906943971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1906943972} + - component: {fileID: 1906943973} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1906943972 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906943971} + 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_Children: + - {fileID: 561219264} + m_Father: {fileID: 1521994001} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1906943973 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906943971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181089338 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 15 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 561219265} +--- !u!1 &1907780227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1907780228} + - component: {fileID: 1907780229} + - component: {fileID: 1907780230} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1907780228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907780227} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.388, y: 0.931, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1907780229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907780227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.0963144, y: -0.11201064, z: -0} + m_HandleOut: {x: 3.16, y: 0.169, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1907780230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907780227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1929086074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1929086075} + - component: {fileID: 1929086076} + - component: {fileID: 1929086077} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1929086075 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929086074} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -42.206, y: 2.623, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1929086076 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929086074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -6.655, y: 1.792, z: 0} + m_HandleOut: {x: 4.921156, y: -1.3249009, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1929086077 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929086074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1939582612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1939582613} + - component: {fileID: 1939582614} + m_Layer: 0 + m_Name: CP0021 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1939582613 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1939582612} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 56, y: 14.49, z: 4.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1939582614 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1939582612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1941015208 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1941015210} + - component: {fileID: 1941015209} + - component: {fileID: 1941015211} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1941015209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1941015208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.445, y: -0.156, z: -0.027} + m_HandleOut: {x: 0.291, y: 4.075, z: 0.106} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &1941015210 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1941015208} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 8.189, y: 0.273, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 102051644} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1941015211 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1941015208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1960145541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1960145542} + - component: {fileID: 1960145543} + - component: {fileID: 1960145544} + m_Layer: 0 + m_Name: CP0005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1960145542 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960145541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.169, y: 0.451, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1960145543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960145541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.735, y: 1.053, z: 0} + m_HandleOut: {x: -0.394, y: -1.023, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1960145544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960145541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1961775159 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1961775160} + - component: {fileID: 1961775161} + m_Layer: 0 + m_Name: CP0009 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1961775160 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961775159} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -23.83, y: 21.78, z: 1.177} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1961775161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961775159} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1977709793 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1977709794} + - component: {fileID: 1977709795} + - component: {fileID: 1977709796} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1977709794 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977709793} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 11.251, y: 5.224, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 102051644} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1977709795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977709793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 1.286, y: 2.281, z: 0} + m_HandleOut: {x: -1.441, y: -1.496, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1977709796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1977709793} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &1983866049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1983866050} + - component: {fileID: 1983866051} + - component: {fileID: 1983866052} + m_Layer: 0 + m_Name: CP0008 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1983866050 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1983866049} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -8.517, y: 6.171, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 582067528} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1983866051 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1983866049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.927, y: -1.932, z: 0} + m_HandleOut: {x: -0.2964137, y: 0.61770517, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &1983866052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1983866049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2001064149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2001064154} + - component: {fileID: 2001064159} + - component: {fileID: 2001064153} + - component: {fileID: 2001064151} + - component: {fileID: 2001064150} + - component: {fileID: 2001064155} + 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 &2001064150 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001064149} + m_Enabled: 1 +--- !u!124 &2001064151 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001064149} + m_Enabled: 1 +--- !u!20 &2001064153 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001064149} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 3 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2001064154 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001064149} + m_LocalRotation: {x: 0.6818004, y: -0.18747847, z: 0.18747847, w: 0.6818004} + m_LocalPosition: {x: -48.43, y: 415, z: 1.114} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2001064155 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001064149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84cf58c9d80039e4c88dc286c511ce1b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 200 + m_MoveMode: 1 + m_Speed: 6 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_LockRotation: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 1 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + m_Spline: {fileID: 13004570} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + onPositionReachedList: [] + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + MinSpeed: 6 + MaxSpeed: 23 + Mass: 3 + Down: -9.81 + Up: 8 + Fric: 1 +--- !u!114 &2001064159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2001064149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eed5f71264f54224aaf071d6a2e69915, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Note: CurvyCamController inherits from CurvySplineController and controls the + speed! +--- !u!1 &2017174471 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2017174472} + - component: {fileID: 2017174473} + m_Layer: 0 + m_Name: CP0035 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2017174472 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017174471} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -25.41, y: 17.85, z: 1.116} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 35 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2017174473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017174471} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2028220042 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2028220043} + - component: {fileID: 2028220044} + m_Layer: 0 + m_Name: Spline Path_3_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2028220043 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028220042} + 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_Children: + - {fileID: 2067255912} + - {fileID: 2129786635} + m_Father: {fileID: 744080809} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2028220044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028220042} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 2067255913} + - {fileID: 2129786636} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2044366721 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2044366723} + - component: {fileID: 2044366722} + - component: {fileID: 2044366724} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2044366722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2044366721} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1.656, y: -1.754, z: 0} + m_HandleOut: {x: 0, y: 0, z: -0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!4 &2044366723 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2044366721} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 29.82, y: 7.58, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1157467171} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2044366724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2044366721} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2065941959 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2065941960} + - component: {fileID: 2065941961} + m_Layer: 0 + m_Name: CP0024 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2065941960 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065941959} + m_LocalRotation: {x: -0.20068471, y: 0, z: 0, w: 0.9796559} + m_LocalPosition: {x: 37.18, y: -1.37, z: -12.9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 13004569} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2065941961 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065941959} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2067255911 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2067255912} + - component: {fileID: 2067255913} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2067255912 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067255911} + 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_Children: [] + m_Father: {fileID: 2028220043} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2067255913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067255911} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2068580920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2068580921} + - component: {fileID: 2068580922} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2068580921 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068580920} + 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_Children: + - {fileID: 2112910286} + m_Father: {fileID: 284421867} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2068580922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2068580920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 15 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 2112910287} +--- !u!1 &2074049690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2074049691} + - component: {fileID: 2074049692} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2074049691 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074049690} + 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_Children: [] + m_Father: {fileID: 1521994001} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2074049692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074049690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181089338 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 593 + y: 10 + width: 250 + height: 362 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 1, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 30, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e3d3fc405aabcbb48a873e5fcd3e1ab6, type: 2} +--- !u!1 &2074437746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2074437747} + - component: {fileID: 2074437748} + - component: {fileID: 2074437749} + m_Layer: 0 + m_Name: CP0004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2074437747 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074437746} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -49.377, y: 9.174, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2074437748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074437746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.208, y: 5.672, z: 0} + m_HandleOut: {x: 0.233, y: -2.199, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2074437749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074437746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2102823568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2102823569} + - component: {fileID: 2102823570} + - component: {fileID: 2102823571} + m_Layer: 0 + m_Name: CP0010 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2102823569 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102823568} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 34.266, y: -5.411, z: 0} + m_LocalScale: {x: 1.0000001, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1803760666} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2102823570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102823568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.339 + m_HandleIn: {x: 0.42819268, y: 0.60130936, z: 0.28927892} + m_HandleOut: {x: -0.432, y: -0.607, z: -0.292} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2102823571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102823568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2106046379 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2106046380} + - component: {fileID: 2106046381} + m_Layer: 0 + m_Name: Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2106046380 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2106046379} + 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_Children: + - {fileID: 732926239} + m_Father: {fileID: 1486181238} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2106046381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2106046379} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181089338 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 15 + width: 250 + height: 151 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 732926240} +--- !u!1 &2112910285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2112910286} + - component: {fileID: 2112910287} + m_Layer: 0 + m_Name: Spline Path_3_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2112910286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2112910285} + 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_Children: + - {fileID: 1793046564} + - {fileID: 438644959} + m_Father: {fileID: 2068580921} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2112910287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2112910285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.3 + ControlPoints: + - {fileID: 1793046565} + - {fileID: 438644960} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2114476875 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2114476876} + - component: {fileID: 2114476877} + m_Layer: 0 + m_Name: Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2114476876 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114476875} + 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_Children: [] + m_Father: {fileID: 191770939} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2114476877 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114476875} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1181149413 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 912 + y: 30 + width: 250 + height: 367 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 1, b: 0, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + - m_ModuleID: 7 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 1 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &2116627503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2116627504} + - component: {fileID: 2116627505} + - component: {fileID: 2116627506} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2116627504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116627503} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -33.078, y: 18.712, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1197648166} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2116627505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116627503} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 0 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 6.881243, y: 0.40204978, z: -0} + m_HandleOut: {x: -7.589, y: -0.443, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &2116627506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2116627503} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &2129786634 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2129786635} + - component: {fileID: 2129786636} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2129786635 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129786634} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2028220043} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2129786636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129786634} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/98_Curvy.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/98_Curvy.unity.meta new file mode 100644 index 00000000..b0949c3f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/98_Curvy.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8237a7e5f49aa66468cb83d6c8a0982d +timeCreated: 1439470072 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance API.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance API.unity new file mode 100644 index 00000000..040c2643 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance API.unity @@ -0,0 +1,438 @@ +%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.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &494292524 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 184722, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412676, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &781880046 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 781880050} + - component: {fileID: 781880049} + - component: {fileID: 781880048} + - component: {fileID: 781880047} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &781880047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 781880046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &781880048 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 781880046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &781880049 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 781880046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &781880050 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 781880046} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1489596081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1489596083} + - component: {fileID: 1489596082} + m_Layer: 0 + m_Name: Performance + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1489596082 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489596081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 917be1f89abbdbd4ca06657c465e2be6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1489596083 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489596081} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 248.99654, y: 356.86853, z: -6.875} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1665809476 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1665809481} + - component: {fileID: 1665809480} + - component: {fileID: 1665809478} + - component: {fileID: 1665809477} + - component: {fileID: 1665809482} + 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 &1665809477 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!124 &1665809478 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 +--- !u!20 &1665809480 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1665809481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_LocalRotation: {x: 0.16492918, y: 0.20952912, z: -0.035880588, w: 0.9631244} + m_LocalPosition: {x: -31.09, y: 25.1, z: -61} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1665809482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1665809476} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance API.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance API.unity.meta new file mode 100644 index 00000000..c1d30cdb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance API.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18aa167d4f1e1ba449563b1afca75ebc +timeCreated: 1425478143 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance Dynamic Spline.unity b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance Dynamic Spline.unity new file mode 100644 index 00000000..9e600597 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance Dynamic Spline.unity @@ -0,0 +1,1652 @@ +%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.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + 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: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &398960557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 398960558} + - component: {fileID: 398960559} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &398960558 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398960557} + 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_Children: [] + m_Father: {fileID: 757249181} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &398960559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 398960557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 314 + y: 10 + width: 250 + height: 248 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 1 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!1 &400410052 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 400410053} + - component: {fileID: 400410054} + - component: {fileID: 400410055} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400410053 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400410052} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 803406577} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &400410054 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400410052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -2.206173, y: -0, z: -0} + m_HandleOut: {x: 2.206173, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &400410055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 400410052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 0 +--- !u!1 &457573069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 457573073} + - component: {fileID: 457573072} + - component: {fileID: 457573071} + - component: {fileID: 457573070} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &457573070 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 457573069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2d49b7c1bcd2e07499844da127be038d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ForceModuleActive: 0 +--- !u!114 &457573071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 457573069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &457573072 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 457573069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &457573073 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 457573069} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &531634397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 531634398} + - component: {fileID: 531634399} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &531634398 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 531634397} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.0000003496911, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 803406577} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &531634399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 531634397} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 2.2061732, y: -0.00000019724726, z: -0} + m_HandleOut: {x: -2.206173, y: 0.00000019724723, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &635406945 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 635406949} + - component: {fileID: 635406948} + - component: {fileID: 635406947} + - component: {fileID: 635406946} + - component: {fileID: 635406950} + m_Layer: 0 + m_Name: _CurvyGlobal_ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &635406946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635406945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Identifier: FluffyUnderware.Curvy.CurvySplineSegment, Assembly-CSharp, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 1 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 50 + m_Speed: 1 + Debug: 0 +--- !u!114 &635406947 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635406945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f7da6ae8fd39ffa439ccf96f0d3da992, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &635406948 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635406945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!4 &635406949 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635406945} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &635406950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 635406945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6fd1ed065a5ad4241ade72657b4c6e4b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + vector2Capacity: 100000 + vector3Capacity: 100000 + vector4Capacity: 100000 + intCapacity: 100000 + floatCapacity: 10000 + cgSpotCapacity: 10000 + logAllocations: 0 +--- !u!1 &687045553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 687045554} + - component: {fileID: 687045555} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &687045554 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687045553} + 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_Children: [] + m_Father: {fileID: 757249181} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &687045555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687045553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 920 + y: 12 + width: 250 + height: 301 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + unwrapUV2: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &694340897 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 694340898} + - component: {fileID: 694340899} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &694340898 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694340897} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4, y: -0.00000017484555, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 803406577} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &694340899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694340897} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 2.206173, z: -0} + m_HandleOut: {x: 0, y: -2.2061732, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &757249180 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 757249181} + - component: {fileID: 757249183} + - component: {fileID: 757249182} + m_Layer: 0 + m_Name: Generator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &757249181 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757249180} + 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_Children: + - {fileID: 1723469067} + - {fileID: 1296677481} + - {fileID: 398960558} + - {fileID: 1953385778} + - {fileID: 687045554} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &757249182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757249180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &757249183 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 757249180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: [] + m_LastModuleID: 5 +--- !u!1 &764964025 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 764964031} + - component: {fileID: 764964030} + - component: {fileID: 764964028} + - component: {fileID: 764964027} + - component: {fileID: 764964026} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &764964026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764964025} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d025f1b57fec5ca4f8585046c3fd23c8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + Splines: + - Spline: {fileID: 1879267964} + LineColor: {r: 1, g: 0, b: 0, a: 1} +--- !u!81 &764964027 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764964025} + m_Enabled: 1 +--- !u!124 &764964028 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764964025} + m_Enabled: 1 +--- !u!20 &764964030 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764964025} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &764964031 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764964025} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5.9876375, y: 13.8646965, z: -241.03688} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &803406576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 803406577} + - component: {fileID: 803406578} + - component: {fileID: 803406579} + m_Layer: 0 + m_Name: Input Spline Shape_1_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &803406577 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 803406576} + 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_Children: + - {fileID: 400410053} + - {fileID: 694340898} + - {fileID: 531634398} + - {fileID: 1290413248} + m_Father: {fileID: 1296677481} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &803406578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 803406576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.0.2 + ControlPoints: + - {fileID: 400410054} + - {fileID: 694340899} + - {fileID: 531634399} + - {fileID: 1290413249} + ShowGizmos: 0 + m_Interpolation: 3 + m_RestrictTo2D: 1 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &803406579 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 803406576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Count: 4 + m_Radius: 4 +--- !u!1 &987136604 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 987136606} + - component: {fileID: 987136605} + 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 &987136605 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987136604} + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &987136606 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987136604} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1254575339 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.x + value: 552.5 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.y + value: 283 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 476422, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 13463edfb77f1304ca4a0da53dfe21a0, type: 3} +--- !u!1 &1290413247 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1290413248} + - component: {fileID: 1290413249} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1290413248 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290413247} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0.000000047699523, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 803406577} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1290413249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290413247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.00000006574908, y: -2.206173, z: -0} + m_HandleOut: {x: 0.00000006574908, y: 2.206173, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &1296677480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1296677481} + - component: {fileID: 1296677482} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1296677481 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1296677480} + 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_Children: + - {fileID: 803406577} + m_Father: {fileID: 757249181} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1296677482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1296677480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 11 + y: 147 + width: 250 + height: 195 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 803406578} +--- !u!1 &1723469066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1723469067} + - component: {fileID: 1723469068} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1723469067 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723469066} + 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_Children: [] + m_Father: {fileID: 757249181} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1723469068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1723469066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 123 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 1879267964} +--- !u!1 &1879267962 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1879267965} + - component: {fileID: 1879267964} + - component: {fileID: 1879267963} + m_Layer: 0 + m_Name: Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1879267963 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1879267962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9dc588f20026fce40a420d34e8c9858e, type: 3} + m_Name: + m_EditorClassIdentifier: + Generator: {fileID: 757249183} + UpdateInterval: 200 + CPCount: 20 + Radius: 40 + AlwaysClear: 0 + UpdateCG: 0 +--- !u!114 &1879267964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1879267962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.2.2 + ControlPoints: [] + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 0 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 1 + m_CheckTransform: 0 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &1879267965 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1879267962} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1953385776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1953385778} + - component: {fileID: 1953385777} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1953385777 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953385776} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 624 + y: 11 + width: 250 + height: 213 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_ReverseTriOrder: 0 + m_GenerateUV: 1 + unscaleU: 0 + unscalingOrigin: 0.5 + m_GenerateUV2: 1 + m_Split: 0 + m_SplitLength: 100 + splitUV2: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!4 &1953385778 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953385776} + 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_Children: [] + m_Father: {fileID: 757249181} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance Dynamic Spline.unity.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance Dynamic Spline.unity.meta new file mode 100644 index 00000000..03be222e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scenes/99_Performance Dynamic Spline.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17174547927805c469ab20e7f4278ebc +timeCreated: 1432714819 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts.meta new file mode 100644 index 00000000..7944b1c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: ece717abe053b6747a81e33c5e48bf20 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/ChaseCam.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/ChaseCam.cs new file mode 100644 index 00000000..889bbefa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/ChaseCam.cs @@ -0,0 +1,59 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Examples +{ + [ExecuteAlways] + public class ChaseCam : MonoBehaviour + { + public Transform LookAt; + public Transform MoveTo; + public Transform RollTo; + [Positive] + public float ChaseTime=0.5f; + + + Vector3 mVelocity; + Vector3 mRollVelocity; + +#if UNITY_EDITOR + void Update() + { + if (!Application.isPlaying) + { + if (MoveTo) + transform.position = MoveTo.position; + if (LookAt) + { + if (!RollTo) transform.LookAt (LookAt); + else transform.LookAt (LookAt, RollTo.up); + } + // if (RollTo) + // transform.rotation = Quaternion.Euler (new Vector3 (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, RollTo.rotation.eulerAngles.z)); + } + } +#endif + + // Update is called once per frame + void LateUpdate() + { + if (MoveTo) + transform.position=Vector3.SmoothDamp(transform.position, MoveTo.position, ref mVelocity, ChaseTime); + if (LookAt) + { + if (!RollTo) transform.LookAt (LookAt); + else transform.LookAt (LookAt, Vector3.SmoothDamp(transform.up, RollTo.up, ref mRollVelocity, ChaseTime)); + } + // if (RollTo) + // transform.rotation = Quaternion.Euler (new Vector3 (transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, RollTo.rotation.eulerAngles.z)); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/ChaseCam.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/ChaseCam.cs.meta new file mode 100644 index 00000000..420d22ea --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/ChaseCam.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 434e0e7bb669a364a94813e14dffb65b +timeCreated: 1433754899 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_HeightMetadata.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_HeightMetadata.cs new file mode 100644 index 00000000..06d875d4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_HeightMetadata.cs @@ -0,0 +1,31 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E01_HeightMetadata : CurvyInterpolatableMetadataBase + { + [SerializeField] + [RangeEx(0, 1, Slider = true)] +#pragma warning disable 649 + float m_Height; +#pragma warning restore 649 + + public override float MetaDataValue + { + get { return m_Height; } + } + + public override float Interpolate(CurvyInterpolatableMetadataBase nextMetadata, float interpolationTime) + { + return (nextMetadata != null) ? Mathf.Lerp(MetaDataValue, nextMetadata.MetaDataValue, interpolationTime) : MetaDataValue; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_HeightMetadata.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_HeightMetadata.cs.meta new file mode 100644 index 00000000..5e3c82b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_HeightMetadata.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8712b26610c3b0646b25d28526c1128f +timeCreated: 1436092085 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_MetaDataController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_MetaDataController.cs new file mode 100644 index 00000000..4a14c149 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_MetaDataController.cs @@ -0,0 +1,72 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Examples +{ + + /// + /// Example custom Controller + /// + public class E01_MetaDataController : SplineController + { + //The section attribute renders our field inside it's own category! + [Section("MetaController",Sort=0)] + [RangeEx(0, 30)] + [SerializeField] + float m_MaxHeight = 5f; // The height over ground to use as default + + + public float MaxHeight + { + get { return m_MaxHeight; } + set + { + if (m_MaxHeight != value) + m_MaxHeight = value; + } + } + + /// + /// This is called just after the SplineController has been initialized + /// + protected override void UserAfterInit() + { + setHeight(); + } + + /// + /// This is called just after the SplineController updates + /// + protected override void UserAfterUpdate() + { + setHeight(); + } + + + void setHeight() + { + if(Spline.Dirty) + Spline.Refresh(); + + // Get the interpolated Metadata value for the current position (for SplineController, RelativePosition means TF) + float height = Spline.GetInterpolatedMetadata(RelativePosition); + + // In our case we store a percentage (0..1) in our custom MetaData class, so we multiply with MaxHeight to set the actual height. + // Note that position and rotation has been set by the SplineController previously, so we just translate here using the local y-axis + + transform.Translate(0, height * MaxHeight, 0, Space.Self); + + } + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_MetaDataController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_MetaDataController.cs.meta new file mode 100644 index 00000000..59f0c1d0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E01_MetaDataController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6b01ebf71ba5ff0478c3b1788e587526 +timeCreated: 1436091769 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E02_AnimationHelper.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E02_AnimationHelper.cs new file mode 100644 index 00000000..8271d684 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E02_AnimationHelper.cs @@ -0,0 +1,28 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; + +namespace FluffyUnderware.Curvy.Examples +{ + /// + /// A class that makes some Animation methods available to Unity Events + /// + public class E02_AnimationHelper : MonoBehaviour { + + public void Play(Animation animation) + { + animation.Play(); + } + + public void RewindThenPlay(Animation animation) + { + animation.Rewind(); + animation.Play(); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E02_AnimationHelper.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E02_AnimationHelper.cs.meta new file mode 100644 index 00000000..a71120b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E02_AnimationHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6f8ff5781822ed040991ee4ff4ef9eac +timeCreated: 1527118293 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E04_PaintSpline.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E04_PaintSpline.cs new file mode 100644 index 00000000..08e9d57c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E04_PaintSpline.cs @@ -0,0 +1,91 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy.Controllers; +using UnityEngine.UI; + +/* + * In this example we let the user draw a spline on screen! + * + */ +namespace FluffyUnderware.Curvy.Examples +{ + public class E04_PaintSpline : MonoBehaviour + { + public float StepDistance = 30; + public SplineController Controller; + public Text InfoText; + + CurvySpline mSpline; + Vector2 mLastControlPointPos; + bool mResetSpline = true; + + void Awake() + { + // for this example we assume the component is attached to a GameObject holding a spline + mSpline = GetComponent(); + } + + void OnGUI() + { + // before using the spline, ensure it's initialized and the Controller is available + if (mSpline == null || !mSpline.IsInitialized || !Controller) + return; + + Event e = Event.current; + switch (e.type) + { + case EventType.MouseDrag: + // Start a new line? + if (mResetSpline) + { + mSpline.Clear(); // delete all Control Points + addCP(e.mousePosition); // add the first Control Point + Controller.gameObject.SetActive(true); + Controller.AbsolutePosition = 0; + mLastControlPointPos = e.mousePosition; // Store current mouse position + mResetSpline = false; + } + else + { + // only create a new Control Point if the minimum distance is reached + float dist = (e.mousePosition - mLastControlPointPos).magnitude; + if (dist >= StepDistance) + { + mLastControlPointPos = e.mousePosition; + addCP(e.mousePosition); + if (Controller.PlayState != CurvyController.CurvyControllerState.Playing) + Controller.Play(); + } + } + + break; + case EventType.MouseUp: + mResetSpline = true; + + break; + } + } + + // Add a Control Point and set it's position + CurvySplineSegment addCP(Vector3 mousePos) + { + Vector3 p = Camera.main.ScreenToWorldPoint(mousePos); + p.y *= -1; // flip Y to get the correct world position + p.z += 100; //To move further than camera's plane. The value 100 comes from the Canvas' plane distance + CurvySplineSegment cp = mSpline.InsertAfter(null, p, false); + + InfoText.text = "Control Points: " + mSpline.ControlPointCount.ToString(); // set info text + + return cp; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E04_PaintSpline.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E04_PaintSpline.cs.meta new file mode 100644 index 00000000..2a890f46 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E04_PaintSpline.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 519164ed9b6fe2844ab6927e80fc3dd8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_MoveToNearestPoint.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_MoveToNearestPoint.cs new file mode 100644 index 00000000..957363ff --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_MoveToNearestPoint.cs @@ -0,0 +1,45 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using UnityEngine.UI; + +namespace FluffyUnderware.Curvy.Examples +{ + [ExecuteAlways] + public class E05_MoveToNearestPoint : MonoBehaviour + { + public Transform Lookup; + public CurvySpline Spline; + public Text StatisticsText; + public Slider Density; + + TimeMeasure Timer = new TimeMeasure(30); + + // Update is called once per frame + void Update() + { + if (Spline && Spline.IsInitialized && Lookup && Spline.Dirty == false) + { + // get the nearest point's TF on spline + Timer.Start(); + transform.position = Spline.GetNearestPoint(Lookup.position, Space.World); + Timer.Stop(); + // set the corresponding position to nearestTF + StatisticsText.text = + string.Format("Blue Curve Cache Points: {0} \nAverage Lookup (ms): {1:0.000}", Spline.CacheSize, Timer.AverageMS); + } + } + + public void OnSliderChange() + { + Spline.CacheDensity = (int)Density.value; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_MoveToNearestPoint.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_MoveToNearestPoint.cs.meta new file mode 100644 index 00000000..879ee508 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_MoveToNearestPoint.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 90d77a0360522274d962d1170d9f3207 +timeCreated: 1432904141 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_SmoothFollow.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_SmoothFollow.cs new file mode 100644 index 00000000..884a5218 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_SmoothFollow.cs @@ -0,0 +1,70 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +// This is the regular SmoothFollow script, but renamed and put into Curvy.Examples namespace to keep it separated from the often changing Standard Assets +namespace FluffyUnderware.Curvy.Examples +{ + public class E05_SmoothFollow : MonoBehaviour + { + + // The target we are following + [SerializeField] +#pragma warning disable 649 + private Transform target; +#pragma warning restore 649 + // The distance in the x-z plane to the target + [SerializeField] + private float distance = 10.0f; + // the height we want the camera to be above the target + [SerializeField] + private float height = 5.0f; + + [SerializeField] +#pragma warning disable 649 + private float rotationDamping; + [SerializeField] + private float heightDamping; +#pragma warning restore 649 + + + // Update is called once per frame + void LateUpdate() + { + // Early out if we don't have a target + if (!target) + return; + + // Calculate the current rotation angles + float wantedRotationAngle = target.eulerAngles.y; + float wantedHeight = target.position.y + height; + + float currentRotationAngle = transform.eulerAngles.y; + float currentHeight = transform.position.y; + + // Damp the rotation around the y-axis + currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime); + + // Damp the height + currentHeight = Mathf.Lerp(currentHeight, wantedHeight, heightDamping * Time.deltaTime); + + // Convert the angle into a rotation + Quaternion currentRotation = Quaternion.Euler(0, currentRotationAngle, 0); + + // Set the position of the camera on the x-z plane to: + // distance meters behind the target + transform.position = target.position; + transform.position -= currentRotation * Vector3.forward * distance; + + // Set the height of the camera + transform.position = new Vector3(transform.position.x ,currentHeight , transform.position.z); + + // Always look at the target + transform.LookAt(target); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_SmoothFollow.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_SmoothFollow.cs.meta new file mode 100644 index 00000000..05b3c27b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E05_SmoothFollow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a20feb36c253ae940912006b89d21e84 +timeCreated: 1495982388 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E10_MotorController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E10_MotorController.cs new file mode 100644 index 00000000..fed0cc47 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E10_MotorController.cs @@ -0,0 +1,28 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E10_MotorController : SplineController + { + [Section("Motor")] + public float MaxSpeed = 30; + + protected override void Update() + { + float axis = Input.GetAxis("Vertical"); + Speed = Mathf.Abs(axis) * MaxSpeed; + MovementDirection = MovementDirectionMethods.FromInt((int)Mathf.Sign(axis)); + base.Update(); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E10_MotorController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E10_MotorController.cs.meta new file mode 100644 index 00000000..4a7965f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E10_MotorController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 967866bd6dfb207458ed4a36e414e5bc +timeCreated: 1438595490 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E11_RigidBodySplineController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E11_RigidBodySplineController.cs new file mode 100644 index 00000000..849c47ec --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E11_RigidBodySplineController.cs @@ -0,0 +1,78 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Controllers; + + +namespace FluffyUnderware.Curvy.Examples +{ + [RequireComponent(typeof(Rigidbody))] + public class E11_RigidBodySplineController : MonoBehaviour + { + public CurvySpline Spline; + public SplineController CameraController; + public float VSpeed = 10; + public float HSpeed = 0.5f; + public float CenterDrag = 0.5f; + public float JumpForce = 10; + + Rigidbody mRigidBody; + float mTF; + float velocity; + + + // Use this for initialization + void Start() + { + mRigidBody = GetComponent(); + } + + void LateUpdate() + { + if (CameraController) + { + // Camera has a regular SplineController attached. Set it to 5 units behind the player + float newCamAbs = Spline.TFToDistance(mTF) - 5; + CameraController.AbsolutePosition = Mathf.SmoothDamp(CameraController.AbsolutePosition, newCamAbs, ref velocity, 0.5f); + } + } + + void FixedUpdate() + { + if (Spline) + { + float v = Input.GetAxis("Vertical")*VSpeed; + float h = Input.GetAxis("Horizontal")*HSpeed; + + Vector3 p; + // get nearest TF and point on spline + mTF = Spline.GetNearestPointTF(transform.localPosition, out p); + // apply forward thrust along spline direction (tangent) + if (v != 0) + { + mRigidBody.AddForce(Spline.GetTangentFast(mTF) * v, ForceMode.Force); + } + // apply side thrust to left/right from the spline's "forward" vector + if (h != 0) + { + Vector3 offset = Spline.InterpolateFast(mTF) + Quaternion.AngleAxis(90, Spline.GetTangentFast(mTF)) * Spline.GetOrientationUpFast(mTF); + Vector3 hdir = p - offset; + mRigidBody.AddForce(hdir * h , ForceMode.Force); + } + if (Input.GetKeyDown(KeyCode.Space)) + mRigidBody.AddForce(Vector3.up * JumpForce,ForceMode.Impulse); + + // continously drag toward the spline to add some magic gravity + mRigidBody.AddForce((Spline.Interpolate(mTF) - transform.localPosition) * CenterDrag, ForceMode.VelocityChange); + } + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E11_RigidBodySplineController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E11_RigidBodySplineController.cs.meta new file mode 100644 index 00000000..ce7d060b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E11_RigidBodySplineController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b6f96fa824fa43342b16b5dac66031f0 +timeCreated: 1438598326 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_MDJunctionControl.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_MDJunctionControl.cs new file mode 100644 index 00000000..9b2a853b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_MDJunctionControl.cs @@ -0,0 +1,25 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy; +using UnityEngine.UI; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E12_MDJunctionControl : CurvyMetadataBase + { + public bool UseJunction; + + public void Toggle() + { + UseJunction = !UseJunction; + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_MDJunctionControl.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_MDJunctionControl.cs.meta new file mode 100644 index 00000000..c2904356 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_MDJunctionControl.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 420a5d570986b8a41bfffcbf071af14e +timeCreated: 1438850708 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_ToggleBehaviourByTrigger.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_ToggleBehaviourByTrigger.cs new file mode 100644 index 00000000..0e2a0a05 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_ToggleBehaviourByTrigger.cs @@ -0,0 +1,22 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E12_ToggleBehaviourByTrigger : MonoBehaviour + { + public Behaviour UIElement; + + void OnTriggerEnter() + { + if (UIElement) + UIElement.enabled = !UIElement.enabled; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_ToggleBehaviourByTrigger.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_ToggleBehaviourByTrigger.cs.meta new file mode 100644 index 00000000..89e62639 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_ToggleBehaviourByTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 954bff2b3c3a1414ebeb2fbd118508fd +timeCreated: 1442570477 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainCarManager.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainCarManager.cs new file mode 100644 index 00000000..89264a21 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainCarManager.cs @@ -0,0 +1,91 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.Curvy.Components; + +namespace FluffyUnderware.Curvy.Examples +{ + [ExecuteAlways] + public class E12_TrainCarManager : MonoBehaviour + { + public SplineController Waggon; + public SplineController FrontAxis; + public SplineController BackAxis; + + public float Position + { + get + { + return Waggon.AbsolutePosition; + } + set + { + if (Waggon.AbsolutePosition != value) + { + Waggon.AbsolutePosition = value; + FrontAxis.AbsolutePosition = value + mTrain.AxisDistance / 2; + BackAxis.AbsolutePosition = value - mTrain.AxisDistance / 2; + } + } + } + + E12_TrainManager mTrain; + + void LateUpdate() + { + if (!mTrain) + return; + + if (BackAxis.Spline == FrontAxis.Spline && + FrontAxis.RelativePosition > BackAxis.RelativePosition) + { + float carPosition = Waggon.AbsolutePosition; + float frontAxisPosition = FrontAxis.AbsolutePosition; + float backAxisPosition = BackAxis.AbsolutePosition; + + if (Mathf.Abs(Mathf.Abs(frontAxisPosition - backAxisPosition) - mTrain.AxisDistance) >= mTrain.Limit) + { + FrontAxis.AbsolutePosition = carPosition + mTrain.AxisDistance / 2; + BackAxis.AbsolutePosition = carPosition - mTrain.AxisDistance / 2; + } + } + } + + + + public void setup() + { + mTrain = GetComponentInParent(); + if (mTrain.Spline) + { + setController(Waggon, mTrain.Spline, mTrain.Speed); + setController(FrontAxis, mTrain.Spline, mTrain.Speed); + setController(BackAxis, mTrain.Spline, mTrain.Speed); + } + } + + void setController(SplineController c, CurvySpline spline, float speed) + { + c.Spline = spline; + c.Speed = speed; + c.OnControlPointReached.AddListenerOnce(OnCPReached); + } + + public void OnCPReached(CurvySplineMoveEventArgs e) + { + E12_MDJunctionControl jc = e.ControlPoint.GetMetadata(); + SplineController splineController = e.Sender; + splineController.ConnectionBehavior = (jc && jc.UseJunction == false) + ? SplineControllerConnectionBehavior.CurrentSpline + : SplineControllerConnectionBehavior.RandomSpline; + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainCarManager.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainCarManager.cs.meta new file mode 100644 index 00000000..dfbebdb2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainCarManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 54e02eba0eec6d44e8a2f17e3553db48 +timeCreated: 1438777527 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainManager.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainManager.cs new file mode 100644 index 00000000..32a374e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainManager.cs @@ -0,0 +1,91 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using UnityEngine.UI; + + +namespace FluffyUnderware.Curvy.Examples +{ + [ExecuteAlways] + public class E12_TrainManager : MonoBehaviour + { + public CurvySpline Spline; + public float Speed; + + + public float Position; + public float CarSize = 10; + public float AxisDistance = 8; + public float CarGap = 1; + public float Limit = 0.2f; + + private bool isSetup; + E12_TrainCarManager[] Cars; + + void Start() + { + setup(); + } + + void OnDisable() + { + isSetup = false; + } + +#if UNITY_EDITOR + void OnValidate() + { + if (isSetup) + setup(); + } +#endif + + void LateUpdate() + { + if (isSetup == false) + setup(); + if (Cars.Length > 1) + { + E12_TrainCarManager first = Cars[0]; + E12_TrainCarManager last = Cars[Cars.Length - 1]; + if (first.FrontAxis.Spline == last.BackAxis.Spline && first.FrontAxis.RelativePosition > last.BackAxis.RelativePosition) + { + for (int i = 1; i < Cars.Length; i++) + { + float delta = Cars[i - 1].Position - Cars[i].Position - CarSize - CarGap; + if (Mathf.Abs(delta) >= Limit) + Cars[i].Position += delta; + } + } + } + } + + void setup() + { + if (Spline.Dirty) + Spline.Refresh(); + + Cars = GetComponentsInChildren(); + float pos = Position - CarSize / 2; + + for (int i = 0; i < Cars.Length; i++) + { + Cars[i].setup(); + if (Cars[i].BackAxis + && Cars[i].FrontAxis + && Cars[i].Waggon) + Cars[i].Position = pos; + pos -= CarSize + CarGap; + } + + isSetup = true; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainManager.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainManager.cs.meta new file mode 100644 index 00000000..94e680be --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E12_TrainManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e821631cf9a29834281810463e753f57 +timeCreated: 1438849735 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E13_TrainCarDrifter.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E13_TrainCarDrifter.cs new file mode 100644 index 00000000..aad768d9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E13_TrainCarDrifter.cs @@ -0,0 +1,51 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; +using UnityEngine.UI; + +namespace FluffyUnderware.Curvy.Examples +{ + [ExecuteAlways] + public class E13_TrainCarDrifter : MonoBehaviour + { + public float speed = 30f; + public float wheelSpacing = 9.72f; + public Vector3 bodyOffset = new Vector3 (0f, 1f, 0f); + public SplineController controllerWheelLeading; + public SplineController controllerWheelTrailing; + public Transform trainCar; + + + private void Start () + { + controllerWheelLeading.Speed = speed; + } + + private void Update () + { + if (controllerWheelLeading && controllerWheelTrailing && controllerWheelLeading.Spline && controllerWheelTrailing.Spline && controllerWheelLeading.Spline != controllerWheelTrailing.Spline && trainCar) + { + Vector3 lookupPos = controllerWheelTrailing.Spline.transform.InverseTransformPoint (controllerWheelLeading.transform.position); + Vector3 trailingPosition; + float nearestTF = controllerWheelTrailing.Spline.GetNearestPointTF (lookupPos, out trailingPosition); + controllerWheelTrailing.RelativePosition = nearestTF; + + float trackDistance = Vector3.Distance (controllerWheelLeading.transform.position, trailingPosition); + float wheelOffset = Mathf.Clamp (Mathf.Sqrt ((wheelSpacing * wheelSpacing) - (trackDistance * trackDistance)), 0f, 20f); + + controllerWheelTrailing.AbsolutePosition -= wheelOffset; + trainCar.position = (controllerWheelLeading.transform.position + controllerWheelTrailing.transform.position) / 2f + bodyOffset; + + Vector3 targetPostition = new Vector3 (controllerWheelLeading.transform.position.x, trainCar.transform.position.y, controllerWheelLeading.transform.position.z); + trainCar.LookAt (targetPostition, controllerWheelLeading.transform.up); + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E13_TrainCarDrifter.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E13_TrainCarDrifter.cs.meta new file mode 100644 index 00000000..28babda2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E13_TrainCarDrifter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e4acfeadde244094e868d60561400891 +timeCreated: 1442658185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E21_VolumeControllerInput.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E21_VolumeControllerInput.cs new file mode 100644 index 00000000..ed5bd1f5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E21_VolumeControllerInput.cs @@ -0,0 +1,92 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E21_VolumeControllerInput : MonoBehaviour + { + public float AngularVelocity = 0.2f; + public ParticleSystem explosionEmitter; + public VolumeController volumeController; + public Transform rotatedTransform; + public float maxSpeed = 40f; + public float accelerationForward = 20f; + public float accelerationBackward = 40f; + private bool mGameOver; + + private void Awake() + { + if (!volumeController) + volumeController = GetComponent(); + } + + void Start() + { + if (volumeController.IsReady) + ResetController(); + else + volumeController.OnInitialized.AddListener(arg0 => ResetController()); + } + + private void ResetController() + { + volumeController.Speed = 0; + volumeController.RelativePosition = 0; + volumeController.CrossRelativePosition = 0; + } + + private void Update() + { + if (volumeController && !mGameOver) + { + if (volumeController.PlayState != CurvyController.CurvyControllerState.Playing) volumeController.Play(); + Vector2 input = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")).normalized; + + float speedRaw = volumeController.Speed + input.y * Time.deltaTime * Mathf.Lerp(accelerationBackward, accelerationForward, (input.y + 1f) / 2f); + + volumeController.Speed = Mathf.Clamp(speedRaw, 0f, maxSpeed); + volumeController.CrossRelativePosition += AngularVelocity * Mathf.Clamp(volumeController.Speed / 10f, 0.2f, 1f) * input.x * Time.deltaTime; + + + if (rotatedTransform) + { + float yTarget = Mathf.Lerp(-90f, 90f, (input.x + 1f) / 2f); + rotatedTransform.localRotation = Quaternion.Euler(0f, yTarget, 0f); + } + } + } + + public void OnCollisionEnter(Collision collision) + { + + } + + + + public void OnTriggerEnter(Collider other) + { + if (mGameOver == false) + { + explosionEmitter.Emit(200); + volumeController.Pause(); + mGameOver = true; + Invoke(nameof(StartOver), 1); + } + } + + private void StartOver() + { + + ResetController(); + mGameOver = false; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E21_VolumeControllerInput.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E21_VolumeControllerInput.cs.meta new file mode 100644 index 00000000..b71c247a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E21_VolumeControllerInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 198782fdd1a89d540977c923f65caf18 +timeCreated: 1433752237 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E24_TerrainUpdater.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E24_TerrainUpdater.cs new file mode 100644 index 00000000..d681c4ae --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E24_TerrainUpdater.cs @@ -0,0 +1,32 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.Curvy.Generator; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E24_TerrainUpdater : MonoBehaviour + { + /// + /// The generator that should be updated after the terrain is moved + /// + public CurvyGenerator CurvyGenerator; + + void Update() + { + //Move the terrain + Vector3 position = transform.position; + position.x = 1 * Mathf.Sin(Time.time); + position.z = 1 * Mathf.Cos(Time.time); + transform.position = position; + + //Update the generator + CurvyGenerator.Refresh(true); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E24_TerrainUpdater.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E24_TerrainUpdater.cs.meta new file mode 100644 index 00000000..d36a9af7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E24_TerrainUpdater.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7f764b97d74553340b32fd397974aab0 +timeCreated: 1603400956 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_CameraLook.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_CameraLook.cs new file mode 100644 index 00000000..7f6c7ff3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_CameraLook.cs @@ -0,0 +1,34 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E25_CameraLook : MonoBehaviour + { + + [Range(0f, 10f)] [SerializeField] private float m_TurnSpeed = 1.5f; + + protected void Update() + { + if (Time.timeScale < float.Epsilon) + return; + + // Read the user input + float x = Input.GetAxis("Mouse X"); + float y = -Input.GetAxis("Mouse Y"); + + transform.Rotate(y * m_TurnSpeed,0,0, Space.Self); + transform.Rotate(0, x * m_TurnSpeed, 0,Space.World); + + + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_CameraLook.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_CameraLook.cs.meta new file mode 100644 index 00000000..9b51a269 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_CameraLook.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e44af8091779fcb40801d5b284353dbe +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_SplineControllerInputRail.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_SplineControllerInputRail.cs new file mode 100644 index 00000000..b44cab65 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_SplineControllerInputRail.cs @@ -0,0 +1,27 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E25_SplineControllerInputRail : MonoBehaviour + { + public float acceleration = 0.1f; + public float limit = 30.0f; + public SplineController splineController; + + + private void Update () + { + float verticalInput = Mathf.Clamp (Input.GetAxis("Vertical"), -1f, 1f); + splineController.Speed = Mathf.Clamp (splineController.Speed + verticalInput * acceleration * Time.deltaTime, 0.001f, limit); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_SplineControllerInputRail.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_SplineControllerInputRail.cs.meta new file mode 100644 index 00000000..4933894a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E25_SplineControllerInputRail.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4deb53928c8b3045996fc7bf678201f +timeCreated: 1442524299 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E27_MixingAnimator.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E27_MixingAnimator.cs new file mode 100644 index 00000000..e5fc29f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E27_MixingAnimator.cs @@ -0,0 +1,28 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.Curvy.Generator.Modules; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Examples +{ + /// + /// Modifies the Mix Curve of the Variable Mix Shapes in example scene 27 + /// + public class E27_MixingAnimator : MonoBehaviour + { + public ModifierVariableMixShapes VariableMixShapes; + + void Update() + { + Keyframe[] mixCurveKeys = VariableMixShapes.MixCurve.keys; + mixCurveKeys[1].value = Mathf.Sin(Time.time); + VariableMixShapes.MixCurve.keys = mixCurveKeys; + VariableMixShapes.Dirty = true; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E27_MixingAnimator.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E27_MixingAnimator.cs.meta new file mode 100644 index 00000000..154d5ed4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E27_MixingAnimator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c61af012c444d924c92ce27a636066f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E29_ControlPointMover.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E29_ControlPointMover.cs new file mode 100644 index 00000000..056dea1f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E29_ControlPointMover.cs @@ -0,0 +1,35 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; + +namespace FluffyUnderware.Curvy.Examples +{ + /// + /// Moves control points in a circular fashion + /// + public class E29_ControlPointMover : MonoBehaviour + { + private Vector3 originalPosition; + public float Variation; + public float Magnitude = 3; + public float Period = 3; + + void Start() + { + originalPosition = transform.position; + } + + void Update() + { + Vector3 position = originalPosition; + position.x += Magnitude * Mathf.Sin(Variation + Time.time * Period); + position.z += Magnitude * Mathf.Cos(Variation + Time.time * Period); + transform.position = position; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E29_ControlPointMover.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E29_ControlPointMover.cs.meta new file mode 100644 index 00000000..6070191a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E29_ControlPointMover.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2659e51412d4823409c01bc5d946b67b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_RunnerController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_RunnerController.cs new file mode 100644 index 00000000..c75712d0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_RunnerController.cs @@ -0,0 +1,145 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.Curvy.Components; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Examples +{ + + /// + /// Example custom Controller + /// + public class E50_RunnerController : SplineController + { + [Section("Jump")] + public float JumpHeight = 20; + public float JumpSpeed = 0.5f; + public AnimationCurve JumpCurve = AnimationCurve.Linear(0, 0, 1, 1); + public float Gravity = 10; + + enum GuideMode + { + Guided, + Jumping, + FreeFall + } + GuideMode mMode; + float jumpHeight; + float fallingSpeed; + + E50_SplineRefMetadata mPossibleSwitchTarget; + int mSwitchInProgress; // 0=No, 1=to right, -1=to left + + protected override void OnDisable() + { + base.OnDisable(); + StopAllCoroutines(); + } + + + override protected void InitializedApplyDeltaTime(float deltaTime) + { + // Jump? + if (Input.GetButtonDown("Fire1") && mMode == GuideMode.Guided) + StartCoroutine(Jump()); + + // If allowed to switch and player wants to, initiate switching + if (mPossibleSwitchTarget != null && mSwitchInProgress == 0) + { + float xAxis = Input.GetAxisRaw("Horizontal"); + if (mPossibleSwitchTarget.Options == "Right" && xAxis > 0) + Switch(1); + else if (mPossibleSwitchTarget.Options == "Left" && xAxis < 0) + Switch(-1); + } + // else check if we need to finalize the switch process + else if (mSwitchInProgress != 0 && !IsSwitching) + { + mSwitchInProgress = 0; + OnCPReached(new CurvySplineMoveEventArgs(this, Spline, Spline.TFToSegment(RelativePosition), 0, false, 0, MovementDirection.Forward)); + } + + base.InitializedApplyDeltaTime(deltaTime); + + // If falling + if (mMode == GuideMode.FreeFall) + { + // handling falling + fallingSpeed += Gravity * deltaTime; + OffsetRadius -= fallingSpeed; + // check distance to falling target and reenter "guided" mode when near + if (OffsetRadius <= 0) + { + mMode = GuideMode.Guided; + fallingSpeed = 0; + OffsetRadius = 0; + } + } + + // if we're jumping, translate back to the wanted height above track + if (mMode == GuideMode.Jumping) + OffsetRadius = jumpHeight; + } + + // Initiate Lane Switching + void Switch(int dir) + { + mSwitchInProgress = dir; + Vector3 posInTargetSpace = mPossibleSwitchTarget.Spline.transform.InverseTransformPoint(transform.position); + Vector3 nearestPoint; + float nearestPointTF = mPossibleSwitchTarget.Spline.GetNearestPointTF(posInTargetSpace, out nearestPoint, mPossibleSwitchTarget.CP.Spline.GetSegmentIndex(mPossibleSwitchTarget.CP)); + float swSpeed = (nearestPoint - posInTargetSpace).magnitude / Speed; + SwitchTo(mPossibleSwitchTarget.Spline, nearestPointTF, swSpeed); + } + + // Do a Jump + IEnumerator Jump() + { + mMode = GuideMode.Jumping; + float start = Time.time; + float f = 0; + while (f < 1) + { + if (mMode != GuideMode.Jumping)//If other code exited the jump + break; + + f = (Time.time - start) / JumpSpeed; + jumpHeight = JumpCurve.Evaluate(f) * JumpHeight; + yield return new WaitForEndOfFrame(); + } + if (mMode == GuideMode.Jumping) + mMode = GuideMode.Guided; + } + + // Retrieve switch metadata + public void OnCPReached(CurvySplineMoveEventArgs e) + { + mPossibleSwitchTarget = e.ControlPoint.GetMetadata(); + // if not properly configured, ignore! + if (mPossibleSwitchTarget && !mPossibleSwitchTarget.Spline) + mPossibleSwitchTarget = null; + } + + //Start falling when reaching the start of new spline that is not a Follow-Up + public void UseFollowUpOrFall(CurvySplineMoveEventArgs e) + { + CurvySplineSegment controlPoint = e.ControlPoint; + if (controlPoint == e.Spline.FirstVisibleControlPoint && controlPoint.Connection && controlPoint.FollowUp == false) + { + float deltaY = controlPoint.transform.position.y - controlPoint.Connection.OtherControlPoints(controlPoint)[0].transform.position.y; + mMode = GuideMode.FreeFall; + fallingSpeed = 0; + OffsetRadius += Mathf.Abs(deltaY); + } + } + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_RunnerController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_RunnerController.cs.meta new file mode 100644 index 00000000..921eb147 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_RunnerController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 46b03da15a1df7c47a0f71cb6e6341b1 +timeCreated: 1436107240 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_SplineRefMetadata.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_SplineRefMetadata.cs new file mode 100644 index 00000000..44a547ff --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_SplineRefMetadata.cs @@ -0,0 +1,19 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E50_SplineRefMetadata : CurvyMetadataBase + { + public new CurvySpline Spline; + public CurvySplineSegment CP; + public string Options; + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_SplineRefMetadata.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_SplineRefMetadata.cs.meta new file mode 100644 index 00000000..59e9fa40 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E50_SplineRefMetadata.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e84c43cd1f981c6408996efed1303788 +timeCreated: 1436166714 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E51_InfiniteTrack.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E51_InfiniteTrack.cs new file mode 100644 index 00000000..d35fc1ba --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E51_InfiniteTrack.cs @@ -0,0 +1,242 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.Curvy.Shapes; +using FluffyUnderware.DevTools; +using UnityEngine.UI; + +namespace FluffyUnderware.Curvy.Examples +{ + + public class E51_InfiniteTrack : MonoBehaviour + { + public CurvySpline TrackSpline; // empty Spline object we create the path in + public CurvyController Controller; // controller to use + public Material RoadMaterial; // material for the extrusion + public Text TxtStats; // the UI text holding the statistics + + [Positive] + public float CurvationX = 10; // X-axis angle randomness + [Positive] + public float CurvationY = 10; // Y-axis angle randomness + [Positive] + public float CPStepSize = 20; // distance between CPs + [Positive] + public int HeadCP = 3; // CP's to build in front of extrusion + [Positive] + public int TailCP = 2; // CP's to keep behind extrusion + + [DevTools.Min(3)] + public int Sections = 6; // # of Extrusions to use + [DevTools.Min(1)] + public int SectionCPCount = 2; // # of CP's to use for a single extrusion + + + int mInitState = 0; + bool mUpdateSpline; + int mUpdateIn; + + CurvyGenerator[] mGenerators; + int mCurrentGen; + float lastSectionEndV; + Vector3 mDir; + + TimeMeasure timeSpline = new TimeMeasure(30); + TimeMeasure timeCG = new TimeMeasure(1); + + + void Start() + { + updateStats(); + } + + void FixedUpdate() + { + if (mInitState == 0) + StartCoroutine(nameof(setup)); + + if (mInitState == 2 && mUpdateSpline) + advanceTrack(); + + } + + // setup everything + IEnumerator setup() + { + mInitState = 1; + + mGenerators = new CurvyGenerator[Sections]; + + // Add the start CP to the spline + TrackSpline.InsertAfter(null, Vector3.zero, true); + mDir = Vector3.forward; + + int num = TailCP + HeadCP + Sections * SectionCPCount; + for (int i = 0; i < num; i++) + addTrackCP(); + + TrackSpline.Refresh(); + + + // build Curvy Generators + for (int i = 0; i < Sections; i++) + { + mGenerators[i] = buildGenerator(); + mGenerators[i].name = "Generator " + i; + } + // and wait until they're initialized + for (int i = 0; i < Sections; i++) + while (!mGenerators[i].IsInitialized) + yield return 0; + + // let all generators do their extrusion + for (int i = 0; i < Sections; i++) + updateSectionGenerator(mGenerators[i], i * SectionCPCount + TailCP, (i + 1) * SectionCPCount + TailCP); + + mInitState = 2; + mUpdateIn = SectionCPCount; + // finally place the controller + Controller.AbsolutePosition = TrackSpline.ControlPointsList[TailCP + 2].Distance; + } + + // build a generator + CurvyGenerator buildGenerator() + { + // Create the Curvy Generator + CurvyGenerator gen = CurvyGenerator.Create(); + gen.AutoRefresh = false; + // Create Modules + InputSplinePath path = gen.AddModule(); + InputSplineShape shape = gen.AddModule(); + BuildShapeExtrusion extrude = gen.AddModule(); + BuildVolumeMesh vol = gen.AddModule(); + CreateMesh msh = gen.AddModule(); + // Create Links between modules + path.OutputByName["Path"].LinkTo(extrude.InputByName["Path"]); + shape.OutputByName["Shape"].LinkTo(extrude.InputByName["Cross"]); + extrude.OutputByName["Volume"].LinkTo(vol.InputByName["Volume"]); + vol.OutputByName["VMesh"].LinkTo(msh.InputByName["VMesh"]); + // Set module properties + path.Spline = TrackSpline; + path.UseCache = true; + CSRectangle rectShape = shape.SetManagedShape(); + rectShape.Width = 20; + rectShape.Height = 2; + extrude.Optimize = false; +#pragma warning disable 618 + extrude.CrossHardEdges = true; +#pragma warning restore 618 + vol.Split = false; + vol.SetMaterial(0, RoadMaterial); + vol.MaterialSetttings[0].SwapUV = true; + + msh.Collider = CGColliderEnum.None; + return gen; + } + + // advance the track + void advanceTrack() + { + timeSpline.Start(); + + float pos = Controller.AbsolutePosition; + //remove oldest section's CP + for (int i = 0; i < SectionCPCount; i++) + { + pos -= TrackSpline.ControlPointsList[0].Length; // update controller's position, so the ship won't jump + TrackSpline.Delete(TrackSpline.ControlPointsList[0], true); + } + // add new section's CP + for (int i = 0; i < SectionCPCount; i++) + addTrackCP(); + // refresh the spline, so orientation will be auto-calculated + TrackSpline.Refresh(); + + // set the controller to the old position + Controller.AbsolutePosition = pos; + mUpdateSpline = false; + timeSpline.Stop(); + + advanceSections(); + + updateStats(); + } + + // update all CGs + void advanceSections() + { + // set oldest CG to render path for new section + CurvyGenerator cur = mGenerators[mCurrentGen++]; + int num = TrackSpline.ControlPointCount - HeadCP - 1; + updateSectionGenerator(cur, num - SectionCPCount, num); + + if (mCurrentGen == Sections) + mCurrentGen = 0; + } + + void updateStats() + { +#if UNITY_WEBGL + TxtStats.text = System.String.Empty; //time measurement seems not reliable on WebGL, so I prefered deactivating it. +#else + TxtStats.text = string.Format("Spline Update: {0:0.00} ms\nGenerator Update: {1:0.00} ms", timeSpline.AverageMS, timeCG.AverageMS); +#endif + } + + // set a CG to render only a portion of a spline + void updateSectionGenerator(CurvyGenerator gen, int startCP, int endCP) + { + // Set Track segment we want to use + InputSplinePath path = gen.FindModules(true)[0]; + + path.SetRange(TrackSpline.ControlPointsList[startCP], TrackSpline.ControlPointsList[endCP]); + + // Set UV-Offset to match + BuildVolumeMesh vol = gen.FindModules(false)[0]; + vol.MaterialSetttings[0].UVOffset.y = lastSectionEndV % 1; + timeCG.Start(); + gen.Refresh(); + timeCG.Stop(); + // fetch the ending V to be used by next section + CGVMesh vmesh = vol.OutVMesh.GetData(); + lastSectionEndV = vmesh.UVs.Array[vmesh.Count - 1].y; + } + + // while we travel past CP's, we update the track + public void Track_OnControlPointReached(CurvySplineMoveEventArgs e) + { + if (--mUpdateIn == 0) + { + mUpdateSpline = true; + mUpdateIn = SectionCPCount; + } + } + + // add more CP's, rotating path by random angles + void addTrackCP() + { + Vector3 p = TrackSpline.ControlPointsList[TrackSpline.ControlPointCount - 1].transform.localPosition; + Vector3 position = TrackSpline.transform.localToWorldMatrix.MultiplyPoint3x4(p + mDir * CPStepSize); + + float rndX = Random.value * CurvationX * DTUtility.RandomSign(); + float rndY = Random.value * CurvationY * DTUtility.RandomSign(); + mDir = Quaternion.Euler(rndX, rndY, 0) * mDir; + + CurvySplineSegment newControlPoint = TrackSpline.InsertAfter(null, position, true); + + //Set the last control point of each section as an Orientation Anchor, to avoid that Control Points added beyond this point modify the dynamic orientation of previous Control Points + if ((TrackSpline.ControlPointCount - 1 - TailCP) % SectionCPCount == 0) + newControlPoint.SerializedOrientationAnchor = true; + + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E51_InfiniteTrack.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E51_InfiniteTrack.cs.meta new file mode 100644 index 00000000..115505ae --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E51_InfiniteTrack.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 364607810a942f749bd512526921dc9b +timeCreated: 1448048155 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E97_PoolTestRunner.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E97_PoolTestRunner.cs new file mode 100644 index 00000000..f60f8f57 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E97_PoolTestRunner.cs @@ -0,0 +1,71 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using FluffyUnderware.Curvy.Components; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine.UI; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E97_PoolTestRunner : MonoBehaviour + { + public CurvySpline Spline; + public Text PoolCountInfo; + + void Start() + { + checkForSpline(); + } + + void Update() + { + + + PoolCountInfo.text = string.Format("Control Points in Pool: {0}", CurvyGlobalManager.Instance.ControlPointPool.Count); + } + + void checkForSpline() + { + if (Spline == null) + { + Spline = CurvySpline.Create(); + Camera.main.GetComponent().Add(Spline); + for (int i = 0; i < 4; i++) + AddCP(); + } + } + + public void AddCP() + { + checkForSpline(); + Spline.Add(Random.insideUnitCircle * 50); + Spline.Refresh(); + } + + public void DeleteCP() + { + if (Spline && Spline.ControlPointCount > 0) + { + int idx = Random.Range(0, Spline.ControlPointCount - 1); + Spline.Delete(Spline.ControlPointsList[idx], false); + } + } + + public void ClearSpline() + { + if (Spline) + Spline.Clear(); + } + + public void DeleteSpline() + { + if (Spline) + Spline.gameObject.Destroy(false, true); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E97_PoolTestRunner.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E97_PoolTestRunner.cs.meta new file mode 100644 index 00000000..e38bef79 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E97_PoolTestRunner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6cd0bfd0c7789df4fab3d6824797bd93 +timeCreated: 1447414132 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E98_CurvyCamController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E98_CurvyCamController.cs new file mode 100644 index 00000000..3e3c7b15 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E98_CurvyCamController.cs @@ -0,0 +1,53 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E98_CurvyCamController : SplineController + { + [Section("Curvy Cam")] + public float MinSpeed; + public float MaxSpeed; + public float Mass; + public float Down; + public float Up; + public float Fric = 0.9f; + + + protected override void OnEnable() + { + base.OnEnable(); + Speed = MinSpeed; + } + + protected override void Advance(float speed, float deltaTime) + { + base.Advance(speed, deltaTime); + // Get directional vector + Vector3 tan = GetTangent(RelativePosition); + float acc; + // accelerate when going down, deccelerate when going up + if (tan.y < 0) + acc = Down * tan.y * Fric; + else + acc = Up * -tan.y * Fric; + + // alter speed + Speed = Mathf.Clamp(Speed + Mass * acc * deltaTime, MinSpeed, MaxSpeed); + // stop at spline's end + if (RelativePosition == 1) + Speed = 0; + } + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E98_CurvyCamController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E98_CurvyCamController.cs.meta new file mode 100644 index 00000000..9000a43c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E98_CurvyCamController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84cf58c9d80039e4c88dc286c511ce1b +timeCreated: 1439806362 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceAPI.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceAPI.cs new file mode 100644 index 00000000..8c5b8342 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceAPI.cs @@ -0,0 +1,295 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections.Generic; +using System.Reflection; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E99_PerformanceAPI : MonoBehaviour + { + const int LOOPS = 20; + List mTests = new List(); + List mTestResults = new List(); + + CurvyInterpolation mInterpolation=CurvyInterpolation.CatmullRom; + CurvyOrientation mOrientation = CurvyOrientation.Dynamic; + int mCacheSize = 50; + int mControlPointCount = 20; + int mTotalSplineLength = 100; + bool mUseCache; + bool mUseMultiThreads=true; + + int mCurrentTest = -1; + bool mExecuting; + TimeMeasure Timer = new TimeMeasure(LOOPS); + MethodInfo mGUIMethod; + MethodInfo mRunMethod; + + void Awake() + { + mTests.Add("Interpolate"); + mTests.Add("Refresh"); + } + + void OnGUI() + { + GUILayout.BeginVertical(GUI.skin.box); + GUILayout.Label("Curvy offers various options to fine-tune performance vs. precision balance:"); + // Interpolation + GUILayout.BeginHorizontal(); + GUILayout.Label("Interpolation: "); + if (GUILayout.Toggle(mInterpolation == CurvyInterpolation.Linear, "Linear", GUI.skin.button)) + mInterpolation=CurvyInterpolation.Linear; + if (GUILayout.Toggle(mInterpolation == CurvyInterpolation.Bezier, "Bezier", GUI.skin.button)) + mInterpolation=CurvyInterpolation.Bezier; + if (GUILayout.Toggle(mInterpolation == CurvyInterpolation.CatmullRom, "CatmullRom", GUI.skin.button)) + mInterpolation = CurvyInterpolation.CatmullRom; + if (GUILayout.Toggle(mInterpolation == CurvyInterpolation.TCB, "TCB", GUI.skin.button)) + mInterpolation = CurvyInterpolation.TCB; + GUILayout.EndHorizontal(); + // Orientation + GUILayout.BeginHorizontal(); + GUILayout.Label("Orientation: "); + if (GUILayout.Toggle(mOrientation == CurvyOrientation.None, "None", GUI.skin.button)) + mOrientation = CurvyOrientation.None; + if (GUILayout.Toggle(mOrientation == CurvyOrientation.Static, "Static", GUI.skin.button)) + mOrientation = CurvyOrientation.Static; + if (GUILayout.Toggle(mOrientation == CurvyOrientation.Dynamic, "Dynamic", GUI.skin.button)) + mOrientation = CurvyOrientation.Dynamic; + GUILayout.EndHorizontal(); + // CP-Count + GUILayout.BeginHorizontal(); + GUILayout.Label("Control Points (max): " + mControlPointCount.ToString()); + mControlPointCount = (int)GUILayout.HorizontalSlider(mControlPointCount, 2, 1000); + GUILayout.EndHorizontal(); + // Length + GUILayout.BeginHorizontal(); + GUILayout.Label("Total spline length: " + mTotalSplineLength.ToString()); + mTotalSplineLength = (int)GUILayout.HorizontalSlider(mTotalSplineLength, 5, 10000); + GUILayout.EndHorizontal(); + // Cache + GUILayout.BeginHorizontal(); + GUILayout.Label("Cache Density: "+mCacheSize.ToString()); + mCacheSize=(int)GUILayout.HorizontalSlider(mCacheSize, 1, 100); + GUILayout.EndHorizontal(); + mUseCache=GUILayout.Toggle(mUseCache, "Use Cache (where applicable)"); + mUseMultiThreads = GUILayout.Toggle(mUseMultiThreads, "Use Multiple Threads (where applicable)"); + GUILayout.Label("Select Test:"); + + int sel=GUILayout.SelectionGrid(Mathf.Max(0,mCurrentTest), mTests.ToArray(),4); + if (sel != mCurrentTest) + { + mCurrentTest = sel; + Timer.Clear(); + mTestResults.Clear(); + + mGUIMethod = GetType().MethodByName("GUI_" + mTests[mCurrentTest], false, true); + mRunMethod = GetType().MethodByName("Test_" + mTests[mCurrentTest], false, true); + } + GUILayout.Space(5); + if (mGUIMethod != null) + mGUIMethod.Invoke(this, null); + GUI.enabled = !mExecuting && mRunMethod!=null; + string label = (mExecuting) ? "Please wait..." : "Run (" + LOOPS + " times)"; + if (GUILayout.Button(label)) + { + mExecuting = true; + Timer.Clear(); + mTestResults.Clear(); + Invoke(nameof(runTest), .5f); + } + GUI.enabled = true; + if (Timer.Count > 0) + { + foreach (string s in mTestResults) + GUILayout.Label(s); + GUILayout.Label(string.Format("Average (ms): {0:0.0000}", Timer.AverageMS)); + GUILayout.Label(string.Format("Minimum (ms): {0:0.0000}", Timer.MinimumMS)); + GUILayout.Label(string.Format("Maximum (ms): {0:0.0000}", Timer.MaximumMS)); + } + + GUILayout.EndVertical(); + } + + + +#region ### Tests ### + + bool mInterpolate_UseDistance; + void GUI_Interpolate() + { + GUILayout.Label("Interpolates position"); + mInterpolate_UseDistance = GUILayout.Toggle(mInterpolate_UseDistance, "By Distance"); + } + + void Test_Interpolate() + { + CurvySpline spl = getSpline(); + addRandomCP(ref spl, mControlPointCount,mTotalSplineLength); + mTestResults.Add("Cache Points: " + spl.CacheSize); + mTestResults.Add(string.Format("Cache Point Distance: {0:0.000}", mTotalSplineLength / (float)spl.CacheSize)); + + Vector3 v=Vector3.zero; + if (mInterpolate_UseDistance) + { + for (int i = 0; i < LOOPS; i++) + { + float d = Random.Range(0, spl.Length); + if (mUseCache) + { + Timer.Start(); + v = spl.InterpolateByDistanceFast(d); + Timer.Stop(); + } + else + { + Timer.Start(); + v = spl.InterpolateByDistance(d); + Timer.Stop(); + } + } + } + else + { + for (int i = 0; i < LOOPS; i++) + { + float f = Random.Range(0, 1); + if (mUseCache) + { + Timer.Start(); + v = spl.InterpolateFast(f); + Timer.Stop(); + } + else + { + Timer.Start(); + v = spl.Interpolate(f); + Timer.Stop(); + } + } + } + Destroy(spl.gameObject); + // Prevent "unused variable" compiler warning + v.Set(0, 0, 0); + } + + int mRefresh_Mode; + void GUI_Refresh() + { + GUILayout.Label("Refresh Spline or Single segment!"); + GUILayout.BeginHorizontal(); + GUILayout.Label("Mode:"); + mRefresh_Mode = GUILayout.SelectionGrid(mRefresh_Mode, new string[] { "All","Single random segment"},2); + GUILayout.EndHorizontal(); + } + + void Work() + { + Vector3 v; + for (int i = 0; i < 1000; i++) + { + v = new Vector3(1, 2, 3); + v.Normalize(); + } + } + + void work() + { + for (int x = 0; x < 1000; x++) + { + Vector3 v = new Vector3(1, 2, 3); + v.Normalize(); + } + } + + void Test_Refresh() + { + + CurvySpline spl = getSpline(); + addRandomCP(ref spl, mControlPointCount,mTotalSplineLength); + mTestResults.Add("Cache Points: " + spl.CacheSize); + mTestResults.Add(string.Format("Cache Point Distance: {0:0.000}",mTotalSplineLength / (float)spl.CacheSize)); + + for (int i = 0; i < LOOPS; i++) + { + int idx = Random.Range(0, spl.Count-1); + if (mRefresh_Mode==0) + { + Timer.Start(); + spl.SetDirtyAll(SplineDirtyingType.Everything, true); + spl.Refresh(); + Timer.Stop(); + //Debug.Log(Timer.LastMS); + } + else + { + Timer.Start(); + spl.SetDirty(spl[idx], SplineDirtyingType.Everything); + spl.Refresh(); + Timer.Stop(); + } + } + Destroy(spl.gameObject); + } + + +#endregion + +#region ### Helpers ### + + CurvySpline getSpline() + { + CurvySpline spl = CurvySpline.Create(); + spl.Interpolation = mInterpolation; + spl.Orientation = mOrientation; + spl.CacheDensity = mCacheSize; + spl.UseThreading = mUseMultiThreads; + spl.Refresh(); + return spl; + } + + void addRandomCP(ref CurvySpline spline, int count, int totalLength) + { + Vector3[] pos=new Vector3[count]; + float segLength = totalLength / (float)(count - 1); + pos[0] = Vector3.zero; + for (int i = 1; i < count; i++) + { + int dir = Random.Range(0, 2); + int sign=Random.Range(0f,1f)>0.5f ? 1 : -1; + switch (dir) + { + case 0: + pos[i] = pos[i - 1] + new Vector3(segLength * sign, 0, 0); + break; + case 1: + pos[i] = pos[i - 1] + new Vector3(0,segLength * sign,0); + break; + case 2: + pos[i] = pos[i - 1] + new Vector3(0,0,segLength * sign); + break; + } + } + + spline.Add(pos); + spline.Refresh(); + } + + void runTest() + { + mRunMethod.Invoke(this, null); + mExecuting = false; + } + +#endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceAPI.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceAPI.cs.meta new file mode 100644 index 00000000..50f45085 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceAPI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 917be1f89abbdbd4ca06657c465e2be6 +timeCreated: 1425479634 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceDynamicSpline.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceDynamicSpline.cs new file mode 100644 index 00000000..3f7ff9cf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceDynamicSpline.cs @@ -0,0 +1,112 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy.Generator; + +namespace FluffyUnderware.Curvy.Examples +{ + public class E99_PerformanceDynamicSpline : MonoBehaviour + { + + CurvySpline mSpline; + + public CurvyGenerator Generator; + [Positive] + public int UpdateInterval = 200; + [RangeEx(2, 2000)] + public int CPCount = 100; + [Positive] + public float Radius = 20; + + public bool AlwaysClear; + public bool UpdateCG; + + float mAngleStep; + float mCurrentAngle; + float mLastUpdateTime; + + TimeMeasure ExecTimes = new TimeMeasure(10); + + void Awake() + { + mSpline = GetComponent(); + } + + // Use this for initialization + void Start() + { + for (int i = 0; i < CPCount; i++) + addCP(); + + mSpline.Refresh(); + mLastUpdateTime = Time.timeSinceLevelLoad + 0.1f; + } + + // Update is called once per frame + void Update() + { + if (Time.timeSinceLevelLoad - UpdateInterval * 0.001f > mLastUpdateTime) + { + mLastUpdateTime = Time.timeSinceLevelLoad; + ExecTimes.Start(); + if (AlwaysClear) + mSpline.Clear(); + // Remove old CP + while (mSpline.ControlPointCount > CPCount) + mSpline.Delete(mSpline.ControlPointsList[0], true); + // Add new CP(s) + while (mSpline.ControlPointCount <= CPCount) + addCP(); + mSpline.Refresh(); + ExecTimes.Stop(); + } + } + + void addCP() + { + mAngleStep = Mathf.PI * 2 / (CPCount + CPCount * 0.25f); + Vector3 cpPosition = transform.localToWorldMatrix.MultiplyPoint3x4( + new Vector3( + Mathf.Sin(mCurrentAngle) * Radius, + Mathf.Cos(mCurrentAngle) * Radius, + 0)); + mSpline.InsertAfter(null, cpPosition, true); + mCurrentAngle = Mathf.Repeat(mCurrentAngle + mAngleStep, Mathf.PI * 2); + } + + void OnGUI() + { + GUILayout.BeginVertical(GUI.skin.box); + GUILayout.BeginHorizontal(); + GUILayout.Label("Interval", GUILayout.Width(130)); + UpdateInterval = (int)GUILayout.HorizontalSlider(UpdateInterval, 0, 5000, GUILayout.Width(200)); + GUILayout.Label(UpdateInterval.ToString()); + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + GUILayout.Label("# of Control Points", GUILayout.Width(130)); + CPCount = (int)GUILayout.HorizontalSlider(CPCount, 2, 200, GUILayout.Width(200)); + GUILayout.Label(CPCount.ToString()); + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + GUILayout.Label("Radius", GUILayout.Width(130)); + Radius = GUILayout.HorizontalSlider(Radius, 10, 100, GUILayout.Width(200)); + GUILayout.Label(Radius.ToString("0.00")); + GUILayout.EndHorizontal(); + AlwaysClear = GUILayout.Toggle(AlwaysClear, "Always clear"); + bool state = UpdateCG; + UpdateCG = GUILayout.Toggle(UpdateCG, "Use Curvy Generator"); + if (state != UpdateCG) + Generator.gameObject.SetActive(UpdateCG); + GUILayout.Label("Avg. Execution Time (ms): " + ExecTimes.AverageMS.ToString("0.000")); + GUILayout.EndVertical(); + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceDynamicSpline.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceDynamicSpline.cs.meta new file mode 100644 index 00000000..f3163b00 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/E99_PerformanceDynamicSpline.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9dc588f20026fce40a420d34e8c9858e +timeCreated: 1432710307 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/SceneSwitcher.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/SceneSwitcher.cs new file mode 100644 index 00000000..bbff8db2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/SceneSwitcher.cs @@ -0,0 +1,127 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.UI; + +namespace FluffyUnderware.Curvy.Examples +{ + public class SceneSwitcher : MonoBehaviour + { + public Text Text; + public Dropdown DropDown; + + private void Start() + { + List items = getScenes(); + if (items.Count == 0 || CurrentLevel < 0) + Text.text = "Add scenes to the build settings to enable the scene switcher!"; + else + { + Text.text = "Scene selector"; + DropDown.ClearOptions(); + DropDown.AddOptions(items); + } + DropDown.value = CurrentLevel; + DropDown.onValueChanged.AddListener(OnValueChanged); + } + + private int CurrentLevel + { + get + { +#if UNITY_5_0 || UNITY_5_1 || UNITY_5_2 + return Application.loadedLevel; +#else + return SceneManager.GetActiveScene().buildIndex; +#endif + } + set + { + if (CurrentLevel != value) + { +#if UNITY_5_0 || UNITY_5_1 || UNITY_5_2 + Application.LoadLevel(value); +#else + SceneManager.LoadScene(value, LoadSceneMode.Single); +#endif + } + } + } + +#if !UNITY_EDITOR + /// + /// I use this to show names more understandable to people unfamiliar with Curvy. I use this only outside of the Unity's editor, to be used by the demo build. + /// + Dictionary scenesAlternativeNames = new Dictionary{ + { "00_SplineController", "Move object: Follow a static spline" }, + { "04_PaintSpline", "Move object: Follow a dynamic spline" }, + { "20_CGPaths", "Move object: Follow a blended spline" }, + { "21_CGExtrusion", "Move object: Follow a Curvy generated volume" }, + + { "06_Orientation", "Basics: Store orientation data in a spline" }, + { "05_NearestPoint", "Basics: Find nearest point on spline" }, + { "03_Connections", "Basics: Connections and events" }, + + { "01_MetaData", "Advanced: Store custom data in a spline" }, + { "22_CGClonePrefabs", "Advanced: Clone objects along a spline" }, + { "26_CGExtrusionExtendedUV", "Advanced: Extended UV functionality" }, + { "27_CGVariableExtrusion", "Advanced: Variable shape extrusion" }, + { "24_CGConformPath", "Advanced: Project a Spline onto a mesh" }, + + { "10_RBSplineController", "Physics: Interaction with a spline" }, + { "11_Rigidbody", "Physics: Interaction with a Curvy generated mesh" }, + + { "02_GUI", "Splines and UI" }, + + { "29_CGDeformMesh_BarbedWire", "Mesh deformation: Barbed wire" }, + { "29bis_CGDeformMesh_Railway", "Mesh deformation: Railway" }, + + { "12_Train", "Train: Railway junction" }, + { "13_TrainMultiTrackDrifting", "Train: Multi tracks drifting!" }, + { "25_CGExtrusionAdvanced", "Train: Advanced scene" }, + + { "28_AsteroidBelt", "Asteroid Belt" }, + { "23_CGTube", "Space tube" }, + { "50_EndlessRunner", "Space Runner" }, + { "51_InfiniteTrack", "Dynamically generated infinite track" }, + }; +#endif + + private List getScenes() + { + int sceneCount = SceneManager.sceneCountInBuildSettings; + List result = new List(sceneCount); + for (int i = 0; i < sceneCount; i++) + { + string[] path = SceneUtility.GetScenePathByBuildIndex(i).Split('/'); + string sceneName = path[path.Length - 1].TrimEnd(".unity"); + string itemName; +#if !UNITY_EDITOR + if (scenesAlternativeNames.ContainsKey(sceneName)) + itemName = scenesAlternativeNames[sceneName]; + else + itemName = sceneName; +#else + itemName = sceneName; +#endif + result.Add(itemName); + } + return result; + } + + + private void OnValueChanged(int value) + { + CurrentLevel = DropDown.value; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/SceneSwitcher.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/SceneSwitcher.cs.meta new file mode 100644 index 00000000..51eca5b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/Scripts/SceneSwitcher.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c5af19fa201c5ff499f9c7924cb7bc4d +timeCreated: 1453231159 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources.meta new file mode 100644 index 00000000..7369b348 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 34f1aec76af0a9544bee360ca42b78f1 +folderAsset: yes +timeCreated: 1437476977 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/24_Terrain.asset b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/24_Terrain.asset new file mode 100644 index 00000000..69d3815b Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/24_Terrain.asset differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/24_Terrain.asset.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/24_Terrain.asset.meta new file mode 100644 index 00000000..eed75b36 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/24_Terrain.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b25a33df98cfd91449b8927cb50edd5f +timeCreated: 1602886063 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 15600000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations.meta new file mode 100644 index 00000000..b04b21ac --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9a0306f71518f6a4c8cdadaf08690a21 +folderAsset: yes +timeCreated: 1527115657 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button0.anim b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button0.anim new file mode 100644 index 00000000..295fac85 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button0.anim @@ -0,0 +1,109 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: 02_GUI_Button0 + serializedVersion: 6 + m_Legacy: 1 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 800 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 2 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 800 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_GenerateMotionCurves: 0 + m_Events: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button0.anim.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button0.anim.meta new file mode 100644 index 00000000..48733bfb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button0.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bec413d19bf329c4a9b179c1f58f724d +timeCreated: 1527115579 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button1.anim b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button1.anim new file mode 100644 index 00000000..ce4848c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button1.anim @@ -0,0 +1,109 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: 02_GUI_Button1 + serializedVersion: 6 + m_Legacy: 1 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 35 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 825 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 35 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 2 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 35 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 825 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 35 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_GenerateMotionCurves: 0 + m_Events: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button1.anim.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button1.anim.meta new file mode 100644 index 00000000..90621af3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button1.anim.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 794f4a2afaadb6248948fbe2a9fd18a9 +timeCreated: 1527168143 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button2.anim b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button2.anim new file mode 100644 index 00000000..351704a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button2.anim @@ -0,0 +1,109 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: 02_GUI_Button2 + serializedVersion: 6 + m_Legacy: 1 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 70 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 870 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 70 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 2 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 70 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 1 + value: 870 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 70 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_GenerateMotionCurves: 0 + m_Events: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button2.anim.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button2.anim.meta new file mode 100644 index 00000000..a4a1ab8f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Button2.anim.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: da2f2d7521e0c0e42b3d4947bfe76503 +timeCreated: 1527168143 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Text.anim b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Text.anim new file mode 100644 index 00000000..52f17f5c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Text.anim @@ -0,0 +1,109 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: 02_GUI_Text + serializedVersion: 6 + m_Legacy: 1 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 150 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 950 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 4 + value: 150 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: f3ff25939a248e146b6f134422bd0a55, type: 3} + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 4 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 150 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 2 + value: 950 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + - serializedVersion: 2 + time: 4 + value: 150 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_Position + path: + classID: 114 + script: {fileID: 11500000, guid: f3ff25939a248e146b6f134422bd0a55, type: 3} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_GenerateMotionCurves: 0 + m_Events: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Text.anim.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Text.anim.meta new file mode 100644 index 00000000..756cd200 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/02_GUI_Text.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d780c3f460f81f4dad3ed74dffa6b68 +timeCreated: 1527115533 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/29bis_CP02.anim b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/29bis_CP02.anim new file mode 100644 index 00000000..bd952ca5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/29bis_CP02.anim @@ -0,0 +1,205 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 29bis_CP02 + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: -6.203} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1.5 + value: {x: 0, y: 0, z: -26.96} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 3 + value: {x: 0, y: 0, z: -6.203} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 4 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 3 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -6.203 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1.5 + value: -26.96 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 3 + value: -6.203 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/29bis_CP02.anim.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/29bis_CP02.anim.meta new file mode 100644 index 00000000..79629f69 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/29bis_CP02.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43fd48b63e0f1a14b9b51226f65c5ae9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/CP0002.controller b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/CP0002.controller new file mode 100644 index 00000000..98986eaf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/CP0002.controller @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-7506237602342817975 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 29bis_CP02 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 43fd48b63e0f1a14b9b51226f65c5ae9, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CP0002 + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 1951001911584032336} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1107 &1951001911584032336 +AnimatorStateMachine: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -7506237602342817975} + m_Position: {x: 200, y: 0, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -7506237602342817975} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/CP0002.controller.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/CP0002.controller.meta new file mode 100644 index 00000000..fe96ec14 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Animations/CP0002.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c462f0a5a9f7e684286ad2d178e3df06 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials.meta new file mode 100644 index 00000000..f20e1790 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 458fadbeff38b434f826d8f8735eef97 +folderAsset: yes +timeCreated: 1433840405 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Black.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Black.mat new file mode 100644 index 00000000..9832b083 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Black.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Black + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 2 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: a093beaa4d9aa264bbd9f761f563ec3f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 2800000, guid: a093beaa4d9aa264bbd9f761f563ec3f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: .533333361, b: 1, a: 1} + data: + first: + name: _Color + second: {r: 0, g: .533999979, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Black.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Black.mat.meta new file mode 100644 index 00000000..95fa5588 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Black.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3d3fc405aabcbb48a873e5fcd3e1ab6 +timeCreated: 1439473403 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Blue.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Blue.mat new file mode 100644 index 00000000..10eeb1dd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Blue.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Blue + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .0434688702, g: .232433453, b: .492647052, a: 1} + data: + first: + name: _SpecColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Blue.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Blue.mat.meta new file mode 100644 index 00000000..453810b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Blue.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa90813a05e58e64582140e7b76336c1 +timeCreated: 1436426654 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Checkerboard.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Checkerboard.mat new file mode 100644 index 00000000..916ee2b9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Checkerboard.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Checkerboard + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 5274f5b06558476438af1f41ba3b0bed, type: 3} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .602941155, g: .589640975, b: .589640975, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Checkerboard.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Checkerboard.mat.meta new file mode 100644 index 00000000..bc387c7e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Checkerboard.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bcffcab81ca65fe4db75d1f4bfda9af1 +timeCreated: 1436100089 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Follower.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Follower.mat new file mode 100644 index 00000000..730f838c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Follower.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Follower + m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: + second: 1 + - first: + name: _InvFade + second: 1 + m_Colors: + - first: + name: + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _TintColor + second: {r: 1, g: 0.44313726, b: 0.25882354, a: 0.45490196} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Follower.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Follower.mat.meta new file mode 100644 index 00000000..1dc24273 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Follower.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10a05de62c8737647baf13ce9ffa61b8 +timeCreated: 1441858030 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/FollowerHalo.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/FollowerHalo.mat new file mode 100644 index 00000000..d470d749 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/FollowerHalo.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FollowerHalo + m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: + second: 1 + - first: + name: _InvFade + second: 1 + m_Colors: + - first: + name: + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _TintColor + second: {r: 0.64705884, g: 0.43137255, b: 0.3529412, a: 0.10980392} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/FollowerHalo.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/FollowerHalo.mat.meta new file mode 100644 index 00000000..af36ba9a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/FollowerHalo.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9bf8420b0b03d774aa5191b894c1d5fc +timeCreated: 1441899184 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Glow.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Glow.mat new file mode 100644 index 00000000..5542b1dc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Glow.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Glow + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 2.09558821, g: 1.49326611, b: .41603592, a: 1} + data: + first: + name: _Color + second: {r: 1, g: .558620691, b: 0, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Glow.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Glow.mat.meta new file mode 100644 index 00000000..61af9e81 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Glow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d633bd8737c7424d9b669d9741f499b +timeCreated: 1439473479 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Grass.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Grass.mat new file mode 100644 index 00000000..2b48e7e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Grass.mat @@ -0,0 +1,146 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Grass + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: dbba557d7e8d04140b73dc23ba840be3, type: 3} + m_Scale: {x: 3, y: 3} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 2800000, guid: f834f6426a3032242a1679b53d199b34, type: 3} + m_Scale: {x: 3, y: 3} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Shininess + second: .078125 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .5, g: .5, b: .5, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Grass.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Grass.mat.meta new file mode 100644 index 00000000..66d475e7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Grass.mat.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 059cceb0ba6e50741bfe6ec2c755d5f4 +labels: +- Grass +- Ground +- Nature +- Pattern +- Terrain +- Clover +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Green.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Green.mat new file mode 100644 index 00000000..abd6b372 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Green.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Green + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .191209272, g: .507352948, b: .14922145, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Green.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Green.mat.meta new file mode 100644 index 00000000..71f7d41d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Green.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 565ef250fc41ce145a81dd01a16e3db6 +timeCreated: 1436426661 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleAfterburner.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleAfterburner.mat new file mode 100644 index 00000000..1711a99b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleAfterburner.mat @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ParticleAfterburner + m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 10300, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _InvFade + second: 1.26696432 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _TintColor + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _EmisColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleAfterburner.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleAfterburner.mat.meta new file mode 100644 index 00000000..580401ce --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleAfterburner.mat.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 33574fa1b36c9244ebeedb7e591ed39b +NativeFormatImporter: + userData: + assetBundleName: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleExplosion.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleExplosion.mat new file mode 100644 index 00000000..dbf3bcaf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleExplosion.mat @@ -0,0 +1,142 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ParticleExplosion + m_Shader: {fileID: 202, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 10300, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _InvFade + second: 1 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleExplosion.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleExplosion.mat.meta new file mode 100644 index 00000000..dc435ff2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/ParticleExplosion.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b98c629cc06985046861231728d21687 +timeCreated: 1441901148 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Planet.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Planet.mat new file mode 100644 index 00000000..c57cf0f6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Planet.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Planet + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _GLOSSYREFLECTIONS_OFF _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A _SPECULARHIGHLIGHTS_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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: 2800000, guid: 809351a75d90d354d9c1ea7f0097c4a1, type: 3} + 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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 1 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Planet.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Planet.mat.meta new file mode 100644 index 00000000..21f58ea9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Planet.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de116dccf1b16c24daaf876b841affcd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Player.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Player.mat new file mode 100644 index 00000000..4a6b09fc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Player.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Player + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .29411763, g: .44503054, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Player.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Player.mat.meta new file mode 100644 index 00000000..bc509308 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Player.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59ecc94f7dd0a5840ada5f40c954b5b2 +timeCreated: 1439816695 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Pole.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Pole.mat new file mode 100644 index 00000000..23da043c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Pole.mat @@ -0,0 +1,157 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Pole + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _EmissionScaleUI + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 0} + data: + first: + name: _Color + second: {r: .230320066, g: .266674638, b: .441176474, a: 1} + data: + first: + name: _SpecColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 1} + data: + first: + name: _EmissionColorUI + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Pole.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Pole.mat.meta new file mode 100644 index 00000000..ccf00f46 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/Pole.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 033dc10817dc0b34eaf876897c62889e +timeCreated: 1433842183 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock.meta new file mode 100644 index 00000000..138b59d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2982f8fedec8bf4b98d875e24121feb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/myPlanks4c.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/myPlanks4c.mat new file mode 100644 index 00000000..3d49f974 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/myPlanks4c.mat @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: myPlanks4c + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: a12befa84f560b5488bd1b9731610068, type: 3} + 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: 0.91, y: 0.16} + m_Offset: {x: 0.05, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 6924e1076f80fb9458e731ae5a49911f, type: 3} + m_Scale: {x: 0.91, y: 0.16} + m_Offset: {x: 0.05, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: d82ffb41987a66e4a96b6d3ee0fb0c56, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 2800000, guid: 170b004975ff17c46a61cc9cba9fbe81, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.176 + - _GlossyReflections: 1 + - _Metallic: 0.192 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.0106 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.7941176, g: 0.7012512, b: 0.4437716, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/myPlanks4c.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/myPlanks4c.mat.meta new file mode 100644 index 00000000..88b64c3e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/myPlanks4c.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de34ef223168a5346b2bf29acbab9b95 +timeCreated: 1474775785 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/shpala.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/shpala.mat new file mode 100644 index 00000000..de50cd5c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/shpala.mat @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: shpala + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: b0cc8db2819505e46a3995cedf1fa743, type: 3} + 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: 2800000, guid: 6d3b40e370f40984981bcf57c5f32907, type: 3} + 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} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.028 + - _GlossyReflections: 1 + - _Metallic: 0.02 + - _Mode: 0 + - _OcclusionStrength: 0 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/shpala.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/shpala.mat.meta new file mode 100644 index 00000000..59ee7a96 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/RailBlock/shpala.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2b639ca387b3c0e439013a4b86cb24ff +timeCreated: 1499996234 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate.meta new file mode 100644 index 00000000..63edc665 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c6048656f58ab7e4fad07b4c09114124 +folderAsset: yes +timeCreated: 1524001138 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005.meta new file mode 100644 index 00000000..1cfbe7e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fa80cf856652ba24d890dd9d0413d840 +folderAsset: yes +timeCreated: 1524001138 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005.mat new file mode 100644 index 00000000..f5e32754 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: metal_plate_005 + m_Shader: {fileID: 45, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _NORMALMAP _SPECGLOSSMAP + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 7e60779421039db40a3a9c8a3b7b9b30, type: 3} + 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: 2800000, guid: 0fa81c5be3a50f648905bca8ba732f4a, type: 3} + 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: 2800000, guid: f3942e22bb4475445ae6257f12d7a338, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 2800000, guid: 890adfad6ee43264c948ba19f38f223b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005.mat.meta new file mode 100644 index 00000000..4c3afc12 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6618069855ac9541b01ac06ce4b5ed5 +timeCreated: 1524001285 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Diffuse.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Diffuse.png new file mode 100644 index 00000000..4d21eb92 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Diffuse.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Diffuse.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Diffuse.png.meta new file mode 100644 index 00000000..911182f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Diffuse.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: 0fa81c5be3a50f648905bca8ba732f4a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Normal.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Normal.png new file mode 100644 index 00000000..b90b05a4 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Normal.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Normal.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Normal.png.meta new file mode 100644 index 00000000..1a1a727d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Normal.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: 7e60779421039db40a3a9c8a3b7b9b30 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Specular.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Specular.png new file mode 100644 index 00000000..844c7633 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Specular.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Specular.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Specular.png.meta new file mode 100644 index 00000000..b6526fd4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDMetalPlate/metal_plate_005/metal_plate_005_Specular.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: 890adfad6ee43264c948ba19f38f223b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad.meta new file mode 100644 index 00000000..6e2459a7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 49cc42a24ed581b4dad40e4c009de8b1 +folderAsset: yes +timeCreated: 1524001326 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road.meta new file mode 100644 index 00000000..df601dfc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 06762df8d5570414fafa3e291bbf9814 +folderAsset: yes +timeCreated: 1524001326 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road.mat new file mode 100644 index 00000000..4cb83028 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road.mat @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Road + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _NORMALMAP + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: b88a6d706259b9e44965cd29b25997db, type: 3} + 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: 2800000, guid: 300d361370d103943a1736801f599017, type: 3} + 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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EmissionScaleUI: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColorUI: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road.mat.meta new file mode 100644 index 00000000..590bc9f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5fffa843b7891b94a9210f2c6e7c6fcc +timeCreated: 1524001326 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Diffuse.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Diffuse.png new file mode 100644 index 00000000..bca11a38 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Diffuse.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Diffuse.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Diffuse.png.meta new file mode 100644 index 00000000..ed07bfd3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Diffuse.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: 300d361370d103943a1736801f599017 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Normal.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Normal.png new file mode 100644 index 00000000..2cc6449c Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Normal.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Normal.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Normal.png.meta new file mode 100644 index 00000000..7eb525ac --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDRoad/Road/Road_Normal.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: b88a6d706259b9e44965cd29b25997db +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks.meta new file mode 100644 index 00000000..d4dbcbcc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9cd46141f20bd4642b8b36eb11477d64 +folderAsset: yes +timeCreated: 1524001331 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01.meta new file mode 100644 index 00000000..4409168e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bbf9cab8020a64c4c91625127dec82e4 +folderAsset: yes +timeCreated: 1524001331 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01.mat new file mode 100644 index 00000000..b4aa4ae0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01.mat @@ -0,0 +1,88 @@ +%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: Wood_Planks_01 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHABLEND_ON + - _EMISSION + - _NORMALMAP + m_InvalidKeywords: [] + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 6b2714ebb9511674e9ae165735471e6a, type: 3} + 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: 2800000, guid: 131df6b69ff4c1946bec8f33cdc25811, type: 3} + 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} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 2 + - _OcclusionStrength: 1 + - _Parallax: 0.0054 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01.mat.meta new file mode 100644 index 00000000..12bec6d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53f8c8b79a8c4374db97e82e5a35b4af +timeCreated: 1524001331 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Diffuse.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Diffuse.png new file mode 100644 index 00000000..7a941f24 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Diffuse.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Diffuse.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Diffuse.png.meta new file mode 100644 index 00000000..c90ac275 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Diffuse.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: 131df6b69ff4c1946bec8f33cdc25811 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Normal.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Normal.png new file mode 100644 index 00000000..d366566d Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Normal.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Normal.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Normal.png.meta new file mode 100644 index 00000000..94e85c0c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Materials/SDWoodPlanks/Wood_Planks_01/Wood_Planks_01_Normal.png.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: 6b2714ebb9511674e9ae165735471e6a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 1 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects.meta new file mode 100644 index 00000000..48b1870f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 405dbc14d15eb0a47ac664820417cd32 +folderAsset: yes +timeCreated: 1441855499 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid.meta new file mode 100644 index 00000000..c3599c6a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfde62029ee61254a82dbbc416995fe9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.fbx new file mode 100644 index 00000000..762d3f1a Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.fbx.meta new file mode 100644 index 00000000..eb2feb34 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.fbx.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: 1b6e00e79bdc23d4888bfb8e5613ab1c +timeCreated: 1489097844 +licenseType: Store +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Cube + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.mat new file mode 100644 index 00000000..175b8a42 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Asteroid + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 12c40864f9ef9974592868faef1d76c5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 2800000, guid: 814b46fa143c86341880c4fa17056198, type: 3} + m_Scale: {x: 20, y: 30} + 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: 2800000, guid: 4c848416276029b48981103904180d05, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 5, y: 5} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: ddce39766e2a9ce48a69c914a4a29487, type: 3} + m_Scale: {x: 5, y: 5} + 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} + m_Floats: + - _BumpScale: 0.5 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 0.3 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0 + - _GlossyReflections: 1 + - _Metallic: 0.2 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.mat.meta new file mode 100644 index 00000000..75c07d29 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Asteroid/Asteroid.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44f9d629006bb76409d3626dd82797c0 +timeCreated: 1489020271 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Barbed Wire.obj b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Barbed Wire.obj new file mode 100644 index 00000000..a6569a8f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Barbed Wire.obj @@ -0,0 +1,31815 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib Barbed Wire.mtl +v -2.348412 -15.943305 76.604204 +v 6.166028 -16.020197 79.790985 +v -2.353553 -15.035535 76.639843 +v 6.160887 -15.112426 79.826624 +v 0.833740 -14.683490 68.132528 +v 9.348180 -14.760382 71.319309 +v 0.838881 -15.591260 68.096889 +v 9.353321 -15.668152 71.283670 +v 0.844503 -15.972139 77.799247 +v 0.839362 -15.064369 77.834886 +v 4.026655 -14.712324 69.327571 +v 4.031796 -15.620095 69.291932 +v 2.973113 -15.991362 78.595942 +v 6.160406 -15.639318 70.088627 +v 6.155265 -14.731547 70.124266 +v 2.967972 -15.083592 78.631581 +v -0.361495 -14.815507 71.322771 +v 2.831420 -14.844341 72.517814 +v 4.960030 -14.863564 73.314509 +v 8.152945 -14.892398 74.509552 +v 8.158086 -15.800169 74.473913 +v 4.965171 -15.771334 73.278870 +v 2.836561 -15.752111 72.482175 +v -0.356354 -15.723277 71.287132 +v -1.158318 -14.903518 73.449600 +v -1.153177 -15.811288 73.413961 +v 2.039738 -15.840123 74.609004 +v 4.168348 -15.859346 75.405699 +v 7.361263 -15.888180 76.600742 +v 7.356122 -14.980410 76.636381 +v 4.163207 -14.951575 75.441338 +v 2.034597 -14.932352 74.644643 +v 4.204660 -11.706389 73.162155 +v 3.407836 -11.794400 75.288984 +v 3.551106 -11.700487 72.917543 +v 2.754282 -11.788498 75.044372 +v 16.780429 9.010401 78.894427 +v 16.090829 8.934233 80.735061 +v 16.097731 11.745517 78.588407 +v 15.300908 11.657505 80.715236 +v -10.057511 9.170372 70.948271 +v -9.367911 9.246540 69.107638 +v -9.405652 11.880623 71.468075 +v -8.608829 11.968635 69.341246 +v 4.972466 -14.611387 73.693948 +v 4.414680 -14.672996 75.182755 +v 16.682768 9.010595 79.173163 +v 16.200040 8.957278 80.461630 +v 2.019136 -14.651363 74.286151 +v 2.576922 -14.589754 72.797345 +v -9.959986 9.193520 70.670466 +v -9.477259 9.246839 69.381999 +v 3.912798 -13.350544 73.657152 +v 3.557118 -13.389830 74.606511 +v 15.511171 9.975007 78.967765 +v 15.155490 9.935721 79.917124 +v 3.064499 -13.385381 74.422134 +v 3.420179 -13.346095 73.472775 +v -8.799275 10.152050 70.951344 +v -8.443595 10.191336 70.001985 +v -8.829400 11.944272 69.929981 +v 3.330534 -11.724849 73.506278 +v 3.984088 -11.730751 73.750890 +v 15.877160 11.721154 79.177142 +v 15.521479 11.681868 80.126501 +v 3.628408 -11.770037 74.700249 +v 2.974854 -11.764135 74.455637 +v -9.185081 11.904988 70.879340 +v 16.005156 11.557580 79.218327 +v 16.225728 11.581943 78.629592 +v 4.280197 -12.022107 73.177391 +v 3.479137 -12.014872 72.877571 +v -8.734986 11.807356 69.287307 +v -8.955558 11.782994 69.876042 +v -9.311238 11.743708 70.825401 +v -9.531810 11.719345 71.414136 +v 2.682314 -12.102884 75.004399 +v 3.483373 -12.110118 75.304220 +v 15.428905 11.493932 80.756421 +v 15.649476 11.518295 80.167686 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.468750 0.750000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.218750 0.250000 +vt 0.375000 0.406250 +vt 0.468750 0.406250 +vt 0.531250 0.406250 +vt 0.625000 0.406250 +vt 0.781250 0.250000 +vt 0.625000 0.843750 +vt 0.781250 0.000000 +vt 0.531250 0.843750 +vt 0.468750 0.843750 +vt 0.218750 0.000000 +vt 0.375000 0.843750 +vt 0.281250 0.250000 +vt 0.375000 0.343750 +vt 0.281250 0.000000 +vt 0.375000 0.906250 +vt 0.468750 0.906250 +vt 0.531250 0.906250 +vt 0.625000 0.906250 +vt 0.718750 0.000000 +vt 0.625000 0.343750 +vt 0.718750 0.250000 +vt 0.531250 0.343750 +vt 0.468750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.531250 0.406250 +vt 0.531250 0.343750 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.468750 0.343750 +vt 0.468750 0.406250 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.531250 0.400902 +vt 0.531250 0.349072 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.468750 0.349205 +vt 0.468750 0.400794 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.531250 0.406250 +vt 0.531250 0.343750 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.468750 0.343750 +vt 0.468750 0.406250 +vt 0.468750 0.388949 +vt 0.468750 0.388949 +vt 0.531250 0.388949 +vt 0.531250 0.388949 +vt 0.531250 0.361051 +vt 0.531250 0.361051 +vt 0.468750 0.361051 +vt 0.468750 0.361051 +vt 0.531250 0.385840 +vt 0.531250 0.406250 +vt 0.531250 0.406250 +vt 0.468750 0.406250 +vt 0.468750 0.406250 +vt 0.468750 0.386614 +vt 0.468750 0.363777 +vt 0.468750 0.343750 +vt 0.468750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.363794 +vt 0.468750 0.367708 +vt 0.468750 0.382292 +vt 0.531250 0.382291 +vt 0.531250 0.367708 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.936517 -0.008457 0.350519 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn 0.005659 -0.999214 -0.039229 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn -0.936517 0.008457 -0.350519 +vn 0.715328 0.633825 0.294229 +vn 0.715328 0.633825 0.294229 +vn 0.715328 0.633825 0.294229 +vn 0.715328 0.633825 0.294229 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn -0.722579 0.646813 -0.243951 +vn -0.722579 0.646813 -0.243951 +vn -0.722579 0.646813 -0.243951 +vn -0.722579 0.646813 -0.243951 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn 0.828717 -0.478253 0.290691 +vn 0.828717 -0.478253 0.290691 +vn 0.828717 -0.478253 0.290691 +vn 0.828717 -0.478253 0.290691 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.823385 -0.463334 -0.327657 +vn -0.823385 -0.463334 -0.327657 +vn -0.823385 -0.463334 -0.327657 +vn -0.823385 -0.463334 -0.327657 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn 0.819745 0.470487 0.326589 +vn 0.819745 0.470487 0.326589 +vn 0.819745 0.470487 0.326589 +vn 0.819745 0.470487 0.326589 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.828716 -0.478255 0.290690 +vn 0.828716 -0.478255 0.290690 +vn 0.828717 -0.478255 0.290690 +vn 0.828716 -0.478255 0.290690 +vn 0.828717 -0.478253 0.290691 +vn 0.828717 -0.478253 0.290691 +vn 0.828717 -0.478253 0.290691 +vn 0.828717 -0.478253 0.290691 +vn 0.828718 -0.478253 0.290690 +vn 0.828718 -0.478253 0.290690 +vn 0.828718 -0.478253 0.290690 +vn 0.828718 -0.478253 0.290690 +vn -0.823384 -0.463336 -0.327657 +vn -0.823384 -0.463336 -0.327657 +vn -0.823384 -0.463336 -0.327657 +vn -0.823384 -0.463335 -0.327657 +vn -0.823385 -0.463334 -0.327657 +vn -0.823385 -0.463334 -0.327657 +vn -0.823385 -0.463334 -0.327657 +vn -0.823385 -0.463334 -0.327657 +vn -0.823385 -0.463334 -0.327658 +vn -0.823385 -0.463334 -0.327658 +vn -0.823385 -0.463334 -0.327658 +vn -0.823385 -0.463334 -0.327658 +vn 0.726502 0.619275 0.297813 +vn 0.726502 0.619275 0.297813 +vn 0.726502 0.619275 0.297813 +vn 0.726502 0.619275 0.297813 +vn -0.218911 -0.114031 0.969059 +vn -0.218911 -0.114031 0.969059 +vn -0.218911 -0.114031 0.969059 +vn -0.218911 -0.114031 0.969059 +vn 0.473793 -0.037526 -0.879836 +vn 0.473793 -0.037526 -0.879836 +vn 0.473793 -0.037526 -0.879836 +vn 0.473793 -0.037526 -0.879836 +vn -0.733591 0.632461 -0.248670 +vn -0.733591 0.632461 -0.248670 +vn -0.733591 0.632461 -0.248670 +vn -0.733591 0.632461 -0.248670 +vn 0.219747 -0.035231 -0.974921 +vn 0.219747 -0.035231 -0.974921 +vn 0.219747 -0.035231 -0.974921 +vn 0.219747 -0.035231 -0.974920 +vn -0.472940 -0.111736 0.873981 +vn -0.472940 -0.111736 0.873981 +vn -0.472940 -0.111736 0.873981 +vn -0.472940 -0.111736 0.873981 +vn -0.722581 0.646811 -0.243949 +vn -0.722581 0.646811 -0.243949 +vn -0.722581 0.646811 -0.243950 +vn -0.722581 0.646811 -0.243950 +vn 0.819744 0.470487 0.326590 +vn 0.819744 0.470487 0.326590 +vn 0.819744 0.470487 0.326590 +vn 0.819744 0.470487 0.326590 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn 0.715326 0.633828 0.294228 +vn 0.715326 0.633828 0.294228 +vn 0.715326 0.633828 0.294228 +vn 0.715326 0.633828 0.294228 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.825158 0.485342 -0.289064 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn -0.005659 0.999214 0.039229 +vn 0.819745 0.470487 0.326589 +vn 0.819745 0.470487 0.326589 +vn 0.819745 0.470487 0.326589 +vn 0.819745 0.470487 0.326589 +vn 0.910661 0.233864 0.340595 +vn 0.910661 0.233864 0.340595 +vn 0.910661 0.233864 0.340595 +vn 0.910661 0.233864 0.340595 +vn 0.387792 0.020013 -0.921529 +vn 0.387792 0.020013 -0.921530 +vn 0.387792 0.020013 -0.921530 +vn 0.387792 0.020013 -0.921530 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.350576 0.038722 -0.935734 +vn 0.312888 0.020690 -0.949565 +vn 0.312888 0.020690 -0.949565 +vn 0.312888 0.020690 -0.949565 +vn 0.312888 0.020690 -0.949565 +vn -0.906663 0.250275 -0.339594 +vn -0.906663 0.250275 -0.339594 +vn -0.906663 0.250275 -0.339594 +vn -0.906663 0.250275 -0.339594 +vn -0.913399 0.249531 -0.321617 +vn -0.913399 0.249531 -0.321617 +vn -0.913399 0.249531 -0.321617 +vn -0.913399 0.249531 -0.321617 +vn -0.387585 -0.056679 0.920090 +vn -0.387585 -0.056679 0.920090 +vn -0.387585 -0.056679 0.920090 +vn -0.387585 -0.056679 0.920090 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.350576 -0.038722 0.935734 +vn -0.312680 -0.057356 0.948125 +vn -0.312680 -0.057356 0.948125 +vn -0.312680 -0.057356 0.948125 +vn -0.312680 -0.057356 0.948125 +vn 0.903925 0.233120 0.358573 +vn 0.903925 0.233120 0.358573 +vn 0.903925 0.233119 0.358573 +vn 0.903925 0.233119 0.358573 +vn -0.722580 0.646812 -0.243952 +vn -0.722580 0.646812 -0.243952 +vn -0.722580 0.646812 -0.243952 +vn -0.722580 0.646812 -0.243952 +vn -0.885362 -0.312048 -0.344617 +vn -0.885362 -0.312048 -0.344617 +vn -0.885362 -0.312048 -0.344617 +vn -0.885362 -0.312048 -0.344617 +vn 0.235973 -0.000991 -0.971759 +vn 0.235972 -0.000991 -0.971759 +vn 0.235972 -0.000991 -0.971759 +vn -0.459558 -0.077812 0.884733 +vn -0.459558 -0.077812 0.884733 +vn -0.459558 -0.077812 0.884733 +vn 0.715329 0.633825 0.294229 +vn 0.715329 0.633825 0.294229 +vn 0.715329 0.633825 0.294229 +vn 0.715329 0.633825 0.294229 +vn 0.888987 -0.328071 0.319485 +vn 0.888987 -0.328071 0.319485 +vn 0.888987 -0.328071 0.319485 +vn 0.888987 -0.328071 0.319485 +vn -0.235524 -0.079835 0.968584 +vn -0.235524 -0.079835 0.968584 +vn -0.235524 -0.079835 0.968584 +vn 0.460024 -0.003014 -0.887901 +vn 0.460024 -0.003014 -0.887901 +vn 0.460024 -0.003014 -0.887901 +s off +usemtl aiStandardSurface2SG +f 4/4/1 16/24/2 13/20/3 2/2/4 +f 19/28/5 20/29/6 6/6/7 15/23/8 +f 8/8/9 14/22/10 15/23/11 6/6/12 +f 21/31/13 22/33/14 14/22/15 8/8/16 +f 6/12/17 20/30/18 21/32/19 8/11/20 +f 7/13/21 24/35/22 17/25/23 5/14/24 +f 23/34/25 24/36/26 7/7/27 12/19/28 +f 11/18/29 12/19/30 7/7/31 5/5/32 +f 5/5/33 17/26/34 18/27/35 11/18/36 +f 1/1/37 9/15/38 10/17/39 3/3/40 +f 12/19/41 14/22/42 22/33/43 23/34/44 +f 15/23/45 14/22/46 12/19/47 11/18/48 +f 19/28/49 15/23/50 11/18/51 18/27/52 +f 13/20/53 16/24/54 10/17/55 9/15/56 +f 32/48/57 25/38/58 3/3/59 10/17/60 +f 16/24/61 31/47/62 32/48/63 10/17/64 +f 30/45/65 31/47/66 16/24/67 4/4/68 +f 2/2/69 29/44/70 30/46/71 4/4/72 +f 28/42/73 29/43/74 2/10/75 13/21/76 +f 28/42/77 13/21/78 9/16/79 27/41/80 +f 1/9/81 26/40/82 27/41/83 9/16/84 +f 3/3/85 25/37/86 26/39/87 1/1/88 +f 18/27/89 17/26/90 25/38/91 32/48/92 +f 33/50/93 35/51/94 62/78/95 63/79/96 +f 20/29/97 19/28/98 31/47/99 30/45/100 +f 29/44/101 21/32/102 20/30/103 30/46/104 +f 22/33/105 21/31/106 29/43/107 28/42/108 +f 22/33/109 28/42/110 27/41/111 23/34/112 +f 26/40/113 24/36/114 23/34/115 27/41/116 +f 17/25/117 24/35/118 26/39/119 25/37/120 +f 69/85/121 70/86/122 39/55/123 64/99/124 +f 33/50/125 71/87/126 72/88/127 35/51/128 +f 44/60/129 73/89/130 74/90/131 61/98/132 +f 77/93/133 78/94/134 34/49/135 36/52/136 +f 54/69/137 53/70/138 55/71/139 56/72/140 +f 70/86/141 71/87/142 33/50/143 39/55/144 +f 39/55/145 33/50/146 63/79/147 64/80/148 +f 34/49/149 78/94/150 79/95/151 40/56/152 +f 58/73/153 57/74/154 59/75/155 60/76/156 +f 76/92/157 77/93/158 36/52/159 43/59/160 +f 35/51/161 44/60/162 61/77/163 62/78/164 +f 35/51/165 72/88/166 73/89/167 44/60/168 +f 31/47/169 19/28/170 45/62/171 46/61/172 +f 19/28/173 37/54/174 47/63/175 45/62/176 +f 38/53/177 31/47/178 46/61/179 48/64/180 +f 18/27/181 32/48/182 49/66/183 50/65/184 +f 32/48/185 41/58/186 51/67/187 49/66/188 +f 42/57/189 18/27/190 50/65/191 52/68/192 +f 46/61/193 45/62/194 53/70/195 54/69/196 +f 45/62/197 47/63/198 55/71/199 53/70/200 +f 48/64/201 46/61/202 54/69/203 56/72/204 +f 50/65/205 49/66/206 57/74/207 58/73/208 +f 49/66/209 51/67/210 59/75/211 57/74/212 +f 52/68/213 50/65/214 58/73/215 60/76/216 +f 75/91/217 76/92/218 43/59/219 68/97/220 +f 43/59/221 36/52/222 67/83/223 68/84/224 +f 36/52/225 34/49/226 66/82/227 67/83/228 +f 34/49/229 40/56/230 65/81/231 66/82/232 +f 40/56/233 79/95/234 80/96/235 65/100/236 +f 64/80/237 63/79/238 66/82/239 65/81/240 +f 67/83/241 66/82/242 63/79/243 62/78/244 +f 68/84/245 67/83/246 62/78/247 61/77/248 +f 70/86/249 69/85/250 47/63/251 37/54/252 +f 19/28/253 71/87/254 70/86/255 37/54/256 +f 72/88/257 71/87/258 19/28/259 18/27/260 +f 73/89/261 72/88/262 18/27/263 42/57/264 +f 42/57/265 52/68/266 74/90/267 73/89/268 +f 76/92/269 75/91/270 51/67/271 41/58/272 +f 32/48/273 77/93/274 76/92/275 41/58/276 +f 31/47/277 78/94/278 77/93/279 32/48/280 +f 79/95/281 78/94/282 31/47/283 38/53/284 +f 38/53/285 48/64/286 80/96/287 79/95/288 +f 75/91/289 68/97/290 61/98/291 74/90/292 +f 60/76/293 59/75/294 75/91/295 74/90/296 +f 59/75/297 51/67/298 75/91/299 +f 60/76/300 74/90/301 52/68/302 +f 69/85/303 64/99/304 65/100/305 80/96/306 +f 56/72/307 55/71/308 69/85/309 80/96/310 +f 55/71/311 47/63/312 69/85/313 +f 56/72/314 80/96/315 48/64/316 +v -3.105832 -15.765902 -72.597825 +v 5.868066 -15.765902 -74.056020 +v -3.105832 -14.857418 -72.597825 +v 5.868066 -14.857418 -74.056020 +v -4.564028 -14.857418 -81.571723 +v 4.409870 -14.857418 -83.029919 +v -4.564028 -15.765902 -81.571723 +v 4.409870 -15.765902 -83.029919 +v 0.259379 -15.765902 -73.144648 +v 0.259379 -14.857418 -73.144648 +v -1.198816 -14.857418 -82.118546 +v -1.198816 -15.765902 -82.118546 +v 2.502854 -15.765902 -73.509197 +v 1.044658 -15.765902 -82.483095 +v 1.044658 -14.857418 -82.483095 +v 2.502854 -14.857418 -73.509197 +v -4.017204 -14.857418 -78.206511 +v -0.651993 -14.857418 -78.753334 +v 1.591482 -14.857418 -79.117883 +v 4.956693 -14.857418 -79.664707 +v 4.956693 -15.765902 -79.664707 +v 1.591482 -15.765902 -79.117883 +v -0.651993 -15.765902 -78.753334 +v -4.017204 -15.765902 -78.206511 +v -3.652655 -14.857418 -75.963037 +v -3.652655 -15.765902 -75.963037 +v -0.287444 -15.765902 -76.509860 +v 1.956031 -15.765902 -76.874409 +v 5.321242 -15.765902 -77.421232 +v 5.321242 -14.857418 -77.421232 +v 1.956031 -14.857418 -76.874409 +v -0.287444 -14.857418 -76.509860 +v 0.814155 -11.704425 -78.991573 +v 1.178704 -11.704425 -76.748099 +v 0.125334 -11.704425 -78.879645 +v 0.489883 -11.704425 -76.636170 +v 14.273953 9.149791 -81.023765 +v 14.589446 9.149791 -79.082182 +v 13.489635 11.874616 -81.051250 +v 13.854183 11.874616 -78.807775 +v -12.969915 9.149791 -74.603979 +v -13.285409 9.149791 -76.545562 +v -12.185597 11.874616 -74.576493 +v -12.550146 11.874616 -76.819968 +v 1.786832 -14.590624 -78.804225 +v 2.042021 -14.590624 -77.233765 +v 14.327435 9.161472 -80.733533 +v 14.548284 9.161474 -79.374400 +v -0.482792 -14.590624 -76.823501 +v -0.737980 -14.590624 -78.393961 +v -13.023393 9.161472 -74.894196 +v -13.244244 9.161472 -76.253328 +v 0.830258 -13.326219 -78.356768 +v 0.992982 -13.326219 -77.355342 +v 13.194365 10.123698 -80.365849 +v 13.357090 10.123698 -79.364422 +v 0.473780 -13.326219 -77.270975 +v 0.311056 -13.326219 -78.272401 +v -11.890327 10.123698 -75.261894 +v -12.053052 10.123698 -76.263321 +v -12.449234 11.874616 -76.198944 +v 0.226246 -11.704425 -78.258620 +v 0.915067 -11.704425 -78.370549 +v 13.590547 11.874616 -80.430226 +v 13.753271 11.874616 -79.428799 +v 1.077792 -11.704425 -77.369123 +v 0.388971 -11.704425 -77.257194 +v -12.286509 11.874617 -75.197517 +v 13.724480 11.712062 -80.451989 +v 13.623569 11.712062 -81.073013 +v 0.891888 -12.019725 -79.004204 +v 0.047601 -12.019725 -78.867014 +v -12.684080 11.712062 -76.798205 +v -12.583168 11.712062 -76.177181 +v -12.420443 11.712062 -75.175754 +v -12.319531 11.712062 -74.554730 +v 0.412150 -12.019725 -76.623539 +v 1.256437 -12.019725 -76.760730 +v 13.988118 11.712062 -78.829538 +v 13.887206 11.712062 -79.450563 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.468750 0.750000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.218750 0.250000 +vt 0.375000 0.406250 +vt 0.468750 0.406250 +vt 0.531250 0.406250 +vt 0.625000 0.406250 +vt 0.781250 0.250000 +vt 0.625000 0.843750 +vt 0.781250 0.000000 +vt 0.531250 0.843750 +vt 0.468750 0.843750 +vt 0.218750 0.000000 +vt 0.375000 0.843750 +vt 0.281250 0.250000 +vt 0.375000 0.343750 +vt 0.281250 0.000000 +vt 0.375000 0.906250 +vt 0.468750 0.906250 +vt 0.531250 0.906250 +vt 0.625000 0.906250 +vt 0.718750 0.000000 +vt 0.625000 0.343750 +vt 0.718750 0.250000 +vt 0.531250 0.343750 +vt 0.468750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.531250 0.406250 +vt 0.531250 0.343750 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.468750 0.343750 +vt 0.468750 0.406250 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.531250 0.400902 +vt 0.531250 0.349072 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.468750 0.349205 +vt 0.468750 0.400794 +vt 0.531250 0.343750 +vt 0.531250 0.406250 +vt 0.531250 0.406250 +vt 0.531250 0.343750 +vt 0.468750 0.406250 +vt 0.468750 0.343750 +vt 0.468750 0.343750 +vt 0.468750 0.406250 +vt 0.468750 0.388949 +vt 0.468750 0.388949 +vt 0.531250 0.388949 +vt 0.531250 0.388949 +vt 0.531250 0.361051 +vt 0.531250 0.361051 +vt 0.468750 0.361051 +vt 0.468750 0.361051 +vt 0.531250 0.385840 +vt 0.531250 0.406250 +vt 0.531250 0.406250 +vt 0.468750 0.406250 +vt 0.468750 0.406250 +vt 0.468750 0.386614 +vt 0.468750 0.363777 +vt 0.468750 0.343750 +vt 0.468750 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.363794 +vt 0.468750 0.367708 +vt 0.468750 0.382292 +vt 0.531250 0.382291 +vt 0.531250 0.367708 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.987054 0.000000 -0.160389 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn -0.987054 0.000000 0.160389 +vn 0.757751 0.640822 -0.123129 +vn 0.757751 0.640822 -0.123129 +vn 0.757751 0.640822 -0.123129 +vn 0.757751 0.640822 -0.123129 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.757749 0.640824 0.123129 +vn -0.757749 0.640824 0.123129 +vn -0.757749 0.640824 0.123129 +vn -0.757749 0.640824 0.123129 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.870627 -0.471164 -0.141471 +vn 0.870627 -0.471164 -0.141471 +vn 0.870627 -0.471164 -0.141471 +vn 0.870627 -0.471164 -0.141471 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn -0.870627 -0.471164 0.141471 +vn -0.870627 -0.471164 0.141471 +vn -0.870627 -0.471164 0.141471 +vn -0.870627 -0.471164 0.141471 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.866832 0.478290 -0.140854 +vn 0.866832 0.478290 -0.140854 +vn 0.866832 0.478290 -0.140854 +vn 0.866832 0.478290 -0.140854 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn 0.870626 -0.471166 -0.141471 +vn 0.870626 -0.471166 -0.141471 +vn 0.870626 -0.471166 -0.141471 +vn 0.870626 -0.471166 -0.141471 +vn 0.870627 -0.471164 -0.141471 +vn 0.870627 -0.471164 -0.141471 +vn 0.870627 -0.471164 -0.141471 +vn 0.870627 -0.471164 -0.141471 +vn 0.870626 -0.471164 -0.141472 +vn 0.870626 -0.471164 -0.141472 +vn 0.870627 -0.471164 -0.141472 +vn 0.870627 -0.471164 -0.141472 +vn -0.870626 -0.471166 0.141471 +vn -0.870626 -0.471166 0.141471 +vn -0.870626 -0.471166 0.141471 +vn -0.870626 -0.471166 0.141471 +vn -0.870627 -0.471164 0.141471 +vn -0.870627 -0.471164 0.141471 +vn -0.870627 -0.471164 0.141471 +vn -0.870627 -0.471164 0.141471 +vn -0.870627 -0.471164 0.141470 +vn -0.870627 -0.471164 0.141470 +vn -0.870627 -0.471164 0.141470 +vn -0.870627 -0.471164 0.141470 +vn 0.769442 0.626360 -0.125029 +vn 0.769442 0.626360 -0.125029 +vn 0.769442 0.626360 -0.125029 +vn 0.769442 0.626360 -0.125029 +vn 0.292324 -0.074687 0.953398 +vn 0.292324 -0.074687 0.953398 +vn 0.292324 -0.074687 0.953398 +vn 0.292324 -0.074687 0.953398 +vn -0.024577 -0.074692 -0.996904 +vn -0.024577 -0.074692 -0.996904 +vn -0.024577 -0.074692 -0.996904 +vn -0.024577 -0.074692 -0.996904 +vn -0.769442 0.626360 0.125029 +vn -0.769442 0.626360 0.125029 +vn -0.769442 0.626360 0.125029 +vn -0.769442 0.626360 0.125029 +vn -0.292333 -0.074692 -0.953395 +vn -0.292333 -0.074692 -0.953395 +vn -0.292333 -0.074692 -0.953395 +vn -0.292333 -0.074692 -0.953395 +vn 0.024587 -0.074687 0.996904 +vn 0.024587 -0.074687 0.996904 +vn 0.024587 -0.074687 0.996904 +vn 0.024587 -0.074687 0.996904 +vn -0.757750 0.640822 0.123131 +vn -0.757750 0.640822 0.123131 +vn -0.757750 0.640822 0.123131 +vn -0.757750 0.640822 0.123131 +vn 0.866833 0.478290 -0.140853 +vn 0.866833 0.478290 -0.140853 +vn 0.866833 0.478290 -0.140853 +vn 0.866833 0.478290 -0.140853 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn 0.757749 0.640824 -0.123129 +vn 0.757749 0.640824 -0.123129 +vn 0.757749 0.640824 -0.123129 +vn 0.757749 0.640824 -0.123129 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn -0.866832 0.478290 0.140854 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.866832 0.478290 -0.140855 +vn 0.866832 0.478290 -0.140855 +vn 0.866832 0.478290 -0.140855 +vn 0.866832 0.478290 -0.140855 +vn 0.956155 0.241888 -0.165100 +vn 0.956155 0.241888 -0.165100 +vn 0.956155 0.241888 -0.165100 +vn 0.956155 0.241888 -0.165100 +vn -0.120761 -0.018348 -0.992512 +vn -0.120761 -0.018348 -0.992512 +vn -0.120761 -0.018348 -0.992512 +vn -0.120761 -0.018348 -0.992512 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.160389 0.000000 -0.987054 +vn -0.199707 -0.018348 -0.979684 +vn -0.199707 -0.018348 -0.979684 +vn -0.199707 -0.018348 -0.979684 +vn -0.199707 -0.018348 -0.979684 +vn -0.959237 0.241887 0.146136 +vn -0.959237 0.241888 0.146136 +vn -0.959237 0.241888 0.146136 +vn -0.959237 0.241888 0.146136 +vn -0.956155 0.241887 0.165100 +vn -0.956155 0.241887 0.165100 +vn -0.956155 0.241887 0.165100 +vn -0.956155 0.241887 0.165100 +vn 0.120761 -0.018348 0.992512 +vn 0.120761 -0.018348 0.992512 +vn 0.120761 -0.018348 0.992512 +vn 0.120761 -0.018348 0.992512 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.160389 0.000000 0.987054 +vn 0.199707 -0.018348 0.979684 +vn 0.199707 -0.018348 0.979684 +vn 0.199707 -0.018348 0.979684 +vn 0.199707 -0.018348 0.979684 +vn 0.959237 0.241887 -0.146135 +vn 0.959237 0.241887 -0.146135 +vn 0.959237 0.241887 -0.146135 +vn 0.959237 0.241887 -0.146135 +vn -0.757750 0.640823 0.123128 +vn -0.757750 0.640823 0.123128 +vn -0.757750 0.640823 0.123128 +vn -0.757750 0.640823 0.123128 +vn -0.935048 -0.320312 0.151939 +vn -0.935048 -0.320312 0.151939 +vn -0.935048 -0.320312 0.151939 +vn -0.935048 -0.320312 0.151939 +vn -0.277177 -0.040447 -0.959967 +vn -0.277177 -0.040447 -0.959967 +vn -0.277177 -0.040447 -0.959967 +vn 0.041044 -0.040443 0.998338 +vn 0.041044 -0.040443 0.998338 +vn 0.041044 -0.040443 0.998338 +vn 0.757751 0.640822 -0.123129 +vn 0.757751 0.640822 -0.123129 +vn 0.757751 0.640822 -0.123129 +vn 0.757751 0.640821 -0.123129 +vn 0.935048 -0.320311 -0.151939 +vn 0.935048 -0.320311 -0.151939 +vn 0.935048 -0.320311 -0.151939 +vn 0.935048 -0.320311 -0.151939 +vn 0.277167 -0.040443 0.959970 +vn 0.277167 -0.040443 0.959970 +vn 0.277167 -0.040443 0.959970 +vn -0.041035 -0.040447 -0.998339 +vn -0.041035 -0.040447 -0.998339 +vn -0.041035 -0.040447 -0.998339 +s off +f 84/104/317 96/124/318 93/120/319 82/102/320 +f 99/128/321 100/129/322 86/106/323 95/123/324 +f 88/108/325 94/122/326 95/123/327 86/106/328 +f 101/131/329 102/133/330 94/122/331 88/108/332 +f 86/112/333 100/130/334 101/132/335 88/111/336 +f 87/113/337 104/135/338 97/125/339 85/114/340 +f 103/134/341 104/136/342 87/107/343 92/119/344 +f 91/118/345 92/119/346 87/107/347 85/105/348 +f 85/105/349 97/126/350 98/127/351 91/118/352 +f 81/101/353 89/115/354 90/117/355 83/103/356 +f 92/119/357 94/122/358 102/133/359 103/134/360 +f 95/123/361 94/122/362 92/119/363 91/118/364 +f 99/128/365 95/123/366 91/118/367 98/127/368 +f 93/120/369 96/124/370 90/117/371 89/115/372 +f 112/148/373 105/138/374 83/103/375 90/117/376 +f 96/124/377 111/147/378 112/148/379 90/117/380 +f 110/145/381 111/147/382 96/124/383 84/104/384 +f 82/102/385 109/144/386 110/146/387 84/104/388 +f 108/142/389 109/143/390 82/110/391 93/121/392 +f 108/142/393 93/121/394 89/116/395 107/141/396 +f 81/109/397 106/140/398 107/141/399 89/116/400 +f 83/103/401 105/137/402 106/139/403 81/101/404 +f 98/127/405 97/126/406 105/138/407 112/148/408 +f 113/150/409 115/151/410 142/178/411 143/179/412 +f 100/129/413 99/128/414 111/147/415 110/145/416 +f 109/144/417 101/132/418 100/130/419 110/146/420 +f 102/133/421 101/131/422 109/143/423 108/142/424 +f 102/133/425 108/142/426 107/141/427 103/134/428 +f 106/140/429 104/136/430 103/134/431 107/141/432 +f 97/125/433 104/135/434 106/139/435 105/137/436 +f 149/185/437 150/186/438 119/155/439 144/199/440 +f 113/150/441 151/187/442 152/188/443 115/151/444 +f 124/160/445 153/189/446 154/190/447 141/198/448 +f 157/193/449 158/194/450 114/149/451 116/152/452 +f 134/169/453 133/170/454 135/171/455 136/172/456 +f 150/186/457 151/187/458 113/150/459 119/155/460 +f 119/155/461 113/150/462 143/179/463 144/180/464 +f 114/149/465 158/194/466 159/195/467 120/156/468 +f 138/173/469 137/174/470 139/175/471 140/176/472 +f 156/192/473 157/193/474 116/152/475 123/159/476 +f 115/151/477 124/160/478 141/177/479 142/178/480 +f 115/151/481 152/188/482 153/189/483 124/160/484 +f 111/147/485 99/128/486 125/162/487 126/161/488 +f 99/128/489 117/154/490 127/163/491 125/162/492 +f 118/153/493 111/147/494 126/161/495 128/164/496 +f 98/127/497 112/148/498 129/166/499 130/165/500 +f 112/148/501 121/158/502 131/167/503 129/166/504 +f 122/157/505 98/127/506 130/165/507 132/168/508 +f 126/161/509 125/162/510 133/170/511 134/169/512 +f 125/162/513 127/163/514 135/171/515 133/170/516 +f 128/164/517 126/161/518 134/169/519 136/172/520 +f 130/165/521 129/166/522 137/174/523 138/173/524 +f 129/166/525 131/167/526 139/175/527 137/174/528 +f 132/168/529 130/165/530 138/173/531 140/176/532 +f 155/191/533 156/192/534 123/159/535 148/197/536 +f 123/159/537 116/152/538 147/183/539 148/184/540 +f 116/152/541 114/149/542 146/182/543 147/183/544 +f 114/149/545 120/156/546 145/181/547 146/182/548 +f 120/156/549 159/195/550 160/196/551 145/200/552 +f 144/180/553 143/179/554 146/182/555 145/181/556 +f 147/183/557 146/182/558 143/179/559 142/178/560 +f 148/184/561 147/183/562 142/178/563 141/177/564 +f 150/186/565 149/185/566 127/163/567 117/154/568 +f 99/128/569 151/187/570 150/186/571 117/154/572 +f 152/188/573 151/187/574 99/128/575 98/127/576 +f 153/189/577 152/188/578 98/127/579 122/157/580 +f 122/157/581 132/168/582 154/190/583 153/189/584 +f 156/192/585 155/191/586 131/167/587 121/158/588 +f 112/148/589 157/193/590 156/192/591 121/158/592 +f 111/147/593 158/194/594 157/193/595 112/148/596 +f 159/195/597 158/194/598 111/147/599 118/153/600 +f 118/153/601 128/164/602 160/196/603 159/195/604 +f 155/191/605 148/197/606 141/198/607 154/190/608 +f 140/176/609 139/175/610 155/191/611 154/190/612 +f 139/175/613 131/167/614 155/191/615 +f 140/176/616 154/190/617 132/168/618 +f 149/185/619 144/199/620 145/200/621 160/196/622 +f 136/172/623 135/171/624 149/185/625 160/196/626 +f 135/171/627 127/163/628 149/185/629 +f 136/172/630 160/196/631 128/164/632 +v 11.914086 8.176455 80.009422 +v 13.806228 4.290867 79.415436 +v 13.734490 9.234440 80.009422 +v 15.809236 4.936870 79.353470 +v 13.725348 9.250171 79.876205 +v 15.799893 4.953063 79.220314 +v 11.904944 8.192185 79.876205 +v 13.796885 4.307061 79.282288 +v 14.190434 7.520486 79.639740 +v 13.127540 6.946282 79.644890 +v 12.732756 6.733008 79.646805 +v 12.741931 6.717218 79.780014 +v 13.136716 6.930491 79.778099 +v 14.199610 7.504695 79.772949 +v 14.594395 7.717968 79.771042 +v 14.585218 7.733759 79.637833 +v 13.228864 5.756197 79.632088 +v 13.219633 5.772099 79.498894 +v 13.625658 5.963041 79.493553 +v 14.718816 6.477123 79.479164 +v 15.124841 6.668066 79.473824 +v 15.134071 6.652164 79.607018 +v 14.728046 6.461222 79.612358 +v 13.634889 5.947140 79.626747 +v 14.260052 -2.354384 78.495872 +v 12.967626 -6.392488 77.913338 +v 16.333145 -2.666827 78.301292 +v 14.857236 -7.278883 77.636070 +v 16.323704 -2.646872 78.168655 +v 14.849170 -7.254778 77.504036 +v 14.250610 -2.334428 78.363243 +v 12.959559 -6.368382 77.781311 +v 15.498624 -4.312135 77.967163 +v 14.337420 -4.005054 78.096725 +v 13.906120 -3.890997 78.144844 +v 13.915242 -3.912378 78.277275 +v 14.346541 -4.026435 78.229156 +v 15.507747 -4.333516 78.099594 +v 15.939046 -4.447573 78.051468 +v 15.929923 -4.426192 77.919037 +v 13.591829 -4.922691 78.132050 +v 13.583043 -4.900270 77.999771 +v 14.004566 -5.044858 77.947266 +v 15.139449 -5.434139 77.805901 +v 15.560971 -5.578727 77.753403 +v 15.569757 -5.601149 77.885681 +v 15.148235 -5.456560 77.938187 +v 14.013352 -5.067279 78.079544 +v 8.726593 -11.541479 76.991653 +v 5.005316 -13.585869 76.408180 +v 10.019358 -13.152845 76.584885 +v 5.779984 -15.481946 75.920341 +v 10.017757 -13.121146 76.454224 +v 5.785672 -15.446298 75.790825 +v 8.724993 -11.509781 76.860992 +v 5.011004 -13.550221 76.278664 +v 8.274937 -13.769190 76.298363 +v 7.639122 -12.773057 76.549240 +v 7.402965 -12.403069 76.642418 +v 7.402126 -12.436409 76.772675 +v 7.638283 -12.806396 76.679497 +v 8.274097 -13.802529 76.428619 +v 8.510255 -14.172518 76.335434 +v 8.511093 -14.139177 76.205177 +v 6.471424 -12.947829 76.627220 +v 6.474086 -12.913492 76.497253 +v 6.682551 -13.298695 76.399757 +v 7.243810 -14.335790 76.137260 +v 7.452275 -14.720991 76.039764 +v 7.449612 -14.755328 76.169731 +v 7.241147 -14.370127 76.267235 +v 6.679889 -13.333032 76.529724 +v -1.625877 -14.405214 75.484962 +v -5.730348 -13.330709 74.901909 +v -1.762330 -16.414484 74.870621 +v -6.421341 -15.195008 74.209007 +v -1.740675 -16.377029 74.743309 +v -6.388013 -15.160661 74.083359 +v -1.604222 -14.367761 75.357658 +v -5.697020 -13.296361 74.776260 +v -3.455598 -15.659270 74.632103 +v -3.254434 -14.526808 75.001617 +v -3.179717 -14.106183 75.138863 +v -3.205697 -14.142912 75.265572 +v -3.280414 -14.563536 75.128319 +v -3.481579 -15.695998 74.758804 +v -3.556296 -16.116623 74.621559 +v -3.530316 -16.079893 74.494850 +v -4.234929 -13.873021 75.119827 +v -4.206009 -13.837069 74.993530 +v -4.310464 -14.249897 74.852089 +v -4.591693 -15.361371 74.471283 +v -4.696148 -15.774199 74.329842 +v -4.725069 -15.810152 74.456131 +v -4.620613 -15.397324 74.597572 +v -4.339384 -14.285849 74.978386 +v -11.129359 -9.348516 73.974876 +v -13.374483 -5.734970 73.390236 +v -12.536432 -10.685909 73.159569 +v -15.072551 -6.604624 72.499474 +v -12.485477 -10.664768 73.036949 +v -15.013317 -6.596902 72.379013 +v -11.078404 -9.327374 73.852257 +v -13.315248 -5.727248 73.269775 +v -13.242609 -8.983192 72.970810 +v -12.363331 -8.310878 73.454903 +v -12.036746 -8.061165 73.634705 +v -12.091165 -8.077717 73.756538 +v -12.417750 -8.327430 73.576736 +v -13.297029 -8.999744 73.092644 +v -13.623613 -9.249458 72.912842 +v -13.569194 -9.232906 72.791008 +v -12.654574 -7.171552 73.610382 +v -12.598069 -7.158366 73.489090 +v -12.940230 -7.383039 73.305260 +v -13.861447 -7.987933 72.810341 +v -14.203609 -8.212605 72.626518 +v -14.260115 -8.225792 72.747810 +v -13.917953 -8.001119 72.931633 +v -12.996736 -7.396224 73.426552 +v -14.556383 0.877977 72.461975 +v -13.695669 5.070639 71.873749 +v -16.404913 0.842464 71.454559 +v -15.439197 5.548830 70.794563 +v -16.340965 0.822919 71.337914 +v -15.379188 5.510346 70.680557 +v -14.492436 0.858432 72.345322 +v -13.635660 5.032156 71.759750 +v -15.752794 2.579916 71.311523 +v -14.704749 2.486706 71.905151 +v -14.315480 2.452085 72.125641 +v -14.378631 2.478725 72.241310 +v -14.767900 2.513345 72.020828 +v -15.815945 2.606556 71.427200 +v -16.205214 2.641176 71.206711 +v -16.142063 2.614537 71.091034 +v -14.163221 3.527613 72.094643 +v -14.101049 3.496240 71.979622 +v -14.484710 3.558213 71.755333 +v -15.517656 3.725067 71.151459 +v -15.901318 3.787041 70.927162 +v -15.963490 3.818414 71.042183 +v -15.579828 3.756440 71.266472 +v -14.546883 3.589586 71.870346 +v -9.989458 10.703260 70.942047 +v -6.466090 13.163132 70.351494 +v -11.295314 11.849590 69.752983 +v -7.369807 14.590847 69.095253 +v -11.253604 11.783569 69.643532 +v -7.346721 14.511884 68.988907 +v -9.947748 10.637240 70.832596 +v -6.443005 13.084167 70.245140 +v -9.634217 12.671962 69.656502 +v -8.966768 11.945080 70.353378 +v -8.718863 11.675098 70.612221 +v -8.754147 11.746535 70.720528 +v -9.002052 12.016517 70.461685 +v -9.669501 12.743399 69.764809 +v -9.917408 13.013380 69.505974 +v -9.882124 12.941943 69.397667 +v -7.872611 12.361981 70.573257 +v -7.841970 12.287311 70.465721 +v -8.068484 12.572242 70.203331 +v -8.678340 13.339373 69.496887 +v -8.904855 13.624303 69.234489 +v -8.935495 13.698974 69.342026 +v -8.708981 13.414042 69.604416 +v -8.099125 12.646912 70.310867 +v 0.127161 14.706937 69.415794 +v 4.384534 14.068080 68.824142 +v -0.055020 16.305460 68.057579 +v 4.648112 15.600323 67.404297 +v -0.069069 16.217949 67.956474 +v 4.608661 15.516673 67.306702 +v 0.113112 14.619427 69.314682 +v 4.345083 13.984430 68.726547 +v 1.717002 15.776702 68.006218 +v 1.722988 14.865140 68.798996 +v 1.725212 14.526564 69.093452 +v 1.748811 14.613517 69.193253 +v 1.746588 14.952093 68.898796 +v 1.740601 15.863655 68.106018 +v 1.738377 16.202230 67.811562 +v 1.714778 16.115278 67.711754 +v 2.816824 14.452913 69.045319 +v 2.786867 14.366922 68.946388 +v 2.808410 14.701940 68.648659 +v 2.866411 15.603920 67.847069 +v 2.887954 15.938937 67.549339 +v 2.917911 16.024927 67.648270 +v 2.896368 15.689911 67.945999 +v 2.838367 14.787930 68.747589 +v 10.270805 10.631783 67.882324 +v 12.934148 7.221452 67.287666 +v 11.120724 11.823995 66.369225 +v 14.035048 8.093352 65.718903 +v 11.044355 11.762052 66.277527 +v 13.941179 8.053890 65.631096 +v 10.194437 10.569840 67.790627 +v 12.840280 7.181990 67.199860 +v 12.049829 10.246710 66.362808 +v 11.501418 9.627128 67.243065 +v 11.297725 9.396999 67.570007 +v 11.381310 9.451258 67.660271 +v 11.585004 9.681385 67.333328 +v 12.133415 10.300968 66.453072 +v 12.337109 10.531096 66.126129 +v 12.253523 10.476837 66.035866 +v 12.056893 8.586493 67.509979 +v 11.968865 8.537927 67.420700 +v 12.186095 8.750742 67.090752 +v 12.770952 9.323712 66.202423 +v 12.988182 9.536527 65.872475 +v 13.076210 9.585093 65.961754 +v 12.858980 9.372277 66.291702 +v 12.274123 8.799308 67.180031 +v 14.850644 0.654840 66.342506 +v 14.435098 -3.688393 65.742905 +v 16.122992 0.946875 64.690521 +v 15.673891 -3.754828 64.041672 +v 16.016083 0.952517 64.609177 +v 15.569979 -3.718258 63.964577 +v 14.743733 0.660483 66.261162 +v 14.331186 -3.651823 65.665810 +v 15.738947 -0.848114 64.723137 +v 15.009098 -0.936721 65.681755 +v 14.738015 -0.969632 66.037811 +v 14.844876 -0.986847 66.117584 +v 15.115959 -0.953936 65.761528 +v 15.845807 -0.865329 64.802910 +v 16.116890 -0.832418 64.446854 +v 16.010031 -0.815203 64.367088 +v 14.741112 -2.073279 65.968117 +v 14.634995 -2.048311 65.889412 +v 14.904255 -2.034545 65.530731 +v 15.629194 -1.997482 64.565033 +v 15.898454 -1.983716 64.206352 +v 16.004572 -2.008684 64.285057 +v 15.735312 -2.022450 64.643738 +v 15.010372 -2.059513 65.609436 +v 11.289468 -9.807182 64.792320 +v 7.979926 -12.690066 64.189163 +v 12.289689 -10.342720 63.018635 +v 8.748192 -13.428693 62.373291 +v 12.209026 -10.261140 62.948513 +v 8.692629 -13.325291 62.307720 +v 11.208805 -9.725603 64.722198 +v 7.924363 -12.586664 64.123596 +v 10.799835 -11.399883 63.089268 +v 10.272778 -11.043422 64.116219 +v 10.077016 -10.911023 64.497650 +v 10.149098 -11.001578 64.566078 +v 10.344860 -11.133977 64.184647 +v 10.871918 -11.490438 63.157696 +v 11.067679 -11.622837 62.776264 +v 10.995597 -11.532282 62.707836 +v 9.321333 -11.722736 64.415733 +v 9.255547 -11.626699 64.348450 +v 9.438878 -11.769935 63.964760 +v 9.932468 -12.155573 62.931740 +v 10.115800 -12.298808 62.548050 +v 10.181586 -12.394846 62.615334 +v 9.998255 -12.251611 62.999023 +v 9.504664 -11.865972 64.032043 +v 1.447325 -14.979701 63.232777 +v -2.965436 -14.793406 62.625854 +v 1.799003 -15.866920 61.355980 +v -2.866926 -15.670730 60.714363 +v 1.794268 -15.745782 61.297825 +v -2.836590 -15.551095 60.661015 +v 1.442590 -14.858563 63.174622 +v -2.935099 -14.673771 62.572506 +v -0.004114 -15.642635 61.461441 +v -0.149744 -15.130698 62.545963 +v -0.203834 -14.940553 62.948784 +v -0.212229 -15.062338 63.005142 +v -0.158139 -15.252483 62.602325 +v -0.012509 -15.764420 61.517799 +v 0.041581 -15.954566 61.114983 +v 0.049976 -15.832781 61.058620 +v -1.316063 -15.015716 62.853844 +v -1.298878 -14.894303 62.798691 +v -1.258309 -15.083882 62.394020 +v -1.149082 -15.594294 61.304508 +v -1.108513 -15.783873 60.899841 +v -1.125699 -15.905285 60.954998 +v -1.166268 -15.715706 61.359665 +v -1.275494 -15.205295 62.449177 +v -9.321889 -11.941795 61.663345 +v -12.408867 -8.759569 61.054150 +v -9.547006 -12.676669 59.703117 +v -12.770465 -9.354827 59.067162 +v -9.465195 -12.580185 59.657551 +v -12.663259 -9.284543 59.026596 +v -9.240078 -11.845311 61.617779 +v -12.301661 -8.689285 61.013584 +v -10.712755 -11.313110 59.841576 +v -10.550461 -10.919781 60.972256 +v -10.490180 -10.773688 61.392216 +v -10.582344 -10.861291 61.435921 +v -10.642625 -11.007383 61.015961 +v -10.804919 -11.400713 59.885281 +v -10.865199 -11.546805 59.465321 +v -10.773035 -11.459203 59.421616 +v -11.365170 -10.054243 61.281948 +v -11.266569 -9.973278 61.239510 +v -11.334196 -10.111806 60.818108 +v -11.516269 -10.484771 59.683548 +v -11.583896 -10.623299 59.262142 +v -11.682496 -10.704264 59.304585 +v -11.614870 -10.565736 59.725986 +v -11.432796 -10.192771 60.860546 +v -15.084188 -2.263800 60.083584 +v -15.135041 2.199293 59.470303 +v -15.547713 -2.618151 58.060520 +v -15.600806 1.980593 57.428627 +v -15.418242 -2.602020 58.028030 +v -15.470919 1.959135 57.401295 +v -14.954717 -2.247668 60.051094 +v -15.005153 2.177835 59.442966 +v -15.494683 -0.836029 58.226372 +v -15.225504 -0.663339 59.391365 +v -15.125524 -0.599198 59.824070 +v -15.256442 -0.601335 59.854633 +v -15.356422 -0.665476 59.421928 +v -15.625602 -0.838166 58.256939 +v -15.725581 -0.902307 57.824234 +v -15.594664 -0.900170 57.793667 +v -15.269655 0.518223 59.701309 +v -15.138627 0.510954 59.672031 +v -15.238702 0.454049 59.238335 +v -15.508136 0.300842 58.070683 +v -15.608210 0.243937 57.636990 +v -15.739238 0.251206 57.666267 +v -15.639163 0.308111 58.099964 +v -15.369729 0.461318 59.267616 +v -12.596748 8.788222 58.494839 +v -9.534942 12.094515 57.875668 +v -13.005162 8.725159 56.430275 +v -9.893009 12.086724 55.800835 +v -12.896810 8.647864 56.411201 +v -9.810745 11.981270 55.787033 +v -12.488396 8.710928 58.475765 +v -9.452678 11.989059 57.861866 +v -11.770814 10.013380 56.617619 +v -11.547291 10.035453 57.804642 +v -11.464270 10.043652 58.245533 +v -11.563826 10.132392 58.262630 +v -11.646847 10.124193 57.821739 +v -11.870369 10.102120 56.634712 +v -11.953391 10.093922 56.193825 +v -11.853835 10.005181 56.176727 +v -10.797952 10.959582 58.108261 +v -10.704905 10.863814 58.092472 +v -10.785229 10.858536 57.651039 +v -11.001490 10.844325 56.462547 +v -11.081814 10.839046 56.021114 +v -11.174862 10.934814 56.036900 +v -11.094537 10.940093 56.478336 +v -10.878276 10.954304 57.666824 +v -3.115590 15.150273 56.893494 +v 1.412177 15.444798 56.270046 +v -3.412613 15.174122 54.809170 +v 1.127690 15.470016 54.183987 +v -3.385091 15.042624 54.803741 +v 1.116636 15.336014 54.183876 +v -3.088068 15.018776 56.888069 +v 1.401123 15.310797 56.269932 +v -1.644280 15.302754 55.015301 +v -1.478150 15.288382 56.211830 +v -1.416445 15.283043 56.656246 +v -1.429610 15.416809 56.659683 +v -1.491314 15.422148 56.215263 +v -1.657444 15.436521 55.018738 +v -1.719149 15.441859 54.574318 +v -1.705984 15.308093 54.570885 +v -0.296957 15.490677 56.504246 +v -0.293432 15.356284 56.502136 +v -0.354468 15.361666 56.057625 +v -0.518797 15.376157 54.860851 +v -0.579833 15.381539 54.416340 +v -0.583357 15.515932 54.418453 +v -0.522321 15.510550 54.862961 +v -0.357992 15.496059 56.059738 +v 8.219523 13.230244 55.281105 +v 11.723345 10.318095 54.655102 +v 7.907928 13.266612 53.199089 +v 11.373967 10.386504 52.579903 +v 7.839099 13.151406 53.207378 +v 11.275595 10.295856 52.593475 +v 8.150694 13.115039 55.289394 +v 11.624973 10.227447 54.668678 +v 9.299819 12.185733 53.419369 +v 9.486101 12.159716 54.612728 +v 9.555291 12.150052 55.055969 +v 9.636066 12.257049 55.045692 +v 9.566877 12.266712 54.602451 +v 9.380594 12.292729 53.409092 +v 9.311404 12.302392 52.965851 +v 9.230629 12.195395 52.976128 +v 10.514813 11.526343 54.889187 +v 10.426619 11.425518 54.900787 +v 10.355385 11.436875 54.457909 +v 10.163599 11.467453 53.265533 +v 10.092365 11.478810 52.822655 +v 10.180560 11.579635 52.811054 +v 10.251794 11.568277 53.253933 +v 10.443580 11.537701 54.446312 +v 15.171113 3.975005 53.657681 +v 15.713673 -0.579594 53.027439 +v 14.762866 4.156094 51.600075 +v 15.292700 -0.288061 50.985138 +v 14.635660 4.118458 51.622002 +v 15.161012 -0.288082 51.012280 +v 15.043907 3.937370 53.679607 +v 15.581985 -0.579615 53.054581 +v 15.072187 2.443923 51.831367 +v 15.311091 2.318225 53.008911 +v 15.399826 2.271537 53.446278 +v 15.529999 2.295274 53.422401 +v 15.441264 2.341961 52.985035 +v 15.202360 2.467660 51.807491 +v 15.113626 2.514347 51.370125 +v 14.983453 2.490610 51.394001 +v 15.666657 1.152812 53.264832 +v 15.535355 1.138542 53.290016 +v 15.445903 1.191147 52.853466 +v 15.205069 1.332779 51.678127 +v 15.115618 1.385384 51.241581 +v 15.246921 1.399654 51.216396 +v 15.336372 1.347049 51.652943 +v 15.577206 1.205417 52.828281 +v 13.844772 -7.590158 52.025070 +v 11.080674 -11.304011 51.388920 +v 13.483180 -7.083362 50.013699 +v 10.822135 -10.659346 49.401264 +v 13.366681 -7.026278 50.049026 +v 10.727754 -10.572536 49.441696 +v 13.728274 -7.533075 52.060398 +v 10.986294 -11.217201 51.429352 +v 12.569251 -8.567400 50.247719 +v 12.758184 -8.888605 51.396900 +v 12.828359 -9.007909 51.823730 +v 12.937561 -9.076944 51.786484 +v 12.867387 -8.957641 51.359650 +v 12.678453 -8.636435 50.210472 +v 12.608279 -8.517131 49.783638 +v 12.499077 -8.448096 49.820889 +v 12.246046 -10.006027 51.627869 +v 12.142393 -9.929541 51.666397 +v 12.077701 -9.802852 51.240826 +v 11.903526 -9.461761 50.095051 +v 11.838835 -9.335072 49.669483 +v 11.942488 -9.411558 49.630959 +v 12.007180 -9.538248 50.056526 +v 12.181354 -9.879338 51.202301 +v 4.860857 -15.130005 50.380032 +v 0.270782 -15.928219 49.739822 +v 4.873610 -14.320523 48.436382 +v 0.511245 -15.079434 47.828030 +v 4.828013 -14.203650 48.484756 +v 0.500849 -14.956433 47.881332 +v 4.815260 -15.013132 50.428406 +v 0.260386 -15.805217 49.793125 +v 3.210440 -14.812799 48.669846 +v 3.156322 -15.289940 49.778397 +v 3.136221 -15.467161 50.190140 +v 3.168743 -15.587565 50.139904 +v 3.188843 -15.410344 49.728161 +v 3.242961 -14.933203 48.619610 +v 3.263062 -14.755981 48.207867 +v 3.230540 -14.635577 48.258102 +v 2.020493 -15.787181 49.980289 +v 1.996775 -15.665250 50.031754 +v 2.029006 -15.485905 49.621704 +v 2.115781 -15.003048 48.517712 +v 2.148011 -14.823704 48.107662 +v 2.171729 -14.945635 48.056198 +v 2.139499 -15.124980 48.466248 +v 2.052724 -15.607837 49.570240 +v -6.919466 -14.415726 48.724648 +v -10.822971 -11.821099 48.080540 +v -6.279855 -13.652542 46.869480 +v -9.943913 -11.217381 46.265057 +v -6.236512 -13.540788 46.930397 +v -9.872222 -11.124461 46.330669 +v -6.876123 -14.303972 48.785564 +v -10.751281 -11.728180 48.146152 +v -7.840114 -12.911718 47.097397 +v -8.260636 -13.320766 48.153484 +v -8.416829 -13.472696 48.545742 +v -8.471542 -13.578312 48.483047 +v -8.315350 -13.426381 48.090794 +v -7.894827 -13.017333 47.034706 +v -7.738635 -12.865403 46.642448 +v -7.683922 -12.759788 46.705143 +v -9.447964 -12.929281 48.322472 +v -9.386179 -12.828372 48.386333 +v -9.217235 -12.684899 47.996181 +v -8.762379 -12.298623 46.945766 +v -8.593434 -12.155150 46.555614 +v -8.655220 -12.256060 46.491753 +v -8.824164 -12.399532 46.881901 +v -9.279019 -12.785809 47.932320 +v -15.024451 -5.740875 47.059387 +v -16.076658 -1.159211 46.413364 +v -13.865408 -5.544976 45.312550 +v -14.841655 -1.294974 44.713501 +v -13.764156 -5.494731 45.385365 +v -14.733265 -1.275796 44.790718 +v -14.923200 -5.690630 47.132202 +v -15.968268 -1.140032 46.490582 +v -14.526332 -3.968890 45.531647 +v -15.213853 -4.013036 46.524044 +v -15.469214 -4.029433 46.892643 +v -15.574224 -4.068223 46.818165 +v -15.318863 -4.051826 46.449566 +v -14.631343 -4.007679 45.457172 +v -14.375981 -3.991282 45.088573 +v -14.270970 -3.952493 45.163048 +v -15.841105 -2.906460 46.654915 +v -15.734294 -2.875528 46.730495 +v -15.474818 -2.877003 46.364418 +v -14.776222 -2.880974 45.378807 +v -14.516747 -2.882449 45.012726 +v -14.623560 -2.913381 44.937141 +v -14.883035 -2.911906 45.303223 +v -15.581631 -2.907935 46.288834 +v -14.941688 6.184597 45.386620 +v -12.535330 10.266486 44.735409 +v -13.796119 5.479915 43.766651 +v -11.588398 9.225237 43.169418 +v -13.695055 5.451269 43.850578 +v -11.502331 9.171149 43.257427 +v -14.840625 6.155950 45.470547 +v -12.449262 10.212398 44.823418 +v -13.231763 7.100612 43.968792 +v -13.853654 7.580122 44.886833 +v -14.084640 7.758223 45.227818 +v -14.180905 7.797020 45.142342 +v -13.949921 7.618918 44.801357 +v -13.328029 7.139409 43.883316 +v -13.097044 6.961307 43.542332 +v -13.000778 6.922510 43.627808 +v -13.579097 8.818160 44.980015 +v -13.486579 8.773008 45.066505 +v -13.266155 8.576980 44.728378 +v -12.672699 8.049205 43.818024 +v -12.452275 7.853176 43.479897 +v -12.544793 7.898328 43.393406 +v -12.765217 8.094357 43.731533 +v -13.358673 8.622131 44.641888 +v -6.629313 14.837492 43.703487 +v -2.052889 16.150042 43.049164 +v -6.198132 13.398840 42.227829 +v -2.041145 14.591290 41.633762 +v -6.147079 13.317561 42.321987 +v -2.015842 14.502622 41.731621 +v -6.578260 14.756212 43.797646 +v -2.027586 16.061373 43.147022 +v -4.697842 14.223915 42.409996 +v -4.858626 15.083142 43.243877 +v -4.918345 15.402280 43.553600 +v -4.959889 15.487251 43.458035 +v -4.900170 15.168114 43.148312 +v -4.739386 14.308887 42.314430 +v -4.679667 13.989749 42.004707 +v -4.638123 13.904778 42.100269 +v -3.815043 15.815771 43.294914 +v -3.779949 15.728951 43.391399 +v -3.742610 15.403390 43.084873 +v -3.642080 14.526867 42.259598 +v -3.604741 14.201304 41.953068 +v -3.639835 14.288124 41.856583 +v -3.677175 14.613686 42.163113 +v -3.777704 15.490209 42.988388 +v 5.411559 15.400009 42.012558 +v 9.653540 13.194345 41.355453 +v 4.707725 13.914421 40.696941 +v 8.526423 11.929043 40.105724 +v 4.693411 13.829651 40.800323 +v 8.491019 11.855230 40.212387 +v 5.397245 15.315239 42.115940 +v 9.618137 13.120532 41.462112 +v 6.371260 13.522486 40.854698 +v 6.869488 14.336388 41.595516 +v 7.054542 14.638690 41.870678 +v 7.077257 14.720021 41.766045 +v 6.892203 14.417718 41.490887 +v 6.393975 13.603817 40.750065 +v 6.208921 13.301515 40.474907 +v 6.186206 13.220183 40.579540 +v 8.138637 14.168224 41.602211 +v 8.110630 14.089647 41.707661 +v 7.902931 13.799116 41.436005 +v 7.343732 13.016910 40.704617 +v 7.136033 12.726378 40.432961 +v 7.164039 12.804956 40.327511 +v 7.371739 13.095487 40.599167 +v 7.930937 13.877694 41.330555 +v 14.573661 7.491516 40.314716 +v 16.137650 2.968496 39.656998 +v 12.937968 6.817352 39.173134 +v 14.334909 2.777923 38.586010 +v 12.879724 6.769869 39.284630 +v 14.269973 2.749758 38.700329 +v 14.515415 7.444033 40.426212 +v 16.072712 2.940330 39.771317 +v 13.906705 5.412310 39.302307 +v 14.890516 5.698956 39.942173 +v 15.255927 5.805423 40.179836 +v 15.317405 5.845731 40.067257 +v 14.951994 5.739264 39.829594 +v 13.968183 5.452619 39.189728 +v 13.602772 5.346151 38.952065 +v 13.541294 5.305843 39.064644 +v 15.709264 4.710818 39.902821 +v 15.646111 4.675371 40.016106 +v 15.271747 4.594830 39.782207 +v 14.263833 4.377985 39.152470 +v 13.889469 4.297444 38.918571 +v 13.952623 4.332892 38.805286 +v 14.326986 4.413433 39.039185 +v 15.334901 4.630277 39.668922 +v 15.785391 -4.593764 38.610912 +v 13.802066 -8.965684 37.951149 +v 14.022320 -3.951977 37.655457 +v 12.263062 -7.830330 37.070446 +v 13.958653 -3.950582 37.773876 +v 12.206390 -7.813475 37.191204 +v 15.721725 -4.592369 38.729332 +v 13.745395 -8.948829 38.071907 +v 13.799025 -5.630243 37.753830 +v 14.772602 -6.108085 38.286087 +v 15.134212 -6.285567 38.483780 +v 15.195731 -6.293129 38.364460 +v 14.834121 -6.115648 38.166767 +v 13.860543 -5.637806 37.634514 +v 13.498934 -5.460324 37.436821 +v 13.437414 -5.452762 37.556137 +v 14.698568 -7.389949 38.199512 +v 14.638811 -7.378511 38.319416 +v 14.289161 -7.174633 38.125710 +v 13.347784 -6.625724 37.604183 +v 12.998134 -6.421846 37.410477 +v 13.057891 -6.433285 37.290573 +v 13.407540 -6.637163 37.484280 +v 14.348918 -7.186071 38.005806 +v 8.339317 -14.218946 36.903957 +v 3.869304 -16.038097 36.240749 +v 7.431552 -12.477557 36.144527 +v 3.488013 -14.082626 35.559612 +v 7.392033 -12.444050 36.268600 +v 3.460856 -14.044064 35.685524 +v 8.299798 -14.185439 37.028027 +v 3.842147 -15.999536 36.366661 +v 6.126354 -13.571730 36.205322 +v 6.538516 -14.627239 36.624252 +v 6.691603 -15.019281 36.779854 +v 6.726497 -15.055183 36.655067 +v 6.573410 -14.663142 36.499466 +v 6.161248 -13.607632 36.080536 +v 6.008161 -13.215590 35.924934 +v 5.973267 -13.179688 36.049725 +v 5.608385 -15.510139 36.489731 +v 5.576581 -15.472983 36.614979 +v 5.451503 -15.069544 36.463531 +v 5.114750 -13.983347 36.055790 +v 4.989672 -13.579907 35.904343 +v 5.021475 -13.617063 35.779099 +v 5.146554 -14.020502 35.930542 +v 5.483306 -15.106699 36.338287 +v -3.725831 -16.091646 35.191322 +v -8.229631 -14.332703 34.526894 +v -3.198257 -14.130386 34.636047 +v -7.155301 -12.585163 34.052425 +v -3.207396 -14.091573 34.764454 +v -7.155534 -12.549799 34.182144 +v -3.734970 -16.052832 35.319729 +v -8.229865 -14.297338 34.656616 +v -4.898504 -14.054672 34.657761 +v -5.322786 -15.144957 34.959007 +v -5.480375 -15.549913 35.070896 +v -5.474863 -15.587681 34.941971 +v -5.317274 -15.182723 34.830082 +v -4.892992 -14.092440 34.528835 +v -4.735404 -13.687482 34.416946 +v -4.740915 -13.649715 34.545872 +v -6.601347 -15.147764 34.776340 +v -6.604641 -15.110867 34.905594 +v -6.417982 -14.717263 34.797989 +v -5.915431 -13.657549 34.508278 +v -5.728773 -13.263947 34.400677 +v -5.725479 -13.300843 34.271423 +v -5.912138 -13.694447 34.379028 +v -6.414688 -14.754161 34.668736 +v -13.786510 -9.137725 33.475906 +v -15.842988 -4.769972 32.812546 +v -12.030914 -8.027854 33.130543 +v -13.833042 -4.200723 32.549347 +v -12.022329 -8.000553 33.261917 +v -13.822031 -4.178500 32.681496 +v -13.777925 -9.110424 33.607281 +v -15.831978 -4.747748 32.944698 +v -13.229075 -6.820693 33.110474 +v -14.301807 -7.346205 33.290936 +v -14.700246 -7.541392 33.357964 +v -14.709997 -7.566709 33.226273 +v -14.311559 -7.371521 33.159245 +v -13.238828 -6.846010 32.978783 +v -12.840389 -6.650822 32.911755 +v -12.830638 -6.625506 33.043446 +v -15.225461 -6.471057 33.060448 +v -15.215111 -6.447016 33.192329 +v -14.803102 -6.280680 33.129673 +v -13.693837 -5.832847 32.960983 +v -13.281829 -5.666512 32.898331 +v -13.292179 -5.690553 32.766445 +v -13.704186 -5.856889 32.829102 +v -14.813453 -6.304722 32.997791 +v -16.305258 2.842718 31.758856 +v -14.791504 7.429591 31.095184 +v -14.238194 2.464526 31.626869 +v -12.913580 6.478702 31.046068 +v -14.226691 2.480999 31.759815 +v -12.902567 6.493573 31.179245 +v -16.293755 2.859191 31.891804 +v -14.780491 7.444463 31.228359 +v -14.300069 4.151504 31.564434 +v -15.456962 4.494602 31.622437 +v -15.886659 4.622037 31.643980 +v -15.897982 4.606350 31.510923 +v -15.468285 4.478915 31.489380 +v -14.311392 4.135817 31.431377 +v -13.881695 4.008382 31.409834 +v -13.870371 4.024068 31.542891 +v -15.514228 5.769647 31.343174 +v -15.503037 5.784930 31.476290 +v -15.083560 5.626528 31.459213 +v -13.954185 5.200055 31.413237 +v -13.534708 5.041652 31.396160 +v -13.545898 5.026369 31.263044 +v -13.965375 5.184771 31.280121 +v -15.094750 5.611244 31.326097 +v -9.898653 13.265271 30.043140 +v -5.634041 15.559958 29.377760 +v -8.632431 11.585061 30.125483 +v -4.899867 13.593522 29.543051 +v -8.620990 11.600206 30.258593 +v -4.886385 13.609717 29.675846 +v -9.887213 13.280416 30.176250 +v -5.620560 15.576153 29.510555 +v -7.519761 12.867404 30.015699 +v -8.137587 13.903520 29.950602 +v -8.367063 14.288358 29.926422 +v -8.379073 14.272838 29.793406 +v -8.149598 13.888000 29.817585 +v -7.531772 12.851885 29.882683 +v -7.302297 12.467047 29.906860 +v -7.290286 12.482567 30.039877 +v -7.312072 14.847040 29.627485 +v -7.299553 14.862831 29.760422 +v -7.098527 14.462687 29.789021 +v -6.557296 13.385365 29.866018 +v -6.356270 12.985223 29.894617 +v -6.368789 12.969432 29.761679 +v -6.569815 13.369576 29.733080 +v -7.111046 14.446897 29.656084 +v 1.928437 16.427839 28.326239 +v 6.598397 15.159776 27.661402 +v 1.722679 14.353387 28.622068 +v 5.816216 13.241786 28.039169 +v 1.742857 14.370191 28.753935 +v 5.842404 13.256910 28.170179 +v 1.948615 16.444643 28.458107 +v 6.624586 15.174900 27.792412 +v 3.409127 14.528350 28.465265 +v 3.654469 15.696324 28.277851 +v 3.745595 16.130138 28.208241 +v 3.723280 16.113714 28.076670 +v 3.632154 15.679900 28.146280 +v 3.386813 14.511926 28.333694 +v 3.295687 14.078112 28.403305 +v 3.318002 14.094536 28.534876 +v 4.891718 15.796366 27.910887 +v 4.915543 15.812376 28.042244 +v 4.793593 15.386935 28.116219 +v 4.465265 14.241504 28.315386 +v 4.343316 13.816063 28.389362 +v 4.319490 13.800052 28.258005 +v 4.441440 14.225492 28.184031 +v 4.769768 15.370925 27.984863 +v 12.676735 10.591249 26.611086 +v 15.189572 6.463723 25.947210 +v 11.150578 9.231838 27.117102 +v 13.359467 5.603258 26.533316 +v 11.186968 9.239090 27.246336 +v 13.401077 5.601840 26.661161 +v 12.713124 10.598502 26.740322 +v 15.231183 6.462304 26.075058 +v 12.495701 8.204367 26.912512 +v 13.446946 8.882565 26.604843 +v 13.800261 9.134464 26.490568 +v 13.761707 9.130139 26.361832 +v 13.408392 8.878241 26.476107 +v 12.457146 8.200042 26.783775 +v 12.103830 7.948143 26.898050 +v 12.142385 7.952467 27.026787 +v 14.390204 8.097480 26.196316 +v 14.430073 8.099639 26.324709 +v 14.060553 7.874361 26.443239 +v 13.065681 7.267838 26.762363 +v 12.696161 7.042561 26.880894 +v 12.656293 7.040402 26.752502 +v 13.025813 7.265679 26.633972 +v 14.020685 7.872202 26.314848 +v 16.454876 -1.020647 24.898769 +v 15.445111 -5.722809 24.238092 +v 14.473188 -0.989199 25.609491 +v 13.581508 -5.140235 25.025995 +v 14.517787 -1.009284 25.734735 +v 13.623146 -5.173858 25.149342 +v 16.499475 -1.040733 25.024014 +v 15.486750 -5.756431 24.361439 +v 14.744104 -2.645111 25.358477 +v 15.866583 -2.784287 24.934034 +v 16.283499 -2.835980 24.776386 +v 16.239510 -2.810897 24.651829 +v 15.822595 -2.759203 24.809477 +v 14.700116 -2.620027 25.233921 +v 14.283200 -2.568334 25.391569 +v 14.327188 -2.593417 25.516127 +v 15.983319 -4.003202 24.484850 +v 16.026567 -4.031715 24.608929 +v 15.616039 -3.950289 24.770731 +v 14.510757 -3.731064 25.206362 +v 14.100229 -3.649638 25.368166 +v 14.056981 -3.621126 25.244089 +v 14.467509 -3.702551 25.082285 +v 15.572791 -3.921777 24.646654 +v 11.219077 -12.022047 23.190340 +v 7.261460 -14.732191 22.531429 +v 9.839897 -10.715568 24.098181 +v 6.326540 -13.121084 23.512989 +v 9.867605 -10.769658 24.218119 +v 6.339797 -13.185004 23.630533 +v 11.246785 -12.076138 23.310276 +v 7.274718 -14.796112 22.648973 +v 8.895264 -12.097813 23.799313 +v 9.596786 -12.921937 23.262501 +v 9.857347 -13.228037 23.063118 +v 9.834570 -13.169870 22.944052 +v 9.574008 -12.863771 23.143436 +v 8.872485 -12.039646 23.680248 +v 8.611923 -11.733546 23.879633 +v 8.634701 -11.791713 23.998697 +v 8.842232 -13.849934 22.779331 +v 8.861403 -13.910568 22.897799 +v 8.624527 -13.588234 23.101109 +v 7.986777 -12.720403 23.648489 +v 7.749902 -12.398069 23.851799 +v 7.730731 -12.337435 23.733332 +v 7.967607 -12.659768 23.530022 +v 8.605356 -13.527599 22.982641 +v -0.104215 -16.390829 21.488602 +v -4.838465 -15.636675 20.830059 +v -0.234203 -14.597257 22.583775 +v -4.465629 -13.922781 21.994864 +v -0.250511 -14.667668 22.697153 +v -4.502622 -13.989841 22.105375 +v -0.120522 -16.461241 21.601980 +v -4.875458 -15.703734 20.940573 +v -1.880603 -14.939873 22.236141 +v -1.916606 -15.961693 21.592659 +v -1.929978 -16.341221 21.353655 +v -1.905953 -16.271332 21.241331 +v -1.892581 -15.891804 21.480335 +v -1.856578 -14.869984 22.123816 +v -1.843206 -14.490455 22.362820 +v -1.867231 -14.560344 22.475145 +v -3.090142 -16.082735 21.077143 +v -3.119333 -16.151798 21.188753 +v -3.079214 -15.776528 21.431459 +v -2.971200 -14.766171 22.084906 +v -2.931082 -14.390901 22.327612 +v -2.901891 -14.321837 22.216002 +v -2.942010 -14.697108 21.973297 +v -3.050023 -15.707465 21.319849 +v -11.301711 -11.786065 19.790928 +v -14.207025 -7.996044 19.134920 +v -10.264425 -10.466414 21.062056 +v -12.881800 -7.051194 20.470675 +v -10.331842 -10.515164 21.167681 +v -12.963874 -7.080734 20.572996 +v -11.369128 -11.834815 19.896555 +v -14.289099 -8.025584 19.237242 +v -11.683640 -9.572213 20.668482 +v -12.348723 -10.253798 19.925119 +v -12.595752 -10.506954 19.649015 +v -12.522274 -10.464781 19.544607 +v -12.275246 -10.211625 19.820711 +v -11.610163 -9.530041 20.564074 +v -11.363135 -9.276884 20.840178 +v -11.436613 -9.319057 20.944586 +v -13.249126 -9.516725 19.381033 +v -13.326279 -9.554098 19.484615 +v -13.063919 -9.320935 19.764162 +v -12.357557 -8.693179 20.516794 +v -12.095198 -8.460016 20.796341 +v -12.018045 -8.422642 20.692759 +v -12.280405 -8.655806 20.413214 +v -12.986767 -9.283562 19.660580 +v -16.239428 -0.784434 18.100031 +v -15.745438 3.931443 17.448656 +v -14.719560 -0.524168 19.533720 +v -14.269814 3.763806 18.941183 +v -14.812442 -0.514807 19.630486 +v -14.359830 3.800055 19.034250 +v -16.332310 -0.775074 18.196796 +v -15.835453 3.967693 17.541723 +v -15.114588 1.101521 19.095901 +v -15.985497 1.046351 18.260466 +v -16.308973 1.025860 17.950163 +v -16.216232 1.006436 17.854769 +v -15.892756 1.026927 18.165070 +v -15.021847 1.082097 19.000505 +v -14.698370 1.102588 19.310808 +v -14.791111 1.122012 19.406202 +v -16.091848 2.189464 17.691885 +v -16.183876 2.215652 17.786352 +v -15.862805 2.213214 18.099804 +v -14.998376 2.206648 18.943724 +v -14.677306 2.204210 19.257175 +v -14.585280 2.178022 19.162708 +v -14.906350 2.180460 18.849257 +v -15.770780 2.187026 18.005337 +v -12.271174 10.545139 16.416733 +v -8.685449 13.612478 15.768498 +v -11.093544 9.806086 17.997931 +v -7.799634 12.622930 17.402306 +v -11.162565 9.882010 18.084822 +v -7.846050 12.718132 17.485134 +v -12.340195 10.621063 16.503624 +v -8.731866 13.707681 15.851326 +v -10.252493 11.233606 17.519693 +v -10.869766 11.717836 16.601011 +v -11.099037 11.897692 16.259792 +v -11.037699 11.813879 16.174400 +v -10.808429 11.634025 16.515621 +v -10.191154 11.149794 17.434301 +v -9.961884 10.969939 17.775522 +v -10.023222 11.053752 17.860912 +v -10.138383 12.583701 16.012325 +v -10.194038 12.672371 16.096697 +v -9.980428 12.479089 16.440727 +v -9.405315 11.958708 17.366972 +v -9.191705 11.765426 17.711002 +v -9.136050 11.676756 17.626631 +v -9.349661 11.870038 17.282600 +v -9.924773 12.390419 16.356356 +v -1.662552 16.007874 14.743573 +v 3.037936 15.769091 14.096960 +v -1.313834 14.832832 16.455553 +v 3.051109 14.610410 15.854939 +v -1.314048 14.943668 16.531672 +v 3.083009 14.719579 15.926653 +v -1.662765 16.118710 14.819690 +v 3.069837 15.878260 14.168674 +v 0.294056 15.263175 15.936164 +v 0.167891 15.940467 14.943773 +v 0.121030 16.192030 14.575176 +v 0.109236 16.080708 14.500700 +v 0.156097 15.829144 14.869297 +v 0.282262 15.151853 15.861688 +v 0.329122 14.900290 16.230286 +v 0.340917 15.011613 16.304762 +v 1.285148 16.020794 14.339489 +v 1.304985 16.131701 14.412868 +v 1.333937 15.881034 14.783909 +v 1.411886 15.206154 15.782879 +v 1.440838 14.955487 16.153921 +v 1.421000 14.844580 16.080542 +v 1.392048 15.095246 15.709500 +v 1.314100 15.770126 14.710530 +v 9.745226 12.692231 13.077640 +v 12.973426 9.304124 12.434680 +v 9.314765 11.734504 14.902650 +v 12.347431 8.550593 14.298420 +v 9.394098 11.821803 14.967175 +v 12.450333 8.613115 14.358261 +v 9.824559 12.779531 13.142164 +v 13.076327 9.366645 12.494521 +v 10.759010 10.914159 14.346704 +v 11.053201 11.422525 13.291007 +v 11.162470 11.611345 12.898896 +v 11.073488 11.532478 12.836122 +v 10.964219 11.343658 13.228232 +v 10.670029 10.835291 14.283930 +v 10.560760 10.646471 14.676041 +v 10.649741 10.725339 14.738815 +v 11.880897 10.684824 12.675834 +v 11.975767 10.757503 12.737443 +v 11.856105 10.579572 13.131608 +v 11.533932 10.100522 14.192832 +v 11.414268 9.922591 14.586996 +v 11.319398 9.849913 14.525387 +v 11.439060 10.027843 14.131223 +v 11.761233 10.506893 13.069998 +v 15.707414 2.496636 11.421316 +v 15.718622 -2.154913 10.782216 +v 14.929891 2.113991 13.340233 +v 14.939861 -2.311095 12.732176 +v 15.053261 2.125317 13.392480 +v 15.063293 -2.335650 12.779505 +v 15.830785 2.507963 11.473563 +v 15.842054 -2.179469 10.829545 +v 15.378413 0.517455 12.751088 +v 15.829329 0.686738 11.643162 +v 15.996809 0.749614 11.231651 +v 15.872176 0.751687 11.181244 +v 15.704696 0.688811 11.592754 +v 15.253780 0.519528 12.700681 +v 15.086300 0.456652 13.112191 +v 15.210933 0.454579 13.162599 +v 15.874891 -0.411866 11.021923 +v 15.999541 -0.422891 11.071109 +v 15.832019 -0.473726 11.484262 +v 15.380992 -0.610591 12.596612 +v 15.213469 -0.661426 13.009766 +v 15.088819 -0.650400 12.960580 +v 15.256341 -0.599566 12.547426 +v 15.707369 -0.462701 11.435077 +v 13.035368 -8.933671 9.775102 +v 9.873101 -12.287404 9.141774 +v 12.368483 -8.800736 11.767787 +v 9.320457 -12.032372 11.157400 +v 12.470697 -8.878695 11.807196 +v 9.397228 -12.137284 11.191723 +v 13.137584 -9.011629 9.814510 +v 9.949871 -12.392317 9.176098 +v 11.570064 -10.238626 11.150858 +v 11.929604 -10.344453 10.002375 +v 12.063145 -10.383759 9.575800 +v 11.969464 -10.294905 9.538285 +v 11.835923 -10.255598 9.964860 +v 11.476384 -10.149772 11.113343 +v 11.342842 -10.110465 11.539917 +v 11.436522 -10.199320 11.577432 +v 11.167574 -11.145381 9.378227 +v 11.254818 -11.241058 9.414461 +v 11.127451 -11.195183 9.842266 +v 10.784537 -11.071670 10.994062 +v 10.657170 -11.025794 11.421867 +v 10.569926 -10.930117 11.385633 +v 10.697293 -10.975992 10.957829 +v 11.040207 -11.099505 9.806032 +v 3.306934 -15.345677 8.141129 +v -1.277458 -15.604314 7.510227 +v 2.949258 -14.997221 10.186575 +v -1.528304 -15.249207 9.570367 +v 2.972342 -15.127072 10.212732 +v -1.543213 -15.381184 9.591301 +v 3.330019 -15.475529 8.167287 +v -1.292366 -15.736291 7.531160 +v 1.356701 -15.453690 9.542511 +v 1.537505 -15.657296 8.365508 +v 1.604660 -15.732920 7.928341 +v 1.595696 -15.600965 7.904138 +v 1.528541 -15.525340 8.341305 +v 1.347737 -15.321734 9.518308 +v 1.280582 -15.246110 9.955475 +v 1.289546 -15.378066 9.979678 +v 0.448879 -15.665734 7.746847 +v 0.448343 -15.798224 7.769749 +v 0.386882 -15.722271 8.207696 +v 0.221406 -15.517780 9.386799 +v 0.159945 -15.441828 9.824745 +v 0.160480 -15.309338 9.801843 +v 0.221942 -15.385290 9.363896 +v 0.387417 -15.589781 8.184793 +v -8.100739 -13.320946 6.516225 +v -11.581779 -10.374287 5.889566 +v -8.237144 -13.001669 8.592919 +v -11.683263 -10.083812 7.972480 +v -8.309225 -13.114469 8.605527 +v -11.784754 -10.171700 7.979792 +v -8.172820 -13.433745 6.528833 +v -11.683271 -10.462175 5.896878 +v -9.687168 -12.197695 7.927710 +v -9.618238 -12.374373 6.734599 +v -9.592637 -12.439996 6.291449 +v -9.508698 -12.335498 6.280823 +v -9.534301 -12.269875 6.723974 +v -9.603230 -12.093197 7.917085 +v -9.628832 -12.027574 8.360235 +v -9.712770 -12.132072 8.370860 +v -10.379544 -11.598383 6.124585 +v -10.470858 -11.696637 6.133887 +v -10.494613 -11.632574 6.577369 +v -10.558568 -11.460096 7.771371 +v -10.582323 -11.396033 8.214852 +v -10.491010 -11.297779 8.205550 +v -10.467255 -11.361842 7.762069 +v -10.403299 -11.534320 6.568067 +v -14.939026 -4.065647 4.902308 +v -15.434212 0.436810 4.279930 +v -15.028047 -3.793747 6.988297 +v -15.524570 0.725675 6.363580 +v -15.158068 -3.827977 6.987210 +v -15.658809 0.729845 6.357180 +v -15.069047 -4.099877 4.901221 +v -15.568451 0.440980 4.273531 +v -15.483952 -2.196566 6.306482 +v -15.432469 -2.354580 5.109878 +v -15.413348 -2.413271 4.665430 +v -15.280421 -2.393283 4.668509 +v -15.299543 -2.334592 5.112957 +v -15.351025 -2.176578 6.309562 +v -15.370146 -2.117887 6.754009 +v -15.503073 -2.137876 6.750930 +v -15.404212 -1.266950 4.513340 +v -15.538198 -1.277300 4.508932 +v -15.557420 -1.217705 4.953255 +v -15.609175 -1.057257 6.149524 +v -15.628398 -0.997662 6.593847 +v -15.494412 -0.987313 6.598255 +v -15.475190 -1.046907 6.153932 +v -15.423435 -1.207356 4.957664 +v -13.542674 7.277470 3.299445 +v -10.831661 10.852050 2.683034 +v -13.610760 7.638731 5.372621 +v -10.851709 11.275921 4.745347 +v -13.728848 7.701303 5.357839 +v -10.946704 11.368941 4.725305 +v -13.660761 7.340043 3.284664 +v -10.926656 10.945070 2.662992 +v -12.805993 9.082806 4.680656 +v -12.775045 8.862465 3.493233 +v -12.763551 8.780625 3.052196 +v -12.653054 8.705871 3.068947 +v -12.664549 8.787710 3.509985 +v -12.695497 9.008051 4.697408 +v -12.706991 9.089890 5.138445 +v -12.817489 9.164645 5.121694 +v -11.965415 9.612252 2.913152 +v -12.070045 9.694739 2.895069 +v -12.078960 9.779984 3.335521 +v -12.102966 10.009493 4.521367 +v -12.111883 10.094738 4.961818 +v -12.007254 10.012250 4.979901 +v -11.998338 9.927006 4.539449 +v -11.974332 9.697496 3.353603 +v -4.784996 14.498047 1.707586 +v -0.388366 15.221644 1.095392 +v -4.655655 15.009581 3.745921 +v -0.120671 15.755576 3.114416 +v -4.699383 15.133532 3.717589 +v -0.127393 15.885619 3.080917 +v -4.828724 14.621997 1.679255 +v -0.395088 15.351686 1.061893 +v -3.058066 15.459440 3.046947 +v -3.159961 15.158692 1.881336 +v -3.197807 15.046988 1.448400 +v -3.167746 14.919478 1.478671 +v -3.129900 15.031183 1.911607 +v -3.028005 15.331932 3.077219 +v -2.990159 15.443637 3.510155 +v -3.020220 15.571145 3.479883 +v -2.064911 15.101261 1.325617 +v -2.085697 15.230298 1.294057 +v -2.040468 15.343223 1.725966 +v -1.918696 15.647257 2.888815 +v -1.873467 15.760182 3.320724 +v -1.852680 15.631145 3.352285 +v -1.897910 15.518221 2.920375 +v -2.019681 15.214187 1.757527 +v 6.450495 13.722391 0.128234 +v 10.125070 11.233715 -0.481507 +v 6.979866 14.196965 2.110089 +v 10.820310 11.595590 1.472691 +v 7.030109 14.314548 2.068512 +v 10.900774 11.692705 1.426081 +v 6.500737 13.839973 0.086658 +v 10.205534 11.330832 -0.528117 +v 8.444327 13.372170 1.407321 +v 8.103920 13.120016 0.275940 +v 7.977485 13.026360 -0.144282 +v 7.915137 12.915450 -0.100804 +v 8.041573 13.009107 0.319418 +v 8.381979 13.261261 1.450799 +v 8.508414 13.354918 1.871021 +v 8.570763 13.465827 1.827543 +v 8.834366 12.292768 -0.252836 +v 8.904253 12.398569 -0.297563 +v 9.039519 12.486248 0.121196 +v 9.403702 12.722310 1.248639 +v 9.538968 12.809990 1.667398 +v 9.469081 12.704189 1.712125 +v 9.333815 12.616510 1.293366 +v 8.969631 12.380447 0.165923 +v 14.030211 5.478432 -1.442252 +v 14.978029 1.172313 -2.048007 +v 14.926598 5.540555 0.461910 +v 15.929706 0.982028 -0.179503 +v 15.038659 5.591160 0.407506 +v 16.049288 0.998468 -0.238735 +v 14.142273 5.529038 -1.496656 +v 15.097610 1.188753 -2.107239 +v 15.378565 3.911297 -0.237918 +v 14.847688 3.927419 -1.322994 +v 14.650507 3.933408 -1.726018 +v 14.534428 3.895430 -1.669790 +v 14.731607 3.889442 -1.266766 +v 15.262485 3.873320 -0.181690 +v 15.459665 3.867332 0.221334 +v 15.575746 3.905309 0.165105 +v 14.771561 2.818138 -1.820833 +v 14.889515 2.847590 -1.878259 +v 15.089654 2.828183 -1.477121 +v 15.628496 2.775931 -0.397121 +v 15.828635 2.756524 0.004017 +v 15.710681 2.727072 0.061443 +v 15.510542 2.746480 -0.339695 +v 14.971700 2.798731 -1.419695 +v 13.859005 -5.647290 -3.002599 +v 11.605664 -9.391451 -3.602926 +v 14.736064 -6.281276 -1.196489 +v 12.321369 -10.293049 -1.839949 +v 14.847011 -6.317690 -1.263148 +v 12.415304 -10.357729 -1.911160 +v 13.969952 -5.683704 -3.069258 +v 11.699599 -9.456130 -3.674138 +v 13.896358 -7.762040 -1.888403 +v 13.421893 -7.338635 -2.915580 +v 13.245667 -7.181372 -3.297098 +v 13.140182 -7.133676 -3.228713 +v 13.316408 -7.290939 -2.847195 +v 13.790873 -7.714345 -1.820018 +v 13.967100 -7.871607 -1.438499 +v 14.072585 -7.919303 -1.506884 +v 12.574626 -8.072704 -3.378811 +v 12.675843 -8.127481 -3.448330 +v 12.843461 -8.299047 -3.069103 +v 13.294747 -8.760961 -2.048095 +v 13.462366 -8.932526 -1.668868 +v 13.361149 -8.877748 -1.599348 +v 13.193530 -8.706183 -1.978575 +v 12.742244 -8.244270 -2.999584 +v 6.127020 -13.554090 -4.553344 +v 1.940354 -14.713799 -5.150129 +v 6.415754 -14.777998 -2.864591 +v 1.878221 -16.034660 -3.511634 +v 6.469590 -14.873204 -2.942796 +v 1.902428 -16.138075 -3.594083 +v 6.180856 -13.649298 -4.631548 +v 1.964561 -14.817214 -5.232578 +v 4.774848 -15.230927 -3.541942 +v 4.681034 -14.501414 -4.500321 +v 4.646189 -14.230455 -4.856287 +v 4.603215 -14.131142 -4.776483 +v 4.638060 -14.402101 -4.420518 +v 4.731874 -15.131613 -3.462138 +v 4.766719 -15.402572 -3.106173 +v 4.809693 -15.501885 -3.185977 +v 3.553227 -14.422491 -4.925663 +v 3.588756 -14.523865 -5.006530 +v 3.604823 -14.800051 -4.653250 +v 3.648081 -15.543639 -3.702100 +v 3.664148 -15.819826 -3.348820 +v 3.628620 -15.718452 -3.267952 +v 3.612553 -15.442266 -3.621233 +v 3.569294 -14.698677 -4.572383 +v -4.849319 -13.972953 -6.093477 +v -8.675699 -11.940992 -6.688640 +v -5.520176 -15.225903 -4.540006 +v -9.711041 -13.000116 -5.192137 +v -5.542227 -15.324328 -4.628914 +v -9.758052 -13.085296 -5.284944 +v -4.871371 -14.071379 -6.182384 +v -8.722709 -12.026171 -6.781447 +v -7.026162 -14.376526 -5.201578 +v -6.560163 -13.691518 -6.080834 +v -6.387080 -13.437090 -6.407412 +v -6.355114 -13.342819 -6.317026 +v -6.528197 -13.597247 -5.990448 +v -6.994195 -14.282254 -5.111192 +v -7.167279 -14.536683 -4.784616 +v -7.199244 -14.630954 -4.875001 +v -7.312140 -12.834539 -6.465374 +v -7.350368 -12.925479 -6.556737 +v -7.542960 -13.169563 -6.233203 +v -8.061485 -13.826722 -5.362137 +v -8.254078 -14.070807 -5.038602 +v -8.215851 -13.979868 -4.947239 +v -8.023258 -13.735783 -5.270774 +v -7.504733 -13.078624 -6.141840 +v -13.069773 -6.758827 -7.627040 +v -14.441479 -2.671986 -8.219234 +v -14.546743 -7.295077 -6.225543 +v -16.063452 -2.775570 -6.880700 +v -14.621127 -7.348083 -6.324213 +v -16.145924 -2.804512 -6.982873 +v -13.144156 -6.811832 -7.725711 +v -14.523949 -2.700928 -8.321407 +v -15.020115 -5.616890 -6.865020 +v -14.133270 -5.398417 -7.655752 +v -13.803875 -5.317271 -7.949449 +v -13.725580 -5.273139 -7.849445 +v -14.054976 -5.354285 -7.555748 +v -14.941821 -5.572758 -6.765016 +v -15.271216 -5.653903 -6.471320 +v -15.349511 -5.698036 -6.571324 +v -14.068542 -4.250844 -7.997061 +v -14.148856 -4.288940 -8.097941 +v -14.486018 -4.346978 -7.807602 +v -15.393775 -4.503234 -7.025909 +v -15.730938 -4.561271 -6.735570 +v -15.650625 -4.523174 -6.634690 +v -15.313462 -4.465137 -6.925029 +v -14.405705 -4.308881 -7.706721 +v -14.066100 4.079969 -9.153210 +v -12.257579 7.972078 -9.742772 +v -15.645344 4.724163 -7.918622 +v -13.628039 9.065142 -8.576474 +v -15.725817 4.732673 -8.026001 +v -13.699147 9.093836 -8.686922 +v -14.146573 4.088480 -9.260589 +v -12.328687 8.000772 -9.853221 +v -14.793521 6.262851 -8.531684 +v -13.923109 5.793236 -9.225461 +v -13.599817 5.618809 -9.483146 +v -13.522223 5.602258 -9.374593 +v -13.845514 5.776685 -9.116908 +v -14.715927 6.246300 -8.423132 +v -15.039219 6.420727 -8.165446 +v -15.116813 6.437277 -8.273999 +v -13.069637 6.575869 -9.521574 +v -13.144881 6.597462 -9.630893 +v -13.457064 6.795812 -9.376839 +v -14.297565 7.329835 -8.692837 +v -14.609747 7.528185 -8.438783 +v -14.534503 7.506591 -8.329464 +v -14.222321 7.308242 -8.583518 +v -13.381820 6.774218 -9.267520 +v -7.359667 12.594208 -10.672899 +v -3.396105 14.165384 -11.258598 +v -8.143573 14.239385 -9.618345 +v -3.689877 16.004622 -10.276711 +v -8.191205 14.290363 -9.733283 +v -3.720009 16.062555 -10.394245 +v -7.407299 12.645186 -10.787838 +v -3.426237 14.223318 -11.376133 +v -6.454081 14.735682 -10.199163 +v -6.104859 13.740743 -10.788757 +v -5.975150 13.371198 -11.007747 +v -5.933965 13.316954 -10.891816 +v -6.063674 13.686499 -10.672827 +v -6.412896 14.681437 -10.083233 +v -6.542605 15.050982 -9.864244 +v -6.583790 15.105227 -9.980174 +v -4.928628 13.715357 -11.039848 +v -4.965382 13.771350 -11.156435 +v -5.068672 14.151373 -10.941360 +v -5.346764 15.174525 -10.362304 +v -5.450054 15.554548 -10.147229 +v -5.413301 15.498555 -10.030643 +v -5.310011 15.118532 -10.245717 +v -5.031919 14.095380 -10.824773 +v 3.314890 14.154857 -12.185496 +v 7.270903 12.570087 -12.770946 +v 3.874474 15.991785 -11.321919 +v 8.346827 14.199921 -11.984032 +v 3.871236 16.049780 -11.443182 +v 8.357804 14.252241 -12.107404 +v 3.311652 14.212852 -12.306759 +v 7.281880 12.622407 -12.894318 +v 5.453207 15.151974 -11.870378 +v 5.017505 14.132105 -12.349452 +v 4.855675 13.753301 -12.527391 +v 4.853227 13.697001 -12.405314 +v 5.015057 14.075806 -12.227375 +v 5.450759 15.095675 -11.748302 +v 5.612589 15.474479 -11.570362 +v 5.615037 15.530778 -11.692439 +v 5.843034 13.300488 -12.551290 +v 5.849025 13.355363 -12.673892 +v 6.038314 13.723169 -12.500019 +v 6.547944 14.713430 -12.031895 +v 6.737233 15.081237 -11.858022 +v 6.731242 15.026362 -11.735419 +v 6.541953 14.658556 -11.909292 +v 6.032323 13.668295 -12.377417 +v 12.119713 7.958044 -13.695244 +v 13.895583 4.095576 -14.279275 +v 13.841539 8.972225 -13.031954 +v 15.858548 4.584690 -13.695547 +v 13.867908 9.010059 -13.158255 +v 15.889767 4.612031 -13.823440 +v 12.146082 7.995878 -13.821544 +v 13.926802 4.122917 -14.407167 +v 14.387569 7.255083 -13.542894 +v 13.337625 6.780802 -13.906426 +v 12.947650 6.604643 -14.041451 +v 12.919025 6.570728 -13.914530 +v 13.309000 6.746887 -13.779506 +v 14.358945 7.221168 -13.415974 +v 14.748919 7.397327 -13.280950 +v 14.777544 7.431242 -13.407870 +v 13.363390 5.604447 -14.060141 +v 13.393218 5.635737 -14.187458 +v 13.796045 5.783946 -14.056660 +v 14.880594 6.182973 -13.704505 +v 15.283422 6.331182 -13.573707 +v 15.253593 6.299892 -13.446389 +v 14.850766 6.151683 -13.577188 +v 13.766217 5.752656 -13.929342 +v 14.239981 -2.573139 -15.201646 +v 12.873430 -6.590839 -15.784690 +v 16.249704 -3.004600 -14.745517 +v 14.691943 -7.583788 -15.410172 +v 16.281828 -2.992389 -14.875507 +v 14.721616 -7.578874 -15.541222 +v 14.272105 -2.560928 -15.331636 +v 12.903102 -6.585925 -15.915739 +v 15.438086 -4.627504 -15.216040 +v 14.314816 -4.255879 -15.460254 +v 13.897606 -4.117849 -15.550961 +v 13.866200 -4.127074 -15.420549 +v 14.283410 -4.265104 -15.329843 +v 15.406680 -4.636729 -15.085629 +v 15.823890 -4.774759 -14.994921 +v 15.855295 -4.765534 -15.125332 +v 13.524467 -5.132087 -15.565893 +v 13.555250 -5.124687 -15.696568 +v 13.962264 -5.292691 -15.610206 +v 15.058083 -5.745015 -15.377688 +v 15.465096 -5.913019 -15.291326 +v 15.434314 -5.920420 -15.160650 +v 15.027301 -5.752416 -15.247012 +v 13.931481 -5.300091 -15.479530 +v 8.540869 -11.659769 -16.705824 +v 4.799630 -13.629111 -17.286711 +v 9.747347 -13.367961 -16.461500 +v 5.474503 -15.616972 -17.124973 +v 9.771262 -13.369992 -16.593798 +v 5.495113 -15.620781 -17.257786 +v 8.564784 -11.661800 -16.838121 +v 4.820240 -13.632920 -17.419523 +v 8.024652 -13.973296 -16.889147 +v 7.441262 -12.922508 -17.011547 +v 7.224577 -12.532220 -17.057009 +v 7.201999 -12.529320 -16.924494 +v 7.418684 -12.919608 -16.879032 +v 8.002073 -13.970396 -16.756632 +v 8.218758 -14.360684 -16.711168 +v 8.241337 -14.363585 -16.843685 +v 6.263571 -13.022840 -17.069681 +v 6.285315 -13.026179 -17.202326 +v 6.473483 -13.431459 -17.161278 +v 6.980097 -14.522611 -17.050768 +v 7.168265 -14.927890 -17.009720 +v 7.146522 -14.924551 -16.877075 +v 6.958354 -14.519272 -16.918123 +v 6.451740 -13.428121 -17.028633 +v -1.838733 -14.329584 -18.208910 +v -5.907489 -13.184779 -18.789677 +v -2.111159 -16.417185 -18.178782 +v -6.760919 -15.108856 -18.842451 +v -2.093320 -16.421436 -18.311981 +v -6.742888 -15.113201 -18.975622 +v -1.820894 -14.333835 -18.342110 +v -5.889458 -13.189124 -18.922848 +v -3.768225 -15.656923 -18.559778 +v -3.484288 -14.482675 -18.559292 +v -3.378827 -14.046530 -18.559111 +v -3.396567 -14.042295 -18.425898 +v -3.502028 -14.478440 -18.426079 +v -3.785965 -15.652689 -18.426563 +v -3.891426 -16.088833 -18.426744 +v -3.873686 -16.093067 -18.559958 +v -4.417084 -13.755520 -18.571064 +v -4.399295 -13.759769 -18.704269 +v -4.535899 -14.187159 -18.708879 +v -4.903685 -15.337837 -18.721289 +v -5.040289 -15.765227 -18.725897 +v -5.058079 -15.760978 -18.592691 +v -4.921474 -15.333588 -18.588081 +v -4.553689 -14.182910 -18.575672 +v -11.199716 -9.133939 -19.710434 +v -13.372908 -5.492931 -20.293110 +v -12.807896 -10.480457 -19.894405 +v -15.289590 -6.322678 -20.559664 +v -12.787219 -10.487022 -20.027100 +v -15.266811 -6.332852 -20.691786 +v -11.179038 -9.140504 -19.843130 +v -13.350129 -5.503106 -20.425232 +v -13.489366 -8.766960 -20.230820 +v -12.489835 -8.099731 -20.107430 +v -12.118585 -7.851907 -20.061598 +v -12.140079 -7.844212 -19.929094 +v -12.511329 -8.092036 -19.974926 +v -13.510860 -8.759265 -20.098316 +v -13.882110 -9.007090 -20.144148 +v -13.860616 -9.014785 -20.276651 +v -12.683632 -6.933316 -20.074358 +v -12.661604 -6.941908 -20.206720 +v -13.049292 -7.162181 -20.256941 +v -14.093079 -7.755230 -20.392153 +v -14.480766 -7.975503 -20.442373 +v -14.502794 -7.966910 -20.310013 +v -14.115107 -7.746638 -20.259790 +v -13.071320 -7.153588 -20.124580 +v -14.426785 1.093677 -21.214714 +v -13.497380 5.236032 -21.798126 +v -16.492363 1.191815 -21.610893 +v -15.433427 5.912083 -22.275494 +v -16.468216 1.172077 -21.741682 +v -15.411100 5.884452 -22.405172 +v -14.402637 1.073939 -21.345503 +v -13.475054 5.208401 -21.927805 +v -15.800370 2.907718 -21.899853 +v -14.631715 2.723972 -21.654980 +v -14.197648 2.655725 -21.564028 +v -14.221419 2.678315 -21.433632 +v -14.655486 2.746563 -21.524584 +v -15.824142 2.930309 -21.769457 +v -16.258207 2.998556 -21.860409 +v -16.234438 2.975965 -21.990805 +v -13.988828 3.714704 -21.579092 +v -13.965502 3.690140 -21.709211 +v -14.392667 3.789130 -21.804474 +v -15.542742 4.055643 -22.060951 +v -15.969907 4.154632 -22.156214 +v -15.993233 4.179195 -22.026094 +v -15.566068 4.080206 -21.930832 +v -14.415993 3.813693 -21.674355 +v -9.724016 10.749578 -22.721254 +v -6.203047 13.115495 -23.304224 +v -11.141464 12.184550 -23.325319 +v -7.143575 14.871171 -23.987019 +v -11.128174 12.144004 -23.452826 +v -7.140193 14.824029 -24.112894 +v -9.710725 10.709031 -22.848761 +v -6.199666 13.068353 -23.430099 +v -9.454596 12.954212 -23.566267 +v -8.738317 12.051898 -23.202597 +v -8.472274 11.716757 -23.067522 +v -8.482203 11.760027 -22.940605 +v -8.748247 12.095168 -23.075682 +v -9.464525 12.997482 -23.439350 +v -9.730569 13.332623 -23.574427 +v -9.720638 13.289353 -23.701342 +v -7.598617 12.353288 -23.086357 +v -7.591160 12.308361 -23.212866 +v -7.831767 12.660579 -23.352131 +v -8.479563 13.608870 -23.727081 +v -8.720169 13.961087 -23.866346 +v -8.727625 14.006015 -23.739838 +v -8.487019 13.653797 -23.600573 +v -7.839223 12.705506 -23.225624 +v 0.354447 14.528357 -24.231131 +v 4.548595 13.820564 -24.815689 +v 0.284398 16.472454 -25.036600 +v 5.023275 15.673011 -25.696781 +v 0.266504 16.420897 -25.159483 +v 4.990013 15.624102 -25.817530 +v 0.336552 14.476799 -24.354013 +v 4.515333 13.771655 -24.936438 +v 2.028069 15.874690 -25.227726 +v 1.949247 14.768182 -24.749283 +v 1.919971 14.357198 -24.571579 +v 1.943525 14.408319 -24.449471 +v 1.972801 14.819303 -24.627176 +v 2.051623 15.925811 -25.105618 +v 2.080899 16.336794 -25.283323 +v 2.057345 16.285673 -25.405432 +v 3.007280 14.228935 -24.597219 +v 2.979834 14.178475 -24.718790 +v 3.038501 14.584504 -24.900566 +v 3.196451 15.677673 -25.389969 +v 3.255117 16.083702 -25.571745 +v 3.282564 16.134161 -25.450176 +v 3.223897 15.728132 -25.268400 +v 3.065947 14.634964 -24.778996 +v 10.287935 10.331577 -25.743807 +v 12.861363 6.912436 -26.331932 +v 11.489353 11.743567 -26.741844 +v 14.379220 7.904598 -27.401947 +v 11.432770 11.709029 -26.858822 +v 14.311152 7.885404 -27.516300 +v 10.231351 10.297038 -25.860785 +v 12.793296 6.893242 -26.446287 +v 12.359803 10.104756 -26.887215 +v 11.593691 9.379136 -26.298973 +v 11.309138 9.109623 -26.080486 +v 11.370454 9.138938 -25.964470 +v 11.655005 9.408451 -26.182957 +v 12.421118 10.134071 -26.771200 +v 12.705670 10.403584 -26.989687 +v 12.644355 10.374269 -27.105703 +v 12.014313 8.283731 -26.111107 +v 11.950117 8.258254 -26.226469 +v 12.251545 8.505365 -26.448778 +v 13.063092 9.170673 -27.047308 +v 13.364520 9.417785 -27.269615 +v 13.428716 9.443262 -27.154253 +v 13.127288 9.196151 -26.931946 +v 12.315741 8.530843 -26.333416 +v 14.631787 0.407931 -27.263449 +v 14.144697 -3.860757 -27.853914 +v 16.361563 0.627131 -28.443716 +v 15.819155 -4.130601 -29.101542 +v 16.285032 0.639633 -28.553556 +v 15.745223 -4.095754 -29.208305 +v 14.555256 0.420433 -27.373291 +v 14.070765 -3.825910 -27.960676 +v 15.878326 -1.162178 -28.542469 +v 14.888121 -1.180868 -27.850641 +v 14.520335 -1.187810 -27.593679 +v 14.596678 -1.208620 -27.484974 +v 14.964464 -1.201678 -27.741934 +v 15.954670 -1.182988 -28.433762 +v 16.322456 -1.176046 -28.690723 +v 16.246113 -1.155236 -28.799429 +v 14.474931 -2.276292 -27.632175 +v 14.399235 -2.249874 -27.740112 +v 14.764051 -2.269084 -28.000658 +v 15.746261 -2.320806 -28.702135 +v 16.111076 -2.340016 -28.962681 +v 16.186773 -2.366435 -28.854742 +v 15.821958 -2.347224 -28.594198 +v 14.839747 -2.295503 -27.892721 +v 10.940173 -9.824158 -28.789394 +v 7.634649 -12.599166 -29.382536 +v 12.263710 -10.750878 -30.139448 +v 8.611205 -13.817959 -30.794657 +v 12.207831 -10.682739 -30.241001 +v 8.574957 -13.733397 -30.892708 +v 10.884295 -9.756019 -28.890949 +v 7.598402 -12.514605 -29.480587 +v 10.694222 -11.729045 -30.193026 +v 10.004449 -11.126938 -29.404888 +v 9.748251 -10.903301 -29.112154 +v 9.797441 -10.978182 -29.011898 +v 10.053639 -11.201819 -29.304630 +v 10.743413 -11.803926 -30.092768 +v 10.999612 -12.027563 -30.385502 +v 10.950421 -11.952682 -30.485760 +v 8.970642 -11.672247 -29.159767 +v 8.926374 -11.593242 -29.259150 +v 9.164009 -11.832483 -29.555185 +v 9.803802 -12.476604 -30.352215 +v 10.041435 -12.715846 -30.648251 +v 10.085704 -12.794851 -30.548868 +v 9.848069 -12.555610 -30.252832 +v 9.208277 -11.911489 -29.455803 +v 1.175054 -14.731717 -30.322506 +v -3.143122 -14.472162 -30.916994 +v 1.506417 -16.165730 -31.828165 +v -3.220211 -15.882283 -32.478664 +v 1.510602 -16.067955 -31.920366 +v -3.187728 -15.786247 -32.566986 +v 1.179239 -14.633943 -30.414707 +v -3.110640 -14.376126 -31.005314 +v -0.291206 -15.817651 -31.836731 +v -0.392102 -14.991972 -30.960629 +v -0.429578 -14.685295 -30.635223 +v -0.444275 -14.783398 -30.544460 +v -0.406799 -15.090075 -30.869865 +v -0.305903 -15.915754 -31.745968 +v -0.268428 -16.222431 -32.071373 +v -0.253730 -16.124329 -32.162136 +v -1.539323 -14.717483 -30.694731 +v -1.517446 -14.619818 -30.784517 +v -1.502055 -14.925187 -31.112932 +v -1.460615 -15.747345 -31.997139 +v -1.445223 -16.052713 -32.325554 +v -1.467100 -16.150379 -32.235767 +v -1.482491 -15.845009 -31.907352 +v -1.523931 -15.022851 -31.023148 +v -9.342278 -11.557097 -31.863575 +v -12.313506 -8.380114 -32.461330 +v -9.971873 -12.709996 -33.509064 +v -13.190689 -9.269306 -34.156349 +v -9.897058 -12.633989 -33.590942 +v -13.094799 -9.215881 -34.233997 +v -9.267462 -11.481091 -31.945454 +v -12.217617 -8.326689 -32.538979 +v -11.052679 -11.241135 -33.476700 +v -10.632218 -10.632247 -32.521740 +v -10.476049 -10.406092 -32.167042 +v -10.559445 -10.474459 -32.086735 +v -10.715615 -10.700614 -32.441429 +v -11.136075 -11.309501 -33.396393 +v -11.292245 -11.535656 -33.751087 +v -11.208849 -11.467289 -33.831394 +v -11.305088 -9.677750 -32.236191 +v -11.216412 -9.615033 -32.315449 +v -11.385784 -9.827106 -32.672771 +v -11.841793 -10.398079 -33.634815 +v -12.011167 -10.610152 -33.992142 +v -12.099843 -10.672869 -33.912888 +v -11.930470 -10.460795 -33.555561 +v -11.474462 -9.889823 -32.593517 +v -14.818861 -1.974567 -33.411663 +v -14.790422 2.412953 -34.014603 +v -15.891440 -2.370816 -35.179646 +v -15.861713 2.327988 -35.825214 +v -15.777253 -2.364434 -35.250351 +v -15.747771 2.301179 -35.891373 +v -14.704675 -1.968185 -33.482368 +v -14.676480 2.386145 -34.080761 +v -15.696437 -0.553810 -35.110874 +v -15.075107 -0.394907 -34.087070 +v -14.844330 -0.335886 -33.706802 +v -14.959571 -0.329898 -33.637794 +v -15.190348 -0.388918 -34.018063 +v -15.811678 -0.547821 -35.041866 +v -16.042456 -0.606842 -35.422134 +v -15.927215 -0.612830 -35.491142 +v -14.952501 0.767786 -33.788136 +v -14.837317 0.753517 -33.856014 +v -15.068006 0.711046 -34.238537 +v -15.689095 0.596699 -35.268417 +v -15.919783 0.554228 -35.650940 +v -16.034967 0.568497 -35.583061 +v -15.804278 0.610968 -35.200539 +v -15.183188 0.725315 -34.170658 +v -12.185224 8.824013 -34.970711 +v -9.126541 12.008135 -35.577423 +v -13.090680 9.153626 -36.842800 +v -9.854939 12.523097 -37.484631 +v -12.997023 9.077122 -36.901566 +v -9.785576 12.421339 -37.538597 +v -12.091566 8.747508 -35.029480 +v -9.057178 11.906377 -35.631390 +v -11.727639 10.355978 -36.739006 +v -11.243513 10.122407 -35.657085 +v -11.063697 10.035653 -35.255238 +v -11.149176 10.122404 -35.198261 +v -11.328991 10.209158 -35.600109 +v -11.813117 10.442728 -36.682030 +v -11.992932 10.529482 -37.083881 +v -11.907454 10.442732 -37.140858 +v -10.384078 10.919084 -35.349533 +v -10.304663 10.826025 -35.405315 +v -10.475043 10.922627 -35.809029 +v -10.933764 11.182713 -36.895954 +v -11.104144 11.279315 -37.299667 +v -11.183559 11.372374 -37.243881 +v -11.013180 11.275772 -36.840172 +v -10.554459 11.015686 -35.753246 +v -2.784467 14.886165 -36.539631 +v 1.642668 15.094742 -37.148624 +v -3.187810 15.551343 -38.496170 +v 1.437221 15.769960 -39.132324 +v -3.169762 15.426373 -38.542377 +v 1.418890 15.643297 -39.173542 +v -2.766419 14.761194 -36.585838 +v 1.624337 14.968079 -37.189838 +v -1.381111 15.522079 -38.360897 +v -1.193638 15.134246 -37.232216 +v -1.124007 14.990195 -36.812996 +v -1.128516 15.117050 -36.768658 +v -1.198148 15.261101 -37.187878 +v -1.385620 15.648933 -38.316559 +v -1.455252 15.792984 -38.735779 +v -1.450743 15.666129 -38.780117 +v -0.017992 15.169110 -36.920910 +v -0.022611 15.041829 -36.964001 +v -0.081663 15.186389 -37.384666 +v -0.240650 15.575593 -38.517239 +v -0.299702 15.720153 -38.937904 +v -0.295083 15.847433 -38.894814 +v -0.236032 15.702874 -38.474148 +v -0.077044 15.313669 -37.341576 +v 8.280978 12.803145 -38.118866 +v 11.659709 9.888916 -38.731945 +v 8.328051 13.393787 -40.139294 +v 11.812164 10.389561 -40.771385 +v 8.254465 13.286248 -40.172443 +v 11.710180 10.306535 -40.799389 +v 8.207393 12.695606 -38.152016 +v 11.557724 9.805889 -38.759949 +v 9.628144 12.173002 -39.974705 +v 9.575613 11.852265 -38.811153 +v 9.556102 11.733136 -38.378983 +v 9.641078 11.832542 -38.347744 +v 9.660589 11.951672 -38.779915 +v 9.713120 12.272408 -39.943466 +v 9.732632 12.391539 -40.375637 +v 9.647655 12.292131 -40.406876 +v 10.488962 11.102021 -38.501007 +v 10.396837 11.008776 -38.530952 +v 10.421980 11.123057 -38.964142 +v 10.489671 11.430742 -40.130428 +v 10.514812 11.545024 -40.563618 +v 10.606937 11.638269 -40.533672 +v 10.581795 11.523988 -40.100483 +v 10.514104 11.216303 -38.934196 +v 14.919083 3.628079 -39.707069 +v 15.371884 -0.853810 -40.326035 +v 15.152504 3.978411 -41.770077 +v 15.613760 -0.580808 -42.399719 +v 15.022926 3.948443 -41.789825 +v 15.480336 -0.572642 -42.414204 +v 14.789506 3.598112 -39.726822 +v 15.238461 -0.845643 -40.340519 +v 15.299742 2.199835 -41.583786 +v 15.162253 2.016880 -40.397572 +v 15.111187 1.948926 -39.956982 +v 15.243518 1.964762 -39.939201 +v 15.294584 2.032716 -40.379791 +v 15.432073 2.215671 -41.566006 +v 15.483139 2.283625 -42.006596 +v 15.350808 2.267789 -42.024376 +v 15.356819 0.843607 -40.093517 +v 15.223521 0.837341 -40.109982 +v 15.275007 0.901156 -40.551140 +v 15.413625 1.072966 -41.738888 +v 15.465111 1.136781 -42.180046 +v 15.598408 1.143047 -42.163582 +v 15.546922 1.079232 -41.722424 +v 15.408305 0.907422 -40.534676 +v 13.415877 -7.686384 -41.307865 +v 10.641721 -11.274872 -41.931091 +v 13.639729 -7.484828 -43.391724 +v 10.856404 -11.086096 -44.017109 +v 13.522989 -7.418397 -43.397839 +v 10.763299 -10.989095 -44.017914 +v 13.299138 -7.619953 -41.313980 +v 10.548615 -11.177871 -41.931892 +v 12.564150 -8.894978 -43.186420 +v 12.438393 -9.006375 -41.990067 +v 12.391684 -9.047751 -41.545715 +v 12.500611 -9.126469 -41.541592 +v 12.547320 -9.085093 -41.985947 +v 12.673078 -8.973694 -43.182297 +v 12.719787 -8.932318 -43.626652 +v 12.610859 -8.853601 -43.630772 +v 11.806586 -10.024125 -41.696972 +v 11.703577 -9.937756 -41.699768 +v 11.749772 -9.897043 -42.144238 +v 11.874146 -9.787433 -43.340897 +v 11.920341 -9.746721 -43.785366 +v 12.023350 -9.833091 -43.782570 +v 11.977155 -9.873803 -43.338104 +v 11.852781 -9.983414 -42.141441 +v 4.478944 -14.912055 -42.919685 +v -0.034018 -15.612103 -43.547199 +v 4.715670 -14.712852 -45.002350 +v 0.248836 -15.406227 -45.623451 +v 4.674889 -14.584955 -44.994751 +v 0.246152 -15.272419 -45.610546 +v 4.438162 -14.784159 -42.912090 +v -0.036702 -15.478294 -43.534298 +v 2.983366 -15.039076 -44.782661 +v 2.839337 -15.155437 -43.588848 +v 2.785840 -15.198657 -43.145435 +v 2.812503 -15.330093 -43.155029 +v 2.865999 -15.286874 -43.598442 +v 3.010029 -15.170512 -44.792259 +v 3.063525 -15.127294 -45.235668 +v 3.036863 -14.995856 -45.226074 +v 1.683549 -15.505168 -43.311474 +v 1.666403 -15.372257 -43.300560 +v 1.722350 -15.328655 -43.743633 +v 1.872978 -15.211267 -44.936535 +v 1.928925 -15.167665 -45.379604 +v 1.946071 -15.300576 -45.390518 +v 1.890124 -15.344177 -44.947449 +v 1.739496 -15.461567 -43.754547 +v -7.056307 -14.000226 -44.542557 +v -10.829016 -11.394060 -45.172604 +v -6.654981 -13.823693 -46.601921 +v -10.338884 -11.279365 -47.217064 +v -6.598912 -13.703346 -46.580677 +v -10.251586 -11.180588 -47.190594 +v -7.000239 -13.879879 -44.521317 +v -10.741717 -11.295282 -45.146133 +v -8.142415 -12.920263 -46.370972 +v -8.391604 -13.010928 -45.192341 +v -8.484159 -13.044603 -44.754570 +v -8.552666 -13.157948 -44.777775 +v -8.460111 -13.124273 -45.215546 +v -8.210921 -13.033608 -46.394173 +v -8.118366 -12.999933 -46.831944 +v -8.049860 -12.886588 -46.808743 +v -9.509400 -12.497087 -44.937008 +v -9.432997 -12.389199 -44.912487 +v -9.335641 -12.358835 -45.349461 +v -9.073524 -12.277084 -46.525936 +v -8.976169 -12.246720 -46.962906 +v -9.052571 -12.354609 -46.987427 +v -9.149928 -12.384973 -46.550453 +v -9.412045 -12.466723 -45.373978 +v -14.847305 -5.355840 -46.174637 +v -15.802368 -0.827293 -46.810593 +v -14.237761 -5.424101 -48.188839 +v -15.158261 -1.061243 -48.801472 +v -14.117670 -5.374550 -48.154175 +v -15.030506 -1.048028 -48.761692 +v -14.727215 -5.306289 -46.139977 +v -15.674613 -0.814078 -46.770813 +v -14.743237 -3.755678 -47.954918 +v -15.103325 -3.683093 -46.804028 +v -15.237070 -3.656133 -46.376560 +v -15.361300 -3.692278 -46.413151 +v -15.227555 -3.719238 -46.840618 +v -14.867467 -3.791824 -47.991508 +v -14.733722 -3.818784 -48.418976 +v -14.609491 -3.782638 -48.382389 +v -15.600361 -2.559500 -46.571697 +v -15.474219 -2.532424 -46.533833 +v -15.338603 -2.568192 -46.960064 +v -14.973478 -2.664489 -48.107624 +v -14.837862 -2.700256 -48.533855 +v -14.964004 -2.727332 -48.571716 +v -15.099620 -2.691565 -48.145485 +v -15.464745 -2.595267 -46.997929 +v -14.555659 6.365530 -47.819160 +v -12.117427 10.333847 -48.459171 +v -13.966770 5.823696 -49.766678 +v -11.648275 9.597766 -50.375229 +v -13.848785 5.780346 -49.718941 +v -11.549033 9.523909 -50.322556 +v -14.437674 6.322181 -47.771423 +v -12.018185 10.259990 -48.406498 +v -13.232743 7.395780 -49.533081 +v -13.549511 7.749454 -48.422203 +v -13.667167 7.880816 -48.009594 +v -13.779153 7.936294 -48.059189 +v -13.661498 7.804931 -48.471798 +v -13.344730 7.451258 -49.582676 +v -13.227075 7.319895 -49.995285 +v -13.115088 7.264418 -49.945690 +v -13.169391 8.929111 -48.218758 +v -13.062094 8.866005 -48.167931 +v -12.950791 8.724271 -48.578865 +v -12.651128 8.342674 -49.685242 +v -12.539825 8.200940 -50.096176 +v -12.647122 8.264047 -50.147003 +v -12.758425 8.405781 -49.736069 +v -13.058088 8.787377 -48.629692 +v -6.227355 14.722679 -49.474041 +v -1.700437 15.931979 -50.117943 +v -6.083034 13.746663 -51.334087 +v -1.831262 14.882755 -51.938713 +v -6.027901 13.639884 -51.273777 +v -1.809075 14.767171 -51.873703 +v -6.172221 14.615900 -49.413734 +v -1.678250 15.816395 -50.052929 +v -4.493730 14.424294 -51.105797 +v -4.520276 15.005060 -50.046795 +v -4.530135 15.220771 -49.653454 +v -4.573158 15.332006 -49.715534 +v -4.563298 15.116296 -50.108875 +v -4.536752 14.535529 -51.167877 +v -4.526893 14.319818 -51.561214 +v -4.483871 14.208583 -51.499134 +v -3.440663 15.634713 -49.876091 +v -3.405904 15.521273 -49.812832 +v -3.410740 15.301618 -50.204075 +v -3.423763 14.710230 -51.257439 +v -3.428600 14.490575 -51.648682 +v -3.463359 14.604014 -51.711941 +v -3.458522 14.823670 -51.320698 +v -3.445500 15.415057 -50.267334 +v 5.636358 15.059000 -51.138817 +v 9.766471 12.816892 -51.784615 +v 5.018554 14.069260 -52.891510 +v 8.852326 11.988311 -53.490776 +v 4.989010 13.959774 -52.819271 +v 8.794694 11.894066 -53.414131 +v 5.606815 14.949515 -51.066578 +v 9.708838 12.722647 -51.707966 +v 6.648179 13.514336 -52.673454 +v 7.068509 14.053959 -51.677658 +v 7.224629 14.254388 -51.307796 +v 7.265338 14.359071 -51.381706 +v 7.109218 14.158642 -51.751568 +v 6.688889 13.619019 -52.747368 +v 6.532768 13.418589 -53.117229 +v 6.492059 13.313907 -53.043320 +v 8.301267 13.796210 -51.543190 +v 8.253493 13.695373 -51.468170 +v 8.081466 13.503567 -51.835541 +v 7.618311 12.987161 -52.824627 +v 7.446284 12.795356 -53.192001 +v 7.494058 12.896194 -53.267017 +v 7.666085 13.087999 -52.899647 +v 8.129239 13.604405 -51.910561 +v 14.526118 7.096361 -52.812904 +v 15.988194 2.604059 -53.462124 +v 13.246493 6.709162 -54.439507 +v 14.588931 2.585140 -55.035309 +v 13.157685 6.652281 -54.356106 +v 14.490963 2.556372 -54.947826 +v 14.437310 7.039480 -52.729500 +v 15.890226 2.575291 -53.374641 +v 14.081219 5.223201 -54.234863 +v 14.847909 5.369977 -53.312840 +v 15.132675 5.424492 -52.970379 +v 15.225910 5.471080 -53.055321 +v 14.941143 5.416564 -53.397781 +v 14.174454 5.269788 -54.319805 +v 13.889687 5.215272 -54.662266 +v 13.796452 5.168684 -54.577324 +v 15.593076 4.344291 -53.217648 +v 15.497544 4.304767 -53.131680 +v 15.206342 4.269953 -53.471287 +v 14.422324 4.176223 -54.385624 +v 14.131122 4.141409 -54.725231 +v 14.226652 4.180933 -54.811199 +v 14.517855 4.215746 -54.471592 +v 15.301872 4.309477 -53.557255 +v 15.507442 -4.846917 -54.493824 +v 13.463867 -9.145833 -55.147980 +v 14.151078 -4.219795 -55.977127 +v 12.294099 -8.126600 -56.571362 +v 14.055901 -4.204100 -55.883461 +v 12.210480 -8.086570 -56.473976 +v 15.412266 -4.831223 -54.400158 +v 13.380248 -9.105803 -55.050598 +v 13.774986 -5.890108 -55.793842 +v 14.521255 -6.337089 -54.955528 +v 14.798438 -6.503109 -54.644157 +v 14.890062 -6.528463 -54.739239 +v 14.612880 -6.362443 -55.050610 +v 13.866611 -5.915462 -55.888924 +v 13.589428 -5.749442 -56.200294 +v 13.497804 -5.724088 -56.105209 +v 14.378804 -7.603788 -54.902332 +v 14.290076 -7.572357 -54.806320 +v 14.022811 -7.385448 -55.114506 +v 13.303243 -6.882226 -55.944248 +v 13.035978 -6.695317 -56.252434 +v 13.124706 -6.726748 -56.348442 +v 13.391972 -6.913657 -56.040257 +v 14.111540 -7.416880 -55.210518 +v 7.963444 -14.245004 -56.184380 +v 3.503441 -15.965762 -56.841366 +v 7.319461 -12.739849 -57.508389 +v 3.303338 -14.289559 -58.099739 +v 7.265148 -12.672534 -57.405449 +v 3.271362 -14.213614 -57.993492 +v 7.909130 -14.177689 -56.081440 +v 3.471465 -15.889816 -56.735119 +v 5.923742 -13.725955 -57.349297 +v 6.201957 -14.634828 -56.603626 +v 6.305292 -14.972404 -56.326664 +v 6.351386 -15.043787 -56.430866 +v 6.248050 -14.706210 -56.707829 +v 5.969836 -13.797338 -57.453503 +v 5.866500 -13.459761 -57.730461 +v 5.820407 -13.388377 -57.626259 +v 5.235826 -15.474197 -56.594650 +v 5.195310 -15.400670 -56.489624 +v 5.115568 -15.053979 -56.763103 +v 4.900876 -14.120568 -57.499401 +v 4.821134 -13.773877 -57.772877 +v 4.861650 -13.847405 -57.877903 +v 4.941392 -14.194097 -57.604427 +v 5.156085 -15.127506 -56.868130 +v -4.026563 -15.881097 -57.881920 +v -8.452072 -14.060912 -58.539558 +v -3.449975 -14.214701 -59.032516 +v -7.403525 -12.588841 -59.619724 +v -3.446846 -14.139059 -58.921398 +v -7.381315 -12.521038 -59.505760 +v -4.023435 -15.805455 -57.770802 +v -8.429862 -13.993108 -58.425594 +v -5.144159 -14.009189 -58.901829 +v -5.579834 -14.933043 -58.256721 +v -5.741654 -15.276184 -58.017113 +v -5.752371 -15.349483 -58.129322 +v -5.590551 -15.006341 -58.368931 +v -5.154877 -14.082487 -59.014038 +v -4.993056 -13.739346 -59.253643 +v -4.982339 -13.666047 -59.141438 +v -6.862186 -14.892618 -58.293716 +v -6.846698 -14.821289 -58.180798 +v -6.659705 -14.488503 -58.416656 +v -6.156258 -13.592527 -59.051678 +v -5.969266 -13.259741 -59.287540 +v -5.984754 -13.331070 -59.400459 +v -6.171746 -13.663857 -59.164597 +v -6.675193 -14.559832 -58.529579 +v -13.887999 -8.793594 -59.585476 +v -15.853054 -4.414133 -60.245152 +v -12.243523 -7.900439 -60.550453 +v -13.987416 -4.014417 -61.135559 +v -12.199800 -7.853341 -60.432350 +v -13.936661 -3.982959 -61.015087 +v -13.844275 -8.746495 -59.467373 +v -15.802299 -4.382675 -60.124683 +v -13.352737 -6.621016 -60.450401 +v -14.353008 -7.032968 -59.912594 +v -14.724533 -7.185977 -59.712841 +v -14.771484 -7.227341 -59.831852 +v -14.399960 -7.074332 -60.031605 +v -13.399689 -6.662379 -60.569408 +v -13.028164 -6.509369 -60.769161 +v -12.981213 -6.468006 -60.650154 +v -15.269950 -6.116832 -59.998566 +v -15.221222 -6.079434 -59.878960 +v -14.837738 -5.953069 -60.074703 +v -13.805268 -5.612851 -60.601711 +v -13.421784 -5.486486 -60.797455 +v -13.470511 -5.523883 -60.917061 +v -13.853996 -5.650249 -60.721317 +v -14.886466 -5.990467 -60.194309 +v -16.176916 3.156816 -61.292194 +v -14.583089 7.711270 -61.955326 +v -14.274886 2.684109 -62.061630 +v -12.868500 6.703553 -62.646622 +v -14.222985 2.691399 -61.937809 +v -12.821052 6.698062 -62.520939 +v -16.125015 3.164107 -61.168373 +v -14.535641 7.705779 -61.829639 +v -14.229948 4.387084 -61.998978 +v -15.291796 4.776376 -61.574230 +v -15.686192 4.920969 -61.416470 +v -15.736814 4.918778 -61.541012 +v -15.342418 4.774185 -61.698776 +v -14.280569 4.384893 -62.123524 +v -13.886173 4.240301 -62.281284 +v -13.835552 4.242491 -62.156742 +v -15.338181 6.058298 -61.706345 +v -15.288681 6.057287 -61.581337 +v -14.904288 5.884110 -61.734943 +v -13.869371 5.417861 -62.148514 +v -13.484979 5.244684 -62.302124 +v -13.534478 5.245695 -62.427132 +v -13.918872 5.418871 -62.273521 +v -14.953789 5.885121 -61.859955 +v -9.597895 13.440721 -63.004650 +v -5.299534 15.653275 -63.669003 +v -8.479619 11.748766 -63.570297 +v -4.702055 13.693428 -64.153992 +v -8.444105 11.729372 -63.442074 +v -4.675185 13.669558 -64.024429 +v -9.562381 13.421326 -62.876427 +v -5.272664 15.629405 -63.539436 +v -7.296667 12.972868 -63.546570 +v -7.832061 14.011344 -63.239323 +v -8.030920 14.397058 -63.125206 +v -8.063197 14.418510 -63.253956 +v -7.864338 14.032796 -63.368073 +v -7.328943 12.994320 -63.675320 +v -7.130085 12.608604 -63.789440 +v -7.097808 12.587153 -63.660690 +v -6.987703 14.972129 -63.419609 +v -6.957599 14.949559 -63.290524 +v -6.786598 14.549508 -63.400349 +v -6.326203 13.472435 -63.696037 +v -6.155202 13.072384 -63.805862 +v -6.185306 13.094954 -63.934948 +v -6.356308 13.495004 -63.825123 +v -6.816702 14.572078 -63.529434 +v 2.272061 16.382017 -64.719925 +v 6.919391 15.028439 -65.385063 +v 1.941441 14.333323 -65.075943 +v 6.014364 13.147159 -65.658768 +v 1.956121 14.308144 -64.944679 +v 6.023434 13.123582 -65.526703 +v 2.286741 16.356838 -64.588661 +v 6.928461 15.004862 -65.252998 +v 3.639486 14.432042 -65.093842 +v 3.955875 15.582943 -64.907272 +v 4.073390 16.010416 -64.837982 +v 4.061042 16.035141 -64.969566 +v 3.943528 15.607668 -65.038857 +v 3.627139 14.456767 -65.225426 +v 3.509624 14.029295 -65.294716 +v 3.521971 14.004570 -65.163132 +v 5.223725 15.696383 -65.135406 +v 5.234668 15.672068 -65.003616 +v 5.086471 15.253538 -65.068535 +v 4.687474 14.126713 -65.243317 +v 4.539277 13.708183 -65.308228 +v 4.528334 13.732499 -65.440018 +v 4.676531 14.151029 -65.375099 +v 5.075528 15.277854 -65.200317 +v 12.920732 10.343353 -66.436890 +v 15.358313 6.173336 -67.100563 +v 11.269286 9.045071 -66.579681 +v 13.402566 5.395732 -67.160477 +v 11.273481 9.025116 -66.446777 +v 13.405785 5.377377 -67.027321 +v 12.924928 10.323400 -66.303986 +v 15.361531 6.154981 -66.967400 +v 12.574497 7.974792 -66.639816 +v 13.597559 8.614098 -66.575676 +v 13.977549 8.851552 -66.551857 +v 13.973867 8.870789 -66.684875 +v 13.593878 8.633334 -66.708702 +v 12.570817 7.994028 -66.772842 +v 12.190827 7.756574 -66.796661 +v 12.194508 7.737338 -66.663643 +v 14.591883 7.813262 -66.852608 +v 14.595324 7.794436 -66.719521 +v 14.198903 7.585104 -66.738884 +v 13.131605 7.021510 -66.791016 +v 12.735185 6.812178 -66.810379 +v 12.731744 6.831005 -66.943466 +v 13.128164 7.040337 -66.924103 +v 14.195463 7.603930 -66.871971 +v 16.496065 -1.356668 -68.152596 +v 15.394618 -6.072923 -68.818024 +v 14.398127 -1.193151 -68.081062 +v 13.434255 -5.320406 -68.663445 +v 14.401220 -1.211697 -67.947929 +v 13.436831 -5.340983 -68.530594 +v 16.499159 -1.375213 -68.019463 +v 15.397195 -6.093501 -68.685173 +v 14.622671 -2.875747 -68.188477 +v 15.808435 -3.099281 -68.247444 +v 16.248856 -3.182307 -68.269348 +v 16.245850 -3.163159 -68.402397 +v 15.805428 -3.080133 -68.380493 +v 14.619664 -2.856599 -68.321526 +v 14.179242 -2.773574 -68.299622 +v 14.182250 -2.792722 -68.166573 +v 15.970284 -4.342775 -68.568268 +v 15.973170 -4.362432 -68.435287 +v 15.540070 -4.248084 -68.408989 +v 14.374015 -3.940218 -68.338165 +v 13.940913 -3.825870 -68.311867 +v 13.938027 -3.806212 -68.444847 +v 14.371128 -3.920561 -68.471146 +v 15.537184 -4.228427 -68.541969 +v 11.041029 -12.317443 -69.869560 +v 6.999612 -14.979948 -70.534470 +v 9.621799 -10.788497 -69.584404 +v 6.080022 -13.121807 -70.167229 +v 9.620580 -10.814240 -69.452438 +v 6.073725 -13.150841 -70.036095 +v 11.039809 -12.343186 -69.737595 +v 6.993315 -15.008982 -70.403336 +v 8.636620 -12.168283 -69.738800 +v 9.349728 -13.126445 -69.920143 +v 9.614594 -13.482328 -69.987495 +v 9.617456 -13.455277 -70.119171 +v 9.352591 -13.099394 -70.051819 +v 8.639482 -12.141232 -69.870476 +v 8.374616 -11.785348 -69.803123 +v 8.371754 -11.812399 -69.671448 +v 8.606643 -14.121251 -70.284912 +v 8.602518 -14.149130 -70.153442 +v 8.364222 -13.775743 -70.081741 +v 7.722644 -12.770461 -69.888695 +v 7.484347 -12.397075 -69.816994 +v 7.488472 -12.369196 -69.948463 +v 7.726769 -12.742582 -70.020164 +v 8.368346 -13.747865 -70.213211 +v -0.448288 -16.514284 -71.584839 +v -5.206169 -15.666792 -72.248779 +v -0.455875 -14.467942 -71.089233 +v -4.637614 -13.722992 -71.672951 +v -0.474524 -14.499351 -70.959831 +v -4.666032 -13.752609 -71.544907 +v -0.466937 -16.545692 -71.455444 +v -5.234587 -15.696410 -72.120743 +v -2.116647 -14.796207 -71.291428 +v -2.238546 -15.959652 -71.593117 +v -2.283822 -16.391783 -71.705177 +v -2.261626 -16.360682 -71.834091 +v -2.216350 -15.928550 -71.722031 +v -2.094451 -14.765104 -71.420341 +v -2.049175 -14.332973 -71.308289 +v -2.071371 -14.364076 -71.179375 +v -3.451797 -16.148802 -71.999596 +v -3.476436 -16.179464 -71.871025 +v -3.400478 -15.752796 -71.754715 +v -3.195972 -14.604058 -71.441566 +v -3.120014 -14.177389 -71.325256 +v -3.095375 -14.146727 -71.453835 +v -3.171333 -14.573396 -71.570145 +v -3.375839 -15.722134 -71.883286 +v -11.655560 -11.662550 -73.297325 +v -14.512974 -7.793553 -73.958084 +v -10.316792 -10.196269 -72.596664 +v -12.838728 -6.781227 -73.180069 +v -10.360930 -10.215928 -72.471184 +v -12.890944 -6.789863 -73.056465 +v -11.699697 -11.682208 -73.171852 +v -14.565189 -7.802189 -73.834480 +v -11.745507 -9.293927 -72.846947 +v -12.595223 -10.043652 -73.265724 +v -12.910829 -10.322118 -73.421272 +v -12.863382 -10.306185 -73.546066 +v -12.547777 -10.027719 -73.390518 +v -11.698061 -9.277994 -72.971741 +v -11.382456 -8.999529 -72.816193 +v -11.429902 -9.015462 -72.691399 +v -13.579901 -9.335370 -73.711250 +v -13.629380 -9.348537 -73.586929 +v -13.295828 -9.094384 -73.427261 +v -12.397793 -8.410118 -72.997383 +v -12.064240 -8.155966 -72.837723 +v -12.014760 -8.142799 -72.962044 +v -12.348312 -8.396952 -73.121712 +v -13.246348 -9.081218 -73.551590 +v -16.439739 -0.455770 -75.005951 +v -15.852815 4.305229 -75.664948 +v -14.542843 -0.287756 -74.107758 +v -14.021640 3.937743 -74.692856 +v -14.601110 -0.272673 -73.987526 +v -14.077743 3.969972 -74.574989 +v -16.498007 -0.440688 -74.885719 +v -15.908917 4.337457 -75.547081 +v -14.954677 1.335513 -74.404251 +v -16.039484 1.355641 -74.935547 +v -16.442406 1.363117 -75.132881 +v -16.384340 1.341729 -75.252251 +v -15.981418 1.334253 -75.054916 +v -14.896611 1.314125 -74.523621 +v -14.493688 1.306648 -74.326286 +v -14.551754 1.328037 -74.206917 +v -16.237570 2.536273 -75.417015 +v -16.295097 2.561977 -75.298241 +v -15.895698 2.525777 -75.096962 +v -14.820377 2.428314 -74.555046 +v -14.420978 2.392114 -74.353767 +v -14.363448 2.366410 -74.472549 +v -14.762848 2.402610 -74.673828 +v -15.838169 2.500073 -75.215736 +v -12.221865 10.926380 -76.707924 +v -8.523306 13.977422 -77.366585 +v -10.787711 9.832311 -75.621918 +v -7.482629 12.558217 -76.210701 +v -10.829243 9.890769 -75.508179 +v -7.508103 12.629856 -76.099808 +v -12.263396 10.984838 -76.594185 +v -8.548780 14.049060 -77.255692 +v -9.955760 11.294123 -75.967194 +v -10.699773 12.000173 -76.605484 +v -10.976117 12.262416 -76.842567 +v -10.940036 12.198562 -76.955254 +v -10.663692 11.936317 -76.718178 +v -9.919679 11.230268 -76.079880 +v -9.643334 10.968024 -75.842804 +v -9.679416 11.031878 -75.730118 +v -10.014603 12.961808 -77.119484 +v -10.046660 13.028973 -77.007500 +v -9.791355 12.749364 -76.766708 +v -9.103985 11.996562 -76.118408 +v -8.848680 11.716954 -75.877609 +v -8.816622 11.649790 -75.989594 +v -9.071927 11.929398 -76.230385 +v -9.759296 12.682199 -76.878685 +v -1.358088 16.275688 -78.405914 +v 3.407368 15.946639 -79.062035 +v -1.055408 14.618115 -77.143356 +v 3.235830 14.321433 -77.734444 +v -1.047263 14.700376 -77.037315 +v 3.267972 14.401976 -77.631691 +v -1.349944 16.357948 -78.299866 +v 3.439509 16.027184 -78.959282 +v 0.553992 15.091748 -77.534592 +v 0.483758 16.045221 -78.273132 +v 0.457672 16.399363 -78.547440 +v 0.440646 16.316908 -78.652275 +v 0.466732 15.962766 -78.377960 +v 0.536965 15.009294 -77.639420 +v 0.563051 14.655150 -77.365112 +v 0.580078 14.737605 -77.260277 +v 1.632674 16.234676 -78.815788 +v 1.655690 16.316711 -78.711777 +v 1.656544 15.964296 -78.434021 +v 1.658842 15.015477 -77.686211 +v 1.659696 14.663063 -77.408455 +v 1.636680 14.581029 -77.512474 +v 1.635826 14.933443 -77.790230 +v 1.633528 15.882262 -78.538040 +v 10.169044 12.702814 -80.097107 +v 13.334653 9.252902 -80.740822 +v 9.346148 11.391288 -78.670242 +v 12.285814 8.172358 -79.269234 +v 9.414789 11.453936 -78.573067 +v 12.368340 8.220852 -79.174812 +v 10.237686 12.765462 -79.999939 +v 13.417178 9.301396 -80.646393 +v 10.803556 10.593777 -79.106148 +v 11.356781 11.270524 -79.940079 +v 11.562262 11.521884 -80.249825 +v 11.484971 11.467332 -80.345367 +v 11.279490 11.215972 -80.035622 +v 10.726266 10.539225 -79.201698 +v 10.520784 10.287865 -78.891953 +v 10.598076 10.342417 -78.796410 +v 12.264474 10.584704 -80.507126 +v 12.345196 10.635406 -80.412300 +v 12.127877 10.397442 -80.100067 +v 11.542781 9.756761 -79.259430 +v 11.325462 9.518796 -78.947197 +v 11.244740 9.468095 -79.042023 +v 11.462059 9.706059 -79.354256 +v 12.047155 10.346740 -80.194893 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.468750 0.593750 +vt 0.468750 0.656250 +vt 0.468750 0.750000 +vt 0.468750 0.000000 +vt 0.468750 1.000000 +vt 0.468750 0.093750 +vt 0.468750 0.156250 +vt 0.468750 0.250000 +vt 0.468750 0.500000 +vt 0.531250 0.000000 +vt 0.531250 1.000000 +vt 0.531250 0.750000 +vt 0.531250 0.656250 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.531250 0.250000 +vt 0.531250 0.156250 +vt 0.531250 0.093750 +vn 0.929287 0.368797 -0.020362 +vn 0.915425 0.402193 -0.015421 +vn 0.915419 0.402207 -0.015419 +vn 0.929287 0.368797 -0.020362 +vn -0.929152 -0.369140 0.020317 +vn -0.914816 -0.403584 0.015214 +vn -0.914823 -0.403569 0.015216 +vn -0.929152 -0.369140 0.020317 +vn -0.878457 -0.477805 0.003869 +vn -0.878457 -0.477806 0.003868 +vn -0.869683 -0.493609 0.001395 +vn -0.869683 -0.493609 0.001395 +vn 0.878899 0.476992 -0.003999 +vn 0.878899 0.476991 -0.003999 +vn 0.869783 0.493433 -0.001423 +vn 0.869783 0.493433 -0.001423 +vn -0.068524 0.117990 -0.990648 +vn -0.068707 0.118407 -0.990585 +vn -0.068293 0.117518 -0.990720 +vn -0.068395 0.117713 -0.990690 +vn -0.068384 0.117709 -0.990691 +vn -0.068541 0.118037 -0.990641 +vn -0.068704 0.118419 -0.990584 +vn -0.068276 0.117529 -0.990720 +vn 0.068543 -0.118036 0.990641 +vn 0.068719 -0.118417 0.990583 +vn 0.068303 -0.117527 0.990718 +vn 0.068390 -0.117708 0.990691 +vn 0.068392 -0.117712 0.990690 +vn 0.068525 -0.117989 0.990648 +vn 0.068724 -0.118406 0.990584 +vn 0.068296 -0.117516 0.990720 +vn -0.069080 0.119214 -0.990463 +vn 0.069087 -0.119211 0.990462 +vn 0.068121 -0.117145 0.990776 +vn -0.068086 0.117145 -0.990778 +vn -0.068097 0.117137 -0.990778 +vn 0.068074 -0.117135 0.990780 +vn 0.069072 -0.119218 0.990463 +vn -0.069065 0.119217 -0.990463 +vn 0.992378 0.109785 -0.055977 +vn 0.992378 0.109785 -0.055977 +vn 0.992378 0.109785 -0.055977 +vn 0.992378 0.109785 -0.055977 +vn 0.420142 -0.897175 -0.136224 +vn 0.420142 -0.897175 -0.136224 +vn 0.420142 -0.897175 -0.136224 +vn 0.420142 -0.897175 -0.136224 +vn -0.816583 -0.577091 -0.012593 +vn -0.816583 -0.577091 -0.012593 +vn -0.816583 -0.577091 -0.012593 +vn -0.816583 -0.577091 -0.012593 +vn -0.963898 -0.263957 0.035040 +vn -0.963898 -0.263957 0.035040 +vn -0.963898 -0.263957 0.035040 +vn -0.963898 -0.263957 0.035040 +vn -0.470403 0.871946 0.135764 +vn -0.470403 0.871946 0.135764 +vn -0.470403 0.871946 0.135764 +vn -0.470403 0.871946 0.135764 +vn 0.716446 0.696853 0.033192 +vn 0.716446 0.696853 0.033192 +vn 0.716446 0.696853 0.033192 +vn 0.716446 0.696853 0.033192 +vn 0.919831 -0.372151 -0.124155 +vn 0.933159 -0.339041 -0.119440 +vn 0.933183 -0.338977 -0.119431 +vn 0.919831 -0.372151 -0.124155 +vn -0.919823 0.372168 0.124165 +vn -0.933179 0.338987 0.119437 +vn -0.933154 0.339053 0.119446 +vn -0.919823 0.372168 0.124165 +vn -0.965980 0.236467 0.104720 +vn -0.965969 0.236509 0.104726 +vn -0.974370 0.201659 0.099689 +vn -0.974369 0.201659 0.099689 +vn 0.965973 -0.236491 -0.104725 +vn 0.965985 -0.236448 -0.104719 +vn 0.974370 -0.201657 -0.099689 +vn 0.974370 -0.201657 -0.099689 +vn -0.066276 0.164203 -0.984198 +vn -0.065190 0.167226 -0.983761 +vn -0.067869 0.158918 -0.984956 +vn -0.067100 0.161649 -0.984565 +vn -0.067177 0.161381 -0.984603 +vn -0.066172 0.164483 -0.984158 +vn -0.065184 0.167219 -0.983763 +vn -0.067883 0.158891 -0.984960 +vn 0.066164 -0.164484 0.984158 +vn 0.065162 -0.167223 0.983763 +vn 0.067864 -0.158893 0.984961 +vn 0.067171 -0.161381 0.984604 +vn 0.067102 -0.161648 0.984564 +vn 0.066272 -0.164204 0.984198 +vn 0.065174 -0.167228 0.983762 +vn 0.067875 -0.158919 0.984956 +vn -0.063074 0.173020 -0.982897 +vn 0.063047 -0.173025 0.982897 +vn 0.069339 -0.153634 0.985692 +vn -0.069358 0.153633 -0.985691 +vn -0.069336 0.153646 -0.985690 +vn 0.069357 -0.153646 0.985689 +vn 0.063050 -0.173045 0.982894 +vn -0.063080 0.173045 -0.982892 +vn 0.784782 -0.599911 -0.155640 +vn 0.784782 -0.599911 -0.155640 +vn 0.784782 -0.599911 -0.155640 +vn 0.784782 -0.599911 -0.155640 +vn -0.336517 -0.931864 -0.135594 +vn -0.336517 -0.931864 -0.135594 +vn -0.336517 -0.931864 -0.135594 +vn -0.336517 -0.931864 -0.135594 +vn -0.985846 0.142720 0.087977 +vn -0.985845 0.142720 0.087977 +vn -0.985846 0.142720 0.087977 +vn -0.985846 0.142720 0.087977 +vn -0.894691 0.427551 0.129338 +vn -0.894691 0.427551 0.129338 +vn -0.894691 0.427551 0.129338 +vn -0.894691 0.427551 0.129338 +vn 0.267421 0.953991 0.135598 +vn 0.267421 0.953991 0.135598 +vn 0.267421 0.953991 0.135598 +vn 0.267421 0.953991 0.135598 +vn 0.996303 0.061260 -0.060221 +vn 0.996303 0.061260 -0.060221 +vn 0.996304 0.061260 -0.060221 +vn 0.996304 0.061260 -0.060221 +vn 0.416841 -0.880904 -0.224170 +vn 0.448768 -0.866233 -0.219653 +vn 0.448872 -0.866183 -0.219638 +vn 0.416841 -0.880904 -0.224170 +vn -0.416877 0.880889 0.224162 +vn -0.448883 0.866177 0.219638 +vn -0.448777 0.866228 0.219653 +vn -0.416877 0.880889 0.224163 +vn -0.541586 0.815221 0.205181 +vn -0.541507 0.815270 0.205194 +vn -0.571035 0.796159 0.200123 +vn -0.571035 0.796160 0.200123 +vn 0.541509 -0.815269 -0.205196 +vn 0.541589 -0.815219 -0.205183 +vn 0.571048 -0.796148 -0.200129 +vn 0.571048 -0.796149 -0.200129 +vn 0.015163 0.253055 -0.967333 +vn 0.020463 0.255713 -0.966536 +vn 0.005923 0.247758 -0.968804 +vn 0.010685 0.250604 -0.968031 +vn 0.010222 0.250335 -0.968105 +vn 0.015644 0.253299 -0.967262 +vn 0.020447 0.255712 -0.966537 +vn 0.005864 0.247742 -0.968808 +vn -0.015641 -0.253303 0.967261 +vn -0.020439 -0.255723 0.966534 +vn -0.005874 -0.247747 0.968807 +vn -0.010224 -0.250336 0.968105 +vn -0.010685 -0.250604 0.968031 +vn -0.015165 -0.253055 0.967333 +vn -0.020465 -0.255715 0.966536 +vn -0.005925 -0.247761 0.968803 +vn 0.030628 0.260797 -0.964908 +vn -0.030610 -0.260812 0.964904 +vn 0.003297 -0.242247 0.970209 +vn -0.003321 0.242245 -0.970209 +vn -0.003278 0.242246 -0.970209 +vn 0.003293 -0.242246 0.970209 +vn -0.030649 -0.260812 0.964903 +vn 0.030665 0.260812 -0.964903 +vn 0.162074 -0.954035 -0.252092 +vn 0.162074 -0.954035 -0.252092 +vn 0.162074 -0.954035 -0.252092 +vn 0.162074 -0.954035 -0.252092 +vn -0.885310 -0.444776 -0.135648 +vn -0.885310 -0.444776 -0.135648 +vn -0.885310 -0.444776 -0.135648 +vn -0.885310 -0.444776 -0.135648 +vn -0.622705 0.760268 0.185015 +vn -0.622705 0.760268 0.185015 +vn -0.622705 0.760268 0.185015 +vn -0.622705 0.760268 0.185015 +vn -0.357351 0.905994 0.226883 +vn -0.357351 0.905994 0.226883 +vn -0.357351 0.905994 0.226883 +vn -0.357351 0.905994 0.226883 +vn 0.850289 0.508540 0.135631 +vn 0.850289 0.508540 0.135631 +vn 0.850289 0.508540 0.135631 +vn 0.850289 0.508540 0.135631 +vn 0.767611 -0.621357 -0.157127 +vn 0.767611 -0.621357 -0.157127 +vn 0.767611 -0.621357 -0.157127 +vn 0.767611 -0.621357 -0.157127 +vn -0.281011 -0.904170 -0.321728 +vn -0.248727 -0.915072 -0.317455 +vn -0.248581 -0.915119 -0.317435 +vn -0.281011 -0.904170 -0.321728 +vn 0.281027 0.904171 0.321713 +vn 0.248601 0.915118 0.317423 +vn 0.248750 0.915070 0.317444 +vn 0.281027 0.904171 0.321713 +vn 0.149419 0.941065 0.303431 +vn 0.149554 0.941038 0.303450 +vn 0.115851 0.947383 0.298404 +vn 0.115851 0.947383 0.298404 +vn -0.149581 -0.941033 -0.303450 +vn -0.149443 -0.941062 -0.303430 +vn -0.115878 -0.947383 -0.298394 +vn -0.115878 -0.947383 -0.298394 +vn 0.207796 0.269596 -0.940287 +vn 0.215920 0.267146 -0.939155 +vn 0.192609 0.273288 -0.942452 +vn 0.200609 0.271489 -0.941302 +vn 0.199860 0.271664 -0.941411 +vn 0.208515 0.269382 -0.940189 +vn 0.215916 0.267151 -0.939154 +vn 0.192539 0.273318 -0.942458 +vn -0.208503 -0.269382 0.940191 +vn -0.215916 -0.267146 0.939156 +vn -0.192526 -0.273306 0.942464 +vn -0.199841 -0.271663 0.941415 +vn -0.200592 -0.271497 0.941303 +vn -0.207785 -0.269600 0.940288 +vn -0.215924 -0.267150 0.939153 +vn -0.192609 -0.273300 0.942448 +vn 0.231604 0.262347 -0.936768 +vn -0.231618 -0.262346 0.936765 +vn -0.177059 -0.276725 0.944496 +vn 0.177077 0.276740 -0.944489 +vn 0.177111 0.276715 -0.944490 +vn -0.177105 -0.276732 0.944486 +vn -0.231639 -0.262337 0.936762 +vn 0.231634 0.262339 -0.936762 +vn -0.518344 -0.781937 -0.346257 +vn -0.518344 -0.781937 -0.346257 +vn -0.518344 -0.781937 -0.346257 +vn -0.518344 -0.781937 -0.346257 +vn -0.948450 0.286438 -0.135632 +vn -0.948450 0.286438 -0.135632 +vn -0.948450 0.286438 -0.135632 +vn -0.948450 0.286438 -0.135632 +vn 0.047171 0.959055 0.279264 +vn 0.047171 0.959055 0.279264 +vn 0.047171 0.959055 0.279264 +vn 0.047171 0.959055 0.279265 +vn 0.347355 0.880603 0.322309 +vn 0.347355 0.880603 0.322309 +vn 0.347355 0.880603 0.322309 +vn 0.347355 0.880603 0.322309 +vn 0.966916 -0.216035 0.135658 +vn 0.966916 -0.216035 0.135658 +vn 0.966916 -0.216035 0.135658 +vn 0.966916 -0.216035 0.135658 +vn 0.146203 -0.956630 -0.251958 +vn 0.146203 -0.956631 -0.251958 +vn 0.146203 -0.956631 -0.251958 +vn 0.146203 -0.956630 -0.251958 +vn -0.785942 -0.457570 -0.415841 +vn -0.770580 -0.486407 -0.411844 +vn -0.770486 -0.486577 -0.411819 +vn -0.785942 -0.457570 -0.415841 +vn 0.785930 0.457586 0.415849 +vn 0.770482 0.486576 0.411827 +vn 0.770577 0.486403 0.411853 +vn 0.785929 0.457585 0.415849 +vn 0.718463 0.570177 0.398383 +vn 0.718562 0.570034 0.398408 +vn 0.699272 0.596838 0.393451 +vn 0.699272 0.596838 0.393451 +vn -0.718570 -0.570027 -0.398405 +vn -0.718468 -0.570173 -0.398379 +vn -0.699285 -0.596823 -0.393450 +vn -0.699285 -0.596823 -0.393450 +vn 0.415352 0.106618 -0.903391 +vn 0.420864 0.097015 -0.901921 +vn 0.404292 0.123754 -0.906219 +vn 0.410224 0.114892 -0.904719 +vn 0.409691 0.115688 -0.904859 +vn 0.415827 0.105796 -0.903269 +vn 0.420864 0.097020 -0.901921 +vn 0.404234 0.123829 -0.906235 +vn -0.415827 -0.105793 0.903270 +vn -0.420850 -0.097020 0.901927 +vn -0.404229 -0.123828 0.906237 +vn -0.409691 -0.115689 0.904859 +vn -0.410224 -0.114894 0.904719 +vn -0.415359 -0.106612 0.903389 +vn -0.420864 -0.097013 0.901921 +vn -0.404285 -0.123752 0.906222 +vn 0.431332 0.078477 -0.898774 +vn -0.431315 -0.078480 0.898782 +vn -0.392555 -0.141003 0.908856 +vn 0.392553 0.141002 -0.908857 +vn 0.392602 0.140973 -0.908840 +vn -0.392586 -0.140972 0.908847 +vn -0.431353 -0.078440 0.898767 +vn 0.431354 0.078439 -0.898766 +vn -0.875088 -0.208057 -0.436959 +vn -0.875088 -0.208057 -0.436959 +vn -0.875088 -0.208057 -0.436959 +vn -0.875088 -0.208057 -0.436959 +vn -0.491844 0.860053 -0.135640 +vn -0.491844 0.860053 -0.135640 +vn -0.491844 0.860053 -0.135640 +vn -0.491844 0.860053 -0.135640 +vn 0.655823 0.657544 0.370853 +vn 0.655823 0.657544 0.370853 +vn 0.655823 0.657544 0.370853 +vn 0.655823 0.657544 0.370853 +vn 0.823375 0.387443 0.414659 +vn 0.823375 0.387443 0.414658 +vn 0.823375 0.387443 0.414658 +vn 0.823375 0.387443 0.414659 +vn 0.553564 -0.821686 0.135645 +vn 0.553564 -0.821686 0.135645 +vn 0.553564 -0.821686 0.135645 +vn 0.553564 -0.821686 0.135645 +vn -0.515521 -0.785108 -0.343283 +vn -0.515521 -0.785108 -0.343283 +vn -0.515521 -0.785108 -0.343283 +vn -0.515521 -0.785108 -0.343283 +vn -0.843100 0.183094 -0.505627 +vn -0.851245 0.153225 -0.501901 +vn -0.851300 0.153009 -0.501872 +vn -0.843101 0.183094 -0.505627 +vn 0.843088 -0.183087 0.505649 +vn 0.851282 -0.153018 0.501901 +vn 0.851225 -0.153237 0.501930 +vn 0.843088 -0.183087 0.505649 +vn 0.870071 -0.061188 0.489113 +vn 0.870039 -0.061398 0.489144 +vn 0.874340 -0.030322 0.484366 +vn 0.874340 -0.030322 0.484365 +vn -0.870047 0.061385 -0.489132 +vn -0.870079 0.061171 -0.489101 +vn -0.874335 0.030330 -0.484374 +vn -0.874335 0.030330 -0.484374 +vn 0.465229 -0.221667 -0.856987 +vn 0.462075 -0.234755 -0.855206 +vn 0.469865 -0.196925 -0.860493 +vn 0.467654 -0.209888 -0.858631 +vn 0.467851 -0.208771 -0.858796 +vn 0.464973 -0.222732 -0.856849 +vn 0.462068 -0.234748 -0.855211 +vn 0.469892 -0.196814 -0.860503 +vn -0.464965 0.222738 0.856852 +vn -0.462048 0.234749 0.855222 +vn -0.469878 0.196816 0.860510 +vn -0.467847 0.208772 0.858798 +vn -0.467653 0.209886 0.858632 +vn -0.465223 0.221677 0.856987 +vn -0.462058 0.234762 0.855213 +vn -0.469857 0.196927 0.860497 +vn 0.455722 -0.259903 -0.851333 +vn -0.455702 0.259901 0.851344 +vn -0.473936 0.171626 0.863672 +vn 0.473940 -0.171627 -0.863669 +vn 0.473931 -0.171678 -0.863665 +vn -0.473909 0.171684 0.863675 +vn -0.455701 0.259959 0.851327 +vn 0.455743 -0.259943 -0.851310 +vn -0.737868 0.425932 -0.523576 +vn -0.737868 0.425932 -0.523576 +vn -0.737868 0.425932 -0.523576 +vn -0.737868 0.425932 -0.523576 +vn 0.234773 0.962540 -0.135643 +vn 0.234773 0.962540 -0.135643 +vn 0.234773 0.962540 -0.135643 +vn 0.234773 0.962540 -0.135643 +vn 0.887549 0.051410 0.457836 +vn 0.887549 0.051410 0.457835 +vn 0.887549 0.051410 0.457836 +vn 0.887549 0.051410 0.457836 +vn 0.822057 -0.267153 0.502844 +vn 0.822057 -0.267152 0.502844 +vn 0.822057 -0.267152 0.502844 +vn 0.822057 -0.267153 0.502844 +vn -0.163732 -0.977135 0.135642 +vn -0.163732 -0.977135 0.135642 +vn -0.163732 -0.977135 0.135642 +vn -0.163732 -0.977135 0.135642 +vn -0.872333 -0.229820 -0.431531 +vn -0.872333 -0.229820 -0.431531 +vn -0.872333 -0.229820 -0.431531 +vn -0.872333 -0.229820 -0.431531 +vn -0.467835 0.657943 -0.590119 +vn -0.492509 0.642833 -0.586687 +vn -0.492715 0.642703 -0.586655 +vn -0.467835 0.657943 -0.590119 +vn 0.467807 -0.657967 0.590115 +vn 0.492693 -0.642721 0.586655 +vn 0.492483 -0.642852 0.586686 +vn 0.467807 -0.657967 0.590115 +vn 0.564524 -0.592474 0.574707 +vn 0.564338 -0.592618 0.574741 +vn 0.587324 -0.574364 0.570225 +vn 0.587324 -0.574364 0.570225 +vn -0.564362 0.592601 -0.574735 +vn -0.564550 0.592454 -0.574701 +vn -0.587336 0.574355 -0.570222 +vn -0.587336 0.574355 -0.570222 +vn 0.239640 -0.547721 -0.801608 +vn 0.226461 -0.556285 -0.799539 +vn 0.263600 -0.530407 -0.805719 +vn 0.251267 -0.539618 -0.803541 +vn 0.252265 -0.538876 -0.803726 +vn 0.238641 -0.548379 -0.801456 +vn 0.226479 -0.556281 -0.799536 +vn 0.263692 -0.530329 -0.805741 +vn -0.238629 0.548382 0.801457 +vn -0.226470 0.556275 0.799543 +vn -0.263690 0.530327 0.805743 +vn -0.252264 0.538875 0.803727 +vn -0.251267 0.539617 0.803541 +vn -0.239628 0.547728 0.801606 +vn -0.226458 0.556286 0.799539 +vn -0.263596 0.530409 0.805719 +vn 0.200812 -0.572461 -0.794961 +vn -0.200800 0.572452 0.794971 +vn -0.287415 0.512089 0.809418 +vn 0.287409 -0.512090 -0.809420 +vn 0.287383 -0.512132 -0.809402 +vn -0.287372 0.512134 0.809405 +vn -0.200734 0.572483 0.794965 +vn 0.200738 -0.572484 -0.794963 +vn -0.225586 0.763529 -0.605090 +vn -0.225586 0.763529 -0.605090 +vn -0.225586 0.763529 -0.605090 +vn -0.225586 0.763529 -0.605090 +vn 0.832602 0.537005 -0.135646 +vn 0.832602 0.537005 -0.135646 +vn 0.832602 0.537005 -0.135646 +vn 0.832602 0.537005 -0.135646 +vn 0.662513 -0.519517 0.539609 +vn 0.662513 -0.519517 0.539609 +vn 0.662513 -0.519517 0.539609 +vn 0.662513 -0.519517 0.539609 +vn 0.386566 -0.712042 0.586142 +vn 0.386566 -0.712042 0.586142 +vn 0.386566 -0.712042 0.586142 +vn 0.386566 -0.712042 0.586142 +vn -0.791131 -0.596418 0.135641 +vn -0.791131 -0.596418 0.135641 +vn -0.791131 -0.596418 0.135641 +vn -0.791131 -0.596418 0.135641 +vn -0.765445 0.386429 -0.514555 +vn -0.765445 0.386429 -0.514555 +vn -0.765445 0.386429 -0.514555 +vn -0.765445 0.386429 -0.514555 +vn 0.087032 0.738704 -0.668387 +vn 0.060946 0.744135 -0.665243 +vn 0.060702 0.744183 -0.665212 +vn 0.087032 0.738704 -0.668387 +vn -0.087029 -0.738707 0.668384 +vn -0.060702 -0.744180 0.665216 +vn -0.060949 -0.744131 0.665248 +vn -0.087029 -0.738707 0.668384 +vn 0.018841 -0.756042 0.654252 +vn 0.018595 -0.756017 0.654287 +vn 0.045521 -0.758483 0.650101 +vn 0.045521 -0.758483 0.650101 +vn -0.018611 0.756025 -0.654278 +vn -0.018859 0.756051 -0.654242 +vn -0.045527 0.758486 -0.650097 +vn -0.045527 0.758486 -0.650097 +vn -0.207097 -0.642425 -0.737835 +vn -0.224484 -0.639237 -0.735516 +vn -0.173842 -0.646879 -0.742514 +vn -0.191165 -0.644828 -0.740036 +vn -0.189869 -0.644992 -0.740226 +vn -0.208310 -0.642211 -0.737680 +vn -0.224460 -0.639244 -0.735516 +vn -0.173708 -0.646902 -0.742525 +vn 0.208315 0.642209 0.737680 +vn 0.224458 0.639242 0.735520 +vn 0.173706 0.646895 0.742532 +vn 0.189862 0.644990 0.740230 +vn 0.191154 0.644829 0.740038 +vn 0.207106 0.642424 0.737834 +vn 0.224483 0.639237 0.735516 +vn 0.173838 0.646878 0.742515 +vn -0.258183 -0.632436 -0.730319 +vn 0.258185 0.632433 0.730321 +vn 0.139868 0.650303 0.746688 +vn -0.139867 -0.650314 -0.746679 +vn -0.139925 -0.650299 -0.746680 +vn 0.139930 0.650297 0.746681 +vn 0.258281 0.632413 0.730305 +vn -0.258274 -0.632414 -0.730306 +vn 0.337336 0.650407 -0.680570 +vn 0.337336 0.650407 -0.680570 +vn 0.337336 0.650407 -0.680570 +vn 0.337336 0.650407 -0.680570 +vn 0.973682 -0.183155 -0.135641 +vn 0.973682 -0.183155 -0.135641 +vn 0.973682 -0.183155 -0.135641 +vn 0.973682 -0.183155 -0.135641 +vn 0.151214 -0.774072 0.614775 +vn 0.151214 -0.774072 0.614775 +vn 0.151214 -0.774072 0.614774 +vn 0.151214 -0.774072 0.614774 +vn -0.196177 -0.721886 0.663623 +vn -0.196177 -0.721886 0.663623 +vn -0.196177 -0.721886 0.663623 +vn -0.196177 -0.721886 0.663623 +vn -0.984465 0.111498 0.135638 +vn -0.984465 0.111498 0.135638 +vn -0.984465 0.111498 0.135638 +vn -0.984465 0.111498 0.135638 +vn -0.302821 0.746969 -0.591893 +vn -0.302821 0.746969 -0.591893 +vn -0.302821 0.746969 -0.591893 +vn -0.302821 0.746969 -0.591893 +vn 0.504860 0.444914 -0.739708 +vn 0.490899 0.464851 -0.736839 +vn 0.490757 0.465050 -0.736808 +vn 0.504860 0.444914 -0.739708 +vn -0.504816 -0.444923 0.739732 +vn -0.490746 -0.465043 0.736820 +vn -0.490889 -0.464842 0.736851 +vn -0.504816 -0.444923 0.739732 +vn -0.446134 -0.522051 0.726930 +vn -0.446289 -0.521871 0.726964 +vn -0.430031 -0.540497 0.723143 +vn -0.430031 -0.540497 0.723143 +vn 0.446240 0.521895 -0.726977 +vn 0.446083 0.522078 -0.726942 +vn 0.429979 0.540514 -0.723161 +vn 0.429979 0.540514 -0.723161 +vn -0.644037 -0.375742 -0.666359 +vn -0.655571 -0.359989 -0.663803 +vn -0.620815 -0.404518 -0.671531 +vn -0.633073 -0.389785 -0.668795 +vn -0.632261 -0.390780 -0.668982 +vn -0.644778 -0.374748 -0.666203 +vn -0.655578 -0.359988 -0.663797 +vn -0.620740 -0.404621 -0.671539 +vn 0.644780 0.374741 0.666204 +vn 0.655568 0.359991 0.663805 +vn 0.620730 0.404622 0.671547 +vn 0.632254 0.390786 0.668985 +vn 0.633073 0.389791 0.668791 +vn 0.644049 0.375730 0.666354 +vn 0.655580 0.359984 0.663796 +vn 0.620830 0.404513 0.671520 +vn -0.677631 -0.328445 -0.657982 +vn 0.677617 0.328448 0.657995 +vn 0.595757 0.433366 0.676216 +vn -0.595775 -0.433361 -0.676203 +vn -0.595810 -0.433300 -0.676211 +vn 0.595834 0.433292 0.676195 +vn 0.677682 0.328366 0.657969 +vn -0.677674 -0.328369 -0.657976 +vn 0.627690 0.210554 -0.749448 +vn 0.627690 0.210554 -0.749448 +vn 0.627690 0.210554 -0.749448 +vn 0.627690 0.210554 -0.749448 +vn 0.580523 -0.802865 -0.135650 +vn 0.580523 -0.802865 -0.135650 +vn 0.580523 -0.802865 -0.135650 +vn 0.580523 -0.802865 -0.135650 +vn -0.357684 -0.636158 0.683641 +vn -0.357684 -0.636158 0.683641 +vn -0.357684 -0.636158 0.683641 +vn -0.357684 -0.636158 0.683641 +vn -0.583531 -0.346713 0.734358 +vn -0.583531 -0.346713 0.734358 +vn -0.583531 -0.346713 0.734358 +vn -0.583531 -0.346713 0.734358 +vn -0.638344 0.757706 0.135639 +vn -0.638344 0.757706 0.135639 +vn -0.638344 0.757706 0.135639 +vn -0.638344 0.757706 0.135639 +vn 0.236600 0.711097 -0.662089 +vn 0.236600 0.711097 -0.662089 +vn 0.236600 0.711097 -0.662089 +vn 0.236600 0.711097 -0.662089 +vn 0.595595 -0.000831 -0.803284 +vn 0.598649 0.020153 -0.800758 +vn 0.598682 0.020391 -0.800727 +vn 0.595595 -0.000831 -0.803284 +vn -0.595630 0.000840 0.803258 +vn -0.598714 -0.020370 0.800704 +vn -0.598681 -0.020130 0.800735 +vn -0.595630 0.000840 0.803258 +vn -0.604742 -0.084520 0.791924 +vn -0.604731 -0.084282 0.791958 +vn -0.605669 -0.105926 0.788635 +vn -0.605669 -0.105926 0.788635 +vn 0.604746 0.084290 -0.791945 +vn 0.604759 0.084531 -0.791910 +vn 0.605718 0.105920 -0.788598 +vn 0.605718 0.105920 -0.788598 +vn -0.791605 0.166719 -0.587849 +vn -0.788944 0.187863 -0.585042 +vn -0.794879 0.125984 -0.593545 +vn -0.793501 0.146923 -0.590567 +vn -0.793593 0.145667 -0.590754 +vn -0.791466 0.167912 -0.587696 +vn -0.788948 0.187849 -0.585041 +vn -0.794882 0.125864 -0.593567 +vn 0.791469 -0.167922 0.587690 +vn 0.788955 -0.187848 0.585032 +vn 0.794891 -0.125866 0.593554 +vn 0.793599 -0.145660 0.590749 +vn 0.793501 -0.146913 0.590569 +vn 0.791604 -0.166736 0.587846 +vn 0.788942 -0.187868 0.585044 +vn 0.794872 -0.125988 0.593553 +vn -0.782698 0.228899 -0.578783 +vn 0.782710 -0.228893 0.578769 +vn 0.796547 -0.084710 0.598612 +vn -0.796529 0.084711 -0.598637 +vn -0.796551 0.084810 -0.598593 +vn 0.796541 -0.084812 0.598607 +vn 0.782690 -0.228994 0.578756 +vn -0.782691 0.228992 -0.578755 +vn 0.527281 -0.253610 -0.810960 +vn 0.527281 -0.253610 -0.810960 +vn 0.527281 -0.253610 -0.810960 +vn 0.527281 -0.253610 -0.810960 +vn -0.130479 -0.982129 -0.135642 +vn -0.130479 -0.982129 -0.135642 +vn -0.130479 -0.982129 -0.135642 +vn -0.130479 -0.982129 -0.135642 +vn -0.622687 -0.237840 0.745449 +vn -0.622687 -0.237840 0.745449 +vn -0.622687 -0.237840 0.745449 +vn -0.622687 -0.237840 0.745449 +vn -0.586443 0.139948 0.797809 +vn -0.586443 0.139948 0.797809 +vn -0.586443 0.139948 0.797809 +vn -0.586443 0.139948 0.797809 +vn 0.058075 0.989055 0.135638 +vn 0.058075 0.989055 0.135638 +vn 0.058075 0.989055 0.135638 +vn 0.058075 0.989055 0.135638 +vn 0.585819 0.359806 -0.726193 +vn 0.585819 0.359806 -0.726193 +vn 0.585819 0.359806 -0.726193 +vn 0.585819 0.359806 -0.726193 +vn 0.387398 -0.336130 -0.858452 +vn 0.401555 -0.324873 -0.856277 +vn 0.401725 -0.324737 -0.856249 +vn 0.387398 -0.336130 -0.858452 +vn -0.387389 0.336126 0.858458 +vn -0.401701 0.324748 0.856257 +vn -0.401530 0.324885 0.856285 +vn -0.387389 0.336126 0.858458 +vn -0.443271 0.288439 0.848713 +vn -0.443110 0.288590 0.848745 +vn -0.456579 0.275696 0.845888 +vn -0.456580 0.275696 0.845888 +vn 0.443134 -0.288579 -0.848737 +vn 0.443296 -0.288426 -0.848705 +vn 0.456597 -0.275693 -0.845880 +vn 0.456597 -0.275693 -0.845880 +vn -0.505031 0.701304 -0.503107 +vn -0.487518 0.715694 -0.500108 +vn -0.537716 0.671978 -0.509223 +vn -0.521226 0.687198 -0.506046 +vn -0.522089 0.686416 -0.506218 +vn -0.504192 0.702006 -0.502970 +vn -0.487525 0.715684 -0.500115 +vn -0.537800 0.671898 -0.509239 +vn 0.504182 -0.702014 0.502969 +vn 0.487522 -0.715685 0.500117 +vn 0.537791 -0.671904 0.509241 +vn 0.522093 -0.686411 0.506220 +vn 0.521238 -0.687188 0.506047 +vn 0.505016 -0.701316 0.503106 +vn 0.487508 -0.715699 0.500112 +vn 0.537721 -0.671975 0.509220 +vn -0.452428 0.742821 -0.493484 +vn 0.452427 -0.742820 0.493485 +vn 0.569373 -0.640995 0.514723 +vn -0.569383 0.640989 -0.514719 +vn -0.569314 0.641060 -0.514707 +vn 0.569332 -0.641051 0.514698 +vn 0.452351 -0.742880 0.493466 +vn -0.452369 0.742872 -0.493461 +vn 0.166360 -0.474556 -0.864362 +vn 0.166360 -0.474556 -0.864362 +vn 0.166360 -0.474555 -0.864362 +vn 0.166360 -0.474556 -0.864362 +vn -0.770504 -0.622835 -0.135648 +vn -0.770504 -0.622835 -0.135648 +vn -0.770504 -0.622835 -0.135648 +vn -0.770504 -0.622835 -0.135648 +vn -0.573371 0.183082 0.798578 +vn -0.573371 0.183082 0.798578 +vn -0.573371 0.183082 0.798578 +vn -0.573371 0.183082 0.798578 +vn -0.274234 0.443477 0.853302 +vn -0.274234 0.443477 0.853302 +vn -0.274234 0.443477 0.853302 +vn -0.274234 0.443477 0.853302 +vn 0.722669 0.677754 0.135646 +vn 0.722669 0.677754 0.135646 +vn 0.722669 0.677754 0.135646 +vn 0.722669 0.677754 0.135646 +vn 0.618162 -0.080784 -0.781888 +vn 0.618162 -0.080784 -0.781888 +vn 0.618162 -0.080784 -0.781888 +vn 0.618162 -0.080784 -0.781888 +vn 0.068353 -0.420687 -0.904627 +vn 0.083087 -0.421931 -0.902813 +vn 0.083274 -0.421946 -0.902789 +vn 0.068353 -0.420687 -0.904627 +vn -0.068354 0.420675 0.904633 +vn -0.083261 0.421929 0.902798 +vn -0.083073 0.421914 0.902822 +vn -0.068354 0.420675 0.904633 +vn -0.128569 0.423768 0.896599 +vn -0.128375 0.423768 0.896627 +vn -0.143771 0.423741 0.894301 +vn -0.143771 0.423741 0.894301 +vn 0.128386 -0.423782 -0.896619 +vn 0.128582 -0.423782 -0.896591 +vn 0.143772 -0.423750 -0.894296 +vn 0.143772 -0.423750 -0.894296 +vn 0.106504 0.904465 -0.413038 +vn 0.130210 0.902797 -0.409881 +vn 0.060018 0.905770 -0.419498 +vn 0.083653 0.905432 -0.416168 +vn 0.082634 0.905456 -0.416318 +vn 0.107441 0.904408 -0.412920 +vn 0.130192 0.902796 -0.409889 +vn 0.059914 0.905769 -0.419516 +vn -0.107456 -0.904407 0.412918 +vn -0.130192 -0.902796 0.409889 +vn -0.059918 -0.905768 0.419517 +vn -0.082625 -0.905456 0.416320 +vn -0.083639 -0.905431 0.416172 +vn -0.106523 -0.904463 0.413037 +vn -0.130210 -0.902795 0.409887 +vn -0.060018 -0.905767 0.419504 +vn 0.176659 0.897995 -0.402985 +vn -0.176661 -0.897996 0.402982 +vn -0.013203 -0.904918 0.425382 +vn 0.013200 0.904918 -0.425382 +vn 0.013283 0.904922 -0.425369 +vn -0.013285 -0.904920 0.425374 +vn -0.176740 -0.897984 0.402973 +vn 0.176741 0.897986 -0.402968 +vn -0.186810 -0.372383 -0.909083 +vn -0.186810 -0.372383 -0.909083 +vn -0.186810 -0.372383 -0.909084 +vn -0.186810 -0.372383 -0.909083 +vn -0.987668 0.078180 -0.135644 +vn -0.987668 0.078180 -0.135644 +vn -0.987668 0.078180 -0.135644 +vn -0.987668 0.078180 -0.135644 +vn -0.309160 0.440375 0.842906 +vn -0.309160 0.440375 0.842906 +vn -0.309160 0.440375 0.842905 +vn -0.309160 0.440375 0.842905 +vn 0.105227 0.422730 0.900126 +vn 0.105227 0.422730 0.900126 +vn 0.105227 0.422730 0.900126 +vn 0.105227 0.422730 0.900126 +vn 0.990742 -0.005525 0.135644 +vn 0.990742 -0.005525 0.135644 +vn 0.990742 -0.005525 0.135644 +vn 0.990742 -0.005525 0.135644 +vn 0.394041 -0.396761 -0.829043 +vn 0.394041 -0.396761 -0.829043 +vn 0.394041 -0.396761 -0.829043 +vn 0.394041 -0.396761 -0.829043 +vn -0.161965 -0.296202 -0.941293 +vn -0.154313 -0.304753 -0.939848 +vn -0.154216 -0.304860 -0.939829 +vn -0.161965 -0.296202 -0.941293 +vn 0.161973 0.296190 0.941295 +vn 0.154211 0.304842 0.939835 +vn 0.154308 0.304734 0.939854 +vn 0.161973 0.296190 0.941295 +vn 0.129960 0.329748 0.935081 +vn 0.130071 0.329643 0.935103 +vn 0.121308 0.337959 0.933310 +vn 0.121308 0.337959 0.933310 +vn -0.130103 -0.329651 -0.935095 +vn -0.129992 -0.329758 -0.935073 +vn -0.121349 -0.337955 -0.933306 +vn -0.121349 -0.337955 -0.933306 +vn 0.717983 0.618842 -0.318646 +vn 0.734511 0.600854 -0.315388 +vn 0.684102 0.652829 -0.325298 +vn 0.701522 0.635814 -0.321882 +vn 0.700942 0.636393 -0.322000 +vn 0.718485 0.618307 -0.318551 +vn 0.734498 0.600868 -0.315389 +vn 0.684028 0.652900 -0.325311 +vn -0.718499 -0.618294 0.318548 +vn -0.734504 -0.600862 0.315387 +vn -0.684024 -0.652903 0.325314 +vn -0.700932 -0.636403 0.322003 +vn -0.701508 -0.635827 0.321887 +vn -0.717994 -0.618830 0.318646 +vn -0.734505 -0.600858 0.315392 +vn -0.684096 -0.652833 0.325303 +vn 0.766351 0.563631 -0.308264 +vn -0.766363 -0.563617 0.308259 +vn -0.647734 -0.685922 0.331589 +vn 0.647747 0.685913 -0.331583 +vn 0.647786 0.685879 -0.331578 +vn -0.647790 -0.685874 0.331580 +vn -0.766388 -0.563584 0.308258 +vn 0.766387 0.563586 -0.308258 +vn -0.316937 -0.087029 -0.944445 +vn -0.316937 -0.087029 -0.944445 +vn -0.316937 -0.087029 -0.944445 +vn -0.316937 -0.087029 -0.944445 +vn -0.662964 0.736261 -0.135642 +vn -0.662964 0.736261 -0.135642 +vn -0.662964 0.736261 -0.135642 +vn -0.662964 0.736261 -0.135642 +vn 0.001209 0.479881 0.877333 +vn 0.001209 0.479881 0.877333 +vn 0.001209 0.479881 0.877333 +vn 0.001209 0.479881 0.877333 +vn 0.305502 0.165972 0.937615 +vn 0.305502 0.165972 0.937615 +vn 0.305502 0.165972 0.937615 +vn 0.305502 0.165972 0.937615 +vn 0.715617 -0.685196 0.135643 +vn 0.715617 -0.685196 0.135643 +vn 0.715617 -0.685196 0.135643 +vn 0.715617 -0.685196 0.135643 +vn 0.077173 -0.493153 -0.866513 +vn 0.077173 -0.493153 -0.866513 +vn 0.077173 -0.493153 -0.866513 +vn 0.077173 -0.493153 -0.866513 +vn -0.222708 -0.115196 -0.968055 +vn -0.222904 -0.123003 -0.967049 +vn -0.222907 -0.123109 -0.967035 +vn -0.222708 -0.115196 -0.968055 +vn 0.222753 0.115193 0.968045 +vn 0.222928 0.123101 0.967031 +vn 0.222925 0.122993 0.967045 +vn 0.222753 0.115193 0.968045 +vn 0.222573 0.147319 0.963721 +vn 0.222578 0.147206 0.963737 +vn 0.222163 0.155574 0.962518 +vn 0.222163 0.155574 0.962518 +vn -0.222569 -0.147218 -0.963737 +vn -0.222563 -0.147331 -0.963722 +vn -0.222139 -0.155581 -0.962522 +vn -0.222139 -0.155581 -0.962522 +vn 0.974812 -0.031478 -0.220796 +vn 0.974434 -0.056685 -0.217406 +vn 0.973565 0.018319 -0.227673 +vn 0.974521 -0.006631 -0.224197 +vn 0.974506 -0.006031 -0.224282 +vn 0.974810 -0.032001 -0.220728 +vn 0.974435 -0.056660 -0.217410 +vn 0.973561 0.018405 -0.227686 +vn -0.974810 0.032019 0.220725 +vn -0.974435 0.056661 0.217407 +vn -0.973562 -0.018403 0.227679 +vn -0.974506 0.006016 0.224283 +vn -0.974521 0.006613 0.224199 +vn -0.974812 0.031498 0.220794 +vn -0.974435 0.056686 0.217402 +vn -0.973566 -0.018319 0.227671 +vn 0.971811 -0.106678 -0.210247 +vn -0.971812 0.106678 0.210243 +vn -0.969790 -0.068277 0.234192 +vn 0.969787 0.068282 -0.234203 +vn 0.969791 0.068236 -0.234199 +vn -0.969794 -0.068234 0.234190 +vn -0.971811 0.106705 0.210232 +vn 0.971808 -0.106711 -0.210244 +vn -0.195103 0.140605 -0.970652 +vn -0.195103 0.140605 -0.970652 +vn -0.195103 0.140605 -0.970652 +vn -0.195103 0.140605 -0.970652 +vn 0.024630 0.990452 -0.135641 +vn 0.024630 0.990452 -0.135641 +vn 0.024630 0.990452 -0.135641 +vn 0.024630 0.990452 -0.135641 +vn 0.235485 0.358308 0.903417 +vn 0.235485 0.358308 0.903417 +vn 0.235485 0.358308 0.903417 +vn 0.235485 0.358308 0.903417 +vn 0.240665 -0.097038 0.965745 +vn 0.240665 -0.097038 0.965745 +vn 0.240665 -0.097038 0.965745 +vn 0.240665 -0.097038 0.965745 +vn 0.047813 -0.989604 0.135642 +vn 0.047813 -0.989604 0.135642 +vn 0.047813 -0.989604 0.135642 +vn 0.047813 -0.989604 0.135642 +vn -0.188378 -0.403833 -0.895228 +vn -0.188378 -0.403833 -0.895228 +vn -0.188378 -0.403833 -0.895228 +vn -0.188378 -0.403833 -0.895228 +vn -0.174672 -0.007407 -0.984599 +vn -0.177622 -0.010372 -0.984044 +vn -0.177663 -0.010413 -0.984036 +vn -0.174672 -0.007407 -0.984599 +vn 0.174702 0.007394 0.984594 +vn 0.177685 0.010398 0.984033 +vn 0.177644 0.010357 0.984040 +vn 0.174702 0.007394 0.984594 +vn 0.186722 0.020230 0.982205 +vn 0.186679 0.020180 0.982214 +vn 0.189748 0.023760 0.981545 +vn 0.189748 0.023760 0.981545 +vn -0.186686 -0.020190 -0.982212 +vn -0.186729 -0.020240 -0.982203 +vn -0.189766 -0.023762 -0.981542 +vn -0.189766 -0.023762 -0.981542 +vn 0.707982 -0.695875 -0.120500 +vn 0.690126 -0.714163 -0.117033 +vn 0.742259 -0.657865 -0.127538 +vn 0.725451 -0.677008 -0.124020 +vn 0.725688 -0.676745 -0.124071 +vn 0.707789 -0.696077 -0.120463 +vn 0.690143 -0.714147 -0.117037 +vn 0.742296 -0.657821 -0.127549 +vn -0.707776 0.696091 0.120461 +vn -0.690141 0.714148 0.117038 +vn -0.742295 0.657822 0.127550 +vn -0.725698 0.676734 0.124074 +vn -0.725463 0.676995 0.124023 +vn -0.707968 0.695889 0.120498 +vn -0.690124 0.714165 0.117035 +vn -0.742261 0.657863 0.127538 +vn 0.653082 -0.749274 -0.109876 +vn -0.653078 0.749277 0.109877 +vn -0.774405 0.618266 0.134329 +vn 0.774409 -0.618262 -0.134328 +vn 0.774393 -0.618282 -0.134319 +vn -0.774396 0.618278 0.134320 +vn -0.653068 0.749286 0.109878 +vn 0.653072 -0.749283 -0.109872 +vn 0.018154 0.160940 -0.986797 +vn 0.018154 0.160940 -0.986797 +vn 0.018154 0.160940 -0.986797 +vn 0.018154 0.160940 -0.986797 +vn 0.699325 0.701816 -0.135644 +vn 0.699325 0.701816 -0.135644 +vn 0.699325 0.701816 -0.135644 +vn 0.699325 0.701816 -0.135644 +vn 0.354202 0.173436 0.918945 +vn 0.354202 0.173436 0.918945 +vn 0.354202 0.173436 0.918946 +vn 0.354202 0.173436 0.918946 +vn 0.032228 -0.174021 0.984214 +vn 0.032228 -0.174021 0.984214 +vn 0.032228 -0.174021 0.984214 +vn 0.032228 -0.174021 0.984214 +vn -0.646160 -0.751052 0.135642 +vn -0.646160 -0.751052 0.135642 +vn -0.646160 -0.751052 0.135642 +vn -0.646160 -0.751052 0.135642 +vn -0.336967 -0.222684 -0.914803 +vn -0.336967 -0.222684 -0.914803 +vn -0.336967 -0.222684 -0.914803 +vn -0.336967 -0.222684 -0.914803 +vn -0.135435 0.012009 -0.990713 +vn -0.135943 0.011997 -0.990644 +vn -0.135950 0.011997 -0.990643 +vn -0.135435 0.012009 -0.990713 +vn 0.135432 -0.012009 0.990714 +vn 0.135947 -0.011997 0.990644 +vn 0.135940 -0.011997 0.990645 +vn 0.135432 -0.012009 0.990714 +vn 0.138202 -0.011831 0.990333 +vn 0.138188 -0.011832 0.990335 +vn 0.139181 -0.011733 0.990197 +vn 0.139181 -0.011733 0.990197 +vn -0.138187 0.011832 -0.990336 +vn -0.138201 0.011831 -0.990334 +vn -0.139177 0.011733 -0.990198 +vn -0.139177 0.011733 -0.990198 +vn 0.049140 -0.998614 -0.018839 +vn 0.023525 -0.999606 -0.015335 +vn 0.100708 -0.994578 -0.025932 +vn 0.075263 -0.996911 -0.022426 +vn 0.075350 -0.996905 -0.022438 +vn 0.049119 -0.998615 -0.018837 +vn 0.023549 -0.999605 -0.015340 +vn 0.100740 -0.994575 -0.025936 +vn -0.049100 0.998616 0.018832 +vn -0.023548 0.999605 0.015334 +vn -0.100738 0.994575 0.025935 +vn -0.075366 0.996903 0.022440 +vn -0.075280 0.996910 0.022428 +vn -0.049121 0.998615 0.018835 +vn -0.023523 0.999606 0.015331 +vn -0.100707 0.994578 0.025933 +vn -0.027956 -0.999575 -0.008268 +vn 0.027956 0.999575 0.008262 +vn -0.151622 0.987890 0.032925 +vn 0.151624 -0.987890 -0.032919 +vn 0.151609 -0.987892 -0.032917 +vn -0.151609 0.987892 0.032928 +vn 0.027964 0.999575 0.008261 +vn -0.027964 -0.999575 -0.008263 +vn 0.119150 0.004898 -0.992864 +vn 0.119150 0.004898 -0.992864 +vn 0.119150 0.004898 -0.992864 +vn 0.119150 0.004898 -0.992864 +vn 0.990358 0.028103 -0.135648 +vn 0.990359 0.028103 -0.135648 +vn 0.990358 0.028103 -0.135648 +vn 0.990358 0.028103 -0.135648 +vn 0.381051 -0.018336 0.924372 +vn 0.381051 -0.018336 0.924372 +vn 0.381051 -0.018336 0.924372 +vn 0.381051 -0.018336 0.924372 +vn -0.112023 -0.050350 0.992429 +vn -0.112023 -0.050350 0.992429 +vn -0.112023 -0.050350 0.992429 +vn -0.112023 -0.050350 0.992429 +vn -0.985649 -0.100484 0.135644 +vn -0.985649 -0.100484 0.135644 +vn -0.985649 -0.100484 0.135644 +vn -0.985649 -0.100484 0.135644 +vn -0.382177 -0.027775 -0.923672 +vn -0.382177 -0.027775 -0.923672 +vn -0.382177 -0.027775 -0.923672 +vn -0.382177 -0.027775 -0.923672 +vn -0.162424 0.028607 -0.986306 +vn -0.160057 0.026488 -0.986752 +vn -0.160025 0.026459 -0.986758 +vn -0.162424 0.028607 -0.986306 +vn 0.162435 -0.028597 0.986305 +vn 0.160030 -0.026455 0.986758 +vn 0.160063 -0.026483 0.986752 +vn 0.162435 -0.028597 0.986305 +vn 0.153234 -0.020792 0.987971 +vn 0.153264 -0.020816 0.987966 +vn 0.151099 -0.019148 0.988333 +vn 0.151099 -0.019148 0.988333 +vn -0.153247 0.020813 -0.987969 +vn -0.153216 0.020790 -0.987974 +vn -0.151069 0.019147 -0.988338 +vn -0.151069 0.019147 -0.988338 +vn -0.638639 -0.765006 0.083098 +vn -0.657614 -0.748363 0.086578 +vn -0.598542 -0.797474 0.076046 +vn -0.618479 -0.781769 0.079504 +vn -0.618622 -0.781653 0.079530 +vn -0.638461 -0.765159 0.083066 +vn -0.657598 -0.748378 0.086577 +vn -0.598538 -0.797477 0.076049 +vn 0.638475 0.765147 -0.083069 +vn 0.657596 0.748380 -0.086576 +vn 0.598539 0.797475 -0.076049 +vn 0.618609 0.781663 -0.079528 +vn 0.618465 0.781780 -0.079502 +vn 0.638654 0.764993 -0.083100 +vn 0.657619 0.748359 -0.086577 +vn 0.598536 0.797478 -0.076048 +vn -0.694819 -0.713084 0.093471 +vn 0.694812 0.713092 -0.093471 +vn 0.557114 0.827571 -0.068925 +vn -0.557116 -0.827569 0.068922 +vn -0.557114 -0.827571 0.068919 +vn 0.557104 0.827578 -0.068921 +vn 0.694829 0.713076 -0.093465 +vn -0.694814 -0.713090 0.093470 +vn 0.020135 -0.149598 -0.988542 +vn 0.020135 -0.149598 -0.988542 +vn 0.020135 -0.149598 -0.988542 +vn 0.020135 -0.149598 -0.988542 +vn 0.737933 -0.661102 -0.135646 +vn 0.737933 -0.661102 -0.135646 +vn 0.737933 -0.661102 -0.135646 +vn 0.737933 -0.661102 -0.135646 +vn 0.336033 -0.206599 0.918912 +vn 0.336033 -0.206599 0.918912 +vn 0.336033 -0.206599 0.918912 +vn 0.336033 -0.206599 0.918912 +vn -0.060739 0.123647 0.990466 +vn -0.060739 0.123647 0.990466 +vn -0.060739 0.123647 0.990466 +vn -0.060739 0.123647 0.990466 +vn -0.784418 0.605218 0.135641 +vn -0.784418 0.605218 0.135641 +vn -0.784418 0.605218 0.135641 +vn -0.784418 0.605218 0.135641 +vn -0.351707 0.159742 -0.922380 +vn -0.351707 0.159742 -0.922380 +vn -0.351707 0.159742 -0.922380 +vn -0.351707 0.159742 -0.922380 +vn -0.200242 0.127672 -0.971392 +vn -0.199676 0.120869 -0.972379 +vn -0.199669 0.120777 -0.972392 +vn -0.200242 0.127672 -0.971392 +vn 0.200219 -0.127676 0.971397 +vn 0.199649 -0.120787 0.972394 +vn 0.199656 -0.120879 0.972381 +vn 0.200219 -0.127676 0.971397 +vn 0.197289 -0.101052 0.975123 +vn 0.197303 -0.101138 0.975112 +vn 0.196289 -0.094764 0.975956 +vn 0.196289 -0.094764 0.975956 +vn -0.197317 0.101127 -0.975110 +vn -0.197303 0.101041 -0.975122 +vn -0.196303 0.094760 -0.975954 +vn -0.196303 0.094760 -0.975954 +vn -0.974460 -0.128468 0.184182 +vn -0.976750 -0.103684 0.187642 +vn -0.967761 -0.178945 0.177248 +vn -0.971361 -0.154406 0.180600 +vn -0.971419 -0.153970 0.180659 +vn -0.974409 -0.128951 0.184113 +vn -0.976748 -0.103704 0.187638 +vn -0.967764 -0.178928 0.177252 +vn 0.974411 0.128934 -0.184117 +vn 0.976748 0.103705 -0.187639 +vn 0.967764 0.178925 -0.177251 +vn 0.971417 0.153988 -0.180656 +vn 0.971359 0.154421 -0.180598 +vn 0.974462 0.128453 -0.184185 +vn 0.976750 0.103685 -0.187642 +vn 0.967762 0.178941 -0.177248 +vn -0.979500 -0.053191 0.194294 +vn 0.979500 0.053191 -0.194297 +vn 0.958546 0.228616 -0.170071 +vn -0.958545 -0.228620 0.170073 +vn -0.958544 -0.228624 0.170069 +vn 0.958545 0.228622 -0.170070 +vn 0.979499 0.053207 -0.194294 +vn -0.979500 -0.053206 0.194293 +vn -0.187135 -0.124041 -0.974471 +vn -0.187135 -0.124041 -0.974471 +vn -0.187135 -0.124041 -0.974471 +vn -0.187135 -0.124041 -0.974471 +vn 0.081292 -0.987417 -0.135644 +vn 0.081292 -0.987417 -0.135644 +vn 0.081292 -0.987417 -0.135644 +vn 0.081292 -0.987417 -0.135644 +vn 0.200471 -0.375965 0.904689 +vn 0.200471 -0.375965 0.904689 +vn 0.200471 -0.375965 0.904689 +vn 0.200471 -0.375965 0.904689 +vn 0.136673 0.156824 0.978124 +vn 0.136673 0.156824 0.978124 +vn 0.136673 0.156824 0.978124 +vn 0.136673 0.156824 0.978124 +vn -0.153599 0.978779 0.135643 +vn -0.153599 0.978779 0.135643 +vn -0.153599 0.978779 0.135643 +vn -0.153599 0.978779 0.135643 +vn -0.242103 0.335976 -0.910223 +vn -0.242103 0.335976 -0.910223 +vn -0.242103 0.335976 -0.910223 +vn -0.242103 0.335976 -0.910224 +vn -0.134200 0.294682 -0.946125 +vn -0.140728 0.286595 -0.947660 +vn -0.140814 0.286489 -0.947679 +vn -0.134200 0.294682 -0.946125 +vn 0.134247 -0.294692 0.946115 +vn 0.140835 -0.286502 0.947672 +vn 0.140750 -0.286608 0.947652 +vn 0.134247 -0.294692 0.946115 +vn 0.159196 -0.261775 0.951909 +vn 0.159118 -0.261889 0.951891 +vn 0.164826 -0.253531 0.953181 +vn 0.164826 -0.253531 0.953181 +vn -0.159141 0.261881 -0.951889 +vn -0.159218 0.261768 -0.951907 +vn -0.164851 0.253532 -0.953177 +vn -0.164851 0.253532 -0.953177 +vn -0.784322 0.551795 0.283481 +vn -0.769410 0.570722 0.286853 +vn -0.813736 0.511163 0.276670 +vn -0.799773 0.531039 0.279932 +vn -0.799370 0.531597 0.280021 +vn -0.784757 0.551228 0.283378 +vn -0.769423 0.570706 0.286850 +vn -0.813716 0.511194 0.276673 +vn 0.784746 -0.551242 -0.283381 +vn 0.769424 -0.570704 -0.286851 +vn 0.813714 -0.511196 -0.276674 +vn 0.799379 -0.531585 -0.280020 +vn 0.799781 -0.531027 -0.279929 +vn 0.784314 -0.551805 -0.283483 +vn 0.769415 -0.570716 -0.286852 +vn 0.813738 -0.511162 -0.276667 +vn -0.737579 0.608282 0.293206 +vn 0.737583 -0.608278 -0.293206 +vn 0.840659 -0.469742 -0.269509 +vn -0.840664 0.469734 0.269507 +vn -0.840672 0.469720 0.269507 +vn 0.840672 -0.469721 -0.269504 +vn 0.737600 -0.608259 -0.293203 +vn -0.737596 0.608264 0.293200 +vn -0.294731 0.102005 -0.950120 +vn -0.294731 0.102005 -0.950120 +vn -0.294731 0.102005 -0.950120 +vn -0.294731 0.102005 -0.950121 +vn -0.620414 -0.772455 -0.135643 +vn -0.620414 -0.772455 -0.135643 +vn -0.620414 -0.772455 -0.135643 +vn -0.620414 -0.772455 -0.135643 +vn -0.039870 -0.473706 0.879780 +vn -0.039870 -0.473706 0.879780 +vn -0.039870 -0.473706 0.879780 +vn -0.039870 -0.473706 0.879780 +vn 0.291439 -0.028691 0.956159 +vn 0.291439 -0.028691 0.956159 +vn 0.291439 -0.028691 0.956159 +vn 0.291439 -0.028691 0.956159 +vn 0.562063 0.815896 0.135644 +vn 0.562063 0.815896 0.135644 +vn 0.562063 0.815896 0.135644 +vn 0.562063 0.815896 0.135645 +vn -0.031037 0.456225 -0.889323 +vn -0.031037 0.456225 -0.889323 +vn -0.031037 0.456225 -0.889323 +vn -0.031037 0.456225 -0.889323 +vn 0.092712 0.402463 -0.910729 +vn 0.078990 0.400654 -0.912818 +vn 0.078815 0.400630 -0.912844 +vn 0.092712 0.402463 -0.910729 +vn -0.092719 -0.402463 0.910729 +vn -0.078836 -0.400633 0.912841 +vn -0.079010 -0.400656 0.912815 +vn -0.092719 -0.402463 0.910729 +vn -0.038128 -0.393523 0.918524 +vn -0.038306 -0.393561 0.918500 +vn -0.024952 -0.390643 0.920204 +vn -0.024952 -0.390643 0.920204 +vn 0.038285 0.393557 -0.918503 +vn 0.038108 0.393519 -0.918526 +vn 0.024942 0.390643 -0.920205 +vn 0.024942 0.390643 -0.920204 +vn -0.196935 0.903853 0.379826 +vn -0.174102 0.907163 0.383072 +vn -0.244597 0.894905 0.373252 +vn -0.221732 0.899544 0.376372 +vn -0.220842 0.899714 0.376489 +vn -0.197835 0.903712 0.379693 +vn -0.174119 0.907161 0.383069 +vn -0.244534 0.894919 0.373260 +vn 0.197819 -0.903715 -0.379694 +vn 0.174120 -0.907161 -0.383068 +vn 0.244535 -0.894918 -0.373262 +vn 0.220860 -0.899710 -0.376487 +vn 0.221746 -0.899541 -0.376371 +vn 0.196922 -0.903854 -0.379827 +vn 0.174101 -0.907162 -0.383074 +vn 0.244596 -0.894905 -0.373254 +vn -0.126985 0.912410 0.389080 +vn 0.126984 -0.912410 -0.389079 +vn 0.290939 -0.883871 -0.366232 +vn -0.290943 0.883872 0.366227 +vn -0.290974 0.883864 0.366222 +vn 0.290976 -0.883861 -0.366227 +vn 0.127017 -0.912405 -0.389080 +vn -0.127019 0.912406 0.389077 +vn -0.154675 0.370247 -0.915965 +vn -0.154675 0.370247 -0.915966 +vn -0.154675 0.370247 -0.915965 +vn -0.154675 0.370247 -0.915965 +vn -0.981695 -0.133705 -0.135641 +vn -0.981695 -0.133705 -0.135641 +vn -0.981695 -0.133705 -0.135641 +vn -0.981695 -0.133705 -0.135641 +vn -0.343777 -0.409372 0.845123 +vn -0.343777 -0.409372 0.845123 +vn -0.343777 -0.409372 0.845123 +vn -0.343777 -0.409372 0.845123 +vn 0.221795 -0.311046 0.924152 +vn 0.221795 -0.311046 0.924152 +vn 0.221795 -0.311046 0.924152 +vn 0.221795 -0.311046 0.924152 +vn 0.969272 0.205211 0.135645 +vn 0.969272 0.205211 0.135645 +vn 0.969272 0.205211 0.135645 +vn 0.969272 0.205211 0.135645 +vn 0.261265 0.442533 -0.857849 +vn 0.261265 0.442533 -0.857849 +vn 0.261265 0.442533 -0.857849 +vn 0.261265 0.442533 -0.857849 +vn 0.397609 0.304396 -0.865592 +vn 0.383755 0.314518 -0.868223 +vn 0.383586 0.314640 -0.868253 +vn 0.397609 0.304396 -0.865592 +vn -0.397609 -0.304390 0.865594 +vn -0.383603 -0.314625 0.868251 +vn -0.383770 -0.314503 0.868221 +vn -0.397609 -0.304390 0.865594 +vn -0.340776 -0.343053 0.875321 +vn -0.340962 -0.342941 0.875292 +vn -0.326341 -0.351724 0.877378 +vn -0.326341 -0.351724 0.877378 +vn 0.340949 0.342952 -0.875293 +vn 0.340764 0.343064 -0.875321 +vn 0.326342 0.351730 -0.877375 +vn 0.326342 0.351730 -0.877375 +vn 0.443494 0.761819 0.472170 +vn 0.461329 0.749202 0.475259 +vn 0.404615 0.786900 0.465913 +vn 0.423369 0.775199 0.468855 +vn 0.424279 0.774617 0.468994 +vn 0.442610 0.762430 0.472013 +vn 0.461310 0.749214 0.475260 +vn 0.404682 0.786856 0.465929 +vn -0.442624 -0.762422 -0.472014 +vn -0.461315 -0.749213 -0.475257 +vn -0.404687 -0.786857 -0.465924 +vn -0.424267 -0.774627 -0.468989 +vn -0.423357 -0.775207 -0.468854 +vn -0.443503 -0.761812 -0.472172 +vn -0.461329 -0.749200 -0.475262 +vn -0.404609 -0.786901 -0.465916 +vn 0.497371 0.722052 0.480899 +vn -0.497377 -0.722049 -0.480897 +vn -0.365459 -0.809709 -0.459142 +vn 0.365449 0.809710 0.459148 +vn 0.365413 0.809732 0.459137 +vn -0.365405 -0.809734 -0.459140 +vn -0.497350 -0.722069 -0.480894 +vn 0.497342 0.722076 0.480892 +vn 0.195294 0.448223 -0.872328 +vn 0.195294 0.448223 -0.872328 +vn 0.195294 0.448223 -0.872328 +vn 0.195294 0.448223 -0.872328 +vn -0.804415 0.578376 -0.135639 +vn -0.804415 0.578376 -0.135639 +vn -0.804415 0.578376 -0.135639 +vn -0.804415 0.578376 -0.135639 +vn -0.583519 -0.133304 0.801084 +vn -0.583519 -0.133304 0.801084 +vn -0.583519 -0.133304 0.801084 +vn -0.583519 -0.133304 0.801084 +vn -0.090080 -0.461292 0.882664 +vn -0.090080 -0.461292 0.882664 +vn -0.090080 -0.461292 0.882664 +vn -0.090080 -0.461292 0.882663 +vn 0.844544 -0.518022 0.135643 +vn 0.844544 -0.518022 0.135643 +vn 0.844544 -0.518022 0.135643 +vn 0.844544 -0.518022 0.135643 +vn 0.531346 0.224773 -0.816791 +vn 0.531346 0.224773 -0.816791 +vn 0.531346 0.224773 -0.816791 +vn 0.531346 0.224773 -0.816791 +vn 0.583782 -0.033427 -0.811222 +vn 0.580151 -0.013206 -0.814402 +vn 0.580110 -0.012986 -0.814435 +vn 0.583782 -0.033427 -0.811222 +vn -0.583763 0.033444 0.811235 +vn -0.580088 0.013019 0.814450 +vn -0.580128 0.013237 0.814417 +vn -0.583763 0.033444 0.811235 +vn -0.566515 -0.045944 0.822770 +vn -0.566577 -0.045719 0.822740 +vn -0.561036 -0.065405 0.825203 +vn -0.561036 -0.065405 0.825203 +vn 0.566597 0.045736 -0.822725 +vn 0.566536 0.045959 -0.822755 +vn 0.561053 0.065408 -0.825192 +vn 0.561053 0.065408 -0.825192 +vn 0.790728 0.248526 0.559450 +vn 0.794676 0.228628 0.562334 +vn 0.780503 0.290313 0.553655 +vn 0.785691 0.270458 0.556365 +vn 0.785981 0.269307 0.556514 +vn 0.790489 0.249678 0.559275 +vn 0.794671 0.228661 0.562328 +vn 0.780530 0.290214 0.553668 +vn -0.790493 -0.249663 -0.559275 +vn -0.794674 -0.228659 -0.562324 +vn -0.780533 -0.290215 -0.553663 +vn -0.785979 -0.269320 -0.556511 +vn -0.785689 -0.270467 -0.556363 +vn -0.790732 -0.248515 -0.559449 +vn -0.794680 -0.228627 -0.562329 +vn -0.780504 -0.290313 -0.553653 +vn 0.801885 0.186502 0.567624 +vn -0.801892 -0.186497 -0.567616 +vn -0.768573 -0.331452 -0.547207 +vn 0.768564 0.331458 0.547215 +vn 0.768542 0.331529 0.547203 +vn -0.768542 -0.331531 -0.547202 +vn -0.801882 -0.186571 -0.567607 +vn 0.801875 0.186572 0.567616 +vn 0.533032 0.210099 -0.819595 +vn 0.533032 0.210099 -0.819595 +vn 0.533032 0.210099 -0.819595 +vn 0.533032 0.210099 -0.819595 +vn -0.185837 0.973173 -0.135640 +vn -0.185837 0.973173 -0.135640 +vn -0.185837 0.973173 -0.135640 +vn -0.185837 0.973173 -0.135640 +vn -0.598080 0.288912 0.747549 +vn -0.598080 0.288912 0.747549 +vn -0.598080 0.288912 0.747549 +vn -0.598080 0.288912 0.747549 +vn -0.460793 -0.308893 0.832019 +vn -0.460793 -0.308893 0.832019 +vn -0.460793 -0.308893 0.832019 +vn -0.460793 -0.308893 0.832019 +vn 0.257224 -0.956785 0.135641 +vn 0.257224 -0.956785 0.135641 +vn 0.257224 -0.956785 0.135641 +vn 0.257224 -0.956785 0.135640 +vn 0.620118 -0.169358 -0.766010 +vn 0.620118 -0.169358 -0.766010 +vn 0.620118 -0.169358 -0.766010 +vn 0.620118 -0.169358 -0.766010 +vn 0.471886 -0.466411 -0.748187 +vn 0.484726 -0.446995 -0.751822 +vn 0.484860 -0.446789 -0.751858 +vn 0.471886 -0.466411 -0.748187 +vn -0.471864 0.466423 0.748194 +vn -0.484834 0.446819 0.751857 +vn -0.484701 0.447023 0.751822 +vn -0.471864 0.466423 0.748194 +vn -0.520278 0.386611 0.761474 +vn -0.520158 0.386838 0.761441 +vn -0.530871 0.366258 0.764219 +vn -0.530871 0.366258 0.764219 +vn 0.520177 -0.386811 -0.761442 +vn 0.520296 -0.386587 -0.761474 +vn 0.530887 -0.366245 -0.764214 +vn 0.530887 -0.366245 -0.764214 +vn 0.697097 -0.321535 0.640836 +vn 0.687051 -0.337431 0.643507 +vn 0.717073 -0.286491 0.635397 +vn 0.707924 -0.303168 0.637913 +vn 0.707301 -0.304282 0.638074 +vn 0.697765 -0.320461 0.640647 +vn 0.687070 -0.337409 0.643498 +vn 0.717027 -0.286575 0.635411 +vn -0.697759 0.320471 -0.640649 +vn -0.687070 0.337409 -0.643499 +vn -0.717030 0.286571 -0.635409 +vn -0.707308 0.304269 -0.638072 +vn -0.707931 0.303158 -0.637910 +vn -0.697095 0.321539 -0.640836 +vn -0.687058 0.337426 -0.643502 +vn -0.717081 0.286488 -0.635390 +vn 0.665361 -0.370121 0.648309 +vn -0.665355 0.370123 -0.648315 +vn -0.735175 0.251623 -0.629447 +vn 0.735174 -0.251626 0.629447 +vn 0.735214 -0.251542 0.629434 +vn -0.735233 0.251536 -0.629415 +vn -0.665408 0.370045 -0.648304 +vn 0.665394 -0.370052 0.648315 +vn 0.599083 -0.255977 -0.758667 +vn 0.599083 -0.255977 -0.758667 +vn 0.599083 -0.255977 -0.758667 +vn 0.599083 -0.255977 -0.758667 +vn 0.534065 0.834491 -0.135643 +vn 0.534065 0.834491 -0.135643 +vn 0.534065 0.834491 -0.135643 +vn 0.534065 0.834491 -0.135643 +vn -0.304636 0.659747 0.686972 +vn -0.304636 0.659747 0.686972 +vn -0.304636 0.659747 0.686972 +vn -0.304636 0.659747 0.686972 +vn -0.622616 0.120377 0.773213 +vn -0.622616 0.120377 0.773213 +vn -0.622616 0.120377 0.773213 +vn -0.622616 0.120377 0.773213 +vn -0.471594 -0.871321 0.135643 +vn -0.471594 -0.871321 0.135643 +vn -0.471594 -0.871321 0.135643 +vn -0.471594 -0.871321 0.135643 +vn 0.411401 -0.574234 -0.707816 +vn 0.411401 -0.574234 -0.707816 +vn 0.411401 -0.574234 -0.707816 +vn 0.411401 -0.574234 -0.707816 +vn 0.044912 -0.734461 -0.677163 +vn 0.070241 -0.728699 -0.681222 +vn 0.070481 -0.728642 -0.681258 +vn 0.044912 -0.734461 -0.677163 +vn -0.044891 0.734466 0.677159 +vn -0.070447 0.728656 0.681247 +vn -0.070210 0.728712 0.681212 +vn -0.044891 0.734466 0.677159 +vn -0.145475 0.707104 0.691984 +vn -0.145228 0.707187 0.691950 +vn -0.169730 0.698645 0.695045 +vn -0.169730 0.698645 0.695045 +vn 0.145257 -0.707171 -0.691961 +vn 0.145501 -0.707088 -0.691994 +vn 0.169738 -0.698640 -0.695048 +vn 0.169738 -0.698640 -0.695048 +vn 0.275854 -0.641949 0.715407 +vn 0.259387 -0.646106 0.717820 +vn 0.310986 -0.631298 0.710458 +vn 0.294590 -0.636574 0.712735 +vn 0.293354 -0.636965 0.712895 +vn 0.277086 -0.641631 0.715215 +vn 0.259404 -0.646107 0.717813 +vn 0.310897 -0.631333 0.710466 +vn -0.277077 0.641634 -0.715217 +vn -0.259405 0.646106 -0.717814 +vn -0.310899 0.631328 -0.710469 +vn -0.293364 0.636960 -0.712895 +vn -0.294595 0.636572 -0.712734 +vn -0.275846 0.641951 -0.715407 +vn -0.259386 0.646106 -0.717821 +vn -0.310984 0.631298 -0.710459 +vn 0.224708 -0.654190 0.722178 +vn -0.224713 0.654189 -0.722178 +vn -0.344765 0.619723 -0.705039 +vn 0.344761 -0.619731 0.705035 +vn 0.344850 -0.619693 0.705024 +vn -0.344851 0.619694 -0.705023 +vn -0.224804 0.654164 -0.722172 +vn 0.224808 -0.654164 0.722171 +vn 0.280361 -0.667469 -0.689843 +vn 0.280361 -0.667469 -0.689843 +vn 0.280361 -0.667469 -0.689843 +vn 0.280361 -0.667469 -0.689843 +vn 0.961741 0.238021 -0.135647 +vn 0.961741 0.238021 -0.135647 +vn 0.961741 0.238021 -0.135647 +vn 0.961741 0.238021 -0.135647 +vn 0.211158 0.757198 0.618113 +vn 0.211158 0.757198 0.618113 +vn 0.211158 0.757198 0.618113 +vn 0.211158 0.757198 0.618113 +vn -0.405021 0.580521 0.706367 +vn -0.405021 0.580521 0.706367 +vn -0.405021 0.580521 0.706367 +vn -0.405021 0.580521 0.706367 +vn -0.941713 -0.307861 0.135642 +vn -0.941713 -0.307861 0.135642 +vn -0.941713 -0.307861 0.135642 +vn -0.941713 -0.307861 0.135642 +vn -0.060253 -0.765124 -0.641057 +vn -0.060253 -0.765124 -0.641057 +vn -0.060253 -0.765124 -0.641057 +vn -0.060253 -0.765124 -0.641057 +vn -0.499769 -0.625700 -0.598941 +vn -0.475422 -0.640265 -0.603353 +vn -0.475219 -0.640384 -0.603387 +vn -0.499769 -0.625700 -0.598941 +vn 0.499779 0.625694 0.598939 +vn 0.475240 0.640373 0.603382 +vn 0.475441 0.640256 0.603348 +vn 0.499779 0.625694 0.598939 +vn 0.399450 0.679756 0.615119 +vn 0.399681 0.679650 0.615086 +vn 0.373712 0.691244 0.618483 +vn 0.373712 0.691244 0.618483 +vn -0.399648 -0.679665 -0.615091 +vn -0.399419 -0.679770 -0.615124 +vn -0.373707 -0.691248 -0.618482 +vn -0.373707 -0.691248 -0.618482 +vn -0.196457 -0.591069 0.782331 +vn -0.209509 -0.583722 0.784458 +vn -0.167232 -0.605699 0.777922 +vn -0.181011 -0.599100 0.779945 +vn -0.182149 -0.598547 0.780105 +vn -0.195387 -0.591665 0.782149 +vn -0.209506 -0.583727 0.784455 +vn -0.167317 -0.605657 0.777936 +vn 0.195389 0.591663 -0.782150 +vn 0.209500 0.583728 -0.784456 +vn 0.167318 0.605656 -0.777937 +vn 0.182138 0.598552 -0.780104 +vn 0.181003 0.599102 -0.779945 +vn 0.196460 0.591067 -0.782332 +vn 0.209514 0.583721 -0.784457 +vn 0.167234 0.605696 -0.777924 +vn -0.236770 -0.567861 0.788336 +vn 0.236755 0.567865 -0.788338 +vn 0.138377 0.618988 -0.773114 +vn -0.138373 -0.618992 0.773112 +vn -0.138291 -0.619031 0.773095 +vn 0.138287 0.619027 -0.773100 +vn 0.236684 0.567910 -0.788327 +vn -0.236674 -0.567910 0.788329 +vn -0.282836 -0.736904 -0.613984 +vn -0.282836 -0.736904 -0.613984 +vn -0.282836 -0.736904 -0.613984 +vn -0.282836 -0.736904 -0.613984 +vn 0.861606 -0.489118 -0.135645 +vn 0.861606 -0.489118 -0.135645 +vn 0.861606 -0.489118 -0.135645 +vn 0.861606 -0.489118 -0.135645 +vn 0.700825 0.463325 0.542378 +vn 0.700825 0.463325 0.542378 +vn 0.700825 0.463325 0.542378 +vn 0.700825 0.463325 0.542378 +vn 0.120311 0.765206 0.632444 +vn 0.120311 0.765206 0.632444 +vn 0.120311 0.765206 0.632444 +vn 0.120311 0.765206 0.632444 +vn -0.895192 0.424538 0.135644 +vn -0.895192 0.424538 0.135644 +vn -0.895192 0.424538 0.135644 +vn -0.895192 0.424538 0.135644 +vn -0.585131 -0.579708 -0.567063 +vn -0.585131 -0.579708 -0.567063 +vn -0.585131 -0.579708 -0.567063 +vn -0.585131 -0.579708 -0.567063 +vn -0.846738 -0.135627 -0.514432 +vn -0.838631 -0.164972 -0.519117 +vn -0.838572 -0.165173 -0.519148 +vn -0.846738 -0.135627 -0.514432 +vn 0.846744 0.135610 0.514427 +vn 0.838578 0.165152 0.519145 +vn 0.838636 0.164953 0.519115 +vn 0.846743 0.135610 0.514427 +vn 0.808680 0.251622 0.531717 +vn 0.808769 0.251400 0.531686 +vn 0.796974 0.279654 0.535375 +vn 0.796973 0.279654 0.535375 +vn -0.808749 -0.251442 -0.531697 +vn -0.808661 -0.251661 -0.531728 +vn -0.796953 -0.279683 -0.535391 +vn -0.796953 -0.279683 -0.535391 +vn -0.466241 -0.274859 0.840875 +vn -0.469985 -0.262671 0.842685 +vn -0.456620 -0.301351 0.837070 +vn -0.461340 -0.289047 0.838819 +vn -0.461759 -0.287943 0.838968 +vn -0.465911 -0.275928 0.840709 +vn -0.469985 -0.262690 0.842679 +vn -0.456652 -0.301267 0.837082 +vn 0.465913 0.275923 -0.840709 +vn 0.469987 0.262692 -0.842678 +vn 0.456650 0.301270 -0.837082 +vn 0.461756 0.287951 -0.838967 +vn 0.461338 0.289052 -0.838818 +vn 0.466242 0.274858 -0.840876 +vn 0.469984 0.262673 -0.842685 +vn 0.456618 0.301351 -0.837071 +vn -0.477664 -0.236738 0.846045 +vn 0.477670 0.236739 -0.846041 +vn 0.446485 0.326918 -0.832932 +vn -0.446487 -0.326917 0.832932 +vn -0.446454 -0.326995 0.832918 +vn 0.446452 0.326996 -0.832919 +vn 0.477632 0.236808 -0.846044 +vn -0.477633 -0.236806 0.846043 +vn -0.763711 -0.365666 -0.532010 +vn -0.763711 -0.365666 -0.532010 +vn -0.763711 -0.365666 -0.532010 +vn -0.763711 -0.365666 -0.532010 +vn 0.288659 -0.947774 -0.135648 +vn 0.288659 -0.947774 -0.135648 +vn 0.288659 -0.947774 -0.135648 +vn 0.288659 -0.947774 -0.135648 +vn 0.879155 -0.123854 0.460159 +vn 0.879155 -0.123854 0.460159 +vn 0.879155 -0.123854 0.460159 +vn 0.879155 -0.123854 0.460159 +vn 0.661772 0.507043 0.552236 +vn 0.661772 0.507043 0.552236 +vn 0.661772 0.507043 0.552236 +vn 0.661772 0.507043 0.552236 +vn -0.357451 0.924028 0.135648 +vn -0.357451 0.924028 0.135648 +vn -0.357451 0.924028 0.135648 +vn -0.357451 0.924028 0.135648 +vn -0.871988 -0.052990 -0.486651 +vn -0.871988 -0.052990 -0.486651 +vn -0.871988 -0.052990 -0.486651 +vn -0.871988 -0.052990 -0.486651 +vn -0.756596 0.497348 -0.424508 +vn -0.771812 0.468960 -0.429397 +vn -0.771898 0.468794 -0.429424 +vn -0.756596 0.497348 -0.424508 +vn 0.756590 -0.497365 0.424501 +vn 0.771882 -0.468826 0.429420 +vn 0.771797 -0.468989 0.429394 +vn 0.756590 -0.497365 0.424501 +vn 0.811877 -0.380586 0.442730 +vn 0.811800 -0.380782 0.442703 +vn 0.823218 -0.350418 0.446676 +vn 0.823218 -0.350418 0.446676 +vn -0.811817 0.380743 -0.442706 +vn -0.811893 0.380550 -0.442732 +vn -0.823227 0.350389 -0.446682 +vn -0.823227 0.350389 -0.446682 +vn -0.448723 0.076453 0.890395 +vn -0.444016 0.085928 0.891889 +vn -0.458039 0.055004 0.887229 +vn -0.453891 0.065058 0.888679 +vn -0.453494 0.066017 0.888811 +vn -0.449160 0.075569 0.890250 +vn -0.444021 0.085925 0.891887 +vn -0.458004 0.055098 0.887241 +vn 0.449159 -0.075572 -0.890250 +vn 0.444021 -0.085925 -0.891887 +vn 0.458006 -0.055096 -0.887240 +vn 0.453498 -0.066011 -0.888810 +vn 0.453894 -0.065055 -0.888678 +vn 0.448723 -0.076453 -0.890394 +vn 0.444018 -0.085927 -0.891888 +vn 0.458039 -0.055004 -0.887229 +vn -0.433918 0.105896 0.894708 +vn 0.433915 -0.105899 -0.894708 +vn 0.466606 -0.033796 -0.883820 +vn -0.466602 0.033796 0.883822 +vn -0.466628 0.033738 0.883810 +vn 0.466629 -0.033737 -0.883810 +vn 0.433944 -0.105864 -0.894699 +vn -0.433940 0.105864 0.894700 +vn -0.852367 0.275150 -0.444706 +vn -0.852367 0.275150 -0.444706 +vn -0.852367 0.275150 -0.444706 +vn -0.852367 0.275150 -0.444706 +vn -0.441898 -0.886751 -0.135642 +vn -0.441898 -0.886751 -0.135642 +vn -0.441898 -0.886751 -0.135642 +vn -0.441898 -0.886751 -0.135642 +vn 0.600836 -0.706622 0.373741 +vn 0.600836 -0.706622 0.373741 +vn 0.600836 -0.706622 0.373741 +vn 0.600836 -0.706622 0.373741 +vn 0.879863 -0.089709 0.466684 +vn 0.879863 -0.089709 0.466684 +vn 0.879863 -0.089709 0.466684 +vn 0.879863 -0.089709 0.466684 +vn 0.375781 0.916728 0.135643 +vn 0.375781 0.916728 0.135643 +vn 0.375781 0.916728 0.135643 +vn 0.375781 0.916728 0.135643 +vn -0.719714 0.567218 -0.400344 +vn -0.719714 0.567218 -0.400344 +vn -0.719714 0.567218 -0.400344 +vn -0.719714 0.567218 -0.400344 +vn -0.230649 0.915335 -0.330095 +vn -0.262639 0.904830 -0.335117 +vn -0.262782 0.904781 -0.335138 +vn -0.230649 0.915335 -0.330095 +vn 0.230626 -0.915341 0.330096 +vn 0.262746 -0.904792 0.335135 +vn 0.262605 -0.904841 0.335114 +vn 0.230626 -0.915341 0.330096 +vn 0.356834 -0.866493 0.349083 +vn 0.356672 -0.866570 0.349059 +vn 0.387076 -0.851679 0.353291 +vn 0.387076 -0.851679 0.353291 +vn -0.356694 0.866562 -0.349054 +vn -0.356855 0.866487 -0.349078 +vn -0.387098 0.851674 -0.353280 +vn -0.387098 0.851674 -0.353280 +vn -0.243613 0.273761 0.930434 +vn -0.235871 0.276594 0.931590 +vn -0.260629 0.266512 0.927925 +vn -0.252787 0.270026 0.929077 +vn -0.251998 0.270376 0.929190 +vn -0.244366 0.273483 0.930318 +vn -0.235870 0.276590 0.931592 +vn -0.260558 0.266537 0.927938 +vn 0.244363 -0.273484 -0.930319 +vn 0.235868 -0.276587 -0.931593 +vn 0.260565 -0.266539 -0.927935 +vn 0.252002 -0.270376 -0.929189 +vn 0.252788 -0.270025 -0.929077 +vn 0.243610 -0.273759 -0.930435 +vn 0.235868 -0.276586 -0.931593 +vn 0.260630 -0.266509 -0.927925 +vn -0.219431 0.282520 0.933827 +vn 0.219428 -0.282511 -0.933830 +vn 0.277073 -0.259050 -0.925270 +vn -0.277055 0.259046 0.925276 +vn -0.277088 0.259037 0.925269 +vn 0.277088 -0.259037 -0.925269 +vn 0.219456 -0.282501 -0.933827 +vn -0.219469 0.282510 0.933821 +vn -0.451812 0.819281 -0.353052 +vn -0.451812 0.819281 -0.353052 +vn -0.451811 0.819281 -0.353052 +vn -0.451812 0.819281 -0.353052 +vn -0.930779 -0.339488 -0.135642 +vn -0.930779 -0.339488 -0.135642 +vn -0.930779 -0.339488 -0.135642 +vn -0.930779 -0.339488 -0.135642 +vn -0.027670 -0.958848 0.282570 +vn -0.027670 -0.958848 0.282570 +vn -0.027670 -0.958848 0.282570 +vn -0.027670 -0.958848 0.282570 +vn 0.605369 -0.701214 0.376600 +vn 0.605369 -0.701214 0.376600 +vn 0.605369 -0.701214 0.376600 +vn 0.605369 -0.701214 0.376600 +vn 0.903468 0.406627 0.135645 +vn 0.903468 0.406627 0.135645 +vn 0.903468 0.406627 0.135645 +vn 0.903468 0.406627 0.135645 +vn -0.164117 0.936384 -0.310244 +vn -0.164117 0.936384 -0.310244 +vn -0.164117 0.936384 -0.310244 +vn -0.164117 0.936384 -0.310244 +vn 0.463575 0.855071 -0.232274 +vn 0.432129 0.870018 -0.237348 +vn 0.432030 0.870062 -0.237363 +vn 0.463575 0.855071 -0.232274 +vn -0.463589 -0.855066 0.232266 +vn -0.432064 -0.870048 0.237355 +vn -0.432161 -0.870004 0.237340 +vn -0.463589 -0.855066 0.232266 +vn -0.334374 -0.908194 0.251750 +vn -0.334503 -0.908151 0.251732 +vn -0.301183 -0.918504 0.256201 +vn -0.301183 -0.918504 0.256201 +vn 0.334490 0.908158 -0.251724 +vn 0.334363 0.908200 -0.251742 +vn 0.301172 0.918511 -0.256188 +vn 0.301172 0.918511 -0.256188 +vn -0.029430 0.276565 0.960544 +vn -0.024072 0.274241 0.961360 +vn -0.041872 0.281186 0.958740 +vn -0.036044 0.279146 0.959572 +vn -0.035440 0.278933 0.959657 +vn -0.029971 0.276798 0.960461 +vn -0.024075 0.274239 0.961360 +vn -0.041822 0.281165 0.958748 +vn 0.029969 -0.276798 -0.960461 +vn 0.024070 -0.274242 -0.961359 +vn 0.041818 -0.281167 -0.958748 +vn 0.035441 -0.278933 -0.959656 +vn 0.036046 -0.279146 -0.959572 +vn 0.029429 -0.276565 -0.960545 +vn 0.024070 -0.274242 -0.961359 +vn 0.041873 -0.281186 -0.958739 +vn -0.012709 0.269282 0.962977 +vn 0.012703 -0.269287 -0.962976 +vn 0.054139 -0.285448 -0.956864 +vn -0.054144 0.285449 0.956863 +vn -0.054158 0.285457 0.956860 +vn 0.054165 -0.285456 -0.956860 +vn 0.012725 -0.269297 -0.962973 +vn -0.012725 0.269296 0.962973 +vn 0.237407 0.936501 -0.258078 +vn 0.237407 0.936501 -0.258078 +vn 0.237407 0.936501 -0.258078 +vn 0.237407 0.936501 -0.258078 +vn -0.909042 0.394009 -0.135644 +vn -0.909042 0.394009 -0.135644 +vn -0.909042 0.394009 -0.135644 +vn -0.909042 0.394009 -0.135644 +vn -0.681153 -0.707550 0.188161 +vn -0.681153 -0.707550 0.188161 +vn -0.681153 -0.707550 0.188161 +vn -0.681153 -0.707550 0.188161 +vn -0.039060 -0.958332 0.282973 +vn -0.039060 -0.958332 0.282973 +vn -0.039060 -0.958332 0.282973 +vn -0.039060 -0.958332 0.282973 +vn 0.935403 -0.326530 0.135642 +vn 0.935403 -0.326530 0.135642 +vn 0.935403 -0.326530 0.135642 +vn 0.935403 -0.326530 0.135642 +vn 0.520950 0.825782 -0.216091 +vn 0.520950 0.825782 -0.216091 +vn 0.520950 0.825782 -0.216091 +vn 0.520950 0.825782 -0.216091 +vn 0.937751 0.321185 -0.132147 +vn 0.924964 0.354424 -0.137204 +vn 0.924942 0.354478 -0.137212 +vn 0.937751 0.321185 -0.132147 +vn -0.937758 -0.321168 0.132140 +vn -0.924956 -0.354446 0.137204 +vn -0.924977 -0.354392 0.137196 +vn -0.937758 -0.321168 0.132140 +vn -0.879519 -0.450995 0.151825 +vn -0.879560 -0.450918 0.151813 +vn -0.862127 -0.481924 0.156485 +vn -0.862127 -0.481924 0.156485 +vn 0.879550 0.450934 -0.151820 +vn 0.879510 0.451010 -0.151832 +vn 0.862118 0.481937 -0.156492 +vn 0.862118 0.481937 -0.156493 +vn 0.075719 0.181765 0.980423 +vn 0.077039 0.178668 0.980889 +vn 0.072235 0.188841 0.979348 +vn 0.073933 0.185546 0.979850 +vn 0.074116 0.185197 0.979903 +vn 0.075583 0.182082 0.980374 +vn 0.077036 0.178672 0.980888 +vn 0.072259 0.188811 0.979351 +vn -0.075584 -0.182081 -0.980374 +vn -0.077035 -0.178674 -0.980888 +vn -0.072257 -0.188813 -0.979351 +vn -0.074115 -0.185197 -0.979903 +vn -0.073936 -0.185545 -0.979850 +vn -0.075718 -0.181764 -0.980423 +vn -0.077037 -0.178669 -0.980889 +vn -0.072243 -0.188841 -0.979347 +vn 0.079840 0.172062 0.981845 +vn -0.079838 -0.172063 -0.981845 +vn -0.068660 -0.195785 -0.978240 +vn 0.068664 0.195784 0.978240 +vn 0.068638 0.195795 0.978240 +vn -0.068662 -0.195796 -0.978238 +vn -0.079842 -0.172072 -0.981844 +vn 0.079843 0.172068 0.981844 +vn 0.828435 0.536442 -0.161015 +vn 0.828435 0.536442 -0.161015 +vn 0.828435 0.536442 -0.161015 +vn 0.828435 0.536442 -0.161015 +vn -0.388570 0.911380 -0.135648 +vn -0.388570 0.911380 -0.135648 +vn -0.388570 0.911380 -0.135648 +vn -0.388570 0.911380 -0.135648 +vn -0.993913 -0.061763 0.091230 +vn -0.993913 -0.061763 0.091230 +vn -0.993913 -0.061763 0.091230 +vn -0.993913 -0.061763 0.091230 +vn -0.698797 -0.690495 0.186817 +vn -0.698797 -0.690495 0.186817 +vn -0.698797 -0.690495 0.186817 +vn -0.698797 -0.690495 0.186817 +vn 0.454182 -0.880523 0.135639 +vn 0.454182 -0.880523 0.135639 +vn 0.454182 -0.880523 0.135639 +vn 0.454182 -0.880523 0.135639 +vn 0.957374 0.263042 -0.119344 +vn 0.957374 0.263042 -0.119344 +vn 0.957374 0.263042 -0.119345 +vn 0.957374 0.263042 -0.119344 +vn 0.914756 -0.402843 -0.030653 +vn 0.928665 -0.369198 -0.035683 +vn 0.928668 -0.369191 -0.035684 +vn 0.914756 -0.402843 -0.030653 +vn -0.914751 0.402853 0.030655 +vn -0.928660 0.369211 0.035683 +vn -0.928658 0.369218 0.035682 +vn -0.914751 0.402853 0.030655 +vn -0.962319 0.267215 0.050387 +vn -0.962310 0.267248 0.050382 +vn -0.971136 0.232034 0.055281 +vn -0.971135 0.232034 0.055281 +vn 0.962316 -0.267225 -0.050387 +vn 0.962325 -0.267191 -0.050391 +vn 0.971138 -0.232024 -0.055284 +vn 0.971138 -0.232024 -0.055284 +vn 0.083580 0.114609 0.989889 +vn 0.083270 0.113774 0.990011 +vn 0.084292 0.116941 0.989555 +vn 0.083958 0.115781 0.989720 +vn 0.083922 0.115660 0.989737 +vn 0.083611 0.114696 0.989876 +vn 0.083269 0.113778 0.990010 +vn 0.084287 0.116935 0.989557 +vn -0.083611 -0.114697 -0.989876 +vn -0.083272 -0.113779 -0.990010 +vn -0.084290 -0.116935 -0.989556 +vn -0.083922 -0.115661 -0.989737 +vn -0.083958 -0.115782 -0.989720 +vn -0.083578 -0.114609 -0.989889 +vn -0.083268 -0.113774 -0.990011 +vn -0.084295 -0.116941 -0.989555 +vn 0.082606 0.111982 0.990271 +vn -0.082604 -0.111983 -0.990271 +vn -0.085007 -0.119431 -0.989197 +vn 0.085008 0.119431 0.989197 +vn 0.085012 0.119430 0.989196 +vn -0.085011 -0.119429 -0.989197 +vn -0.082597 -0.111981 -0.990272 +vn 0.082608 0.111980 0.990271 +vn 0.983135 -0.171865 -0.062511 +vn 0.983135 -0.171865 -0.062511 +vn 0.983135 -0.171865 -0.062511 +vn 0.983135 -0.171865 -0.062511 +vn 0.345174 0.928685 -0.135642 +vn 0.345174 0.928685 -0.135642 +vn 0.345174 0.928685 -0.135642 +vn 0.345174 0.928685 -0.135642 +vn -0.776518 0.630061 -0.006603 +vn -0.776518 0.630061 -0.006603 +vn -0.776518 0.630061 -0.006603 +vn -0.776518 0.630061 -0.006603 +vn -0.995440 -0.033202 0.089431 +vn -0.995440 -0.033202 0.089431 +vn -0.995440 -0.033202 0.089431 +vn -0.995440 -0.033202 0.089431 +vn -0.275444 -0.951699 0.135642 +vn -0.275444 -0.951699 0.135642 +vn -0.275444 -0.951699 0.135642 +vn -0.275444 -0.951699 0.135642 +vn 0.888665 -0.458081 -0.020876 +vn 0.888665 -0.458081 -0.020876 +vn 0.888665 -0.458081 -0.020876 +vn 0.888665 -0.458081 -0.020876 +vn 0.398978 -0.914207 0.071004 +vn 0.431822 -0.899528 0.066175 +vn 0.431783 -0.899546 0.066181 +vn 0.398978 -0.914207 0.071004 +vn -0.398973 0.914209 -0.071008 +vn -0.431785 0.899545 -0.066186 +vn -0.431823 0.899527 -0.066180 +vn -0.398973 0.914209 -0.071008 +vn -0.527008 0.848304 -0.051402 +vn -0.527023 0.848296 -0.051400 +vn -0.557304 0.829009 -0.046427 +vn -0.557304 0.829009 -0.046427 +vn 0.527054 -0.848277 0.051380 +vn 0.527040 -0.848286 0.051382 +vn 0.557331 -0.828993 0.046402 +vn 0.557331 -0.828993 0.046402 +vn 0.091977 0.116889 0.988877 +vn 0.093415 0.117594 0.988658 +vn 0.089354 0.115436 0.989288 +vn 0.090464 0.116084 0.989111 +vn 0.090585 0.116154 0.989092 +vn 0.091830 0.116816 0.988899 +vn 0.093419 0.117596 0.988658 +vn 0.089370 0.115442 0.989286 +vn -0.091830 -0.116815 -0.988899 +vn -0.093419 -0.117596 -0.988658 +vn -0.089373 -0.115442 -0.989285 +vn -0.090586 -0.116153 -0.989092 +vn -0.090465 -0.116084 -0.989111 +vn -0.091977 -0.116888 -0.988877 +vn -0.093414 -0.117595 -0.988658 +vn -0.089355 -0.115436 -0.989288 +vn 0.096476 0.119096 0.988184 +vn -0.096476 -0.119096 -0.988184 +vn -0.087029 -0.114068 -0.989654 +vn 0.087023 0.114067 0.989654 +vn 0.087010 0.114065 0.989656 +vn -0.087015 -0.114065 -0.989655 +vn -0.096466 -0.119091 -0.988186 +vn 0.096465 0.119090 0.988186 +vn 0.605754 -0.794818 0.036405 +vn 0.605754 -0.794818 0.036405 +vn 0.605754 -0.794818 0.036405 +vn 0.605754 -0.794818 0.036405 +vn 0.889169 0.437011 -0.135647 +vn 0.889169 0.437011 -0.135647 +vn 0.889169 0.437011 -0.135647 +vn 0.889169 0.437011 -0.135647 +vn -0.143926 0.984069 -0.104372 +vn -0.143926 0.984069 -0.104372 +vn -0.143926 0.984069 -0.104372 +vn -0.143926 0.984069 -0.104372 +vn -0.755657 0.654908 -0.008865 +vn -0.755657 0.654908 -0.008865 +vn -0.755657 0.654908 -0.008865 +vn -0.755657 0.654908 -0.008865 +vn -0.854683 -0.501116 0.135644 +vn -0.854683 -0.501116 0.135644 +vn -0.854683 -0.501116 0.135644 +vn -0.854683 -0.501116 0.135644 +vn 0.343313 -0.936009 0.077605 +vn 0.343313 -0.936009 0.077605 +vn 0.343313 -0.936009 0.077605 +vn 0.343313 -0.936009 0.077605 +vn -0.322114 -0.930966 0.171883 +vn -0.288595 -0.942731 0.167247 +vn -0.288683 -0.942702 0.167259 +vn -0.322114 -0.930966 0.171883 +vn 0.322127 0.930965 -0.171871 +vn 0.288676 0.942706 -0.167246 +vn 0.288590 0.942735 -0.167233 +vn 0.322127 0.930965 -0.171871 +vn 0.185501 0.970715 -0.152647 +vn 0.185434 0.970730 -0.152637 +vn 0.150561 0.977521 -0.147593 +vn 0.150561 0.977521 -0.147593 +vn -0.185416 -0.970735 0.152625 +vn -0.185482 -0.970721 0.152635 +vn -0.150543 -0.977528 0.147568 +vn -0.150543 -0.977528 0.147568 +vn 0.173873 0.120121 0.977414 +vn 0.177768 0.118906 0.976862 +vn 0.165703 0.122211 0.978574 +vn 0.169382 0.121351 0.978051 +vn 0.169773 0.121260 0.977995 +vn 0.173478 0.120245 0.977469 +vn 0.177774 0.118907 0.976861 +vn 0.165739 0.122202 0.978569 +vn -0.173475 -0.120245 -0.977470 +vn -0.177773 -0.118904 -0.976862 +vn -0.165741 -0.122202 -0.978569 +vn -0.169772 -0.121260 -0.977995 +vn -0.169380 -0.121352 -0.978051 +vn -0.173871 -0.120123 -0.977415 +vn -0.177767 -0.118908 -0.976862 +vn -0.165701 -0.122212 -0.978574 +vn 0.186035 0.116321 0.975634 +vn -0.186032 -0.116316 -0.975634 +vn -0.157944 -0.124017 -0.979629 +vn 0.157941 0.124016 0.979630 +vn 0.157924 0.124020 0.979632 +vn -0.157923 -0.124021 -0.979632 +vn -0.186012 -0.116327 -0.975637 +vn 0.186012 0.116324 0.975637 +vn -0.090352 -0.986809 0.134329 +vn -0.090352 -0.986809 0.134329 +vn -0.090352 -0.986809 0.134329 +vn -0.090352 -0.986809 0.134329 +vn 0.945907 -0.294721 -0.135642 +vn 0.945907 -0.294721 -0.135642 +vn 0.945907 -0.294721 -0.135642 +vn 0.945907 -0.294721 -0.135642 +vn 0.555658 0.806589 -0.201639 +vn 0.555658 0.806589 -0.201639 +vn 0.555658 0.806589 -0.201639 +vn 0.555658 0.806589 -0.201639 +vn -0.112396 0.987942 -0.106478 +vn -0.112396 0.987942 -0.106479 +vn -0.112396 0.987942 -0.106479 +vn -0.112396 0.987942 -0.106479 +vn -0.964996 0.224464 0.135642 +vn -0.964996 0.224464 0.135642 +vn -0.964996 0.224464 0.135642 +vn -0.964996 0.224464 0.135642 +vn -0.379952 -0.908140 0.175837 +vn -0.379952 -0.908140 0.175837 +vn -0.379952 -0.908140 0.175837 +vn -0.379952 -0.908140 0.175837 +vn -0.847708 -0.456087 0.270881 +vn -0.831797 -0.486935 0.266473 +vn -0.831863 -0.486813 0.266491 +vn -0.847708 -0.456087 0.270881 +vn 0.847722 0.456067 -0.270871 +vn 0.831865 0.486814 -0.266484 +vn 0.831800 0.486934 -0.266466 +vn 0.847722 0.456067 -0.270871 +vn 0.777504 0.576089 -0.252210 +vn 0.777436 0.576187 -0.252194 +vn 0.757303 0.604498 -0.247131 +vn 0.757303 0.604498 -0.247131 +vn -0.777438 -0.576184 0.252195 +vn -0.777504 -0.576087 0.252212 +vn -0.757296 -0.604508 0.247131 +vn -0.757295 -0.604508 0.247131 +vn 0.293753 0.021001 0.955651 +vn 0.296932 0.015315 0.954776 +vn 0.286417 0.032651 0.957549 +vn 0.289845 0.027442 0.956680 +vn 0.290202 0.026899 0.956587 +vn 0.293439 0.021563 0.955734 +vn 0.296940 0.015307 0.954773 +vn 0.286453 0.032597 0.957540 +vn -0.293438 -0.021565 -0.955735 +vn -0.296939 -0.015308 -0.954774 +vn -0.286450 -0.032598 -0.957541 +vn -0.290202 -0.026898 -0.956587 +vn -0.289847 -0.027442 -0.956680 +vn -0.293756 -0.021002 -0.955650 +vn -0.296939 -0.015317 -0.954774 +vn -0.286418 -0.032653 -0.957548 +vn 0.303639 0.003251 0.952782 +vn -0.303643 -0.003252 -0.952780 +vn -0.279162 -0.043614 -0.959253 +vn 0.279161 0.043613 0.959253 +vn 0.279146 0.043640 0.959257 +vn -0.279148 -0.043641 -0.959256 +vn -0.303635 -0.003285 -0.952783 +vn 0.303621 0.003282 0.952787 +vn -0.718597 -0.656153 0.230393 +vn -0.718597 -0.656153 0.230393 +vn -0.718597 -0.656153 0.230393 +vn -0.718597 -0.656153 0.230393 +vn 0.483644 -0.864690 -0.135647 +vn 0.483645 -0.864690 -0.135647 +vn 0.483644 -0.864690 -0.135647 +vn 0.483645 -0.864690 -0.135647 +vn 0.932476 0.205462 -0.297110 +vn 0.932476 0.205462 -0.297110 +vn 0.932476 0.205462 -0.297110 +vn 0.932476 0.205462 -0.297110 +vn 0.574792 0.792833 -0.202559 +vn 0.574792 0.792833 -0.202559 +vn 0.574792 0.792833 -0.202559 +vn 0.574792 0.792833 -0.202559 +vn -0.545691 0.826935 0.135643 +vn -0.545691 0.826935 0.135643 +vn -0.545691 0.826935 0.135643 +vn -0.545691 0.826935 0.135643 +vn -0.876788 -0.396219 0.272496 +vn -0.876788 -0.396219 0.272496 +vn -0.876788 -0.396219 0.272496 +vn -0.876788 -0.396219 0.272496 +vn -0.901502 0.229489 0.366919 +vn -0.910870 0.196867 0.362710 +vn -0.910825 0.197034 0.362733 +vn -0.901502 0.229489 0.366919 +vn 0.901497 -0.229505 -0.366921 +vn 0.910824 -0.197037 -0.362734 +vn 0.910868 -0.196873 -0.362712 +vn 0.901497 -0.229505 -0.366921 +vn 0.931864 -0.098976 -0.349046 +vn 0.931889 -0.098822 -0.349024 +vn 0.936707 -0.065238 -0.343982 +vn 0.936707 -0.065238 -0.343982 +vn -0.931887 0.098836 0.349024 +vn -0.931863 0.098987 0.349045 +vn -0.936709 0.065231 0.343979 +vn -0.936709 0.065231 0.343979 +vn 0.323617 -0.204293 0.923870 +vn 0.321452 -0.212859 0.922692 +vn 0.327258 -0.185947 0.926459 +vn 0.325754 -0.194384 0.925256 +vn 0.325605 -0.195224 0.925132 +vn 0.323823 -0.203478 0.923978 +vn 0.321455 -0.212857 0.922691 +vn 0.327246 -0.186035 0.926445 +vn -0.323824 0.203475 -0.923978 +vn -0.321451 0.212856 -0.922693 +vn -0.327242 0.186035 -0.926447 +vn -0.325605 0.195226 -0.925132 +vn -0.325757 0.194385 -0.925255 +vn -0.323619 0.204291 -0.923870 +vn -0.321449 0.212858 -0.922693 +vn -0.327260 0.185946 -0.926459 +vn 0.316712 -0.231199 0.919913 +vn -0.316708 0.231200 -0.919915 +vn -0.330377 0.167923 -0.928791 +vn 0.330381 -0.167922 0.928790 +vn 0.330385 -0.167862 0.928799 +vn -0.330391 0.167861 -0.928797 +vn -0.316723 0.231137 -0.919925 +vn 0.316727 -0.231138 0.919924 +vn -0.946315 -0.005861 0.323193 +vn -0.946315 -0.005861 0.323193 +vn -0.946315 -0.005861 0.323193 +vn -0.946315 -0.005861 0.323193 +vn -0.243924 -0.960262 -0.135642 +vn -0.243924 -0.960262 -0.135642 +vn -0.243924 -0.960262 -0.135642 +vn -0.243924 -0.960262 -0.135642 +vn 0.790933 -0.471673 -0.389808 +vn 0.790933 -0.471673 -0.389808 +vn 0.790933 -0.471673 -0.389808 +vn 0.790933 -0.471673 -0.389808 +vn 0.934597 0.197728 -0.295688 +vn 0.934597 0.197728 -0.295688 +vn 0.934597 0.197728 -0.295688 +vn 0.934597 0.197728 -0.295688 +vn 0.172265 0.975667 0.135645 +vn 0.172265 0.975667 0.135645 +vn 0.172265 0.975667 0.135645 +vn 0.172265 0.975667 0.135645 +vn -0.880340 0.300984 0.366620 +vn -0.880340 0.300984 0.366620 +vn -0.880340 0.300984 0.366620 +vn -0.880340 0.300984 0.366620 +vn -0.486774 0.743164 0.459085 +vn -0.514397 0.726772 0.455191 +vn -0.514215 0.726883 0.455219 +vn -0.486774 0.743164 0.459085 +vn 0.486766 -0.743164 -0.459093 +vn 0.514214 -0.726881 -0.455224 +vn 0.514394 -0.726770 -0.455196 +vn 0.486766 -0.743164 -0.459093 +vn 0.593512 -0.672522 -0.442106 +vn 0.593667 -0.672404 -0.442078 +vn 0.618812 -0.652605 -0.437239 +vn 0.618812 -0.652605 -0.437239 +vn -0.593654 0.672415 0.442078 +vn -0.593502 0.672531 0.442105 +vn -0.618820 0.652601 0.437234 +vn -0.618820 0.652601 0.437234 +vn 0.150874 -0.445691 0.882381 +vn 0.141418 -0.451696 0.880893 +vn 0.170230 -0.431985 0.885670 +vn 0.161493 -0.438425 0.884140 +vn 0.160662 -0.439035 0.883989 +vn 0.151737 -0.445140 0.882511 +vn 0.141415 -0.451700 0.880891 +vn 0.170150 -0.432046 0.885655 +vn -0.151744 0.445137 -0.882512 +vn -0.141420 0.451698 -0.880891 +vn -0.170153 0.432045 -0.885655 +vn -0.160660 0.439037 -0.883988 +vn -0.161493 0.438428 -0.884139 +vn -0.150877 0.445690 -0.882381 +vn -0.141419 0.451697 -0.880892 +vn -0.170232 0.431988 -0.885668 +vn 0.121380 -0.464198 0.877375 +vn -0.121387 0.464198 -0.877374 +vn -0.188585 0.418243 -0.888543 +vn 0.188580 -0.418244 0.888543 +vn 0.188642 -0.418195 0.888553 +vn -0.188643 0.418199 -0.888551 +vn -0.121452 0.464153 -0.877389 +vn 0.121454 -0.464153 0.877389 +vn -0.680553 0.605256 0.412932 +vn -0.680553 0.605256 0.412932 +vn -0.680553 0.605256 0.412932 +vn -0.680553 0.605256 0.412932 +vn -0.837249 -0.529731 -0.135646 +vn -0.837249 -0.529731 -0.135646 +vn -0.837249 -0.529731 -0.135646 +vn -0.837249 -0.529731 -0.135646 +vn 0.242709 -0.843789 -0.478657 +vn 0.242709 -0.843789 -0.478657 +vn 0.242709 -0.843789 -0.478657 +vn 0.242709 -0.843789 -0.478657 +vn 0.798448 -0.462240 -0.385766 +vn 0.798448 -0.462240 -0.385766 +vn 0.798447 -0.462240 -0.385766 +vn 0.798448 -0.462240 -0.385766 +vn 0.796310 0.589485 0.135637 +vn 0.796310 0.589485 0.135637 +vn 0.796310 0.589485 0.135637 +vn 0.796310 0.589485 0.135637 +vn -0.415794 0.786234 0.457112 +vn -0.415794 0.786234 0.457112 +vn -0.415794 0.786234 0.457112 +vn -0.415794 0.786234 0.457112 +vn 0.133701 0.826731 0.546479 +vn 0.104102 0.833345 0.542862 +vn 0.104337 0.833296 0.542893 +vn 0.133701 0.826731 0.546479 +vn -0.133701 -0.826728 -0.546484 +vn -0.104330 -0.833294 -0.542897 +vn -0.104099 -0.833342 -0.542866 +vn -0.133701 -0.826728 -0.546484 +vn -0.014474 -0.847574 -0.530481 +vn -0.014249 -0.847598 -0.530448 +vn 0.015760 -0.850449 -0.525822 +vn 0.015760 -0.850449 -0.525822 +vn 0.014270 0.847592 0.530456 +vn 0.014491 0.847568 0.530489 +vn -0.015755 0.850441 0.525835 +vn -0.015755 0.850441 0.525835 +vn -0.205510 -0.515896 0.831635 +vn -0.218679 -0.513336 0.829859 +vn -0.177269 -0.519959 0.835595 +vn -0.190291 -0.518329 0.833741 +vn -0.191459 -0.518178 0.833568 +vn -0.204378 -0.516112 0.831780 +vn -0.218689 -0.513336 0.829856 +vn -0.177378 -0.519944 0.835581 +vn 0.204369 0.516113 -0.831782 +vn 0.218684 0.513335 -0.829859 +vn 0.177375 0.519943 -0.835582 +vn 0.191463 0.518176 -0.833568 +vn 0.190292 0.518328 -0.833742 +vn 0.205505 0.515898 -0.831635 +vn 0.218680 0.513338 -0.829858 +vn 0.177267 0.519958 -0.835596 +vn -0.246305 -0.507636 0.825615 +vn 0.246302 0.507634 -0.825617 +vn 0.149934 0.523068 -0.838999 +vn -0.149935 -0.523070 0.838998 +vn -0.149844 -0.523083 0.839006 +vn 0.149839 0.523076 -0.839011 +vn 0.246204 0.507655 -0.825633 +vn -0.246204 -0.507657 0.825632 +vn -0.101631 0.861421 0.497619 +vn -0.101631 0.861421 0.497619 +vn -0.101631 0.861421 0.497619 +vn -0.101631 0.861421 0.497619 +vn -0.972046 0.191643 -0.135641 +vn -0.972046 0.191643 -0.135641 +vn -0.972046 0.191643 -0.135641 +vn -0.972046 0.191643 -0.135641 +vn -0.380208 -0.733811 -0.562995 +vn -0.380208 -0.733811 -0.562995 +vn -0.380208 -0.733811 -0.562995 +vn -0.380208 -0.733811 -0.562995 +vn 0.274030 -0.837971 -0.471925 +vn 0.274030 -0.837971 -0.471925 +vn 0.274030 -0.837971 -0.471925 +vn 0.274030 -0.837971 -0.471925 +vn 0.983456 -0.120068 0.135640 +vn 0.983456 -0.120068 0.135639 +vn 0.983456 -0.120068 0.135640 +vn 0.983456 -0.120068 0.135640 +vn 0.222869 0.809565 0.543078 +vn 0.222869 0.809565 0.543078 +vn 0.222869 0.809565 0.543078 +vn 0.222869 0.809565 0.543078 +vn 0.608495 0.484944 0.628142 +vn 0.592676 0.508280 0.624809 +vn 0.592821 0.508071 0.624842 +vn 0.608495 0.484944 0.628142 +vn -0.608487 -0.484955 -0.628143 +vn -0.592804 -0.508091 -0.624842 +vn -0.592661 -0.508297 -0.624810 +vn -0.608487 -0.484955 -0.628143 +vn -0.541337 -0.575153 -0.613313 +vn -0.541181 -0.575338 -0.613278 +vn -0.522841 -0.596503 -0.608951 +vn -0.522841 -0.596503 -0.608951 +vn 0.541189 0.575326 0.613282 +vn 0.541344 0.575143 0.613316 +vn 0.522835 0.596502 0.608957 +vn 0.522835 0.596502 0.608957 +vn -0.565829 -0.289112 0.772173 +vn -0.574857 -0.276497 0.770122 +vn -0.545429 -0.314920 0.776745 +vn -0.555071 -0.303156 0.774592 +vn -0.555867 -0.302175 0.774404 +vn -0.565108 -0.290110 0.772327 +vn -0.574864 -0.276488 0.770120 +vn -0.545503 -0.314832 0.776728 +vn 0.565099 0.290118 -0.772330 +vn 0.574855 0.276491 -0.770126 +vn 0.545500 0.314831 -0.776731 +vn 0.555871 0.302169 -0.774404 +vn 0.555074 0.303154 -0.774591 +vn 0.565826 0.289118 -0.772173 +vn 0.574858 0.276498 -0.770122 +vn 0.545431 0.314921 -0.776743 +vn -0.593353 -0.249784 0.765206 +vn 0.593342 0.249784 -0.765214 +vn 0.524903 0.339213 -0.780648 +vn -0.524902 -0.339216 0.780648 +vn -0.524835 -0.339290 0.780660 +vn 0.524838 0.339291 -0.780658 +vn 0.593294 0.249873 -0.765223 +vn -0.593294 -0.249872 0.765223 +vn 0.462821 0.673220 0.576689 +vn 0.462822 0.673220 0.576689 +vn 0.462822 0.673220 0.576689 +vn 0.462822 0.673220 0.576689 +vn -0.573477 0.807914 -0.135645 +vn -0.573477 0.807914 -0.135645 +vn -0.573477 0.807914 -0.135645 +vn -0.573477 0.807914 -0.135645 +vn -0.725109 -0.249537 -0.641832 +vn -0.725109 -0.249537 -0.641832 +vn -0.725109 -0.249537 -0.641832 +vn -0.725109 -0.249537 -0.641832 +vn -0.329300 -0.765781 -0.552396 +vn -0.329300 -0.765781 -0.552396 +vn -0.329300 -0.765781 -0.552396 +vn -0.329300 -0.765781 -0.552396 +vn 0.631100 -0.763750 0.135642 +vn 0.631100 -0.763750 0.135642 +vn 0.631100 -0.763750 0.135642 +vn 0.631100 -0.763750 0.135642 +vn 0.669730 0.403015 0.623732 +vn 0.669730 0.403014 0.623732 +vn 0.669730 0.403014 0.623732 +vn 0.669730 0.403015 0.623732 +vn 0.709696 -0.042951 0.703198 +vn 0.713763 -0.017567 0.700167 +vn 0.713726 -0.017813 0.700199 +vn 0.709696 -0.042951 0.703198 +vn -0.709691 0.042945 -0.703203 +vn -0.713725 0.017790 -0.700200 +vn -0.713762 0.017546 -0.700169 +vn -0.709691 0.042945 -0.703203 +vn -0.721698 -0.058707 -0.689714 +vn -0.721713 -0.058957 -0.689677 +vn -0.722951 -0.084541 -0.685708 +vn -0.722951 -0.084541 -0.685708 +vn 0.721717 0.058947 0.689674 +vn 0.721702 0.058700 0.689710 +vn 0.722957 0.084539 0.685702 +vn 0.722957 0.084539 0.685702 +vn -0.686558 0.179270 0.704628 +vn -0.684194 0.196439 0.702347 +vn -0.689868 0.142619 0.709748 +vn -0.688614 0.159750 0.707312 +vn -0.688509 0.161047 0.707120 +vn -0.686719 0.178039 0.704783 +vn -0.684194 0.196442 0.702346 +vn -0.689858 0.142737 0.709734 +vn 0.686721 -0.178028 -0.704784 +vn 0.684197 -0.196439 -0.702344 +vn 0.689862 -0.142735 -0.709731 +vn 0.688510 -0.161057 -0.707118 +vn 0.688612 -0.159756 -0.707313 +vn 0.686559 -0.179263 -0.704629 +vn 0.684197 -0.196439 -0.702344 +vn 0.689866 -0.142617 -0.709750 +vn -0.678550 0.232333 0.696844 +vn 0.678546 -0.232332 -0.696848 +vn 0.691811 -0.106867 -0.714127 +vn -0.691811 0.106867 0.714127 +vn -0.691816 0.106762 0.714137 +vn 0.691812 -0.106763 -0.714141 +vn 0.678569 -0.232241 -0.696856 +vn -0.678560 0.232242 0.696865 +vn 0.735419 0.195625 0.648760 +vn 0.735419 0.195625 0.648760 +vn 0.735419 0.195625 0.648760 +vn 0.735419 0.195625 0.648760 +vn 0.139875 0.980834 -0.135643 +vn 0.139875 0.980834 -0.135643 +vn 0.139875 0.980834 -0.135643 +vn 0.139875 0.980834 -0.135643 +vn -0.634389 0.295653 -0.714241 +vn -0.634389 0.295653 -0.714241 +vn -0.634389 0.295653 -0.714241 +vn -0.634389 0.295653 -0.714241 +vn -0.701463 -0.339252 -0.626784 +vn -0.701463 -0.339252 -0.626784 +vn -0.701463 -0.339252 -0.626784 +vn -0.701463 -0.339252 -0.626784 +vn -0.067501 -0.988456 0.135643 +vn -0.067501 -0.988456 0.135643 +vn -0.067501 -0.988456 0.135643 +vn -0.067501 -0.988456 0.135643 +vn 0.698267 -0.158033 0.698176 +vn 0.698267 -0.158033 0.698176 +vn 0.698267 -0.158033 0.698176 +vn 0.698267 -0.158033 0.698176 +vn 0.449155 -0.451651 0.770890 +vn 0.467308 -0.437638 0.768177 +vn 0.467112 -0.437791 0.768209 +vn 0.449155 -0.451651 0.770890 +vn -0.449157 0.451647 -0.770891 +vn -0.467136 0.437773 -0.768205 +vn -0.467329 0.437622 -0.768173 +vn -0.449157 0.451647 -0.770891 +vn -0.519352 0.393009 -0.758826 +vn -0.519528 0.392844 -0.758791 +vn -0.536164 0.377011 -0.755243 +vn -0.536163 0.377011 -0.755243 +vn 0.519509 -0.392852 0.758800 +vn 0.519336 -0.393015 0.758835 +vn 0.536155 -0.377007 0.755251 +vn 0.536155 -0.377007 0.755251 +vn -0.427280 0.648734 0.629743 +vn -0.412325 0.660748 0.627216 +vn -0.457520 0.622107 0.635341 +vn -0.443559 0.634813 0.632668 +vn -0.442605 0.635667 0.632479 +vn -0.428223 0.647963 0.629896 +vn -0.412303 0.660766 0.627212 +vn -0.457410 0.622206 0.635324 +vn 0.428235 -0.647954 -0.629897 +vn 0.412306 -0.660764 -0.627212 +vn 0.457412 -0.622205 -0.635323 +vn 0.442597 -0.635673 -0.632477 +vn 0.443556 -0.634817 -0.632666 +vn 0.427289 -0.648727 -0.629744 +vn 0.412327 -0.660748 -0.627215 +vn 0.457525 -0.622106 -0.635339 +vn -0.380686 0.684973 0.621200 +vn 0.380689 -0.684973 -0.621199 +vn 0.486044 -0.594935 -0.640168 +vn -0.486041 0.594936 0.640169 +vn -0.486109 0.594871 0.640177 +vn 0.486113 -0.594872 -0.640173 +vn 0.380735 -0.684938 -0.621210 +vn -0.380735 0.684938 0.621210 +vn 0.632461 -0.298760 0.714658 +vn 0.632461 -0.298760 0.714658 +vn 0.632461 -0.298760 0.714658 +vn 0.632461 -0.298760 0.714658 +vn 0.775916 0.616080 -0.135647 +vn 0.775916 0.616080 -0.135647 +vn 0.775916 0.616080 -0.135647 +vn 0.775916 0.616080 -0.135647 +vn -0.224585 0.584395 -0.779772 +vn -0.224585 0.584395 -0.779772 +vn -0.224585 0.584395 -0.779772 +vn -0.224585 0.584395 -0.779772 +vn -0.697768 0.178715 -0.693672 +vn -0.697768 0.178715 -0.693672 +vn -0.697768 0.178715 -0.693672 +vn -0.697768 0.178715 -0.693672 +vn -0.728574 -0.671402 0.135645 +vn -0.728574 -0.671402 0.135645 +vn -0.728574 -0.671402 0.135645 +vn -0.728574 -0.671402 0.135645 +vn 0.350727 -0.539421 0.765516 +vn 0.350727 -0.539421 0.765516 +vn 0.350727 -0.539421 0.765516 +vn 0.350727 -0.539421 0.765516 +vn 0.035099 -0.555829 0.830555 +vn 0.054919 -0.557774 0.828174 +vn 0.054688 -0.557753 0.828204 +vn 0.035099 -0.555829 0.830555 +vn -0.035103 0.555829 -0.830555 +vn -0.054710 0.557752 -0.828203 +vn -0.054938 0.557773 -0.828173 +vn -0.035103 0.555829 -0.830555 +vn -0.114740 0.560745 -0.820000 +vn -0.114977 0.560747 -0.819966 +vn -0.135028 0.560783 -0.816878 +vn -0.135028 0.560783 -0.816878 +vn 0.114960 -0.560749 0.819967 +vn 0.114726 -0.560747 0.820001 +vn 0.135027 -0.560782 0.816879 +vn 0.135027 -0.560782 0.816879 +vn 0.129073 0.826349 0.548167 +vn 0.149750 0.824671 0.545429 +vn 0.085409 0.827969 0.554232 +vn 0.106031 0.827529 0.551320 +vn 0.107252 0.827491 0.551141 +vn 0.127939 0.826431 0.548309 +vn 0.149777 0.824671 0.545421 +vn 0.085533 0.827965 0.554219 +vn -0.127923 -0.826433 -0.548311 +vn -0.149775 -0.824671 -0.545422 +vn -0.085533 -0.827967 -0.554216 +vn -0.107265 -0.827491 -0.551137 +vn -0.106039 -0.827528 -0.551320 +vn -0.129061 -0.826349 -0.548170 +vn -0.149749 -0.824669 -0.545432 +vn -0.085406 -0.827966 -0.554237 +vn 0.192399 0.820047 0.538986 +vn -0.192399 -0.820045 -0.538988 +vn -0.042726 -0.827739 -0.559485 +vn 0.042726 0.827734 0.559492 +vn 0.042670 0.827740 0.559487 +vn -0.042668 -0.827734 -0.559496 +vn -0.192340 -0.820049 -0.539003 +vn 0.192342 0.820052 0.538999 +vn 0.273635 -0.573431 0.772205 +vn 0.273635 -0.573431 0.772206 +vn 0.273635 -0.573431 0.772206 +vn 0.273635 -0.573431 0.772206 +vn 0.986949 -0.086788 -0.135642 +vn 0.986949 -0.086788 -0.135642 +vn 0.986949 -0.086788 -0.135642 +vn 0.986949 -0.086788 -0.135642 +vn 0.218795 0.500719 -0.837502 +vn 0.218795 0.500719 -0.837502 +vn 0.218795 0.500719 -0.837502 +vn 0.218795 0.500719 -0.837502 +vn -0.385830 0.531351 -0.754190 +vn -0.385830 0.531351 -0.754189 +vn -0.385830 0.531351 -0.754189 +vn -0.385830 0.531351 -0.754190 +vn -0.990656 0.014213 0.135645 +vn -0.990656 0.014213 0.135645 +vn -0.990656 0.014213 0.135645 +vn -0.990656 0.014213 0.135645 +vn -0.110658 -0.553691 0.825337 +vn -0.110658 -0.553691 0.825337 +vn -0.110658 -0.553691 0.825337 +vn -0.110658 -0.553691 0.825337 +vn -0.283009 -0.377900 0.881531 +vn -0.272021 -0.390486 0.879503 +vn -0.272157 -0.390331 0.879530 +vn -0.283009 -0.377900 0.881531 +vn 0.283002 0.377905 -0.881531 +vn 0.272142 0.390346 -0.879528 +vn 0.272006 0.390500 -0.879501 +vn 0.283002 0.377905 -0.881531 +vn 0.237240 0.426895 -0.872627 +vn 0.237086 0.427043 -0.872596 +vn 0.224884 0.438734 -0.870023 +vn 0.224884 0.438734 -0.870023 +vn -0.237099 -0.427030 0.872599 +vn -0.237252 -0.426882 0.872630 +vn -0.224881 -0.438733 0.870024 +vn -0.224881 -0.438733 0.870024 +vn 0.692383 0.555214 0.460808 +vn 0.707171 0.538758 0.457875 +vn 0.659968 0.588332 0.467234 +vn 0.675613 0.572824 0.464133 +vn 0.676385 0.572042 0.463972 +vn 0.691698 0.555959 0.460937 +vn 0.707186 0.538739 0.457874 +vn 0.660050 0.588251 0.467220 +vn -0.691686 -0.555972 -0.460940 +vn -0.707184 -0.538741 -0.457874 +vn -0.660051 -0.588250 -0.467220 +vn -0.676396 -0.572031 -0.463970 +vn -0.675621 -0.572817 -0.464131 +vn -0.692373 -0.555224 -0.460811 +vn -0.707168 -0.538759 -0.457878 +vn -0.659966 -0.588334 -0.467235 +vn 0.736556 0.503969 0.451110 +vn -0.736557 -0.503969 -0.451109 +vn -0.626784 -0.619293 -0.472883 +vn 0.626781 0.619295 0.472885 +vn 0.626743 0.619329 0.472890 +vn -0.626743 -0.619329 -0.472890 +vn -0.736522 -0.504011 -0.451119 +vn 0.736526 0.504009 0.451114 +vn -0.123570 -0.556999 0.821269 +vn -0.123570 -0.556999 0.821269 +vn -0.123570 -0.556999 0.821269 +vn -0.123570 -0.556999 0.821269 +vn 0.656521 -0.742011 -0.135643 +vn 0.656521 -0.742011 -0.135643 +vn 0.656522 -0.742011 -0.135643 +vn 0.656521 -0.742011 -0.135643 +vn 0.431210 0.165904 -0.886867 +vn 0.431210 0.165904 -0.886867 +vn 0.431210 0.165904 -0.886868 +vn 0.431210 0.165904 -0.886868 +vn 0.025690 0.591417 -0.805956 +vn 0.025690 0.591417 -0.805956 +vn 0.025690 0.591417 -0.805956 +vn 0.025690 0.591417 -0.805956 +vn -0.709039 0.692001 0.135642 +vn -0.709039 0.692001 0.135642 +vn -0.709039 0.692001 0.135642 +vn -0.709039 0.692001 0.135642 +vn -0.400887 -0.265626 0.876774 +vn -0.400887 -0.265626 0.876774 +vn -0.400887 -0.265626 0.876774 +vn -0.400887 -0.265626 0.876774 +vn -0.372615 -0.093558 0.923258 +vn -0.373120 -0.106885 0.921606 +vn -0.373114 -0.106711 0.921628 +vn -0.372615 -0.093558 0.923258 +vn 0.372617 0.093561 -0.923257 +vn 0.373121 0.106725 -0.921624 +vn 0.373127 0.106897 -0.921601 +vn 0.372617 0.093561 -0.923257 +vn 0.372970 0.147176 -0.916097 +vn 0.372962 0.147356 -0.916071 +vn 0.372347 0.160909 -0.914038 +vn 0.372347 0.160909 -0.914038 +vn -0.372955 -0.147340 0.916076 +vn -0.372963 -0.147161 0.916102 +vn -0.372345 -0.160906 0.914039 +vn -0.372345 -0.160906 0.914039 +vn 0.927585 -0.061214 0.368563 +vn 0.926983 -0.084517 0.365457 +vn 0.926827 -0.012751 0.375272 +vn 0.927529 -0.035938 0.372019 +vn 0.927546 -0.036867 0.371885 +vn 0.927597 -0.060370 0.368672 +vn 0.926982 -0.084541 0.365455 +vn 0.926831 -0.012856 0.375259 +vn -0.927597 0.060352 -0.368674 +vn -0.926983 0.084538 -0.365454 +vn -0.926832 0.012856 -0.375257 +vn -0.927547 0.036884 -0.371883 +vn -0.927529 0.035951 -0.372017 +vn -0.927585 0.061200 -0.368565 +vn -0.926984 0.084514 -0.365456 +vn -0.926828 0.012748 -0.375270 +vn 0.924142 -0.132192 0.358450 +vn -0.924142 0.132192 -0.358450 +vn -0.923806 -0.034721 -0.381283 +vn 0.923806 0.034720 0.381284 +vn 0.923801 0.034768 0.381290 +vn -0.923802 -0.034769 -0.381289 +vn -0.924147 0.132147 -0.358455 +vn 0.924146 -0.132149 0.358455 +vn -0.382980 -0.333847 0.861321 +vn -0.382980 -0.333847 0.861320 +vn -0.382980 -0.333847 0.861321 +vn -0.382979 -0.333847 0.861321 +vn -0.034056 -0.990173 -0.135641 +vn -0.034056 -0.990173 -0.135641 +vn -0.034056 -0.990173 -0.135641 +vn -0.034056 -0.990173 -0.135641 +vn 0.337607 -0.161506 -0.927328 +vn 0.337607 -0.161506 -0.927328 +vn 0.337607 -0.161506 -0.927328 +vn 0.337607 -0.161506 -0.927328 +vn 0.336195 0.407731 -0.848957 +vn 0.336195 0.407731 -0.848957 +vn 0.336195 0.407731 -0.848957 +vn 0.336195 0.407731 -0.848957 +vn -0.038393 0.990014 0.135643 +vn -0.038393 0.990014 0.135643 +vn -0.038393 0.990014 0.135643 +vn -0.038393 0.990014 0.135643 +vn -0.383776 0.086835 0.919334 +vn -0.383776 0.086835 0.919334 +vn -0.383776 0.086835 0.919334 +vn -0.383777 0.086835 0.919334 +vn -0.273573 0.112319 0.955271 +vn -0.280658 0.105367 0.954007 +vn -0.280567 0.105456 0.954024 +vn -0.273573 0.112319 0.955271 +vn 0.273584 -0.112320 -0.955268 +vn 0.280584 -0.105450 -0.954019 +vn 0.280674 -0.105361 -0.954003 +vn 0.273584 -0.112320 -0.955268 +vn 0.300947 -0.083782 -0.949953 +vn 0.301035 -0.083682 -0.949934 +vn 0.307732 -0.075969 -0.948435 +vn 0.307732 -0.075969 -0.948435 +vn -0.301025 0.083693 0.949936 +vn -0.300938 0.083793 0.949955 +vn -0.307734 0.075974 0.948434 +vn -0.307734 0.075974 0.948434 +vn 0.664558 -0.695797 0.272452 +vn 0.647546 -0.712883 0.269225 +vn 0.698033 -0.659354 0.279290 +vn 0.682067 -0.677230 0.275942 +vn 0.681587 -0.677754 0.275841 +vn 0.664996 -0.695345 0.272534 +vn 0.647529 -0.712900 0.269221 +vn 0.697972 -0.659424 0.279277 +vn -0.665010 0.695331 -0.272537 +vn -0.647533 0.712896 -0.269223 +vn -0.697972 0.659424 -0.279277 +vn -0.681575 0.677767 -0.275839 +vn -0.682058 0.677240 -0.275940 +vn -0.664569 0.695785 -0.272454 +vn -0.647548 0.712881 -0.269225 +vn -0.698036 0.659351 -0.279288 +vn 0.611075 -0.746947 0.262026 +vn -0.611076 0.746944 -0.262030 +vn -0.729748 0.621168 -0.285689 +vn 0.729751 -0.621166 0.285687 +vn 0.729767 -0.621143 0.285693 +vn -0.729769 0.621142 -0.285691 +vn -0.611097 0.746926 -0.262034 +vn 0.611096 -0.746927 0.262033 +vn -0.450186 -0.054599 0.891264 +vn -0.450186 -0.054599 0.891264 +vn -0.450186 -0.054599 0.891264 +vn -0.450186 -0.054599 0.891264 +vn -0.705977 -0.695123 -0.135645 +vn -0.705977 -0.695123 -0.135645 +vn -0.705977 -0.695123 -0.135645 +vn -0.705977 -0.695123 -0.135645 +vn 0.074365 -0.276243 -0.958206 +vn 0.074365 -0.276243 -0.958206 +vn 0.074365 -0.276243 -0.958206 +vn 0.074365 -0.276243 -0.958207 +vn 0.453955 0.126361 -0.882019 +vn 0.453955 0.126361 -0.882019 +vn 0.453955 0.126361 -0.882019 +vn 0.453955 0.126361 -0.882019 +vn 0.652682 0.745391 0.135643 +vn 0.652682 0.745391 0.135643 +vn 0.652682 0.745391 0.135643 +vn 0.652682 0.745391 0.135643 +vn -0.145924 0.267801 0.952360 +vn -0.145924 0.267801 0.952360 +vn -0.145924 0.267801 0.952360 +vn -0.145924 0.267801 0.952360 +vn -0.127908 0.169445 0.977204 +vn -0.134098 0.169324 0.976395 +vn -0.134013 0.169326 0.976406 +vn -0.127908 0.169445 0.977204 +vn 0.127910 -0.169443 -0.977204 +vn 0.134021 -0.169325 -0.976405 +vn 0.134106 -0.169324 -0.976394 +vn 0.127910 -0.169443 -0.977204 +vn 0.153126 -0.168210 -0.973785 +vn 0.153217 -0.168201 -0.973773 +vn 0.159726 -0.167578 -0.972834 +vn 0.159726 -0.167578 -0.972834 +vn -0.153209 0.168202 0.973774 +vn -0.153118 0.168210 0.973787 +vn -0.159725 0.167581 0.972833 +vn -0.159725 0.167581 0.972833 +vn 0.018365 -0.984690 0.173345 +vn -0.006627 -0.985427 0.169969 +vn 0.069430 -0.981141 0.180395 +vn 0.044662 -0.983206 0.176949 +vn 0.044182 -0.983240 0.176881 +vn 0.018772 -0.984673 0.173397 +vn -0.006653 -0.985428 0.169962 +vn 0.069366 -0.981147 0.180386 +vn -0.018792 0.984672 -0.173400 +vn 0.006651 0.985428 -0.169963 +vn -0.069367 0.981148 -0.180383 +vn -0.044165 0.983241 -0.176878 +vn -0.044648 0.983207 -0.176948 +vn -0.018383 0.984689 -0.173347 +vn 0.006625 0.985427 -0.169968 +vn -0.069432 0.981140 -0.180396 +vn -0.057383 -0.984994 0.162770 +vn 0.057382 0.984993 -0.162775 +vn -0.119530 0.975056 -0.187028 +vn 0.119529 -0.975055 0.187033 +vn 0.119557 -0.975051 0.187034 +vn -0.119557 0.975051 -0.187034 +vn 0.057356 0.984995 -0.162774 +vn -0.057357 -0.984994 0.162779 +vn -0.370235 0.172906 0.912705 +vn -0.370235 0.172906 0.912705 +vn -0.370235 0.172906 0.912705 +vn -0.370235 0.172906 0.912705 +vn -0.990567 -0.019444 -0.135644 +vn -0.990567 -0.019444 -0.135644 +vn -0.990567 -0.019444 -0.135644 +vn -0.990567 -0.019444 -0.135644 +vn -0.126584 -0.155009 -0.979770 +vn -0.126584 -0.155009 -0.979770 +vn -0.126584 -0.155009 -0.979770 +vn -0.126584 -0.155009 -0.979770 +vn 0.402592 -0.125144 -0.906785 +vn 0.402593 -0.125144 -0.906785 +vn 0.402592 -0.125144 -0.906785 +vn 0.402592 -0.125144 -0.906785 +vn 0.986487 0.091896 0.135640 +vn 0.986487 0.091896 0.135640 +vn 0.986487 0.091896 0.135640 +vn 0.986487 0.091896 0.135640 +vn 0.088791 0.198619 0.976046 +vn 0.088791 0.198619 0.976046 +vn 0.088791 0.198619 0.976046 +vn 0.088791 0.198619 0.976046 +vn -0.050338 0.140399 0.988815 +vn -0.052170 0.142069 0.988481 +vn -0.052145 0.142046 0.988486 +vn -0.050338 0.140399 0.988815 +vn 0.050343 -0.140401 -0.988814 +vn 0.052151 -0.142050 -0.988485 +vn 0.052176 -0.142073 -0.988480 +vn 0.050343 -0.140401 -0.988814 +vn 0.058347 -0.147263 -0.987375 +vn 0.058380 -0.147288 -0.987369 +vn 0.060667 -0.149083 -0.986962 +vn 0.060667 -0.149083 -0.986962 +vn -0.058379 0.147285 0.987370 +vn -0.058347 0.147259 0.987376 +vn -0.060671 0.149082 0.986962 +vn -0.060671 0.149082 0.986962 +vn -0.662045 -0.745969 0.072293 +vn -0.681021 -0.729022 0.068830 +vn -0.622095 -0.778905 0.079404 +vn -0.641866 -0.763050 0.075914 +vn -0.642040 -0.762907 0.075883 +vn -0.661927 -0.746072 0.072314 +vn -0.681039 -0.729005 0.068826 +vn -0.622127 -0.778880 0.079397 +vn 0.661913 0.746084 -0.072317 +vn 0.681038 0.729006 -0.068827 +vn 0.622127 0.778879 -0.079401 +vn 0.642053 0.762896 -0.075882 +vn 0.641878 0.763040 -0.075912 +vn 0.662031 0.745981 -0.072295 +vn 0.681020 0.729023 -0.068829 +vn 0.622093 0.778907 -0.079403 +vn -0.717996 -0.693308 0.061692 +vn 0.717994 0.693310 -0.061691 +vn 0.580935 0.809363 -0.086295 +vn -0.580931 -0.809366 0.086289 +vn -0.580919 -0.809375 0.086292 +vn 0.580918 0.809375 -0.086294 +vn 0.717987 0.693318 -0.061693 +vn -0.717986 -0.693318 0.061693 +vn -0.222320 0.312700 0.923468 +vn -0.222319 0.312700 0.923468 +vn -0.222320 0.312700 0.923468 +vn -0.222320 0.312700 0.923468 +vn -0.732109 0.667546 -0.135644 +vn -0.732109 0.667546 -0.135644 +vn -0.732109 0.667546 -0.135644 +vn -0.732109 0.667546 -0.135644 +vn -0.125904 0.041946 -0.991155 +vn -0.125904 0.041946 -0.991155 +vn -0.125904 0.041946 -0.991155 +vn -0.125904 0.041946 -0.991155 +vn 0.263143 -0.287399 -0.920954 +vn 0.263143 -0.287400 -0.920955 +vn 0.263143 -0.287399 -0.920955 +vn 0.263143 -0.287399 -0.920954 +vn 0.779116 -0.612029 0.135643 +vn 0.779116 -0.612029 0.135643 +vn 0.779116 -0.612029 0.135643 +vn 0.779116 -0.612029 0.135643 +vn 0.143937 0.002456 0.989584 +vn 0.143938 0.002456 0.989584 +vn 0.143937 0.002456 0.989584 +vn 0.143938 0.002456 0.989584 +vn -0.043000 0.134861 0.989931 +vn -0.042902 0.133606 0.990106 +vn -0.042903 0.133623 0.990103 +vn -0.043000 0.134861 0.989931 +vn 0.042996 -0.134861 -0.989931 +vn 0.042902 -0.133621 -0.990104 +vn 0.042901 -0.133604 -0.990106 +vn 0.042996 -0.134861 -0.989931 +vn 0.042586 -0.130592 -0.990521 +vn 0.042584 -0.130581 -0.990523 +vn 0.042469 -0.129823 -0.990627 +vn 0.042469 -0.129823 -0.990627 +vn -0.042579 0.130583 0.990523 +vn -0.042581 0.130593 0.990521 +vn -0.042463 0.129823 0.990628 +vn -0.042463 0.129823 0.990628 +vn -0.994550 -0.099964 -0.029618 +vn -0.996673 -0.074474 -0.033128 +vn -0.988216 -0.151401 -0.022523 +vn -0.991683 -0.126048 -0.026022 +vn -0.991678 -0.126090 -0.026017 +vn -0.994560 -0.099863 -0.029632 +vn -0.996674 -0.074451 -0.033133 +vn -0.988219 -0.151383 -0.022527 +vn 0.994558 0.099881 0.029629 +vn 0.996674 0.074452 0.033131 +vn 0.988218 0.151385 0.022526 +vn 0.991680 0.126074 0.026019 +vn 0.991685 0.126032 0.026025 +vn 0.994548 0.099983 0.029616 +vn 0.996672 0.074476 0.033130 +vn 0.988215 0.151404 0.022525 +vn -0.998928 -0.023082 -0.040122 +vn 0.998928 0.023082 0.040120 +vn 0.979252 0.202058 0.015448 +vn -0.979252 -0.202058 -0.015447 +vn -0.979251 -0.202063 -0.015447 +vn 0.979251 0.202063 0.015448 +vn 0.998928 0.023086 0.040121 +vn -0.998928 -0.023084 -0.040119 +vn -0.045978 0.379479 0.924057 +vn -0.045978 0.379478 0.924057 +vn -0.045978 0.379479 0.924057 +vn -0.045978 0.379479 0.924057 +vn -0.071866 0.988148 -0.135643 +vn -0.071866 0.988148 -0.135643 +vn -0.071866 0.988148 -0.135643 +vn -0.071866 0.988148 -0.135643 +vn 0.037278 0.117375 -0.992388 +vn 0.037278 0.117375 -0.992388 +vn 0.037278 0.117375 -0.992388 +vn 0.037278 0.117375 -0.992388 +vn 0.090738 -0.368969 -0.925002 +vn 0.090738 -0.368969 -0.925002 +vn 0.090738 -0.368969 -0.925002 +vn 0.090738 -0.368969 -0.925002 +vn 0.144250 -0.980200 0.135644 +vn 0.144250 -0.980200 0.135644 +vn 0.144250 -0.980200 0.135644 +vn 0.144250 -0.980200 0.135644 +vn 0.008591 -0.117981 0.992979 +vn 0.008591 -0.117981 0.992979 +vn 0.008591 -0.117981 0.992979 +vn 0.008591 -0.117981 0.992979 +vn -0.015106 0.195811 0.980525 +vn -0.018284 0.191922 0.981240 +vn -0.018244 0.191972 0.981231 +vn -0.015106 0.195811 0.980525 +vn 0.015109 -0.195812 -0.980525 +vn 0.018248 -0.191969 -0.981231 +vn 0.018288 -0.191919 -0.981240 +vn 0.015109 -0.195812 -0.980525 +vn 0.026743 -0.180773 -0.983161 +vn 0.026778 -0.180723 -0.983170 +vn 0.029354 -0.177032 -0.983767 +vn 0.029354 -0.177033 -0.983767 +vn -0.026778 0.180729 0.983168 +vn -0.026743 0.180779 0.983160 +vn -0.029357 0.177036 0.983766 +vn -0.029357 0.177036 0.983766 +vn -0.792867 0.595099 -0.131222 +vn -0.777085 0.614809 -0.134718 +vn -0.822972 0.554314 -0.124310 +vn -0.808178 0.574916 -0.127750 +vn -0.808357 0.574673 -0.127710 +vn -0.792652 0.595374 -0.131272 +vn -0.777070 0.614827 -0.134725 +vn -0.822976 0.554308 -0.124312 +vn 0.792663 -0.595361 0.131267 +vn 0.777070 -0.614827 0.134718 +vn 0.822977 -0.554307 0.124308 +vn 0.808348 -0.574685 0.127711 +vn 0.808168 -0.574930 0.127752 +vn 0.792878 -0.595085 0.131219 +vn 0.777086 -0.614808 0.134718 +vn 0.822973 -0.554313 0.124311 +vn -0.743486 0.653598 -0.141553 +vn 0.743488 -0.653598 0.141543 +vn 0.851372 -0.511332 0.117072 +vn -0.851370 0.511334 -0.117075 +vn -0.851364 0.511345 -0.117073 +vn 0.851364 -0.511344 0.117074 +vn 0.743476 -0.653611 0.141549 +vn -0.743474 0.653613 -0.141552 +vn 0.155444 0.375293 0.913779 +vn 0.155444 0.375293 0.913779 +vn 0.155444 0.375293 0.913779 +vn 0.155444 0.375293 0.913779 +vn 0.627748 0.766507 -0.135643 +vn 0.627748 0.766507 -0.135643 +vn 0.627748 0.766507 -0.135643 +vn 0.627748 0.766507 -0.135643 +vn 0.182304 -0.006227 -0.983223 +vn 0.182304 -0.006227 -0.983223 +vn 0.182304 -0.006227 -0.983223 +vn 0.182304 -0.006227 -0.983222 +vn -0.103134 -0.382494 -0.918184 +vn -0.103134 -0.382494 -0.918184 +vn -0.103134 -0.382494 -0.918184 +vn -0.103134 -0.382494 -0.918184 +vn -0.569191 -0.810939 0.135644 +vn -0.569191 -0.810939 0.135644 +vn -0.569191 -0.810940 0.135644 +vn -0.569191 -0.810939 0.135644 +vn -0.161458 -0.042353 0.985970 +vn -0.161458 -0.042353 0.985970 +vn -0.161458 -0.042353 0.985970 +vn -0.161458 -0.042353 0.985970 +vn 0.113740 0.253318 0.960673 +vn 0.105185 0.252233 0.961933 +vn 0.105298 0.252248 0.961917 +vn 0.113740 0.253318 0.960673 +vn -0.113734 -0.253319 -0.960674 +vn -0.105286 -0.252248 -0.961918 +vn -0.105173 -0.252233 -0.961934 +vn -0.113734 -0.253319 -0.960674 +vn -0.080588 -0.248173 -0.965358 +vn -0.080479 -0.248150 -0.965373 +vn -0.072556 -0.246517 -0.966419 +vn -0.072556 -0.246517 -0.966419 +vn 0.080489 0.248150 0.965372 +vn 0.080598 0.248172 0.965357 +vn 0.072560 0.246516 0.966419 +vn 0.072560 0.246516 0.966419 +vn -0.176961 0.956588 -0.231570 +vn -0.152154 0.959998 -0.235058 +vn -0.226066 0.947819 -0.224795 +vn -0.201494 0.952545 -0.228163 +vn -0.202037 0.952447 -0.228091 +vn -0.176373 0.956676 -0.231656 +vn -0.152130 0.960000 -0.235066 +vn -0.226089 0.947814 -0.224794 +vn 0.176389 -0.956673 0.231654 +vn 0.152129 -0.960001 0.235064 +vn 0.226089 -0.947815 0.224790 +vn 0.202022 -0.952450 0.228093 +vn 0.201477 -0.952548 0.228166 +vn 0.176979 -0.956585 0.231568 +vn 0.152155 -0.959999 0.235057 +vn 0.226065 -0.947820 0.224793 +vn -0.102498 0.964958 -0.241559 +vn 0.102499 -0.964957 0.241561 +vn 0.274880 -0.936529 0.217611 +vn -0.274878 0.936528 -0.217616 +vn -0.274849 0.936536 -0.217619 +vn 0.274850 -0.936536 0.217618 +vn 0.102461 -0.964961 0.241561 +vn -0.102459 0.964962 -0.241559 +vn 0.360870 0.263010 0.894762 +vn 0.360870 0.263010 0.894762 +vn 0.360870 0.263010 0.894762 +vn 0.360870 0.263010 0.894762 +vn 0.982822 0.125151 -0.135640 +vn 0.982822 0.125151 -0.135640 +vn 0.982822 0.125151 -0.135640 +vn 0.982822 0.125151 -0.135640 +vn 0.134722 -0.227854 -0.964330 +vn 0.134722 -0.227854 -0.964330 +vn 0.134722 -0.227854 -0.964330 +vn 0.134722 -0.227854 -0.964330 +vn -0.309801 -0.301092 -0.901869 +vn -0.309801 -0.301092 -0.901869 +vn -0.309801 -0.301092 -0.901869 +vn -0.309801 -0.301092 -0.901869 +vn -0.971030 -0.196725 0.135644 +vn -0.971031 -0.196725 0.135644 +vn -0.971030 -0.196725 0.135644 +vn -0.971031 -0.196725 0.135644 +vn -0.174594 0.174603 0.969036 +vn -0.174594 0.174603 0.969036 +vn -0.174594 0.174603 0.969036 +vn -0.174594 0.174603 0.969036 +vn 0.316275 0.184512 0.930551 +vn 0.306459 0.191745 0.932372 +vn 0.306586 0.191652 0.932349 +vn 0.316275 0.184512 0.930551 +vn -0.316270 -0.184519 -0.930551 +vn -0.306571 -0.191664 -0.932351 +vn -0.306444 -0.191758 -0.932374 +vn -0.316270 -0.184519 -0.930551 +vn -0.276909 -0.211741 -0.937276 +vn -0.276774 -0.211825 -0.937297 +vn -0.266880 -0.217943 -0.938763 +vn -0.266880 -0.217943 -0.938763 +vn 0.276786 0.211816 0.937296 +vn 0.276922 0.211731 0.937275 +vn 0.266884 0.217938 0.938763 +vn 0.266884 0.217938 0.938763 +vn 0.501904 0.799679 -0.329554 +vn 0.521723 0.785450 -0.332977 +vn 0.461333 0.826351 -0.322979 +vn 0.482021 0.813147 -0.326263 +vn 0.481363 0.813577 -0.326162 +vn 0.502567 0.799214 -0.329672 +vn 0.521743 0.785434 -0.332984 +vn 0.461294 0.826374 -0.322975 +vn -0.502556 -0.799223 0.329668 +vn -0.521744 -0.785436 0.332978 +vn -0.461295 -0.826375 0.322974 +vn -0.481375 -0.813570 0.326163 +vn -0.482036 -0.813137 0.326266 +vn -0.501890 -0.799689 0.329551 +vn -0.521723 -0.785450 0.332977 +vn -0.461334 -0.826350 0.322981 +vn 0.560038 0.755860 -0.339164 +vn -0.560040 -0.755863 0.339156 +vn -0.419428 -0.851058 0.315879 +vn 0.419428 0.851059 -0.315877 +vn 0.419477 0.851032 -0.315884 +vn -0.419476 -0.851032 0.315886 +vn -0.560084 -0.755825 0.339168 +vn 0.560082 0.755825 -0.339169 +vn 0.501183 0.018065 0.865153 +vn 0.501183 0.018065 0.865153 +vn 0.501183 0.018065 0.865153 +vn 0.501183 0.018065 0.865152 +vn 0.799345 -0.585363 -0.135638 +vn 0.799345 -0.585363 -0.135638 +vn 0.799345 -0.585363 -0.135638 +vn 0.799345 -0.585363 -0.135638 +vn -0.117608 -0.333847 -0.935262 +vn -0.117608 -0.333847 -0.935262 +vn -0.117608 -0.333847 -0.935262 +vn -0.117608 -0.333847 -0.935262 +vn -0.472905 -0.093121 -0.876179 +vn -0.472905 -0.093121 -0.876179 +vn -0.472905 -0.093121 -0.876179 +vn -0.472905 -0.093121 -0.876179 +vn -0.839990 0.525373 0.135647 +vn -0.839990 0.525373 0.135647 +vn -0.839990 0.525373 0.135647 +vn -0.839990 0.525373 0.135647 +vn 0.036976 0.332567 0.942354 +vn 0.036976 0.332567 0.942355 +vn 0.036976 0.332567 0.942355 +vn 0.036976 0.332567 0.942355 +vn 0.450163 -0.066453 0.890471 +vn 0.447451 -0.051046 0.892851 +vn 0.447485 -0.051237 0.892823 +vn 0.450163 -0.066453 0.890471 +vn -0.450163 0.066443 -0.890471 +vn -0.447482 0.051212 -0.892825 +vn -0.447448 0.051020 -0.892854 +vn -0.450163 0.066443 -0.890471 +vn -0.437544 0.006139 -0.899176 +vn -0.437494 0.005948 -0.899202 +vn -0.433613 -0.008595 -0.901058 +vn -0.433613 -0.008595 -0.901058 +vn 0.437497 -0.005968 0.899200 +vn 0.437548 -0.006160 0.899174 +vn 0.433614 0.008586 0.901058 +vn 0.433614 0.008586 0.901058 +vn 0.873281 0.239844 -0.424094 +vn 0.877688 0.216756 -0.427412 +vn 0.862660 0.285020 -0.417829 +vn 0.868380 0.262108 -0.420969 +vn 0.868153 0.263060 -0.420844 +vn 0.873477 0.238870 -0.424240 +vn 0.877692 0.216734 -0.427416 +vn 0.862644 0.285081 -0.417820 +vn -0.873474 -0.238882 0.424238 +vn -0.877692 -0.216733 0.427416 +vn -0.862644 -0.285081 0.417820 +vn -0.868156 -0.263048 0.420846 +vn -0.868384 -0.262092 0.420971 +vn -0.873277 -0.239861 0.424092 +vn -0.877687 -0.216759 0.427412 +vn -0.862661 -0.285018 0.417828 +vn 0.884926 0.170889 -0.433247 +vn -0.884926 -0.170889 0.433247 +vn -0.849907 -0.329852 0.410920 +vn 0.849908 0.329852 -0.410919 +vn 0.849928 0.329785 -0.410931 +vn -0.849929 -0.329785 0.410929 +vn -0.884935 -0.170818 0.433256 +vn 0.884936 0.170815 -0.433256 +vn 0.466726 -0.316215 0.825939 +vn 0.466726 -0.316215 0.825939 +vn 0.466726 -0.316215 0.825939 +vn 0.466726 -0.316215 0.825939 +vn 0.177346 -0.974756 -0.135641 +vn 0.177346 -0.974756 -0.135641 +vn 0.177346 -0.974756 -0.135641 +vn 0.177346 -0.974756 -0.135641 +vn -0.406112 -0.176947 -0.896528 +vn -0.406112 -0.176947 -0.896528 +vn -0.406112 -0.176947 -0.896528 +vn -0.406112 -0.176947 -0.896528 +vn -0.494232 0.223729 -0.840048 +vn -0.494232 0.223729 -0.840048 +vn -0.494232 0.223729 -0.840048 +vn -0.494232 0.223729 -0.840048 +vn -0.248111 0.959189 0.135640 +vn -0.248111 0.959189 0.135640 +vn -0.248111 0.959189 0.135640 +vn -0.248111 0.959189 0.135640 +vn 0.342167 0.249989 0.905774 +vn 0.342167 0.249989 0.905774 +vn 0.342167 0.249989 0.905774 +vn 0.342167 0.249989 0.905774 +vn 0.357932 -0.405920 0.840901 +vn 0.368433 -0.390168 0.843816 +vn 0.368314 -0.390349 0.843785 +vn 0.357932 -0.405920 0.840901 +vn -0.357942 0.405912 -0.840900 +vn -0.368331 0.390327 -0.843787 +vn -0.368451 0.390146 -0.843819 +vn -0.357942 0.405912 -0.840900 +vn -0.397111 0.342500 -0.851467 +vn -0.397219 0.342302 -0.851497 +vn -0.405922 0.326179 -0.853718 +vn -0.405922 0.326179 -0.853718 +vn 0.397207 -0.342324 0.851494 +vn 0.397098 -0.342524 0.851464 +vn 0.405917 -0.326189 0.853717 +vn 0.405917 -0.326189 0.853717 +vn 0.763745 -0.390313 -0.514149 +vn 0.751761 -0.408975 -0.517296 +vn 0.785729 -0.352558 -0.508265 +vn 0.774708 -0.372108 -0.511237 +vn 0.775271 -0.371130 -0.511095 +vn 0.763146 -0.391263 -0.514315 +vn 0.751744 -0.409000 -0.517302 +vn 0.785764 -0.352493 -0.508256 +vn -0.763152 0.391255 0.514313 +vn -0.751743 0.409002 0.517300 +vn -0.785764 0.352493 0.508256 +vn -0.775266 0.371140 0.511096 +vn -0.774700 0.372121 0.511239 +vn -0.763753 0.390300 0.514147 +vn -0.751761 0.408974 0.517296 +vn -0.785728 0.352560 0.508265 +vn 0.726983 -0.445226 -0.522752 +vn -0.726984 0.445227 0.522750 +vn -0.806262 0.313508 0.501651 +vn 0.806262 -0.313508 -0.501651 +vn 0.806228 -0.313580 -0.501661 +vn -0.806227 0.313581 0.501662 +vn -0.726941 0.445287 0.522758 +vn 0.726941 -0.445286 -0.522759 +vn 0.193606 -0.599048 0.776955 +vn 0.193606 -0.599048 0.776955 +vn 0.193605 -0.599048 0.776954 +vn 0.193606 -0.599048 0.776955 +vn -0.541999 -0.829360 -0.135646 +vn -0.541999 -0.829360 -0.135646 +vn -0.541999 -0.829360 -0.135646 +vn -0.541999 -0.829360 -0.135646 +vn -0.491323 0.196884 -0.848433 +vn -0.491323 0.196884 -0.848433 +vn -0.491323 0.196884 -0.848433 +vn -0.491323 0.196884 -0.848433 +vn -0.288004 0.534582 -0.794529 +vn -0.288004 0.534582 -0.794529 +vn -0.288004 0.534582 -0.794529 +vn -0.288004 0.534582 -0.794529 +vn 0.479864 0.866794 0.135640 +vn 0.479864 0.866794 0.135640 +vn 0.479864 0.866794 0.135640 +vn 0.479864 0.866794 0.135640 +vn 0.503196 -0.085804 0.859902 +vn 0.503196 -0.085804 0.859902 +vn 0.503196 -0.085804 0.859902 +vn 0.503196 -0.085804 0.859902 +vn 0.003604 -0.622850 0.782333 +vn 0.025069 -0.618026 0.785758 +vn 0.024839 -0.618079 0.785724 +vn 0.003604 -0.622850 0.782333 +vn -0.003615 0.622849 -0.782334 +vn -0.024864 0.618076 -0.785725 +vn -0.025097 0.618022 -0.785760 +vn -0.003615 0.622849 -0.782334 +vn -0.087570 0.600664 -0.794692 +vn -0.087799 0.600589 -0.794723 +vn -0.108121 0.593824 -0.797297 +vn -0.108121 0.593824 -0.797297 +vn 0.087768 -0.600598 0.794719 +vn 0.087538 -0.600673 0.794688 +vn 0.108109 -0.593831 0.797294 +vn 0.108109 -0.593831 0.797294 +vn 0.282653 -0.749431 -0.598715 +vn 0.262357 -0.754411 -0.601691 +vn 0.321532 -0.738010 -0.593261 +vn 0.301585 -0.744184 -0.596017 +vn 0.302760 -0.743830 -0.595864 +vn 0.281470 -0.749730 -0.598899 +vn 0.262350 -0.754409 -0.601698 +vn 0.321637 -0.737975 -0.593247 +vn -0.281478 0.749729 0.598896 +vn -0.262349 0.754411 0.601695 +vn -0.321638 0.737977 0.593245 +vn -0.302752 0.743833 0.595864 +vn -0.301572 0.744188 0.596019 +vn -0.282666 0.749428 0.598713 +vn -0.262357 0.754411 0.601691 +vn -0.321531 0.738010 0.593261 +vn 0.222333 -0.763170 -0.606745 +vn -0.222334 0.763171 0.606743 +vn -0.360536 0.724843 0.587041 +vn 0.360536 -0.724843 -0.587041 +vn 0.360466 -0.724869 -0.587051 +vn -0.360465 0.724867 0.587054 +vn -0.222284 0.763184 0.606745 +vn 0.222285 -0.763185 -0.606744 +vn -0.248657 -0.647211 0.720616 +vn -0.248657 -0.647211 0.720616 +vn -0.248657 -0.647211 0.720616 +vn -0.248657 -0.647211 0.720616 +vn -0.963792 -0.229577 -0.135644 +vn -0.963792 -0.229577 -0.135644 +vn -0.963792 -0.229577 -0.135644 +vn -0.963792 -0.229577 -0.135644 +vn -0.240914 0.561210 -0.791836 +vn -0.240914 0.561210 -0.791836 +vn -0.240914 0.561210 -0.791836 +vn -0.240914 0.561210 -0.791836 +vn 0.122625 0.661794 -0.739589 +vn 0.122625 0.661794 -0.739589 +vn 0.122625 0.661794 -0.739589 +vn 0.122625 0.661794 -0.739589 +vn 0.944362 0.299637 0.135642 +vn 0.944362 0.299637 0.135642 +vn 0.944362 0.299637 0.135642 +vn 0.944362 0.299637 0.135642 +vn 0.345388 -0.482128 0.805146 +vn 0.345388 -0.482128 0.805146 +vn 0.345388 -0.482128 0.805146 +vn 0.345388 -0.482128 0.805146 +vn -0.461144 -0.524921 0.715405 +vn -0.439894 -0.537713 0.719276 +vn -0.440102 -0.537590 0.719241 +vn -0.461144 -0.524921 0.715405 +vn 0.461132 0.524936 -0.715402 +vn 0.440082 0.537607 -0.719240 +vn 0.439872 0.537731 -0.719276 +vn 0.461132 0.524936 -0.715402 +vn 0.374815 0.572254 -0.729411 +vn 0.374583 0.572363 -0.729444 +vn 0.352523 0.582587 -0.732339 +vn 0.352523 0.582587 -0.732339 +vn -0.374616 -0.572347 0.729440 +vn -0.374850 -0.572235 0.729407 +vn -0.352539 -0.582579 0.732337 +vn -0.352539 -0.582579 0.732337 +vn -0.269131 -0.685028 -0.676982 +vn -0.285783 -0.675506 -0.679721 +vn -0.235851 -0.702032 -0.671957 +vn -0.253259 -0.693461 -0.674516 +vn -0.252104 -0.694040 -0.674353 +vn -0.270226 -0.684411 -0.677171 +vn -0.285784 -0.675503 -0.679723 +vn -0.235762 -0.702076 -0.671942 +vn 0.270220 0.684414 0.677169 +vn 0.285786 0.675501 0.679724 +vn 0.235760 0.702074 0.671944 +vn 0.252111 0.694036 0.674354 +vn 0.253271 0.693457 0.674516 +vn 0.269123 0.685034 0.676980 +vn 0.285784 0.675505 0.679720 +vn 0.235852 0.702033 0.671955 +vn -0.317916 -0.656224 -0.684324 +vn 0.317917 0.656223 0.684325 +vn 0.201517 0.718027 0.666204 +vn -0.201519 -0.718031 -0.666199 +vn -0.201563 -0.718008 -0.666211 +vn 0.201562 0.718011 0.666208 +vn 0.317960 0.656198 0.684329 +vn -0.317958 -0.656198 -0.684330 +vn -0.660497 -0.365930 0.655621 +vn -0.660497 -0.365930 0.655621 +vn -0.660497 -0.365930 0.655621 +vn -0.660497 -0.365930 0.655621 +vn -0.857290 0.496644 -0.135640 +vn -0.857290 0.496644 -0.135640 +vn -0.857290 0.496644 -0.135640 +vn -0.857290 0.496644 -0.135640 +vn 0.246289 0.640994 -0.726958 +vn 0.246289 0.640994 -0.726958 +vn 0.246289 0.640994 -0.726958 +vn 0.246289 0.640994 -0.726958 +vn 0.563948 0.472243 -0.677458 +vn 0.563948 0.472243 -0.677458 +vn 0.563948 0.472243 -0.677458 +vn 0.563948 0.472243 -0.677458 +vn 0.891453 -0.432334 0.135641 +vn 0.891453 -0.432334 0.135641 +vn 0.891453 -0.432334 0.135641 +vn 0.891453 -0.432334 0.135641 +vn -0.103387 -0.661846 0.742476 +vn -0.103387 -0.661846 0.742476 +vn -0.103387 -0.661846 0.742476 +vn -0.103387 -0.661846 0.742476 +vn -0.762381 -0.089877 0.640857 +vn -0.755193 -0.116232 0.645115 +vn -0.755258 -0.116004 0.645080 +vn -0.762381 -0.089877 0.640857 +vn 0.762379 0.089895 -0.640856 +vn 0.755252 0.116028 -0.645083 +vn 0.755187 0.116259 -0.645118 +vn 0.762380 0.089895 -0.640856 +vn 0.729261 0.193439 -0.656323 +vn 0.729167 0.193680 -0.656356 +vn 0.719127 0.218697 -0.659566 +vn 0.719127 0.218697 -0.659566 +vn -0.729181 -0.193646 0.656351 +vn -0.729275 -0.193402 0.656318 +vn -0.719135 -0.218676 0.659565 +vn -0.719135 -0.218676 0.659565 +vn -0.592806 -0.298402 -0.748022 +vn -0.597758 -0.281891 -0.750482 +vn -0.581609 -0.330034 -0.743511 +vn -0.587711 -0.313594 -0.745824 +vn -0.587269 -0.314807 -0.745662 +vn -0.593168 -0.297216 -0.748208 +vn -0.597756 -0.281889 -0.750484 +vn -0.581573 -0.330129 -0.743497 +vn 0.593166 0.297220 0.748207 +vn 0.597757 0.281887 0.750485 +vn 0.581574 0.330130 0.743496 +vn 0.587271 0.314802 0.745663 +vn 0.587715 0.313584 0.745826 +vn 0.592803 0.298410 0.748021 +vn 0.597757 0.281890 0.750483 +vn 0.581608 0.330032 0.743512 +vn -0.606853 -0.249580 -0.754612 +vn 0.606853 0.249580 0.754612 +vn 0.569175 0.361825 0.738324 +vn -0.569175 -0.361821 -0.738326 +vn -0.569192 -0.361779 -0.738334 +vn 0.569191 0.361778 0.738335 +vn 0.606866 0.249533 0.754617 +vn -0.606867 -0.249533 -0.754616 +vn -0.795399 0.164508 0.583333 +vn -0.795399 0.164508 0.583333 +vn -0.795399 0.164508 0.583333 +vn -0.795399 0.164508 0.583333 +vn -0.280379 0.950257 -0.135644 +vn -0.280379 0.950257 -0.135644 +vn -0.280379 0.950257 -0.135644 +vn -0.280379 0.950257 -0.135644 +vn 0.684658 0.320411 -0.654661 +vn 0.684658 0.320411 -0.654661 +vn 0.684658 0.320411 -0.654661 +vn 0.684658 0.320411 -0.654661 +vn 0.794591 -0.007207 -0.607102 +vn 0.794591 -0.007207 -0.607102 +vn 0.794591 -0.007207 -0.607102 +vn 0.794591 -0.007207 -0.607102 +vn 0.349341 -0.927125 0.135645 +vn 0.349341 -0.927125 0.135645 +vn 0.349341 -0.927125 0.135645 +vn 0.349341 -0.927125 0.135645 +vn -0.590143 -0.447161 0.672144 +vn -0.590143 -0.447161 0.672144 +vn -0.590143 -0.447161 0.672144 +vn -0.590143 -0.447161 0.672144 +vn -0.674852 0.481170 0.559509 +vn -0.688921 0.455186 0.564087 +vn -0.688817 0.455384 0.564054 +vn -0.674852 0.481170 0.559509 +vn 0.674856 -0.481158 -0.559515 +vn 0.688828 -0.455358 -0.564061 +vn 0.688934 -0.455157 -0.564094 +vn 0.674856 -0.481158 -0.559515 +vn 0.726129 -0.375087 -0.576235 +vn 0.726223 -0.374856 -0.576267 +vn 0.736910 -0.347599 -0.579775 +vn 0.736910 -0.347599 -0.579775 +vn -0.726210 0.374885 0.576264 +vn -0.726115 0.375119 0.576232 +vn -0.736900 0.347621 0.579774 +vn -0.736900 0.347621 0.579774 +vn -0.565851 0.148295 -0.811062 +vn -0.559029 0.161773 -0.813214 +vn -0.577773 0.121455 -0.807110 +vn -0.571728 0.135657 -0.809151 +vn -0.572217 0.134524 -0.808994 +vn -0.565324 0.149346 -0.811237 +vn -0.559025 0.161778 -0.813216 +vn -0.577814 0.121362 -0.807095 +vn 0.565326 -0.149342 0.811236 +vn 0.559024 -0.161779 0.813216 +vn 0.577812 -0.121363 0.807096 +vn 0.572214 -0.134528 0.808995 +vn 0.571724 -0.135664 0.809152 +vn 0.565855 -0.148289 0.811060 +vn 0.559030 -0.161774 0.813213 +vn 0.577770 -0.121457 0.807112 +vn -0.545440 0.187774 -0.816845 +vn 0.545443 -0.187774 0.816843 +vn 0.589144 -0.093718 0.802575 +vn -0.589146 0.093717 -0.802573 +vn -0.589123 0.093763 -0.802585 +vn 0.589121 -0.093762 0.802587 +vn 0.545425 -0.187814 0.816846 +vn -0.545419 0.187813 -0.816850 +vn -0.521122 0.688373 0.504554 +vn -0.521122 0.688373 0.504554 +vn -0.521121 0.688373 0.504554 +vn -0.521122 0.688373 0.504554 +vn 0.450327 0.882500 -0.135644 +vn 0.450327 0.882500 -0.135644 +vn 0.450327 0.882500 -0.135644 +vn 0.450327 0.882500 -0.135644 +vn 0.775052 -0.260430 -0.575736 +vn 0.775052 -0.260430 -0.575736 +vn 0.775052 -0.260430 -0.575736 +vn 0.775052 -0.260430 -0.575736 +vn 0.634686 -0.562488 -0.529888 +vn 0.634686 -0.562488 -0.529888 +vn 0.634686 -0.562488 -0.529888 +vn 0.634686 -0.562488 -0.529888 +vn -0.384529 -0.913093 0.135647 +vn -0.384529 -0.913092 0.135647 +vn -0.384528 -0.913092 0.135647 +vn -0.384528 -0.913092 0.135647 +vn -0.798401 0.091732 0.595098 +vn -0.798401 0.091732 0.595098 +vn -0.798401 0.091732 0.595097 +vn -0.798401 0.091732 0.595097 +vn -0.185580 0.861672 0.472314 +vn -0.215880 0.851877 0.477181 +vn -0.215697 0.851939 0.477153 +vn -0.185580 0.861672 0.472314 +vn 0.185607 -0.861659 -0.472328 +vn 0.215738 -0.851921 -0.477166 +vn 0.215924 -0.851858 -0.477194 +vn 0.185607 -0.861659 -0.472328 +vn 0.302870 -0.817390 -0.490045 +vn 0.303070 -0.817299 -0.490073 +vn 0.331629 -0.803784 -0.493916 +vn 0.331629 -0.803784 -0.493916 +vn -0.303046 0.817308 0.490073 +vn -0.302844 0.817400 0.490044 +vn -0.331608 0.803790 0.493920 +vn -0.331608 0.803790 0.493920 +vn -0.284660 0.412420 -0.865378 +vn -0.272679 0.416691 -0.867188 +vn -0.307346 0.402959 -0.862069 +vn -0.295398 0.408167 -0.863794 +vn -0.296413 0.407728 -0.863653 +vn -0.283676 0.412773 -0.865532 +vn -0.272667 0.416693 -0.867191 +vn -0.307443 0.402916 -0.862054 +vn 0.283678 -0.412772 0.865532 +vn 0.272665 -0.416694 0.867191 +vn 0.307443 -0.402917 0.862054 +vn 0.296410 -0.407730 0.863654 +vn 0.295391 -0.408169 0.863795 +vn 0.284664 -0.412418 0.865377 +vn 0.272678 -0.416691 0.867188 +vn 0.307343 -0.402959 0.862070 +vn -0.249026 0.424876 -0.870325 +vn 0.249023 -0.424876 0.870326 +vn 0.330778 -0.392474 0.858225 +vn -0.330779 0.392473 -0.858225 +vn -0.330750 0.392488 -0.858229 +vn 0.330749 -0.392487 0.858230 +vn 0.248998 -0.424887 0.870328 +vn -0.248998 0.424887 -0.870328 +vn 0.072027 0.904796 0.419710 +vn 0.072027 0.904796 0.419710 +vn 0.072027 0.904796 0.419710 +vn 0.072027 0.904796 0.419710 +vn 0.933967 0.330616 -0.135641 +vn 0.933967 0.330616 -0.135641 +vn 0.933967 0.330616 -0.135641 +vn 0.933967 0.330616 -0.135641 +vn 0.410331 -0.768386 -0.491133 +vn 0.410331 -0.768386 -0.491133 +vn 0.410331 -0.768386 -0.491133 +vn 0.410331 -0.768386 -0.491133 +vn 0.107547 -0.888406 -0.446283 +vn 0.107547 -0.888406 -0.446283 +vn 0.107547 -0.888406 -0.446283 +vn 0.107547 -0.888406 -0.446283 +vn -0.906983 -0.398727 0.135643 +vn -0.906983 -0.398727 0.135643 +vn -0.906983 -0.398727 0.135643 +vn -0.906983 -0.398727 0.135643 +vn -0.553071 0.657063 0.512231 +vn -0.553071 0.657063 0.512231 +vn -0.553071 0.657063 0.512231 +vn -0.553071 0.657063 0.512231 +vn 0.466926 0.798414 0.380150 +vn 0.437060 0.812798 0.385146 +vn 0.437214 0.812727 0.385122 +vn 0.466926 0.798414 0.380150 +vn -0.466903 -0.798424 -0.380159 +vn -0.437174 -0.812743 -0.385134 +vn -0.437017 -0.812816 -0.385159 +vn -0.466903 -0.798424 -0.380159 +vn -0.344954 -0.849695 -0.398780 +vn -0.344768 -0.849758 -0.398806 +vn -0.313497 -0.859895 -0.402865 +vn -0.313497 -0.859895 -0.402865 +vn 0.344787 0.849752 0.398803 +vn 0.344975 0.849688 0.398777 +vn 0.313510 0.859889 0.402867 +vn 0.313510 0.859889 0.402867 +vn 0.035849 0.411982 -0.910487 +vn 0.045351 0.407779 -0.911954 +vn 0.017001 0.419138 -0.907763 +vn 0.027057 0.415505 -0.909188 +vn 0.026157 0.415833 -0.909065 +vn 0.036677 0.411618 -0.910618 +vn 0.045355 0.407779 -0.911954 +vn 0.016926 0.419166 -0.907752 +vn -0.036677 -0.411618 0.910618 +vn -0.045356 -0.407776 0.911955 +vn -0.016926 -0.419166 0.907752 +vn -0.026159 -0.415832 0.909065 +vn -0.027062 -0.415503 0.909189 +vn -0.035848 -0.411983 0.910486 +vn -0.045354 -0.407779 0.911954 +vn -0.017004 -0.419135 0.907765 +vn 0.063658 0.399551 -0.914498 +vn -0.063659 -0.399548 0.914499 +vn 0.002514 -0.426047 0.904697 +vn -0.002512 0.426045 -0.904698 +vn -0.002476 0.426035 -0.904703 +vn 0.002477 -0.426032 0.904705 +vn -0.063694 -0.399534 0.914503 +vn 0.063692 0.399533 -0.914503 +vn 0.682420 0.651683 0.331077 +vn 0.682420 0.651683 0.331077 +vn 0.682420 0.651683 0.331077 +vn 0.682420 0.651683 0.331077 +vn 0.905571 -0.401923 -0.135644 +vn 0.905571 -0.401923 -0.135644 +vn 0.905571 -0.401923 -0.135644 +vn 0.905571 -0.401923 -0.135644 +vn -0.241484 -0.883387 -0.401638 +vn -0.241484 -0.883387 -0.401638 +vn -0.241484 -0.883387 -0.401638 +vn -0.241484 -0.883387 -0.401638 +vn -0.532444 -0.766828 -0.358438 +vn -0.532444 -0.766828 -0.358438 +vn -0.532444 -0.766828 -0.358438 +vn -0.532444 -0.766828 -0.358438 +vn -0.932521 0.334673 0.135643 +vn -0.932521 0.334673 0.135643 +vn -0.932521 0.334673 0.135643 +vn -0.932521 0.334673 0.135643 +vn 0.052947 0.903934 0.424383 +vn 0.052947 0.903934 0.424383 +vn 0.052947 0.903934 0.424383 +vn 0.052947 0.903934 0.424383 +vn 0.916429 0.281972 0.283990 +vn 0.904272 0.314210 0.289075 +vn 0.904320 0.314088 0.289056 +vn 0.916429 0.281972 0.283990 +vn -0.916423 -0.281988 -0.283993 +vn -0.904307 -0.314121 -0.289062 +vn -0.904258 -0.314245 -0.289081 +vn -0.916423 -0.281988 -0.283993 +vn -0.861176 -0.407952 -0.303232 +vn -0.861104 -0.408091 -0.303253 +vn -0.844695 -0.438055 -0.307567 +vn -0.844695 -0.438055 -0.307567 +vn 0.861113 0.408072 0.303252 +vn 0.861187 0.407932 0.303231 +vn 0.844698 0.438048 0.307569 +vn 0.844698 0.438048 0.307569 +vn 0.219069 0.239387 -0.945887 +vn 0.222079 0.232160 -0.946986 +vn 0.212435 0.253129 -0.943821 +vn 0.216089 0.245866 -0.944910 +vn 0.215750 0.246541 -0.944812 +vn 0.219341 0.238735 -0.945989 +vn 0.222080 0.232157 -0.946987 +vn 0.212405 0.253185 -0.943812 +vn -0.219341 -0.238734 0.945989 +vn -0.222082 -0.232156 0.946987 +vn -0.212405 -0.253184 0.943812 +vn -0.215750 -0.246539 0.944812 +vn -0.216090 -0.245863 0.944911 +vn -0.219068 -0.239388 0.945887 +vn -0.222080 -0.232159 0.946986 +vn -0.212434 -0.253128 0.943821 +vn 0.227839 0.218205 -0.948934 +vn -0.227839 -0.218205 0.948934 +vn -0.205310 -0.267151 0.941530 +vn 0.205314 0.267152 -0.941529 +vn 0.205330 0.267125 -0.941533 +vn -0.205326 -0.267125 0.941534 +vn -0.227846 -0.218179 0.948938 +vn 0.227846 0.218181 -0.948938 +vn 0.970879 0.025834 0.238172 +vn 0.970879 0.025834 0.238172 +vn 0.970879 0.025834 0.238172 +vn 0.970879 0.025834 0.238172 +vn 0.380596 -0.914739 -0.135644 +vn 0.380596 -0.914739 -0.135644 +vn 0.380596 -0.914739 -0.135644 +vn 0.380596 -0.914739 -0.135644 +vn -0.810679 -0.497765 -0.308269 +vn -0.810679 -0.497765 -0.308269 +vn -0.810679 -0.497765 -0.308269 +vn -0.810679 -0.497765 -0.308269 +vn -0.938685 -0.219340 -0.266007 +vn -0.938685 -0.219340 -0.266007 +vn -0.938685 -0.219340 -0.266007 +vn -0.938685 -0.219340 -0.266007 +vn -0.446488 0.884449 0.135639 +vn -0.446488 0.884449 0.135639 +vn -0.446488 0.884449 0.135639 +vn -0.446488 0.884449 0.135639 +vn 0.684626 0.648648 0.332479 +vn 0.684626 0.648648 0.332479 +vn 0.684626 0.648648 0.332479 +vn 0.684626 0.648648 0.332479 +vn 0.886807 -0.423531 0.184917 +vn 0.900585 -0.390950 0.190011 +vn 0.900554 -0.391028 0.189999 +vn 0.886807 -0.423531 0.184917 +vn -0.886815 0.423517 -0.184910 +vn -0.900563 0.391008 -0.189997 +vn -0.900595 0.390929 -0.190009 +vn -0.886815 0.423517 -0.184910 +vn -0.934744 0.290540 -0.204550 +vn -0.934774 0.290433 -0.204564 +vn -0.943667 0.256444 -0.209113 +vn -0.943667 0.256444 -0.209113 +vn 0.934765 -0.290466 0.204559 +vn 0.934735 -0.290574 0.204544 +vn 0.943663 -0.256464 0.209110 +vn 0.943663 -0.256464 0.209110 +vn 0.230673 0.059564 -0.971207 +vn 0.228835 0.054739 -0.971925 +vn 0.233778 0.069305 -0.969817 +vn 0.232196 0.064052 -0.970558 +vn 0.232347 0.064552 -0.970488 +vn 0.230501 0.059118 -0.971274 +vn 0.228830 0.054738 -0.971926 +vn 0.233790 0.069345 -0.969811 +vn -0.230501 -0.059118 0.971275 +vn -0.228830 -0.054737 0.971926 +vn -0.233790 -0.069344 0.969811 +vn -0.232347 -0.064551 0.970489 +vn -0.232194 -0.064051 0.970558 +vn -0.230671 -0.059565 0.971207 +vn -0.228829 -0.054739 0.971927 +vn -0.233775 -0.069305 0.969818 +vn 0.225271 0.045456 -0.973235 +vn -0.225270 -0.045456 0.973235 +vn -0.236816 -0.079461 0.968300 +vn 0.236816 0.079462 -0.968300 +vn 0.236811 0.079445 -0.968302 +vn -0.236807 -0.079445 0.968303 +vn -0.225262 -0.045440 0.973238 +vn 0.225273 0.045441 -0.973236 +vn 0.748831 -0.647257 0.142518 +vn 0.748831 -0.647257 0.142518 +vn 0.748831 -0.647257 0.142518 +vn 0.748831 -0.647257 0.142518 +vn -0.353289 -0.925627 -0.135649 +vn -0.353289 -0.925627 -0.135649 +vn -0.353289 -0.925627 -0.135649 +vn -0.353289 -0.925627 -0.135649 +vn -0.957715 0.194448 -0.212068 +vn -0.957715 0.194448 -0.212068 +vn -0.957715 0.194448 -0.212068 +vn -0.957715 0.194448 -0.212068 +vn -0.860639 0.479835 -0.170469 +vn -0.860639 0.479835 -0.170469 +vn -0.860639 0.479835 -0.170469 +vn -0.860639 0.479835 -0.170469 +vn 0.284490 0.949034 0.135644 +vn 0.284490 0.949034 0.135644 +vn 0.284490 0.949034 0.135644 +vn 0.284490 0.949034 0.135644 +vn 0.971357 0.006694 0.237531 +vn 0.971357 0.006694 0.237531 +vn 0.971357 0.006694 0.237531 +vn 0.971357 0.006694 0.237531 +vn 0.370597 -0.924983 0.084045 +vn 0.403475 -0.910645 0.089067 +vn 0.403445 -0.910659 0.089062 +vn 0.370597 -0.924983 0.084045 +vn -0.370610 0.924979 -0.084040 +vn -0.403450 0.910657 -0.089060 +vn -0.403481 0.910643 -0.089065 +vn -0.370610 0.924979 -0.084040 +vn -0.498521 0.860645 -0.103767 +vn -0.498574 0.860613 -0.103775 +vn -0.528927 0.841699 -0.108530 +vn -0.528927 0.841699 -0.108530 +vn 0.498546 -0.860629 0.103776 +vn 0.498492 -0.860661 0.103768 +vn 0.528912 -0.841707 0.108539 +vn 0.528912 -0.841707 0.108539 +vn 0.163871 -0.023801 -0.986195 +vn 0.161695 -0.024846 -0.986528 +vn 0.168316 -0.021344 -0.985502 +vn 0.165905 -0.022725 -0.985880 +vn 0.166139 -0.022592 -0.985844 +vn 0.163670 -0.023898 -0.986226 +vn 0.161696 -0.024846 -0.986528 +vn 0.168335 -0.021335 -0.985499 +vn -0.163670 0.023898 0.986226 +vn -0.161698 0.024847 0.986528 +vn -0.168335 0.021337 0.985499 +vn -0.166138 0.022593 0.985844 +vn -0.165905 0.022725 0.985880 +vn -0.163871 0.023801 0.986195 +vn -0.161695 0.024846 0.986528 +vn -0.168318 0.021344 0.985502 +vn 0.157488 -0.026864 -0.987155 +vn -0.157489 0.026864 0.987155 +vn -0.172971 0.018678 0.984750 +vn 0.172972 -0.018674 -0.984750 +vn 0.172963 -0.018678 -0.984751 +vn -0.172968 0.018677 0.984750 +vn -0.157474 0.026869 0.987158 +vn 0.157475 -0.026869 -0.987158 +vn 0.113831 -0.992486 0.044890 +vn 0.113831 -0.992486 0.044890 +vn 0.113831 -0.992486 0.044890 +vn 0.113831 -0.992486 0.044890 +vn -0.893306 -0.428492 -0.135643 +vn -0.893306 -0.428492 -0.135643 +vn -0.893306 -0.428492 -0.135643 +vn -0.893306 -0.428492 -0.135643 +vn -0.580408 0.806262 -0.114317 +vn -0.580408 0.806262 -0.114317 +vn -0.580408 0.806262 -0.114317 +vn -0.580408 0.806262 -0.114317 +vn -0.314496 0.946459 -0.072851 +vn -0.314496 0.946459 -0.072851 +vn -0.314496 0.946459 -0.072851 +vn -0.314496 0.946459 -0.072851 +vn 0.859420 0.492949 0.135641 +vn 0.859420 0.492949 0.135641 +vn 0.859420 0.492949 0.135641 +vn 0.859420 0.492949 0.135641 +vn 0.729553 -0.669326 0.140552 +vn 0.729553 -0.669326 0.140552 +vn 0.729553 -0.669326 0.140552 +vn 0.729553 -0.669326 0.140552 +vn -0.355317 -0.934580 -0.017618 +vn -0.321514 -0.946819 -0.012728 +vn -0.321499 -0.946824 -0.012726 +vn -0.355317 -0.934580 -0.017619 +vn 0.355308 0.934583 0.017627 +vn 0.321501 0.946824 0.012728 +vn 0.321516 0.946819 0.012730 +vn 0.355308 0.934583 0.017627 +vn 0.217603 0.976035 -0.002040 +vn 0.217592 0.976038 -0.002041 +vn 0.182291 0.983220 -0.006964 +vn 0.182291 0.983220 -0.006964 +vn -0.217620 -0.976032 0.002035 +vn -0.217630 -0.976029 0.002034 +vn -0.182316 -0.983215 0.006964 +vn -0.182316 -0.983215 0.006964 +vn 0.132204 -0.031569 -0.990720 +vn 0.132513 -0.031667 -0.990675 +vn 0.132115 -0.031535 -0.990733 +vn 0.132082 -0.031529 -0.990737 +vn 0.132084 -0.031531 -0.990737 +vn 0.132230 -0.031580 -0.990716 +vn 0.132506 -0.031670 -0.990676 +vn 0.132113 -0.031538 -0.990733 +vn -0.132232 0.031578 0.990716 +vn -0.132508 0.031666 0.990676 +vn -0.132111 0.031534 0.990733 +vn -0.132084 0.031529 0.990737 +vn -0.132083 0.031530 0.990737 +vn -0.132204 0.031571 0.990720 +vn -0.132510 0.031670 0.990676 +vn -0.132116 0.031536 0.990732 +vn 0.133090 -0.031859 -0.990592 +vn -0.133094 0.031855 0.990591 +vn -0.132171 0.031548 0.990725 +vn 0.132176 -0.031553 -0.990724 +vn 0.132177 -0.031549 -0.990724 +vn -0.132177 0.031549 0.990724 +vn -0.133097 0.031861 0.990591 +vn 0.133104 -0.031858 -0.990590 +vn -0.587181 -0.807725 -0.052909 +vn -0.587181 -0.807725 -0.052909 +vn -0.587181 -0.807725 -0.052909 +vn -0.587181 -0.807725 -0.052909 +vn -0.943299 0.302965 -0.135641 +vn -0.943299 0.302965 -0.135641 +vn -0.943299 0.302965 -0.135641 +vn -0.943300 0.302965 -0.135641 +vn 0.123340 0.992245 -0.015425 +vn 0.123340 0.992245 -0.015425 +vn 0.123340 0.992245 -0.015425 +vn 0.123340 0.992245 -0.015425 +vn 0.411914 0.910852 0.025993 +vn 0.411914 0.910852 0.025993 +vn 0.411914 0.910852 0.025993 +vn 0.411914 0.910852 0.025993 +vn 0.962992 -0.232908 0.135646 +vn 0.962992 -0.232908 0.135646 +vn 0.962992 -0.232908 0.135646 +vn 0.962992 -0.232908 0.135646 +vn 0.083497 -0.995586 0.042858 +vn 0.083497 -0.995586 0.042858 +vn 0.083497 -0.995586 0.042858 +vn 0.083497 -0.995586 0.042858 +vn -0.888467 -0.443227 -0.119067 +vn -0.872464 -0.475112 -0.114345 +vn -0.872433 -0.475171 -0.114336 +vn -0.888467 -0.443227 -0.119067 +vn 0.888457 0.443247 0.119064 +vn 0.872430 0.475177 0.114334 +vn 0.872461 0.475118 0.114343 +vn 0.888457 0.443247 0.119064 +vn 0.817261 0.567593 0.099619 +vn 0.817284 0.567558 0.099624 +vn 0.796699 0.596928 0.094590 +vn 0.796699 0.596928 0.094590 +vn -0.817287 -0.567554 -0.099627 +vn -0.817263 -0.567589 -0.099621 +vn -0.796712 -0.596910 -0.094594 +vn -0.796712 -0.596910 -0.094594 +vn 0.162589 -0.061633 -0.984767 +vn 0.164066 -0.064323 -0.984350 +vn 0.159810 -0.057149 -0.985492 +vn 0.161280 -0.059427 -0.985118 +vn 0.161135 -0.059205 -0.985155 +vn 0.162725 -0.061883 -0.984729 +vn 0.164060 -0.064320 -0.984351 +vn 0.159792 -0.057127 -0.985496 +vn -0.162725 0.061883 0.984729 +vn -0.164063 0.064318 0.984351 +vn -0.159795 0.057127 0.985496 +vn -0.161135 0.059204 0.985155 +vn -0.161279 0.059427 0.985118 +vn -0.162587 0.061633 0.984767 +vn -0.164063 0.064322 0.984351 +vn -0.159810 0.057149 0.985492 +vn 0.166883 -0.069478 -0.983526 +vn -0.166885 0.069476 0.983526 +vn -0.156949 0.052734 0.986198 +vn 0.156948 -0.052734 -0.986198 +vn 0.156970 -0.052753 -0.986193 +vn -0.156969 0.052754 0.986193 +vn -0.166898 0.069501 0.983522 +vn 0.166907 -0.069502 -0.983520 +vn -0.969890 -0.191295 -0.150734 +vn -0.969889 -0.191295 -0.150734 +vn -0.969890 -0.191295 -0.150734 +vn -0.969890 -0.191295 -0.150734 +vn -0.476101 0.868867 -0.135637 +vn -0.476101 0.868867 -0.135637 +vn -0.476101 0.868867 -0.135637 +vn -0.476101 0.868867 -0.135637 +vn 0.760058 0.644530 0.083024 +vn 0.760058 0.644530 0.083024 +vn 0.760058 0.644530 0.083024 +vn 0.760058 0.644530 0.083024 +vn 0.913364 0.387675 0.124397 +vn 0.913364 0.387676 0.124397 +vn 0.913364 0.387675 0.124397 +vn 0.913364 0.387676 0.124397 +vn 0.538431 -0.831681 0.135646 +vn 0.538431 -0.831681 0.135646 +vn 0.538431 -0.831681 0.135646 +vn 0.538431 -0.831681 0.135646 +vn -0.614099 -0.787288 -0.055323 +vn -0.614099 -0.787288 -0.055323 +vn -0.614099 -0.787288 -0.055323 +vn -0.614099 -0.787288 -0.055323 +vn -0.937227 0.271227 -0.219184 +vn -0.947331 0.237655 -0.214673 +vn -0.947362 0.237546 -0.214657 +vn -0.937227 0.271227 -0.219184 +vn 0.937236 -0.271200 0.219177 +vn 0.947368 -0.237525 0.214654 +vn 0.947336 -0.237636 0.214670 +vn 0.937236 -0.271200 0.219177 +vn 0.970509 -0.134283 0.200202 +vn 0.970493 -0.134374 0.200215 +vn 0.975717 -0.099489 0.195138 +vn 0.975717 -0.099489 0.195138 +vn -0.970496 0.134370 -0.200205 +vn -0.970511 0.134278 -0.200192 +vn -0.975718 0.099501 -0.195127 +vn -0.975718 0.099501 -0.195127 +vn 0.174765 -0.177816 -0.968421 +vn 0.173294 -0.183400 -0.967643 +vn 0.176858 -0.167635 -0.969855 +vn 0.175862 -0.172961 -0.969101 +vn 0.175960 -0.172449 -0.969175 +vn 0.174631 -0.178329 -0.968351 +vn 0.173298 -0.183399 -0.967643 +vn 0.176871 -0.167587 -0.969862 +vn -0.174632 0.178330 0.968350 +vn -0.173303 0.183399 0.967642 +vn -0.176873 0.167588 0.969861 +vn -0.175959 0.172449 0.969175 +vn -0.175861 0.172961 0.969101 +vn -0.174763 0.177818 0.968421 +vn -0.173295 0.183401 0.967643 +vn -0.176858 0.167636 0.969855 +vn 0.170463 -0.194104 -0.966057 +vn -0.170467 0.194103 0.966057 +vn -0.178779 0.157300 0.971234 +vn 0.178783 -0.157299 -0.971233 +vn 0.178766 -0.157343 -0.971229 +vn -0.178771 0.157343 0.971228 +vn -0.170451 0.194149 0.966050 +vn 0.170442 -0.194150 -0.966051 +vn -0.823472 0.510627 -0.247293 +vn -0.823472 0.510627 -0.247293 +vn -0.823472 0.510627 -0.247293 +vn -0.823472 0.510627 -0.247293 +vn 0.252275 0.958102 -0.135639 +vn 0.252275 0.958102 -0.135639 +vn 0.252275 0.958102 -0.135639 +vn 0.252275 0.958102 -0.135639 +vn 0.982937 -0.037060 0.180170 +vn 0.982937 -0.037060 0.180170 +vn 0.982937 -0.037060 0.180170 +vn 0.982937 -0.037060 0.180170 +vn 0.916671 -0.332289 0.222032 +vn 0.916671 -0.332289 0.222032 +vn 0.916671 -0.332289 0.222032 +vn 0.916671 -0.332289 0.222032 +vn -0.181558 -0.973981 0.135641 +vn -0.181558 -0.973981 0.135641 +vn -0.181558 -0.973981 0.135641 +vn -0.181558 -0.973981 0.135641 +vn -0.974691 -0.163651 -0.152304 +vn -0.974691 -0.163651 -0.152304 +vn -0.974691 -0.163651 -0.152304 +vn -0.974691 -0.163651 -0.152304 +vn -0.492244 0.810725 -0.316892 +vn -0.521812 0.793716 -0.312613 +vn -0.521945 0.793637 -0.312593 +vn -0.492244 0.810725 -0.316892 +vn 0.492256 -0.810716 0.316897 +vn 0.521958 -0.793627 0.312597 +vn 0.521824 -0.793707 0.312617 +vn 0.492256 -0.810716 0.316897 +vn 0.607054 -0.736430 0.298590 +vn 0.606944 -0.736513 0.298610 +vn 0.634007 -0.715443 0.293560 +vn 0.634007 -0.715443 0.293560 +vn -0.606954 0.736507 -0.298604 +vn -0.607066 0.736423 -0.298584 +vn -0.634007 0.715444 -0.293557 +vn -0.634007 0.715444 -0.293557 +vn 0.061797 -0.330208 -0.941883 +vn 0.054696 -0.334614 -0.940767 +vn 0.074386 -0.321420 -0.944011 +vn 0.067866 -0.326140 -0.942882 +vn 0.068477 -0.325698 -0.942991 +vn 0.061163 -0.330602 -0.941786 +vn 0.054690 -0.334617 -0.940766 +vn 0.074442 -0.321377 -0.944021 +vn -0.061160 0.330603 0.941786 +vn -0.054687 0.334618 0.940766 +vn -0.074444 0.321380 0.944020 +vn -0.068478 0.325699 0.942991 +vn -0.067868 0.326140 0.942882 +vn -0.061795 0.330210 0.941883 +vn -0.054697 0.334619 0.940765 +vn -0.074389 0.321424 0.944009 +vn 0.040945 -0.343076 -0.938415 +vn -0.040933 0.343075 0.938416 +vn -0.087019 0.312208 0.946020 +vn 0.087018 -0.312204 -0.946021 +vn 0.086966 -0.312244 -0.946013 +vn -0.086973 0.312247 0.946011 +vn -0.040898 0.343110 0.938405 +vn 0.040892 -0.343105 -0.938406 +vn -0.243500 0.907753 -0.341603 +vn -0.243500 0.907753 -0.341603 +vn -0.243500 0.907753 -0.341603 +vn -0.243500 0.907753 -0.341603 +vn 0.842261 0.521727 -0.135642 +vn 0.842261 0.521727 -0.135642 +vn 0.842261 0.521727 -0.135642 +vn 0.842261 0.521727 -0.135642 +vn 0.688063 -0.671695 0.274582 +vn 0.688063 -0.671695 0.274582 +vn 0.688063 -0.671695 0.274582 +vn 0.688063 -0.671695 0.274582 +vn 0.430785 -0.844723 0.317596 +vn 0.430785 -0.844724 0.317596 +vn 0.430785 -0.844723 0.317596 +vn 0.430785 -0.844724 0.317596 +vn -0.801884 -0.581877 0.135647 +vn -0.801884 -0.581877 0.135647 +vn -0.801885 -0.581877 0.135647 +vn -0.801884 -0.581877 0.135647 +vn -0.814386 0.524998 -0.247290 +vn -0.814386 0.524998 -0.247290 +vn -0.814386 0.524998 -0.247290 +vn -0.814386 0.524998 -0.247290 +vn 0.178534 0.893854 -0.411280 +vn 0.146259 0.901550 -0.407204 +vn 0.146075 0.901591 -0.407180 +vn 0.178534 0.893854 -0.411280 +vn -0.178526 -0.893857 0.411276 +vn -0.146066 -0.901591 0.407183 +vn -0.146253 -0.901550 0.407208 +vn -0.178526 -0.893857 0.411276 +vn -0.049168 -0.917887 0.393784 +vn -0.049336 -0.917868 0.393808 +vn -0.016158 -0.921171 0.388822 +vn -0.016158 -0.921171 0.388822 +vn 0.049330 0.917871 -0.393801 +vn 0.049160 0.917891 -0.393777 +vn 0.016162 0.921171 -0.388822 +vn 0.016162 0.921171 -0.388822 +vn -0.194370 -0.377296 -0.905466 +vn -0.205038 -0.375105 -0.904022 +vn -0.174589 -0.380269 -0.908248 +vn -0.184994 -0.378886 -0.906765 +vn -0.184060 -0.379013 -0.906902 +vn -0.195283 -0.377111 -0.905347 +vn -0.205040 -0.375105 -0.904022 +vn -0.174491 -0.380287 -0.908259 +vn 0.195284 0.377111 0.905346 +vn 0.205041 0.375105 0.904021 +vn 0.174491 0.380287 0.908259 +vn 0.184058 0.379014 0.906902 +vn 0.184989 0.378888 0.906765 +vn 0.194372 0.377296 0.905465 +vn 0.205037 0.375106 0.904022 +vn 0.174589 0.380274 0.908246 +vn -0.225830 -0.370689 -0.900883 +vn 0.225831 0.370688 0.900883 +vn 0.154006 0.382881 0.910870 +vn -0.154007 -0.382882 -0.910869 +vn -0.154074 -0.382867 -0.910864 +vn 0.154074 0.382874 0.910861 +vn 0.225899 0.370673 0.900872 +vn -0.225903 -0.370674 -0.900871 +vn 0.426241 0.794478 -0.432577 +vn 0.426241 0.794478 -0.432577 +vn 0.426241 0.794478 -0.432577 +vn 0.426241 0.794478 -0.432577 +vn 0.970174 -0.200905 -0.135644 +vn 0.970174 -0.200905 -0.135644 +vn 0.970174 -0.200905 -0.135644 +vn 0.970174 -0.200905 -0.135644 +vn 0.059105 -0.928721 0.366038 +vn 0.059105 -0.928721 0.366038 +vn 0.059105 -0.928721 0.366038 +vn 0.059105 -0.928721 0.366038 +vn -0.255205 -0.875581 0.410157 +vn -0.255205 -0.875581 0.410157 +vn -0.255205 -0.875581 0.410157 +vn -0.255205 -0.875581 0.410157 +vn -0.982372 0.128630 0.135643 +vn -0.982372 0.128631 0.135643 +vn -0.982372 0.128631 0.135643 +vn -0.982372 0.128631 0.135643 +vn -0.246617 0.907956 -0.338815 +vn -0.246617 0.907956 -0.338815 +vn -0.246617 0.907956 -0.338815 +vn -0.246617 0.907956 -0.338815 +vn 0.697757 0.511733 -0.501262 +vn 0.680651 0.537766 -0.497517 +vn 0.680525 0.537951 -0.497488 +vn 0.697757 0.511733 -0.501262 +vn -0.697766 -0.511728 0.501256 +vn -0.680528 -0.537948 0.497487 +vn -0.680656 -0.537760 0.497516 +vn -0.697766 -0.511728 0.501256 +vn -0.623921 -0.613048 0.484660 +vn -0.624054 -0.612889 0.484690 +vn -0.603607 -0.636662 0.479916 +vn -0.603607 -0.636662 0.479916 +vn 0.624052 0.612889 -0.484691 +vn 0.623917 0.613051 -0.484661 +vn 0.603596 0.636669 -0.479922 +vn 0.603596 0.636669 -0.479922 +vn -0.470609 -0.199260 -0.859548 +vn -0.478294 -0.188283 -0.857779 +vn -0.455288 -0.218908 -0.863013 +vn -0.463447 -0.208793 -0.861175 +vn -0.462747 -0.209667 -0.861339 +vn -0.471238 -0.198366 -0.859410 +vn -0.478283 -0.188294 -0.857782 +vn -0.455220 -0.218997 -0.863027 +vn 0.471238 0.198363 0.859411 +vn 0.478281 0.188293 0.857784 +vn 0.455212 0.218995 0.863032 +vn 0.462741 0.209669 0.861341 +vn 0.463444 0.208797 0.861176 +vn 0.470613 0.199255 0.859547 +vn 0.478297 0.188282 0.857778 +vn 0.455291 0.218909 0.863012 +vn -0.492870 -0.167005 -0.853925 +vn 0.492872 0.167003 0.853924 +vn 0.439195 0.238465 0.866165 +vn -0.439208 -0.238466 -0.866158 +vn -0.439239 -0.238421 -0.866155 +vn 0.439243 0.238423 0.866152 +vn 0.492906 0.166959 0.853914 +vn -0.492904 -0.166959 -0.853915 +vn 0.810116 0.272038 -0.519334 +vn 0.810116 0.272038 -0.519334 +vn 0.810116 0.272038 -0.519334 +vn 0.810116 0.272038 -0.519334 +vn 0.566382 -0.812903 -0.135647 +vn 0.566382 -0.812903 -0.135647 +vn 0.566382 -0.812903 -0.135647 +vn 0.566382 -0.812903 -0.135647 +vn -0.551336 -0.700193 0.453606 +vn -0.551336 -0.700193 0.453606 +vn -0.551336 -0.700193 0.453606 +vn -0.551336 -0.700193 0.453606 +vn -0.746480 -0.440725 0.498527 +vn -0.746480 -0.440725 0.498527 +vn -0.746480 -0.440725 0.498527 +vn -0.746480 -0.440725 0.498527 +vn -0.624423 0.769219 0.135640 +vn -0.624423 0.769219 0.135640 +vn -0.624423 0.769219 0.135640 +vn -0.624423 0.769219 0.135640 +vn 0.407168 0.807253 -0.427267 +vn 0.407168 0.807253 -0.427267 +vn 0.407168 0.807253 -0.427267 +vn 0.407168 0.807253 -0.427267 +vn 0.805723 -0.085912 -0.586028 +vn 0.810757 -0.057226 -0.582579 +vn 0.810796 -0.056988 -0.582548 +vn 0.805723 -0.085912 -0.586028 +vn -0.805715 0.085911 0.586040 +vn -0.810790 0.057006 0.582555 +vn -0.810751 0.057247 0.582586 +vn -0.805715 0.085911 0.586040 +vn -0.820707 -0.030532 0.570532 +vn -0.820693 -0.030302 0.570566 +vn -0.822217 -0.059712 0.566034 +vn -0.822217 -0.059712 0.566034 +vn 0.820690 0.030306 -0.570570 +vn 0.820705 0.030540 -0.570536 +vn 0.822215 0.059713 -0.566037 +vn 0.822215 0.059713 -0.566037 +vn -0.565040 0.182621 -0.804599 +vn -0.562744 0.198100 -0.802543 +vn -0.567880 0.153400 -0.808691 +vn -0.566646 0.168629 -0.806521 +vn -0.566752 0.167395 -0.806704 +vn -0.564871 0.183803 -0.804449 +vn -0.562750 0.198081 -0.802544 +vn -0.567890 0.153278 -0.808707 +vn 0.564870 -0.183809 0.804448 +vn 0.562749 -0.198081 0.802544 +vn 0.567887 -0.153281 0.808709 +vn 0.566751 -0.167394 0.806705 +vn 0.566648 -0.168624 0.806521 +vn 0.565039 -0.182631 0.804597 +vn 0.562745 -0.198102 0.802542 +vn 0.567883 -0.153402 0.808688 +vn -0.557919 0.227894 -0.797992 +vn 0.557919 -0.227894 0.797992 +vn 0.569893 -0.123642 0.812364 +vn -0.569899 0.123639 -0.812360 +vn -0.569895 0.123698 -0.812354 +vn 0.569902 -0.123700 0.812349 +vn 0.557900 -0.227953 0.797988 +vn -0.557899 0.227953 -0.797988 +vn 0.724451 -0.337325 -0.601151 +vn 0.724451 -0.337325 -0.601151 +vn 0.724451 -0.337325 -0.601151 +vn 0.724451 -0.337325 -0.601151 +vn -0.148457 -0.979572 -0.135644 +vn -0.148457 -0.979572 -0.135644 +vn -0.148457 -0.979572 -0.135644 +vn -0.148457 -0.979572 -0.135644 +vn -0.830704 -0.151673 0.535655 +vn -0.830704 -0.151673 0.535655 +vn -0.830704 -0.151673 0.535655 +vn -0.830704 -0.151673 0.535655 +vn -0.792513 0.181908 0.582093 +vn -0.792513 0.181908 0.582093 +vn -0.792513 0.181908 0.582093 +vn -0.792513 0.181908 0.582093 +vn 0.076125 0.987829 0.135641 +vn 0.076125 0.987829 0.135641 +vn 0.076125 0.987829 0.135641 +vn 0.076125 0.987829 0.135641 +vn 0.799052 0.317605 -0.510532 +vn 0.799052 0.317605 -0.510532 +vn 0.799052 0.317605 -0.510532 +vn 0.799052 0.317605 -0.510532 +vn 0.497546 -0.557371 -0.664670 +vn 0.518975 -0.541351 -0.661517 +vn 0.519174 -0.541199 -0.661485 +vn 0.497546 -0.557371 -0.664669 +vn -0.497544 0.557374 0.664669 +vn -0.519161 0.541214 0.661483 +vn -0.518960 0.541368 0.661515 +vn -0.497544 0.557374 0.664669 +vn -0.581292 0.488953 0.650403 +vn -0.581112 0.489120 0.650439 +vn -0.600914 0.470426 0.646222 +vn -0.600914 0.470426 0.646222 +vn 0.581113 -0.489111 -0.650445 +vn 0.581295 -0.488942 -0.650409 +vn 0.600913 -0.470421 -0.646226 +vn 0.600913 -0.470421 -0.646226 +vn -0.341716 0.577789 -0.741208 +vn -0.327806 0.588720 -0.738886 +vn -0.367037 0.555829 -0.745881 +vn -0.354073 0.567427 -0.743410 +vn -0.355052 0.566561 -0.743604 +vn -0.340741 0.578564 -0.741053 +vn -0.327821 0.588706 -0.738890 +vn -0.367133 0.555741 -0.745899 +vn 0.340735 -0.578568 0.741053 +vn 0.327823 -0.588705 0.738890 +vn 0.367132 -0.555742 0.745898 +vn 0.355054 -0.566558 0.743605 +vn 0.354077 -0.567421 0.743413 +vn 0.341704 -0.577796 0.741208 +vn 0.327800 -0.588721 0.738888 +vn 0.367033 -0.555827 0.745884 +vn -0.300525 0.609386 -0.733712 +vn 0.300525 -0.609384 0.733713 +vn 0.392005 -0.532699 0.750043 +vn -0.392007 0.532698 -0.750042 +vn -0.391963 0.532739 -0.750036 +vn 0.391964 -0.532737 0.750037 +vn 0.300475 -0.609420 0.733705 +vn -0.300479 0.609418 -0.733704 +vn 0.267299 -0.685669 -0.677060 +vn 0.267299 -0.685669 -0.677060 +vn 0.267299 -0.685669 -0.677060 +vn 0.267299 -0.685669 -0.677060 +vn -0.781760 -0.608649 -0.135642 +vn -0.781760 -0.608649 -0.135642 +vn -0.781760 -0.608649 -0.135642 +vn -0.781760 -0.608649 -0.135642 +vn -0.680565 0.403327 0.611685 +vn -0.680565 0.403327 0.611685 +vn -0.680565 0.403327 0.611685 +vn -0.680565 0.403327 0.611685 +vn -0.413528 0.627343 0.659876 +vn -0.413528 0.627343 0.659876 +vn -0.413528 0.627343 0.659876 +vn -0.413528 0.627343 0.659876 +vn 0.734960 0.664407 0.135637 +vn 0.734960 0.664407 0.135637 +vn 0.734960 0.664407 0.135637 +vn 0.734960 0.664407 0.135637 +vn 0.762451 -0.269770 -0.588127 +vn 0.762451 -0.269770 -0.588127 +vn 0.762451 -0.269770 -0.588127 +vn 0.762451 -0.269770 -0.588127 +vn -0.001455 -0.676634 -0.736318 +vn 0.022796 -0.679377 -0.733435 +vn 0.023035 -0.679402 -0.733405 +vn -0.001455 -0.676634 -0.736318 +vn 0.001456 0.676636 0.736317 +vn -0.023015 0.679404 0.733403 +vn -0.022774 0.679379 0.733434 +vn 0.001456 0.676636 0.736317 +vn -0.095748 0.683689 0.723465 +vn -0.095508 0.683685 0.723500 +vn -0.120464 0.683816 0.719641 +vn -0.120464 0.683816 0.719641 +vn 0.095524 -0.683684 -0.723500 +vn 0.095767 -0.683687 -0.723464 +vn 0.120461 -0.683819 -0.719640 +vn 0.120461 -0.683819 -0.719640 +vn 0.144828 0.728008 -0.670096 +vn 0.164128 0.726240 -0.667561 +vn 0.107996 0.729645 -0.675244 +vn 0.127131 0.729081 -0.672517 +vn 0.125828 0.729129 -0.672710 +vn 0.146049 0.727905 -0.669943 +vn 0.164115 0.726243 -0.667561 +vn 0.107847 0.729651 -0.675262 +vn -0.146056 -0.727904 0.669943 +vn -0.164115 -0.726240 0.667564 +vn -0.107850 -0.729650 0.675262 +vn -0.125821 -0.729129 0.672711 +vn -0.127119 -0.729081 0.672519 +vn -0.144839 -0.728007 0.670094 +vn -0.164128 -0.726240 0.667561 +vn -0.107996 -0.729645 0.675245 +vn 0.202094 0.721931 -0.661796 +vn -0.202094 -0.721927 0.661800 +vn -0.069847 -0.729961 0.679910 +vn 0.069846 0.729960 -0.679911 +vn 0.069892 0.729961 -0.679906 +vn -0.069896 -0.729959 0.679907 +vn -0.202139 -0.721924 0.661790 +vn 0.202141 0.721923 -0.661790 +vn -0.258467 -0.613543 -0.746164 +vn -0.258467 -0.613543 -0.746164 +vn -0.258467 -0.613543 -0.746164 +vn -0.258467 -0.613543 -0.746164 +vn -0.986079 0.096177 -0.135642 +vn -0.986079 0.096177 -0.135642 +vn -0.986079 0.096177 -0.135642 +vn -0.986079 0.096177 -0.135642 +vn -0.239303 0.692731 0.680336 +vn -0.239303 0.692731 0.680336 +vn -0.239303 0.692731 0.680336 +vn -0.239303 0.692732 0.680336 +vn 0.126367 0.670607 0.730970 +vn 0.126367 0.670607 0.730970 +vn 0.126367 0.670607 0.730970 +vn 0.126367 0.670607 0.730970 +vn 0.990493 -0.022893 0.135646 +vn 0.990493 -0.022893 0.135646 +vn 0.990493 -0.022893 0.135646 +vn 0.990493 -0.022893 0.135646 +vn 0.376398 -0.651525 -0.658665 +vn 0.376398 -0.651525 -0.658665 +vn 0.376398 -0.651525 -0.658665 +vn 0.376398 -0.651525 -0.658665 +vn -0.398219 -0.448312 -0.800274 +vn -0.384447 -0.464539 -0.797749 +vn -0.384290 -0.464721 -0.797719 +vn -0.398219 -0.448312 -0.800274 +vn 0.398223 0.448320 0.800267 +vn 0.384313 0.464716 0.797711 +vn 0.384471 0.464531 0.797742 +vn 0.398223 0.448320 0.800267 +vn 0.340119 0.511811 0.788904 +vn 0.340289 0.511644 0.788938 +vn 0.324554 0.526821 0.785573 +vn 0.324554 0.526821 0.785573 +vn -0.340259 -0.511660 -0.788941 +vn -0.340087 -0.511829 -0.788906 +vn -0.324547 -0.526825 -0.785573 +vn -0.324547 -0.526825 -0.785573 +vn 0.646990 0.480660 -0.591921 +vn 0.660979 0.464783 -0.589138 +vn 0.618905 0.509787 -0.597557 +vn 0.633555 0.495027 -0.594606 +vn 0.632674 0.495928 -0.594793 +vn 0.647787 0.479769 -0.591771 +vn 0.660968 0.464795 -0.589141 +vn 0.618807 0.509881 -0.597578 +vn -0.647794 -0.479763 0.591769 +vn -0.660966 -0.464797 0.589142 +vn -0.618810 -0.509878 0.597577 +vn -0.632670 -0.495933 0.594793 +vn -0.633547 -0.495035 0.594607 +vn -0.647001 -0.480649 0.591917 +vn -0.660983 -0.464779 0.589137 +vn -0.618906 -0.509783 0.597559 +vn 0.687434 0.433162 -0.582929 +vn -0.687433 -0.433164 0.582928 +vn -0.589186 -0.538257 0.602611 +vn 0.589176 0.538262 -0.602615 +vn 0.589219 0.538229 -0.602603 +vn -0.589219 -0.538223 0.602608 +vn -0.687471 -0.433116 0.582919 +vn 0.687467 0.433117 -0.582923 +vn -0.542413 -0.229695 -0.808102 +vn -0.542413 -0.229694 -0.808102 +vn -0.542413 -0.229694 -0.808102 +vn -0.542413 -0.229694 -0.808102 +vn -0.650031 0.747704 -0.135645 +vn -0.650030 0.747704 -0.135645 +vn -0.650031 0.747704 -0.135645 +vn -0.650030 0.747704 -0.135645 +vn 0.237077 0.626409 0.742567 +vn 0.237077 0.626409 0.742567 +vn 0.237077 0.626409 0.742567 +vn 0.237077 0.626409 0.742567 +vn 0.497038 0.348203 0.794801 +vn 0.497038 0.348203 0.794801 +vn 0.497038 0.348203 0.794801 +vn 0.497038 0.348203 0.794801 +vn 0.702970 -0.698164 0.135648 +vn 0.702970 -0.698164 0.135648 +vn 0.702970 -0.698164 0.135648 +vn 0.702970 -0.698164 0.135648 +vn -0.119461 -0.680860 -0.722606 +vn -0.119461 -0.680860 -0.722606 +vn -0.119461 -0.680860 -0.722606 +vn -0.119461 -0.680860 -0.722606 +vn -0.512747 -0.067308 -0.855897 +vn -0.513693 -0.085508 -0.853703 +vn -0.513703 -0.085729 -0.853674 +vn -0.512747 -0.067308 -0.855898 +vn 0.512778 0.067305 0.855879 +vn 0.513718 0.085715 0.853667 +vn 0.513708 0.085491 0.853695 +vn 0.512778 0.067305 0.855879 +vn 0.513999 0.141309 0.846071 +vn 0.514007 0.141085 0.846104 +vn 0.513251 0.159848 0.843222 +vn 0.513251 0.159848 0.843222 +vn -0.514002 -0.141107 -0.846104 +vn -0.513993 -0.141334 -0.846071 +vn -0.513236 -0.159855 -0.843229 +vn -0.513236 -0.159855 -0.843229 +vn 0.857363 -0.085937 -0.507487 +vn 0.856564 -0.108504 -0.504506 +vn 0.857010 -0.042225 -0.513567 +vn 0.857506 -0.064564 -0.510408 +vn 0.857491 -0.063388 -0.510580 +vn 0.857334 -0.087033 -0.507349 +vn 0.856563 -0.108485 -0.504511 +vn 0.857007 -0.042096 -0.513583 +vn -0.857334 0.087046 0.507347 +vn -0.856564 0.108487 0.504509 +vn -0.857006 0.042100 0.513583 +vn -0.857490 0.063379 0.510581 +vn -0.857506 0.064550 0.510408 +vn -0.857363 0.085955 0.507484 +vn -0.856564 0.108508 0.504504 +vn -0.857013 0.042227 0.513562 +vn 0.853702 -0.152587 -0.497905 +vn -0.853702 0.152587 0.497905 +vn -0.854757 -0.001828 0.519025 +vn 0.854759 0.001830 -0.519022 +vn 0.854761 0.001769 -0.519018 +vn -0.854768 -0.001766 0.519008 +vn -0.853700 0.152642 0.497892 +vn 0.853700 -0.152642 -0.497892 +vn -0.470137 0.190082 -0.861882 +vn -0.470137 0.190082 -0.861882 +vn -0.470137 0.190082 -0.861882 +vn -0.470137 0.190082 -0.861882 +vn 0.042684 0.989838 -0.135642 +vn 0.042684 0.989838 -0.135642 +vn 0.042684 0.989838 -0.135642 +vn 0.042684 0.989838 -0.135642 +vn 0.520932 0.307975 0.796104 +vn 0.520932 0.307975 0.796104 +vn 0.520932 0.307975 0.796104 +vn 0.520932 0.307975 0.796104 +vn 0.518219 -0.087815 0.850728 +vn 0.518219 -0.087815 0.850728 +vn 0.518219 -0.087815 0.850728 +vn 0.518219 -0.087815 0.850728 +vn 0.029763 -0.990311 0.135643 +vn 0.029763 -0.990311 0.135643 +vn 0.029763 -0.990311 0.135643 +vn 0.029763 -0.990311 0.135643 +vn -0.473864 -0.410066 -0.779293 +vn -0.473864 -0.410066 -0.779293 +vn -0.473864 -0.410066 -0.779293 +vn -0.473864 -0.410066 -0.779293 +vn -0.363469 0.230866 -0.902547 +vn -0.374298 0.220506 -0.900710 +vn -0.374437 0.220372 -0.900685 +vn -0.363469 0.230866 -0.902547 +vn 0.363502 -0.230851 0.902538 +vn 0.374446 -0.220367 0.900683 +vn 0.374306 -0.220502 0.900708 +vn 0.363502 -0.230851 0.902538 +vn 0.406095 -0.187284 0.894434 +vn 0.405965 -0.187430 0.894462 +vn 0.416195 -0.175779 0.892123 +vn 0.416195 -0.175779 0.892123 +vn -0.405983 0.187418 -0.894457 +vn -0.406114 0.187270 -0.894428 +vn -0.416205 0.175768 -0.892121 +vn -0.416205 0.175768 -0.892121 +vn 0.605763 -0.677198 -0.417677 +vn 0.588828 -0.693866 -0.414525 +vn 0.637354 -0.643365 -0.424100 +vn 0.621551 -0.660764 -0.420792 +vn 0.622247 -0.660013 -0.420941 +vn 0.605094 -0.677871 -0.417556 +vn 0.588845 -0.693850 -0.414529 +vn 0.637425 -0.643285 -0.424116 +vn -0.605085 0.677879 0.417554 +vn -0.588850 0.693847 0.414526 +vn -0.637427 0.643283 0.424115 +vn -0.622256 0.660003 0.420943 +vn -0.621559 0.660754 0.420795 +vn -0.605752 0.677209 0.417675 +vn -0.588832 0.693864 0.414524 +vn -0.637347 0.643371 0.424102 +vn 0.554505 -0.725512 -0.407624 +vn -0.554518 0.725506 0.407616 +vn -0.667525 0.607921 0.429933 +vn 0.667516 -0.607927 -0.429938 +vn 0.667496 -0.607957 -0.429927 +vn -0.667479 0.607971 0.429935 +vn -0.554474 0.725540 0.407615 +vn 0.554464 -0.725549 -0.407613 +vn -0.158247 0.390126 -0.907061 +vn -0.158247 0.390126 -0.907061 +vn -0.158247 0.390126 -0.907061 +vn -0.158247 0.390126 -0.907061 +vn 0.712023 0.688930 -0.135646 +vn 0.712022 0.688930 -0.135646 +vn 0.712022 0.688930 -0.135646 +vn 0.712022 0.688930 -0.135645 +vn 0.537473 -0.063271 0.840904 +vn 0.537473 -0.063271 0.840904 +vn 0.537473 -0.063271 0.840904 +vn 0.537473 -0.063271 0.840904 +vn 0.250639 -0.361640 0.897996 +vn 0.250639 -0.361640 0.897996 +vn 0.250639 -0.361640 0.897996 +vn 0.250639 -0.361640 0.897996 +vn -0.659739 -0.739152 0.135640 +vn -0.659739 -0.739152 0.135640 +vn -0.659739 -0.739152 0.135640 +vn -0.659739 -0.739152 0.135640 +vn -0.561543 -0.029869 -0.826908 +vn -0.561543 -0.029869 -0.826908 +vn -0.561543 -0.029869 -0.826908 +vn -0.561543 -0.029869 -0.826908 +vn -0.114422 0.322317 -0.939691 +vn -0.125988 0.322226 -0.938242 +vn -0.126138 0.322224 -0.938222 +vn -0.114422 0.322317 -0.939691 +vn 0.114422 -0.322303 0.939696 +vn 0.126132 -0.322217 0.938225 +vn 0.125980 -0.322219 0.938245 +vn 0.114422 -0.322303 0.939696 +vn 0.161498 -0.320491 0.933383 +vn 0.161340 -0.320504 0.933406 +vn 0.173382 -0.319433 0.931612 +vn 0.173382 -0.319433 0.931612 +vn -0.161355 0.320504 -0.933403 +vn -0.161514 0.320491 -0.933380 +vn -0.173395 0.319436 -0.931609 +vn -0.173395 0.319436 -0.931609 +vn -0.012122 -0.946173 -0.323434 +vn -0.036607 -0.946653 -0.320168 +vn 0.036068 -0.943251 -0.330116 +vn 0.011711 -0.945057 -0.326696 +vn 0.012548 -0.945004 -0.326817 +vn -0.012868 -0.946197 -0.323336 +vn -0.036577 -0.946654 -0.320168 +vn 0.036165 -0.943242 -0.330130 +vn 0.012884 0.946197 0.323334 +vn 0.036578 0.946654 0.320168 +vn -0.036161 0.943242 0.330130 +vn -0.012560 0.945003 0.326820 +vn -0.011728 0.945056 0.326699 +vn 0.012140 0.946174 0.323431 +vn 0.036610 0.946654 0.320165 +vn -0.036067 0.943252 0.330114 +vn -0.085229 -0.945894 -0.313082 +vn 0.085230 0.945894 0.313082 +vn -0.084310 0.937971 0.336307 +vn 0.084312 -0.937971 -0.336306 +vn 0.084270 -0.937978 -0.336297 +vn -0.084269 0.937978 0.336298 +vn 0.085291 0.945889 0.313081 +vn -0.085290 -0.945889 -0.313082 +vn 0.145012 0.299917 -0.942879 +vn 0.145012 0.299917 -0.942879 +vn 0.145012 0.299917 -0.942879 +vn 0.145012 0.299917 -0.942879 +vn 0.990707 0.009975 -0.135645 +vn 0.990707 0.009975 -0.135645 +vn 0.990707 0.009975 -0.135645 +vn 0.990707 0.009975 -0.135645 +vn 0.358496 -0.323167 0.875810 +vn 0.358496 -0.323167 0.875810 +vn 0.358496 -0.323167 0.875810 +vn 0.358496 -0.323167 0.875810 +vn -0.075654 -0.343379 0.936145 +vn -0.075654 -0.343379 0.936145 +vn -0.075654 -0.343379 0.936145 +vn -0.075654 -0.343380 0.936145 +vn -0.987317 -0.082506 0.135642 +vn -0.987317 -0.082506 0.135642 +vn -0.987317 -0.082506 0.135642 +vn -0.987317 -0.082506 0.135642 +vn -0.419489 0.273631 -0.865538 +vn -0.419489 0.273631 -0.865538 +vn -0.419489 0.273631 -0.865538 +vn -0.419489 0.273631 -0.865538 +vn 0.064776 0.246579 -0.966956 +vn 0.058897 0.252035 -0.965924 +vn 0.058818 0.252109 -0.965910 +vn 0.064776 0.246579 -0.966956 +vn -0.064746 -0.246578 0.966958 +vn -0.058810 -0.252104 0.965912 +vn -0.058890 -0.252030 0.965926 +vn -0.064746 -0.246578 0.966958 +vn -0.040005 -0.268247 0.962519 +vn -0.040094 -0.268177 0.962535 +vn -0.033393 -0.273495 0.961293 +vn -0.033393 -0.273495 0.961293 +vn 0.040076 0.268183 -0.962534 +vn 0.039987 0.268254 -0.962518 +vn 0.033381 0.273500 -0.961293 +vn 0.033381 0.273500 -0.961293 +vn -0.668332 -0.708773 -0.225772 +vn -0.687015 -0.691780 -0.222375 +vn -0.630207 -0.740753 -0.232645 +vn -0.649518 -0.724988 -0.229172 +vn -0.649054 -0.725376 -0.229258 +vn -0.668735 -0.708416 -0.225700 +vn -0.687001 -0.691794 -0.222375 +vn -0.630149 -0.740799 -0.232655 +vn 0.668747 0.708405 0.225700 +vn 0.687000 0.691794 0.222379 +vn 0.630155 0.740795 0.232655 +vn 0.649045 0.725383 0.229260 +vn 0.649505 0.724998 0.229175 +vn 0.668345 0.708762 0.225771 +vn 0.687013 0.691782 0.222376 +vn 0.630206 0.740754 0.232646 +vn -0.722816 -0.656681 -0.215190 +vn 0.722810 0.656685 0.215198 +vn 0.590333 0.770916 0.239158 +vn -0.590328 -0.770918 -0.239160 +vn -0.590365 -0.770892 -0.239154 +vn 0.590363 0.770894 0.239153 +vn 0.722840 0.656655 0.215190 +vn -0.722846 -0.656649 -0.215189 +vn 0.238198 0.056459 -0.969574 +vn 0.238198 0.056459 -0.969574 +vn 0.238198 0.056459 -0.969574 +vn 0.238198 0.056459 -0.969574 +vn 0.726238 -0.673928 -0.135645 +vn 0.726238 -0.673928 -0.135645 +vn 0.726238 -0.673928 -0.135645 +vn 0.726238 -0.673928 -0.135645 +vn 0.109164 -0.416867 0.902389 +vn 0.109164 -0.416867 0.902389 +vn 0.109164 -0.416867 0.902389 +vn 0.109164 -0.416867 0.902389 +vn -0.234891 -0.120126 0.964570 +vn -0.234891 -0.120126 0.964570 +vn -0.234891 -0.120126 0.964570 +vn -0.234891 -0.120126 0.964570 +vn -0.773749 0.618800 0.135643 +vn -0.773749 0.618800 0.135643 +vn -0.773749 0.618800 0.135643 +vn -0.773749 0.618800 0.135643 +vn -0.175173 0.412377 -0.894013 +vn -0.175173 0.412377 -0.894013 +vn -0.175173 0.412377 -0.894013 +vn -0.175173 0.412377 -0.894013 +vn 0.115157 0.135818 -0.984019 +vn 0.114867 0.140179 -0.983441 +vn 0.114863 0.140239 -0.983432 +vn 0.115157 0.135818 -0.984019 +vn -0.115137 -0.135814 0.984021 +vn -0.114866 -0.140233 0.983433 +vn -0.114870 -0.140173 0.983441 +vn -0.115137 -0.135814 0.984021 +vn -0.113462 -0.154090 0.981521 +vn -0.113471 -0.154023 0.981530 +vn -0.112802 -0.158882 0.980832 +vn -0.112802 -0.158882 0.980832 +vn 0.113432 0.154027 -0.981534 +vn 0.113422 0.154094 -0.981525 +vn 0.112761 0.158881 -0.980837 +vn 0.112761 0.158881 -0.980837 +vn -0.989646 -0.069546 -0.125556 +vn -0.991540 -0.044068 -0.122092 +vn -0.983823 -0.120447 -0.132609 +vn -0.987061 -0.095129 -0.129079 +vn -0.987019 -0.095492 -0.129130 +vn -0.989671 -0.069255 -0.125517 +vn -0.991539 -0.044091 -0.122095 +vn -0.983815 -0.120500 -0.132616 +vn 0.989673 0.069237 0.125515 +vn 0.991539 0.044091 0.122096 +vn 0.983816 0.120495 0.132614 +vn 0.987018 0.095506 0.129131 +vn 0.987059 0.095145 0.129081 +vn 0.989647 0.069527 0.125554 +vn 0.991540 0.044069 0.122093 +vn 0.983823 0.120445 0.132606 +vn -0.993350 0.006895 -0.114930 +vn 0.993349 -0.006896 0.114933 +vn 0.975389 0.170832 0.139399 +vn -0.975388 -0.170838 -0.139402 +vn -0.975394 -0.170805 -0.139399 +vn 0.975396 0.170798 0.139395 +vn 0.993349 -0.006928 0.114930 +vn -0.993350 0.006924 -0.114927 +vn 0.113617 -0.120230 -0.986223 +vn 0.113617 -0.120230 -0.986223 +vn 0.113617 -0.120230 -0.986223 +vn 0.113617 -0.120230 -0.986223 +vn 0.063236 -0.988738 -0.135643 +vn 0.063236 -0.988738 -0.135643 +vn 0.063236 -0.988738 -0.135643 +vn 0.063236 -0.988738 -0.135643 +vn -0.109256 -0.380218 0.918421 +vn -0.109256 -0.380218 0.918421 +vn -0.109256 -0.380218 0.918421 +vn -0.109256 -0.380218 0.918421 +vn -0.156714 0.090045 0.983531 +vn -0.156714 0.090045 0.983531 +vn -0.156714 0.090045 0.983531 +vn -0.156714 0.090045 0.983531 +vn -0.135665 0.981426 0.135642 +vn -0.135665 0.981426 0.135642 +vn -0.135665 0.981426 0.135642 +vn -0.135665 0.981426 0.135642 +vn 0.060871 0.400932 -0.914083 +vn 0.060871 0.400932 -0.914083 +vn 0.060871 0.400932 -0.914083 +vn 0.060871 0.400932 -0.914083 +vn 0.102405 0.090063 -0.990657 +vn 0.102841 0.090595 -0.990564 +vn 0.102847 0.090602 -0.990562 +vn 0.102405 0.090063 -0.990657 +vn -0.102379 -0.090073 0.990659 +vn -0.102836 -0.090604 0.990563 +vn -0.102830 -0.090596 0.990565 +vn -0.102379 -0.090073 0.990659 +vn -0.104558 -0.092840 0.990176 +vn -0.104548 -0.092826 0.990178 +vn -0.105243 -0.093791 0.990014 +vn -0.105243 -0.093791 0.990014 +vn 0.104547 0.092836 -0.990178 +vn 0.104557 0.092850 -0.990175 +vn 0.105248 0.093800 -0.990012 +vn 0.105248 0.093800 -0.990012 +vn -0.780629 0.624537 -0.023928 +vn -0.764464 0.644342 -0.020432 +vn -0.811785 0.583132 -0.031033 +vn -0.796638 0.603830 -0.027514 +vn -0.796698 0.603750 -0.027529 +vn -0.780608 0.624563 -0.023925 +vn -0.764481 0.644322 -0.020439 +vn -0.811804 0.583105 -0.031039 +vn 0.780598 -0.624575 0.023920 +vn 0.764482 -0.644321 0.020435 +vn 0.811801 -0.583109 0.031036 +vn 0.796709 -0.603736 0.027530 +vn 0.796648 -0.603817 0.027517 +vn 0.780617 -0.624552 0.023926 +vn 0.764460 -0.644347 0.020435 +vn 0.811781 -0.583137 0.031034 +vn -0.730478 0.682805 -0.013383 +vn 0.730481 -0.682802 0.013375 +vn 0.840554 -0.540391 0.038037 +vn -0.840558 0.540384 -0.038042 +vn -0.840549 0.540399 -0.038037 +vn 0.840548 -0.540399 0.038037 +vn 0.730466 -0.682818 0.013377 +vn -0.730466 0.682818 -0.013372 +vn -0.071577 -0.096024 -0.992802 +vn -0.071577 -0.096024 -0.992802 +vn -0.071577 -0.096024 -0.992802 +vn -0.071577 -0.096024 -0.992802 +vn -0.634405 -0.761007 -0.135641 +vn -0.634405 -0.761007 -0.135641 +vn -0.634405 -0.761007 -0.135641 +vn -0.634405 -0.761007 -0.135641 +vn -0.269514 -0.270099 0.924342 +vn -0.269514 -0.270099 0.924342 +vn -0.269514 -0.270099 0.924342 +vn -0.269514 -0.270099 0.924342 +vn 0.032150 0.119952 0.992259 +vn 0.032150 0.119952 0.992259 +vn 0.032150 0.119952 0.992259 +vn 0.032150 0.119952 0.992259 +vn 0.576929 0.805452 0.135645 +vn 0.576929 0.805452 0.135645 +vn 0.576929 0.805453 0.135645 +vn 0.576929 0.805452 0.135645 +vn 0.236312 0.302276 -0.923464 +vn 0.236312 0.302276 -0.923464 +vn 0.236312 0.302276 -0.923464 +vn 0.236312 0.302276 -0.923464 +vn 0.129337 0.097738 -0.986772 +vn 0.126375 0.097378 -0.987191 +vn 0.126334 0.097373 -0.987197 +vn 0.129337 0.097738 -0.986772 +vn -0.129341 -0.097724 0.986773 +vn -0.126339 -0.097366 0.987197 +vn -0.126381 -0.097371 0.987191 +vn -0.129341 -0.097724 0.986773 +vn -0.118116 -0.096093 0.988339 +vn -0.118152 -0.096100 0.988335 +vn -0.115644 -0.095606 0.988679 +vn -0.115644 -0.095606 0.988679 +vn 0.118145 0.096106 -0.988335 +vn 0.118109 0.096099 -0.988340 +vn 0.115637 0.095619 -0.988679 +vn 0.115637 0.095619 -0.988679 +vn -0.150079 0.985590 0.078037 +vn -0.124942 0.988809 0.081530 +vn -0.201167 0.976983 0.070961 +vn -0.176123 0.981551 0.074426 +vn -0.175956 0.981579 0.074449 +vn -0.150303 0.985558 0.078005 +vn -0.124969 0.988806 0.081525 +vn -0.201176 0.976982 0.070960 +vn 0.150284 -0.985561 -0.078007 +vn 0.124966 -0.988806 -0.081524 +vn 0.201175 -0.976982 -0.070957 +vn 0.175974 -0.981576 -0.074445 +vn 0.176140 -0.981548 -0.074422 +vn 0.150061 -0.985592 -0.078039 +vn 0.124941 -0.988809 -0.081529 +vn 0.201166 -0.976984 -0.070958 +vn -0.073970 0.993334 0.088409 +vn 0.073968 -0.993334 -0.088409 +vn 0.251287 -0.965806 -0.063819 +vn -0.251286 0.965806 0.063825 +vn -0.251296 0.965804 0.063822 +vn 0.251290 -0.965805 -0.063820 +vn 0.073977 -0.993333 -0.088413 +vn -0.073981 0.993333 0.088409 +vn -0.123403 0.079149 -0.989195 +vn -0.123403 0.079149 -0.989195 +vn -0.123403 0.079149 -0.989195 +vn -0.123403 0.079149 -0.989195 +vn -0.983968 -0.115797 -0.135642 +vn -0.983968 -0.115797 -0.135642 +vn -0.983968 -0.115797 -0.135642 +vn -0.983968 -0.115797 -0.135642 +vn -0.375920 -0.110116 0.920086 +vn -0.375921 -0.110116 0.920086 +vn -0.375921 -0.110116 0.920086 +vn -0.375921 -0.110116 0.920086 +vn 0.131586 -0.031481 0.990805 +vn 0.131586 -0.031481 0.990805 +vn 0.131586 -0.031481 0.990805 +vn 0.131586 -0.031481 0.990805 +vn 0.972864 0.187446 0.135644 +vn 0.972864 0.187446 0.135644 +vn 0.972864 0.187446 0.135644 +vn 0.972864 0.187446 0.135644 +vn 0.353838 0.153176 -0.922679 +vn 0.353838 0.153176 -0.922679 +vn 0.353838 0.153176 -0.922679 +vn 0.353838 0.153176 -0.922679 +vn 0.225102 0.061617 -0.972385 +vn 0.219718 0.065627 -0.973354 +vn 0.219648 0.065680 -0.973366 +vn 0.225102 0.061617 -0.972385 +vn -0.225098 -0.061612 0.972386 +vn -0.219662 -0.065677 0.973363 +vn -0.219732 -0.065625 0.973351 +vn -0.225098 -0.061612 0.972386 +vn -0.203819 -0.076600 0.976007 +vn -0.203891 -0.076555 0.975996 +vn -0.198528 -0.079940 0.976830 +vn -0.198528 -0.079940 0.976830 +vn 0.203883 0.076555 -0.975998 +vn 0.203811 0.076600 -0.976009 +vn 0.198540 0.079942 -0.976827 +vn 0.198540 0.079942 -0.976827 +vn 0.549740 0.815894 0.179171 +vn 0.569683 0.801322 0.182604 +vn 0.507717 0.844123 0.172279 +vn 0.528496 0.830570 0.175631 +vn 0.528850 0.830332 0.175688 +vn 0.549359 0.816165 0.179105 +vn 0.569663 0.801337 0.182601 +vn 0.507736 0.844111 0.172282 +vn -0.549375 -0.816154 -0.179109 +vn -0.569666 -0.801335 -0.182603 +vn -0.507739 -0.844109 -0.172283 +vn -0.528836 -0.830342 -0.175686 +vn -0.528483 -0.830579 -0.175629 +vn -0.549755 -0.815884 -0.179174 +vn -0.569687 -0.801319 -0.182604 +vn -0.507719 -0.844122 -0.172277 +vn 0.609638 0.769741 0.189316 +vn -0.609640 -0.769739 -0.189317 +vn -0.463991 -0.870329 -0.165045 +vn 0.463984 0.870333 0.165044 +vn 0.463961 0.870346 0.165040 +vn -0.463967 -0.870343 -0.165035 +vn -0.609620 -0.769756 -0.189310 +vn 0.609611 0.769764 0.189309 +vn 0.026452 0.219670 -0.975215 +vn 0.026452 0.219670 -0.975216 +vn 0.026452 0.219670 -0.975216 +vn 0.026452 0.219670 -0.975215 +vn -0.793742 0.592937 -0.135643 +vn -0.793742 0.592937 -0.135643 +vn -0.793742 0.592937 -0.135643 +vn -0.793742 0.592937 -0.135643 +vn -0.412620 0.103574 0.904996 +vn -0.412620 0.103574 0.904996 +vn -0.412620 0.103574 0.904996 +vn -0.412620 0.103574 0.904996 +vn 0.029396 -0.201859 0.978973 +vn 0.029396 -0.201859 0.978973 +vn 0.029396 -0.201859 0.978973 +vn 0.029396 -0.201859 0.978973 +vn 0.835380 -0.532673 0.135647 +vn 0.835380 -0.532673 0.135647 +vn 0.835380 -0.532673 0.135647 +vn 0.835380 -0.532673 0.135647 +vn 0.409837 -0.045205 -0.911038 +vn 0.409837 -0.045205 -0.911038 +vn 0.409837 -0.045205 -0.911038 +vn 0.409837 -0.045205 -0.911038 +vn 0.304892 -0.095129 -0.947624 +vn 0.303151 -0.085050 -0.949140 +vn 0.303127 -0.084915 -0.949159 +vn 0.304892 -0.095129 -0.947624 +vn -0.304918 0.095133 0.947616 +vn -0.303159 0.084928 0.949148 +vn -0.303183 0.085063 0.949128 +vn -0.304917 0.095133 0.947616 +vn -0.296844 0.055345 0.953321 +vn -0.296877 0.055477 0.953303 +vn -0.294414 0.045876 0.954576 +vn -0.294414 0.045876 0.954576 +vn 0.296913 -0.055463 -0.953293 +vn 0.296880 -0.055332 -0.953310 +vn 0.294502 -0.045869 -0.954549 +vn 0.294502 -0.045869 -0.954549 +vn 0.934253 0.222657 0.278559 +vn 0.938593 0.198881 0.281940 +vn 0.923255 0.271572 0.271751 +vn 0.928911 0.247979 0.275010 +vn 0.929061 0.247320 0.275098 +vn 0.934118 0.223351 0.278458 +vn 0.938588 0.198904 0.281938 +vn 0.923266 0.271532 0.271756 +vn -0.934121 -0.223332 -0.278462 +vn -0.938588 -0.198903 -0.281940 +vn -0.923267 -0.271529 -0.271754 +vn -0.929057 -0.247336 -0.275096 +vn -0.928909 -0.247992 -0.275006 +vn -0.934256 -0.222642 -0.278563 +vn -0.938592 -0.198883 -0.281942 +vn -0.923258 -0.271567 -0.271745 +vn 0.945710 0.150024 0.288316 +vn -0.945708 -0.150026 -0.288319 +vn -0.910037 -0.319087 -0.264605 +vn 0.910033 0.319096 0.264609 +vn 0.910025 0.319119 0.264608 +vn -0.910035 -0.319103 -0.264594 +vn -0.945707 -0.150050 -0.288313 +vn 0.945708 0.150049 0.288309 +vn 0.266743 0.152766 -0.951583 +vn 0.266743 0.152766 -0.951583 +vn 0.266743 0.152766 -0.951583 +vn 0.266743 0.152766 -0.951583 +vn -0.168836 0.976266 -0.135643 +vn -0.168836 0.976266 -0.135643 +vn -0.168836 0.976266 -0.135643 +vn -0.168836 0.976266 -0.135643 +vn -0.324109 0.344032 0.881246 +vn -0.324109 0.344032 0.881246 +vn -0.324109 0.344032 0.881246 +vn -0.324109 0.344032 0.881246 +vn -0.209854 -0.197829 0.957510 +vn -0.209854 -0.197829 0.957510 +vn -0.209854 -0.197829 0.957510 +vn -0.209854 -0.197829 0.957510 +vn 0.239749 -0.961313 0.135640 +vn 0.239749 -0.961313 0.135640 +vn 0.239749 -0.961313 0.135640 +vn 0.239749 -0.961313 0.135640 +vn 0.358092 -0.280301 -0.890619 +vn 0.358092 -0.280301 -0.890619 +vn 0.358092 -0.280301 -0.890619 +vn 0.358092 -0.280301 -0.890619 +vn 0.236401 -0.333232 -0.912727 +vn 0.244057 -0.321847 -0.914795 +vn 0.244156 -0.321700 -0.914821 +vn 0.236401 -0.333232 -0.912727 +vn -0.236391 0.333240 0.912727 +vn -0.244135 0.321719 0.914820 +vn -0.244037 0.321865 0.914794 +vn -0.236391 0.333240 0.912727 +vn -0.265474 0.286932 0.920431 +vn -0.265388 0.287087 0.920408 +vn -0.271930 0.275336 0.922087 +vn -0.271930 0.275336 0.922087 +vn 0.265396 -0.287068 -0.920411 +vn 0.265482 -0.286914 -0.920435 +vn 0.271922 -0.275329 -0.922091 +vn 0.271922 -0.275329 -0.922091 +vn 0.809377 -0.451916 0.375073 +vn 0.796679 -0.471340 0.378339 +vn 0.834211 -0.410245 0.368499 +vn 0.822574 -0.430436 0.371613 +vn 0.822123 -0.431200 0.371726 +vn 0.809867 -0.451150 0.374940 +vn 0.796691 -0.471323 0.378335 +vn 0.834185 -0.410293 0.368502 +vn -0.809857 0.451165 -0.374943 +vn -0.796691 0.471323 -0.378336 +vn -0.834185 0.410293 -0.368503 +vn -0.822131 0.431186 -0.371725 +vn -0.822581 0.430425 -0.371611 +vn -0.809370 0.451928 -0.375076 +vn -0.796680 0.471339 -0.378340 +vn -0.834212 0.410245 -0.368497 +vn 0.769277 -0.510352 0.384386 +vn -0.769280 0.510350 -0.384385 +vn -0.856578 0.368240 -0.361487 +vn 0.856578 -0.368240 0.361487 +vn 0.856584 -0.368221 0.361494 +vn -0.856589 0.368218 -0.361484 +vn -0.769300 0.510321 -0.384381 +vn 0.769297 -0.510325 0.384383 +vn 0.376103 -0.126475 -0.917906 +vn 0.376103 -0.126475 -0.917906 +vn 0.376103 -0.126475 -0.917906 +vn 0.376103 -0.126475 -0.917906 +vn 0.549238 0.824584 -0.135642 +vn 0.549238 0.824584 -0.135642 +vn 0.549238 0.824584 -0.135642 +vn 0.549238 0.824584 -0.135642 +vn -0.075602 0.526088 0.847063 +vn -0.075602 0.526088 0.847063 +vn -0.075602 0.526088 0.847063 +vn -0.075602 0.526088 0.847063 +vn -0.375677 0.037808 0.925979 +vn -0.375677 0.037808 0.925979 +vn -0.375677 0.037808 0.925979 +vn -0.375677 0.037808 0.925979 +vn -0.487392 -0.862584 0.135641 +vn -0.487392 -0.862583 0.135641 +vn -0.487392 -0.862583 0.135641 +vn -0.487392 -0.862583 0.135641 +vn 0.154585 -0.486959 -0.859636 +vn 0.154585 -0.486959 -0.859636 +vn 0.154585 -0.486959 -0.859636 +vn 0.154585 -0.486959 -0.859636 +vn -0.036049 -0.495135 -0.868068 +vn -0.019394 -0.491470 -0.870679 +vn -0.019192 -0.491424 -0.870709 +vn -0.036049 -0.495135 -0.868068 +vn 0.036057 0.495152 0.868058 +vn 0.019220 0.491438 0.870701 +vn 0.019420 0.491483 0.870671 +vn 0.036057 0.495152 0.868058 +vn -0.030001 0.478243 0.877715 +vn -0.029799 0.478306 0.877687 +vn -0.045880 0.473211 0.879754 +vn -0.045880 0.473211 0.879754 +vn 0.029835 -0.478305 -0.877687 +vn 0.030036 -0.478242 -0.877714 +vn 0.045896 -0.473217 -0.879750 +vn 0.045896 -0.473217 -0.879750 +vn 0.277795 -0.839125 0.467654 +vn 0.256405 -0.844179 0.470764 +vn 0.322436 -0.826539 0.461376 +vn 0.301217 -0.832869 0.464324 +vn 0.300189 -0.833164 0.464462 +vn 0.278832 -0.838868 0.467496 +vn 0.256416 -0.844176 0.470763 +vn 0.322357 -0.826562 0.461391 +vn -0.278817 0.838873 -0.467497 +vn -0.256418 0.844178 -0.470759 +vn -0.322363 0.826560 -0.461389 +vn -0.300206 0.833159 -0.464459 +vn -0.301227 0.832866 -0.464323 +vn -0.277783 0.839128 -0.467654 +vn -0.256405 0.844180 -0.470763 +vn -0.322434 0.826539 -0.461378 +vn 0.211928 -0.853281 0.476444 +vn -0.211928 0.853288 -0.476431 +vn -0.365515 0.812242 -0.454600 +vn 0.365509 -0.812241 0.454607 +vn 0.365553 -0.812230 0.454591 +vn -0.365553 0.812229 -0.454594 +vn -0.211971 0.853277 -0.476431 +vn 0.211973 -0.853274 0.476436 +vn 0.205763 -0.438755 -0.874732 +vn 0.205763 -0.438755 -0.874732 +vn 0.205763 -0.438755 -0.874732 +vn 0.205763 -0.438756 -0.874732 +vn 0.965946 0.220339 -0.135645 +vn 0.965946 0.220339 -0.135645 +vn 0.965946 0.220339 -0.135645 +vn 0.965946 0.220339 -0.135645 +vn 0.287247 0.521436 0.803488 +vn 0.287247 0.521436 0.803488 +vn 0.287247 0.521436 0.803488 +vn 0.287247 0.521436 0.803488 +vn -0.284353 0.368782 0.884954 +vn -0.284353 0.368782 0.884954 +vn -0.284353 0.368782 0.884954 +vn -0.284353 0.368782 0.884954 +vn -0.947172 -0.290632 0.135644 +vn -0.947172 -0.290632 0.135644 +vn -0.947172 -0.290632 0.135644 +vn -0.947172 -0.290632 0.135644 +vn -0.184968 -0.543074 -0.819059 +vn -0.184968 -0.543074 -0.819059 +vn -0.184968 -0.543074 -0.819059 +vn -0.184968 -0.543074 -0.819059 +vn -0.409361 -0.411768 -0.814169 +vn -0.392114 -0.422238 -0.817289 +vn -0.391923 -0.422352 -0.817322 +vn -0.409361 -0.411768 -0.814169 +vn 0.409385 0.411777 0.814153 +vn 0.391948 0.422354 0.817309 +vn 0.392137 0.422241 0.817277 +vn 0.409385 0.411777 0.814153 +vn 0.338911 0.451115 0.825612 +vn 0.339125 0.451010 0.825581 +vn 0.321002 0.459739 0.828008 +vn 0.321002 0.459739 0.828008 +vn -0.339096 -0.451022 -0.825587 +vn -0.338883 -0.451126 -0.825617 +vn -0.320984 -0.459748 -0.828010 +vn -0.320984 -0.459748 -0.828010 +vn -0.339183 -0.759362 0.555269 +vn -0.356785 -0.749104 0.558165 +vn -0.300576 -0.779638 0.549381 +vn -0.319114 -0.770268 0.552136 +vn -0.320183 -0.769717 0.552285 +vn -0.338170 -0.759943 0.555093 +vn -0.356778 -0.749115 0.558155 +vn -0.300662 -0.779600 0.549387 +vn 0.338179 0.759936 -0.555096 +vn 0.356769 0.749115 -0.558160 +vn 0.300660 0.779597 -0.549393 +vn 0.320169 0.769723 -0.552285 +vn 0.319104 0.770274 -0.552134 +vn 0.339192 0.759359 -0.555269 +vn 0.356786 0.749105 -0.558163 +vn 0.300575 0.779638 -0.549381 +vn -0.392952 -0.726735 0.563424 +vn 0.392941 0.726737 -0.563428 +vn 0.261931 0.797882 -0.542933 +vn -0.261925 -0.797888 0.542928 +vn -0.261886 -0.797901 0.542928 +vn 0.261877 0.797900 -0.542932 +vn 0.392916 0.726753 -0.563424 +vn -0.392912 -0.726754 0.563426 +vn -0.193202 -0.535032 -0.822444 +vn -0.193202 -0.535032 -0.822444 +vn -0.193202 -0.535032 -0.822444 +vn -0.193202 -0.535032 -0.822444 +vn 0.852516 -0.504794 -0.135645 +vn 0.852516 -0.504794 -0.135645 +vn 0.852516 -0.504794 -0.135645 +vn 0.852516 -0.504794 -0.135645 +vn 0.610379 0.253610 0.750413 +vn 0.610379 0.253610 0.750413 +vn 0.610379 0.253610 0.750413 +vn 0.610379 0.253610 0.750413 +vn 0.074019 0.545447 0.834870 +vn 0.074019 0.545447 0.834870 +vn 0.074019 0.545447 0.834870 +vn 0.074019 0.545447 0.834870 +vn -0.887287 0.440821 0.135644 +vn -0.887287 0.440821 0.135644 +vn -0.887287 0.440821 0.135644 +vn -0.887287 0.440821 0.135644 +vn -0.534762 -0.349563 -0.769308 +vn -0.534762 -0.349563 -0.769308 +vn -0.534762 -0.349563 -0.769308 +vn -0.534762 -0.349563 -0.769308 +vn -0.658225 -0.043881 -0.751541 +vn -0.652213 -0.066160 -0.755143 +vn -0.652148 -0.066392 -0.755179 +vn -0.658225 -0.043881 -0.751541 +vn 0.658207 0.043864 0.751558 +vn 0.652129 0.066364 0.755197 +vn 0.652193 0.066135 0.755162 +vn 0.658207 0.043864 0.751558 +vn 0.630655 0.132172 0.764726 +vn 0.630743 0.131936 0.764693 +vn 0.622444 0.153537 0.767457 +vn 0.622444 0.153537 0.767457 +vn -0.630756 -0.131963 -0.764679 +vn -0.630668 -0.132196 -0.764711 +vn -0.622455 -0.153546 -0.767446 +vn -0.622455 -0.153546 -0.767446 +vn -0.705730 -0.310282 0.636922 +vn -0.711010 -0.292191 0.639601 +vn -0.692693 -0.348445 0.631476 +vn -0.699141 -0.330525 0.633999 +vn -0.699558 -0.329329 0.634161 +vn -0.705370 -0.311477 0.636738 +vn -0.711002 -0.292202 0.639604 +vn -0.692718 -0.348354 0.631499 +vn 0.705377 0.311465 -0.636736 +vn 0.711012 0.292199 -0.639595 +vn 0.692725 0.348354 -0.631491 +vn 0.699557 0.329342 -0.634157 +vn 0.699138 0.330534 -0.633998 +vn 0.705733 0.310275 -0.636922 +vn 0.711009 0.292194 -0.639601 +vn 0.692691 0.348446 -0.631478 +vn -0.721157 -0.254225 0.644440 +vn 0.721178 0.254216 -0.644420 +vn 0.678438 0.385361 -0.625475 +vn -0.678420 -0.385369 0.625489 +vn -0.678424 -0.385393 0.625470 +vn 0.678418 0.385395 -0.625475 +vn 0.721152 0.254269 -0.644427 +vn -0.721152 -0.254269 0.644427 +vn -0.584663 -0.278595 -0.761941 +vn -0.584663 -0.278595 -0.761941 +vn -0.584663 -0.278595 -0.761941 +vn -0.584663 -0.278595 -0.761941 +vn 0.272079 -0.952667 -0.135640 +vn 0.272079 -0.952667 -0.135640 +vn 0.272079 -0.952667 -0.135640 +vn 0.272079 -0.952667 -0.135640 +vn 0.692605 -0.209326 0.690275 +vn 0.692605 -0.209326 0.690275 +vn 0.692605 -0.209326 0.690275 +vn 0.692605 -0.209326 0.690275 +vn 0.497991 0.386660 0.776208 +vn 0.497991 0.386660 0.776208 +vn 0.497991 0.386660 0.776208 +vn 0.497991 0.386660 0.776208 +vn -0.341205 0.930151 0.135642 +vn -0.341205 0.930151 0.135642 +vn -0.341205 0.930151 0.135642 +vn -0.341205 0.930151 0.135642 +vn -0.699744 0.075294 -0.710415 +vn -0.699744 0.075294 -0.710415 +vn -0.699744 0.075294 -0.710415 +vn -0.699744 0.075294 -0.710415 +vn -0.577119 0.450869 -0.680919 +vn -0.589451 0.428253 -0.684943 +vn -0.589566 0.428038 -0.684979 +vn -0.577119 0.450869 -0.680919 +vn 0.577099 -0.450889 0.680923 +vn 0.589550 -0.428069 0.684973 +vn 0.589436 -0.428282 0.684937 +vn 0.577099 -0.450889 0.680923 +vn 0.622859 -0.357928 0.695654 +vn 0.622756 -0.358173 0.695620 +vn 0.632541 -0.334212 0.698709 +vn 0.632541 -0.334212 0.698709 +vn -0.622773 0.358143 -0.695620 +vn -0.622874 0.357901 -0.695654 +vn -0.632567 0.334191 -0.698696 +vn -0.632567 0.334190 -0.698696 +vn -0.666938 0.220125 0.711856 +vn -0.659135 0.235252 0.714281 +vn -0.682309 0.186529 0.706867 +vn -0.675352 0.202440 0.709167 +vn -0.674817 0.203636 0.709334 +vn -0.667509 0.218999 0.711668 +vn -0.659139 0.235242 0.714281 +vn -0.682261 0.186625 0.706888 +vn 0.667509 -0.219006 -0.711666 +vn 0.659149 -0.235240 -0.714272 +vn 0.682268 -0.186623 -0.706882 +vn 0.674825 -0.203624 -0.709330 +vn 0.675356 -0.202431 -0.709165 +vn 0.666940 -0.220128 -0.711853 +vn 0.659147 -0.235247 -0.714272 +vn 0.682311 -0.186527 -0.706866 +vn -0.642209 0.266630 0.718663 +vn 0.642225 -0.266623 -0.718651 +vn 0.696103 -0.153263 -0.701392 +vn -0.696098 0.153264 0.701397 +vn -0.696120 0.153217 0.701385 +vn 0.696124 -0.153218 -0.701381 +vn 0.642258 -0.266580 -0.718638 +vn -0.642230 0.266584 0.718661 +vn -0.682811 0.229975 -0.693456 +vn -0.682811 0.229975 -0.693456 +vn -0.682811 0.229975 -0.693456 +vn -0.682811 0.229975 -0.693456 +vn -0.457990 -0.878548 -0.135644 +vn -0.457990 -0.878548 -0.135644 +vn -0.457990 -0.878548 -0.135644 +vn -0.457990 -0.878548 -0.135644 +vn 0.424885 -0.657927 0.621776 +vn 0.424885 -0.657927 0.621776 +vn 0.424885 -0.657927 0.621776 +vn 0.424885 -0.657927 0.621776 +vn 0.699788 -0.079667 0.709894 +vn 0.699788 -0.079667 0.709895 +vn 0.699788 -0.079667 0.709894 +vn 0.699788 -0.079667 0.709894 +vn 0.392482 0.909702 0.135647 +vn 0.392482 0.909702 0.135647 +vn 0.392482 0.909702 0.135647 +vn 0.392482 0.909702 0.135647 +vn -0.530317 0.550680 -0.644605 +vn -0.530317 0.550680 -0.644606 +vn -0.530317 0.550680 -0.644605 +vn -0.530317 0.550680 -0.644605 +vn -0.137133 0.785847 -0.603025 +vn -0.164002 0.777269 -0.607418 +vn -0.164227 0.777194 -0.607453 +vn -0.137133 0.785847 -0.603025 +vn 0.137113 -0.785846 0.603032 +vn 0.164182 -0.777203 0.607454 +vn 0.163959 -0.777276 0.607420 +vn 0.137113 -0.785845 0.603032 +vn 0.243455 -0.746586 0.619144 +vn 0.243218 -0.746690 0.619111 +vn 0.268983 -0.734950 0.622492 +vn 0.268983 -0.734950 0.622492 +vn -0.243243 0.746682 -0.619112 +vn -0.243477 0.746578 -0.619145 +vn -0.268991 0.734947 -0.622493 +vn -0.268991 0.734947 -0.622493 +vn -0.314157 0.542398 0.779172 +vn -0.299947 0.547346 0.781309 +vn -0.344652 0.530102 0.774730 +vn -0.330489 0.536101 0.776771 +vn -0.329307 0.536592 0.776933 +vn -0.315312 0.541988 0.778991 +vn -0.299955 0.547340 0.781311 +vn -0.344545 0.530144 0.774749 +vn 0.315306 -0.541990 -0.778992 +vn 0.299957 -0.547338 -0.781311 +vn 0.344550 -0.530139 -0.774750 +vn 0.329318 -0.536587 -0.776932 +vn 0.330496 -0.536099 -0.776770 +vn 0.314152 -0.542400 -0.779173 +vn 0.299944 -0.547346 -0.781311 +vn 0.344655 -0.530102 -0.774729 +vn -0.269916 0.557306 0.785211 +vn 0.269910 -0.557306 -0.785212 +vn 0.373910 -0.517175 -0.769884 +vn -0.373912 0.517180 0.769879 +vn -0.373969 0.517156 0.769868 +vn 0.373971 -0.517156 -0.769867 +vn 0.269947 -0.557296 -0.785207 +vn -0.269962 0.557296 0.785201 +vn -0.364105 0.696833 -0.617941 +vn -0.364104 0.696833 -0.617941 +vn -0.364105 0.696833 -0.617941 +vn -0.364104 0.696833 -0.617941 +vn -0.936809 -0.322476 -0.135643 +vn -0.936809 -0.322477 -0.135643 +vn -0.936809 -0.322476 -0.135643 +vn -0.936808 -0.322476 -0.135643 +vn -0.117590 -0.829263 0.546348 +vn -0.117590 -0.829263 0.546348 +vn -0.117590 -0.829263 0.546348 +vn -0.117590 -0.829263 0.546348 +vn 0.492212 -0.594007 0.636304 +vn 0.492212 -0.594007 0.636304 +vn 0.492212 -0.594007 0.636304 +vn 0.492212 -0.594007 0.636304 +vn 0.910738 0.390073 0.135646 +vn 0.910738 0.390073 0.135646 +vn 0.910738 0.390073 0.135646 +vn 0.910738 0.390073 0.135646 +vn -0.045529 0.819728 -0.570940 +vn -0.045529 0.819728 -0.570940 +vn -0.045529 0.819728 -0.570940 +vn -0.045529 0.819728 -0.570941 +vn 0.457863 0.721949 -0.518798 +vn 0.430552 0.735249 -0.523483 +vn 0.430357 0.735340 -0.523514 +vn 0.457864 0.721949 -0.518798 +vn -0.457890 -0.721931 0.518799 +vn -0.430402 -0.735317 0.523510 +vn -0.430593 -0.735227 0.523480 +vn -0.457890 -0.721931 0.518799 +vn -0.346121 -0.769977 0.536037 +vn -0.346348 -0.769897 0.536006 +vn -0.317535 -0.779695 0.539674 +vn -0.317535 -0.779695 0.539674 +vn 0.346328 0.769900 -0.536014 +vn 0.346103 0.769980 -0.536045 +vn 0.317528 0.779691 -0.539683 +vn 0.317528 0.779691 -0.539684 +vn 0.104464 0.535356 0.838142 +vn 0.116186 0.530053 0.839967 +vn 0.078072 0.545744 0.834307 +vn 0.090487 0.541111 0.836069 +vn 0.091598 0.540692 0.836219 +vn 0.103442 0.535816 0.837974 +vn 0.116186 0.530059 0.839963 +vn 0.078168 0.545711 0.834320 +vn -0.103446 -0.535812 -0.837976 +vn -0.116187 -0.530057 -0.839964 +vn -0.078163 -0.545706 -0.834324 +vn -0.091589 -0.540693 -0.836220 +vn -0.090482 -0.541113 -0.836068 +vn -0.104464 -0.535356 -0.838142 +vn -0.116181 -0.530058 -0.839965 +vn -0.078074 -0.545747 -0.834305 +vn 0.140942 0.518538 0.843359 +vn -0.140947 -0.518539 -0.843357 +vn -0.052045 -0.555117 -0.830142 +vn 0.052048 0.555125 0.830137 +vn 0.052000 0.555141 0.830129 +vn -0.052005 -0.555139 -0.830130 +vn -0.140862 -0.518569 -0.843353 +vn 0.140871 0.518564 0.843354 +vn 0.230470 0.811996 -0.536234 +vn 0.230470 0.811996 -0.536234 +vn 0.230470 0.811996 -0.536234 +vn 0.230470 0.811996 -0.536233 +vn -0.901696 0.410542 -0.135649 +vn -0.901696 0.410542 -0.135649 +vn -0.901696 0.410542 -0.135649 +vn -0.901696 0.410542 -0.135649 +vn -0.673907 -0.574645 0.464362 +vn -0.673907 -0.574645 0.464362 +vn -0.673907 -0.574645 0.464362 +vn -0.673907 -0.574645 0.464362 +vn -0.057630 -0.828917 0.556395 +vn -0.057630 -0.828917 0.556395 +vn -0.057630 -0.828917 0.556395 +vn -0.057630 -0.828917 0.556395 +vn 0.929297 -0.343524 0.135641 +vn 0.929297 -0.343525 0.135641 +vn 0.929297 -0.343525 0.135641 +vn 0.929297 -0.343524 0.135641 +vn 0.537140 0.686003 -0.490795 +vn 0.537140 0.686003 -0.490796 +vn 0.537140 0.686003 -0.490796 +vn 0.537140 0.686003 -0.490795 +vn 0.871788 0.236431 -0.429053 +vn 0.860440 0.266984 -0.434007 +vn 0.860374 0.267155 -0.434033 +vn 0.871788 0.236431 -0.429053 +vn -0.871782 -0.236420 0.429071 +vn -0.860376 -0.267127 0.434046 +vn -0.860442 -0.266959 0.434020 +vn -0.871782 -0.236420 0.429071 +vn -0.820950 -0.354950 0.447272 +vn -0.821044 -0.354766 0.447245 +vn -0.805771 -0.383555 0.451241 +vn -0.805771 -0.383555 0.451241 +vn 0.821031 0.354790 -0.447249 +vn 0.820938 0.354971 -0.447276 +vn 0.805759 0.383567 -0.451253 +vn 0.805759 0.383567 -0.451253 +vn 0.358640 0.287397 0.888133 +vn 0.362657 0.277527 0.889640 +vn 0.348687 0.308630 0.884966 +vn 0.353518 0.298803 0.886421 +vn 0.353976 0.297875 0.886550 +vn 0.358270 0.288310 0.887987 +vn 0.362663 0.277540 0.889633 +vn 0.348744 0.308545 0.884973 +vn -0.358264 -0.288308 -0.887990 +vn -0.362643 -0.277545 -0.889640 +vn -0.348725 -0.308549 -0.884979 +vn -0.353967 -0.297881 -0.886552 +vn -0.353520 -0.298805 -0.886419 +vn -0.358644 -0.287395 -0.888132 +vn -0.362665 -0.277527 -0.889637 +vn -0.348695 -0.308630 -0.884963 +vn 0.371136 0.256277 0.892513 +vn -0.371116 -0.256282 -0.892520 +vn -0.338279 -0.329407 -0.881509 +vn 0.338297 0.329404 0.881503 +vn 0.338252 0.329462 0.881499 +vn -0.338252 -0.329465 -0.881498 +vn -0.371107 -0.256340 -0.892507 +vn 0.371108 0.256340 0.892507 +vn 0.767814 0.456821 -0.449195 +vn 0.767814 0.456821 -0.449195 +vn 0.767814 0.456821 -0.449195 +vn 0.767814 0.456821 -0.449195 +vn -0.371836 0.918335 -0.135643 +vn -0.371836 0.918335 -0.135643 +vn -0.371836 0.918335 -0.135643 +vn -0.371836 0.918335 -0.135643 +vn -0.925709 0.020648 0.377672 +vn -0.925709 0.020648 0.377672 +vn -0.925709 0.020648 0.377672 +vn -0.925709 0.020648 0.377672 +vn -0.647909 -0.598570 0.471093 +vn -0.647909 -0.598570 0.471093 +vn -0.647909 -0.598570 0.471093 +vn -0.647909 -0.598570 0.471093 +vn 0.438770 -0.888303 0.135638 +vn 0.438770 -0.888303 0.135638 +vn 0.438770 -0.888303 0.135638 +vn 0.438770 -0.888303 0.135638 +vn 0.899880 0.162477 -0.404745 +vn 0.899880 0.162477 -0.404745 +vn 0.899880 0.162477 -0.404745 +vn 0.899880 0.162477 -0.404745 +vn 0.836986 -0.432773 -0.334906 +vn 0.850301 -0.401790 -0.339931 +vn 0.850359 -0.401649 -0.339953 +vn 0.836986 -0.432773 -0.334906 +vn -0.836972 0.432795 0.334912 +vn -0.850341 0.401681 0.339959 +vn -0.850283 0.401821 0.339938 +vn -0.836972 0.432795 0.334912 +vn -0.883848 0.305913 0.353878 +vn -0.883798 0.306084 0.353855 +vn -0.892725 0.273549 0.358068 +vn -0.892725 0.273549 0.358068 +vn 0.883811 -0.306043 -0.353857 +vn 0.883861 -0.305874 -0.353880 +vn 0.892727 -0.273535 -0.358074 +vn 0.892727 -0.273535 -0.358074 +vn 0.370939 -0.000366 0.928657 +vn 0.367880 -0.008182 0.929837 +vn 0.376836 0.017428 0.926116 +vn 0.374257 0.009121 0.927280 +vn 0.374001 0.008296 0.927391 +vn 0.371241 0.000399 0.928536 +vn 0.367896 -0.008177 0.929831 +vn 0.376823 0.017365 0.926123 +vn -0.371238 -0.000396 -0.928538 +vn -0.367890 0.008177 -0.929833 +vn -0.376819 -0.017366 -0.926124 +vn -0.374001 -0.008299 -0.927391 +vn -0.374262 -0.009122 -0.927278 +vn -0.370945 0.000368 -0.928655 +vn -0.367896 0.008184 -0.929831 +vn -0.376846 -0.017426 -0.926112 +vn 0.361351 -0.024734 0.932102 +vn -0.361336 0.024733 -0.932108 +vn -0.382169 -0.034881 -0.923434 +vn 0.382179 0.034881 0.923430 +vn 0.382183 0.034941 0.923426 +vn -0.382190 -0.034939 -0.923423 +vn -0.361362 0.024676 -0.932099 +vn 0.361342 -0.024675 0.932107 +vn 0.911411 -0.203367 -0.357732 +vn 0.911411 -0.203367 -0.357732 +vn 0.911411 -0.203367 -0.357732 +vn 0.911411 -0.203367 -0.357732 +vn 0.361392 0.922495 -0.135645 +vn 0.361392 0.922495 -0.135645 +vn 0.361392 0.922495 -0.135645 +vn 0.361392 0.922495 -0.135645 +vn -0.698730 0.655201 0.287206 +vn -0.698730 0.655201 0.287206 +vn -0.698730 0.655201 0.287206 +vn -0.698730 0.655201 0.287206 +vn -0.924436 0.010369 0.381197 +vn -0.924436 0.010369 0.381197 +vn -0.924436 0.010369 0.381197 +vn -0.924436 0.010369 0.381197 +vn -0.292754 -0.946519 0.135637 +vn -0.292754 -0.946519 0.135637 +vn -0.292754 -0.946519 0.135637 +vn -0.292754 -0.946519 0.135637 +vn 0.808729 -0.496810 -0.314861 +vn 0.808729 -0.496810 -0.314861 +vn 0.808729 -0.496810 -0.314861 +vn 0.808729 -0.496810 -0.314861 +vn 0.333172 -0.912533 -0.237235 +vn 0.365163 -0.898856 -0.242311 +vn 0.365262 -0.898811 -0.242326 +vn 0.333172 -0.912533 -0.237235 +vn -0.333151 0.912543 0.237226 +vn -0.365257 0.898815 0.242321 +vn -0.365159 0.898859 0.242306 +vn -0.333151 0.912543 0.237226 +vn -0.458459 0.850833 0.256708 +vn -0.458341 0.850902 0.256689 +vn -0.488144 0.832776 0.261153 +vn -0.488144 0.832776 0.261153 +vn 0.458370 -0.850885 -0.256693 +vn 0.458487 -0.850817 -0.256711 +vn 0.488167 -0.832761 -0.261154 +vn 0.488167 -0.832761 -0.261154 +vn 0.228905 -0.165507 0.959276 +vn 0.223502 -0.168045 0.960108 +vn 0.240842 -0.159098 0.957436 +vn 0.235347 -0.162184 0.958284 +vn 0.234781 -0.162503 0.958369 +vn 0.229447 -0.165252 0.959190 +vn 0.223496 -0.168045 0.960110 +vn 0.240799 -0.159127 0.957442 +vn -0.229443 0.165252 -0.959191 +vn -0.223505 0.168045 -0.960107 +vn -0.240801 0.159126 -0.957441 +vn -0.234778 0.162501 -0.958370 +vn -0.235345 0.162183 -0.958285 +vn -0.228901 0.165507 -0.959277 +vn -0.223506 0.168044 -0.960107 +vn -0.240847 0.159098 -0.957434 +vn 0.211994 -0.173411 0.961763 +vn -0.212007 0.173411 -0.961760 +vn -0.252376 0.152590 -0.955522 +vn 0.252380 -0.152590 0.955521 +vn 0.252421 -0.152560 0.955515 +vn -0.252426 0.152560 -0.955514 +vn -0.212057 0.173391 -0.961752 +vn 0.212056 -0.173392 0.961752 +vn 0.543970 -0.796859 -0.262892 +vn 0.543970 -0.796859 -0.262892 +vn 0.543970 -0.796859 -0.262892 +vn 0.543970 -0.796859 -0.262892 +vn 0.897014 0.420673 -0.135645 +vn 0.897014 0.420673 -0.135645 +vn 0.897014 0.420673 -0.135645 +vn 0.897014 0.420673 -0.135645 +vn -0.078676 0.978053 0.192932 +vn -0.078676 0.978053 0.192932 +vn -0.078676 0.978053 0.192932 +vn -0.078676 0.978053 0.192932 +vn -0.691462 0.662637 0.287736 +vn -0.691462 0.662637 0.287736 +vn -0.691462 0.662637 0.287736 +vn -0.691462 0.662637 0.287736 +vn -0.863700 -0.485411 0.135642 +vn -0.863700 -0.485411 0.135642 +vn -0.863700 -0.485411 0.135642 +vn -0.863700 -0.485411 0.135642 +vn 0.273183 -0.936259 -0.220887 +vn 0.273183 -0.936259 -0.220887 +vn 0.273183 -0.936259 -0.220887 +vn 0.273183 -0.936259 -0.220887 +vn -0.380437 -0.914579 -0.137159 +vn -0.347166 -0.926959 -0.142206 +vn -0.347108 -0.926980 -0.142214 +vn -0.380437 -0.914579 -0.137159 +vn 0.380462 0.914570 0.137152 +vn 0.347127 0.926973 0.142214 +vn 0.347184 0.926953 0.142205 +vn 0.380462 0.914570 0.137152 +vn 0.244325 0.956918 0.156885 +vn 0.244412 0.956898 0.156873 +vn 0.209535 0.964364 0.161546 +vn 0.209535 0.964364 0.161546 +vn -0.244380 -0.956905 -0.156879 +vn -0.244293 -0.956925 -0.156890 +vn -0.209511 -0.964367 -0.161558 +vn -0.209511 -0.964367 -0.161558 +vn 0.084536 -0.181891 0.979678 +vn 0.081214 -0.180785 0.980164 +vn 0.092442 -0.184035 0.978563 +vn 0.088715 -0.183100 0.979083 +vn 0.088324 -0.183000 0.979137 +vn 0.084876 -0.182001 0.979628 +vn 0.081212 -0.180777 0.980165 +vn 0.092420 -0.184024 0.978567 +vn -0.084877 0.182004 -0.979628 +vn -0.081218 0.180788 -0.980163 +vn -0.092416 0.184028 -0.978567 +vn -0.088323 0.183002 -0.979137 +vn -0.088716 0.183098 -0.979084 +vn -0.084535 0.181886 -0.979679 +vn -0.081215 0.180774 -0.980166 +vn -0.092444 0.184030 -0.978564 +vn 0.074137 -0.178426 0.981157 +vn -0.074149 0.178441 -0.981153 +vn -0.100292 0.186004 -0.977417 +vn 0.100302 -0.186005 0.977416 +vn 0.100316 -0.186011 0.977413 +vn -0.100315 0.186010 -0.977414 +vn -0.074173 0.178433 -0.981152 +vn 0.074176 -0.178448 0.981149 +vn -0.148361 -0.974949 -0.165719 +vn -0.148361 -0.974949 -0.165719 +vn -0.148361 -0.974949 -0.165719 +vn -0.148361 -0.974949 -0.165719 +vn 0.940369 -0.311939 -0.135647 +vn 0.940369 -0.311939 -0.135647 +vn 0.940369 -0.311939 -0.135647 +vn 0.940369 -0.311939 -0.135647 +vn 0.610526 0.786110 0.096384 +vn 0.610526 0.786110 0.096384 +vn 0.610526 0.786110 0.096384 +vn 0.610526 0.786110 0.096384 +vn -0.054946 0.979915 0.191699 +vn -0.054946 0.979915 0.191699 +vn -0.054946 0.979915 0.191699 +vn -0.054946 0.979915 0.191699 +vn -0.960718 0.242119 0.135647 +vn -0.960718 0.242119 0.135647 +vn -0.960718 0.242119 0.135647 +vn -0.960718 0.242119 0.135647 +vn -0.436659 -0.891003 -0.124264 +vn -0.436659 -0.891003 -0.124264 +vn -0.436659 -0.891003 -0.124264 +vn -0.436659 -0.891003 -0.124264 +vn -0.907416 -0.418707 -0.035775 +vn -0.891455 -0.451268 -0.040792 +vn -0.891451 -0.451277 -0.040793 +vn -0.907416 -0.418707 -0.035775 +vn 0.907428 0.418682 0.035770 +vn 0.891458 0.451264 0.040790 +vn 0.891462 0.451256 0.040788 +vn 0.907428 0.418682 0.035770 +vn 0.837281 0.543950 0.055488 +vn 0.837301 0.543920 0.055483 +vn 0.816696 0.573900 0.060385 +vn 0.816696 0.573900 0.060385 +vn -0.837302 -0.543917 -0.055491 +vn -0.837282 -0.543948 -0.055496 +vn -0.816689 -0.573909 -0.060399 +vn -0.816689 -0.573909 -0.060399 +vn 0.026123 -0.141004 0.989664 +vn 0.025647 -0.140110 0.989804 +vn 0.027535 -0.143317 0.989294 +vn 0.026822 -0.142191 0.989476 +vn 0.026741 -0.142075 0.989495 +vn 0.026164 -0.141098 0.989650 +vn 0.025625 -0.140119 0.989803 +vn 0.027516 -0.143316 0.989295 +vn -0.026173 0.141095 -0.989650 +vn -0.025646 0.140116 -0.989803 +vn -0.027534 0.143308 -0.989295 +vn -0.026750 0.142070 -0.989495 +vn -0.026815 0.142191 -0.989476 +vn -0.026117 0.141003 -0.989665 +vn -0.025630 0.140113 -0.989804 +vn -0.027515 0.143322 -0.989294 +vn 0.024606 -0.138198 0.990099 +vn -0.024619 0.138197 -0.990099 +vn -0.029074 0.145731 -0.988897 +vn 0.029069 -0.145743 0.988895 +vn 0.029051 -0.145738 0.988897 +vn -0.029056 0.145745 -0.988895 +vn -0.024622 0.138199 -0.990098 +vn 0.024611 -0.138196 0.990099 +vn -0.779443 -0.622828 -0.067485 +vn -0.779443 -0.622828 -0.067485 +vn -0.779443 -0.622828 -0.067485 +vn -0.779443 -0.622828 -0.067485 +vn 0.467818 -0.873355 -0.135639 +vn 0.467818 -0.873355 -0.135639 +vn 0.467818 -0.873355 -0.135639 +vn 0.467818 -0.873355 -0.135639 +vn 0.986332 0.164760 -0.001661 +vn 0.986332 0.164760 -0.001661 +vn 0.986332 0.164760 -0.001661 +vn 0.986332 0.164760 -0.001661 +vn 0.633836 0.767690 0.094362 +vn 0.633836 0.767690 0.094362 +vn 0.633836 0.767690 0.094362 +vn 0.633836 0.767690 0.094362 +vn -0.531134 0.836361 0.135638 +vn -0.531134 0.836361 0.135638 +vn -0.531134 0.836361 0.135638 +vn -0.531134 0.836361 0.135638 +vn -0.931600 -0.362565 -0.025837 +vn -0.931600 -0.362565 -0.025837 +vn -0.931600 -0.362565 -0.025837 +vn -0.931600 -0.362565 -0.025837 +vn -0.949610 0.306430 0.065891 +vn -0.960313 0.272158 0.061066 +vn -0.960302 0.272197 0.061072 +vn -0.949610 0.306430 0.065891 +vn 0.949604 -0.306446 -0.065894 +vn 0.960294 -0.272223 -0.061074 +vn 0.960305 -0.272185 -0.061069 +vn 0.949604 -0.306446 -0.065894 +vn 0.984873 -0.166978 -0.046290 +vn 0.984876 -0.166963 -0.046288 +vn 0.990458 -0.131478 -0.041315 +vn 0.990458 -0.131478 -0.041315 +vn -0.984876 0.166963 0.046294 +vn -0.984873 0.166977 0.046296 +vn -0.990459 0.131469 0.041321 +vn -0.990459 0.131469 0.041321 +vn 0.021765 -0.145100 0.989178 +vn 0.021371 -0.146521 0.988977 +vn 0.022364 -0.142443 0.989550 +vn 0.022135 -0.143580 0.989391 +vn 0.022112 -0.143704 0.989374 +vn 0.021807 -0.144953 0.989198 +vn 0.021377 -0.146523 0.988976 +vn 0.022368 -0.142459 0.989548 +vn -0.021801 0.144955 -0.989198 +vn -0.021353 0.146525 -0.988976 +vn -0.022342 0.142460 -0.989548 +vn -0.022105 0.143706 -0.989374 +vn -0.022138 0.143582 -0.989391 +vn -0.021771 0.145102 -0.989177 +vn -0.021381 0.146523 -0.988976 +vn -0.022365 0.142444 -0.989550 +vn 0.020539 -0.149544 0.988542 +vn -0.020530 0.149545 -0.988542 +vn -0.022840 0.140053 -0.989881 +vn 0.022852 -0.140054 0.989880 +vn 0.022842 -0.140043 0.989882 +vn -0.022849 0.140043 -0.989882 +vn -0.020558 0.149537 -0.988542 +vn 0.020529 -0.149536 0.988543 +vn -0.996879 0.072410 0.031446 +vn -0.996879 0.072410 0.031445 +vn -0.996879 0.072410 0.031445 +vn -0.996879 0.072410 0.031445 +vn -0.260610 -0.955868 -0.135646 +vn -0.260610 -0.955868 -0.135646 +vn -0.260610 -0.955868 -0.135646 +vn -0.260610 -0.955868 -0.135646 +vn 0.833230 -0.543911 -0.099446 +vn 0.833230 -0.543911 -0.099446 +vn 0.833230 -0.543911 -0.099446 +vn 0.833230 -0.543911 -0.099446 +vn 0.991171 0.132532 -0.003950 +vn 0.991171 0.132532 -0.003950 +vn 0.991171 0.132532 -0.003950 +vn 0.991171 0.132532 -0.003950 +vn 0.190063 0.972356 0.135643 +vn 0.190063 0.972356 0.135643 +vn 0.190063 0.972356 0.135643 +vn 0.190063 0.972356 0.135643 +vn -0.929081 0.362671 0.072655 +vn -0.929081 0.362671 0.072655 +vn -0.929081 0.362671 0.072655 +vn -0.929081 0.362671 0.072655 +vn -0.484726 0.858605 0.166849 +vn -0.515758 0.841240 0.162201 +vn -0.515679 0.841286 0.162213 +vn -0.484726 0.858605 0.166849 +vn 0.484710 -0.858615 -0.166842 +vn 0.515671 -0.841291 -0.162211 +vn 0.515749 -0.841246 -0.162199 +vn 0.484710 -0.858615 -0.166842 +vn 0.604936 -0.782475 -0.147597 +vn 0.604990 -0.782435 -0.147588 +vn 0.633109 -0.760825 -0.142546 +vn 0.633109 -0.760825 -0.142546 +vn -0.604972 0.782447 0.147595 +vn -0.604920 0.782486 0.147604 +vn -0.633107 0.760824 0.142556 +vn -0.633107 0.760824 0.142556 +vn -0.027818 -0.205611 0.978238 +vn -0.031208 -0.207662 0.977703 +vn -0.021080 -0.201025 0.979359 +vn -0.024047 -0.203140 0.978854 +vn -0.024359 -0.203366 0.978800 +vn -0.027467 -0.205403 0.978292 +vn -0.031198 -0.207667 0.977702 +vn -0.021102 -0.201050 0.979354 +vn 0.027463 0.205403 -0.978292 +vn 0.031205 0.207666 -0.977702 +vn 0.021108 0.201049 -0.979354 +vn 0.024355 0.203366 -0.978800 +vn 0.024037 0.203140 -0.978855 +vn 0.027808 0.205611 -0.978239 +vn 0.031201 0.207662 -0.977703 +vn 0.021069 0.201025 -0.979360 +vn -0.038389 -0.212015 0.976512 +vn 0.038390 0.212016 -0.976512 +vn 0.014814 0.196567 -0.980378 +vn -0.014816 -0.196568 0.980378 +vn -0.014794 -0.196555 0.980381 +vn 0.014784 0.196554 -0.980382 +vn 0.038368 0.212003 -0.976516 +vn -0.038372 -0.212002 0.976516 +vn -0.679887 0.721802 0.129446 +vn -0.679887 0.721802 0.129446 +vn -0.679887 0.721802 0.129447 +vn -0.679887 0.721802 0.129447 +vn -0.846777 -0.514365 -0.135638 +vn -0.846777 -0.514365 -0.135638 +vn -0.846777 -0.514365 -0.135638 +vn -0.846777 -0.514365 -0.135638 +vn 0.236867 -0.951401 -0.196800 +vn 0.236867 -0.951401 -0.196800 +vn 0.236867 -0.951401 -0.196800 +vn 0.236867 -0.951401 -0.196800 +vn 0.814973 -0.570518 -0.101631 +vn 0.814973 -0.570518 -0.101631 +vn 0.814973 -0.570518 -0.101631 +vn 0.814973 -0.570518 -0.101631 +vn 0.806937 0.574853 0.135632 +vn 0.806937 0.574853 0.135632 +vn 0.806937 0.574853 0.135632 +vn 0.806937 0.574853 0.135632 +vn -0.429314 0.886831 0.170942 +vn -0.429314 0.886831 0.170942 +vn -0.429314 0.886831 0.170942 +vn -0.429314 0.886831 0.170942 +vn 0.220075 0.938528 0.265955 +vn 0.186259 0.947053 0.261530 +vn 0.186394 0.947021 0.261549 +vn 0.220075 0.938528 0.265955 +vn -0.220094 -0.938518 -0.265975 +vn -0.186411 -0.947014 -0.261562 +vn -0.186278 -0.947045 -0.261544 +vn -0.220094 -0.938518 -0.265975 +vn -0.083386 -0.965351 -0.247275 +vn -0.083272 -0.965365 -0.247259 +vn -0.048793 -0.968994 -0.242218 +vn -0.048793 -0.968994 -0.242218 +vn 0.083271 0.965366 0.247255 +vn 0.083383 0.965352 0.247271 +vn 0.048788 0.968996 0.242213 +vn 0.048788 0.968996 0.242213 +vn -0.177835 -0.229230 0.956989 +vn -0.184099 -0.227878 0.956127 +vn -0.164529 -0.231399 0.958846 +vn -0.170562 -0.230538 0.957998 +vn -0.171187 -0.230444 0.957909 +vn -0.177212 -0.229363 0.957073 +vn -0.184110 -0.227872 0.956126 +vn -0.164586 -0.231379 0.958841 +vn 0.177214 0.229361 -0.957073 +vn 0.184110 0.227871 -0.956127 +vn 0.164586 0.231378 -0.958841 +vn 0.171192 0.230442 -0.957909 +vn 0.170564 0.230537 -0.957998 +vn 0.177836 0.229228 -0.956989 +vn 0.184098 0.227877 -0.956128 +vn 0.164524 0.231399 -0.958846 +vn -0.197379 -0.224968 0.954165 +vn 0.197378 0.224968 -0.954165 +vn 0.151800 0.233158 -0.960518 +vn -0.151803 -0.233159 0.960517 +vn -0.151780 -0.233178 0.960516 +vn 0.151780 0.233178 -0.960516 +vn 0.197341 0.224976 -0.954171 +vn -0.197334 -0.224977 0.954172 +vn -0.015346 0.974085 0.225660 +vn -0.015346 0.974085 0.225660 +vn -0.015346 0.974085 0.225660 +vn -0.015346 0.974085 0.225660 +vn -0.968379 0.209384 -0.135650 +vn -0.968379 0.209384 -0.135650 +vn -0.968379 0.209384 -0.135650 +vn -0.968379 0.209384 -0.135650 +vn -0.464089 -0.836150 -0.292361 +vn -0.464089 -0.836150 -0.292361 +vn -0.464089 -0.836150 -0.292361 +vn -0.464089 -0.836150 -0.292361 +vn 0.213205 -0.956770 -0.197827 +vn 0.213205 -0.956770 -0.197827 +vn 0.213205 -0.956770 -0.197827 +vn 0.213205 -0.956770 -0.197827 +vn 0.981102 -0.137977 0.135650 +vn 0.981102 -0.137977 0.135650 +vn 0.981102 -0.137977 0.135650 +vn 0.981102 -0.137977 0.135650 +vn 0.284005 0.920690 0.267716 +vn 0.284005 0.920690 0.267716 +vn 0.284005 0.920690 0.267716 +vn 0.284005 0.920690 0.267716 +vn 0.770625 0.524347 0.362212 +vn 0.752469 0.552817 0.358027 +vn 0.752565 0.552672 0.358050 +vn 0.770625 0.524347 0.362212 +vn -0.770611 -0.524362 -0.362221 +vn -0.752558 -0.552683 -0.358047 +vn -0.752464 -0.552826 -0.358025 +vn -0.770611 -0.524362 -0.362220 +vn -0.692620 -0.633844 -0.344266 +vn -0.692519 -0.633966 -0.344244 +vn -0.670769 -0.659523 -0.339261 +vn -0.670769 -0.659523 -0.339261 +vn 0.692513 0.633974 0.344242 +vn 0.692612 0.633854 0.344265 +vn 0.670775 0.659523 0.339250 +vn 0.670775 0.659523 0.339250 +vn -0.363625 -0.104349 0.925683 +vn -0.368563 -0.097128 0.924515 +vn -0.352349 -0.119151 0.928253 +vn -0.357625 -0.112496 0.927065 +vn -0.358154 -0.111826 0.926942 +vn -0.363150 -0.105037 0.925791 +vn -0.368557 -0.097120 0.924518 +vn -0.352400 -0.119082 0.928242 +vn 0.363156 0.105041 -0.925789 +vn 0.368578 0.097125 -0.924509 +vn 0.352406 0.119087 -0.928239 +vn 0.358159 0.111825 -0.926940 +vn 0.357629 0.112494 -0.927063 +vn 0.363625 0.104348 -0.925683 +vn 0.368563 0.097122 -0.924515 +vn 0.352355 0.119149 -0.928251 +vn -0.378948 -0.081731 0.921802 +vn 0.378992 0.081735 -0.921783 +vn 0.341175 0.133109 -0.930528 +vn -0.341167 -0.133106 0.930531 +vn -0.341155 -0.133138 0.930531 +vn 0.341163 0.133138 -0.930528 +vn 0.378957 0.081755 -0.921796 +vn -0.378965 -0.081763 0.921792 +vn 0.623781 0.713704 0.318629 +vn 0.623781 0.713704 0.318629 +vn 0.623781 0.713704 0.318629 +vn 0.623781 0.713704 0.318629 +vn -0.558565 0.818295 -0.135644 +vn -0.558565 0.818295 -0.135644 +vn -0.558565 0.818295 -0.135644 +vn -0.558565 0.818295 -0.135644 +vn -0.878960 -0.281122 -0.385228 +vn -0.878960 -0.281122 -0.385228 +vn -0.878960 -0.281122 -0.385228 +vn -0.878960 -0.281122 -0.385228 +vn -0.473772 -0.830988 -0.291545 +vn -0.473772 -0.830988 -0.291545 +vn -0.473772 -0.830988 -0.291545 +vn -0.473772 -0.830988 -0.291545 +vn 0.617056 -0.775140 0.135645 +vn 0.617056 -0.775140 0.135645 +vn 0.617056 -0.775140 0.135645 +vn 0.617056 -0.775140 0.135645 +vn 0.809271 0.462676 0.361954 +vn 0.809271 0.462676 0.361954 +vn 0.809271 0.462676 0.361954 +vn 0.809271 0.462676 0.361954 +vn 0.881456 -0.128008 0.454586 +vn 0.887475 -0.096329 0.450676 +vn 0.887439 -0.096536 0.450703 +vn 0.881456 -0.128008 0.454586 +vn -0.881461 0.128004 -0.454578 +vn -0.887449 0.096510 -0.450689 +vn -0.887484 0.096307 -0.450663 +vn -0.881461 0.128004 -0.454578 +vn -0.899198 0.000747 -0.437541 +vn -0.899212 0.000558 -0.437514 +vn -0.901001 -0.031514 -0.432671 +vn -0.901001 -0.031514 -0.432671 +vn 0.899211 -0.000555 0.437515 +vn 0.899198 -0.000742 0.437542 +vn 0.901004 0.031521 0.432664 +vn 0.901004 0.031521 0.432664 +vn -0.429413 0.181483 0.884686 +vn -0.427671 0.192447 0.883211 +vn -0.431940 0.158120 0.887933 +vn -0.430986 0.168829 0.886424 +vn -0.430890 0.169848 0.886276 +vn -0.429570 0.180483 0.884814 +vn -0.427671 0.192464 0.883207 +vn -0.431923 0.158218 0.887924 +vn 0.429573 -0.180478 -0.884813 +vn 0.427678 -0.192463 -0.883204 +vn 0.431916 -0.158220 -0.887927 +vn 0.430888 -0.169854 -0.886276 +vn 0.430989 -0.168830 -0.886423 +vn 0.429413 -0.181480 -0.884686 +vn 0.427670 -0.192446 -0.883212 +vn 0.431947 -0.158117 -0.887930 +vn -0.423814 0.215534 0.879731 +vn 0.423813 -0.215531 -0.879732 +vn 0.433729 -0.135466 -0.890802 +vn -0.433762 0.135464 0.890786 +vn -0.433781 0.135428 0.890782 +vn 0.433798 -0.135427 -0.890775 +vn 0.423815 -0.215485 -0.879743 +vn -0.423818 0.215484 0.879742 +vn 0.906250 0.108571 0.408563 +vn 0.906250 0.108571 0.408563 +vn 0.906250 0.108571 0.408563 +vn 0.906250 0.108571 0.408563 +vn 0.157022 0.978236 -0.135642 +vn 0.157022 0.978236 -0.135642 +vn 0.157022 0.978236 -0.135642 +vn 0.157022 0.978236 -0.135642 +vn -0.795302 0.377538 -0.474299 +vn -0.795302 0.377538 -0.474299 +vn -0.795302 0.377538 -0.474299 +vn -0.795302 0.377538 -0.474299 +vn -0.877032 -0.292181 -0.381372 +vn -0.877032 -0.292181 -0.381372 +vn -0.877032 -0.292181 -0.381372 +vn -0.877032 -0.292181 -0.381372 +vn -0.084749 -0.987126 0.135644 +vn -0.084749 -0.987126 0.135644 +vn -0.084749 -0.987126 0.135644 +vn -0.084749 -0.987126 0.135644 +vn 0.866800 -0.209123 0.452686 +vn 0.866801 -0.209124 0.452686 +vn 0.866801 -0.209123 0.452686 +vn 0.866801 -0.209124 0.452686 +vn 0.532497 -0.649957 0.542220 +vn 0.557075 -0.632123 0.538599 +vn 0.556887 -0.632263 0.538629 +vn 0.532497 -0.649957 0.542220 +vn -0.532490 0.649955 -0.542230 +vn -0.556903 0.632247 -0.538631 +vn -0.557088 0.632109 -0.538601 +vn -0.532490 0.649955 -0.542230 +vn -0.627334 0.574094 -0.526183 +vn -0.627499 0.573943 -0.526150 +vn -0.649627 0.553188 -0.521505 +vn -0.649627 0.553188 -0.521505 +vn 0.627504 -0.573940 0.526148 +vn 0.627340 -0.574090 0.526180 +vn 0.649649 -0.553171 0.521497 +vn 0.649648 -0.553171 0.521497 +vn -0.247769 0.492356 0.834384 +vn -0.237232 0.500452 0.832628 +vn -0.269378 0.473992 0.838312 +vn -0.259584 0.482629 0.836472 +vn -0.258692 0.483405 0.836300 +vn -0.248668 0.491661 0.834526 +vn -0.237219 0.500468 0.832622 +vn -0.269284 0.474063 0.838302 +vn 0.248676 -0.491655 -0.834527 +vn 0.237219 -0.500462 -0.832626 +vn 0.269292 -0.474058 -0.838302 +vn 0.258693 -0.483408 -0.836298 +vn 0.259582 -0.482629 -0.836473 +vn 0.247777 -0.492355 -0.834382 +vn 0.237240 -0.500457 -0.832623 +vn 0.269374 -0.473984 -0.838318 +vn -0.214907 0.517219 0.828432 +vn 0.214904 -0.517211 -0.828438 +vn 0.289729 -0.455628 -0.841701 +vn -0.289712 0.455635 0.841703 +vn -0.289754 0.455608 0.841703 +vn 0.289753 -0.455593 -0.841712 +vn 0.214961 -0.517189 -0.828436 +vn -0.214930 0.517179 0.828451 +vn 0.714182 -0.496383 0.493505 +vn 0.714182 -0.496383 0.493505 +vn 0.714182 -0.496383 0.493505 +vn 0.714182 -0.496383 0.493505 +vn 0.787022 0.601825 -0.135654 +vn 0.787022 0.601825 -0.135654 +vn 0.787022 0.601825 -0.135654 +vn 0.787022 0.601825 -0.135654 +vn -0.299677 0.773188 -0.558904 +vn -0.299677 0.773188 -0.558904 +vn -0.299677 0.773188 -0.558904 +vn -0.299677 0.773188 -0.558904 +vn -0.811128 0.351152 -0.467722 +vn -0.811128 0.351152 -0.467722 +vn -0.811128 0.351152 -0.467722 +vn -0.811128 0.351152 -0.467722 +vn -0.740757 -0.657936 0.135643 +vn -0.740757 -0.657936 0.135643 +vn -0.740757 -0.657936 0.135643 +vn -0.740757 -0.657936 0.135643 +vn 0.461074 -0.705002 0.538872 +vn 0.461074 -0.705002 0.538872 +vn 0.461074 -0.705002 0.538872 +vn 0.461074 -0.705002 0.538872 +vn -0.040034 -0.780266 0.624165 +vn -0.011959 -0.783860 0.620823 +vn -0.012213 -0.783830 0.620855 +vn -0.040034 -0.780266 0.624165 +vn 0.040035 0.780249 -0.624187 +vn 0.012206 0.783817 -0.620872 +vn 0.011955 0.783847 -0.620840 +vn 0.040035 0.780249 -0.624187 +vn -0.072542 0.789627 -0.609284 +vn -0.072785 0.789632 -0.609249 +vn -0.100947 0.789880 -0.604896 +vn -0.100947 0.789880 -0.604896 +vn 0.072773 -0.789622 0.609263 +vn 0.072534 -0.789617 0.609297 +vn 0.100956 -0.789859 0.604922 +vn 0.100956 -0.789859 0.604922 +vn 0.157651 0.611515 0.775368 +vn 0.172995 0.609940 0.773334 +vn 0.124979 0.613287 0.779910 +vn 0.140092 0.612737 0.777771 +vn 0.141360 0.612685 0.777582 +vn 0.156430 0.611634 0.775522 +vn 0.173012 0.609939 0.773331 +vn 0.125102 0.613287 0.779890 +vn -0.156424 -0.611634 -0.775523 +vn -0.173005 -0.609939 -0.773333 +vn -0.125106 -0.613280 -0.779895 +vn -0.141375 -0.612682 -0.777582 +vn -0.140100 -0.612737 -0.777769 +vn -0.157650 -0.611513 -0.775370 +vn -0.172993 -0.609935 -0.773339 +vn -0.124973 -0.613291 -0.779908 +vn 0.205070 0.606154 0.768456 +vn -0.205055 -0.606159 -0.768456 +vn -0.093343 -0.613973 -0.783789 +vn 0.093337 0.613983 0.783781 +vn 0.093284 0.613975 0.783794 +vn -0.093284 -0.613983 -0.783787 +vn -0.205013 -0.606151 -0.768473 +vn 0.205006 0.606164 0.768465 +vn 0.197447 -0.795535 0.572834 +vn 0.197447 -0.795535 0.572834 +vn 0.197447 -0.795535 0.572834 +vn 0.197447 -0.795535 0.572834 +vn 0.985239 -0.104484 -0.135597 +vn 0.985240 -0.104484 -0.135597 +vn 0.985239 -0.104484 -0.135597 +vn 0.985240 -0.104484 -0.135597 +vn 0.293746 0.711787 -0.638023 +vn 0.293746 0.711787 -0.638023 +vn 0.293746 0.711787 -0.638023 +vn 0.293746 0.711787 -0.638023 +vn -0.355996 0.756583 -0.548497 +vn -0.355996 0.756583 -0.548497 +vn -0.355996 0.756583 -0.548497 +vn -0.355996 0.756583 -0.548497 +vn -0.990244 0.032089 0.135598 +vn -0.990244 0.032089 0.135598 +vn -0.990244 0.032089 0.135598 +vn -0.990244 0.032089 0.135598 +vn -0.141280 -0.771928 0.619812 +vn -0.141280 -0.771928 0.619812 +vn -0.141280 -0.771928 0.619812 +vn -0.141280 -0.771928 0.619812 +vn -0.493637 -0.518986 0.697836 +vn -0.485348 -0.529073 0.696074 +vn -0.485325 -0.529101 0.696069 +vn -0.493637 -0.518986 0.697836 +vn 0.493621 0.519057 -0.697795 +vn 0.485056 0.529459 -0.695984 +vn 0.485079 0.529431 -0.695989 +vn 0.493621 0.519057 -0.697795 +vn 0.445357 0.573391 -0.687663 +vn 0.445047 0.573713 -0.687595 +vn 0.426992 0.592116 -0.683430 +vn 0.426992 0.592116 -0.683430 +vn -0.445570 -0.573170 0.687709 +vn -0.445881 -0.572847 0.687777 +vn -0.427107 -0.592012 0.683448 +vn -0.427107 -0.592012 0.683448 +vn 0.591969 0.386980 0.706979 +vn 0.597641 0.380304 0.705828 +vn 0.570228 0.410637 0.711489 +vn 0.582140 0.397916 0.709067 +vn 0.583186 0.396778 0.708845 +vn 0.591832 0.387138 0.707007 +vn 0.597735 0.380188 0.705812 +vn 0.570517 0.410317 0.711442 +vn -0.591840 -0.387127 -0.707006 +vn -0.597755 -0.380168 -0.705806 +vn -0.570562 -0.410283 -0.711426 +vn -0.583213 -0.396751 -0.708838 +vn -0.582161 -0.397891 -0.709064 +vn -0.591982 -0.386966 -0.706976 +vn -0.597672 -0.380279 -0.705816 +vn -0.570256 -0.410606 -0.711484 +vn 0.609323 0.366268 0.703259 +vn -0.609333 -0.366265 -0.703252 +vn -0.545114 -0.436452 -0.715794 +vn 0.545078 0.436459 0.715816 +vn 0.544960 0.436605 0.715818 +vn -0.544965 -0.436598 -0.715818 +vn -0.609368 -0.366240 -0.703234 +vn 0.609335 0.366256 0.703255 +vn -0.320303 -0.696949 0.641614 +vn -0.320303 -0.696948 0.641614 +vn -0.320303 -0.696949 0.641614 +vn -0.320303 -0.696949 0.641614 +vn 0.636405 -0.759314 -0.135760 +vn 0.636405 -0.759314 -0.135760 +vn 0.636405 -0.759314 -0.135760 +vn 0.636405 -0.759314 -0.135760 +vn 0.637195 0.303198 -0.708558 +vn 0.637195 0.303198 -0.708558 +vn 0.637195 0.303198 -0.708558 +vn 0.637195 0.303198 -0.708558 +vn 0.223062 0.748743 -0.624201 +vn 0.223062 0.748743 -0.624201 +vn 0.223062 0.748743 -0.624201 +vn 0.223062 0.748743 -0.624201 +vn -0.678122 0.722217 0.136215 +vn -0.678122 0.722216 0.136215 +vn -0.678122 0.722216 0.136215 +vn -0.678122 0.722216 0.136215 +vn -0.588405 -0.411649 0.695935 +vn -0.588404 -0.411649 0.695935 +vn -0.588405 -0.411649 0.695935 +vn -0.588404 -0.411649 0.695935 +s 1 +usemtl aiStandardSurface1SG +f 166/206/633 181/223/634 182/224/635 164/204/636 +s 2 +f 162/202/637 177/219/638 178/220/639 168/208/640 +f 171/211/641 172/213/642 161/201/643 167/207/644 +s 1 +f 175/216/645 176/217/646 165/205/647 163/203/648 +s 2 +f 178/220/639 177/219/638 172/213/642 171/211/641 +s 3 +f 179/221/649 178/220/650 171/211/651 170/210/652 +f 169/209/653 180/222/654 179/221/649 170/210/652 +f 181/223/655 180/222/654 169/209/653 176/217/656 +s 1 +f 182/224/635 181/223/634 176/217/646 175/216/645 +s 4 +f 183/225/657 182/224/658 175/216/659 174/215/660 +f 173/214/661 184/226/662 183/225/657 174/215/660 +f 177/218/663 184/226/662 173/214/661 172/212/664 +s 3 +f 180/222/654 181/223/655 166/206/665 +s 4 +f 164/204/666 182/224/658 183/225/657 +f 174/215/660 175/216/659 163/203/667 +s 3 +f 176/217/656 169/209/653 165/205/668 +f 170/210/652 171/211/651 167/207/669 +s 4 +f 161/201/670 172/212/664 173/214/661 +f 162/202/671 184/226/662 177/218/663 +s 3 +f 168/208/672 178/220/650 179/221/649 +s off +f 168/208/673 179/221/674 184/226/675 162/202/676 +f 179/221/677 180/222/678 183/225/679 184/226/680 +f 180/222/681 166/206/682 164/204/683 183/225/684 +f 165/205/685 169/209/686 174/215/687 163/203/688 +f 169/209/689 170/210/690 173/214/691 174/215/692 +f 170/210/693 167/207/694 161/201/695 173/214/696 +s 5 +f 190/232/697 205/249/698 206/250/699 188/230/700 +s 6 +f 186/228/701 201/245/702 202/246/703 192/234/704 +f 195/237/705 196/239/706 185/227/707 191/233/708 +s 5 +f 199/242/709 200/243/710 189/231/711 187/229/712 +s 6 +f 202/246/703 201/245/702 196/239/706 195/237/705 +s 7 +f 203/247/713 202/246/714 195/237/715 194/236/716 +f 193/235/717 204/248/718 203/247/713 194/236/716 +f 205/249/719 204/248/718 193/235/717 200/243/720 +s 5 +f 206/250/699 205/249/698 200/243/710 199/242/709 +s 8 +f 207/251/721 206/250/722 199/242/723 198/241/724 +f 197/240/725 208/252/726 207/251/721 198/241/724 +f 201/244/727 208/252/726 197/240/725 196/238/728 +s 7 +f 204/248/718 205/249/719 190/232/729 +s 8 +f 188/230/730 206/250/722 207/251/721 +f 198/241/724 199/242/723 187/229/731 +s 7 +f 200/243/720 193/235/717 189/231/732 +f 194/236/716 195/237/715 191/233/733 +s 8 +f 185/227/734 196/238/728 197/240/725 +f 186/228/735 208/252/726 201/244/727 +s 7 +f 192/234/736 202/246/714 203/247/713 +s off +f 192/234/737 203/247/738 208/252/739 186/228/740 +f 203/247/741 204/248/742 207/251/743 208/252/744 +f 204/248/745 190/232/746 188/230/747 207/251/748 +f 189/231/749 193/235/750 198/241/751 187/229/752 +f 193/235/753 194/236/754 197/240/755 198/241/756 +f 194/236/757 191/233/758 185/227/759 197/240/760 +s 9 +f 214/258/761 229/275/762 230/276/763 212/256/764 +s 10 +f 210/254/765 225/271/766 226/272/767 216/260/768 +f 219/263/769 220/265/770 209/253/771 215/259/772 +s 9 +f 223/268/773 224/269/774 213/257/775 211/255/776 +s 10 +f 226/272/767 225/271/766 220/265/770 219/263/769 +s 11 +f 227/273/777 226/272/778 219/263/779 218/262/780 +f 217/261/781 228/274/782 227/273/777 218/262/780 +f 229/275/783 228/274/782 217/261/781 224/269/784 +s 9 +f 230/276/763 229/275/762 224/269/774 223/268/773 +s 12 +f 231/277/785 230/276/786 223/268/787 222/267/788 +f 221/266/789 232/278/790 231/277/785 222/267/788 +f 225/270/791 232/278/790 221/266/789 220/264/792 +s 11 +f 228/274/782 229/275/783 214/258/793 +s 12 +f 212/256/794 230/276/786 231/277/785 +f 222/267/788 223/268/787 211/255/795 +s 11 +f 224/269/784 217/261/781 213/257/796 +f 218/262/780 219/263/779 215/259/797 +s 12 +f 209/253/798 220/264/792 221/266/789 +f 210/254/799 232/278/790 225/270/791 +s 11 +f 216/260/800 226/272/778 227/273/777 +s off +f 216/260/801 227/273/802 232/278/803 210/254/804 +f 227/273/805 228/274/806 231/277/807 232/278/808 +f 228/274/809 214/258/810 212/256/811 231/277/812 +f 213/257/813 217/261/814 222/267/815 211/255/816 +f 217/261/817 218/262/818 221/266/819 222/267/820 +f 218/262/821 215/259/822 209/253/823 221/266/824 +s 13 +f 238/284/825 253/301/826 254/302/827 236/282/828 +s 14 +f 234/280/829 249/297/830 250/298/831 240/286/832 +f 243/289/833 244/291/834 233/279/835 239/285/836 +s 13 +f 247/294/837 248/295/838 237/283/839 235/281/840 +s 14 +f 250/298/831 249/297/830 244/291/834 243/289/833 +s 15 +f 251/299/841 250/298/842 243/289/843 242/288/844 +f 241/287/845 252/300/846 251/299/841 242/288/844 +f 253/301/847 252/300/846 241/287/845 248/295/848 +s 13 +f 254/302/827 253/301/826 248/295/838 247/294/837 +s 16 +f 255/303/849 254/302/850 247/294/851 246/293/852 +f 245/292/853 256/304/854 255/303/849 246/293/852 +f 249/296/855 256/304/854 245/292/853 244/290/856 +s 15 +f 252/300/846 253/301/847 238/284/857 +s 16 +f 236/282/858 254/302/850 255/303/849 +f 246/293/852 247/294/851 235/281/859 +s 15 +f 248/295/848 241/287/845 237/283/860 +f 242/288/844 243/289/843 239/285/861 +s 16 +f 233/279/862 244/290/856 245/292/853 +f 234/280/863 256/304/854 249/296/855 +s 15 +f 240/286/864 250/298/842 251/299/841 +s off +f 240/286/865 251/299/866 256/304/867 234/280/868 +f 251/299/869 252/300/870 255/303/871 256/304/872 +f 252/300/873 238/284/874 236/282/875 255/303/876 +f 237/283/877 241/287/878 246/293/879 235/281/880 +f 241/287/881 242/288/882 245/292/883 246/293/884 +f 242/288/885 239/285/886 233/279/887 245/292/888 +s 17 +f 262/310/889 277/327/890 278/328/891 260/308/892 +s 18 +f 258/306/893 273/323/894 274/324/895 264/312/896 +f 267/315/897 268/317/898 257/305/899 263/311/900 +s 17 +f 271/320/901 272/321/902 261/309/903 259/307/904 +s 18 +f 274/324/895 273/323/894 268/317/898 267/315/897 +s 19 +f 275/325/905 274/324/906 267/315/907 266/314/908 +f 265/313/909 276/326/910 275/325/905 266/314/908 +f 277/327/911 276/326/910 265/313/909 272/321/912 +s 17 +f 278/328/891 277/327/890 272/321/902 271/320/901 +s 20 +f 279/329/913 278/328/914 271/320/915 270/319/916 +f 269/318/917 280/330/918 279/329/913 270/319/916 +f 273/322/919 280/330/918 269/318/917 268/316/920 +s 19 +f 276/326/910 277/327/911 262/310/921 +s 20 +f 260/308/922 278/328/914 279/329/913 +f 270/319/916 271/320/915 259/307/923 +s 19 +f 272/321/912 265/313/909 261/309/924 +f 266/314/908 267/315/907 263/311/925 +s 20 +f 257/305/926 268/316/920 269/318/917 +f 258/306/927 280/330/918 273/322/919 +s 19 +f 264/312/928 274/324/906 275/325/905 +s off +f 264/312/929 275/325/930 280/330/931 258/306/932 +f 275/325/933 276/326/934 279/329/935 280/330/936 +f 276/326/937 262/310/938 260/308/939 279/329/940 +f 261/309/941 265/313/942 270/319/943 259/307/944 +f 265/313/945 266/314/946 269/318/947 270/319/948 +f 266/314/949 263/311/950 257/305/951 269/318/952 +s 21 +f 286/336/953 301/353/954 302/354/955 284/334/956 +s 22 +f 282/332/957 297/349/958 298/350/959 288/338/960 +f 291/341/961 292/343/962 281/331/963 287/337/964 +s 21 +f 295/346/965 296/347/966 285/335/967 283/333/968 +s 22 +f 298/350/959 297/349/958 292/343/962 291/341/961 +s 23 +f 299/351/969 298/350/970 291/341/971 290/340/972 +f 289/339/973 300/352/974 299/351/969 290/340/972 +f 301/353/975 300/352/974 289/339/973 296/347/976 +s 21 +f 302/354/955 301/353/954 296/347/966 295/346/965 +s 24 +f 303/355/977 302/354/978 295/346/979 294/345/980 +f 293/344/981 304/356/982 303/355/977 294/345/980 +f 297/348/983 304/356/982 293/344/981 292/342/984 +s 23 +f 300/352/974 301/353/975 286/336/985 +s 24 +f 284/334/986 302/354/978 303/355/977 +f 294/345/980 295/346/979 283/333/987 +s 23 +f 296/347/976 289/339/973 285/335/988 +f 290/340/972 291/341/971 287/337/989 +s 24 +f 281/331/990 292/342/984 293/344/981 +f 282/332/991 304/356/982 297/348/983 +s 23 +f 288/338/992 298/350/970 299/351/969 +s off +f 288/338/993 299/351/994 304/356/995 282/332/996 +f 299/351/997 300/352/998 303/355/999 304/356/1000 +f 300/352/1001 286/336/1002 284/334/1003 303/355/1004 +f 285/335/1005 289/339/1006 294/345/1007 283/333/1008 +f 289/339/1009 290/340/1010 293/344/1011 294/345/1012 +f 290/340/1013 287/337/1014 281/331/1015 293/344/1016 +s 25 +f 310/362/1017 325/379/1018 326/380/1019 308/360/1020 +s 26 +f 306/358/1021 321/375/1022 322/376/1023 312/364/1024 +f 315/367/1025 316/369/1026 305/357/1027 311/363/1028 +s 25 +f 319/372/1029 320/373/1030 309/361/1031 307/359/1032 +s 26 +f 322/376/1023 321/375/1022 316/369/1026 315/367/1025 +s 27 +f 323/377/1033 322/376/1034 315/367/1035 314/366/1036 +f 313/365/1037 324/378/1038 323/377/1033 314/366/1036 +f 325/379/1039 324/378/1038 313/365/1037 320/373/1040 +s 25 +f 326/380/1019 325/379/1018 320/373/1030 319/372/1029 +s 28 +f 327/381/1041 326/380/1042 319/372/1043 318/371/1044 +f 317/370/1045 328/382/1046 327/381/1041 318/371/1044 +f 321/374/1047 328/382/1046 317/370/1045 316/368/1048 +s 27 +f 324/378/1038 325/379/1039 310/362/1049 +s 28 +f 308/360/1050 326/380/1042 327/381/1041 +f 318/371/1044 319/372/1043 307/359/1051 +s 27 +f 320/373/1040 313/365/1037 309/361/1052 +f 314/366/1036 315/367/1035 311/363/1053 +s 28 +f 305/357/1054 316/368/1048 317/370/1045 +f 306/358/1055 328/382/1046 321/374/1047 +s 27 +f 312/364/1056 322/376/1034 323/377/1033 +s off +f 312/364/1057 323/377/1058 328/382/1059 306/358/1060 +f 323/377/1061 324/378/1062 327/381/1063 328/382/1064 +f 324/378/1065 310/362/1066 308/360/1067 327/381/1068 +f 309/361/1069 313/365/1070 318/371/1071 307/359/1072 +f 313/365/1073 314/366/1074 317/370/1075 318/371/1076 +f 314/366/1077 311/363/1078 305/357/1079 317/370/1080 +s 29 +f 334/388/1081 349/405/1082 350/406/1083 332/386/1084 +s 30 +f 330/384/1085 345/401/1086 346/402/1087 336/390/1088 +f 339/393/1089 340/395/1090 329/383/1091 335/389/1092 +s 29 +f 343/398/1093 344/399/1094 333/387/1095 331/385/1096 +s 30 +f 346/402/1087 345/401/1086 340/395/1090 339/393/1089 +s 31 +f 347/403/1097 346/402/1098 339/393/1099 338/392/1100 +f 337/391/1101 348/404/1102 347/403/1097 338/392/1100 +f 349/405/1103 348/404/1102 337/391/1101 344/399/1104 +s 29 +f 350/406/1083 349/405/1082 344/399/1094 343/398/1093 +s 32 +f 351/407/1105 350/406/1106 343/398/1107 342/397/1108 +f 341/396/1109 352/408/1110 351/407/1105 342/397/1108 +f 345/400/1111 352/408/1110 341/396/1109 340/394/1112 +s 31 +f 348/404/1102 349/405/1103 334/388/1113 +s 32 +f 332/386/1114 350/406/1106 351/407/1105 +f 342/397/1108 343/398/1107 331/385/1115 +s 31 +f 344/399/1104 337/391/1101 333/387/1116 +f 338/392/1100 339/393/1099 335/389/1117 +s 32 +f 329/383/1118 340/394/1112 341/396/1109 +f 330/384/1119 352/408/1110 345/400/1111 +s 31 +f 336/390/1120 346/402/1098 347/403/1097 +s off +f 336/390/1121 347/403/1122 352/408/1123 330/384/1124 +f 347/403/1125 348/404/1126 351/407/1127 352/408/1128 +f 348/404/1129 334/388/1130 332/386/1131 351/407/1132 +f 333/387/1133 337/391/1134 342/397/1135 331/385/1136 +f 337/391/1137 338/392/1138 341/396/1139 342/397/1140 +f 338/392/1141 335/389/1142 329/383/1143 341/396/1144 +s 33 +f 358/414/1145 373/431/1146 374/432/1147 356/412/1148 +s 34 +f 354/410/1149 369/427/1150 370/428/1151 360/416/1152 +f 363/419/1153 364/421/1154 353/409/1155 359/415/1156 +s 33 +f 367/424/1157 368/425/1158 357/413/1159 355/411/1160 +s 34 +f 370/428/1151 369/427/1150 364/421/1154 363/419/1153 +s 35 +f 371/429/1161 370/428/1162 363/419/1163 362/418/1164 +f 361/417/1165 372/430/1166 371/429/1161 362/418/1164 +f 373/431/1167 372/430/1166 361/417/1165 368/425/1168 +s 33 +f 374/432/1147 373/431/1146 368/425/1158 367/424/1157 +s 36 +f 375/433/1169 374/432/1170 367/424/1171 366/423/1172 +f 365/422/1173 376/434/1174 375/433/1169 366/423/1172 +f 369/426/1175 376/434/1174 365/422/1173 364/420/1176 +s 35 +f 372/430/1166 373/431/1167 358/414/1177 +s 36 +f 356/412/1178 374/432/1170 375/433/1169 +f 366/423/1172 367/424/1171 355/411/1179 +s 35 +f 368/425/1168 361/417/1165 357/413/1180 +f 362/418/1164 363/419/1163 359/415/1181 +s 36 +f 353/409/1182 364/420/1176 365/422/1173 +f 354/410/1183 376/434/1174 369/426/1175 +s 35 +f 360/416/1184 370/428/1162 371/429/1161 +s off +f 360/416/1185 371/429/1186 376/434/1187 354/410/1188 +f 371/429/1189 372/430/1190 375/433/1191 376/434/1192 +f 372/430/1193 358/414/1194 356/412/1195 375/433/1196 +f 357/413/1197 361/417/1198 366/423/1199 355/411/1200 +f 361/417/1201 362/418/1202 365/422/1203 366/423/1204 +f 362/418/1205 359/415/1206 353/409/1207 365/422/1208 +s 37 +f 382/440/1209 397/457/1210 398/458/1211 380/438/1212 +s 38 +f 378/436/1213 393/453/1214 394/454/1215 384/442/1216 +f 387/445/1217 388/447/1218 377/435/1219 383/441/1220 +s 37 +f 391/450/1221 392/451/1222 381/439/1223 379/437/1224 +s 38 +f 394/454/1215 393/453/1214 388/447/1218 387/445/1217 +s 39 +f 395/455/1225 394/454/1226 387/445/1227 386/444/1228 +f 385/443/1229 396/456/1230 395/455/1225 386/444/1228 +f 397/457/1231 396/456/1230 385/443/1229 392/451/1232 +s 37 +f 398/458/1211 397/457/1210 392/451/1222 391/450/1221 +s 40 +f 399/459/1233 398/458/1234 391/450/1235 390/449/1236 +f 389/448/1237 400/460/1238 399/459/1233 390/449/1236 +f 393/452/1239 400/460/1238 389/448/1237 388/446/1240 +s 39 +f 396/456/1230 397/457/1231 382/440/1241 +s 40 +f 380/438/1242 398/458/1234 399/459/1233 +f 390/449/1236 391/450/1235 379/437/1243 +s 39 +f 392/451/1232 385/443/1229 381/439/1244 +f 386/444/1228 387/445/1227 383/441/1245 +s 40 +f 377/435/1246 388/446/1240 389/448/1237 +f 378/436/1247 400/460/1238 393/452/1239 +s 39 +f 384/442/1248 394/454/1226 395/455/1225 +s off +f 384/442/1249 395/455/1250 400/460/1251 378/436/1252 +f 395/455/1253 396/456/1254 399/459/1255 400/460/1256 +f 396/456/1257 382/440/1258 380/438/1259 399/459/1260 +f 381/439/1261 385/443/1262 390/449/1263 379/437/1264 +f 385/443/1265 386/444/1266 389/448/1267 390/449/1268 +f 386/444/1269 383/441/1270 377/435/1271 389/448/1272 +s 41 +f 406/466/1273 421/483/1274 422/484/1275 404/464/1276 +s 42 +f 402/462/1277 417/479/1278 418/480/1279 408/468/1280 +f 411/471/1281 412/473/1282 401/461/1283 407/467/1284 +s 41 +f 415/476/1285 416/477/1286 405/465/1287 403/463/1288 +s 42 +f 418/480/1279 417/479/1278 412/473/1282 411/471/1281 +s 43 +f 419/481/1289 418/480/1290 411/471/1291 410/470/1292 +f 409/469/1293 420/482/1294 419/481/1289 410/470/1292 +f 421/483/1295 420/482/1294 409/469/1293 416/477/1296 +s 41 +f 422/484/1275 421/483/1274 416/477/1286 415/476/1285 +s 44 +f 423/485/1297 422/484/1298 415/476/1299 414/475/1300 +f 413/474/1301 424/486/1302 423/485/1297 414/475/1300 +f 417/478/1303 424/486/1302 413/474/1301 412/472/1304 +s 43 +f 420/482/1294 421/483/1295 406/466/1305 +s 44 +f 404/464/1306 422/484/1298 423/485/1297 +f 414/475/1300 415/476/1299 403/463/1307 +s 43 +f 416/477/1296 409/469/1293 405/465/1308 +f 410/470/1292 411/471/1291 407/467/1309 +s 44 +f 401/461/1310 412/472/1304 413/474/1301 +f 402/462/1311 424/486/1302 417/478/1303 +s 43 +f 408/468/1312 418/480/1290 419/481/1289 +s off +f 408/468/1313 419/481/1314 424/486/1315 402/462/1316 +f 419/481/1317 420/482/1318 423/485/1319 424/486/1320 +f 420/482/1321 406/466/1322 404/464/1323 423/485/1324 +f 405/465/1325 409/469/1326 414/475/1327 403/463/1328 +f 409/469/1329 410/470/1330 413/474/1331 414/475/1332 +f 410/470/1333 407/467/1334 401/461/1335 413/474/1336 +s 45 +f 430/492/1337 445/509/1338 446/510/1339 428/490/1340 +s 46 +f 426/488/1341 441/505/1342 442/506/1343 432/494/1344 +f 435/497/1345 436/499/1346 425/487/1347 431/493/1348 +s 45 +f 439/502/1349 440/503/1350 429/491/1351 427/489/1352 +s 46 +f 442/506/1343 441/505/1342 436/499/1346 435/497/1345 +s 47 +f 443/507/1353 442/506/1354 435/497/1355 434/496/1356 +f 433/495/1357 444/508/1358 443/507/1353 434/496/1356 +f 445/509/1359 444/508/1358 433/495/1357 440/503/1360 +s 45 +f 446/510/1339 445/509/1338 440/503/1350 439/502/1349 +s 48 +f 447/511/1361 446/510/1362 439/502/1363 438/501/1364 +f 437/500/1365 448/512/1366 447/511/1361 438/501/1364 +f 441/504/1367 448/512/1366 437/500/1365 436/498/1368 +s 47 +f 444/508/1358 445/509/1359 430/492/1369 +s 48 +f 428/490/1370 446/510/1362 447/511/1361 +f 438/501/1364 439/502/1363 427/489/1371 +s 47 +f 440/503/1360 433/495/1357 429/491/1372 +f 434/496/1356 435/497/1355 431/493/1373 +s 48 +f 425/487/1374 436/498/1368 437/500/1365 +f 426/488/1375 448/512/1366 441/504/1367 +s 47 +f 432/494/1376 442/506/1354 443/507/1353 +s off +f 432/494/1377 443/507/1378 448/512/1379 426/488/1380 +f 443/507/1381 444/508/1382 447/511/1383 448/512/1384 +f 444/508/1385 430/492/1386 428/490/1387 447/511/1388 +f 429/491/1389 433/495/1390 438/501/1391 427/489/1392 +f 433/495/1393 434/496/1394 437/500/1395 438/501/1396 +f 434/496/1397 431/493/1398 425/487/1399 437/500/1400 +s 49 +f 454/518/1401 469/535/1402 470/536/1403 452/516/1404 +s 50 +f 450/514/1405 465/531/1406 466/532/1407 456/520/1408 +f 459/523/1409 460/525/1410 449/513/1411 455/519/1412 +s 49 +f 463/528/1413 464/529/1414 453/517/1415 451/515/1416 +s 50 +f 466/532/1407 465/531/1406 460/525/1410 459/523/1409 +s 51 +f 467/533/1417 466/532/1418 459/523/1419 458/522/1420 +f 457/521/1421 468/534/1422 467/533/1417 458/522/1420 +f 469/535/1423 468/534/1422 457/521/1421 464/529/1424 +s 49 +f 470/536/1403 469/535/1402 464/529/1414 463/528/1413 +s 52 +f 471/537/1425 470/536/1426 463/528/1427 462/527/1428 +f 461/526/1429 472/538/1430 471/537/1425 462/527/1428 +f 465/530/1431 472/538/1430 461/526/1429 460/524/1432 +s 51 +f 468/534/1422 469/535/1423 454/518/1433 +s 52 +f 452/516/1434 470/536/1426 471/537/1425 +f 462/527/1428 463/528/1427 451/515/1435 +s 51 +f 464/529/1424 457/521/1421 453/517/1436 +f 458/522/1420 459/523/1419 455/519/1437 +s 52 +f 449/513/1438 460/524/1432 461/526/1429 +f 450/514/1439 472/538/1430 465/530/1431 +s 51 +f 456/520/1440 466/532/1418 467/533/1417 +s off +f 456/520/1441 467/533/1442 472/538/1443 450/514/1444 +f 467/533/1445 468/534/1446 471/537/1447 472/538/1448 +f 468/534/1449 454/518/1450 452/516/1451 471/537/1452 +f 453/517/1453 457/521/1454 462/527/1455 451/515/1456 +f 457/521/1457 458/522/1458 461/526/1459 462/527/1460 +f 458/522/1461 455/519/1462 449/513/1463 461/526/1464 +s 53 +f 478/544/1465 493/561/1466 494/562/1467 476/542/1468 +s 54 +f 474/540/1469 489/557/1470 490/558/1471 480/546/1472 +f 483/549/1473 484/551/1474 473/539/1475 479/545/1476 +s 53 +f 487/554/1477 488/555/1478 477/543/1479 475/541/1480 +s 54 +f 490/558/1471 489/557/1470 484/551/1474 483/549/1473 +s 55 +f 491/559/1481 490/558/1482 483/549/1483 482/548/1484 +f 481/547/1485 492/560/1486 491/559/1481 482/548/1484 +f 493/561/1487 492/560/1486 481/547/1485 488/555/1488 +s 53 +f 494/562/1467 493/561/1466 488/555/1478 487/554/1477 +s 56 +f 495/563/1489 494/562/1490 487/554/1491 486/553/1492 +f 485/552/1493 496/564/1494 495/563/1489 486/553/1492 +f 489/556/1495 496/564/1494 485/552/1493 484/550/1496 +s 55 +f 492/560/1486 493/561/1487 478/544/1497 +s 56 +f 476/542/1498 494/562/1490 495/563/1489 +f 486/553/1492 487/554/1491 475/541/1499 +s 55 +f 488/555/1488 481/547/1485 477/543/1500 +f 482/548/1484 483/549/1483 479/545/1501 +s 56 +f 473/539/1502 484/550/1496 485/552/1493 +f 474/540/1503 496/564/1494 489/556/1495 +s 55 +f 480/546/1504 490/558/1482 491/559/1481 +s off +f 480/546/1505 491/559/1506 496/564/1507 474/540/1508 +f 491/559/1509 492/560/1510 495/563/1511 496/564/1512 +f 492/560/1513 478/544/1514 476/542/1515 495/563/1516 +f 477/543/1517 481/547/1518 486/553/1519 475/541/1520 +f 481/547/1521 482/548/1522 485/552/1523 486/553/1524 +f 482/548/1525 479/545/1526 473/539/1527 485/552/1528 +s 57 +f 502/570/1529 517/587/1530 518/588/1531 500/568/1532 +s 58 +f 498/566/1533 513/583/1534 514/584/1535 504/572/1536 +f 507/575/1537 508/577/1538 497/565/1539 503/571/1540 +s 57 +f 511/580/1541 512/581/1542 501/569/1543 499/567/1544 +s 58 +f 514/584/1535 513/583/1534 508/577/1538 507/575/1537 +s 59 +f 515/585/1545 514/584/1546 507/575/1547 506/574/1548 +f 505/573/1549 516/586/1550 515/585/1545 506/574/1548 +f 517/587/1551 516/586/1550 505/573/1549 512/581/1552 +s 57 +f 518/588/1531 517/587/1530 512/581/1542 511/580/1541 +s 60 +f 519/589/1553 518/588/1554 511/580/1555 510/579/1556 +f 509/578/1557 520/590/1558 519/589/1553 510/579/1556 +f 513/582/1559 520/590/1558 509/578/1557 508/576/1560 +s 59 +f 516/586/1550 517/587/1551 502/570/1561 +s 60 +f 500/568/1562 518/588/1554 519/589/1553 +f 510/579/1556 511/580/1555 499/567/1563 +s 59 +f 512/581/1552 505/573/1549 501/569/1564 +f 506/574/1548 507/575/1547 503/571/1565 +s 60 +f 497/565/1566 508/576/1560 509/578/1557 +f 498/566/1567 520/590/1558 513/582/1559 +s 59 +f 504/572/1568 514/584/1546 515/585/1545 +s off +f 504/572/1569 515/585/1570 520/590/1571 498/566/1572 +f 515/585/1573 516/586/1574 519/589/1575 520/590/1576 +f 516/586/1577 502/570/1578 500/568/1579 519/589/1580 +f 501/569/1581 505/573/1582 510/579/1583 499/567/1584 +f 505/573/1585 506/574/1586 509/578/1587 510/579/1588 +f 506/574/1589 503/571/1590 497/565/1591 509/578/1592 +s 61 +f 526/596/1593 541/613/1594 542/614/1595 524/594/1596 +s 62 +f 522/592/1597 537/609/1598 538/610/1599 528/598/1600 +f 531/601/1601 532/603/1602 521/591/1603 527/597/1604 +s 61 +f 535/606/1605 536/607/1606 525/595/1607 523/593/1608 +s 62 +f 538/610/1599 537/609/1598 532/603/1602 531/601/1601 +s 63 +f 539/611/1609 538/610/1610 531/601/1611 530/600/1612 +f 529/599/1613 540/612/1614 539/611/1609 530/600/1612 +f 541/613/1615 540/612/1614 529/599/1613 536/607/1616 +s 61 +f 542/614/1595 541/613/1594 536/607/1606 535/606/1605 +s 64 +f 543/615/1617 542/614/1618 535/606/1619 534/605/1620 +f 533/604/1621 544/616/1622 543/615/1617 534/605/1620 +f 537/608/1623 544/616/1622 533/604/1621 532/602/1624 +s 63 +f 540/612/1614 541/613/1615 526/596/1625 +s 64 +f 524/594/1626 542/614/1618 543/615/1617 +f 534/605/1620 535/606/1619 523/593/1627 +s 63 +f 536/607/1616 529/599/1613 525/595/1628 +f 530/600/1612 531/601/1611 527/597/1629 +s 64 +f 521/591/1630 532/602/1624 533/604/1621 +f 522/592/1631 544/616/1622 537/608/1623 +s 63 +f 528/598/1632 538/610/1610 539/611/1609 +s off +f 528/598/1633 539/611/1634 544/616/1635 522/592/1636 +f 539/611/1637 540/612/1638 543/615/1639 544/616/1640 +f 540/612/1641 526/596/1642 524/594/1643 543/615/1644 +f 525/595/1645 529/599/1646 534/605/1647 523/593/1648 +f 529/599/1649 530/600/1650 533/604/1651 534/605/1652 +f 530/600/1653 527/597/1654 521/591/1655 533/604/1656 +s 65 +f 550/622/1657 565/639/1658 566/640/1659 548/620/1660 +s 66 +f 546/618/1661 561/635/1662 562/636/1663 552/624/1664 +f 555/627/1665 556/629/1666 545/617/1667 551/623/1668 +s 65 +f 559/632/1669 560/633/1670 549/621/1671 547/619/1672 +s 66 +f 562/636/1663 561/635/1662 556/629/1666 555/627/1665 +s 67 +f 563/637/1673 562/636/1674 555/627/1675 554/626/1676 +f 553/625/1677 564/638/1678 563/637/1673 554/626/1676 +f 565/639/1679 564/638/1678 553/625/1677 560/633/1680 +s 65 +f 566/640/1659 565/639/1658 560/633/1670 559/632/1669 +s 68 +f 567/641/1681 566/640/1682 559/632/1683 558/631/1684 +f 557/630/1685 568/642/1686 567/641/1681 558/631/1684 +f 561/634/1687 568/642/1686 557/630/1685 556/628/1688 +s 67 +f 564/638/1678 565/639/1679 550/622/1689 +s 68 +f 548/620/1690 566/640/1682 567/641/1681 +f 558/631/1684 559/632/1683 547/619/1691 +s 67 +f 560/633/1680 553/625/1677 549/621/1692 +f 554/626/1676 555/627/1675 551/623/1693 +s 68 +f 545/617/1694 556/628/1688 557/630/1685 +f 546/618/1695 568/642/1686 561/634/1687 +s 67 +f 552/624/1696 562/636/1674 563/637/1673 +s off +f 552/624/1697 563/637/1698 568/642/1699 546/618/1700 +f 563/637/1701 564/638/1702 567/641/1703 568/642/1704 +f 564/638/1705 550/622/1706 548/620/1707 567/641/1708 +f 549/621/1709 553/625/1710 558/631/1711 547/619/1712 +f 553/625/1713 554/626/1714 557/630/1715 558/631/1716 +f 554/626/1717 551/623/1718 545/617/1719 557/630/1720 +s 69 +f 574/648/1721 589/665/1722 590/666/1723 572/646/1724 +s 70 +f 570/644/1725 585/661/1726 586/662/1727 576/650/1728 +f 579/653/1729 580/655/1730 569/643/1731 575/649/1732 +s 69 +f 583/658/1733 584/659/1734 573/647/1735 571/645/1736 +s 70 +f 586/662/1727 585/661/1726 580/655/1730 579/653/1729 +s 71 +f 587/663/1737 586/662/1738 579/653/1739 578/652/1740 +f 577/651/1741 588/664/1742 587/663/1737 578/652/1740 +f 589/665/1743 588/664/1742 577/651/1741 584/659/1744 +s 69 +f 590/666/1723 589/665/1722 584/659/1734 583/658/1733 +s 72 +f 591/667/1745 590/666/1746 583/658/1747 582/657/1748 +f 581/656/1749 592/668/1750 591/667/1745 582/657/1748 +f 585/660/1751 592/668/1750 581/656/1749 580/654/1752 +s 71 +f 588/664/1742 589/665/1743 574/648/1753 +s 72 +f 572/646/1754 590/666/1746 591/667/1745 +f 582/657/1748 583/658/1747 571/645/1755 +s 71 +f 584/659/1744 577/651/1741 573/647/1756 +f 578/652/1740 579/653/1739 575/649/1757 +s 72 +f 569/643/1758 580/654/1752 581/656/1749 +f 570/644/1759 592/668/1750 585/660/1751 +s 71 +f 576/650/1760 586/662/1738 587/663/1737 +s off +f 576/650/1761 587/663/1762 592/668/1763 570/644/1764 +f 587/663/1765 588/664/1766 591/667/1767 592/668/1768 +f 588/664/1769 574/648/1770 572/646/1771 591/667/1772 +f 573/647/1773 577/651/1774 582/657/1775 571/645/1776 +f 577/651/1777 578/652/1778 581/656/1779 582/657/1780 +f 578/652/1781 575/649/1782 569/643/1783 581/656/1784 +s 73 +f 598/674/1785 613/691/1786 614/692/1787 596/672/1788 +s 74 +f 594/670/1789 609/687/1790 610/688/1791 600/676/1792 +f 603/679/1793 604/681/1794 593/669/1795 599/675/1796 +s 73 +f 607/684/1797 608/685/1798 597/673/1799 595/671/1800 +s 74 +f 610/688/1791 609/687/1790 604/681/1794 603/679/1793 +s 75 +f 611/689/1801 610/688/1802 603/679/1803 602/678/1804 +f 601/677/1805 612/690/1806 611/689/1801 602/678/1804 +f 613/691/1807 612/690/1806 601/677/1805 608/685/1808 +s 73 +f 614/692/1787 613/691/1786 608/685/1798 607/684/1797 +s 76 +f 615/693/1809 614/692/1810 607/684/1811 606/683/1812 +f 605/682/1813 616/694/1814 615/693/1809 606/683/1812 +f 609/686/1815 616/694/1814 605/682/1813 604/680/1816 +s 75 +f 612/690/1806 613/691/1807 598/674/1817 +s 76 +f 596/672/1818 614/692/1810 615/693/1809 +f 606/683/1812 607/684/1811 595/671/1819 +s 75 +f 608/685/1808 601/677/1805 597/673/1820 +f 602/678/1804 603/679/1803 599/675/1821 +s 76 +f 593/669/1822 604/680/1816 605/682/1813 +f 594/670/1823 616/694/1814 609/686/1815 +s 75 +f 600/676/1824 610/688/1802 611/689/1801 +s off +f 600/676/1825 611/689/1826 616/694/1827 594/670/1828 +f 611/689/1829 612/690/1830 615/693/1831 616/694/1832 +f 612/690/1833 598/674/1834 596/672/1835 615/693/1836 +f 597/673/1837 601/677/1838 606/683/1839 595/671/1840 +f 601/677/1841 602/678/1842 605/682/1843 606/683/1844 +f 602/678/1845 599/675/1846 593/669/1847 605/682/1848 +s 77 +f 622/700/1849 637/717/1850 638/718/1851 620/698/1852 +s 78 +f 618/696/1853 633/713/1854 634/714/1855 624/702/1856 +f 627/705/1857 628/707/1858 617/695/1859 623/701/1860 +s 77 +f 631/710/1861 632/711/1862 621/699/1863 619/697/1864 +s 78 +f 634/714/1855 633/713/1854 628/707/1858 627/705/1857 +s 79 +f 635/715/1865 634/714/1866 627/705/1867 626/704/1868 +f 625/703/1869 636/716/1870 635/715/1865 626/704/1868 +f 637/717/1871 636/716/1870 625/703/1869 632/711/1872 +s 77 +f 638/718/1851 637/717/1850 632/711/1862 631/710/1861 +s 80 +f 639/719/1873 638/718/1874 631/710/1875 630/709/1876 +f 629/708/1877 640/720/1878 639/719/1873 630/709/1876 +f 633/712/1879 640/720/1878 629/708/1877 628/706/1880 +s 79 +f 636/716/1870 637/717/1871 622/700/1881 +s 80 +f 620/698/1882 638/718/1874 639/719/1873 +f 630/709/1876 631/710/1875 619/697/1883 +s 79 +f 632/711/1872 625/703/1869 621/699/1884 +f 626/704/1868 627/705/1867 623/701/1885 +s 80 +f 617/695/1886 628/706/1880 629/708/1877 +f 618/696/1887 640/720/1878 633/712/1879 +s 79 +f 624/702/1888 634/714/1866 635/715/1865 +s off +f 624/702/1889 635/715/1890 640/720/1891 618/696/1892 +f 635/715/1893 636/716/1894 639/719/1895 640/720/1896 +f 636/716/1897 622/700/1898 620/698/1899 639/719/1900 +f 621/699/1901 625/703/1902 630/709/1903 619/697/1904 +f 625/703/1905 626/704/1906 629/708/1907 630/709/1908 +f 626/704/1909 623/701/1910 617/695/1911 629/708/1912 +s 81 +f 646/726/1913 661/743/1914 662/744/1915 644/724/1916 +s 82 +f 642/722/1917 657/739/1918 658/740/1919 648/728/1920 +f 651/731/1921 652/733/1922 641/721/1923 647/727/1924 +s 81 +f 655/736/1925 656/737/1926 645/725/1927 643/723/1928 +s 82 +f 658/740/1919 657/739/1918 652/733/1922 651/731/1921 +s 83 +f 659/741/1929 658/740/1930 651/731/1931 650/730/1932 +f 649/729/1933 660/742/1934 659/741/1929 650/730/1932 +f 661/743/1935 660/742/1934 649/729/1933 656/737/1936 +s 81 +f 662/744/1915 661/743/1914 656/737/1926 655/736/1925 +s 84 +f 663/745/1937 662/744/1938 655/736/1939 654/735/1940 +f 653/734/1941 664/746/1942 663/745/1937 654/735/1940 +f 657/738/1943 664/746/1942 653/734/1941 652/732/1944 +s 83 +f 660/742/1934 661/743/1935 646/726/1945 +s 84 +f 644/724/1946 662/744/1938 663/745/1937 +f 654/735/1940 655/736/1939 643/723/1947 +s 83 +f 656/737/1936 649/729/1933 645/725/1948 +f 650/730/1932 651/731/1931 647/727/1949 +s 84 +f 641/721/1950 652/732/1944 653/734/1941 +f 642/722/1951 664/746/1942 657/738/1943 +s 83 +f 648/728/1952 658/740/1930 659/741/1929 +s off +f 648/728/1953 659/741/1954 664/746/1955 642/722/1956 +f 659/741/1957 660/742/1958 663/745/1959 664/746/1960 +f 660/742/1961 646/726/1962 644/724/1963 663/745/1964 +f 645/725/1965 649/729/1966 654/735/1967 643/723/1968 +f 649/729/1969 650/730/1970 653/734/1971 654/735/1972 +f 650/730/1973 647/727/1974 641/721/1975 653/734/1976 +s 85 +f 670/752/1977 685/769/1978 686/770/1979 668/750/1980 +s 86 +f 666/748/1981 681/765/1982 682/766/1983 672/754/1984 +f 675/757/1985 676/759/1986 665/747/1987 671/753/1988 +s 85 +f 679/762/1989 680/763/1990 669/751/1991 667/749/1992 +s 86 +f 682/766/1983 681/765/1982 676/759/1986 675/757/1985 +s 87 +f 683/767/1993 682/766/1994 675/757/1995 674/756/1996 +f 673/755/1997 684/768/1998 683/767/1993 674/756/1996 +f 685/769/1999 684/768/1998 673/755/1997 680/763/2000 +s 85 +f 686/770/1979 685/769/1978 680/763/1990 679/762/1989 +s 88 +f 687/771/2001 686/770/2002 679/762/2003 678/761/2004 +f 677/760/2005 688/772/2006 687/771/2001 678/761/2004 +f 681/764/2007 688/772/2006 677/760/2005 676/758/2008 +s 87 +f 684/768/1998 685/769/1999 670/752/2009 +s 88 +f 668/750/2010 686/770/2002 687/771/2001 +f 678/761/2004 679/762/2003 667/749/2011 +s 87 +f 680/763/2000 673/755/1997 669/751/2012 +f 674/756/1996 675/757/1995 671/753/2013 +s 88 +f 665/747/2014 676/758/2008 677/760/2005 +f 666/748/2015 688/772/2006 681/764/2007 +s 87 +f 672/754/2016 682/766/1994 683/767/1993 +s off +f 672/754/2017 683/767/2018 688/772/2019 666/748/2020 +f 683/767/2021 684/768/2022 687/771/2023 688/772/2024 +f 684/768/2025 670/752/2026 668/750/2027 687/771/2028 +f 669/751/2029 673/755/2030 678/761/2031 667/749/2032 +f 673/755/2033 674/756/2034 677/760/2035 678/761/2036 +f 674/756/2037 671/753/2038 665/747/2039 677/760/2040 +s 89 +f 694/778/2041 709/795/2042 710/796/2043 692/776/2044 +s 90 +f 690/774/2045 705/791/2046 706/792/2047 696/780/2048 +f 699/783/2049 700/785/2050 689/773/2051 695/779/2052 +s 89 +f 703/788/2053 704/789/2054 693/777/2055 691/775/2056 +s 90 +f 706/792/2047 705/791/2046 700/785/2050 699/783/2049 +s 91 +f 707/793/2057 706/792/2058 699/783/2059 698/782/2060 +f 697/781/2061 708/794/2062 707/793/2057 698/782/2060 +f 709/795/2063 708/794/2062 697/781/2061 704/789/2064 +s 89 +f 710/796/2043 709/795/2042 704/789/2054 703/788/2053 +s 92 +f 711/797/2065 710/796/2066 703/788/2067 702/787/2068 +f 701/786/2069 712/798/2070 711/797/2065 702/787/2068 +f 705/790/2071 712/798/2070 701/786/2069 700/784/2072 +s 91 +f 708/794/2062 709/795/2063 694/778/2073 +s 92 +f 692/776/2074 710/796/2066 711/797/2065 +f 702/787/2068 703/788/2067 691/775/2075 +s 91 +f 704/789/2064 697/781/2061 693/777/2076 +f 698/782/2060 699/783/2059 695/779/2077 +s 92 +f 689/773/2078 700/784/2072 701/786/2069 +f 690/774/2079 712/798/2070 705/790/2071 +s 91 +f 696/780/2080 706/792/2058 707/793/2057 +s off +f 696/780/2081 707/793/2082 712/798/2083 690/774/2084 +f 707/793/2085 708/794/2086 711/797/2087 712/798/2088 +f 708/794/2089 694/778/2090 692/776/2091 711/797/2092 +f 693/777/2093 697/781/2094 702/787/2095 691/775/2096 +f 697/781/2097 698/782/2098 701/786/2099 702/787/2100 +f 698/782/2101 695/779/2102 689/773/2103 701/786/2104 +s 93 +f 718/804/2105 733/821/2106 734/822/2107 716/802/2108 +s 94 +f 714/800/2109 729/817/2110 730/818/2111 720/806/2112 +f 723/809/2113 724/811/2114 713/799/2115 719/805/2116 +s 93 +f 727/814/2117 728/815/2118 717/803/2119 715/801/2120 +s 94 +f 730/818/2111 729/817/2110 724/811/2114 723/809/2113 +s 95 +f 731/819/2121 730/818/2122 723/809/2123 722/808/2124 +f 721/807/2125 732/820/2126 731/819/2121 722/808/2124 +f 733/821/2127 732/820/2126 721/807/2125 728/815/2128 +s 93 +f 734/822/2107 733/821/2106 728/815/2118 727/814/2117 +s 96 +f 735/823/2129 734/822/2130 727/814/2131 726/813/2132 +f 725/812/2133 736/824/2134 735/823/2129 726/813/2132 +f 729/816/2135 736/824/2134 725/812/2133 724/810/2136 +s 95 +f 732/820/2126 733/821/2127 718/804/2137 +s 96 +f 716/802/2138 734/822/2130 735/823/2129 +f 726/813/2132 727/814/2131 715/801/2139 +s 95 +f 728/815/2128 721/807/2125 717/803/2140 +f 722/808/2124 723/809/2123 719/805/2141 +s 96 +f 713/799/2142 724/810/2136 725/812/2133 +f 714/800/2143 736/824/2134 729/816/2135 +s 95 +f 720/806/2144 730/818/2122 731/819/2121 +s off +f 720/806/2145 731/819/2146 736/824/2147 714/800/2148 +f 731/819/2149 732/820/2150 735/823/2151 736/824/2152 +f 732/820/2153 718/804/2154 716/802/2155 735/823/2156 +f 717/803/2157 721/807/2158 726/813/2159 715/801/2160 +f 721/807/2161 722/808/2162 725/812/2163 726/813/2164 +f 722/808/2165 719/805/2166 713/799/2167 725/812/2168 +s 97 +f 742/830/2169 757/847/2170 758/848/2171 740/828/2172 +s 98 +f 738/826/2173 753/843/2174 754/844/2175 744/832/2176 +f 747/835/2177 748/837/2178 737/825/2179 743/831/2180 +s 97 +f 751/840/2181 752/841/2182 741/829/2183 739/827/2184 +s 98 +f 754/844/2175 753/843/2174 748/837/2178 747/835/2177 +s 99 +f 755/845/2185 754/844/2186 747/835/2187 746/834/2188 +f 745/833/2189 756/846/2190 755/845/2185 746/834/2188 +f 757/847/2191 756/846/2190 745/833/2189 752/841/2192 +s 97 +f 758/848/2171 757/847/2170 752/841/2182 751/840/2181 +s 100 +f 759/849/2193 758/848/2194 751/840/2195 750/839/2196 +f 749/838/2197 760/850/2198 759/849/2193 750/839/2196 +f 753/842/2199 760/850/2198 749/838/2197 748/836/2200 +s 99 +f 756/846/2190 757/847/2191 742/830/2201 +s 100 +f 740/828/2202 758/848/2194 759/849/2193 +f 750/839/2196 751/840/2195 739/827/2203 +s 99 +f 752/841/2192 745/833/2189 741/829/2204 +f 746/834/2188 747/835/2187 743/831/2205 +s 100 +f 737/825/2206 748/836/2200 749/838/2197 +f 738/826/2207 760/850/2198 753/842/2199 +s 99 +f 744/832/2208 754/844/2186 755/845/2185 +s off +f 744/832/2209 755/845/2210 760/850/2211 738/826/2212 +f 755/845/2213 756/846/2214 759/849/2215 760/850/2216 +f 756/846/2217 742/830/2218 740/828/2219 759/849/2220 +f 741/829/2221 745/833/2222 750/839/2223 739/827/2224 +f 745/833/2225 746/834/2226 749/838/2227 750/839/2228 +f 746/834/2229 743/831/2230 737/825/2231 749/838/2232 +s 101 +f 766/856/2233 781/873/2234 782/874/2235 764/854/2236 +s 102 +f 762/852/2237 777/869/2238 778/870/2239 768/858/2240 +f 771/861/2241 772/863/2242 761/851/2243 767/857/2244 +s 101 +f 775/866/2245 776/867/2246 765/855/2247 763/853/2248 +s 102 +f 778/870/2239 777/869/2238 772/863/2242 771/861/2241 +s 103 +f 779/871/2249 778/870/2250 771/861/2251 770/860/2252 +f 769/859/2253 780/872/2254 779/871/2249 770/860/2252 +f 781/873/2255 780/872/2254 769/859/2253 776/867/2256 +s 101 +f 782/874/2235 781/873/2234 776/867/2246 775/866/2245 +s 104 +f 783/875/2257 782/874/2258 775/866/2259 774/865/2260 +f 773/864/2261 784/876/2262 783/875/2257 774/865/2260 +f 777/868/2263 784/876/2262 773/864/2261 772/862/2264 +s 103 +f 780/872/2254 781/873/2255 766/856/2265 +s 104 +f 764/854/2266 782/874/2258 783/875/2257 +f 774/865/2260 775/866/2259 763/853/2267 +s 103 +f 776/867/2256 769/859/2253 765/855/2268 +f 770/860/2252 771/861/2251 767/857/2269 +s 104 +f 761/851/2270 772/862/2264 773/864/2261 +f 762/852/2271 784/876/2262 777/868/2263 +s 103 +f 768/858/2272 778/870/2250 779/871/2249 +s off +f 768/858/2273 779/871/2274 784/876/2275 762/852/2276 +f 779/871/2277 780/872/2278 783/875/2279 784/876/2280 +f 780/872/2281 766/856/2282 764/854/2283 783/875/2284 +f 765/855/2285 769/859/2286 774/865/2287 763/853/2288 +f 769/859/2289 770/860/2290 773/864/2291 774/865/2292 +f 770/860/2293 767/857/2294 761/851/2295 773/864/2296 +s 105 +f 790/882/2297 805/899/2298 806/900/2299 788/880/2300 +s 106 +f 786/878/2301 801/895/2302 802/896/2303 792/884/2304 +f 795/887/2305 796/889/2306 785/877/2307 791/883/2308 +s 105 +f 799/892/2309 800/893/2310 789/881/2311 787/879/2312 +s 106 +f 802/896/2303 801/895/2302 796/889/2306 795/887/2305 +s 107 +f 803/897/2313 802/896/2314 795/887/2315 794/886/2316 +f 793/885/2317 804/898/2318 803/897/2313 794/886/2316 +f 805/899/2319 804/898/2318 793/885/2317 800/893/2320 +s 105 +f 806/900/2299 805/899/2298 800/893/2310 799/892/2309 +s 108 +f 807/901/2321 806/900/2322 799/892/2323 798/891/2324 +f 797/890/2325 808/902/2326 807/901/2321 798/891/2324 +f 801/894/2327 808/902/2326 797/890/2325 796/888/2328 +s 107 +f 804/898/2318 805/899/2319 790/882/2329 +s 108 +f 788/880/2330 806/900/2322 807/901/2321 +f 798/891/2324 799/892/2323 787/879/2331 +s 107 +f 800/893/2320 793/885/2317 789/881/2332 +f 794/886/2316 795/887/2315 791/883/2333 +s 108 +f 785/877/2334 796/888/2328 797/890/2325 +f 786/878/2335 808/902/2326 801/894/2327 +s 107 +f 792/884/2336 802/896/2314 803/897/2313 +s off +f 792/884/2337 803/897/2338 808/902/2339 786/878/2340 +f 803/897/2341 804/898/2342 807/901/2343 808/902/2344 +f 804/898/2345 790/882/2346 788/880/2347 807/901/2348 +f 789/881/2349 793/885/2350 798/891/2351 787/879/2352 +f 793/885/2353 794/886/2354 797/890/2355 798/891/2356 +f 794/886/2357 791/883/2358 785/877/2359 797/890/2360 +s 109 +f 814/908/2361 829/925/2362 830/926/2363 812/906/2364 +s 110 +f 810/904/2365 825/921/2366 826/922/2367 816/910/2368 +f 819/913/2369 820/915/2370 809/903/2371 815/909/2372 +s 109 +f 823/918/2373 824/919/2374 813/907/2375 811/905/2376 +s 110 +f 826/922/2367 825/921/2366 820/915/2370 819/913/2369 +s 111 +f 827/923/2377 826/922/2378 819/913/2379 818/912/2380 +f 817/911/2381 828/924/2382 827/923/2377 818/912/2380 +f 829/925/2383 828/924/2382 817/911/2381 824/919/2384 +s 109 +f 830/926/2363 829/925/2362 824/919/2374 823/918/2373 +s 112 +f 831/927/2385 830/926/2386 823/918/2387 822/917/2388 +f 821/916/2389 832/928/2390 831/927/2385 822/917/2388 +f 825/920/2391 832/928/2390 821/916/2389 820/914/2392 +s 111 +f 828/924/2382 829/925/2383 814/908/2393 +s 112 +f 812/906/2394 830/926/2386 831/927/2385 +f 822/917/2388 823/918/2387 811/905/2395 +s 111 +f 824/919/2384 817/911/2381 813/907/2396 +f 818/912/2380 819/913/2379 815/909/2397 +s 112 +f 809/903/2398 820/914/2392 821/916/2389 +f 810/904/2399 832/928/2390 825/920/2391 +s 111 +f 816/910/2400 826/922/2378 827/923/2377 +s off +f 816/910/2401 827/923/2402 832/928/2403 810/904/2404 +f 827/923/2405 828/924/2406 831/927/2407 832/928/2408 +f 828/924/2409 814/908/2410 812/906/2411 831/927/2412 +f 813/907/2413 817/911/2414 822/917/2415 811/905/2416 +f 817/911/2417 818/912/2418 821/916/2419 822/917/2420 +f 818/912/2421 815/909/2422 809/903/2423 821/916/2424 +s 113 +f 838/934/2425 853/951/2426 854/952/2427 836/932/2428 +s 114 +f 834/930/2429 849/947/2430 850/948/2431 840/936/2432 +f 843/939/2433 844/941/2434 833/929/2435 839/935/2436 +s 113 +f 847/944/2437 848/945/2438 837/933/2439 835/931/2440 +s 114 +f 850/948/2431 849/947/2430 844/941/2434 843/939/2433 +s 115 +f 851/949/2441 850/948/2442 843/939/2443 842/938/2444 +f 841/937/2445 852/950/2446 851/949/2441 842/938/2444 +f 853/951/2447 852/950/2446 841/937/2445 848/945/2448 +s 113 +f 854/952/2427 853/951/2426 848/945/2438 847/944/2437 +s 116 +f 855/953/2449 854/952/2450 847/944/2451 846/943/2452 +f 845/942/2453 856/954/2454 855/953/2449 846/943/2452 +f 849/946/2455 856/954/2454 845/942/2453 844/940/2456 +s 115 +f 852/950/2446 853/951/2447 838/934/2457 +s 116 +f 836/932/2458 854/952/2450 855/953/2449 +f 846/943/2452 847/944/2451 835/931/2459 +s 115 +f 848/945/2448 841/937/2445 837/933/2460 +f 842/938/2444 843/939/2443 839/935/2461 +s 116 +f 833/929/2462 844/940/2456 845/942/2453 +f 834/930/2463 856/954/2454 849/946/2455 +s 115 +f 840/936/2464 850/948/2442 851/949/2441 +s off +f 840/936/2465 851/949/2466 856/954/2467 834/930/2468 +f 851/949/2469 852/950/2470 855/953/2471 856/954/2472 +f 852/950/2473 838/934/2474 836/932/2475 855/953/2476 +f 837/933/2477 841/937/2478 846/943/2479 835/931/2480 +f 841/937/2481 842/938/2482 845/942/2483 846/943/2484 +f 842/938/2485 839/935/2486 833/929/2487 845/942/2488 +s 117 +f 862/960/2489 877/977/2490 878/978/2491 860/958/2492 +s 118 +f 858/956/2493 873/973/2494 874/974/2495 864/962/2496 +f 867/965/2497 868/967/2498 857/955/2499 863/961/2500 +s 117 +f 871/970/2501 872/971/2502 861/959/2503 859/957/2504 +s 118 +f 874/974/2495 873/973/2494 868/967/2498 867/965/2497 +s 119 +f 875/975/2505 874/974/2506 867/965/2507 866/964/2508 +f 865/963/2509 876/976/2510 875/975/2505 866/964/2508 +f 877/977/2511 876/976/2510 865/963/2509 872/971/2512 +s 117 +f 878/978/2491 877/977/2490 872/971/2502 871/970/2501 +s 120 +f 879/979/2513 878/978/2514 871/970/2515 870/969/2516 +f 869/968/2517 880/980/2518 879/979/2513 870/969/2516 +f 873/972/2519 880/980/2518 869/968/2517 868/966/2520 +s 119 +f 876/976/2510 877/977/2511 862/960/2521 +s 120 +f 860/958/2522 878/978/2514 879/979/2513 +f 870/969/2516 871/970/2515 859/957/2523 +s 119 +f 872/971/2512 865/963/2509 861/959/2524 +f 866/964/2508 867/965/2507 863/961/2525 +s 120 +f 857/955/2526 868/966/2520 869/968/2517 +f 858/956/2527 880/980/2518 873/972/2519 +s 119 +f 864/962/2528 874/974/2506 875/975/2505 +s off +f 864/962/2529 875/975/2530 880/980/2531 858/956/2532 +f 875/975/2533 876/976/2534 879/979/2535 880/980/2536 +f 876/976/2537 862/960/2538 860/958/2539 879/979/2540 +f 861/959/2541 865/963/2542 870/969/2543 859/957/2544 +f 865/963/2545 866/964/2546 869/968/2547 870/969/2548 +f 866/964/2549 863/961/2550 857/955/2551 869/968/2552 +s 121 +f 886/986/2553 901/1003/2554 902/1004/2555 884/984/2556 +s 122 +f 882/982/2557 897/999/2558 898/1000/2559 888/988/2560 +f 891/991/2561 892/993/2562 881/981/2563 887/987/2564 +s 121 +f 895/996/2565 896/997/2566 885/985/2567 883/983/2568 +s 122 +f 898/1000/2559 897/999/2558 892/993/2562 891/991/2561 +s 123 +f 899/1001/2569 898/1000/2570 891/991/2571 890/990/2572 +f 889/989/2573 900/1002/2574 899/1001/2569 890/990/2572 +f 901/1003/2575 900/1002/2574 889/989/2573 896/997/2576 +s 121 +f 902/1004/2555 901/1003/2554 896/997/2566 895/996/2565 +s 124 +f 903/1005/2577 902/1004/2578 895/996/2579 894/995/2580 +f 893/994/2581 904/1006/2582 903/1005/2577 894/995/2580 +f 897/998/2583 904/1006/2582 893/994/2581 892/992/2584 +s 123 +f 900/1002/2574 901/1003/2575 886/986/2585 +s 124 +f 884/984/2586 902/1004/2578 903/1005/2577 +f 894/995/2580 895/996/2579 883/983/2587 +s 123 +f 896/997/2576 889/989/2573 885/985/2588 +f 890/990/2572 891/991/2571 887/987/2589 +s 124 +f 881/981/2590 892/992/2584 893/994/2581 +f 882/982/2591 904/1006/2582 897/998/2583 +s 123 +f 888/988/2592 898/1000/2570 899/1001/2569 +s off +f 888/988/2593 899/1001/2594 904/1006/2595 882/982/2596 +f 899/1001/2597 900/1002/2598 903/1005/2599 904/1006/2600 +f 900/1002/2601 886/986/2602 884/984/2603 903/1005/2604 +f 885/985/2605 889/989/2606 894/995/2607 883/983/2608 +f 889/989/2609 890/990/2610 893/994/2611 894/995/2612 +f 890/990/2613 887/987/2614 881/981/2615 893/994/2616 +s 125 +f 910/1012/2617 925/1029/2618 926/1030/2619 908/1010/2620 +s 126 +f 906/1008/2621 921/1025/2622 922/1026/2623 912/1014/2624 +f 915/1017/2625 916/1019/2626 905/1007/2627 911/1013/2628 +s 125 +f 919/1022/2629 920/1023/2630 909/1011/2631 907/1009/2632 +s 126 +f 922/1026/2623 921/1025/2622 916/1019/2626 915/1017/2625 +s 127 +f 923/1027/2633 922/1026/2634 915/1017/2635 914/1016/2636 +f 913/1015/2637 924/1028/2638 923/1027/2633 914/1016/2636 +f 925/1029/2639 924/1028/2638 913/1015/2637 920/1023/2640 +s 125 +f 926/1030/2619 925/1029/2618 920/1023/2630 919/1022/2629 +s 128 +f 927/1031/2641 926/1030/2642 919/1022/2643 918/1021/2644 +f 917/1020/2645 928/1032/2646 927/1031/2641 918/1021/2644 +f 921/1024/2647 928/1032/2646 917/1020/2645 916/1018/2648 +s 127 +f 924/1028/2638 925/1029/2639 910/1012/2649 +s 128 +f 908/1010/2650 926/1030/2642 927/1031/2641 +f 918/1021/2644 919/1022/2643 907/1009/2651 +s 127 +f 920/1023/2640 913/1015/2637 909/1011/2652 +f 914/1016/2636 915/1017/2635 911/1013/2653 +s 128 +f 905/1007/2654 916/1018/2648 917/1020/2645 +f 906/1008/2655 928/1032/2646 921/1024/2647 +s 127 +f 912/1014/2656 922/1026/2634 923/1027/2633 +s off +f 912/1014/2657 923/1027/2658 928/1032/2659 906/1008/2660 +f 923/1027/2661 924/1028/2662 927/1031/2663 928/1032/2664 +f 924/1028/2665 910/1012/2666 908/1010/2667 927/1031/2668 +f 909/1011/2669 913/1015/2670 918/1021/2671 907/1009/2672 +f 913/1015/2673 914/1016/2674 917/1020/2675 918/1021/2676 +f 914/1016/2677 911/1013/2678 905/1007/2679 917/1020/2680 +s 129 +f 934/1038/2681 949/1055/2682 950/1056/2683 932/1036/2684 +s 130 +f 930/1034/2685 945/1051/2686 946/1052/2687 936/1040/2688 +f 939/1043/2689 940/1045/2690 929/1033/2691 935/1039/2692 +s 129 +f 943/1048/2693 944/1049/2694 933/1037/2695 931/1035/2696 +s 130 +f 946/1052/2687 945/1051/2686 940/1045/2690 939/1043/2689 +s 131 +f 947/1053/2697 946/1052/2698 939/1043/2699 938/1042/2700 +f 937/1041/2701 948/1054/2702 947/1053/2697 938/1042/2700 +f 949/1055/2703 948/1054/2702 937/1041/2701 944/1049/2704 +s 129 +f 950/1056/2683 949/1055/2682 944/1049/2694 943/1048/2693 +s 132 +f 951/1057/2705 950/1056/2706 943/1048/2707 942/1047/2708 +f 941/1046/2709 952/1058/2710 951/1057/2705 942/1047/2708 +f 945/1050/2711 952/1058/2710 941/1046/2709 940/1044/2712 +s 131 +f 948/1054/2702 949/1055/2703 934/1038/2713 +s 132 +f 932/1036/2714 950/1056/2706 951/1057/2705 +f 942/1047/2708 943/1048/2707 931/1035/2715 +s 131 +f 944/1049/2704 937/1041/2701 933/1037/2716 +f 938/1042/2700 939/1043/2699 935/1039/2717 +s 132 +f 929/1033/2718 940/1044/2712 941/1046/2709 +f 930/1034/2719 952/1058/2710 945/1050/2711 +s 131 +f 936/1040/2720 946/1052/2698 947/1053/2697 +s off +f 936/1040/2721 947/1053/2722 952/1058/2723 930/1034/2724 +f 947/1053/2725 948/1054/2726 951/1057/2727 952/1058/2728 +f 948/1054/2729 934/1038/2730 932/1036/2731 951/1057/2732 +f 933/1037/2733 937/1041/2734 942/1047/2735 931/1035/2736 +f 937/1041/2737 938/1042/2738 941/1046/2739 942/1047/2740 +f 938/1042/2741 935/1039/2742 929/1033/2743 941/1046/2744 +s 133 +f 958/1064/2745 973/1081/2746 974/1082/2747 956/1062/2748 +s 134 +f 954/1060/2749 969/1077/2750 970/1078/2751 960/1066/2752 +f 963/1069/2753 964/1071/2754 953/1059/2755 959/1065/2756 +s 133 +f 967/1074/2757 968/1075/2758 957/1063/2759 955/1061/2760 +s 134 +f 970/1078/2751 969/1077/2750 964/1071/2754 963/1069/2753 +s 135 +f 971/1079/2761 970/1078/2762 963/1069/2763 962/1068/2764 +f 961/1067/2765 972/1080/2766 971/1079/2761 962/1068/2764 +f 973/1081/2767 972/1080/2766 961/1067/2765 968/1075/2768 +s 133 +f 974/1082/2747 973/1081/2746 968/1075/2758 967/1074/2757 +s 136 +f 975/1083/2769 974/1082/2770 967/1074/2771 966/1073/2772 +f 965/1072/2773 976/1084/2774 975/1083/2769 966/1073/2772 +f 969/1076/2775 976/1084/2774 965/1072/2773 964/1070/2776 +s 135 +f 972/1080/2766 973/1081/2767 958/1064/2777 +s 136 +f 956/1062/2778 974/1082/2770 975/1083/2769 +f 966/1073/2772 967/1074/2771 955/1061/2779 +s 135 +f 968/1075/2768 961/1067/2765 957/1063/2780 +f 962/1068/2764 963/1069/2763 959/1065/2781 +s 136 +f 953/1059/2782 964/1070/2776 965/1072/2773 +f 954/1060/2783 976/1084/2774 969/1076/2775 +s 135 +f 960/1066/2784 970/1078/2762 971/1079/2761 +s off +f 960/1066/2785 971/1079/2786 976/1084/2787 954/1060/2788 +f 971/1079/2789 972/1080/2790 975/1083/2791 976/1084/2792 +f 972/1080/2793 958/1064/2794 956/1062/2795 975/1083/2796 +f 957/1063/2797 961/1067/2798 966/1073/2799 955/1061/2800 +f 961/1067/2801 962/1068/2802 965/1072/2803 966/1073/2804 +f 962/1068/2805 959/1065/2806 953/1059/2807 965/1072/2808 +s 137 +f 982/1090/2809 997/1107/2810 998/1108/2811 980/1088/2812 +s 138 +f 978/1086/2813 993/1103/2814 994/1104/2815 984/1092/2816 +f 987/1095/2817 988/1097/2818 977/1085/2819 983/1091/2820 +s 137 +f 991/1100/2821 992/1101/2822 981/1089/2823 979/1087/2824 +s 138 +f 994/1104/2815 993/1103/2814 988/1097/2818 987/1095/2817 +s 139 +f 995/1105/2825 994/1104/2826 987/1095/2827 986/1094/2828 +f 985/1093/2829 996/1106/2830 995/1105/2825 986/1094/2828 +f 997/1107/2831 996/1106/2830 985/1093/2829 992/1101/2832 +s 137 +f 998/1108/2811 997/1107/2810 992/1101/2822 991/1100/2821 +s 140 +f 999/1109/2833 998/1108/2834 991/1100/2835 990/1099/2836 +f 989/1098/2837 1000/1110/2838 999/1109/2833 990/1099/2836 +f 993/1102/2839 1000/1110/2838 989/1098/2837 988/1096/2840 +s 139 +f 996/1106/2830 997/1107/2831 982/1090/2841 +s 140 +f 980/1088/2842 998/1108/2834 999/1109/2833 +f 990/1099/2836 991/1100/2835 979/1087/2843 +s 139 +f 992/1101/2832 985/1093/2829 981/1089/2844 +f 986/1094/2828 987/1095/2827 983/1091/2845 +s 140 +f 977/1085/2846 988/1096/2840 989/1098/2837 +f 978/1086/2847 1000/1110/2838 993/1102/2839 +s 139 +f 984/1092/2848 994/1104/2826 995/1105/2825 +s off +f 984/1092/2849 995/1105/2850 1000/1110/2851 978/1086/2852 +f 995/1105/2853 996/1106/2854 999/1109/2855 1000/1110/2856 +f 996/1106/2857 982/1090/2858 980/1088/2859 999/1109/2860 +f 981/1089/2861 985/1093/2862 990/1099/2863 979/1087/2864 +f 985/1093/2865 986/1094/2866 989/1098/2867 990/1099/2868 +f 986/1094/2869 983/1091/2870 977/1085/2871 989/1098/2872 +s 141 +f 1006/1116/2873 1021/1133/2874 1022/1134/2875 1004/1114/2876 +s 142 +f 1002/1112/2877 1017/1129/2878 1018/1130/2879 1008/1118/2880 +f 1011/1121/2881 1012/1123/2882 1001/1111/2883 1007/1117/2884 +s 141 +f 1015/1126/2885 1016/1127/2886 1005/1115/2887 1003/1113/2888 +s 142 +f 1018/1130/2879 1017/1129/2878 1012/1123/2882 1011/1121/2881 +s 143 +f 1019/1131/2889 1018/1130/2890 1011/1121/2891 1010/1120/2892 +f 1009/1119/2893 1020/1132/2894 1019/1131/2889 1010/1120/2892 +f 1021/1133/2895 1020/1132/2894 1009/1119/2893 1016/1127/2896 +s 141 +f 1022/1134/2875 1021/1133/2874 1016/1127/2886 1015/1126/2885 +s 144 +f 1023/1135/2897 1022/1134/2898 1015/1126/2899 1014/1125/2900 +f 1013/1124/2901 1024/1136/2902 1023/1135/2897 1014/1125/2900 +f 1017/1128/2903 1024/1136/2902 1013/1124/2901 1012/1122/2904 +s 143 +f 1020/1132/2894 1021/1133/2895 1006/1116/2905 +s 144 +f 1004/1114/2906 1022/1134/2898 1023/1135/2897 +f 1014/1125/2900 1015/1126/2899 1003/1113/2907 +s 143 +f 1016/1127/2896 1009/1119/2893 1005/1115/2908 +f 1010/1120/2892 1011/1121/2891 1007/1117/2909 +s 144 +f 1001/1111/2910 1012/1122/2904 1013/1124/2901 +f 1002/1112/2911 1024/1136/2902 1017/1128/2903 +s 143 +f 1008/1118/2912 1018/1130/2890 1019/1131/2889 +s off +f 1008/1118/2913 1019/1131/2914 1024/1136/2915 1002/1112/2916 +f 1019/1131/2917 1020/1132/2918 1023/1135/2919 1024/1136/2920 +f 1020/1132/2921 1006/1116/2922 1004/1114/2923 1023/1135/2924 +f 1005/1115/2925 1009/1119/2926 1014/1125/2927 1003/1113/2928 +f 1009/1119/2929 1010/1120/2930 1013/1124/2931 1014/1125/2932 +f 1010/1120/2933 1007/1117/2934 1001/1111/2935 1013/1124/2936 +s 145 +f 1030/1142/2937 1045/1159/2938 1046/1160/2939 1028/1140/2940 +s 146 +f 1026/1138/2941 1041/1155/2942 1042/1156/2943 1032/1144/2944 +f 1035/1147/2945 1036/1149/2946 1025/1137/2947 1031/1143/2948 +s 145 +f 1039/1152/2949 1040/1153/2950 1029/1141/2951 1027/1139/2952 +s 146 +f 1042/1156/2943 1041/1155/2942 1036/1149/2946 1035/1147/2945 +s 147 +f 1043/1157/2953 1042/1156/2954 1035/1147/2955 1034/1146/2956 +f 1033/1145/2957 1044/1158/2958 1043/1157/2953 1034/1146/2956 +f 1045/1159/2959 1044/1158/2958 1033/1145/2957 1040/1153/2960 +s 145 +f 1046/1160/2939 1045/1159/2938 1040/1153/2950 1039/1152/2949 +s 148 +f 1047/1161/2961 1046/1160/2962 1039/1152/2963 1038/1151/2964 +f 1037/1150/2965 1048/1162/2966 1047/1161/2961 1038/1151/2964 +f 1041/1154/2967 1048/1162/2966 1037/1150/2965 1036/1148/2968 +s 147 +f 1044/1158/2958 1045/1159/2959 1030/1142/2969 +s 148 +f 1028/1140/2970 1046/1160/2962 1047/1161/2961 +f 1038/1151/2964 1039/1152/2963 1027/1139/2971 +s 147 +f 1040/1153/2960 1033/1145/2957 1029/1141/2972 +f 1034/1146/2956 1035/1147/2955 1031/1143/2973 +s 148 +f 1025/1137/2974 1036/1148/2968 1037/1150/2965 +f 1026/1138/2975 1048/1162/2966 1041/1154/2967 +s 147 +f 1032/1144/2976 1042/1156/2954 1043/1157/2953 +s off +f 1032/1144/2977 1043/1157/2978 1048/1162/2979 1026/1138/2980 +f 1043/1157/2981 1044/1158/2982 1047/1161/2983 1048/1162/2984 +f 1044/1158/2985 1030/1142/2986 1028/1140/2987 1047/1161/2988 +f 1029/1141/2989 1033/1145/2990 1038/1151/2991 1027/1139/2992 +f 1033/1145/2993 1034/1146/2994 1037/1150/2995 1038/1151/2996 +f 1034/1146/2997 1031/1143/2998 1025/1137/2999 1037/1150/3000 +s 149 +f 1054/1168/3001 1069/1185/3002 1070/1186/3003 1052/1166/3004 +s 150 +f 1050/1164/3005 1065/1181/3006 1066/1182/3007 1056/1170/3008 +f 1059/1173/3009 1060/1175/3010 1049/1163/3011 1055/1169/3012 +s 149 +f 1063/1178/3013 1064/1179/3014 1053/1167/3015 1051/1165/3016 +s 150 +f 1066/1182/3007 1065/1181/3006 1060/1175/3010 1059/1173/3009 +s 151 +f 1067/1183/3017 1066/1182/3018 1059/1173/3019 1058/1172/3020 +f 1057/1171/3021 1068/1184/3022 1067/1183/3017 1058/1172/3020 +f 1069/1185/3023 1068/1184/3022 1057/1171/3021 1064/1179/3024 +s 149 +f 1070/1186/3003 1069/1185/3002 1064/1179/3014 1063/1178/3013 +s 152 +f 1071/1187/3025 1070/1186/3026 1063/1178/3027 1062/1177/3028 +f 1061/1176/3029 1072/1188/3030 1071/1187/3025 1062/1177/3028 +f 1065/1180/3031 1072/1188/3030 1061/1176/3029 1060/1174/3032 +s 151 +f 1068/1184/3022 1069/1185/3023 1054/1168/3033 +s 152 +f 1052/1166/3034 1070/1186/3026 1071/1187/3025 +f 1062/1177/3028 1063/1178/3027 1051/1165/3035 +s 151 +f 1064/1179/3024 1057/1171/3021 1053/1167/3036 +f 1058/1172/3020 1059/1173/3019 1055/1169/3037 +s 152 +f 1049/1163/3038 1060/1174/3032 1061/1176/3029 +f 1050/1164/3039 1072/1188/3030 1065/1180/3031 +s 151 +f 1056/1170/3040 1066/1182/3018 1067/1183/3017 +s off +f 1056/1170/3041 1067/1183/3042 1072/1188/3043 1050/1164/3044 +f 1067/1183/3045 1068/1184/3046 1071/1187/3047 1072/1188/3048 +f 1068/1184/3049 1054/1168/3050 1052/1166/3051 1071/1187/3052 +f 1053/1167/3053 1057/1171/3054 1062/1177/3055 1051/1165/3056 +f 1057/1171/3057 1058/1172/3058 1061/1176/3059 1062/1177/3060 +f 1058/1172/3061 1055/1169/3062 1049/1163/3063 1061/1176/3064 +s 153 +f 1078/1194/3065 1093/1211/3066 1094/1212/3067 1076/1192/3068 +s 154 +f 1074/1190/3069 1089/1207/3070 1090/1208/3071 1080/1196/3072 +f 1083/1199/3073 1084/1201/3074 1073/1189/3075 1079/1195/3076 +s 153 +f 1087/1204/3077 1088/1205/3078 1077/1193/3079 1075/1191/3080 +s 154 +f 1090/1208/3071 1089/1207/3070 1084/1201/3074 1083/1199/3073 +s 155 +f 1091/1209/3081 1090/1208/3082 1083/1199/3083 1082/1198/3084 +f 1081/1197/3085 1092/1210/3086 1091/1209/3081 1082/1198/3084 +f 1093/1211/3087 1092/1210/3086 1081/1197/3085 1088/1205/3088 +s 153 +f 1094/1212/3067 1093/1211/3066 1088/1205/3078 1087/1204/3077 +s 156 +f 1095/1213/3089 1094/1212/3090 1087/1204/3091 1086/1203/3092 +f 1085/1202/3093 1096/1214/3094 1095/1213/3089 1086/1203/3092 +f 1089/1206/3095 1096/1214/3094 1085/1202/3093 1084/1200/3096 +s 155 +f 1092/1210/3086 1093/1211/3087 1078/1194/3097 +s 156 +f 1076/1192/3098 1094/1212/3090 1095/1213/3089 +f 1086/1203/3092 1087/1204/3091 1075/1191/3099 +s 155 +f 1088/1205/3088 1081/1197/3085 1077/1193/3100 +f 1082/1198/3084 1083/1199/3083 1079/1195/3101 +s 156 +f 1073/1189/3102 1084/1200/3096 1085/1202/3093 +f 1074/1190/3103 1096/1214/3094 1089/1206/3095 +s 155 +f 1080/1196/3104 1090/1208/3082 1091/1209/3081 +s off +f 1080/1196/3105 1091/1209/3106 1096/1214/3107 1074/1190/3108 +f 1091/1209/3109 1092/1210/3110 1095/1213/3111 1096/1214/3112 +f 1092/1210/3113 1078/1194/3114 1076/1192/3115 1095/1213/3116 +f 1077/1193/3117 1081/1197/3118 1086/1203/3119 1075/1191/3120 +f 1081/1197/3121 1082/1198/3122 1085/1202/3123 1086/1203/3124 +f 1082/1198/3125 1079/1195/3126 1073/1189/3127 1085/1202/3128 +s 157 +f 1102/1220/3129 1117/1237/3130 1118/1238/3131 1100/1218/3132 +s 158 +f 1098/1216/3133 1113/1233/3134 1114/1234/3135 1104/1222/3136 +f 1107/1225/3137 1108/1227/3138 1097/1215/3139 1103/1221/3140 +s 157 +f 1111/1230/3141 1112/1231/3142 1101/1219/3143 1099/1217/3144 +s 158 +f 1114/1234/3135 1113/1233/3134 1108/1227/3138 1107/1225/3137 +s 159 +f 1115/1235/3145 1114/1234/3146 1107/1225/3147 1106/1224/3148 +f 1105/1223/3149 1116/1236/3150 1115/1235/3145 1106/1224/3148 +f 1117/1237/3151 1116/1236/3150 1105/1223/3149 1112/1231/3152 +s 157 +f 1118/1238/3131 1117/1237/3130 1112/1231/3142 1111/1230/3141 +s 160 +f 1119/1239/3153 1118/1238/3154 1111/1230/3155 1110/1229/3156 +f 1109/1228/3157 1120/1240/3158 1119/1239/3153 1110/1229/3156 +f 1113/1232/3159 1120/1240/3158 1109/1228/3157 1108/1226/3160 +s 159 +f 1116/1236/3150 1117/1237/3151 1102/1220/3161 +s 160 +f 1100/1218/3162 1118/1238/3154 1119/1239/3153 +f 1110/1229/3156 1111/1230/3155 1099/1217/3163 +s 159 +f 1112/1231/3152 1105/1223/3149 1101/1219/3164 +f 1106/1224/3148 1107/1225/3147 1103/1221/3165 +s 160 +f 1097/1215/3166 1108/1226/3160 1109/1228/3157 +f 1098/1216/3167 1120/1240/3158 1113/1232/3159 +s 159 +f 1104/1222/3168 1114/1234/3146 1115/1235/3145 +s off +f 1104/1222/3169 1115/1235/3170 1120/1240/3171 1098/1216/3172 +f 1115/1235/3173 1116/1236/3174 1119/1239/3175 1120/1240/3176 +f 1116/1236/3177 1102/1220/3178 1100/1218/3179 1119/1239/3180 +f 1101/1219/3181 1105/1223/3182 1110/1229/3183 1099/1217/3184 +f 1105/1223/3185 1106/1224/3186 1109/1228/3187 1110/1229/3188 +f 1106/1224/3189 1103/1221/3190 1097/1215/3191 1109/1228/3192 +s 161 +f 1126/1246/3193 1141/1263/3194 1142/1264/3195 1124/1244/3196 +s 162 +f 1122/1242/3197 1137/1259/3198 1138/1260/3199 1128/1248/3200 +f 1131/1251/3201 1132/1253/3202 1121/1241/3203 1127/1247/3204 +s 161 +f 1135/1256/3205 1136/1257/3206 1125/1245/3207 1123/1243/3208 +s 162 +f 1138/1260/3199 1137/1259/3198 1132/1253/3202 1131/1251/3201 +s 163 +f 1139/1261/3209 1138/1260/3210 1131/1251/3211 1130/1250/3212 +f 1129/1249/3213 1140/1262/3214 1139/1261/3209 1130/1250/3212 +f 1141/1263/3215 1140/1262/3214 1129/1249/3213 1136/1257/3216 +s 161 +f 1142/1264/3195 1141/1263/3194 1136/1257/3206 1135/1256/3205 +s 164 +f 1143/1265/3217 1142/1264/3218 1135/1256/3219 1134/1255/3220 +f 1133/1254/3221 1144/1266/3222 1143/1265/3217 1134/1255/3220 +f 1137/1258/3223 1144/1266/3222 1133/1254/3221 1132/1252/3224 +s 163 +f 1140/1262/3214 1141/1263/3215 1126/1246/3225 +s 164 +f 1124/1244/3226 1142/1264/3218 1143/1265/3217 +f 1134/1255/3220 1135/1256/3219 1123/1243/3227 +s 163 +f 1136/1257/3216 1129/1249/3213 1125/1245/3228 +f 1130/1250/3212 1131/1251/3211 1127/1247/3229 +s 164 +f 1121/1241/3230 1132/1252/3224 1133/1254/3221 +f 1122/1242/3231 1144/1266/3222 1137/1258/3223 +s 163 +f 1128/1248/3232 1138/1260/3210 1139/1261/3209 +s off +f 1128/1248/3233 1139/1261/3234 1144/1266/3235 1122/1242/3236 +f 1139/1261/3237 1140/1262/3238 1143/1265/3239 1144/1266/3240 +f 1140/1262/3241 1126/1246/3242 1124/1244/3243 1143/1265/3244 +f 1125/1245/3245 1129/1249/3246 1134/1255/3247 1123/1243/3248 +f 1129/1249/3249 1130/1250/3250 1133/1254/3251 1134/1255/3252 +f 1130/1250/3253 1127/1247/3254 1121/1241/3255 1133/1254/3256 +s 165 +f 1150/1272/3257 1165/1289/3258 1166/1290/3259 1148/1270/3260 +s 166 +f 1146/1268/3261 1161/1285/3262 1162/1286/3263 1152/1274/3264 +f 1155/1277/3265 1156/1279/3266 1145/1267/3267 1151/1273/3268 +s 165 +f 1159/1282/3269 1160/1283/3270 1149/1271/3271 1147/1269/3272 +s 166 +f 1162/1286/3263 1161/1285/3262 1156/1279/3266 1155/1277/3265 +s 167 +f 1163/1287/3273 1162/1286/3274 1155/1277/3275 1154/1276/3276 +f 1153/1275/3277 1164/1288/3278 1163/1287/3273 1154/1276/3276 +f 1165/1289/3279 1164/1288/3278 1153/1275/3277 1160/1283/3280 +s 165 +f 1166/1290/3259 1165/1289/3258 1160/1283/3270 1159/1282/3269 +s 168 +f 1167/1291/3281 1166/1290/3282 1159/1282/3283 1158/1281/3284 +f 1157/1280/3285 1168/1292/3286 1167/1291/3281 1158/1281/3284 +f 1161/1284/3287 1168/1292/3286 1157/1280/3285 1156/1278/3288 +s 167 +f 1164/1288/3278 1165/1289/3279 1150/1272/3289 +s 168 +f 1148/1270/3290 1166/1290/3282 1167/1291/3281 +f 1158/1281/3284 1159/1282/3283 1147/1269/3291 +s 167 +f 1160/1283/3280 1153/1275/3277 1149/1271/3292 +f 1154/1276/3276 1155/1277/3275 1151/1273/3293 +s 168 +f 1145/1267/3294 1156/1278/3288 1157/1280/3285 +f 1146/1268/3295 1168/1292/3286 1161/1284/3287 +s 167 +f 1152/1274/3296 1162/1286/3274 1163/1287/3273 +s off +f 1152/1274/3297 1163/1287/3298 1168/1292/3299 1146/1268/3300 +f 1163/1287/3301 1164/1288/3302 1167/1291/3303 1168/1292/3304 +f 1164/1288/3305 1150/1272/3306 1148/1270/3307 1167/1291/3308 +f 1149/1271/3309 1153/1275/3310 1158/1281/3311 1147/1269/3312 +f 1153/1275/3313 1154/1276/3314 1157/1280/3315 1158/1281/3316 +f 1154/1276/3317 1151/1273/3318 1145/1267/3319 1157/1280/3320 +s 169 +f 1174/1298/3321 1189/1315/3322 1190/1316/3323 1172/1296/3324 +s 170 +f 1170/1294/3325 1185/1311/3326 1186/1312/3327 1176/1300/3328 +f 1179/1303/3329 1180/1305/3330 1169/1293/3331 1175/1299/3332 +s 169 +f 1183/1308/3333 1184/1309/3334 1173/1297/3335 1171/1295/3336 +s 170 +f 1186/1312/3327 1185/1311/3326 1180/1305/3330 1179/1303/3329 +s 171 +f 1187/1313/3337 1186/1312/3338 1179/1303/3339 1178/1302/3340 +f 1177/1301/3341 1188/1314/3342 1187/1313/3337 1178/1302/3340 +f 1189/1315/3343 1188/1314/3342 1177/1301/3341 1184/1309/3344 +s 169 +f 1190/1316/3323 1189/1315/3322 1184/1309/3334 1183/1308/3333 +s 172 +f 1191/1317/3345 1190/1316/3346 1183/1308/3347 1182/1307/3348 +f 1181/1306/3349 1192/1318/3350 1191/1317/3345 1182/1307/3348 +f 1185/1310/3351 1192/1318/3350 1181/1306/3349 1180/1304/3352 +s 171 +f 1188/1314/3342 1189/1315/3343 1174/1298/3353 +s 172 +f 1172/1296/3354 1190/1316/3346 1191/1317/3345 +f 1182/1307/3348 1183/1308/3347 1171/1295/3355 +s 171 +f 1184/1309/3344 1177/1301/3341 1173/1297/3356 +f 1178/1302/3340 1179/1303/3339 1175/1299/3357 +s 172 +f 1169/1293/3358 1180/1304/3352 1181/1306/3349 +f 1170/1294/3359 1192/1318/3350 1185/1310/3351 +s 171 +f 1176/1300/3360 1186/1312/3338 1187/1313/3337 +s off +f 1176/1300/3361 1187/1313/3362 1192/1318/3363 1170/1294/3364 +f 1187/1313/3365 1188/1314/3366 1191/1317/3367 1192/1318/3368 +f 1188/1314/3369 1174/1298/3370 1172/1296/3371 1191/1317/3372 +f 1173/1297/3373 1177/1301/3374 1182/1307/3375 1171/1295/3376 +f 1177/1301/3377 1178/1302/3378 1181/1306/3379 1182/1307/3380 +f 1178/1302/3381 1175/1299/3382 1169/1293/3383 1181/1306/3384 +s 173 +f 1198/1324/3385 1213/1341/3386 1214/1342/3387 1196/1322/3388 +s 174 +f 1194/1320/3389 1209/1337/3390 1210/1338/3391 1200/1326/3392 +f 1203/1329/3393 1204/1331/3394 1193/1319/3395 1199/1325/3396 +s 173 +f 1207/1334/3397 1208/1335/3398 1197/1323/3399 1195/1321/3400 +s 174 +f 1210/1338/3391 1209/1337/3390 1204/1331/3394 1203/1329/3393 +s 175 +f 1211/1339/3401 1210/1338/3402 1203/1329/3403 1202/1328/3404 +f 1201/1327/3405 1212/1340/3406 1211/1339/3401 1202/1328/3404 +f 1213/1341/3407 1212/1340/3406 1201/1327/3405 1208/1335/3408 +s 173 +f 1214/1342/3387 1213/1341/3386 1208/1335/3398 1207/1334/3397 +s 176 +f 1215/1343/3409 1214/1342/3410 1207/1334/3411 1206/1333/3412 +f 1205/1332/3413 1216/1344/3414 1215/1343/3409 1206/1333/3412 +f 1209/1336/3415 1216/1344/3414 1205/1332/3413 1204/1330/3416 +s 175 +f 1212/1340/3406 1213/1341/3407 1198/1324/3417 +s 176 +f 1196/1322/3418 1214/1342/3410 1215/1343/3409 +f 1206/1333/3412 1207/1334/3411 1195/1321/3419 +s 175 +f 1208/1335/3408 1201/1327/3405 1197/1323/3420 +f 1202/1328/3404 1203/1329/3403 1199/1325/3421 +s 176 +f 1193/1319/3422 1204/1330/3416 1205/1332/3413 +f 1194/1320/3423 1216/1344/3414 1209/1336/3415 +s 175 +f 1200/1326/3424 1210/1338/3402 1211/1339/3401 +s off +f 1200/1326/3425 1211/1339/3426 1216/1344/3427 1194/1320/3428 +f 1211/1339/3429 1212/1340/3430 1215/1343/3431 1216/1344/3432 +f 1212/1340/3433 1198/1324/3434 1196/1322/3435 1215/1343/3436 +f 1197/1323/3437 1201/1327/3438 1206/1333/3439 1195/1321/3440 +f 1201/1327/3441 1202/1328/3442 1205/1332/3443 1206/1333/3444 +f 1202/1328/3445 1199/1325/3446 1193/1319/3447 1205/1332/3448 +s 177 +f 1222/1350/3449 1237/1367/3450 1238/1368/3451 1220/1348/3452 +s 178 +f 1218/1346/3453 1233/1363/3454 1234/1364/3455 1224/1352/3456 +f 1227/1355/3457 1228/1357/3458 1217/1345/3459 1223/1351/3460 +s 177 +f 1231/1360/3461 1232/1361/3462 1221/1349/3463 1219/1347/3464 +s 178 +f 1234/1364/3455 1233/1363/3454 1228/1357/3458 1227/1355/3457 +s 179 +f 1235/1365/3465 1234/1364/3466 1227/1355/3467 1226/1354/3468 +f 1225/1353/3469 1236/1366/3470 1235/1365/3465 1226/1354/3468 +f 1237/1367/3471 1236/1366/3470 1225/1353/3469 1232/1361/3472 +s 177 +f 1238/1368/3451 1237/1367/3450 1232/1361/3462 1231/1360/3461 +s 180 +f 1239/1369/3473 1238/1368/3474 1231/1360/3475 1230/1359/3476 +f 1229/1358/3477 1240/1370/3478 1239/1369/3473 1230/1359/3476 +f 1233/1362/3479 1240/1370/3478 1229/1358/3477 1228/1356/3480 +s 179 +f 1236/1366/3470 1237/1367/3471 1222/1350/3481 +s 180 +f 1220/1348/3482 1238/1368/3474 1239/1369/3473 +f 1230/1359/3476 1231/1360/3475 1219/1347/3483 +s 179 +f 1232/1361/3472 1225/1353/3469 1221/1349/3484 +f 1226/1354/3468 1227/1355/3467 1223/1351/3485 +s 180 +f 1217/1345/3486 1228/1356/3480 1229/1358/3477 +f 1218/1346/3487 1240/1370/3478 1233/1362/3479 +s 179 +f 1224/1352/3488 1234/1364/3466 1235/1365/3465 +s off +f 1224/1352/3489 1235/1365/3490 1240/1370/3491 1218/1346/3492 +f 1235/1365/3493 1236/1366/3494 1239/1369/3495 1240/1370/3496 +f 1236/1366/3497 1222/1350/3498 1220/1348/3499 1239/1369/3500 +f 1221/1349/3501 1225/1353/3502 1230/1359/3503 1219/1347/3504 +f 1225/1353/3505 1226/1354/3506 1229/1358/3507 1230/1359/3508 +f 1226/1354/3509 1223/1351/3510 1217/1345/3511 1229/1358/3512 +s 181 +f 1246/1376/3513 1261/1393/3514 1262/1394/3515 1244/1374/3516 +s 182 +f 1242/1372/3517 1257/1389/3518 1258/1390/3519 1248/1378/3520 +f 1251/1381/3521 1252/1383/3522 1241/1371/3523 1247/1377/3524 +s 181 +f 1255/1386/3525 1256/1387/3526 1245/1375/3527 1243/1373/3528 +s 182 +f 1258/1390/3519 1257/1389/3518 1252/1383/3522 1251/1381/3521 +s 183 +f 1259/1391/3529 1258/1390/3530 1251/1381/3531 1250/1380/3532 +f 1249/1379/3533 1260/1392/3534 1259/1391/3529 1250/1380/3532 +f 1261/1393/3535 1260/1392/3534 1249/1379/3533 1256/1387/3536 +s 181 +f 1262/1394/3515 1261/1393/3514 1256/1387/3526 1255/1386/3525 +s 184 +f 1263/1395/3537 1262/1394/3538 1255/1386/3539 1254/1385/3540 +f 1253/1384/3541 1264/1396/3542 1263/1395/3537 1254/1385/3540 +f 1257/1388/3543 1264/1396/3542 1253/1384/3541 1252/1382/3544 +s 183 +f 1260/1392/3534 1261/1393/3535 1246/1376/3545 +s 184 +f 1244/1374/3546 1262/1394/3538 1263/1395/3537 +f 1254/1385/3540 1255/1386/3539 1243/1373/3547 +s 183 +f 1256/1387/3536 1249/1379/3533 1245/1375/3548 +f 1250/1380/3532 1251/1381/3531 1247/1377/3549 +s 184 +f 1241/1371/3550 1252/1382/3544 1253/1384/3541 +f 1242/1372/3551 1264/1396/3542 1257/1388/3543 +s 183 +f 1248/1378/3552 1258/1390/3530 1259/1391/3529 +s off +f 1248/1378/3553 1259/1391/3554 1264/1396/3555 1242/1372/3556 +f 1259/1391/3557 1260/1392/3558 1263/1395/3559 1264/1396/3560 +f 1260/1392/3561 1246/1376/3562 1244/1374/3563 1263/1395/3564 +f 1245/1375/3565 1249/1379/3566 1254/1385/3567 1243/1373/3568 +f 1249/1379/3569 1250/1380/3570 1253/1384/3571 1254/1385/3572 +f 1250/1380/3573 1247/1377/3574 1241/1371/3575 1253/1384/3576 +s 185 +f 1270/1402/3577 1285/1419/3578 1286/1420/3579 1268/1400/3580 +s 186 +f 1266/1398/3581 1281/1415/3582 1282/1416/3583 1272/1404/3584 +f 1275/1407/3585 1276/1409/3586 1265/1397/3587 1271/1403/3588 +s 185 +f 1279/1412/3589 1280/1413/3590 1269/1401/3591 1267/1399/3592 +s 186 +f 1282/1416/3583 1281/1415/3582 1276/1409/3586 1275/1407/3585 +s 187 +f 1283/1417/3593 1282/1416/3594 1275/1407/3595 1274/1406/3596 +f 1273/1405/3597 1284/1418/3598 1283/1417/3593 1274/1406/3596 +f 1285/1419/3599 1284/1418/3598 1273/1405/3597 1280/1413/3600 +s 185 +f 1286/1420/3579 1285/1419/3578 1280/1413/3590 1279/1412/3589 +s 188 +f 1287/1421/3601 1286/1420/3602 1279/1412/3603 1278/1411/3604 +f 1277/1410/3605 1288/1422/3606 1287/1421/3601 1278/1411/3604 +f 1281/1414/3607 1288/1422/3606 1277/1410/3605 1276/1408/3608 +s 187 +f 1284/1418/3598 1285/1419/3599 1270/1402/3609 +s 188 +f 1268/1400/3610 1286/1420/3602 1287/1421/3601 +f 1278/1411/3604 1279/1412/3603 1267/1399/3611 +s 187 +f 1280/1413/3600 1273/1405/3597 1269/1401/3612 +f 1274/1406/3596 1275/1407/3595 1271/1403/3613 +s 188 +f 1265/1397/3614 1276/1408/3608 1277/1410/3605 +f 1266/1398/3615 1288/1422/3606 1281/1414/3607 +s 187 +f 1272/1404/3616 1282/1416/3594 1283/1417/3593 +s off +f 1272/1404/3617 1283/1417/3618 1288/1422/3619 1266/1398/3620 +f 1283/1417/3621 1284/1418/3622 1287/1421/3623 1288/1422/3624 +f 1284/1418/3625 1270/1402/3626 1268/1400/3627 1287/1421/3628 +f 1269/1401/3629 1273/1405/3630 1278/1411/3631 1267/1399/3632 +f 1273/1405/3633 1274/1406/3634 1277/1410/3635 1278/1411/3636 +f 1274/1406/3637 1271/1403/3638 1265/1397/3639 1277/1410/3640 +s 189 +f 1294/1428/3641 1309/1445/3642 1310/1446/3643 1292/1426/3644 +s 190 +f 1290/1424/3645 1305/1441/3646 1306/1442/3647 1296/1430/3648 +f 1299/1433/3649 1300/1435/3650 1289/1423/3651 1295/1429/3652 +s 189 +f 1303/1438/3653 1304/1439/3654 1293/1427/3655 1291/1425/3656 +s 190 +f 1306/1442/3647 1305/1441/3646 1300/1435/3650 1299/1433/3649 +s 191 +f 1307/1443/3657 1306/1442/3658 1299/1433/3659 1298/1432/3660 +f 1297/1431/3661 1308/1444/3662 1307/1443/3657 1298/1432/3660 +f 1309/1445/3663 1308/1444/3662 1297/1431/3661 1304/1439/3664 +s 189 +f 1310/1446/3643 1309/1445/3642 1304/1439/3654 1303/1438/3653 +s 192 +f 1311/1447/3665 1310/1446/3666 1303/1438/3667 1302/1437/3668 +f 1301/1436/3669 1312/1448/3670 1311/1447/3665 1302/1437/3668 +f 1305/1440/3671 1312/1448/3670 1301/1436/3669 1300/1434/3672 +s 191 +f 1308/1444/3662 1309/1445/3663 1294/1428/3673 +s 192 +f 1292/1426/3674 1310/1446/3666 1311/1447/3665 +f 1302/1437/3668 1303/1438/3667 1291/1425/3675 +s 191 +f 1304/1439/3664 1297/1431/3661 1293/1427/3676 +f 1298/1432/3660 1299/1433/3659 1295/1429/3677 +s 192 +f 1289/1423/3678 1300/1434/3672 1301/1436/3669 +f 1290/1424/3679 1312/1448/3670 1305/1440/3671 +s 191 +f 1296/1430/3680 1306/1442/3658 1307/1443/3657 +s off +f 1296/1430/3681 1307/1443/3682 1312/1448/3683 1290/1424/3684 +f 1307/1443/3685 1308/1444/3686 1311/1447/3687 1312/1448/3688 +f 1308/1444/3689 1294/1428/3690 1292/1426/3691 1311/1447/3692 +f 1293/1427/3693 1297/1431/3694 1302/1437/3695 1291/1425/3696 +f 1297/1431/3697 1298/1432/3698 1301/1436/3699 1302/1437/3700 +f 1298/1432/3701 1295/1429/3702 1289/1423/3703 1301/1436/3704 +s 193 +f 1318/1454/3705 1333/1471/3706 1334/1472/3707 1316/1452/3708 +s 194 +f 1314/1450/3709 1329/1467/3710 1330/1468/3711 1320/1456/3712 +f 1323/1459/3713 1324/1461/3714 1313/1449/3715 1319/1455/3716 +s 193 +f 1327/1464/3717 1328/1465/3718 1317/1453/3719 1315/1451/3720 +s 194 +f 1330/1468/3711 1329/1467/3710 1324/1461/3714 1323/1459/3713 +s 195 +f 1331/1469/3721 1330/1468/3722 1323/1459/3723 1322/1458/3724 +f 1321/1457/3725 1332/1470/3726 1331/1469/3721 1322/1458/3724 +f 1333/1471/3727 1332/1470/3726 1321/1457/3725 1328/1465/3728 +s 193 +f 1334/1472/3707 1333/1471/3706 1328/1465/3718 1327/1464/3717 +s 196 +f 1335/1473/3729 1334/1472/3730 1327/1464/3731 1326/1463/3732 +f 1325/1462/3733 1336/1474/3734 1335/1473/3729 1326/1463/3732 +f 1329/1466/3735 1336/1474/3734 1325/1462/3733 1324/1460/3736 +s 195 +f 1332/1470/3726 1333/1471/3727 1318/1454/3737 +s 196 +f 1316/1452/3738 1334/1472/3730 1335/1473/3729 +f 1326/1463/3732 1327/1464/3731 1315/1451/3739 +s 195 +f 1328/1465/3728 1321/1457/3725 1317/1453/3740 +f 1322/1458/3724 1323/1459/3723 1319/1455/3741 +s 196 +f 1313/1449/3742 1324/1460/3736 1325/1462/3733 +f 1314/1450/3743 1336/1474/3734 1329/1466/3735 +s 195 +f 1320/1456/3744 1330/1468/3722 1331/1469/3721 +s off +f 1320/1456/3745 1331/1469/3746 1336/1474/3747 1314/1450/3748 +f 1331/1469/3749 1332/1470/3750 1335/1473/3751 1336/1474/3752 +f 1332/1470/3753 1318/1454/3754 1316/1452/3755 1335/1473/3756 +f 1317/1453/3757 1321/1457/3758 1326/1463/3759 1315/1451/3760 +f 1321/1457/3761 1322/1458/3762 1325/1462/3763 1326/1463/3764 +f 1322/1458/3765 1319/1455/3766 1313/1449/3767 1325/1462/3768 +s 197 +f 1342/1480/3769 1357/1497/3770 1358/1498/3771 1340/1478/3772 +s 198 +f 1338/1476/3773 1353/1493/3774 1354/1494/3775 1344/1482/3776 +f 1347/1485/3777 1348/1487/3778 1337/1475/3779 1343/1481/3780 +s 197 +f 1351/1490/3781 1352/1491/3782 1341/1479/3783 1339/1477/3784 +s 198 +f 1354/1494/3775 1353/1493/3774 1348/1487/3778 1347/1485/3777 +s 199 +f 1355/1495/3785 1354/1494/3786 1347/1485/3787 1346/1484/3788 +f 1345/1483/3789 1356/1496/3790 1355/1495/3785 1346/1484/3788 +f 1357/1497/3791 1356/1496/3790 1345/1483/3789 1352/1491/3792 +s 197 +f 1358/1498/3771 1357/1497/3770 1352/1491/3782 1351/1490/3781 +s 200 +f 1359/1499/3793 1358/1498/3794 1351/1490/3795 1350/1489/3796 +f 1349/1488/3797 1360/1500/3798 1359/1499/3793 1350/1489/3796 +f 1353/1492/3799 1360/1500/3798 1349/1488/3797 1348/1486/3800 +s 199 +f 1356/1496/3790 1357/1497/3791 1342/1480/3801 +s 200 +f 1340/1478/3802 1358/1498/3794 1359/1499/3793 +f 1350/1489/3796 1351/1490/3795 1339/1477/3803 +s 199 +f 1352/1491/3792 1345/1483/3789 1341/1479/3804 +f 1346/1484/3788 1347/1485/3787 1343/1481/3805 +s 200 +f 1337/1475/3806 1348/1486/3800 1349/1488/3797 +f 1338/1476/3807 1360/1500/3798 1353/1492/3799 +s 199 +f 1344/1482/3808 1354/1494/3786 1355/1495/3785 +s off +f 1344/1482/3809 1355/1495/3810 1360/1500/3811 1338/1476/3812 +f 1355/1495/3813 1356/1496/3814 1359/1499/3815 1360/1500/3816 +f 1356/1496/3817 1342/1480/3818 1340/1478/3819 1359/1499/3820 +f 1341/1479/3821 1345/1483/3822 1350/1489/3823 1339/1477/3824 +f 1345/1483/3825 1346/1484/3826 1349/1488/3827 1350/1489/3828 +f 1346/1484/3829 1343/1481/3830 1337/1475/3831 1349/1488/3832 +s 201 +f 1366/1506/3833 1381/1523/3834 1382/1524/3835 1364/1504/3836 +s 202 +f 1362/1502/3837 1377/1519/3838 1378/1520/3839 1368/1508/3840 +f 1371/1511/3841 1372/1513/3842 1361/1501/3843 1367/1507/3844 +s 201 +f 1375/1516/3845 1376/1517/3846 1365/1505/3847 1363/1503/3848 +s 202 +f 1378/1520/3839 1377/1519/3838 1372/1513/3842 1371/1511/3841 +s 203 +f 1379/1521/3849 1378/1520/3850 1371/1511/3851 1370/1510/3852 +f 1369/1509/3853 1380/1522/3854 1379/1521/3849 1370/1510/3852 +f 1381/1523/3855 1380/1522/3854 1369/1509/3853 1376/1517/3856 +s 201 +f 1382/1524/3835 1381/1523/3834 1376/1517/3846 1375/1516/3845 +s 204 +f 1383/1525/3857 1382/1524/3858 1375/1516/3859 1374/1515/3860 +f 1373/1514/3861 1384/1526/3862 1383/1525/3857 1374/1515/3860 +f 1377/1518/3863 1384/1526/3862 1373/1514/3861 1372/1512/3864 +s 203 +f 1380/1522/3854 1381/1523/3855 1366/1506/3865 +s 204 +f 1364/1504/3866 1382/1524/3858 1383/1525/3857 +f 1374/1515/3860 1375/1516/3859 1363/1503/3867 +s 203 +f 1376/1517/3856 1369/1509/3853 1365/1505/3868 +f 1370/1510/3852 1371/1511/3851 1367/1507/3869 +s 204 +f 1361/1501/3870 1372/1512/3864 1373/1514/3861 +f 1362/1502/3871 1384/1526/3862 1377/1518/3863 +s 203 +f 1368/1508/3872 1378/1520/3850 1379/1521/3849 +s off +f 1368/1508/3873 1379/1521/3874 1384/1526/3875 1362/1502/3876 +f 1379/1521/3877 1380/1522/3878 1383/1525/3879 1384/1526/3880 +f 1380/1522/3881 1366/1506/3882 1364/1504/3883 1383/1525/3884 +f 1365/1505/3885 1369/1509/3886 1374/1515/3887 1363/1503/3888 +f 1369/1509/3889 1370/1510/3890 1373/1514/3891 1374/1515/3892 +f 1370/1510/3893 1367/1507/3894 1361/1501/3895 1373/1514/3896 +s 205 +f 1390/1532/3897 1405/1549/3898 1406/1550/3899 1388/1530/3900 +s 206 +f 1386/1528/3901 1401/1545/3902 1402/1546/3903 1392/1534/3904 +f 1395/1537/3905 1396/1539/3906 1385/1527/3907 1391/1533/3908 +s 205 +f 1399/1542/3909 1400/1543/3910 1389/1531/3911 1387/1529/3912 +s 206 +f 1402/1546/3903 1401/1545/3902 1396/1539/3906 1395/1537/3905 +s 207 +f 1403/1547/3913 1402/1546/3914 1395/1537/3915 1394/1536/3916 +f 1393/1535/3917 1404/1548/3918 1403/1547/3913 1394/1536/3916 +f 1405/1549/3919 1404/1548/3918 1393/1535/3917 1400/1543/3920 +s 205 +f 1406/1550/3899 1405/1549/3898 1400/1543/3910 1399/1542/3909 +s 208 +f 1407/1551/3921 1406/1550/3922 1399/1542/3923 1398/1541/3924 +f 1397/1540/3925 1408/1552/3926 1407/1551/3921 1398/1541/3924 +f 1401/1544/3927 1408/1552/3926 1397/1540/3925 1396/1538/3928 +s 207 +f 1404/1548/3918 1405/1549/3919 1390/1532/3929 +s 208 +f 1388/1530/3930 1406/1550/3922 1407/1551/3921 +f 1398/1541/3924 1399/1542/3923 1387/1529/3931 +s 207 +f 1400/1543/3920 1393/1535/3917 1389/1531/3932 +f 1394/1536/3916 1395/1537/3915 1391/1533/3933 +s 208 +f 1385/1527/3934 1396/1538/3928 1397/1540/3925 +f 1386/1528/3935 1408/1552/3926 1401/1544/3927 +s 207 +f 1392/1534/3936 1402/1546/3914 1403/1547/3913 +s off +f 1392/1534/3937 1403/1547/3938 1408/1552/3939 1386/1528/3940 +f 1403/1547/3941 1404/1548/3942 1407/1551/3943 1408/1552/3944 +f 1404/1548/3945 1390/1532/3946 1388/1530/3947 1407/1551/3948 +f 1389/1531/3949 1393/1535/3950 1398/1541/3951 1387/1529/3952 +f 1393/1535/3953 1394/1536/3954 1397/1540/3955 1398/1541/3956 +f 1394/1536/3957 1391/1533/3958 1385/1527/3959 1397/1540/3960 +s 209 +f 1414/1558/3961 1429/1575/3962 1430/1576/3963 1412/1556/3964 +s 210 +f 1410/1554/3965 1425/1571/3966 1426/1572/3967 1416/1560/3968 +f 1419/1563/3969 1420/1565/3970 1409/1553/3971 1415/1559/3972 +s 209 +f 1423/1568/3973 1424/1569/3974 1413/1557/3975 1411/1555/3976 +s 210 +f 1426/1572/3967 1425/1571/3966 1420/1565/3970 1419/1563/3969 +s 211 +f 1427/1573/3977 1426/1572/3978 1419/1563/3979 1418/1562/3980 +f 1417/1561/3981 1428/1574/3982 1427/1573/3977 1418/1562/3980 +f 1429/1575/3983 1428/1574/3982 1417/1561/3981 1424/1569/3984 +s 209 +f 1430/1576/3963 1429/1575/3962 1424/1569/3974 1423/1568/3973 +s 212 +f 1431/1577/3985 1430/1576/3986 1423/1568/3987 1422/1567/3988 +f 1421/1566/3989 1432/1578/3990 1431/1577/3985 1422/1567/3988 +f 1425/1570/3991 1432/1578/3990 1421/1566/3989 1420/1564/3992 +s 211 +f 1428/1574/3982 1429/1575/3983 1414/1558/3993 +s 212 +f 1412/1556/3994 1430/1576/3986 1431/1577/3985 +f 1422/1567/3988 1423/1568/3987 1411/1555/3995 +s 211 +f 1424/1569/3984 1417/1561/3981 1413/1557/3996 +f 1418/1562/3980 1419/1563/3979 1415/1559/3997 +s 212 +f 1409/1553/3998 1420/1564/3992 1421/1566/3989 +f 1410/1554/3999 1432/1578/3990 1425/1570/3991 +s 211 +f 1416/1560/4000 1426/1572/3978 1427/1573/3977 +s off +f 1416/1560/4001 1427/1573/4002 1432/1578/4003 1410/1554/4004 +f 1427/1573/4005 1428/1574/4006 1431/1577/4007 1432/1578/4008 +f 1428/1574/4009 1414/1558/4010 1412/1556/4011 1431/1577/4012 +f 1413/1557/4013 1417/1561/4014 1422/1567/4015 1411/1555/4016 +f 1417/1561/4017 1418/1562/4018 1421/1566/4019 1422/1567/4020 +f 1418/1562/4021 1415/1559/4022 1409/1553/4023 1421/1566/4024 +s 213 +f 1438/1584/4025 1453/1601/4026 1454/1602/4027 1436/1582/4028 +s 214 +f 1434/1580/4029 1449/1597/4030 1450/1598/4031 1440/1586/4032 +f 1443/1589/4033 1444/1591/4034 1433/1579/4035 1439/1585/4036 +s 213 +f 1447/1594/4037 1448/1595/4038 1437/1583/4039 1435/1581/4040 +s 214 +f 1450/1598/4031 1449/1597/4030 1444/1591/4034 1443/1589/4033 +s 215 +f 1451/1599/4041 1450/1598/4042 1443/1589/4043 1442/1588/4044 +f 1441/1587/4045 1452/1600/4046 1451/1599/4041 1442/1588/4044 +f 1453/1601/4047 1452/1600/4046 1441/1587/4045 1448/1595/4048 +s 213 +f 1454/1602/4027 1453/1601/4026 1448/1595/4038 1447/1594/4037 +s 216 +f 1455/1603/4049 1454/1602/4050 1447/1594/4051 1446/1593/4052 +f 1445/1592/4053 1456/1604/4054 1455/1603/4049 1446/1593/4052 +f 1449/1596/4055 1456/1604/4054 1445/1592/4053 1444/1590/4056 +s 215 +f 1452/1600/4046 1453/1601/4047 1438/1584/4057 +s 216 +f 1436/1582/4058 1454/1602/4050 1455/1603/4049 +f 1446/1593/4052 1447/1594/4051 1435/1581/4059 +s 215 +f 1448/1595/4048 1441/1587/4045 1437/1583/4060 +f 1442/1588/4044 1443/1589/4043 1439/1585/4061 +s 216 +f 1433/1579/4062 1444/1590/4056 1445/1592/4053 +f 1434/1580/4063 1456/1604/4054 1449/1596/4055 +s 215 +f 1440/1586/4064 1450/1598/4042 1451/1599/4041 +s off +f 1440/1586/4065 1451/1599/4066 1456/1604/4067 1434/1580/4068 +f 1451/1599/4069 1452/1600/4070 1455/1603/4071 1456/1604/4072 +f 1452/1600/4073 1438/1584/4074 1436/1582/4075 1455/1603/4076 +f 1437/1583/4077 1441/1587/4078 1446/1593/4079 1435/1581/4080 +f 1441/1587/4081 1442/1588/4082 1445/1592/4083 1446/1593/4084 +f 1442/1588/4085 1439/1585/4086 1433/1579/4087 1445/1592/4088 +s 217 +f 1462/1610/4089 1477/1627/4090 1478/1628/4091 1460/1608/4092 +s 218 +f 1458/1606/4093 1473/1623/4094 1474/1624/4095 1464/1612/4096 +f 1467/1615/4097 1468/1617/4098 1457/1605/4099 1463/1611/4100 +s 217 +f 1471/1620/4101 1472/1621/4102 1461/1609/4103 1459/1607/4104 +s 218 +f 1474/1624/4095 1473/1623/4094 1468/1617/4098 1467/1615/4097 +s 219 +f 1475/1625/4105 1474/1624/4106 1467/1615/4107 1466/1614/4108 +f 1465/1613/4109 1476/1626/4110 1475/1625/4105 1466/1614/4108 +f 1477/1627/4111 1476/1626/4110 1465/1613/4109 1472/1621/4112 +s 217 +f 1478/1628/4091 1477/1627/4090 1472/1621/4102 1471/1620/4101 +s 220 +f 1479/1629/4113 1478/1628/4114 1471/1620/4115 1470/1619/4116 +f 1469/1618/4117 1480/1630/4118 1479/1629/4113 1470/1619/4116 +f 1473/1622/4119 1480/1630/4118 1469/1618/4117 1468/1616/4120 +s 219 +f 1476/1626/4110 1477/1627/4111 1462/1610/4121 +s 220 +f 1460/1608/4122 1478/1628/4114 1479/1629/4113 +f 1470/1619/4116 1471/1620/4115 1459/1607/4123 +s 219 +f 1472/1621/4112 1465/1613/4109 1461/1609/4124 +f 1466/1614/4108 1467/1615/4107 1463/1611/4125 +s 220 +f 1457/1605/4126 1468/1616/4120 1469/1618/4117 +f 1458/1606/4127 1480/1630/4118 1473/1622/4119 +s 219 +f 1464/1612/4128 1474/1624/4106 1475/1625/4105 +s off +f 1464/1612/4129 1475/1625/4130 1480/1630/4131 1458/1606/4132 +f 1475/1625/4133 1476/1626/4134 1479/1629/4135 1480/1630/4136 +f 1476/1626/4137 1462/1610/4138 1460/1608/4139 1479/1629/4140 +f 1461/1609/4141 1465/1613/4142 1470/1619/4143 1459/1607/4144 +f 1465/1613/4145 1466/1614/4146 1469/1618/4147 1470/1619/4148 +f 1466/1614/4149 1463/1611/4150 1457/1605/4151 1469/1618/4152 +s 221 +f 1486/1636/4153 1501/1653/4154 1502/1654/4155 1484/1634/4156 +s 222 +f 1482/1632/4157 1497/1649/4158 1498/1650/4159 1488/1638/4160 +f 1491/1641/4161 1492/1643/4162 1481/1631/4163 1487/1637/4164 +s 221 +f 1495/1646/4165 1496/1647/4166 1485/1635/4167 1483/1633/4168 +s 222 +f 1498/1650/4159 1497/1649/4158 1492/1643/4162 1491/1641/4161 +s 223 +f 1499/1651/4169 1498/1650/4170 1491/1641/4171 1490/1640/4172 +f 1489/1639/4173 1500/1652/4174 1499/1651/4169 1490/1640/4172 +f 1501/1653/4175 1500/1652/4174 1489/1639/4173 1496/1647/4176 +s 221 +f 1502/1654/4155 1501/1653/4154 1496/1647/4166 1495/1646/4165 +s 224 +f 1503/1655/4177 1502/1654/4178 1495/1646/4179 1494/1645/4180 +f 1493/1644/4181 1504/1656/4182 1503/1655/4177 1494/1645/4180 +f 1497/1648/4183 1504/1656/4182 1493/1644/4181 1492/1642/4184 +s 223 +f 1500/1652/4174 1501/1653/4175 1486/1636/4185 +s 224 +f 1484/1634/4186 1502/1654/4178 1503/1655/4177 +f 1494/1645/4180 1495/1646/4179 1483/1633/4187 +s 223 +f 1496/1647/4176 1489/1639/4173 1485/1635/4188 +f 1490/1640/4172 1491/1641/4171 1487/1637/4189 +s 224 +f 1481/1631/4190 1492/1642/4184 1493/1644/4181 +f 1482/1632/4191 1504/1656/4182 1497/1648/4183 +s 223 +f 1488/1638/4192 1498/1650/4170 1499/1651/4169 +s off +f 1488/1638/4193 1499/1651/4194 1504/1656/4195 1482/1632/4196 +f 1499/1651/4197 1500/1652/4198 1503/1655/4199 1504/1656/4200 +f 1500/1652/4201 1486/1636/4202 1484/1634/4203 1503/1655/4204 +f 1485/1635/4205 1489/1639/4206 1494/1645/4207 1483/1633/4208 +f 1489/1639/4209 1490/1640/4210 1493/1644/4211 1494/1645/4212 +f 1490/1640/4213 1487/1637/4214 1481/1631/4215 1493/1644/4216 +s 225 +f 1510/1662/4217 1525/1679/4218 1526/1680/4219 1508/1660/4220 +s 226 +f 1506/1658/4221 1521/1675/4222 1522/1676/4223 1512/1664/4224 +f 1515/1667/4225 1516/1669/4226 1505/1657/4227 1511/1663/4228 +s 225 +f 1519/1672/4229 1520/1673/4230 1509/1661/4231 1507/1659/4232 +s 226 +f 1522/1676/4223 1521/1675/4222 1516/1669/4226 1515/1667/4225 +s 227 +f 1523/1677/4233 1522/1676/4234 1515/1667/4235 1514/1666/4236 +f 1513/1665/4237 1524/1678/4238 1523/1677/4233 1514/1666/4236 +f 1525/1679/4239 1524/1678/4238 1513/1665/4237 1520/1673/4240 +s 225 +f 1526/1680/4219 1525/1679/4218 1520/1673/4230 1519/1672/4229 +s 228 +f 1527/1681/4241 1526/1680/4242 1519/1672/4243 1518/1671/4244 +f 1517/1670/4245 1528/1682/4246 1527/1681/4241 1518/1671/4244 +f 1521/1674/4247 1528/1682/4246 1517/1670/4245 1516/1668/4248 +s 227 +f 1524/1678/4238 1525/1679/4239 1510/1662/4249 +s 228 +f 1508/1660/4250 1526/1680/4242 1527/1681/4241 +f 1518/1671/4244 1519/1672/4243 1507/1659/4251 +s 227 +f 1520/1673/4240 1513/1665/4237 1509/1661/4252 +f 1514/1666/4236 1515/1667/4235 1511/1663/4253 +s 228 +f 1505/1657/4254 1516/1668/4248 1517/1670/4245 +f 1506/1658/4255 1528/1682/4246 1521/1674/4247 +s 227 +f 1512/1664/4256 1522/1676/4234 1523/1677/4233 +s off +f 1512/1664/4257 1523/1677/4258 1528/1682/4259 1506/1658/4260 +f 1523/1677/4261 1524/1678/4262 1527/1681/4263 1528/1682/4264 +f 1524/1678/4265 1510/1662/4266 1508/1660/4267 1527/1681/4268 +f 1509/1661/4269 1513/1665/4270 1518/1671/4271 1507/1659/4272 +f 1513/1665/4273 1514/1666/4274 1517/1670/4275 1518/1671/4276 +f 1514/1666/4277 1511/1663/4278 1505/1657/4279 1517/1670/4280 +s 229 +f 1534/1688/4281 1549/1705/4282 1550/1706/4283 1532/1686/4284 +s 230 +f 1530/1684/4285 1545/1701/4286 1546/1702/4287 1536/1690/4288 +f 1539/1693/4289 1540/1695/4290 1529/1683/4291 1535/1689/4292 +s 229 +f 1543/1698/4293 1544/1699/4294 1533/1687/4295 1531/1685/4296 +s 230 +f 1546/1702/4287 1545/1701/4286 1540/1695/4290 1539/1693/4289 +s 231 +f 1547/1703/4297 1546/1702/4298 1539/1693/4299 1538/1692/4300 +f 1537/1691/4301 1548/1704/4302 1547/1703/4297 1538/1692/4300 +f 1549/1705/4303 1548/1704/4302 1537/1691/4301 1544/1699/4304 +s 229 +f 1550/1706/4283 1549/1705/4282 1544/1699/4294 1543/1698/4293 +s 232 +f 1551/1707/4305 1550/1706/4306 1543/1698/4307 1542/1697/4308 +f 1541/1696/4309 1552/1708/4310 1551/1707/4305 1542/1697/4308 +f 1545/1700/4311 1552/1708/4310 1541/1696/4309 1540/1694/4312 +s 231 +f 1548/1704/4302 1549/1705/4303 1534/1688/4313 +s 232 +f 1532/1686/4314 1550/1706/4306 1551/1707/4305 +f 1542/1697/4308 1543/1698/4307 1531/1685/4315 +s 231 +f 1544/1699/4304 1537/1691/4301 1533/1687/4316 +f 1538/1692/4300 1539/1693/4299 1535/1689/4317 +s 232 +f 1529/1683/4318 1540/1694/4312 1541/1696/4309 +f 1530/1684/4319 1552/1708/4310 1545/1700/4311 +s 231 +f 1536/1690/4320 1546/1702/4298 1547/1703/4297 +s off +f 1536/1690/4321 1547/1703/4322 1552/1708/4323 1530/1684/4324 +f 1547/1703/4325 1548/1704/4326 1551/1707/4327 1552/1708/4328 +f 1548/1704/4329 1534/1688/4330 1532/1686/4331 1551/1707/4332 +f 1533/1687/4333 1537/1691/4334 1542/1697/4335 1531/1685/4336 +f 1537/1691/4337 1538/1692/4338 1541/1696/4339 1542/1697/4340 +f 1538/1692/4341 1535/1689/4342 1529/1683/4343 1541/1696/4344 +s 233 +f 1558/1714/4345 1573/1731/4346 1574/1732/4347 1556/1712/4348 +s 234 +f 1554/1710/4349 1569/1727/4350 1570/1728/4351 1560/1716/4352 +f 1563/1719/4353 1564/1721/4354 1553/1709/4355 1559/1715/4356 +s 233 +f 1567/1724/4357 1568/1725/4358 1557/1713/4359 1555/1711/4360 +s 234 +f 1570/1728/4351 1569/1727/4350 1564/1721/4354 1563/1719/4353 +s 235 +f 1571/1729/4361 1570/1728/4362 1563/1719/4363 1562/1718/4364 +f 1561/1717/4365 1572/1730/4366 1571/1729/4361 1562/1718/4364 +f 1573/1731/4367 1572/1730/4366 1561/1717/4365 1568/1725/4368 +s 233 +f 1574/1732/4347 1573/1731/4346 1568/1725/4358 1567/1724/4357 +s 236 +f 1575/1733/4369 1574/1732/4370 1567/1724/4371 1566/1723/4372 +f 1565/1722/4373 1576/1734/4374 1575/1733/4369 1566/1723/4372 +f 1569/1726/4375 1576/1734/4374 1565/1722/4373 1564/1720/4376 +s 235 +f 1572/1730/4366 1573/1731/4367 1558/1714/4377 +s 236 +f 1556/1712/4378 1574/1732/4370 1575/1733/4369 +f 1566/1723/4372 1567/1724/4371 1555/1711/4379 +s 235 +f 1568/1725/4368 1561/1717/4365 1557/1713/4380 +f 1562/1718/4364 1563/1719/4363 1559/1715/4381 +s 236 +f 1553/1709/4382 1564/1720/4376 1565/1722/4373 +f 1554/1710/4383 1576/1734/4374 1569/1726/4375 +s 235 +f 1560/1716/4384 1570/1728/4362 1571/1729/4361 +s off +f 1560/1716/4385 1571/1729/4386 1576/1734/4387 1554/1710/4388 +f 1571/1729/4389 1572/1730/4390 1575/1733/4391 1576/1734/4392 +f 1572/1730/4393 1558/1714/4394 1556/1712/4395 1575/1733/4396 +f 1557/1713/4397 1561/1717/4398 1566/1723/4399 1555/1711/4400 +f 1561/1717/4401 1562/1718/4402 1565/1722/4403 1566/1723/4404 +f 1562/1718/4405 1559/1715/4406 1553/1709/4407 1565/1722/4408 +s 237 +f 1582/1740/4409 1597/1757/4410 1598/1758/4411 1580/1738/4412 +s 238 +f 1578/1736/4413 1593/1753/4414 1594/1754/4415 1584/1742/4416 +f 1587/1745/4417 1588/1747/4418 1577/1735/4419 1583/1741/4420 +s 237 +f 1591/1750/4421 1592/1751/4422 1581/1739/4423 1579/1737/4424 +s 238 +f 1594/1754/4415 1593/1753/4414 1588/1747/4418 1587/1745/4417 +s 239 +f 1595/1755/4425 1594/1754/4426 1587/1745/4427 1586/1744/4428 +f 1585/1743/4429 1596/1756/4430 1595/1755/4425 1586/1744/4428 +f 1597/1757/4431 1596/1756/4430 1585/1743/4429 1592/1751/4432 +s 237 +f 1598/1758/4411 1597/1757/4410 1592/1751/4422 1591/1750/4421 +s 240 +f 1599/1759/4433 1598/1758/4434 1591/1750/4435 1590/1749/4436 +f 1589/1748/4437 1600/1760/4438 1599/1759/4433 1590/1749/4436 +f 1593/1752/4439 1600/1760/4438 1589/1748/4437 1588/1746/4440 +s 239 +f 1596/1756/4430 1597/1757/4431 1582/1740/4441 +s 240 +f 1580/1738/4442 1598/1758/4434 1599/1759/4433 +f 1590/1749/4436 1591/1750/4435 1579/1737/4443 +s 239 +f 1592/1751/4432 1585/1743/4429 1581/1739/4444 +f 1586/1744/4428 1587/1745/4427 1583/1741/4445 +s 240 +f 1577/1735/4446 1588/1746/4440 1589/1748/4437 +f 1578/1736/4447 1600/1760/4438 1593/1752/4439 +s 239 +f 1584/1742/4448 1594/1754/4426 1595/1755/4425 +s off +f 1584/1742/4449 1595/1755/4450 1600/1760/4451 1578/1736/4452 +f 1595/1755/4453 1596/1756/4454 1599/1759/4455 1600/1760/4456 +f 1596/1756/4457 1582/1740/4458 1580/1738/4459 1599/1759/4460 +f 1581/1739/4461 1585/1743/4462 1590/1749/4463 1579/1737/4464 +f 1585/1743/4465 1586/1744/4466 1589/1748/4467 1590/1749/4468 +f 1586/1744/4469 1583/1741/4470 1577/1735/4471 1589/1748/4472 +s 241 +f 1606/1766/4473 1621/1783/4474 1622/1784/4475 1604/1764/4476 +s 242 +f 1602/1762/4477 1617/1779/4478 1618/1780/4479 1608/1768/4480 +f 1611/1771/4481 1612/1773/4482 1601/1761/4483 1607/1767/4484 +s 241 +f 1615/1776/4485 1616/1777/4486 1605/1765/4487 1603/1763/4488 +s 242 +f 1618/1780/4479 1617/1779/4478 1612/1773/4482 1611/1771/4481 +s 243 +f 1619/1781/4489 1618/1780/4490 1611/1771/4491 1610/1770/4492 +f 1609/1769/4493 1620/1782/4494 1619/1781/4489 1610/1770/4492 +f 1621/1783/4495 1620/1782/4494 1609/1769/4493 1616/1777/4496 +s 241 +f 1622/1784/4475 1621/1783/4474 1616/1777/4486 1615/1776/4485 +s 244 +f 1623/1785/4497 1622/1784/4498 1615/1776/4499 1614/1775/4500 +f 1613/1774/4501 1624/1786/4502 1623/1785/4497 1614/1775/4500 +f 1617/1778/4503 1624/1786/4502 1613/1774/4501 1612/1772/4504 +s 243 +f 1620/1782/4494 1621/1783/4495 1606/1766/4505 +s 244 +f 1604/1764/4506 1622/1784/4498 1623/1785/4497 +f 1614/1775/4500 1615/1776/4499 1603/1763/4507 +s 243 +f 1616/1777/4496 1609/1769/4493 1605/1765/4508 +f 1610/1770/4492 1611/1771/4491 1607/1767/4509 +s 244 +f 1601/1761/4510 1612/1772/4504 1613/1774/4501 +f 1602/1762/4511 1624/1786/4502 1617/1778/4503 +s 243 +f 1608/1768/4512 1618/1780/4490 1619/1781/4489 +s off +f 1608/1768/4513 1619/1781/4514 1624/1786/4515 1602/1762/4516 +f 1619/1781/4517 1620/1782/4518 1623/1785/4519 1624/1786/4520 +f 1620/1782/4521 1606/1766/4522 1604/1764/4523 1623/1785/4524 +f 1605/1765/4525 1609/1769/4526 1614/1775/4527 1603/1763/4528 +f 1609/1769/4529 1610/1770/4530 1613/1774/4531 1614/1775/4532 +f 1610/1770/4533 1607/1767/4534 1601/1761/4535 1613/1774/4536 +s 245 +f 1630/1792/4537 1645/1809/4538 1646/1810/4539 1628/1790/4540 +s 246 +f 1626/1788/4541 1641/1805/4542 1642/1806/4543 1632/1794/4544 +f 1635/1797/4545 1636/1799/4546 1625/1787/4547 1631/1793/4548 +s 245 +f 1639/1802/4549 1640/1803/4550 1629/1791/4551 1627/1789/4552 +s 246 +f 1642/1806/4543 1641/1805/4542 1636/1799/4546 1635/1797/4545 +s 247 +f 1643/1807/4553 1642/1806/4554 1635/1797/4555 1634/1796/4556 +f 1633/1795/4557 1644/1808/4558 1643/1807/4553 1634/1796/4556 +f 1645/1809/4559 1644/1808/4558 1633/1795/4557 1640/1803/4560 +s 245 +f 1646/1810/4539 1645/1809/4538 1640/1803/4550 1639/1802/4549 +s 248 +f 1647/1811/4561 1646/1810/4562 1639/1802/4563 1638/1801/4564 +f 1637/1800/4565 1648/1812/4566 1647/1811/4561 1638/1801/4564 +f 1641/1804/4567 1648/1812/4566 1637/1800/4565 1636/1798/4568 +s 247 +f 1644/1808/4558 1645/1809/4559 1630/1792/4569 +s 248 +f 1628/1790/4570 1646/1810/4562 1647/1811/4561 +f 1638/1801/4564 1639/1802/4563 1627/1789/4571 +s 247 +f 1640/1803/4560 1633/1795/4557 1629/1791/4572 +f 1634/1796/4556 1635/1797/4555 1631/1793/4573 +s 248 +f 1625/1787/4574 1636/1798/4568 1637/1800/4565 +f 1626/1788/4575 1648/1812/4566 1641/1804/4567 +s 247 +f 1632/1794/4576 1642/1806/4554 1643/1807/4553 +s off +f 1632/1794/4577 1643/1807/4578 1648/1812/4579 1626/1788/4580 +f 1643/1807/4581 1644/1808/4582 1647/1811/4583 1648/1812/4584 +f 1644/1808/4585 1630/1792/4586 1628/1790/4587 1647/1811/4588 +f 1629/1791/4589 1633/1795/4590 1638/1801/4591 1627/1789/4592 +f 1633/1795/4593 1634/1796/4594 1637/1800/4595 1638/1801/4596 +f 1634/1796/4597 1631/1793/4598 1625/1787/4599 1637/1800/4600 +s 249 +f 1654/1818/4601 1669/1835/4602 1670/1836/4603 1652/1816/4604 +s 250 +f 1650/1814/4605 1665/1831/4606 1666/1832/4607 1656/1820/4608 +f 1659/1823/4609 1660/1825/4610 1649/1813/4611 1655/1819/4612 +s 249 +f 1663/1828/4613 1664/1829/4614 1653/1817/4615 1651/1815/4616 +s 250 +f 1666/1832/4607 1665/1831/4606 1660/1825/4610 1659/1823/4609 +s 251 +f 1667/1833/4617 1666/1832/4618 1659/1823/4619 1658/1822/4620 +f 1657/1821/4621 1668/1834/4622 1667/1833/4617 1658/1822/4620 +f 1669/1835/4623 1668/1834/4622 1657/1821/4621 1664/1829/4624 +s 249 +f 1670/1836/4603 1669/1835/4602 1664/1829/4614 1663/1828/4613 +s 252 +f 1671/1837/4625 1670/1836/4626 1663/1828/4627 1662/1827/4628 +f 1661/1826/4629 1672/1838/4630 1671/1837/4625 1662/1827/4628 +f 1665/1830/4631 1672/1838/4630 1661/1826/4629 1660/1824/4632 +s 251 +f 1668/1834/4622 1669/1835/4623 1654/1818/4633 +s 252 +f 1652/1816/4634 1670/1836/4626 1671/1837/4625 +f 1662/1827/4628 1663/1828/4627 1651/1815/4635 +s 251 +f 1664/1829/4624 1657/1821/4621 1653/1817/4636 +f 1658/1822/4620 1659/1823/4619 1655/1819/4637 +s 252 +f 1649/1813/4638 1660/1824/4632 1661/1826/4629 +f 1650/1814/4639 1672/1838/4630 1665/1830/4631 +s 251 +f 1656/1820/4640 1666/1832/4618 1667/1833/4617 +s off +f 1656/1820/4641 1667/1833/4642 1672/1838/4643 1650/1814/4644 +f 1667/1833/4645 1668/1834/4646 1671/1837/4647 1672/1838/4648 +f 1668/1834/4649 1654/1818/4650 1652/1816/4651 1671/1837/4652 +f 1653/1817/4653 1657/1821/4654 1662/1827/4655 1651/1815/4656 +f 1657/1821/4657 1658/1822/4658 1661/1826/4659 1662/1827/4660 +f 1658/1822/4661 1655/1819/4662 1649/1813/4663 1661/1826/4664 +s 253 +f 1678/1844/4665 1693/1861/4666 1694/1862/4667 1676/1842/4668 +s 254 +f 1674/1840/4669 1689/1857/4670 1690/1858/4671 1680/1846/4672 +f 1683/1849/4673 1684/1851/4674 1673/1839/4675 1679/1845/4676 +s 253 +f 1687/1854/4677 1688/1855/4678 1677/1843/4679 1675/1841/4680 +s 254 +f 1690/1858/4671 1689/1857/4670 1684/1851/4674 1683/1849/4673 +s 255 +f 1691/1859/4681 1690/1858/4682 1683/1849/4683 1682/1848/4684 +f 1681/1847/4685 1692/1860/4686 1691/1859/4681 1682/1848/4684 +f 1693/1861/4687 1692/1860/4686 1681/1847/4685 1688/1855/4688 +s 253 +f 1694/1862/4667 1693/1861/4666 1688/1855/4678 1687/1854/4677 +s 256 +f 1695/1863/4689 1694/1862/4690 1687/1854/4691 1686/1853/4692 +f 1685/1852/4693 1696/1864/4694 1695/1863/4689 1686/1853/4692 +f 1689/1856/4695 1696/1864/4694 1685/1852/4693 1684/1850/4696 +s 255 +f 1692/1860/4686 1693/1861/4687 1678/1844/4697 +s 256 +f 1676/1842/4698 1694/1862/4690 1695/1863/4689 +f 1686/1853/4692 1687/1854/4691 1675/1841/4699 +s 255 +f 1688/1855/4688 1681/1847/4685 1677/1843/4700 +f 1682/1848/4684 1683/1849/4683 1679/1845/4701 +s 256 +f 1673/1839/4702 1684/1850/4696 1685/1852/4693 +f 1674/1840/4703 1696/1864/4694 1689/1856/4695 +s 255 +f 1680/1846/4704 1690/1858/4682 1691/1859/4681 +s off +f 1680/1846/4705 1691/1859/4706 1696/1864/4707 1674/1840/4708 +f 1691/1859/4709 1692/1860/4710 1695/1863/4711 1696/1864/4712 +f 1692/1860/4713 1678/1844/4714 1676/1842/4715 1695/1863/4716 +f 1677/1843/4717 1681/1847/4718 1686/1853/4719 1675/1841/4720 +f 1681/1847/4721 1682/1848/4722 1685/1852/4723 1686/1853/4724 +f 1682/1848/4725 1679/1845/4726 1673/1839/4727 1685/1852/4728 +s 257 +f 1702/1870/4729 1717/1887/4730 1718/1888/4731 1700/1868/4732 +s 258 +f 1698/1866/4733 1713/1883/4734 1714/1884/4735 1704/1872/4736 +f 1707/1875/4737 1708/1877/4738 1697/1865/4739 1703/1871/4740 +s 257 +f 1711/1880/4741 1712/1881/4742 1701/1869/4743 1699/1867/4744 +s 258 +f 1714/1884/4735 1713/1883/4734 1708/1877/4738 1707/1875/4737 +s 259 +f 1715/1885/4745 1714/1884/4746 1707/1875/4747 1706/1874/4748 +f 1705/1873/4749 1716/1886/4750 1715/1885/4745 1706/1874/4748 +f 1717/1887/4751 1716/1886/4750 1705/1873/4749 1712/1881/4752 +s 257 +f 1718/1888/4731 1717/1887/4730 1712/1881/4742 1711/1880/4741 +s 260 +f 1719/1889/4753 1718/1888/4754 1711/1880/4755 1710/1879/4756 +f 1709/1878/4757 1720/1890/4758 1719/1889/4753 1710/1879/4756 +f 1713/1882/4759 1720/1890/4758 1709/1878/4757 1708/1876/4760 +s 259 +f 1716/1886/4750 1717/1887/4751 1702/1870/4761 +s 260 +f 1700/1868/4762 1718/1888/4754 1719/1889/4753 +f 1710/1879/4756 1711/1880/4755 1699/1867/4763 +s 259 +f 1712/1881/4752 1705/1873/4749 1701/1869/4764 +f 1706/1874/4748 1707/1875/4747 1703/1871/4765 +s 260 +f 1697/1865/4766 1708/1876/4760 1709/1878/4757 +f 1698/1866/4767 1720/1890/4758 1713/1882/4759 +s 259 +f 1704/1872/4768 1714/1884/4746 1715/1885/4745 +s off +f 1704/1872/4769 1715/1885/4770 1720/1890/4771 1698/1866/4772 +f 1715/1885/4773 1716/1886/4774 1719/1889/4775 1720/1890/4776 +f 1716/1886/4777 1702/1870/4778 1700/1868/4779 1719/1889/4780 +f 1701/1869/4781 1705/1873/4782 1710/1879/4783 1699/1867/4784 +f 1705/1873/4785 1706/1874/4786 1709/1878/4787 1710/1879/4788 +f 1706/1874/4789 1703/1871/4790 1697/1865/4791 1709/1878/4792 +s 261 +f 1726/1896/4793 1741/1913/4794 1742/1914/4795 1724/1894/4796 +s 262 +f 1722/1892/4797 1737/1909/4798 1738/1910/4799 1728/1898/4800 +f 1731/1901/4801 1732/1903/4802 1721/1891/4803 1727/1897/4804 +s 261 +f 1735/1906/4805 1736/1907/4806 1725/1895/4807 1723/1893/4808 +s 262 +f 1738/1910/4799 1737/1909/4798 1732/1903/4802 1731/1901/4801 +s 263 +f 1739/1911/4809 1738/1910/4810 1731/1901/4811 1730/1900/4812 +f 1729/1899/4813 1740/1912/4814 1739/1911/4809 1730/1900/4812 +f 1741/1913/4815 1740/1912/4814 1729/1899/4813 1736/1907/4816 +s 261 +f 1742/1914/4795 1741/1913/4794 1736/1907/4806 1735/1906/4805 +s 264 +f 1743/1915/4817 1742/1914/4818 1735/1906/4819 1734/1905/4820 +f 1733/1904/4821 1744/1916/4822 1743/1915/4817 1734/1905/4820 +f 1737/1908/4823 1744/1916/4822 1733/1904/4821 1732/1902/4824 +s 263 +f 1740/1912/4814 1741/1913/4815 1726/1896/4825 +s 264 +f 1724/1894/4826 1742/1914/4818 1743/1915/4817 +f 1734/1905/4820 1735/1906/4819 1723/1893/4827 +s 263 +f 1736/1907/4816 1729/1899/4813 1725/1895/4828 +f 1730/1900/4812 1731/1901/4811 1727/1897/4829 +s 264 +f 1721/1891/4830 1732/1902/4824 1733/1904/4821 +f 1722/1892/4831 1744/1916/4822 1737/1908/4823 +s 263 +f 1728/1898/4832 1738/1910/4810 1739/1911/4809 +s off +f 1728/1898/4833 1739/1911/4834 1744/1916/4835 1722/1892/4836 +f 1739/1911/4837 1740/1912/4838 1743/1915/4839 1744/1916/4840 +f 1740/1912/4841 1726/1896/4842 1724/1894/4843 1743/1915/4844 +f 1725/1895/4845 1729/1899/4846 1734/1905/4847 1723/1893/4848 +f 1729/1899/4849 1730/1900/4850 1733/1904/4851 1734/1905/4852 +f 1730/1900/4853 1727/1897/4854 1721/1891/4855 1733/1904/4856 +s 265 +f 1750/1922/4857 1765/1939/4858 1766/1940/4859 1748/1920/4860 +s 266 +f 1746/1918/4861 1761/1935/4862 1762/1936/4863 1752/1924/4864 +f 1755/1927/4865 1756/1929/4866 1745/1917/4867 1751/1923/4868 +s 265 +f 1759/1932/4869 1760/1933/4870 1749/1921/4871 1747/1919/4872 +s 266 +f 1762/1936/4863 1761/1935/4862 1756/1929/4866 1755/1927/4865 +s 267 +f 1763/1937/4873 1762/1936/4874 1755/1927/4875 1754/1926/4876 +f 1753/1925/4877 1764/1938/4878 1763/1937/4873 1754/1926/4876 +f 1765/1939/4879 1764/1938/4878 1753/1925/4877 1760/1933/4880 +s 265 +f 1766/1940/4859 1765/1939/4858 1760/1933/4870 1759/1932/4869 +s 268 +f 1767/1941/4881 1766/1940/4882 1759/1932/4883 1758/1931/4884 +f 1757/1930/4885 1768/1942/4886 1767/1941/4881 1758/1931/4884 +f 1761/1934/4887 1768/1942/4886 1757/1930/4885 1756/1928/4888 +s 267 +f 1764/1938/4878 1765/1939/4879 1750/1922/4889 +s 268 +f 1748/1920/4890 1766/1940/4882 1767/1941/4881 +f 1758/1931/4884 1759/1932/4883 1747/1919/4891 +s 267 +f 1760/1933/4880 1753/1925/4877 1749/1921/4892 +f 1754/1926/4876 1755/1927/4875 1751/1923/4893 +s 268 +f 1745/1917/4894 1756/1928/4888 1757/1930/4885 +f 1746/1918/4895 1768/1942/4886 1761/1934/4887 +s 267 +f 1752/1924/4896 1762/1936/4874 1763/1937/4873 +s off +f 1752/1924/4897 1763/1937/4898 1768/1942/4899 1746/1918/4900 +f 1763/1937/4901 1764/1938/4902 1767/1941/4903 1768/1942/4904 +f 1764/1938/4905 1750/1922/4906 1748/1920/4907 1767/1941/4908 +f 1749/1921/4909 1753/1925/4910 1758/1931/4911 1747/1919/4912 +f 1753/1925/4913 1754/1926/4914 1757/1930/4915 1758/1931/4916 +f 1754/1926/4917 1751/1923/4918 1745/1917/4919 1757/1930/4920 +s 269 +f 1774/1948/4921 1789/1965/4922 1790/1966/4923 1772/1946/4924 +s 270 +f 1770/1944/4925 1785/1961/4926 1786/1962/4927 1776/1950/4928 +f 1779/1953/4929 1780/1955/4930 1769/1943/4931 1775/1949/4932 +s 269 +f 1783/1958/4933 1784/1959/4934 1773/1947/4935 1771/1945/4936 +s 270 +f 1786/1962/4927 1785/1961/4926 1780/1955/4930 1779/1953/4929 +s 271 +f 1787/1963/4937 1786/1962/4938 1779/1953/4939 1778/1952/4940 +f 1777/1951/4941 1788/1964/4942 1787/1963/4937 1778/1952/4940 +f 1789/1965/4943 1788/1964/4942 1777/1951/4941 1784/1959/4944 +s 269 +f 1790/1966/4923 1789/1965/4922 1784/1959/4934 1783/1958/4933 +s 272 +f 1791/1967/4945 1790/1966/4946 1783/1958/4947 1782/1957/4948 +f 1781/1956/4949 1792/1968/4950 1791/1967/4945 1782/1957/4948 +f 1785/1960/4951 1792/1968/4950 1781/1956/4949 1780/1954/4952 +s 271 +f 1788/1964/4942 1789/1965/4943 1774/1948/4953 +s 272 +f 1772/1946/4954 1790/1966/4946 1791/1967/4945 +f 1782/1957/4948 1783/1958/4947 1771/1945/4955 +s 271 +f 1784/1959/4944 1777/1951/4941 1773/1947/4956 +f 1778/1952/4940 1779/1953/4939 1775/1949/4957 +s 272 +f 1769/1943/4958 1780/1954/4952 1781/1956/4949 +f 1770/1944/4959 1792/1968/4950 1785/1960/4951 +s 271 +f 1776/1950/4960 1786/1962/4938 1787/1963/4937 +s off +f 1776/1950/4961 1787/1963/4962 1792/1968/4963 1770/1944/4964 +f 1787/1963/4965 1788/1964/4966 1791/1967/4967 1792/1968/4968 +f 1788/1964/4969 1774/1948/4970 1772/1946/4971 1791/1967/4972 +f 1773/1947/4973 1777/1951/4974 1782/1957/4975 1771/1945/4976 +f 1777/1951/4977 1778/1952/4978 1781/1956/4979 1782/1957/4980 +f 1778/1952/4981 1775/1949/4982 1769/1943/4983 1781/1956/4984 +s 273 +f 1798/1974/4985 1813/1991/4986 1814/1992/4987 1796/1972/4988 +s 274 +f 1794/1970/4989 1809/1987/4990 1810/1988/4991 1800/1976/4992 +f 1803/1979/4993 1804/1981/4994 1793/1969/4995 1799/1975/4996 +s 273 +f 1807/1984/4997 1808/1985/4998 1797/1973/4999 1795/1971/5000 +s 274 +f 1810/1988/4991 1809/1987/4990 1804/1981/4994 1803/1979/4993 +s 275 +f 1811/1989/5001 1810/1988/5002 1803/1979/5003 1802/1978/5004 +f 1801/1977/5005 1812/1990/5006 1811/1989/5001 1802/1978/5004 +f 1813/1991/5007 1812/1990/5006 1801/1977/5005 1808/1985/5008 +s 273 +f 1814/1992/4987 1813/1991/4986 1808/1985/4998 1807/1984/4997 +s 276 +f 1815/1993/5009 1814/1992/5010 1807/1984/5011 1806/1983/5012 +f 1805/1982/5013 1816/1994/5014 1815/1993/5009 1806/1983/5012 +f 1809/1986/5015 1816/1994/5014 1805/1982/5013 1804/1980/5016 +s 275 +f 1812/1990/5006 1813/1991/5007 1798/1974/5017 +s 276 +f 1796/1972/5018 1814/1992/5010 1815/1993/5009 +f 1806/1983/5012 1807/1984/5011 1795/1971/5019 +s 275 +f 1808/1985/5008 1801/1977/5005 1797/1973/5020 +f 1802/1978/5004 1803/1979/5003 1799/1975/5021 +s 276 +f 1793/1969/5022 1804/1980/5016 1805/1982/5013 +f 1794/1970/5023 1816/1994/5014 1809/1986/5015 +s 275 +f 1800/1976/5024 1810/1988/5002 1811/1989/5001 +s off +f 1800/1976/5025 1811/1989/5026 1816/1994/5027 1794/1970/5028 +f 1811/1989/5029 1812/1990/5030 1815/1993/5031 1816/1994/5032 +f 1812/1990/5033 1798/1974/5034 1796/1972/5035 1815/1993/5036 +f 1797/1973/5037 1801/1977/5038 1806/1983/5039 1795/1971/5040 +f 1801/1977/5041 1802/1978/5042 1805/1982/5043 1806/1983/5044 +f 1802/1978/5045 1799/1975/5046 1793/1969/5047 1805/1982/5048 +s 277 +f 1822/2000/5049 1837/2017/5050 1838/2018/5051 1820/1998/5052 +s 278 +f 1818/1996/5053 1833/2013/5054 1834/2014/5055 1824/2002/5056 +f 1827/2005/5057 1828/2007/5058 1817/1995/5059 1823/2001/5060 +s 277 +f 1831/2010/5061 1832/2011/5062 1821/1999/5063 1819/1997/5064 +s 278 +f 1834/2014/5055 1833/2013/5054 1828/2007/5058 1827/2005/5057 +s 279 +f 1835/2015/5065 1834/2014/5066 1827/2005/5067 1826/2004/5068 +f 1825/2003/5069 1836/2016/5070 1835/2015/5065 1826/2004/5068 +f 1837/2017/5071 1836/2016/5070 1825/2003/5069 1832/2011/5072 +s 277 +f 1838/2018/5051 1837/2017/5050 1832/2011/5062 1831/2010/5061 +s 280 +f 1839/2019/5073 1838/2018/5074 1831/2010/5075 1830/2009/5076 +f 1829/2008/5077 1840/2020/5078 1839/2019/5073 1830/2009/5076 +f 1833/2012/5079 1840/2020/5078 1829/2008/5077 1828/2006/5080 +s 279 +f 1836/2016/5070 1837/2017/5071 1822/2000/5081 +s 280 +f 1820/1998/5082 1838/2018/5074 1839/2019/5073 +f 1830/2009/5076 1831/2010/5075 1819/1997/5083 +s 279 +f 1832/2011/5072 1825/2003/5069 1821/1999/5084 +f 1826/2004/5068 1827/2005/5067 1823/2001/5085 +s 280 +f 1817/1995/5086 1828/2006/5080 1829/2008/5077 +f 1818/1996/5087 1840/2020/5078 1833/2012/5079 +s 279 +f 1824/2002/5088 1834/2014/5066 1835/2015/5065 +s off +f 1824/2002/5089 1835/2015/5090 1840/2020/5091 1818/1996/5092 +f 1835/2015/5093 1836/2016/5094 1839/2019/5095 1840/2020/5096 +f 1836/2016/5097 1822/2000/5098 1820/1998/5099 1839/2019/5100 +f 1821/1999/5101 1825/2003/5102 1830/2009/5103 1819/1997/5104 +f 1825/2003/5105 1826/2004/5106 1829/2008/5107 1830/2009/5108 +f 1826/2004/5109 1823/2001/5110 1817/1995/5111 1829/2008/5112 +s 281 +f 1846/2026/5113 1861/2043/5114 1862/2044/5115 1844/2024/5116 +s 282 +f 1842/2022/5117 1857/2039/5118 1858/2040/5119 1848/2028/5120 +f 1851/2031/5121 1852/2033/5122 1841/2021/5123 1847/2027/5124 +s 281 +f 1855/2036/5125 1856/2037/5126 1845/2025/5127 1843/2023/5128 +s 282 +f 1858/2040/5119 1857/2039/5118 1852/2033/5122 1851/2031/5121 +s 283 +f 1859/2041/5129 1858/2040/5130 1851/2031/5131 1850/2030/5132 +f 1849/2029/5133 1860/2042/5134 1859/2041/5129 1850/2030/5132 +f 1861/2043/5135 1860/2042/5134 1849/2029/5133 1856/2037/5136 +s 281 +f 1862/2044/5115 1861/2043/5114 1856/2037/5126 1855/2036/5125 +s 284 +f 1863/2045/5137 1862/2044/5138 1855/2036/5139 1854/2035/5140 +f 1853/2034/5141 1864/2046/5142 1863/2045/5137 1854/2035/5140 +f 1857/2038/5143 1864/2046/5142 1853/2034/5141 1852/2032/5144 +s 283 +f 1860/2042/5134 1861/2043/5135 1846/2026/5145 +s 284 +f 1844/2024/5146 1862/2044/5138 1863/2045/5137 +f 1854/2035/5140 1855/2036/5139 1843/2023/5147 +s 283 +f 1856/2037/5136 1849/2029/5133 1845/2025/5148 +f 1850/2030/5132 1851/2031/5131 1847/2027/5149 +s 284 +f 1841/2021/5150 1852/2032/5144 1853/2034/5141 +f 1842/2022/5151 1864/2046/5142 1857/2038/5143 +s 283 +f 1848/2028/5152 1858/2040/5130 1859/2041/5129 +s off +f 1848/2028/5153 1859/2041/5154 1864/2046/5155 1842/2022/5156 +f 1859/2041/5157 1860/2042/5158 1863/2045/5159 1864/2046/5160 +f 1860/2042/5161 1846/2026/5162 1844/2024/5163 1863/2045/5164 +f 1845/2025/5165 1849/2029/5166 1854/2035/5167 1843/2023/5168 +f 1849/2029/5169 1850/2030/5170 1853/2034/5171 1854/2035/5172 +f 1850/2030/5173 1847/2027/5174 1841/2021/5175 1853/2034/5176 +s 285 +f 1870/2052/5177 1885/2069/5178 1886/2070/5179 1868/2050/5180 +s 286 +f 1866/2048/5181 1881/2065/5182 1882/2066/5183 1872/2054/5184 +f 1875/2057/5185 1876/2059/5186 1865/2047/5187 1871/2053/5188 +s 285 +f 1879/2062/5189 1880/2063/5190 1869/2051/5191 1867/2049/5192 +s 286 +f 1882/2066/5183 1881/2065/5182 1876/2059/5186 1875/2057/5185 +s 287 +f 1883/2067/5193 1882/2066/5194 1875/2057/5195 1874/2056/5196 +f 1873/2055/5197 1884/2068/5198 1883/2067/5193 1874/2056/5196 +f 1885/2069/5199 1884/2068/5198 1873/2055/5197 1880/2063/5200 +s 285 +f 1886/2070/5179 1885/2069/5178 1880/2063/5190 1879/2062/5189 +s 288 +f 1887/2071/5201 1886/2070/5202 1879/2062/5203 1878/2061/5204 +f 1877/2060/5205 1888/2072/5206 1887/2071/5201 1878/2061/5204 +f 1881/2064/5207 1888/2072/5206 1877/2060/5205 1876/2058/5208 +s 287 +f 1884/2068/5198 1885/2069/5199 1870/2052/5209 +s 288 +f 1868/2050/5210 1886/2070/5202 1887/2071/5201 +f 1878/2061/5204 1879/2062/5203 1867/2049/5211 +s 287 +f 1880/2063/5200 1873/2055/5197 1869/2051/5212 +f 1874/2056/5196 1875/2057/5195 1871/2053/5213 +s 288 +f 1865/2047/5214 1876/2058/5208 1877/2060/5205 +f 1866/2048/5215 1888/2072/5206 1881/2064/5207 +s 287 +f 1872/2054/5216 1882/2066/5194 1883/2067/5193 +s off +f 1872/2054/5217 1883/2067/5218 1888/2072/5219 1866/2048/5220 +f 1883/2067/5221 1884/2068/5222 1887/2071/5223 1888/2072/5224 +f 1884/2068/5225 1870/2052/5226 1868/2050/5227 1887/2071/5228 +f 1869/2051/5229 1873/2055/5230 1878/2061/5231 1867/2049/5232 +f 1873/2055/5233 1874/2056/5234 1877/2060/5235 1878/2061/5236 +f 1874/2056/5237 1871/2053/5238 1865/2047/5239 1877/2060/5240 +s 289 +f 1894/2078/5241 1909/2095/5242 1910/2096/5243 1892/2076/5244 +s 290 +f 1890/2074/5245 1905/2091/5246 1906/2092/5247 1896/2080/5248 +f 1899/2083/5249 1900/2085/5250 1889/2073/5251 1895/2079/5252 +s 289 +f 1903/2088/5253 1904/2089/5254 1893/2077/5255 1891/2075/5256 +s 290 +f 1906/2092/5247 1905/2091/5246 1900/2085/5250 1899/2083/5249 +s 291 +f 1907/2093/5257 1906/2092/5258 1899/2083/5259 1898/2082/5260 +f 1897/2081/5261 1908/2094/5262 1907/2093/5257 1898/2082/5260 +f 1909/2095/5263 1908/2094/5262 1897/2081/5261 1904/2089/5264 +s 289 +f 1910/2096/5243 1909/2095/5242 1904/2089/5254 1903/2088/5253 +s 292 +f 1911/2097/5265 1910/2096/5266 1903/2088/5267 1902/2087/5268 +f 1901/2086/5269 1912/2098/5270 1911/2097/5265 1902/2087/5268 +f 1905/2090/5271 1912/2098/5270 1901/2086/5269 1900/2084/5272 +s 291 +f 1908/2094/5262 1909/2095/5263 1894/2078/5273 +s 292 +f 1892/2076/5274 1910/2096/5266 1911/2097/5265 +f 1902/2087/5268 1903/2088/5267 1891/2075/5275 +s 291 +f 1904/2089/5264 1897/2081/5261 1893/2077/5276 +f 1898/2082/5260 1899/2083/5259 1895/2079/5277 +s 292 +f 1889/2073/5278 1900/2084/5272 1901/2086/5269 +f 1890/2074/5279 1912/2098/5270 1905/2090/5271 +s 291 +f 1896/2080/5280 1906/2092/5258 1907/2093/5257 +s off +f 1896/2080/5281 1907/2093/5282 1912/2098/5283 1890/2074/5284 +f 1907/2093/5285 1908/2094/5286 1911/2097/5287 1912/2098/5288 +f 1908/2094/5289 1894/2078/5290 1892/2076/5291 1911/2097/5292 +f 1893/2077/5293 1897/2081/5294 1902/2087/5295 1891/2075/5296 +f 1897/2081/5297 1898/2082/5298 1901/2086/5299 1902/2087/5300 +f 1898/2082/5301 1895/2079/5302 1889/2073/5303 1901/2086/5304 +s 293 +f 1918/2104/5305 1933/2121/5306 1934/2122/5307 1916/2102/5308 +s 294 +f 1914/2100/5309 1929/2117/5310 1930/2118/5311 1920/2106/5312 +f 1923/2109/5313 1924/2111/5314 1913/2099/5315 1919/2105/5316 +s 293 +f 1927/2114/5317 1928/2115/5318 1917/2103/5319 1915/2101/5320 +s 294 +f 1930/2118/5311 1929/2117/5310 1924/2111/5314 1923/2109/5313 +s 295 +f 1931/2119/5321 1930/2118/5322 1923/2109/5323 1922/2108/5324 +f 1921/2107/5325 1932/2120/5326 1931/2119/5321 1922/2108/5324 +f 1933/2121/5327 1932/2120/5326 1921/2107/5325 1928/2115/5328 +s 293 +f 1934/2122/5307 1933/2121/5306 1928/2115/5318 1927/2114/5317 +s 296 +f 1935/2123/5329 1934/2122/5330 1927/2114/5331 1926/2113/5332 +f 1925/2112/5333 1936/2124/5334 1935/2123/5329 1926/2113/5332 +f 1929/2116/5335 1936/2124/5334 1925/2112/5333 1924/2110/5336 +s 295 +f 1932/2120/5326 1933/2121/5327 1918/2104/5337 +s 296 +f 1916/2102/5338 1934/2122/5330 1935/2123/5329 +f 1926/2113/5332 1927/2114/5331 1915/2101/5339 +s 295 +f 1928/2115/5328 1921/2107/5325 1917/2103/5340 +f 1922/2108/5324 1923/2109/5323 1919/2105/5341 +s 296 +f 1913/2099/5342 1924/2110/5336 1925/2112/5333 +f 1914/2100/5343 1936/2124/5334 1929/2116/5335 +s 295 +f 1920/2106/5344 1930/2118/5322 1931/2119/5321 +s off +f 1920/2106/5345 1931/2119/5346 1936/2124/5347 1914/2100/5348 +f 1931/2119/5349 1932/2120/5350 1935/2123/5351 1936/2124/5352 +f 1932/2120/5353 1918/2104/5354 1916/2102/5355 1935/2123/5356 +f 1917/2103/5357 1921/2107/5358 1926/2113/5359 1915/2101/5360 +f 1921/2107/5361 1922/2108/5362 1925/2112/5363 1926/2113/5364 +f 1922/2108/5365 1919/2105/5366 1913/2099/5367 1925/2112/5368 +s 297 +f 1942/2130/5369 1957/2147/5370 1958/2148/5371 1940/2128/5372 +s 298 +f 1938/2126/5373 1953/2143/5374 1954/2144/5375 1944/2132/5376 +f 1947/2135/5377 1948/2137/5378 1937/2125/5379 1943/2131/5380 +s 297 +f 1951/2140/5381 1952/2141/5382 1941/2129/5383 1939/2127/5384 +s 298 +f 1954/2144/5375 1953/2143/5374 1948/2137/5378 1947/2135/5377 +s 299 +f 1955/2145/5385 1954/2144/5386 1947/2135/5387 1946/2134/5388 +f 1945/2133/5389 1956/2146/5390 1955/2145/5385 1946/2134/5388 +f 1957/2147/5391 1956/2146/5390 1945/2133/5389 1952/2141/5392 +s 297 +f 1958/2148/5371 1957/2147/5370 1952/2141/5382 1951/2140/5381 +s 300 +f 1959/2149/5393 1958/2148/5394 1951/2140/5395 1950/2139/5396 +f 1949/2138/5397 1960/2150/5398 1959/2149/5393 1950/2139/5396 +f 1953/2142/5399 1960/2150/5398 1949/2138/5397 1948/2136/5400 +s 299 +f 1956/2146/5390 1957/2147/5391 1942/2130/5401 +s 300 +f 1940/2128/5402 1958/2148/5394 1959/2149/5393 +f 1950/2139/5396 1951/2140/5395 1939/2127/5403 +s 299 +f 1952/2141/5392 1945/2133/5389 1941/2129/5404 +f 1946/2134/5388 1947/2135/5387 1943/2131/5405 +s 300 +f 1937/2125/5406 1948/2136/5400 1949/2138/5397 +f 1938/2126/5407 1960/2150/5398 1953/2142/5399 +s 299 +f 1944/2132/5408 1954/2144/5386 1955/2145/5385 +s off +f 1944/2132/5409 1955/2145/5410 1960/2150/5411 1938/2126/5412 +f 1955/2145/5413 1956/2146/5414 1959/2149/5415 1960/2150/5416 +f 1956/2146/5417 1942/2130/5418 1940/2128/5419 1959/2149/5420 +f 1941/2129/5421 1945/2133/5422 1950/2139/5423 1939/2127/5424 +f 1945/2133/5425 1946/2134/5426 1949/2138/5427 1950/2139/5428 +f 1946/2134/5429 1943/2131/5430 1937/2125/5431 1949/2138/5432 +s 301 +f 1966/2156/5433 1981/2173/5434 1982/2174/5435 1964/2154/5436 +s 302 +f 1962/2152/5437 1977/2169/5438 1978/2170/5439 1968/2158/5440 +f 1971/2161/5441 1972/2163/5442 1961/2151/5443 1967/2157/5444 +s 301 +f 1975/2166/5445 1976/2167/5446 1965/2155/5447 1963/2153/5448 +s 302 +f 1978/2170/5439 1977/2169/5438 1972/2163/5442 1971/2161/5441 +s 303 +f 1979/2171/5449 1978/2170/5450 1971/2161/5451 1970/2160/5452 +f 1969/2159/5453 1980/2172/5454 1979/2171/5449 1970/2160/5452 +f 1981/2173/5455 1980/2172/5454 1969/2159/5453 1976/2167/5456 +s 301 +f 1982/2174/5435 1981/2173/5434 1976/2167/5446 1975/2166/5445 +s 304 +f 1983/2175/5457 1982/2174/5458 1975/2166/5459 1974/2165/5460 +f 1973/2164/5461 1984/2176/5462 1983/2175/5457 1974/2165/5460 +f 1977/2168/5463 1984/2176/5462 1973/2164/5461 1972/2162/5464 +s 303 +f 1980/2172/5454 1981/2173/5455 1966/2156/5465 +s 304 +f 1964/2154/5466 1982/2174/5458 1983/2175/5457 +f 1974/2165/5460 1975/2166/5459 1963/2153/5467 +s 303 +f 1976/2167/5456 1969/2159/5453 1965/2155/5468 +f 1970/2160/5452 1971/2161/5451 1967/2157/5469 +s 304 +f 1961/2151/5470 1972/2162/5464 1973/2164/5461 +f 1962/2152/5471 1984/2176/5462 1977/2168/5463 +s 303 +f 1968/2158/5472 1978/2170/5450 1979/2171/5449 +s off +f 1968/2158/5473 1979/2171/5474 1984/2176/5475 1962/2152/5476 +f 1979/2171/5477 1980/2172/5478 1983/2175/5479 1984/2176/5480 +f 1980/2172/5481 1966/2156/5482 1964/2154/5483 1983/2175/5484 +f 1965/2155/5485 1969/2159/5486 1974/2165/5487 1963/2153/5488 +f 1969/2159/5489 1970/2160/5490 1973/2164/5491 1974/2165/5492 +f 1970/2160/5493 1967/2157/5494 1961/2151/5495 1973/2164/5496 +s 305 +f 1990/2182/5497 2005/2199/5498 2006/2200/5499 1988/2180/5500 +s 306 +f 1986/2178/5501 2001/2195/5502 2002/2196/5503 1992/2184/5504 +f 1995/2187/5505 1996/2189/5506 1985/2177/5507 1991/2183/5508 +s 305 +f 1999/2192/5509 2000/2193/5510 1989/2181/5511 1987/2179/5512 +s 306 +f 2002/2196/5503 2001/2195/5502 1996/2189/5506 1995/2187/5505 +s 307 +f 2003/2197/5513 2002/2196/5514 1995/2187/5515 1994/2186/5516 +f 1993/2185/5517 2004/2198/5518 2003/2197/5513 1994/2186/5516 +f 2005/2199/5519 2004/2198/5518 1993/2185/5517 2000/2193/5520 +s 305 +f 2006/2200/5499 2005/2199/5498 2000/2193/5510 1999/2192/5509 +s 308 +f 2007/2201/5521 2006/2200/5522 1999/2192/5523 1998/2191/5524 +f 1997/2190/5525 2008/2202/5526 2007/2201/5521 1998/2191/5524 +f 2001/2194/5527 2008/2202/5526 1997/2190/5525 1996/2188/5528 +s 307 +f 2004/2198/5518 2005/2199/5519 1990/2182/5529 +s 308 +f 1988/2180/5530 2006/2200/5522 2007/2201/5521 +f 1998/2191/5524 1999/2192/5523 1987/2179/5531 +s 307 +f 2000/2193/5520 1993/2185/5517 1989/2181/5532 +f 1994/2186/5516 1995/2187/5515 1991/2183/5533 +s 308 +f 1985/2177/5534 1996/2188/5528 1997/2190/5525 +f 1986/2178/5535 2008/2202/5526 2001/2194/5527 +s 307 +f 1992/2184/5536 2002/2196/5514 2003/2197/5513 +s off +f 1992/2184/5537 2003/2197/5538 2008/2202/5539 1986/2178/5540 +f 2003/2197/5541 2004/2198/5542 2007/2201/5543 2008/2202/5544 +f 2004/2198/5545 1990/2182/5546 1988/2180/5547 2007/2201/5548 +f 1989/2181/5549 1993/2185/5550 1998/2191/5551 1987/2179/5552 +f 1993/2185/5553 1994/2186/5554 1997/2190/5555 1998/2191/5556 +f 1994/2186/5557 1991/2183/5558 1985/2177/5559 1997/2190/5560 +s 309 +f 2014/2208/5561 2029/2225/5562 2030/2226/5563 2012/2206/5564 +s 310 +f 2010/2204/5565 2025/2221/5566 2026/2222/5567 2016/2210/5568 +f 2019/2213/5569 2020/2215/5570 2009/2203/5571 2015/2209/5572 +s 309 +f 2023/2218/5573 2024/2219/5574 2013/2207/5575 2011/2205/5576 +s 310 +f 2026/2222/5567 2025/2221/5566 2020/2215/5570 2019/2213/5569 +s 311 +f 2027/2223/5577 2026/2222/5578 2019/2213/5579 2018/2212/5580 +f 2017/2211/5581 2028/2224/5582 2027/2223/5577 2018/2212/5580 +f 2029/2225/5583 2028/2224/5582 2017/2211/5581 2024/2219/5584 +s 309 +f 2030/2226/5563 2029/2225/5562 2024/2219/5574 2023/2218/5573 +s 312 +f 2031/2227/5585 2030/2226/5586 2023/2218/5587 2022/2217/5588 +f 2021/2216/5589 2032/2228/5590 2031/2227/5585 2022/2217/5588 +f 2025/2220/5591 2032/2228/5590 2021/2216/5589 2020/2214/5592 +s 311 +f 2028/2224/5582 2029/2225/5583 2014/2208/5593 +s 312 +f 2012/2206/5594 2030/2226/5586 2031/2227/5585 +f 2022/2217/5588 2023/2218/5587 2011/2205/5595 +s 311 +f 2024/2219/5584 2017/2211/5581 2013/2207/5596 +f 2018/2212/5580 2019/2213/5579 2015/2209/5597 +s 312 +f 2009/2203/5598 2020/2214/5592 2021/2216/5589 +f 2010/2204/5599 2032/2228/5590 2025/2220/5591 +s 311 +f 2016/2210/5600 2026/2222/5578 2027/2223/5577 +s off +f 2016/2210/5601 2027/2223/5602 2032/2228/5603 2010/2204/5604 +f 2027/2223/5605 2028/2224/5606 2031/2227/5607 2032/2228/5608 +f 2028/2224/5609 2014/2208/5610 2012/2206/5611 2031/2227/5612 +f 2013/2207/5613 2017/2211/5614 2022/2217/5615 2011/2205/5616 +f 2017/2211/5617 2018/2212/5618 2021/2216/5619 2022/2217/5620 +f 2018/2212/5621 2015/2209/5622 2009/2203/5623 2021/2216/5624 +s 313 +f 2038/2234/5625 2053/2251/5626 2054/2252/5627 2036/2232/5628 +s 314 +f 2034/2230/5629 2049/2247/5630 2050/2248/5631 2040/2236/5632 +f 2043/2239/5633 2044/2241/5634 2033/2229/5635 2039/2235/5636 +s 313 +f 2047/2244/5637 2048/2245/5638 2037/2233/5639 2035/2231/5640 +s 314 +f 2050/2248/5631 2049/2247/5630 2044/2241/5634 2043/2239/5633 +s 315 +f 2051/2249/5641 2050/2248/5642 2043/2239/5643 2042/2238/5644 +f 2041/2237/5645 2052/2250/5646 2051/2249/5641 2042/2238/5644 +f 2053/2251/5647 2052/2250/5646 2041/2237/5645 2048/2245/5648 +s 313 +f 2054/2252/5627 2053/2251/5626 2048/2245/5638 2047/2244/5637 +s 316 +f 2055/2253/5649 2054/2252/5650 2047/2244/5651 2046/2243/5652 +f 2045/2242/5653 2056/2254/5654 2055/2253/5649 2046/2243/5652 +f 2049/2246/5655 2056/2254/5654 2045/2242/5653 2044/2240/5656 +s 315 +f 2052/2250/5646 2053/2251/5647 2038/2234/5657 +s 316 +f 2036/2232/5658 2054/2252/5650 2055/2253/5649 +f 2046/2243/5652 2047/2244/5651 2035/2231/5659 +s 315 +f 2048/2245/5648 2041/2237/5645 2037/2233/5660 +f 2042/2238/5644 2043/2239/5643 2039/2235/5661 +s 316 +f 2033/2229/5662 2044/2240/5656 2045/2242/5653 +f 2034/2230/5663 2056/2254/5654 2049/2246/5655 +s 315 +f 2040/2236/5664 2050/2248/5642 2051/2249/5641 +s off +f 2040/2236/5665 2051/2249/5666 2056/2254/5667 2034/2230/5668 +f 2051/2249/5669 2052/2250/5670 2055/2253/5671 2056/2254/5672 +f 2052/2250/5673 2038/2234/5674 2036/2232/5675 2055/2253/5676 +f 2037/2233/5677 2041/2237/5678 2046/2243/5679 2035/2231/5680 +f 2041/2237/5681 2042/2238/5682 2045/2242/5683 2046/2243/5684 +f 2042/2238/5685 2039/2235/5686 2033/2229/5687 2045/2242/5688 +s 317 +f 2062/2260/5689 2077/2277/5690 2078/2278/5691 2060/2258/5692 +s 318 +f 2058/2256/5693 2073/2273/5694 2074/2274/5695 2064/2262/5696 +f 2067/2265/5697 2068/2267/5698 2057/2255/5699 2063/2261/5700 +s 317 +f 2071/2270/5701 2072/2271/5702 2061/2259/5703 2059/2257/5704 +s 318 +f 2074/2274/5695 2073/2273/5694 2068/2267/5698 2067/2265/5697 +s 319 +f 2075/2275/5705 2074/2274/5706 2067/2265/5707 2066/2264/5708 +f 2065/2263/5709 2076/2276/5710 2075/2275/5705 2066/2264/5708 +f 2077/2277/5711 2076/2276/5710 2065/2263/5709 2072/2271/5712 +s 317 +f 2078/2278/5691 2077/2277/5690 2072/2271/5702 2071/2270/5701 +s 320 +f 2079/2279/5713 2078/2278/5714 2071/2270/5715 2070/2269/5716 +f 2069/2268/5717 2080/2280/5718 2079/2279/5713 2070/2269/5716 +f 2073/2272/5719 2080/2280/5718 2069/2268/5717 2068/2266/5720 +s 319 +f 2076/2276/5710 2077/2277/5711 2062/2260/5721 +s 320 +f 2060/2258/5722 2078/2278/5714 2079/2279/5713 +f 2070/2269/5716 2071/2270/5715 2059/2257/5723 +s 319 +f 2072/2271/5712 2065/2263/5709 2061/2259/5724 +f 2066/2264/5708 2067/2265/5707 2063/2261/5725 +s 320 +f 2057/2255/5726 2068/2266/5720 2069/2268/5717 +f 2058/2256/5727 2080/2280/5718 2073/2272/5719 +s 319 +f 2064/2262/5728 2074/2274/5706 2075/2275/5705 +s off +f 2064/2262/5729 2075/2275/5730 2080/2280/5731 2058/2256/5732 +f 2075/2275/5733 2076/2276/5734 2079/2279/5735 2080/2280/5736 +f 2076/2276/5737 2062/2260/5738 2060/2258/5739 2079/2279/5740 +f 2061/2259/5741 2065/2263/5742 2070/2269/5743 2059/2257/5744 +f 2065/2263/5745 2066/2264/5746 2069/2268/5747 2070/2269/5748 +f 2066/2264/5749 2063/2261/5750 2057/2255/5751 2069/2268/5752 +s 321 +f 2086/2286/5753 2101/2303/5754 2102/2304/5755 2084/2284/5756 +s 322 +f 2082/2282/5757 2097/2299/5758 2098/2300/5759 2088/2288/5760 +f 2091/2291/5761 2092/2293/5762 2081/2281/5763 2087/2287/5764 +s 321 +f 2095/2296/5765 2096/2297/5766 2085/2285/5767 2083/2283/5768 +s 322 +f 2098/2300/5759 2097/2299/5758 2092/2293/5762 2091/2291/5761 +s 323 +f 2099/2301/5769 2098/2300/5770 2091/2291/5771 2090/2290/5772 +f 2089/2289/5773 2100/2302/5774 2099/2301/5769 2090/2290/5772 +f 2101/2303/5775 2100/2302/5774 2089/2289/5773 2096/2297/5776 +s 321 +f 2102/2304/5755 2101/2303/5754 2096/2297/5766 2095/2296/5765 +s 324 +f 2103/2305/5777 2102/2304/5778 2095/2296/5779 2094/2295/5780 +f 2093/2294/5781 2104/2306/5782 2103/2305/5777 2094/2295/5780 +f 2097/2298/5783 2104/2306/5782 2093/2294/5781 2092/2292/5784 +s 323 +f 2100/2302/5774 2101/2303/5775 2086/2286/5785 +s 324 +f 2084/2284/5786 2102/2304/5778 2103/2305/5777 +f 2094/2295/5780 2095/2296/5779 2083/2283/5787 +s 323 +f 2096/2297/5776 2089/2289/5773 2085/2285/5788 +f 2090/2290/5772 2091/2291/5771 2087/2287/5789 +s 324 +f 2081/2281/5790 2092/2292/5784 2093/2294/5781 +f 2082/2282/5791 2104/2306/5782 2097/2298/5783 +s 323 +f 2088/2288/5792 2098/2300/5770 2099/2301/5769 +s off +f 2088/2288/5793 2099/2301/5794 2104/2306/5795 2082/2282/5796 +f 2099/2301/5797 2100/2302/5798 2103/2305/5799 2104/2306/5800 +f 2100/2302/5801 2086/2286/5802 2084/2284/5803 2103/2305/5804 +f 2085/2285/5805 2089/2289/5806 2094/2295/5807 2083/2283/5808 +f 2089/2289/5809 2090/2290/5810 2093/2294/5811 2094/2295/5812 +f 2090/2290/5813 2087/2287/5814 2081/2281/5815 2093/2294/5816 +s 325 +f 2110/2312/5817 2125/2329/5818 2126/2330/5819 2108/2310/5820 +s 326 +f 2106/2308/5821 2121/2325/5822 2122/2326/5823 2112/2314/5824 +f 2115/2317/5825 2116/2319/5826 2105/2307/5827 2111/2313/5828 +s 325 +f 2119/2322/5829 2120/2323/5830 2109/2311/5831 2107/2309/5832 +s 326 +f 2122/2326/5823 2121/2325/5822 2116/2319/5826 2115/2317/5825 +s 327 +f 2123/2327/5833 2122/2326/5834 2115/2317/5835 2114/2316/5836 +f 2113/2315/5837 2124/2328/5838 2123/2327/5833 2114/2316/5836 +f 2125/2329/5839 2124/2328/5838 2113/2315/5837 2120/2323/5840 +s 325 +f 2126/2330/5819 2125/2329/5818 2120/2323/5830 2119/2322/5829 +s 328 +f 2127/2331/5841 2126/2330/5842 2119/2322/5843 2118/2321/5844 +f 2117/2320/5845 2128/2332/5846 2127/2331/5841 2118/2321/5844 +f 2121/2324/5847 2128/2332/5846 2117/2320/5845 2116/2318/5848 +s 327 +f 2124/2328/5838 2125/2329/5839 2110/2312/5849 +s 328 +f 2108/2310/5850 2126/2330/5842 2127/2331/5841 +f 2118/2321/5844 2119/2322/5843 2107/2309/5851 +s 327 +f 2120/2323/5840 2113/2315/5837 2109/2311/5852 +f 2114/2316/5836 2115/2317/5835 2111/2313/5853 +s 328 +f 2105/2307/5854 2116/2318/5848 2117/2320/5845 +f 2106/2308/5855 2128/2332/5846 2121/2324/5847 +s 327 +f 2112/2314/5856 2122/2326/5834 2123/2327/5833 +s off +f 2112/2314/5857 2123/2327/5858 2128/2332/5859 2106/2308/5860 +f 2123/2327/5861 2124/2328/5862 2127/2331/5863 2128/2332/5864 +f 2124/2328/5865 2110/2312/5866 2108/2310/5867 2127/2331/5868 +f 2109/2311/5869 2113/2315/5870 2118/2321/5871 2107/2309/5872 +f 2113/2315/5873 2114/2316/5874 2117/2320/5875 2118/2321/5876 +f 2114/2316/5877 2111/2313/5878 2105/2307/5879 2117/2320/5880 +s 329 +f 2134/2338/5881 2149/2355/5882 2150/2356/5883 2132/2336/5884 +s 330 +f 2130/2334/5885 2145/2351/5886 2146/2352/5887 2136/2340/5888 +f 2139/2343/5889 2140/2345/5890 2129/2333/5891 2135/2339/5892 +s 329 +f 2143/2348/5893 2144/2349/5894 2133/2337/5895 2131/2335/5896 +s 330 +f 2146/2352/5887 2145/2351/5886 2140/2345/5890 2139/2343/5889 +s 331 +f 2147/2353/5897 2146/2352/5898 2139/2343/5899 2138/2342/5900 +f 2137/2341/5901 2148/2354/5902 2147/2353/5897 2138/2342/5900 +f 2149/2355/5903 2148/2354/5902 2137/2341/5901 2144/2349/5904 +s 329 +f 2150/2356/5883 2149/2355/5882 2144/2349/5894 2143/2348/5893 +s 332 +f 2151/2357/5905 2150/2356/5906 2143/2348/5907 2142/2347/5908 +f 2141/2346/5909 2152/2358/5910 2151/2357/5905 2142/2347/5908 +f 2145/2350/5911 2152/2358/5910 2141/2346/5909 2140/2344/5912 +s 331 +f 2148/2354/5902 2149/2355/5903 2134/2338/5913 +s 332 +f 2132/2336/5914 2150/2356/5906 2151/2357/5905 +f 2142/2347/5908 2143/2348/5907 2131/2335/5915 +s 331 +f 2144/2349/5904 2137/2341/5901 2133/2337/5916 +f 2138/2342/5900 2139/2343/5899 2135/2339/5917 +s 332 +f 2129/2333/5918 2140/2344/5912 2141/2346/5909 +f 2130/2334/5919 2152/2358/5910 2145/2350/5911 +s 331 +f 2136/2340/5920 2146/2352/5898 2147/2353/5897 +s off +f 2136/2340/5921 2147/2353/5922 2152/2358/5923 2130/2334/5924 +f 2147/2353/5925 2148/2354/5926 2151/2357/5927 2152/2358/5928 +f 2148/2354/5929 2134/2338/5930 2132/2336/5931 2151/2357/5932 +f 2133/2337/5933 2137/2341/5934 2142/2347/5935 2131/2335/5936 +f 2137/2341/5937 2138/2342/5938 2141/2346/5939 2142/2347/5940 +f 2138/2342/5941 2135/2339/5942 2129/2333/5943 2141/2346/5944 +s 333 +f 2158/2364/5945 2173/2381/5946 2174/2382/5947 2156/2362/5948 +s 334 +f 2154/2360/5949 2169/2377/5950 2170/2378/5951 2160/2366/5952 +f 2163/2369/5953 2164/2371/5954 2153/2359/5955 2159/2365/5956 +s 333 +f 2167/2374/5957 2168/2375/5958 2157/2363/5959 2155/2361/5960 +s 334 +f 2170/2378/5951 2169/2377/5950 2164/2371/5954 2163/2369/5953 +s 335 +f 2171/2379/5961 2170/2378/5962 2163/2369/5963 2162/2368/5964 +f 2161/2367/5965 2172/2380/5966 2171/2379/5961 2162/2368/5964 +f 2173/2381/5967 2172/2380/5966 2161/2367/5965 2168/2375/5968 +s 333 +f 2174/2382/5947 2173/2381/5946 2168/2375/5958 2167/2374/5957 +s 336 +f 2175/2383/5969 2174/2382/5970 2167/2374/5971 2166/2373/5972 +f 2165/2372/5973 2176/2384/5974 2175/2383/5969 2166/2373/5972 +f 2169/2376/5975 2176/2384/5974 2165/2372/5973 2164/2370/5976 +s 335 +f 2172/2380/5966 2173/2381/5967 2158/2364/5977 +s 336 +f 2156/2362/5978 2174/2382/5970 2175/2383/5969 +f 2166/2373/5972 2167/2374/5971 2155/2361/5979 +s 335 +f 2168/2375/5968 2161/2367/5965 2157/2363/5980 +f 2162/2368/5964 2163/2369/5963 2159/2365/5981 +s 336 +f 2153/2359/5982 2164/2370/5976 2165/2372/5973 +f 2154/2360/5983 2176/2384/5974 2169/2376/5975 +s 335 +f 2160/2366/5984 2170/2378/5962 2171/2379/5961 +s off +f 2160/2366/5985 2171/2379/5986 2176/2384/5987 2154/2360/5988 +f 2171/2379/5989 2172/2380/5990 2175/2383/5991 2176/2384/5992 +f 2172/2380/5993 2158/2364/5994 2156/2362/5995 2175/2383/5996 +f 2157/2363/5997 2161/2367/5998 2166/2373/5999 2155/2361/6000 +f 2161/2367/6001 2162/2368/6002 2165/2372/6003 2166/2373/6004 +f 2162/2368/6005 2159/2365/6006 2153/2359/6007 2165/2372/6008 +s 337 +f 2182/2390/6009 2197/2407/6010 2198/2408/6011 2180/2388/6012 +s 338 +f 2178/2386/6013 2193/2403/6014 2194/2404/6015 2184/2392/6016 +f 2187/2395/6017 2188/2397/6018 2177/2385/6019 2183/2391/6020 +s 337 +f 2191/2400/6021 2192/2401/6022 2181/2389/6023 2179/2387/6024 +s 338 +f 2194/2404/6015 2193/2403/6014 2188/2397/6018 2187/2395/6017 +s 339 +f 2195/2405/6025 2194/2404/6026 2187/2395/6027 2186/2394/6028 +f 2185/2393/6029 2196/2406/6030 2195/2405/6025 2186/2394/6028 +f 2197/2407/6031 2196/2406/6030 2185/2393/6029 2192/2401/6032 +s 337 +f 2198/2408/6011 2197/2407/6010 2192/2401/6022 2191/2400/6021 +s 340 +f 2199/2409/6033 2198/2408/6034 2191/2400/6035 2190/2399/6036 +f 2189/2398/6037 2200/2410/6038 2199/2409/6033 2190/2399/6036 +f 2193/2402/6039 2200/2410/6038 2189/2398/6037 2188/2396/6040 +s 339 +f 2196/2406/6030 2197/2407/6031 2182/2390/6041 +s 340 +f 2180/2388/6042 2198/2408/6034 2199/2409/6033 +f 2190/2399/6036 2191/2400/6035 2179/2387/6043 +s 339 +f 2192/2401/6032 2185/2393/6029 2181/2389/6044 +f 2186/2394/6028 2187/2395/6027 2183/2391/6045 +s 340 +f 2177/2385/6046 2188/2396/6040 2189/2398/6037 +f 2178/2386/6047 2200/2410/6038 2193/2402/6039 +s 339 +f 2184/2392/6048 2194/2404/6026 2195/2405/6025 +s off +f 2184/2392/6049 2195/2405/6050 2200/2410/6051 2178/2386/6052 +f 2195/2405/6053 2196/2406/6054 2199/2409/6055 2200/2410/6056 +f 2196/2406/6057 2182/2390/6058 2180/2388/6059 2199/2409/6060 +f 2181/2389/6061 2185/2393/6062 2190/2399/6063 2179/2387/6064 +f 2185/2393/6065 2186/2394/6066 2189/2398/6067 2190/2399/6068 +f 2186/2394/6069 2183/2391/6070 2177/2385/6071 2189/2398/6072 +s 341 +f 2206/2416/6073 2221/2433/6074 2222/2434/6075 2204/2414/6076 +s 342 +f 2202/2412/6077 2217/2429/6078 2218/2430/6079 2208/2418/6080 +f 2211/2421/6081 2212/2423/6082 2201/2411/6083 2207/2417/6084 +s 341 +f 2215/2426/6085 2216/2427/6086 2205/2415/6087 2203/2413/6088 +s 342 +f 2218/2430/6079 2217/2429/6078 2212/2423/6082 2211/2421/6081 +s 343 +f 2219/2431/6089 2218/2430/6090 2211/2421/6091 2210/2420/6092 +f 2209/2419/6093 2220/2432/6094 2219/2431/6089 2210/2420/6092 +f 2221/2433/6095 2220/2432/6094 2209/2419/6093 2216/2427/6096 +s 341 +f 2222/2434/6075 2221/2433/6074 2216/2427/6086 2215/2426/6085 +s 344 +f 2223/2435/6097 2222/2434/6098 2215/2426/6099 2214/2425/6100 +f 2213/2424/6101 2224/2436/6102 2223/2435/6097 2214/2425/6100 +f 2217/2428/6103 2224/2436/6102 2213/2424/6101 2212/2422/6104 +s 343 +f 2220/2432/6094 2221/2433/6095 2206/2416/6105 +s 344 +f 2204/2414/6106 2222/2434/6098 2223/2435/6097 +f 2214/2425/6100 2215/2426/6099 2203/2413/6107 +s 343 +f 2216/2427/6096 2209/2419/6093 2205/2415/6108 +f 2210/2420/6092 2211/2421/6091 2207/2417/6109 +s 344 +f 2201/2411/6110 2212/2422/6104 2213/2424/6101 +f 2202/2412/6111 2224/2436/6102 2217/2428/6103 +s 343 +f 2208/2418/6112 2218/2430/6090 2219/2431/6089 +s off +f 2208/2418/6113 2219/2431/6114 2224/2436/6115 2202/2412/6116 +f 2219/2431/6117 2220/2432/6118 2223/2435/6119 2224/2436/6120 +f 2220/2432/6121 2206/2416/6122 2204/2414/6123 2223/2435/6124 +f 2205/2415/6125 2209/2419/6126 2214/2425/6127 2203/2413/6128 +f 2209/2419/6129 2210/2420/6130 2213/2424/6131 2214/2425/6132 +f 2210/2420/6133 2207/2417/6134 2201/2411/6135 2213/2424/6136 +s 345 +f 2230/2442/6137 2245/2459/6138 2246/2460/6139 2228/2440/6140 +s 346 +f 2226/2438/6141 2241/2455/6142 2242/2456/6143 2232/2444/6144 +f 2235/2447/6145 2236/2449/6146 2225/2437/6147 2231/2443/6148 +s 345 +f 2239/2452/6149 2240/2453/6150 2229/2441/6151 2227/2439/6152 +s 346 +f 2242/2456/6143 2241/2455/6142 2236/2449/6146 2235/2447/6145 +s 347 +f 2243/2457/6153 2242/2456/6154 2235/2447/6155 2234/2446/6156 +f 2233/2445/6157 2244/2458/6158 2243/2457/6153 2234/2446/6156 +f 2245/2459/6159 2244/2458/6158 2233/2445/6157 2240/2453/6160 +s 345 +f 2246/2460/6139 2245/2459/6138 2240/2453/6150 2239/2452/6149 +s 348 +f 2247/2461/6161 2246/2460/6162 2239/2452/6163 2238/2451/6164 +f 2237/2450/6165 2248/2462/6166 2247/2461/6161 2238/2451/6164 +f 2241/2454/6167 2248/2462/6166 2237/2450/6165 2236/2448/6168 +s 347 +f 2244/2458/6158 2245/2459/6159 2230/2442/6169 +s 348 +f 2228/2440/6170 2246/2460/6162 2247/2461/6161 +f 2238/2451/6164 2239/2452/6163 2227/2439/6171 +s 347 +f 2240/2453/6160 2233/2445/6157 2229/2441/6172 +f 2234/2446/6156 2235/2447/6155 2231/2443/6173 +s 348 +f 2225/2437/6174 2236/2448/6168 2237/2450/6165 +f 2226/2438/6175 2248/2462/6166 2241/2454/6167 +s 347 +f 2232/2444/6176 2242/2456/6154 2243/2457/6153 +s off +f 2232/2444/6177 2243/2457/6178 2248/2462/6179 2226/2438/6180 +f 2243/2457/6181 2244/2458/6182 2247/2461/6183 2248/2462/6184 +f 2244/2458/6185 2230/2442/6186 2228/2440/6187 2247/2461/6188 +f 2229/2441/6189 2233/2445/6190 2238/2451/6191 2227/2439/6192 +f 2233/2445/6193 2234/2446/6194 2237/2450/6195 2238/2451/6196 +f 2234/2446/6197 2231/2443/6198 2225/2437/6199 2237/2450/6200 +s 349 +f 2254/2468/6201 2269/2485/6202 2270/2486/6203 2252/2466/6204 +s 350 +f 2250/2464/6205 2265/2481/6206 2266/2482/6207 2256/2470/6208 +f 2259/2473/6209 2260/2475/6210 2249/2463/6211 2255/2469/6212 +s 349 +f 2263/2478/6213 2264/2479/6214 2253/2467/6215 2251/2465/6216 +s 350 +f 2266/2482/6207 2265/2481/6206 2260/2475/6210 2259/2473/6209 +s 351 +f 2267/2483/6217 2266/2482/6218 2259/2473/6219 2258/2472/6220 +f 2257/2471/6221 2268/2484/6222 2267/2483/6217 2258/2472/6220 +f 2269/2485/6223 2268/2484/6222 2257/2471/6221 2264/2479/6224 +s 349 +f 2270/2486/6203 2269/2485/6202 2264/2479/6214 2263/2478/6213 +s 352 +f 2271/2487/6225 2270/2486/6226 2263/2478/6227 2262/2477/6228 +f 2261/2476/6229 2272/2488/6230 2271/2487/6225 2262/2477/6228 +f 2265/2480/6231 2272/2488/6230 2261/2476/6229 2260/2474/6232 +s 351 +f 2268/2484/6222 2269/2485/6223 2254/2468/6233 +s 352 +f 2252/2466/6234 2270/2486/6226 2271/2487/6225 +f 2262/2477/6228 2263/2478/6227 2251/2465/6235 +s 351 +f 2264/2479/6224 2257/2471/6221 2253/2467/6236 +f 2258/2472/6220 2259/2473/6219 2255/2469/6237 +s 352 +f 2249/2463/6238 2260/2474/6232 2261/2476/6229 +f 2250/2464/6239 2272/2488/6230 2265/2480/6231 +s 351 +f 2256/2470/6240 2266/2482/6218 2267/2483/6217 +s off +f 2256/2470/6241 2267/2483/6242 2272/2488/6243 2250/2464/6244 +f 2267/2483/6245 2268/2484/6246 2271/2487/6247 2272/2488/6248 +f 2268/2484/6249 2254/2468/6250 2252/2466/6251 2271/2487/6252 +f 2253/2467/6253 2257/2471/6254 2262/2477/6255 2251/2465/6256 +f 2257/2471/6257 2258/2472/6258 2261/2476/6259 2262/2477/6260 +f 2258/2472/6261 2255/2469/6262 2249/2463/6263 2261/2476/6264 +s 353 +f 2278/2494/6265 2293/2511/6266 2294/2512/6267 2276/2492/6268 +s 354 +f 2274/2490/6269 2289/2507/6270 2290/2508/6271 2280/2496/6272 +f 2283/2499/6273 2284/2501/6274 2273/2489/6275 2279/2495/6276 +s 353 +f 2287/2504/6277 2288/2505/6278 2277/2493/6279 2275/2491/6280 +s 354 +f 2290/2508/6271 2289/2507/6270 2284/2501/6274 2283/2499/6273 +s 355 +f 2291/2509/6281 2290/2508/6282 2283/2499/6283 2282/2498/6284 +f 2281/2497/6285 2292/2510/6286 2291/2509/6281 2282/2498/6284 +f 2293/2511/6287 2292/2510/6286 2281/2497/6285 2288/2505/6288 +s 353 +f 2294/2512/6267 2293/2511/6266 2288/2505/6278 2287/2504/6277 +s 356 +f 2295/2513/6289 2294/2512/6290 2287/2504/6291 2286/2503/6292 +f 2285/2502/6293 2296/2514/6294 2295/2513/6289 2286/2503/6292 +f 2289/2506/6295 2296/2514/6294 2285/2502/6293 2284/2500/6296 +s 355 +f 2292/2510/6286 2293/2511/6287 2278/2494/6297 +s 356 +f 2276/2492/6298 2294/2512/6290 2295/2513/6289 +f 2286/2503/6292 2287/2504/6291 2275/2491/6299 +s 355 +f 2288/2505/6288 2281/2497/6285 2277/2493/6300 +f 2282/2498/6284 2283/2499/6283 2279/2495/6301 +s 356 +f 2273/2489/6302 2284/2500/6296 2285/2502/6293 +f 2274/2490/6303 2296/2514/6294 2289/2506/6295 +s 355 +f 2280/2496/6304 2290/2508/6282 2291/2509/6281 +s off +f 2280/2496/6305 2291/2509/6306 2296/2514/6307 2274/2490/6308 +f 2291/2509/6309 2292/2510/6310 2295/2513/6311 2296/2514/6312 +f 2292/2510/6313 2278/2494/6314 2276/2492/6315 2295/2513/6316 +f 2277/2493/6317 2281/2497/6318 2286/2503/6319 2275/2491/6320 +f 2281/2497/6321 2282/2498/6322 2285/2502/6323 2286/2503/6324 +f 2282/2498/6325 2279/2495/6326 2273/2489/6327 2285/2502/6328 +s 357 +f 2302/2520/6329 2317/2537/6330 2318/2538/6331 2300/2518/6332 +s 358 +f 2298/2516/6333 2313/2533/6334 2314/2534/6335 2304/2522/6336 +f 2307/2525/6337 2308/2527/6338 2297/2515/6339 2303/2521/6340 +s 357 +f 2311/2530/6341 2312/2531/6342 2301/2519/6343 2299/2517/6344 +s 358 +f 2314/2534/6335 2313/2533/6334 2308/2527/6338 2307/2525/6337 +s 359 +f 2315/2535/6345 2314/2534/6346 2307/2525/6347 2306/2524/6348 +f 2305/2523/6349 2316/2536/6350 2315/2535/6345 2306/2524/6348 +f 2317/2537/6351 2316/2536/6350 2305/2523/6349 2312/2531/6352 +s 357 +f 2318/2538/6331 2317/2537/6330 2312/2531/6342 2311/2530/6341 +s 360 +f 2319/2539/6353 2318/2538/6354 2311/2530/6355 2310/2529/6356 +f 2309/2528/6357 2320/2540/6358 2319/2539/6353 2310/2529/6356 +f 2313/2532/6359 2320/2540/6358 2309/2528/6357 2308/2526/6360 +s 359 +f 2316/2536/6350 2317/2537/6351 2302/2520/6361 +s 360 +f 2300/2518/6362 2318/2538/6354 2319/2539/6353 +f 2310/2529/6356 2311/2530/6355 2299/2517/6363 +s 359 +f 2312/2531/6352 2305/2523/6349 2301/2519/6364 +f 2306/2524/6348 2307/2525/6347 2303/2521/6365 +s 360 +f 2297/2515/6366 2308/2526/6360 2309/2528/6357 +f 2298/2516/6367 2320/2540/6358 2313/2532/6359 +s 359 +f 2304/2522/6368 2314/2534/6346 2315/2535/6345 +s off +f 2304/2522/6369 2315/2535/6370 2320/2540/6371 2298/2516/6372 +f 2315/2535/6373 2316/2536/6374 2319/2539/6375 2320/2540/6376 +f 2316/2536/6377 2302/2520/6378 2300/2518/6379 2319/2539/6380 +f 2301/2519/6381 2305/2523/6382 2310/2529/6383 2299/2517/6384 +f 2305/2523/6385 2306/2524/6386 2309/2528/6387 2310/2529/6388 +f 2306/2524/6389 2303/2521/6390 2297/2515/6391 2309/2528/6392 +s 361 +f 2326/2546/6393 2341/2563/6394 2342/2564/6395 2324/2544/6396 +s 362 +f 2322/2542/6397 2337/2559/6398 2338/2560/6399 2328/2548/6400 +f 2331/2551/6401 2332/2553/6402 2321/2541/6403 2327/2547/6404 +s 361 +f 2335/2556/6405 2336/2557/6406 2325/2545/6407 2323/2543/6408 +s 362 +f 2338/2560/6399 2337/2559/6398 2332/2553/6402 2331/2551/6401 +s 363 +f 2339/2561/6409 2338/2560/6410 2331/2551/6411 2330/2550/6412 +f 2329/2549/6413 2340/2562/6414 2339/2561/6409 2330/2550/6412 +f 2341/2563/6415 2340/2562/6414 2329/2549/6413 2336/2557/6416 +s 361 +f 2342/2564/6395 2341/2563/6394 2336/2557/6406 2335/2556/6405 +s 364 +f 2343/2565/6417 2342/2564/6418 2335/2556/6419 2334/2555/6420 +f 2333/2554/6421 2344/2566/6422 2343/2565/6417 2334/2555/6420 +f 2337/2558/6423 2344/2566/6422 2333/2554/6421 2332/2552/6424 +s 363 +f 2340/2562/6414 2341/2563/6415 2326/2546/6425 +s 364 +f 2324/2544/6426 2342/2564/6418 2343/2565/6417 +f 2334/2555/6420 2335/2556/6419 2323/2543/6427 +s 363 +f 2336/2557/6416 2329/2549/6413 2325/2545/6428 +f 2330/2550/6412 2331/2551/6411 2327/2547/6429 +s 364 +f 2321/2541/6430 2332/2552/6424 2333/2554/6421 +f 2322/2542/6431 2344/2566/6422 2337/2558/6423 +s 363 +f 2328/2548/6432 2338/2560/6410 2339/2561/6409 +s off +f 2328/2548/6433 2339/2561/6434 2344/2566/6435 2322/2542/6436 +f 2339/2561/6437 2340/2562/6438 2343/2565/6439 2344/2566/6440 +f 2340/2562/6441 2326/2546/6442 2324/2544/6443 2343/2565/6444 +f 2325/2545/6445 2329/2549/6446 2334/2555/6447 2323/2543/6448 +f 2329/2549/6449 2330/2550/6450 2333/2554/6451 2334/2555/6452 +f 2330/2550/6453 2327/2547/6454 2321/2541/6455 2333/2554/6456 +s 365 +f 2350/2572/6457 2365/2589/6458 2366/2590/6459 2348/2570/6460 +s 366 +f 2346/2568/6461 2361/2585/6462 2362/2586/6463 2352/2574/6464 +f 2355/2577/6465 2356/2579/6466 2345/2567/6467 2351/2573/6468 +s 365 +f 2359/2582/6469 2360/2583/6470 2349/2571/6471 2347/2569/6472 +s 366 +f 2362/2586/6463 2361/2585/6462 2356/2579/6466 2355/2577/6465 +s 367 +f 2363/2587/6473 2362/2586/6474 2355/2577/6475 2354/2576/6476 +f 2353/2575/6477 2364/2588/6478 2363/2587/6473 2354/2576/6476 +f 2365/2589/6479 2364/2588/6478 2353/2575/6477 2360/2583/6480 +s 365 +f 2366/2590/6459 2365/2589/6458 2360/2583/6470 2359/2582/6469 +s 368 +f 2367/2591/6481 2366/2590/6482 2359/2582/6483 2358/2581/6484 +f 2357/2580/6485 2368/2592/6486 2367/2591/6481 2358/2581/6484 +f 2361/2584/6487 2368/2592/6486 2357/2580/6485 2356/2578/6488 +s 367 +f 2364/2588/6478 2365/2589/6479 2350/2572/6489 +s 368 +f 2348/2570/6490 2366/2590/6482 2367/2591/6481 +f 2358/2581/6484 2359/2582/6483 2347/2569/6491 +s 367 +f 2360/2583/6480 2353/2575/6477 2349/2571/6492 +f 2354/2576/6476 2355/2577/6475 2351/2573/6493 +s 368 +f 2345/2567/6494 2356/2578/6488 2357/2580/6485 +f 2346/2568/6495 2368/2592/6486 2361/2584/6487 +s 367 +f 2352/2574/6496 2362/2586/6474 2363/2587/6473 +s off +f 2352/2574/6497 2363/2587/6498 2368/2592/6499 2346/2568/6500 +f 2363/2587/6501 2364/2588/6502 2367/2591/6503 2368/2592/6504 +f 2364/2588/6505 2350/2572/6506 2348/2570/6507 2367/2591/6508 +f 2349/2571/6509 2353/2575/6510 2358/2581/6511 2347/2569/6512 +f 2353/2575/6513 2354/2576/6514 2357/2580/6515 2358/2581/6516 +f 2354/2576/6517 2351/2573/6518 2345/2567/6519 2357/2580/6520 +s 369 +f 2374/2598/6521 2389/2615/6522 2390/2616/6523 2372/2596/6524 +s 370 +f 2370/2594/6525 2385/2611/6526 2386/2612/6527 2376/2600/6528 +f 2379/2603/6529 2380/2605/6530 2369/2593/6531 2375/2599/6532 +s 369 +f 2383/2608/6533 2384/2609/6534 2373/2597/6535 2371/2595/6536 +s 370 +f 2386/2612/6527 2385/2611/6526 2380/2605/6530 2379/2603/6529 +s 371 +f 2387/2613/6537 2386/2612/6538 2379/2603/6539 2378/2602/6540 +f 2377/2601/6541 2388/2614/6542 2387/2613/6537 2378/2602/6540 +f 2389/2615/6543 2388/2614/6542 2377/2601/6541 2384/2609/6544 +s 369 +f 2390/2616/6523 2389/2615/6522 2384/2609/6534 2383/2608/6533 +s 372 +f 2391/2617/6545 2390/2616/6546 2383/2608/6547 2382/2607/6548 +f 2381/2606/6549 2392/2618/6550 2391/2617/6545 2382/2607/6548 +f 2385/2610/6551 2392/2618/6550 2381/2606/6549 2380/2604/6552 +s 371 +f 2388/2614/6542 2389/2615/6543 2374/2598/6553 +s 372 +f 2372/2596/6554 2390/2616/6546 2391/2617/6545 +f 2382/2607/6548 2383/2608/6547 2371/2595/6555 +s 371 +f 2384/2609/6544 2377/2601/6541 2373/2597/6556 +f 2378/2602/6540 2379/2603/6539 2375/2599/6557 +s 372 +f 2369/2593/6558 2380/2604/6552 2381/2606/6549 +f 2370/2594/6559 2392/2618/6550 2385/2610/6551 +s 371 +f 2376/2600/6560 2386/2612/6538 2387/2613/6537 +s off +f 2376/2600/6561 2387/2613/6562 2392/2618/6563 2370/2594/6564 +f 2387/2613/6565 2388/2614/6566 2391/2617/6567 2392/2618/6568 +f 2388/2614/6569 2374/2598/6570 2372/2596/6571 2391/2617/6572 +f 2373/2597/6573 2377/2601/6574 2382/2607/6575 2371/2595/6576 +f 2377/2601/6577 2378/2602/6578 2381/2606/6579 2382/2607/6580 +f 2378/2602/6581 2375/2599/6582 2369/2593/6583 2381/2606/6584 +s 373 +f 2398/2624/6585 2413/2641/6586 2414/2642/6587 2396/2622/6588 +s 374 +f 2394/2620/6589 2409/2637/6590 2410/2638/6591 2400/2626/6592 +f 2403/2629/6593 2404/2631/6594 2393/2619/6595 2399/2625/6596 +s 373 +f 2407/2634/6597 2408/2635/6598 2397/2623/6599 2395/2621/6600 +s 374 +f 2410/2638/6591 2409/2637/6590 2404/2631/6594 2403/2629/6593 +s 375 +f 2411/2639/6601 2410/2638/6602 2403/2629/6603 2402/2628/6604 +f 2401/2627/6605 2412/2640/6606 2411/2639/6601 2402/2628/6604 +f 2413/2641/6607 2412/2640/6606 2401/2627/6605 2408/2635/6608 +s 373 +f 2414/2642/6587 2413/2641/6586 2408/2635/6598 2407/2634/6597 +s 376 +f 2415/2643/6609 2414/2642/6610 2407/2634/6611 2406/2633/6612 +f 2405/2632/6613 2416/2644/6614 2415/2643/6609 2406/2633/6612 +f 2409/2636/6615 2416/2644/6614 2405/2632/6613 2404/2630/6616 +s 375 +f 2412/2640/6606 2413/2641/6607 2398/2624/6617 +s 376 +f 2396/2622/6618 2414/2642/6610 2415/2643/6609 +f 2406/2633/6612 2407/2634/6611 2395/2621/6619 +s 375 +f 2408/2635/6608 2401/2627/6605 2397/2623/6620 +f 2402/2628/6604 2403/2629/6603 2399/2625/6621 +s 376 +f 2393/2619/6622 2404/2630/6616 2405/2632/6613 +f 2394/2620/6623 2416/2644/6614 2409/2636/6615 +s 375 +f 2400/2626/6624 2410/2638/6602 2411/2639/6601 +s off +f 2400/2626/6625 2411/2639/6626 2416/2644/6627 2394/2620/6628 +f 2411/2639/6629 2412/2640/6630 2415/2643/6631 2416/2644/6632 +f 2412/2640/6633 2398/2624/6634 2396/2622/6635 2415/2643/6636 +f 2397/2623/6637 2401/2627/6638 2406/2633/6639 2395/2621/6640 +f 2401/2627/6641 2402/2628/6642 2405/2632/6643 2406/2633/6644 +f 2402/2628/6645 2399/2625/6646 2393/2619/6647 2405/2632/6648 +s 377 +f 2422/2650/6649 2437/2667/6650 2438/2668/6651 2420/2648/6652 +s 378 +f 2418/2646/6653 2433/2663/6654 2434/2664/6655 2424/2652/6656 +f 2427/2655/6657 2428/2657/6658 2417/2645/6659 2423/2651/6660 +s 377 +f 2431/2660/6661 2432/2661/6662 2421/2649/6663 2419/2647/6664 +s 378 +f 2434/2664/6655 2433/2663/6654 2428/2657/6658 2427/2655/6657 +s 379 +f 2435/2665/6665 2434/2664/6666 2427/2655/6667 2426/2654/6668 +f 2425/2653/6669 2436/2666/6670 2435/2665/6665 2426/2654/6668 +f 2437/2667/6671 2436/2666/6670 2425/2653/6669 2432/2661/6672 +s 377 +f 2438/2668/6651 2437/2667/6650 2432/2661/6662 2431/2660/6661 +s 380 +f 2439/2669/6673 2438/2668/6674 2431/2660/6675 2430/2659/6676 +f 2429/2658/6677 2440/2670/6678 2439/2669/6673 2430/2659/6676 +f 2433/2662/6679 2440/2670/6678 2429/2658/6677 2428/2656/6680 +s 379 +f 2436/2666/6670 2437/2667/6671 2422/2650/6681 +s 380 +f 2420/2648/6682 2438/2668/6674 2439/2669/6673 +f 2430/2659/6676 2431/2660/6675 2419/2647/6683 +s 379 +f 2432/2661/6672 2425/2653/6669 2421/2649/6684 +f 2426/2654/6668 2427/2655/6667 2423/2651/6685 +s 380 +f 2417/2645/6686 2428/2656/6680 2429/2658/6677 +f 2418/2646/6687 2440/2670/6678 2433/2662/6679 +s 379 +f 2424/2652/6688 2434/2664/6666 2435/2665/6665 +s off +f 2424/2652/6689 2435/2665/6690 2440/2670/6691 2418/2646/6692 +f 2435/2665/6693 2436/2666/6694 2439/2669/6695 2440/2670/6696 +f 2436/2666/6697 2422/2650/6698 2420/2648/6699 2439/2669/6700 +f 2421/2649/6701 2425/2653/6702 2430/2659/6703 2419/2647/6704 +f 2425/2653/6705 2426/2654/6706 2429/2658/6707 2430/2659/6708 +f 2426/2654/6709 2423/2651/6710 2417/2645/6711 2429/2658/6712 +s 381 +f 2446/2676/6713 2461/2693/6714 2462/2694/6715 2444/2674/6716 +s 382 +f 2442/2672/6717 2457/2689/6718 2458/2690/6719 2448/2678/6720 +f 2451/2681/6721 2452/2683/6722 2441/2671/6723 2447/2677/6724 +s 381 +f 2455/2686/6725 2456/2687/6726 2445/2675/6727 2443/2673/6728 +s 382 +f 2458/2690/6719 2457/2689/6718 2452/2683/6722 2451/2681/6721 +s 383 +f 2459/2691/6729 2458/2690/6730 2451/2681/6731 2450/2680/6732 +f 2449/2679/6733 2460/2692/6734 2459/2691/6729 2450/2680/6732 +f 2461/2693/6735 2460/2692/6734 2449/2679/6733 2456/2687/6736 +s 381 +f 2462/2694/6715 2461/2693/6714 2456/2687/6726 2455/2686/6725 +s 384 +f 2463/2695/6737 2462/2694/6738 2455/2686/6739 2454/2685/6740 +f 2453/2684/6741 2464/2696/6742 2463/2695/6737 2454/2685/6740 +f 2457/2688/6743 2464/2696/6742 2453/2684/6741 2452/2682/6744 +s 383 +f 2460/2692/6734 2461/2693/6735 2446/2676/6745 +s 384 +f 2444/2674/6746 2462/2694/6738 2463/2695/6737 +f 2454/2685/6740 2455/2686/6739 2443/2673/6747 +s 383 +f 2456/2687/6736 2449/2679/6733 2445/2675/6748 +f 2450/2680/6732 2451/2681/6731 2447/2677/6749 +s 384 +f 2441/2671/6750 2452/2682/6744 2453/2684/6741 +f 2442/2672/6751 2464/2696/6742 2457/2688/6743 +s 383 +f 2448/2678/6752 2458/2690/6730 2459/2691/6729 +s off +f 2448/2678/6753 2459/2691/6754 2464/2696/6755 2442/2672/6756 +f 2459/2691/6757 2460/2692/6758 2463/2695/6759 2464/2696/6760 +f 2460/2692/6761 2446/2676/6762 2444/2674/6763 2463/2695/6764 +f 2445/2675/6765 2449/2679/6766 2454/2685/6767 2443/2673/6768 +f 2449/2679/6769 2450/2680/6770 2453/2684/6771 2454/2685/6772 +f 2450/2680/6773 2447/2677/6774 2441/2671/6775 2453/2684/6776 +s 385 +f 2470/2702/6777 2485/2719/6778 2486/2720/6779 2468/2700/6780 +s 386 +f 2466/2698/6781 2481/2715/6782 2482/2716/6783 2472/2704/6784 +f 2475/2707/6785 2476/2709/6786 2465/2697/6787 2471/2703/6788 +s 385 +f 2479/2712/6789 2480/2713/6790 2469/2701/6791 2467/2699/6792 +s 386 +f 2482/2716/6783 2481/2715/6782 2476/2709/6786 2475/2707/6785 +s 387 +f 2483/2717/6793 2482/2716/6794 2475/2707/6795 2474/2706/6796 +f 2473/2705/6797 2484/2718/6798 2483/2717/6793 2474/2706/6796 +f 2485/2719/6799 2484/2718/6798 2473/2705/6797 2480/2713/6800 +s 385 +f 2486/2720/6779 2485/2719/6778 2480/2713/6790 2479/2712/6789 +s 388 +f 2487/2721/6801 2486/2720/6802 2479/2712/6803 2478/2711/6804 +f 2477/2710/6805 2488/2722/6806 2487/2721/6801 2478/2711/6804 +f 2481/2714/6807 2488/2722/6806 2477/2710/6805 2476/2708/6808 +s 387 +f 2484/2718/6798 2485/2719/6799 2470/2702/6809 +s 388 +f 2468/2700/6810 2486/2720/6802 2487/2721/6801 +f 2478/2711/6804 2479/2712/6803 2467/2699/6811 +s 387 +f 2480/2713/6800 2473/2705/6797 2469/2701/6812 +f 2474/2706/6796 2475/2707/6795 2471/2703/6813 +s 388 +f 2465/2697/6814 2476/2708/6808 2477/2710/6805 +f 2466/2698/6815 2488/2722/6806 2481/2714/6807 +s 387 +f 2472/2704/6816 2482/2716/6794 2483/2717/6793 +s off +f 2472/2704/6817 2483/2717/6818 2488/2722/6819 2466/2698/6820 +f 2483/2717/6821 2484/2718/6822 2487/2721/6823 2488/2722/6824 +f 2484/2718/6825 2470/2702/6826 2468/2700/6827 2487/2721/6828 +f 2469/2701/6829 2473/2705/6830 2478/2711/6831 2467/2699/6832 +f 2473/2705/6833 2474/2706/6834 2477/2710/6835 2478/2711/6836 +f 2474/2706/6837 2471/2703/6838 2465/2697/6839 2477/2710/6840 +s 389 +f 2494/2728/6841 2509/2745/6842 2510/2746/6843 2492/2726/6844 +s 390 +f 2490/2724/6845 2505/2741/6846 2506/2742/6847 2496/2730/6848 +f 2499/2733/6849 2500/2735/6850 2489/2723/6851 2495/2729/6852 +s 389 +f 2503/2738/6853 2504/2739/6854 2493/2727/6855 2491/2725/6856 +s 390 +f 2506/2742/6847 2505/2741/6846 2500/2735/6850 2499/2733/6849 +s 391 +f 2507/2743/6857 2506/2742/6858 2499/2733/6859 2498/2732/6860 +f 2497/2731/6861 2508/2744/6862 2507/2743/6857 2498/2732/6860 +f 2509/2745/6863 2508/2744/6862 2497/2731/6861 2504/2739/6864 +s 389 +f 2510/2746/6843 2509/2745/6842 2504/2739/6854 2503/2738/6853 +s 392 +f 2511/2747/6865 2510/2746/6866 2503/2738/6867 2502/2737/6868 +f 2501/2736/6869 2512/2748/6870 2511/2747/6865 2502/2737/6868 +f 2505/2740/6871 2512/2748/6870 2501/2736/6869 2500/2734/6872 +s 391 +f 2508/2744/6862 2509/2745/6863 2494/2728/6873 +s 392 +f 2492/2726/6874 2510/2746/6866 2511/2747/6865 +f 2502/2737/6868 2503/2738/6867 2491/2725/6875 +s 391 +f 2504/2739/6864 2497/2731/6861 2493/2727/6876 +f 2498/2732/6860 2499/2733/6859 2495/2729/6877 +s 392 +f 2489/2723/6878 2500/2734/6872 2501/2736/6869 +f 2490/2724/6879 2512/2748/6870 2505/2740/6871 +s 391 +f 2496/2730/6880 2506/2742/6858 2507/2743/6857 +s off +f 2496/2730/6881 2507/2743/6882 2512/2748/6883 2490/2724/6884 +f 2507/2743/6885 2508/2744/6886 2511/2747/6887 2512/2748/6888 +f 2508/2744/6889 2494/2728/6890 2492/2726/6891 2511/2747/6892 +f 2493/2727/6893 2497/2731/6894 2502/2737/6895 2491/2725/6896 +f 2497/2731/6897 2498/2732/6898 2501/2736/6899 2502/2737/6900 +f 2498/2732/6901 2495/2729/6902 2489/2723/6903 2501/2736/6904 +s 393 +f 2518/2754/6905 2533/2771/6906 2534/2772/6907 2516/2752/6908 +s 394 +f 2514/2750/6909 2529/2767/6910 2530/2768/6911 2520/2756/6912 +f 2523/2759/6913 2524/2761/6914 2513/2749/6915 2519/2755/6916 +s 393 +f 2527/2764/6917 2528/2765/6918 2517/2753/6919 2515/2751/6920 +s 394 +f 2530/2768/6911 2529/2767/6910 2524/2761/6914 2523/2759/6913 +s 395 +f 2531/2769/6921 2530/2768/6922 2523/2759/6923 2522/2758/6924 +f 2521/2757/6925 2532/2770/6926 2531/2769/6921 2522/2758/6924 +f 2533/2771/6927 2532/2770/6926 2521/2757/6925 2528/2765/6928 +s 393 +f 2534/2772/6907 2533/2771/6906 2528/2765/6918 2527/2764/6917 +s 396 +f 2535/2773/6929 2534/2772/6930 2527/2764/6931 2526/2763/6932 +f 2525/2762/6933 2536/2774/6934 2535/2773/6929 2526/2763/6932 +f 2529/2766/6935 2536/2774/6934 2525/2762/6933 2524/2760/6936 +s 395 +f 2532/2770/6926 2533/2771/6927 2518/2754/6937 +s 396 +f 2516/2752/6938 2534/2772/6930 2535/2773/6929 +f 2526/2763/6932 2527/2764/6931 2515/2751/6939 +s 395 +f 2528/2765/6928 2521/2757/6925 2517/2753/6940 +f 2522/2758/6924 2523/2759/6923 2519/2755/6941 +s 396 +f 2513/2749/6942 2524/2760/6936 2525/2762/6933 +f 2514/2750/6943 2536/2774/6934 2529/2766/6935 +s 395 +f 2520/2756/6944 2530/2768/6922 2531/2769/6921 +s off +f 2520/2756/6945 2531/2769/6946 2536/2774/6947 2514/2750/6948 +f 2531/2769/6949 2532/2770/6950 2535/2773/6951 2536/2774/6952 +f 2532/2770/6953 2518/2754/6954 2516/2752/6955 2535/2773/6956 +f 2517/2753/6957 2521/2757/6958 2526/2763/6959 2515/2751/6960 +f 2521/2757/6961 2522/2758/6962 2525/2762/6963 2526/2763/6964 +f 2522/2758/6965 2519/2755/6966 2513/2749/6967 2525/2762/6968 +s 397 +f 2542/2780/6969 2557/2797/6970 2558/2798/6971 2540/2778/6972 +s 398 +f 2538/2776/6973 2553/2793/6974 2554/2794/6975 2544/2782/6976 +f 2547/2785/6977 2548/2787/6978 2537/2775/6979 2543/2781/6980 +s 397 +f 2551/2790/6981 2552/2791/6982 2541/2779/6983 2539/2777/6984 +s 398 +f 2554/2794/6975 2553/2793/6974 2548/2787/6978 2547/2785/6977 +s 399 +f 2555/2795/6985 2554/2794/6986 2547/2785/6987 2546/2784/6988 +f 2545/2783/6989 2556/2796/6990 2555/2795/6985 2546/2784/6988 +f 2557/2797/6991 2556/2796/6990 2545/2783/6989 2552/2791/6992 +s 397 +f 2558/2798/6971 2557/2797/6970 2552/2791/6982 2551/2790/6981 +s 400 +f 2559/2799/6993 2558/2798/6994 2551/2790/6995 2550/2789/6996 +f 2549/2788/6997 2560/2800/6998 2559/2799/6993 2550/2789/6996 +f 2553/2792/6999 2560/2800/6998 2549/2788/6997 2548/2786/7000 +s 399 +f 2556/2796/6990 2557/2797/6991 2542/2780/7001 +s 400 +f 2540/2778/7002 2558/2798/6994 2559/2799/6993 +f 2550/2789/6996 2551/2790/6995 2539/2777/7003 +s 399 +f 2552/2791/6992 2545/2783/6989 2541/2779/7004 +f 2546/2784/6988 2547/2785/6987 2543/2781/7005 +s 400 +f 2537/2775/7006 2548/2786/7000 2549/2788/6997 +f 2538/2776/7007 2560/2800/6998 2553/2792/6999 +s 399 +f 2544/2782/7008 2554/2794/6986 2555/2795/6985 +s off +f 2544/2782/7009 2555/2795/7010 2560/2800/7011 2538/2776/7012 +f 2555/2795/7013 2556/2796/7014 2559/2799/7015 2560/2800/7016 +f 2556/2796/7017 2542/2780/7018 2540/2778/7019 2559/2799/7020 +f 2541/2779/7021 2545/2783/7022 2550/2789/7023 2539/2777/7024 +f 2545/2783/7025 2546/2784/7026 2549/2788/7027 2550/2789/7028 +f 2546/2784/7029 2543/2781/7030 2537/2775/7031 2549/2788/7032 +v 12.763257 8.665144 -80.176773 +v 12.617001 8.565849 -80.250000 +v 12.470746 8.466555 -80.176773 +v 12.410165 8.425426 -80.000000 +v 12.470746 8.466555 -79.823227 +v 12.617001 8.565849 -79.750000 +v 12.763257 8.665144 -79.823227 +v 12.823837 8.706273 -80.000000 +v 10.318675 11.467798 -79.663956 +v 10.200432 11.336387 -79.737183 +v 10.082190 11.204977 -79.663956 +v 10.033212 11.150545 -79.487183 +v 10.082190 11.204977 -79.310410 +v 10.200432 11.336387 -79.237183 +v 10.318675 11.467798 -79.310410 +v 10.367653 11.522230 -79.487183 +v 7.274409 13.603985 -79.151138 +v 7.191051 13.448096 -79.224365 +v 7.107694 13.292207 -79.151138 +v 7.073165 13.227635 -78.974365 +v 7.107694 13.292207 -78.797592 +v 7.191051 13.448096 -78.724365 +v 7.274409 13.603985 -78.797592 +v 7.308937 13.668557 -78.974365 +v 3.807382 14.949558 -78.638321 +v 3.763753 14.778250 -78.711548 +v 3.720123 14.606941 -78.638321 +v 3.702052 14.535983 -78.461548 +v 3.720123 14.606941 -78.284775 +v 3.763753 14.778250 -78.211548 +v 3.807382 14.949558 -78.284775 +v 3.825454 15.020517 -78.461548 +v 0.119083 15.426317 -78.125504 +v 0.117718 15.249546 -78.198730 +v 0.116353 15.072774 -78.125504 +v 0.115788 14.999553 -77.948730 +v 0.116353 15.072774 -77.771957 +v 0.117718 15.249546 -77.698730 +v 0.119083 15.426317 -77.771957 +v 0.119648 15.499538 -77.948730 +v -3.576137 15.006555 -77.612686 +v -3.535158 14.834593 -77.685913 +v -3.494179 14.662632 -77.612686 +v -3.477205 14.591403 -77.435913 +v -3.494179 14.662632 -77.259140 +v -3.535158 14.834593 -77.185913 +v -3.576137 15.006555 -77.259140 +v -3.593112 15.077783 -77.435913 +v -7.063524 13.714665 -77.099869 +v -6.982583 13.557508 -77.173096 +v -6.901642 13.400351 -77.099869 +v -6.868114 13.335254 -76.923096 +v -6.901642 13.400351 -76.746323 +v -6.982583 13.557508 -76.673096 +v -7.063524 13.714665 -76.746323 +v -7.097052 13.779763 -76.923096 +v -10.140405 11.625730 -76.587051 +v -10.024206 11.492510 -76.660278 +v -9.908006 11.359290 -76.587051 +v -9.859874 11.304108 -76.410278 +v -9.908006 11.359290 -76.233505 +v -10.024206 11.492510 -76.160278 +v -10.140405 11.625730 -76.233505 +v -10.188537 11.680912 -76.410278 +v -12.627963 8.861150 -76.074234 +v -12.483258 8.759610 -76.147461 +v -12.338553 8.658069 -76.074234 +v -12.278615 8.616009 -75.897461 +v -12.338553 8.658069 -75.720688 +v -12.483258 8.759610 -75.647461 +v -12.627963 8.861150 -75.720688 +v -12.687902 8.903210 -75.897461 +v -14.381630 5.581592 -75.561417 +v -14.216829 5.517632 -75.634644 +v -14.052029 5.453673 -75.561417 +v -13.983767 5.427180 -75.384644 +v -14.052029 5.453673 -75.207870 +v -14.216829 5.517632 -75.134644 +v -14.381630 5.581592 -75.207870 +v -14.449892 5.608085 -75.384644 +v -15.299488 1.977651 -75.048599 +v -15.124170 1.954989 -75.121826 +v -14.948852 1.932327 -75.048599 +v -14.876232 1.922940 -74.871826 +v -14.948852 1.932327 -74.695053 +v -15.124170 1.954989 -74.621826 +v -15.299488 1.977651 -74.695053 +v -15.372108 1.987038 -74.871826 +v -15.328195 -1.741224 -74.535782 +v -15.152548 -1.721272 -74.609009 +v -14.976902 -1.701320 -74.535782 +v -14.904146 -1.693055 -74.359009 +v -14.976902 -1.701320 -74.182236 +v -15.152548 -1.721272 -74.109009 +v -15.328196 -1.741225 -74.182236 +v -15.400951 -1.749490 -74.359009 +v -14.466083 -5.358906 -74.022964 +v -14.300315 -5.297499 -74.096191 +v -14.134548 -5.236091 -74.022964 +v -14.065884 -5.210654 -73.846191 +v -14.134548 -5.236091 -73.669418 +v -14.300315 -5.297499 -73.596191 +v -14.466083 -5.358906 -73.669418 +v -14.534747 -5.384343 -73.846191 +v -12.763254 -8.665148 -73.510147 +v -12.616999 -8.565854 -73.583374 +v -12.470743 -8.466559 -73.510147 +v -12.410163 -8.425430 -73.333374 +v -12.470743 -8.466559 -73.156601 +v -12.616999 -8.565854 -73.083374 +v -12.763254 -8.665148 -73.156601 +v -12.823835 -8.706277 -73.333374 +v -10.318669 -11.467802 -72.997330 +v -10.200427 -11.336392 -73.070557 +v -10.082185 -11.204981 -72.997330 +v -10.033207 -11.150549 -72.820557 +v -10.082185 -11.204981 -72.643784 +v -10.200427 -11.336392 -72.570557 +v -10.318669 -11.467802 -72.643784 +v -10.367648 -11.522234 -72.820557 +v -7.274401 -13.603989 -72.484512 +v -7.191044 -13.448100 -72.557739 +v -7.107686 -13.292211 -72.484512 +v -7.073158 -13.227639 -72.307739 +v -7.107686 -13.292211 -72.130966 +v -7.191044 -13.448100 -72.057739 +v -7.274401 -13.603989 -72.130966 +v -7.308930 -13.668560 -72.307739 +v -3.807373 -14.949561 -71.971695 +v -3.763744 -14.778253 -72.044922 +v -3.720114 -14.606945 -71.971695 +v -3.702043 -14.535987 -71.794922 +v -3.720114 -14.606945 -71.618149 +v -3.763744 -14.778253 -71.544922 +v -3.807373 -14.949561 -71.618149 +v -3.825444 -15.020519 -71.794922 +v -0.119072 -15.426317 -71.458878 +v -0.117707 -15.249546 -71.532104 +v -0.116342 -15.072775 -71.458878 +v -0.115776 -14.999553 -71.282104 +v -0.116342 -15.072775 -71.105331 +v -0.117707 -15.249546 -71.032104 +v -0.119072 -15.426317 -71.105331 +v -0.119637 -15.499538 -71.282104 +v 3.576149 -15.006551 -70.946060 +v 3.535170 -14.834590 -71.019287 +v 3.494191 -14.662629 -70.946060 +v 3.477216 -14.591400 -70.769287 +v 3.494191 -14.662629 -70.592514 +v 3.535170 -14.834590 -70.519287 +v 3.576149 -15.006551 -70.592514 +v 3.593123 -15.077780 -70.769287 +v 7.063537 -13.714659 -70.433243 +v 6.982596 -13.557502 -70.506470 +v 6.901654 -13.400345 -70.433243 +v 6.868127 -13.335248 -70.256470 +v 6.901654 -13.400345 -70.079697 +v 6.982596 -13.557502 -70.006470 +v 7.063537 -13.714659 -70.079697 +v 7.097065 -13.779756 -70.256470 +v 10.140417 -11.625720 -69.920425 +v 10.024218 -11.492500 -69.993652 +v 9.908018 -11.359280 -69.920425 +v 9.859886 -11.304098 -69.743652 +v 9.908018 -11.359280 -69.566879 +v 10.024218 -11.492500 -69.493652 +v 10.140417 -11.625720 -69.566879 +v 10.188549 -11.680902 -69.743652 +v 12.627973 -8.861136 -69.407608 +v 12.483268 -8.759596 -69.480835 +v 12.338564 -8.658055 -69.407608 +v 12.278624 -8.615996 -69.230835 +v 12.338564 -8.658055 -69.054062 +v 12.483268 -8.759596 -68.980835 +v 12.627973 -8.861136 -69.054062 +v 12.687912 -8.903196 -69.230835 +v 14.381637 -5.581574 -68.894791 +v 14.216837 -5.517615 -68.968018 +v 14.052037 -5.453655 -68.894791 +v 13.983774 -5.427162 -68.718018 +v 14.052037 -5.453655 -68.541245 +v 14.216837 -5.517615 -68.468018 +v 14.381637 -5.581574 -68.541245 +v 14.449900 -5.608067 -68.718018 +v 15.299491 -1.977632 -68.381973 +v 15.124173 -1.954970 -68.455200 +v 14.948855 -1.932307 -68.381973 +v 14.876236 -1.922921 -68.205200 +v 14.948855 -1.932307 -68.028427 +v 15.124173 -1.954970 -67.955200 +v 15.299491 -1.977632 -68.028427 +v 15.372110 -1.987018 -68.205200 +v 15.328194 1.741245 -67.869156 +v 15.152547 1.721292 -67.942383 +v 14.976899 1.701338 -67.869156 +v 14.904144 1.693074 -67.692383 +v 14.976899 1.701338 -67.515610 +v 15.152547 1.721292 -67.442383 +v 15.328194 1.741245 -67.515610 +v 15.400949 1.749509 -67.692383 +v 14.466077 5.358926 -67.356339 +v 14.300309 5.297517 -67.429565 +v 14.134540 5.236108 -67.356339 +v 14.065877 5.210672 -67.179565 +v 14.134540 5.236108 -67.002792 +v 14.300309 5.297517 -66.929565 +v 14.466077 5.358926 -67.002792 +v 14.534740 5.384362 -67.179565 +v 12.763243 8.665165 -66.843521 +v 12.616988 8.565870 -66.916748 +v 12.470732 8.466575 -66.843521 +v 12.410152 8.425446 -66.666748 +v 12.470732 8.466575 -66.489975 +v 12.616988 8.565870 -66.416748 +v 12.763243 8.665165 -66.489975 +v 12.823823 8.706294 -66.666748 +v 10.318656 11.467816 -66.330704 +v 10.200414 11.336405 -66.403931 +v 10.082172 11.204995 -66.330704 +v 10.033194 11.150563 -66.153931 +v 10.082172 11.204995 -65.977158 +v 10.200414 11.336405 -65.903931 +v 10.318656 11.467816 -65.977158 +v 10.367633 11.522248 -66.153931 +v 7.274385 13.603998 -65.817886 +v 7.191027 13.448109 -65.891113 +v 7.107670 13.292220 -65.817886 +v 7.073141 13.227648 -65.641113 +v 7.107670 13.292220 -65.464340 +v 7.191027 13.448109 -65.391113 +v 7.274385 13.603998 -65.464340 +v 7.308913 13.668570 -65.641113 +v 3.807353 14.949565 -65.305069 +v 3.763724 14.778257 -65.378296 +v 3.720095 14.606948 -65.305069 +v 3.702024 14.535990 -65.128296 +v 3.720095 14.606948 -64.951523 +v 3.763724 14.778257 -64.878296 +v 3.807353 14.949565 -64.951523 +v 3.825424 15.020523 -65.128296 +v 0.119051 15.426317 -64.792252 +v 0.117687 15.249545 -64.865479 +v 0.116324 15.072774 -64.792252 +v 0.115758 14.999553 -64.615479 +v 0.116324 15.072774 -64.438705 +v 0.117687 15.249545 -64.365479 +v 0.119051 15.426317 -64.438705 +v 0.119616 15.499538 -64.615479 +v -3.576169 15.006547 -64.279434 +v -3.535189 14.834586 -64.352661 +v -3.494210 14.662625 -64.279434 +v -3.477235 14.591396 -64.102661 +v -3.494210 14.662625 -63.925884 +v -3.535189 14.834586 -63.852661 +v -3.576169 15.006547 -63.925884 +v -3.593143 15.077776 -64.102661 +v -7.063555 13.714650 -63.766617 +v -6.982613 13.557493 -63.839840 +v -6.901672 13.400336 -63.766617 +v -6.868144 13.335239 -63.589840 +v -6.901672 13.400336 -63.413063 +v -6.982613 13.557493 -63.339840 +v -7.063555 13.714650 -63.413063 +v -7.097083 13.779748 -63.589840 +v -10.140432 11.625707 -63.253796 +v -10.024233 11.492487 -63.327019 +v -9.908033 11.359268 -63.253796 +v -9.859901 11.304086 -63.077019 +v -9.908033 11.359268 -62.900242 +v -10.024233 11.492487 -62.827019 +v -10.140433 11.625707 -62.900242 +v -10.188565 11.680889 -63.077019 +v -12.627985 8.861119 -62.740974 +v -12.483280 8.759579 -62.814198 +v -12.338574 8.658039 -62.740974 +v -12.278636 8.615979 -62.564198 +v -12.338574 8.658039 -62.387421 +v -12.483280 8.759579 -62.314198 +v -12.627985 8.861119 -62.387421 +v -12.687924 8.903179 -62.564198 +v -14.381643 5.581555 -62.228153 +v -14.216843 5.517596 -62.301376 +v -14.052042 5.453636 -62.228153 +v -13.983780 5.427143 -62.051376 +v -14.052042 5.453636 -61.874599 +v -14.216843 5.517596 -61.801376 +v -14.381643 5.581555 -61.874599 +v -14.449905 5.608048 -62.051376 +v -15.299494 1.977613 -61.715332 +v -15.124175 1.954951 -61.788555 +v -14.948857 1.932289 -61.715332 +v -14.876238 1.922902 -61.538555 +v -14.948857 1.932289 -61.361778 +v -15.124175 1.954951 -61.288555 +v -15.299494 1.977613 -61.361778 +v -15.372113 1.986999 -61.538555 +v -15.328191 -1.741264 -61.202511 +v -15.152544 -1.721311 -61.275734 +v -14.976897 -1.701358 -61.202511 +v -14.904142 -1.693093 -61.025734 +v -14.976897 -1.701358 -60.848957 +v -15.152544 -1.721311 -60.775734 +v -15.328191 -1.741264 -60.848957 +v -15.400946 -1.749529 -61.025734 +v -14.466070 -5.358944 -60.689690 +v -14.300302 -5.297535 -60.762913 +v -14.134534 -5.236127 -60.689690 +v -14.065870 -5.210690 -60.512913 +v -14.134534 -5.236127 -60.336136 +v -14.300302 -5.297535 -60.262913 +v -14.466070 -5.358944 -60.336136 +v -14.534733 -5.384380 -60.512913 +v -12.763232 -8.665181 -60.176868 +v -12.616977 -8.565886 -60.250092 +v -12.470722 -8.466591 -60.176868 +v -12.410141 -8.425461 -60.000092 +v -12.470722 -8.466591 -59.823315 +v -12.616977 -8.565886 -59.750092 +v -12.763232 -8.665181 -59.823315 +v -12.823812 -8.706310 -60.000092 +v -10.318641 -11.467829 -59.664047 +v -10.200399 -11.336418 -59.737270 +v -10.082157 -11.205008 -59.664047 +v -10.033180 -11.150575 -59.487270 +v -10.082157 -11.205008 -59.310493 +v -10.200399 -11.336418 -59.237270 +v -10.318641 -11.467829 -59.310493 +v -10.367618 -11.522261 -59.487270 +v -7.274367 -13.604007 -59.151226 +v -7.191010 -13.448118 -59.224449 +v -7.107652 -13.292229 -59.151226 +v -7.073124 -13.227657 -58.974449 +v -7.107652 -13.292229 -58.797672 +v -7.191010 -13.448118 -58.724449 +v -7.274367 -13.604007 -58.797672 +v -7.308895 -13.668579 -58.974449 +v -3.807334 -14.949569 -58.638405 +v -3.763705 -14.778262 -58.711628 +v -3.720077 -14.606954 -58.638405 +v -3.702005 -14.535995 -58.461628 +v -3.720077 -14.606954 -58.284851 +v -3.763705 -14.778262 -58.211628 +v -3.807334 -14.949569 -58.284851 +v -3.825406 -15.020528 -58.461628 +v -0.119032 -15.426318 -58.125584 +v -0.117668 -15.249546 -58.198807 +v -0.116304 -15.072775 -58.125584 +v -0.115739 -14.999554 -57.948807 +v -0.116304 -15.072775 -57.772030 +v -0.117668 -15.249546 -57.698807 +v -0.119032 -15.426318 -57.772030 +v -0.119597 -15.499539 -57.948807 +v 3.576187 -15.006543 -57.612762 +v 3.535208 -14.834582 -57.685986 +v 3.494228 -14.662621 -57.612762 +v 3.477254 -14.591392 -57.435986 +v 3.494228 -14.662621 -57.259209 +v 3.535208 -14.834582 -57.185986 +v 3.576187 -15.006543 -57.259209 +v 3.593162 -15.077771 -57.435986 +v 7.063572 -13.714641 -57.099941 +v 6.982631 -13.557484 -57.173164 +v 6.901689 -13.400327 -57.099941 +v 6.868161 -13.335230 -56.923164 +v 6.901689 -13.400327 -56.746387 +v 6.982631 -13.557484 -56.673164 +v 7.063572 -13.714641 -56.746387 +v 7.097100 -13.779738 -56.923164 +v 10.140447 -11.625694 -56.587120 +v 10.024247 -11.492474 -56.660343 +v 9.908047 -11.359254 -56.587120 +v 9.859915 -11.304073 -56.410343 +v 9.908047 -11.359254 -56.233566 +v 10.024247 -11.492474 -56.160343 +v 10.140447 -11.625694 -56.233566 +v 10.188579 -11.680876 -56.410343 +v 12.627996 -8.861104 -56.074299 +v 12.483291 -8.759563 -56.147522 +v 12.338586 -8.658023 -56.074299 +v 12.278646 -8.615964 -55.897522 +v 12.338586 -8.658023 -55.720745 +v 12.483291 -8.759563 -55.647522 +v 12.627996 -8.861104 -55.720745 +v 12.687935 -8.903163 -55.897522 +v 14.381650 -5.581537 -55.561478 +v 14.216850 -5.517578 -55.634701 +v 14.052050 -5.453619 -55.561478 +v 13.983787 -5.427126 -55.384701 +v 14.052050 -5.453619 -55.207924 +v 14.216850 -5.517578 -55.134701 +v 14.381650 -5.581537 -55.207924 +v 14.449914 -5.608030 -55.384701 +v 15.299495 -1.977591 -55.048656 +v 15.124177 -1.954930 -55.121880 +v 14.948860 -1.932269 -55.048656 +v 14.876240 -1.922881 -54.871880 +v 14.948860 -1.932269 -54.695103 +v 15.124177 -1.954930 -54.621880 +v 15.299495 -1.977591 -54.695103 +v 15.372114 -1.986978 -54.871880 +v 15.328189 1.741284 -54.535835 +v 15.152542 1.721331 -54.609058 +v 14.976895 1.701377 -54.535835 +v 14.904140 1.693112 -54.359058 +v 14.976895 1.701377 -54.182281 +v 15.152542 1.721331 -54.109058 +v 15.328189 1.741284 -54.182281 +v 15.400944 1.749549 -54.359058 +v 14.466063 5.358963 -54.023014 +v 14.300295 5.297554 -54.096237 +v 14.134527 5.236145 -54.023014 +v 14.065864 5.210709 -53.846237 +v 14.134527 5.236145 -53.669460 +v 14.300295 5.297554 -53.596237 +v 14.466063 5.358963 -53.669460 +v 14.534726 5.384399 -53.846237 +v 12.763221 8.665197 -53.510193 +v 12.616966 8.565902 -53.583416 +v 12.470711 8.466607 -53.510193 +v 12.410130 8.425477 -53.333416 +v 12.470711 8.466607 -53.156639 +v 12.616966 8.565902 -53.083416 +v 12.763221 8.665197 -53.156639 +v 12.823801 8.706327 -53.333416 +v 10.318625 11.467841 -52.997372 +v 10.200384 11.336431 -53.070595 +v 10.082142 11.205020 -52.997372 +v 10.033164 11.150588 -52.820595 +v 10.082142 11.205020 -52.643818 +v 10.200384 11.336431 -52.570595 +v 10.318625 11.467841 -52.643818 +v 10.367603 11.522274 -52.820595 +v 7.274350 13.604017 -52.484550 +v 7.190993 13.448128 -52.557774 +v 7.107635 13.292238 -52.484550 +v 7.073108 13.227667 -52.307774 +v 7.107635 13.292238 -52.130997 +v 7.190993 13.448128 -52.057774 +v 7.274350 13.604017 -52.130997 +v 7.308877 13.668589 -52.307774 +v 3.807315 14.949575 -51.971729 +v 3.763687 14.778266 -52.044952 +v 3.720059 14.606958 -51.971729 +v 3.701987 14.536000 -51.794952 +v 3.720059 14.606958 -51.618176 +v 3.763687 14.778266 -51.544952 +v 3.807315 14.949575 -51.618176 +v 3.825387 15.020534 -51.794952 +v 0.119012 15.426318 -51.458908 +v 0.117648 15.249547 -51.532131 +v 0.116285 15.072775 -51.458908 +v 0.115720 14.999554 -51.282131 +v 0.116285 15.072775 -51.105354 +v 0.117648 15.249547 -51.032131 +v 0.119012 15.426318 -51.105354 +v 0.119577 15.499539 -51.282131 +v -3.576207 15.006537 -50.946087 +v -3.535227 14.834577 -51.019310 +v -3.494247 14.662616 -50.946087 +v -3.477273 14.591387 -50.769310 +v -3.494247 14.662616 -50.592533 +v -3.535227 14.834577 -50.519310 +v -3.576207 15.006537 -50.592533 +v -3.593181 15.077766 -50.769310 +v -7.063590 13.714632 -50.433266 +v -6.982648 13.557476 -50.506489 +v -6.901706 13.400319 -50.433266 +v -6.868178 13.335222 -50.256489 +v -6.901706 13.400319 -50.079712 +v -6.982648 13.557476 -50.006489 +v -7.063590 13.714632 -50.079712 +v -7.097118 13.779729 -50.256489 +v -10.140462 11.625680 -49.920444 +v -10.024261 11.492461 -49.993668 +v -9.908061 11.359241 -49.920444 +v -9.859930 11.304060 -49.743668 +v -9.908061 11.359241 -49.566891 +v -10.024261 11.492461 -49.493668 +v -10.140462 11.625680 -49.566891 +v -10.188594 11.680862 -49.743668 +v -12.628008 8.861088 -49.407623 +v -12.483302 8.759548 -49.480846 +v -12.338596 8.658008 -49.407623 +v -12.278658 8.615949 -49.230846 +v -12.338596 8.658008 -49.054070 +v -12.483302 8.759548 -48.980846 +v -12.628008 8.861088 -49.054070 +v -12.687946 8.903146 -49.230846 +v -14.381657 5.581519 -48.894802 +v -14.216857 5.517559 -48.968025 +v -14.052057 5.453600 -48.894802 +v -13.983794 5.427107 -48.718025 +v -14.052057 5.453600 -48.541248 +v -14.216857 5.517559 -48.468025 +v -14.381657 5.581519 -48.541248 +v -14.449921 5.608012 -48.718025 +v -15.299497 1.977572 -48.381981 +v -15.124180 1.954911 -48.455204 +v -14.948862 1.932250 -48.381981 +v -14.876242 1.922863 -48.205204 +v -14.948862 1.932250 -48.028427 +v -15.124180 1.954911 -47.955204 +v -15.299497 1.977572 -48.028427 +v -15.372117 1.986959 -48.205204 +v -15.328186 -1.741303 -47.869160 +v -15.152540 -1.721350 -47.942383 +v -14.976893 -1.701396 -47.869160 +v -14.904137 -1.693130 -47.692383 +v -14.976893 -1.701396 -47.515606 +v -15.152540 -1.721350 -47.442383 +v -15.328186 -1.741303 -47.515606 +v -15.400942 -1.749569 -47.692383 +v -14.466056 -5.358981 -47.356339 +v -14.300288 -5.297572 -47.429562 +v -14.134520 -5.236163 -47.356339 +v -14.065857 -5.210726 -47.179562 +v -14.134520 -5.236163 -47.002785 +v -14.300288 -5.297572 -46.929562 +v -14.466056 -5.358981 -47.002785 +v -14.534719 -5.384417 -47.179562 +v -12.763210 -8.665214 -46.843517 +v -12.616955 -8.565918 -46.916740 +v -12.470700 -8.466623 -46.843517 +v -12.410119 -8.425493 -46.666740 +v -12.470700 -8.466623 -46.489964 +v -12.616955 -8.565918 -46.416740 +v -12.763210 -8.665214 -46.489964 +v -12.823790 -8.706343 -46.666740 +v -10.318611 -11.467855 -46.330696 +v -10.200369 -11.336444 -46.403919 +v -10.082127 -11.205033 -46.330696 +v -10.033150 -11.150600 -46.153919 +v -10.082127 -11.205033 -45.977142 +v -10.200369 -11.336444 -45.903919 +v -10.318611 -11.467855 -45.977142 +v -10.367588 -11.522287 -46.153919 +v -7.274345 -13.604019 -45.817875 +v -7.190988 -13.448129 -45.891098 +v -7.107631 -13.292240 -45.817875 +v -7.073103 -13.227668 -45.641098 +v -7.107631 -13.292240 -45.464321 +v -7.190988 -13.448129 -45.391098 +v -7.274345 -13.604019 -45.464321 +v -7.308873 -13.668590 -45.641098 +v -3.807310 -14.949576 -45.305054 +v -3.763682 -14.778268 -45.378277 +v -3.720054 -14.606959 -45.305054 +v -3.701982 -14.536000 -45.128277 +v -3.720054 -14.606959 -44.951500 +v -3.763682 -14.778268 -44.878277 +v -3.807310 -14.949576 -44.951500 +v -3.825382 -15.020535 -45.128277 +v -0.119007 -15.426318 -44.792233 +v -0.117644 -15.249547 -44.865456 +v -0.116280 -15.072775 -44.792233 +v -0.115715 -14.999554 -44.615456 +v -0.116280 -15.072775 -44.438679 +v -0.117644 -15.249547 -44.365456 +v -0.119007 -15.426318 -44.438679 +v -0.119572 -15.499540 -44.615456 +v 3.576212 -15.006536 -44.279411 +v 3.535232 -14.834576 -44.352634 +v 3.494252 -14.662615 -44.279411 +v 3.477278 -14.591386 -44.102634 +v 3.494252 -14.662615 -43.925858 +v 3.535232 -14.834576 -43.852634 +v 3.576212 -15.006536 -43.925858 +v 3.593186 -15.077765 -44.102634 +v 7.063594 -13.714630 -43.766590 +v 6.982652 -13.557473 -43.839813 +v 6.901710 -13.400316 -43.766590 +v 6.868182 -13.335219 -43.589813 +v 6.901710 -13.400316 -43.413036 +v 6.982652 -13.557473 -43.339813 +v 7.063594 -13.714630 -43.413036 +v 7.097122 -13.779727 -43.589813 +v 10.140466 -11.625678 -43.253769 +v 10.024266 -11.492458 -43.326992 +v 9.908065 -11.359239 -43.253769 +v 9.859934 -11.304058 -43.076992 +v 9.908065 -11.359239 -42.900215 +v 10.024266 -11.492458 -42.826992 +v 10.140466 -11.625678 -42.900215 +v 10.188598 -11.680859 -43.076992 +v 12.628011 -8.861083 -42.740948 +v 12.483305 -8.759543 -42.814171 +v 12.338599 -8.658004 -42.740948 +v 12.278661 -8.615945 -42.564171 +v 12.338599 -8.658004 -42.387394 +v 12.483305 -8.759543 -42.314171 +v 12.628011 -8.861083 -42.387394 +v 12.687949 -8.903142 -42.564171 +v 14.381660 -5.581515 -42.228127 +v 14.216859 -5.517556 -42.301350 +v 14.052059 -5.453596 -42.228127 +v 13.983796 -5.427104 -42.051350 +v 14.052059 -5.453596 -41.874573 +v 14.216859 -5.517556 -41.801350 +v 14.381660 -5.581515 -41.874573 +v 14.449922 -5.608007 -42.051350 +v 15.299497 -1.977567 -41.715305 +v 15.124180 -1.954906 -41.788528 +v 14.948862 -1.932245 -41.715305 +v 14.876242 -1.922858 -41.538528 +v 14.948862 -1.932245 -41.361752 +v 15.124180 -1.954906 -41.288528 +v 15.299497 -1.977567 -41.361752 +v 15.372118 -1.986954 -41.538528 +v 15.328185 1.741308 -41.202484 +v 15.152538 1.721355 -41.275707 +v 14.976891 1.701401 -41.202484 +v 14.904136 1.693135 -41.025707 +v 14.976891 1.701401 -40.848930 +v 15.152538 1.721355 -40.775707 +v 15.328185 1.741308 -40.848930 +v 15.400941 1.749574 -41.025707 +v 14.466054 5.358985 -40.689663 +v 14.300286 5.297576 -40.762886 +v 14.134518 5.236167 -40.689663 +v 14.065855 5.210731 -40.512886 +v 14.134518 5.236167 -40.336109 +v 14.300286 5.297576 -40.262886 +v 14.466054 5.358985 -40.336109 +v 14.534717 5.384422 -40.512886 +v 12.763207 8.665218 -40.176842 +v 12.616952 8.565922 -40.250065 +v 12.470697 8.466627 -40.176842 +v 12.410117 8.425497 -40.000065 +v 12.470697 8.466627 -39.823288 +v 12.616952 8.565922 -39.750065 +v 12.763207 8.665218 -39.823288 +v 12.823787 8.706347 -40.000065 +v 10.318607 11.467858 -39.664021 +v 10.200365 11.336447 -39.737244 +v 10.082124 11.205036 -39.664021 +v 10.033147 11.150604 -39.487244 +v 10.082124 11.205036 -39.310467 +v 10.200365 11.336447 -39.237244 +v 10.318607 11.467858 -39.310467 +v 10.367584 11.522290 -39.487244 +v 7.274328 13.604028 -39.151199 +v 7.190971 13.448138 -39.224422 +v 7.107614 13.292248 -39.151199 +v 7.073086 13.227677 -38.974422 +v 7.107614 13.292248 -38.797646 +v 7.190971 13.448138 -38.724422 +v 7.274328 13.604028 -38.797646 +v 7.308855 13.668599 -38.974422 +v 3.807290 14.949581 -38.638378 +v 3.763662 14.778273 -38.711601 +v 3.720034 14.606964 -38.638378 +v 3.701963 14.536005 -38.461601 +v 3.720034 14.606964 -38.284824 +v 3.763662 14.778273 -38.211601 +v 3.807290 14.949581 -38.284824 +v 3.825362 15.020540 -38.461601 +v 0.118988 15.426318 -38.125557 +v 0.117624 15.249546 -38.198780 +v 0.116261 15.072775 -38.125557 +v 0.115696 14.999554 -37.948780 +v 0.116261 15.072775 -37.772003 +v 0.117624 15.249546 -37.698780 +v 0.118988 15.426318 -37.772003 +v 0.119552 15.499539 -37.948780 +v -3.576232 15.006533 -37.612736 +v -3.535251 14.834572 -37.685959 +v -3.494271 14.662610 -37.612736 +v -3.477297 14.591382 -37.435959 +v -3.494271 14.662610 -37.259182 +v -3.535251 14.834572 -37.185959 +v -3.576232 15.006533 -37.259182 +v -3.593206 15.077761 -37.435959 +v -7.063612 13.714620 -37.099915 +v -6.982669 13.557464 -37.173138 +v -6.901727 13.400307 -37.099915 +v -6.868199 13.335210 -36.923138 +v -6.901727 13.400307 -36.746361 +v -6.982669 13.557464 -36.673138 +v -7.063612 13.714620 -36.746361 +v -7.097139 13.779717 -36.923138 +v -10.140481 11.625665 -36.587093 +v -10.024281 11.492446 -36.660316 +v -9.908080 11.359226 -36.587093 +v -9.859948 11.304045 -36.410316 +v -9.908080 11.359226 -36.233540 +v -10.024281 11.492446 -36.160316 +v -10.140481 11.625665 -36.233540 +v -10.188613 11.680846 -36.410316 +v -12.628021 8.861067 -36.074272 +v -12.483316 8.759527 -36.147495 +v -12.338610 8.657987 -36.074272 +v -12.278671 8.615928 -35.897495 +v -12.338610 8.657987 -35.720718 +v -12.483316 8.759527 -35.647495 +v -12.628021 8.861067 -35.720718 +v -12.687960 8.903126 -35.897495 +v -14.381667 5.581496 -35.561451 +v -14.216866 5.517537 -35.634674 +v -14.052065 5.453578 -35.561451 +v -13.983803 5.427086 -35.384674 +v -14.052065 5.453578 -35.207897 +v -14.216866 5.517537 -35.134674 +v -14.381667 5.581496 -35.207897 +v -14.449929 5.607988 -35.384674 +v -15.299502 1.977547 -35.048630 +v -15.124184 1.954886 -35.121853 +v -14.948865 1.932226 -35.048630 +v -14.876246 1.922839 -34.871853 +v -14.948865 1.932226 -34.695076 +v -15.124184 1.954886 -34.621853 +v -15.299502 1.977547 -34.695076 +v -15.372121 1.986933 -34.871853 +v -15.328183 -1.741328 -34.535809 +v -15.152537 -1.721374 -34.609032 +v -14.976890 -1.701420 -34.535809 +v -14.904134 -1.693155 -34.359032 +v -14.976890 -1.701420 -34.182255 +v -15.152537 -1.721374 -34.109032 +v -15.328183 -1.741328 -34.182255 +v -15.400939 -1.749593 -34.359032 +v -14.466048 -5.359004 -34.022987 +v -14.300280 -5.297595 -34.096210 +v -14.134512 -5.236186 -34.022987 +v -14.065849 -5.210749 -33.846210 +v -14.134512 -5.236186 -33.669434 +v -14.300280 -5.297595 -33.596210 +v -14.466048 -5.359004 -33.669434 +v -14.534711 -5.384441 -33.846210 +v -12.763196 -8.665234 -33.510166 +v -12.616941 -8.565938 -33.583389 +v -12.470686 -8.466643 -33.510166 +v -12.410106 -8.425513 -33.333389 +v -12.470686 -8.466643 -33.156612 +v -12.616941 -8.565938 -33.083389 +v -12.763196 -8.665234 -33.156612 +v -12.823776 -8.706364 -33.333389 +v -10.318593 -11.467872 -32.997345 +v -10.200352 -11.336461 -33.070568 +v -10.082110 -11.205049 -32.997345 +v -10.033133 -11.150617 -32.820568 +v -10.082110 -11.205049 -32.643791 +v -10.200352 -11.336461 -32.570568 +v -10.318593 -11.467872 -32.643791 +v -10.367570 -11.522304 -32.820568 +v -7.274311 -13.604038 -32.484524 +v -7.190954 -13.448148 -32.557747 +v -7.107597 -13.292259 -32.484524 +v -7.073070 -13.227687 -32.307747 +v -7.107597 -13.292259 -32.130970 +v -7.190954 -13.448148 -32.057747 +v -7.274311 -13.604038 -32.130970 +v -7.308839 -13.668610 -32.307747 +v -3.807272 -14.949586 -31.971703 +v -3.763644 -14.778278 -32.044926 +v -3.720016 -14.606969 -31.971703 +v -3.701945 -14.536011 -31.794926 +v -3.720016 -14.606969 -31.618149 +v -3.763644 -14.778278 -31.544926 +v -3.807272 -14.949586 -31.618149 +v -3.825343 -15.020544 -31.794926 +v -0.118968 -15.426318 -31.458881 +v -0.117604 -15.249547 -31.532104 +v -0.116242 -15.072776 -31.458881 +v -0.115676 -14.999555 -31.282104 +v -0.116241 -15.072775 -31.105328 +v -0.117604 -15.249547 -31.032104 +v -0.118967 -15.426318 -31.105328 +v -0.119533 -15.499539 -31.282104 +v 3.576250 -15.006528 -30.946060 +v 3.535269 -14.834566 -31.019283 +v 3.494289 -14.662605 -30.946060 +v 3.477314 -14.591376 -30.769283 +v 3.494289 -14.662605 -30.592506 +v 3.535269 -14.834566 -30.519283 +v 3.576250 -15.006528 -30.592506 +v 3.593225 -15.077756 -30.769283 +v 7.063629 -13.714612 -30.433239 +v 6.982687 -13.557455 -30.506462 +v 6.901744 -13.400299 -30.433239 +v 6.868217 -13.335202 -30.256462 +v 6.901744 -13.400299 -30.079685 +v 6.982687 -13.557455 -30.006462 +v 7.063629 -13.714612 -30.079685 +v 7.097157 -13.779708 -30.256462 +v 10.140496 -11.625652 -29.920418 +v 10.024295 -11.492433 -29.993641 +v 9.908095 -11.359214 -29.920418 +v 9.859963 -11.304033 -29.743641 +v 9.908095 -11.359214 -29.566864 +v 10.024295 -11.492433 -29.493641 +v 10.140496 -11.625652 -29.566864 +v 10.188628 -11.680833 -29.743641 +v 12.628033 -8.861051 -29.407597 +v 12.483327 -8.759511 -29.480820 +v 12.338621 -8.657972 -29.407597 +v 12.278682 -8.615913 -29.230820 +v 12.338621 -8.657972 -29.054043 +v 12.483327 -8.759511 -28.980820 +v 12.628033 -8.861051 -29.054043 +v 12.687972 -8.903110 -29.230820 +v 14.381675 -5.581477 -28.894775 +v 14.216874 -5.517518 -28.967999 +v 14.052073 -5.453559 -28.894775 +v 13.983811 -5.427067 -28.717999 +v 14.052073 -5.453559 -28.541222 +v 14.216874 -5.517518 -28.467999 +v 14.381675 -5.581477 -28.541222 +v 14.449937 -5.607969 -28.717999 +v 15.299504 -1.977528 -28.381954 +v 15.124186 -1.954868 -28.455177 +v 14.948867 -1.932207 -28.381954 +v 14.876248 -1.922821 -28.205177 +v 14.948867 -1.932207 -28.028400 +v 15.124186 -1.954868 -27.955177 +v 15.299504 -1.977528 -28.028400 +v 15.372123 -1.986915 -28.205177 +v 15.328181 1.741347 -27.869133 +v 15.152534 1.721393 -27.942356 +v 14.976887 1.701439 -27.869133 +v 14.904132 1.693174 -27.692356 +v 14.976887 1.701439 -27.515579 +v 15.152534 1.721393 -27.442356 +v 15.328181 1.741347 -27.515579 +v 15.400936 1.749613 -27.692356 +v 14.466041 5.359023 -27.356312 +v 14.300273 5.297613 -27.429535 +v 14.134505 5.236204 -27.356312 +v 14.065842 5.210767 -27.179535 +v 14.134505 5.236204 -27.002758 +v 14.300273 5.297613 -26.929535 +v 14.466041 5.359023 -27.002758 +v 14.534704 5.384460 -27.179535 +v 12.763185 8.665250 -26.843491 +v 12.616930 8.565954 -26.916714 +v 12.470676 8.466659 -26.843491 +v 12.410095 8.425529 -26.666714 +v 12.470676 8.466659 -26.489937 +v 12.616930 8.565954 -26.416714 +v 12.763185 8.665250 -26.489937 +v 12.823765 8.706380 -26.666714 +v 10.318579 11.467885 -26.330669 +v 10.200337 11.336473 -26.403893 +v 10.082096 11.205062 -26.330669 +v 10.033119 11.150630 -26.153893 +v 10.082096 11.205062 -25.977116 +v 10.200337 11.336473 -25.903893 +v 10.318579 11.467885 -25.977116 +v 10.367556 11.522317 -26.153893 +v 7.274294 13.604047 -25.817848 +v 7.190937 13.448157 -25.891071 +v 7.107580 13.292267 -25.817848 +v 7.073053 13.227696 -25.641071 +v 7.107580 13.292267 -25.464294 +v 7.190937 13.448157 -25.391071 +v 7.274294 13.604047 -25.464294 +v 7.308821 13.668619 -25.641071 +v 3.807254 14.949591 -25.305027 +v 3.763626 14.778282 -25.378250 +v 3.719998 14.606974 -25.305027 +v 3.701927 14.536016 -25.128250 +v 3.719998 14.606974 -24.951473 +v 3.763626 14.778282 -24.878250 +v 3.807254 14.949591 -24.951473 +v 3.825325 15.020549 -25.128250 +v 0.118948 15.426317 -24.792206 +v 0.117585 15.249546 -24.865429 +v 0.116222 15.072775 -24.792206 +v 0.115658 14.999553 -24.615429 +v 0.116222 15.072775 -24.438652 +v 0.117585 15.249546 -24.365429 +v 0.118948 15.426317 -24.438652 +v 0.119513 15.499539 -24.615429 +v -3.576270 15.006524 -24.279385 +v -3.535289 14.834562 -24.352608 +v -3.494308 14.662601 -24.279385 +v -3.477333 14.591373 -24.102608 +v -3.494308 14.662601 -23.925831 +v -3.535289 14.834562 -23.852608 +v -3.576270 15.006524 -23.925831 +v -3.593244 15.077752 -24.102608 +v -7.063647 13.714602 -23.766563 +v -6.982704 13.557446 -23.839787 +v -6.901761 13.400289 -23.766563 +v -6.868233 13.335192 -23.589787 +v -6.901761 13.400289 -23.413010 +v -6.982704 13.557446 -23.339787 +v -7.063647 13.714602 -23.413010 +v -7.097175 13.779699 -23.589787 +v -10.140511 11.625639 -23.253742 +v -10.024310 11.492420 -23.326965 +v -9.908109 11.359201 -23.253742 +v -9.859977 11.304020 -23.076965 +v -9.908109 11.359201 -22.900188 +v -10.024310 11.492420 -22.826965 +v -10.140511 11.625639 -22.900188 +v -10.188643 11.680820 -23.076965 +v -12.628045 8.861035 -22.740921 +v -12.483339 8.759495 -22.814144 +v -12.338632 8.657956 -22.740921 +v -12.278693 8.615897 -22.564144 +v -12.338632 8.657956 -22.387367 +v -12.483339 8.759495 -22.314144 +v -12.628045 8.861035 -22.387367 +v -12.687984 8.903093 -22.564144 +v -14.381681 5.581458 -22.228100 +v -14.216880 5.517500 -22.301323 +v -14.052080 5.453542 -22.228100 +v -13.983816 5.427049 -22.051323 +v -14.052080 5.453542 -21.874546 +v -14.216880 5.517500 -21.801323 +v -14.381681 5.581458 -21.874546 +v -14.449944 5.607951 -22.051323 +v -15.299507 1.977509 -21.715279 +v -15.124188 1.954849 -21.788502 +v -14.948869 1.932188 -21.715279 +v -14.876251 1.922802 -21.538502 +v -14.948869 1.932188 -21.361725 +v -15.124188 1.954849 -21.288502 +v -15.299507 1.977509 -21.361725 +v -15.372125 1.986896 -21.538502 +v -15.328179 -1.741367 -21.202457 +v -15.152532 -1.721413 -21.275681 +v -14.976886 -1.701459 -21.202457 +v -14.904130 -1.693193 -21.025681 +v -14.976886 -1.701459 -20.848904 +v -15.152532 -1.721413 -20.775681 +v -15.328179 -1.741367 -20.848904 +v -15.400934 -1.749633 -21.025681 +v -14.466033 -5.359041 -20.689636 +v -14.300266 -5.297631 -20.762859 +v -14.134498 -5.236221 -20.689636 +v -14.065835 -5.210785 -20.512859 +v -14.134498 -5.236221 -20.336082 +v -14.300266 -5.297631 -20.262859 +v -14.466033 -5.359041 -20.336082 +v -14.534696 -5.384477 -20.512859 +v -12.763173 -8.665267 -20.176815 +v -12.616919 -8.565971 -20.250038 +v -12.470665 -8.466675 -20.176815 +v -12.410084 -8.425545 -20.000038 +v -12.470665 -8.466675 -19.823261 +v -12.616919 -8.565971 -19.750038 +v -12.763173 -8.665267 -19.823261 +v -12.823754 -8.706396 -20.000038 +v -10.318564 -11.467898 -19.663994 +v -10.200323 -11.336487 -19.737217 +v -10.082081 -11.205075 -19.663994 +v -10.033104 -11.150642 -19.487217 +v -10.082081 -11.205075 -19.310440 +v -10.200323 -11.336487 -19.237217 +v -10.318564 -11.467898 -19.310440 +v -10.367541 -11.522331 -19.487217 +v -7.274277 -13.604057 -19.151173 +v -7.190920 -13.448167 -19.224396 +v -7.107563 -13.292276 -19.151173 +v -7.073036 -13.227705 -18.974396 +v -7.107563 -13.292276 -18.797619 +v -7.190920 -13.448167 -18.724396 +v -7.274277 -13.604057 -18.797619 +v -7.308804 -13.668628 -18.974396 +v -3.807234 -14.949595 -18.638351 +v -3.763606 -14.778286 -18.711575 +v -3.719978 -14.606978 -18.638351 +v -3.701907 -14.536019 -18.461575 +v -3.719978 -14.606978 -18.284798 +v -3.763606 -14.778286 -18.211575 +v -3.807234 -14.949595 -18.284798 +v -3.825304 -15.020554 -18.461575 +v -0.118928 -15.426318 -18.125530 +v -0.117565 -15.249547 -18.198753 +v -0.116202 -15.072776 -18.125530 +v -0.115638 -14.999554 -17.948753 +v -0.116202 -15.072776 -17.771976 +v -0.117565 -15.249547 -17.698753 +v -0.118928 -15.426318 -17.771976 +v -0.119493 -15.499540 -17.948753 +v 3.576289 -15.006519 -17.612709 +v 3.535307 -14.834558 -17.685932 +v 3.494326 -14.662597 -17.612709 +v 3.477351 -14.591368 -17.435932 +v 3.494326 -14.662597 -17.259155 +v 3.535307 -14.834558 -17.185932 +v 3.576289 -15.006519 -17.259155 +v 3.593264 -15.077747 -17.435932 +v 7.063665 -13.714593 -17.099888 +v 6.982722 -13.557437 -17.173111 +v 6.901779 -13.400281 -17.099888 +v 6.868251 -13.335184 -16.923111 +v 6.901779 -13.400281 -16.746334 +v 6.982722 -13.557437 -16.673111 +v 7.063665 -13.714594 -16.746334 +v 7.097193 -13.779690 -16.923111 +v 10.140525 -11.625626 -16.587067 +v 10.024324 -11.492407 -16.660290 +v 9.908123 -11.359188 -16.587067 +v 9.859991 -11.304007 -16.410290 +v 9.908123 -11.359188 -16.233513 +v 10.024324 -11.492407 -16.160290 +v 10.140525 -11.625626 -16.233513 +v 10.188657 -11.680807 -16.410290 +v 12.628055 -8.861018 -16.074245 +v 12.483350 -8.759480 -16.147469 +v 12.338644 -8.657941 -16.074245 +v 12.278705 -8.615881 -15.897470 +v 12.338644 -8.657941 -15.720693 +v 12.483350 -8.759480 -15.647470 +v 12.628055 -8.861018 -15.720693 +v 12.687995 -8.903078 -15.897470 +v 14.381688 -5.581440 -15.561426 +v 14.216888 -5.517482 -15.634649 +v 14.052087 -5.453524 -15.561426 +v 13.983824 -5.427031 -15.384649 +v 14.052087 -5.453524 -15.207872 +v 14.216888 -5.517482 -15.134649 +v 14.381688 -5.581440 -15.207872 +v 14.449952 -5.607933 -15.384649 +v 15.299508 -1.977489 -15.048606 +v 15.124190 -1.954829 -15.121829 +v 14.948872 -1.932169 -15.048606 +v 14.876253 -1.922782 -14.871829 +v 14.948872 -1.932169 -14.695052 +v 15.124190 -1.954829 -14.621829 +v 15.299508 -1.977489 -14.695052 +v 15.372128 -1.986876 -14.871829 +v 15.328176 1.741386 -14.535786 +v 15.152530 1.721432 -14.609009 +v 14.976883 1.701477 -14.535786 +v 14.904128 1.693212 -14.359009 +v 14.976883 1.701477 -14.182232 +v 15.152530 1.721432 -14.109009 +v 15.328176 1.741386 -14.182232 +v 15.400932 1.749652 -14.359009 +v 14.466026 5.359060 -14.022965 +v 14.300259 5.297650 -14.096189 +v 14.134491 5.236240 -14.022965 +v 14.065829 5.210803 -13.846189 +v 14.134491 5.236240 -13.669412 +v 14.300259 5.297650 -13.596189 +v 14.466026 5.359060 -13.669412 +v 14.534689 5.384496 -13.846189 +v 12.763162 8.665283 -13.510145 +v 12.616908 8.565987 -13.583368 +v 12.470654 8.466690 -13.510145 +v 12.410074 8.425561 -13.333368 +v 12.470654 8.466690 -13.156591 +v 12.616908 8.565987 -13.083368 +v 12.763162 8.665283 -13.156591 +v 12.823743 8.706413 -13.333368 +v 10.318548 11.467911 -12.997325 +v 10.200307 11.336499 -13.070548 +v 10.082066 11.205087 -12.997325 +v 10.033089 11.150655 -12.820548 +v 10.082066 11.205087 -12.643771 +v 10.200307 11.336499 -12.570548 +v 10.318548 11.467911 -12.643771 +v 10.367525 11.522343 -12.820548 +v 7.274259 13.604066 -12.484505 +v 7.190903 13.448176 -12.557728 +v 7.107546 13.292285 -12.484505 +v 7.073019 13.227713 -12.307728 +v 7.107546 13.292285 -12.130951 +v 7.190903 13.448176 -12.057728 +v 7.274259 13.604066 -12.130951 +v 7.308786 13.668638 -12.307728 +v 3.807242 14.949594 -11.971684 +v 3.763615 14.778285 -12.044908 +v 3.719987 14.606977 -11.971684 +v 3.701916 14.536019 -11.794908 +v 3.719987 14.606977 -11.618131 +v 3.763615 14.778285 -11.544908 +v 3.807242 14.949594 -11.618131 +v 3.825313 15.020552 -11.794908 +v 0.118939 15.426318 -11.458864 +v 0.117576 15.249547 -11.532087 +v 0.116213 15.072776 -11.458864 +v 0.115648 14.999554 -11.282087 +v 0.116213 15.072776 -11.105310 +v 0.117576 15.249547 -11.032087 +v 0.118939 15.426318 -11.105310 +v 0.119503 15.499540 -11.282087 +v -3.576280 15.006521 -10.946044 +v -3.535299 14.834560 -11.019267 +v -3.494318 14.662599 -10.946044 +v -3.477343 14.591371 -10.769267 +v -3.494318 14.662599 -10.592490 +v -3.535299 14.834560 -10.519267 +v -3.576280 15.006521 -10.592490 +v -3.593255 15.077750 -10.769267 +v -7.063656 13.714598 -10.433224 +v -6.982713 13.557442 -10.506447 +v -6.901770 13.400285 -10.433224 +v -6.868242 13.335189 -10.256447 +v -6.901770 13.400285 -10.079670 +v -6.982713 13.557442 -10.006447 +v -7.063656 13.714599 -10.079670 +v -7.097184 13.779695 -10.256447 +v -10.140518 11.625633 -9.920403 +v -10.024318 11.492414 -9.993627 +v -9.908117 11.359195 -9.920403 +v -9.859985 11.304014 -9.743627 +v -9.908117 11.359195 -9.566850 +v -10.024318 11.492414 -9.493627 +v -10.140518 11.625633 -9.566850 +v -10.188650 11.680814 -9.743627 +v -12.628050 8.861027 -9.407583 +v -12.483344 8.759487 -9.480806 +v -12.338638 8.657947 -9.407583 +v -12.278699 8.615889 -9.230806 +v -12.338638 8.657947 -9.054029 +v -12.483344 8.759487 -8.980806 +v -12.628050 8.861027 -9.054029 +v -12.687989 8.903085 -9.230806 +v -14.381684 5.581450 -8.894763 +v -14.216884 5.517492 -8.967986 +v -14.052083 5.453534 -8.894763 +v -13.983820 5.427041 -8.717986 +v -14.052083 5.453534 -8.541209 +v -14.216884 5.517492 -8.467986 +v -14.381684 5.581450 -8.541209 +v -14.449948 5.607943 -8.717986 +v -15.299508 1.977499 -8.381943 +v -15.124189 1.954839 -8.455166 +v -14.948871 1.932178 -8.381943 +v -14.876252 1.922792 -8.205166 +v -14.948871 1.932178 -8.028389 +v -15.124189 1.954839 -7.955166 +v -15.299508 1.977499 -8.028389 +v -15.372127 1.986886 -8.205166 +v -15.328177 -1.741377 -7.869122 +v -15.152531 -1.721422 -7.942345 +v -14.976884 -1.701467 -7.869122 +v -14.904129 -1.693202 -7.692345 +v -14.976884 -1.701467 -7.515568 +v -15.152531 -1.721422 -7.442345 +v -15.328177 -1.741377 -7.515568 +v -15.400933 -1.749642 -7.692345 +v -14.466029 -5.359050 -7.356301 +v -14.300262 -5.297640 -7.429524 +v -14.134494 -5.236230 -7.356301 +v -14.065831 -5.210794 -7.179524 +v -14.134494 -5.236231 -7.002748 +v -14.300262 -5.297640 -6.929524 +v -14.466029 -5.359050 -7.002748 +v -14.534692 -5.384487 -7.179524 +v -12.763168 -8.665275 -6.843481 +v -12.616914 -8.565979 -6.916704 +v -12.470659 -8.466683 -6.843481 +v -12.410079 -8.425553 -6.666704 +v -12.470659 -8.466683 -6.489927 +v -12.616913 -8.565979 -6.416704 +v -12.763168 -8.665275 -6.489927 +v -12.823748 -8.706405 -6.666704 +v -10.318556 -11.467904 -6.330660 +v -10.200315 -11.336493 -6.403883 +v -10.082074 -11.205081 -6.330660 +v -10.033096 -11.150649 -6.153883 +v -10.082074 -11.205081 -5.977106 +v -10.200315 -11.336493 -5.903883 +v -10.318556 -11.467904 -5.977106 +v -10.367533 -11.522337 -6.153883 +v -7.274267 -13.604061 -5.817839 +v -7.190910 -13.448171 -5.891062 +v -7.107553 -13.292281 -5.817839 +v -7.073026 -13.227709 -5.641062 +v -7.107553 -13.292281 -5.464285 +v -7.190910 -13.448171 -5.391062 +v -7.274267 -13.604061 -5.464285 +v -7.308794 -13.668633 -5.641062 +v -3.807223 -14.949598 -5.305018 +v -3.763596 -14.778290 -5.378242 +v -3.719969 -14.606982 -5.305018 +v -3.701898 -14.536023 -5.128242 +v -3.719969 -14.606982 -4.951465 +v -3.763596 -14.778290 -4.878242 +v -3.807223 -14.949598 -4.951465 +v -3.825295 -15.020557 -5.128242 +v -0.118918 -15.426319 -4.792198 +v -0.117556 -15.249547 -4.865421 +v -0.116193 -15.072775 -4.792198 +v -0.115629 -14.999555 -4.615421 +v -0.116193 -15.072775 -4.438644 +v -0.117556 -15.249547 -4.365421 +v -0.118918 -15.426319 -4.438644 +v -0.119483 -15.499540 -4.615421 +v 3.576298 -15.006516 -4.279377 +v 3.535317 -14.834555 -4.352600 +v 3.494336 -14.662594 -4.279377 +v 3.477361 -14.591365 -4.102600 +v 3.494336 -14.662594 -3.925823 +v 3.535317 -14.834555 -3.852600 +v 3.576298 -15.006516 -3.925823 +v 3.593273 -15.077744 -4.102600 +v 7.063674 -13.714589 -3.766556 +v 6.982730 -13.557433 -3.839780 +v 6.901787 -13.400276 -3.766556 +v 6.868259 -13.335180 -3.589780 +v 6.901787 -13.400276 -3.413003 +v 6.982730 -13.557433 -3.339780 +v 7.063674 -13.714589 -3.413003 +v 7.097201 -13.779685 -3.589780 +v 10.140533 -11.625619 -3.253736 +v 10.024332 -11.492400 -3.326959 +v 9.908131 -11.359182 -3.253736 +v 9.859999 -11.304001 -3.076959 +v 9.908131 -11.359182 -2.900182 +v 10.024332 -11.492400 -2.826959 +v 10.140533 -11.625619 -2.900182 +v 10.188665 -11.680800 -3.076959 +v 12.628061 -8.861010 -2.740915 +v 12.483355 -8.759471 -2.814139 +v 12.338649 -8.657933 -2.740915 +v 12.278710 -8.615873 -2.564139 +v 12.338649 -8.657933 -2.387362 +v 12.483355 -8.759471 -2.314139 +v 12.628061 -8.861010 -2.387362 +v 12.688001 -8.903069 -2.564139 +v 14.381691 -5.581431 -2.228095 +v 14.216891 -5.517473 -2.301318 +v 14.052090 -5.453515 -2.228095 +v 13.983827 -5.427022 -2.051318 +v 14.052090 -5.453515 -1.874542 +v 14.216891 -5.517473 -1.801318 +v 14.381691 -5.581431 -1.874542 +v 14.449955 -5.607924 -2.051318 +v 15.299510 -1.977479 -1.715274 +v 15.124192 -1.954819 -1.788498 +v 14.948874 -1.932159 -1.715274 +v 14.876255 -1.922774 -1.538498 +v 14.948874 -1.932159 -1.361721 +v 15.124192 -1.954819 -1.288498 +v 15.299510 -1.977479 -1.361721 +v 15.372130 -1.986865 -1.538498 +v 15.328175 1.741397 -1.202454 +v 15.152529 1.721442 -1.275677 +v 14.976882 1.701487 -1.202454 +v 14.904127 1.693222 -1.025677 +v 14.976882 1.701487 -0.848901 +v 15.152529 1.721442 -0.775677 +v 15.328175 1.741397 -0.848900 +v 15.400931 1.749662 -1.025677 +v 14.466023 5.359069 -0.689633 +v 14.300256 5.297659 -0.762857 +v 14.134488 5.236249 -0.689633 +v 14.065826 5.210812 -0.512857 +v 14.134488 5.236249 -0.336080 +v 14.300256 5.297659 -0.262857 +v 14.466023 5.359069 -0.336080 +v 14.534686 5.384506 -0.512857 +v 12.763157 8.665291 -0.176813 +v 12.616903 8.565995 -0.250036 +v 12.470648 8.466699 -0.176813 +v 12.410068 8.425569 -0.000036 +v 12.470648 8.466699 0.176741 +v 12.616903 8.565995 0.249964 +v 12.763157 8.665291 0.176741 +v 12.823737 8.706421 -0.000036 +v 10.318541 11.467918 0.336008 +v 10.200300 11.336506 0.262784 +v 10.082059 11.205094 0.336008 +v 10.033082 11.150662 0.512784 +v 10.082059 11.205094 0.689561 +v 10.200300 11.336506 0.762784 +v 10.318541 11.467918 0.689561 +v 10.367518 11.522350 0.512784 +v 7.274248 13.604070 0.848828 +v 7.190893 13.448180 0.775605 +v 7.107537 13.292290 0.848828 +v 7.073009 13.227718 1.025605 +v 7.107537 13.292290 1.202382 +v 7.190893 13.448180 1.275605 +v 7.274248 13.604070 1.202382 +v 7.308777 13.668642 1.025605 +v 3.807204 14.949603 1.361649 +v 3.763577 14.778294 1.288425 +v 3.719951 14.606986 1.361649 +v 3.701879 14.536027 1.538425 +v 3.719951 14.606986 1.715202 +v 3.763577 14.778294 1.788425 +v 3.807204 14.949603 1.715202 +v 3.825276 15.020562 1.538425 +v 0.118898 15.426319 1.874469 +v 0.117535 15.249547 1.801246 +v 0.116173 15.072775 1.874469 +v 0.115608 14.999555 2.051246 +v 0.116173 15.072775 2.228023 +v 0.117535 15.249547 2.301246 +v 0.118898 15.426319 2.228023 +v 0.119462 15.499539 2.051246 +v -3.576318 15.006512 2.387290 +v -3.535337 14.834551 2.314066 +v -3.494355 14.662590 2.387290 +v -3.477380 14.591361 2.564066 +v -3.494355 14.662590 2.740843 +v -3.535337 14.834551 2.814066 +v -3.576318 15.006512 2.740843 +v -3.593293 15.077740 2.564066 +v -7.063692 13.714581 2.900110 +v -6.982748 13.557424 2.826887 +v -6.901804 13.400267 2.900110 +v -6.868277 13.335171 3.076887 +v -6.901804 13.400267 3.253664 +v -6.982748 13.557424 3.326887 +v -7.063692 13.714581 3.253664 +v -7.097219 13.779677 3.076887 +v -10.140548 11.625606 3.412931 +v -10.024346 11.492387 3.339707 +v -9.908145 11.359168 3.412931 +v -9.860013 11.303988 3.589707 +v -9.908145 11.359168 3.766484 +v -10.024346 11.492387 3.839707 +v -10.140548 11.625606 3.766484 +v -10.188680 11.680787 3.589707 +v -12.628073 8.860994 3.925751 +v -12.483367 8.759455 3.852528 +v -12.338661 8.657917 3.925751 +v -12.278721 8.615858 4.102528 +v -12.338661 8.657917 4.279305 +v -12.483367 8.759455 4.352528 +v -12.628073 8.860994 4.279305 +v -12.688012 8.903053 4.102528 +v -14.381700 5.581412 4.438572 +v -14.216899 5.517455 4.365349 +v -14.052098 5.453497 4.438572 +v -13.983836 5.427005 4.615349 +v -14.052098 5.453497 4.792126 +v -14.216899 5.517455 4.865349 +v -14.381700 5.581412 4.792126 +v -14.449962 5.607905 4.615349 +v -15.299513 1.977459 4.951393 +v -15.124195 1.954799 4.878170 +v -14.948877 1.932139 4.951393 +v -14.876257 1.922754 5.128170 +v -14.948877 1.932139 5.304946 +v -15.124195 1.954799 5.378170 +v -15.299513 1.977459 5.304946 +v -15.372132 1.986845 5.128170 +v -15.328173 -1.741416 5.464213 +v -15.152526 -1.721461 5.390990 +v -14.976879 -1.701506 5.464213 +v -14.904124 -1.693241 5.640990 +v -14.976879 -1.701506 5.817767 +v -15.152526 -1.721461 5.890990 +v -15.328173 -1.741416 5.817767 +v -15.400929 -1.749682 5.640990 +v -14.466017 -5.359087 5.977034 +v -14.300249 -5.297677 5.903811 +v -14.134482 -5.236267 5.977034 +v -14.065819 -5.210830 6.153811 +v -14.134482 -5.236267 6.330588 +v -14.300249 -5.297677 6.403811 +v -14.466017 -5.359087 6.330588 +v -14.534679 -5.384524 6.153811 +v -12.763146 -8.665308 6.489855 +v -12.616892 -8.566011 6.416632 +v -12.470638 -8.466715 6.489855 +v -12.410057 -8.425585 6.666632 +v -12.470637 -8.466715 6.843409 +v -12.616892 -8.566011 6.916632 +v -12.763146 -8.665308 6.843409 +v -12.823726 -8.706438 6.666632 +v -10.318527 -11.467932 7.002676 +v -10.200286 -11.336520 6.929452 +v -10.082045 -11.205108 7.002676 +v -10.033068 -11.150675 7.179452 +v -10.082045 -11.205108 7.356229 +v -10.200286 -11.336520 7.429452 +v -10.318527 -11.467932 7.356229 +v -10.367504 -11.522364 7.179452 +v -7.274232 -13.604080 7.515496 +v -7.190877 -13.448190 7.442273 +v -7.107521 -13.292300 7.515496 +v -7.072994 -13.227728 7.692273 +v -7.107521 -13.292300 7.869050 +v -7.190877 -13.448190 7.942273 +v -7.274232 -13.604080 7.869050 +v -7.308759 -13.668652 7.692273 +v -3.807185 -14.949608 8.028316 +v -3.763559 -14.778299 7.955093 +v -3.719932 -14.606990 8.028316 +v -3.701861 -14.536032 8.205093 +v -3.719932 -14.606990 8.381870 +v -3.763559 -14.778299 8.455093 +v -3.807185 -14.949608 8.381870 +v -3.825256 -15.020566 8.205093 +v -0.118879 -15.426319 8.541137 +v -0.117517 -15.249547 8.467914 +v -0.116154 -15.072775 8.541137 +v -0.115590 -14.999555 8.717914 +v -0.116154 -15.072775 8.894691 +v -0.117517 -15.249547 8.967914 +v -0.118879 -15.426319 8.894691 +v -0.119443 -15.499540 8.717914 +v 3.576338 -15.006507 9.053957 +v 3.535356 -14.834547 8.980734 +v 3.494374 -14.662586 9.053957 +v 3.477400 -14.591357 9.230734 +v 3.494374 -14.662586 9.407511 +v 3.535356 -14.834547 9.480734 +v 3.576338 -15.006507 9.407511 +v 3.593312 -15.077736 9.230734 +v 7.063709 -13.714571 9.566777 +v 6.982765 -13.557415 9.493554 +v 6.901821 -13.400258 9.566777 +v 6.868293 -13.335162 9.743554 +v 6.901821 -13.400258 9.920331 +v 6.982765 -13.557415 9.993554 +v 7.063709 -13.714571 9.920331 +v 7.097236 -13.779667 9.743554 +v 10.140563 -11.625593 10.079597 +v 10.024361 -11.492375 10.006374 +v 9.908160 -11.359156 10.079597 +v 9.860028 -11.303975 10.256374 +v 9.908160 -11.359156 10.433151 +v 10.024361 -11.492375 10.506374 +v 10.140563 -11.625593 10.433151 +v 10.188695 -11.680774 10.256374 +v 12.628084 -8.860978 10.592418 +v 12.483378 -8.759440 10.519195 +v 12.338672 -8.657901 10.592418 +v 12.278732 -8.615842 10.769195 +v 12.338672 -8.657901 10.945971 +v 12.483378 -8.759440 11.019195 +v 12.628084 -8.860978 10.945971 +v 12.688024 -8.903037 10.769195 +v 14.381706 -5.581394 11.105238 +v 14.216905 -5.517436 11.032015 +v 14.052103 -5.453479 11.105238 +v 13.983841 -5.426987 11.282015 +v 14.052103 -5.453479 11.458792 +v 14.216905 -5.517436 11.532015 +v 14.381706 -5.581394 11.458792 +v 14.449969 -5.607886 11.282015 +v 15.299515 -1.977440 11.618058 +v 15.124197 -1.954780 11.544835 +v 14.948879 -1.932121 11.618058 +v 14.876259 -1.922735 11.794835 +v 14.948879 -1.932121 11.971612 +v 15.124197 -1.954780 12.044835 +v 15.299515 -1.977440 11.971612 +v 15.372135 -1.986826 11.794835 +v 15.328171 1.741436 12.130878 +v 15.152524 1.721481 12.057655 +v 14.976877 1.701525 12.130878 +v 14.904122 1.693259 12.307655 +v 14.976877 1.701525 12.484432 +v 15.152524 1.721481 12.557655 +v 15.328171 1.741436 12.484432 +v 15.400927 1.749702 12.307655 +v 14.466010 5.359106 12.643699 +v 14.300242 5.297696 12.570476 +v 14.134475 5.236285 12.643699 +v 14.065813 5.210848 12.820476 +v 14.134475 5.236285 12.997252 +v 14.300242 5.297696 13.070476 +v 14.466010 5.359106 12.997252 +v 14.534672 5.384543 12.820476 +v 12.763135 8.665324 13.156519 +v 12.616881 8.566027 13.083296 +v 12.470627 8.466731 13.156519 +v 12.410047 8.425601 13.333296 +v 12.470627 8.466731 13.510073 +v 12.616881 8.566027 13.583296 +v 12.763135 8.665324 13.510073 +v 12.823715 8.706454 13.333296 +v 10.318513 11.467945 13.669339 +v 10.200272 11.336532 13.596116 +v 10.082031 11.205120 13.669339 +v 10.033054 11.150688 13.846116 +v 10.082031 11.205120 14.022893 +v 10.200272 11.336532 14.096116 +v 10.318513 11.467945 14.022893 +v 10.367490 11.522377 13.846116 +v 7.274215 13.604089 14.182159 +v 7.190859 13.448199 14.108936 +v 7.107503 13.292309 14.182159 +v 7.072976 13.227737 14.358936 +v 7.107503 13.292309 14.535713 +v 7.190859 13.448199 14.608936 +v 7.274215 13.604089 14.535713 +v 7.308742 13.668661 14.358936 +v 3.807166 14.949613 14.694980 +v 3.763539 14.778304 14.621757 +v 3.719913 14.606996 14.694980 +v 3.701842 14.536038 14.871757 +v 3.719913 14.606996 15.048533 +v 3.763539 14.778304 15.121757 +v 3.807166 14.949613 15.048533 +v 3.825237 15.020571 14.871757 +v 0.118858 15.426319 15.207800 +v 0.117497 15.249547 15.134577 +v 0.116135 15.072776 15.207800 +v 0.115570 14.999555 15.384577 +v 0.116135 15.072776 15.561354 +v 0.117497 15.249547 15.634577 +v 0.118858 15.426319 15.561354 +v 0.119424 15.499540 15.384577 +v -3.576356 15.006502 15.720620 +v -3.535374 14.834541 15.647397 +v -3.494393 14.662581 15.720620 +v -3.477417 14.591352 15.897397 +v -3.494393 14.662581 16.074173 +v -3.535374 14.834541 16.147396 +v -3.576356 15.006502 16.074173 +v -3.593331 15.077730 15.897397 +v -7.063727 13.714563 16.233440 +v -6.982783 13.557406 16.160217 +v -6.901839 13.400250 16.233440 +v -6.868311 13.335154 16.410217 +v -6.901839 13.400250 16.586994 +v -6.982783 13.557406 16.660217 +v -7.063727 13.714563 16.586994 +v -7.097254 13.779659 16.410217 +v -10.140578 11.625580 16.746262 +v -10.024376 11.492361 16.673038 +v -9.908174 11.359143 16.746262 +v -9.860042 11.303962 16.923038 +v -9.908174 11.359143 17.099815 +v -10.024376 11.492361 17.173038 +v -10.140578 11.625580 17.099815 +v -10.188710 11.680761 16.923038 +v -12.628095 8.860961 17.259083 +v -12.483389 8.759423 17.185860 +v -12.338683 8.657885 17.259083 +v -12.278744 8.615826 17.435860 +v -12.338683 8.657885 17.612637 +v -12.483389 8.759423 17.685860 +v -12.628095 8.860961 17.612637 +v -12.688035 8.903021 17.435860 +v -14.381714 5.581376 17.771904 +v -14.216912 5.517418 17.698681 +v -14.052111 5.453461 17.771904 +v -13.983848 5.426969 17.948681 +v -14.052111 5.453461 18.125458 +v -14.216912 5.517418 18.198681 +v -14.381714 5.581376 18.125458 +v -14.449976 5.607868 17.948681 +v -15.299518 1.977421 18.284725 +v -15.124199 1.954762 18.211502 +v -14.948880 1.932102 18.284725 +v -14.876261 1.922716 18.461502 +v -14.948880 1.932102 18.638279 +v -15.124199 1.954762 18.711502 +v -15.299518 1.977421 18.638279 +v -15.372137 1.986807 18.461502 +v -15.328170 -1.741456 18.797546 +v -15.152523 -1.721500 18.724323 +v -14.976876 -1.701545 18.797546 +v -14.904120 -1.693279 18.974323 +v -14.976876 -1.701545 19.151100 +v -15.152523 -1.721500 19.224323 +v -15.328170 -1.741456 19.151100 +v -15.400925 -1.749721 18.974323 +v -14.466002 -5.359124 19.310368 +v -14.300235 -5.297714 19.237144 +v -14.134468 -5.236303 19.310368 +v -14.065805 -5.210866 19.487144 +v -14.134468 -5.236303 19.663921 +v -14.300235 -5.297714 19.737144 +v -14.466002 -5.359124 19.663921 +v -14.534665 -5.384562 19.487144 +v -12.763123 -8.665340 19.823189 +v -12.616870 -8.566043 19.749966 +v -12.470616 -8.466746 19.823189 +v -12.410036 -8.425616 19.999966 +v -12.470616 -8.466746 20.176743 +v -12.616870 -8.566043 20.249966 +v -12.763123 -8.665340 20.176743 +v -12.823704 -8.706470 19.999966 +v -10.318497 -11.467957 20.336010 +v -10.200256 -11.336545 20.262787 +v -10.082016 -11.205133 20.336010 +v -10.033039 -11.150700 20.512787 +v -10.082016 -11.205133 20.689564 +v -10.200256 -11.336545 20.762787 +v -10.318497 -11.467957 20.689564 +v -10.367474 -11.522390 20.512787 +v -7.274198 -13.604099 20.848831 +v -7.190842 -13.448208 20.775608 +v -7.107487 -13.292318 20.848831 +v -7.072960 -13.227746 21.025608 +v -7.107487 -13.292318 21.202385 +v -7.190842 -13.448208 21.275608 +v -7.274198 -13.604099 21.202385 +v -7.308725 -13.668671 21.025608 +v -3.807147 -14.949618 21.361652 +v -3.763520 -14.778309 21.288429 +v -3.719894 -14.607000 21.361652 +v -3.701823 -14.536041 21.538429 +v -3.719894 -14.607000 21.715206 +v -3.763520 -14.778309 21.788429 +v -3.807147 -14.949618 21.715206 +v -3.825217 -15.020576 21.538429 +v -0.118839 -15.426318 21.874474 +v -0.117478 -15.249547 21.801250 +v -0.116116 -15.072776 21.874474 +v -0.115552 -14.999554 22.051250 +v -0.116116 -15.072776 22.228027 +v -0.117478 -15.249547 22.301250 +v -0.118839 -15.426318 22.228027 +v -0.119403 -15.499540 22.051250 +v 3.576375 -15.006498 22.387295 +v 3.535393 -14.834537 22.314072 +v 3.494411 -14.662577 22.387295 +v 3.477436 -14.591349 22.564072 +v 3.494411 -14.662577 22.740849 +v 3.535393 -14.834537 22.814072 +v 3.576375 -15.006498 22.740849 +v 3.593351 -15.077726 22.564072 +v 7.063743 -13.714553 22.900116 +v 6.982799 -13.557396 22.826893 +v 6.901855 -13.400240 22.900116 +v 6.868327 -13.335144 23.076893 +v 6.901855 -13.400240 23.253670 +v 6.982799 -13.557396 23.326893 +v 7.063743 -13.714553 23.253670 +v 7.097271 -13.779648 23.076893 +v 10.140593 -11.625567 23.412937 +v 10.024391 -11.492349 23.339714 +v 9.908189 -11.359131 23.412937 +v 9.860056 -11.303950 23.589714 +v 9.908189 -11.359131 23.766491 +v 10.024391 -11.492349 23.839714 +v 10.140593 -11.625567 23.766491 +v 10.188725 -11.680748 23.589714 +v 12.628107 -8.860946 23.925758 +v 12.483400 -8.759407 23.852535 +v 12.338694 -8.657869 23.925758 +v 12.278755 -8.615811 24.102535 +v 12.338694 -8.657869 24.279312 +v 12.483400 -8.759407 24.352535 +v 12.628107 -8.860946 24.279312 +v 12.688046 -8.903004 24.102535 +v 14.381721 -5.581357 24.438580 +v 14.216919 -5.517400 24.365356 +v 14.052118 -5.453442 24.438580 +v 13.983855 -5.426950 24.615356 +v 14.052118 -5.453442 24.792133 +v 14.216919 -5.517400 24.865356 +v 14.381721 -5.581357 24.792133 +v 14.449983 -5.607849 24.615356 +v 15.299522 -1.977401 24.951401 +v 15.124203 -1.954742 24.878178 +v 14.948884 -1.932082 24.951401 +v 14.876266 -1.922697 25.128178 +v 14.948884 -1.932082 25.304955 +v 15.124203 -1.954742 25.378178 +v 15.299522 -1.977401 25.304955 +v 15.372140 -1.986787 25.128178 +v 15.328167 1.741475 25.464222 +v 15.152520 1.721519 25.390999 +v 14.976873 1.701563 25.464222 +v 14.904118 1.693297 25.640999 +v 14.976873 1.701563 25.817776 +v 15.152520 1.721519 25.890999 +v 15.328167 1.741475 25.817776 +v 15.400922 1.749741 25.640999 +v 14.465995 5.359143 25.977043 +v 14.300228 5.297732 25.903820 +v 14.134461 5.236321 25.977043 +v 14.065798 5.210884 26.153820 +v 14.134461 5.236321 26.330597 +v 14.300228 5.297732 26.403820 +v 14.465995 5.359143 26.330597 +v 14.534659 5.384580 26.153820 +v 12.763112 8.665357 26.489864 +v 12.616859 8.566060 26.416641 +v 12.470605 8.466762 26.489864 +v 12.410025 8.425632 26.666641 +v 12.470605 8.466762 26.843418 +v 12.616859 8.566060 26.916641 +v 12.763112 8.665357 26.843418 +v 12.823692 8.706487 26.666641 +v 10.318482 11.467971 27.002686 +v 10.200242 11.336558 26.929462 +v 10.082001 11.205145 27.002686 +v 10.033025 11.150713 27.179462 +v 10.082001 11.205145 27.356239 +v 10.200242 11.336558 27.429462 +v 10.318482 11.467971 27.356239 +v 10.367459 11.522403 27.179462 +v 7.274180 13.604108 27.515507 +v 7.190825 13.448217 27.442284 +v 7.107469 13.292327 27.515507 +v 7.072942 13.227754 27.692284 +v 7.107469 13.292327 27.869061 +v 7.190825 13.448217 27.942284 +v 7.274180 13.604108 27.869061 +v 7.308707 13.668680 27.692284 +v 3.807128 14.949622 28.028328 +v 3.763502 14.778314 27.955105 +v 3.719875 14.607005 28.028328 +v 3.701805 14.536046 28.205105 +v 3.719875 14.607005 28.381882 +v 3.763502 14.778314 28.455105 +v 3.807128 14.949622 28.381882 +v 3.825199 15.020581 28.205105 +v 0.118820 15.426320 28.541149 +v 0.117458 15.249549 28.467926 +v 0.116096 15.072777 28.541149 +v 0.115533 14.999556 28.717926 +v 0.116096 15.072777 28.894703 +v 0.117458 15.249549 28.967926 +v 0.118820 15.426320 28.894703 +v 0.119383 15.499541 28.717926 +v -3.576394 15.006493 29.053970 +v -3.535412 14.834533 28.980747 +v -3.494430 14.662572 29.053970 +v -3.477455 14.591344 29.230747 +v -3.494430 14.662572 29.407524 +v -3.535412 14.834533 29.480747 +v -3.576394 15.006493 29.407524 +v -3.593369 15.077722 29.230747 +v -7.063761 13.714544 29.566792 +v -6.982817 13.557388 29.493568 +v -6.901872 13.400231 29.566792 +v -6.868345 13.335135 29.743568 +v -6.901872 13.400231 29.920345 +v -6.982817 13.557388 29.993568 +v -7.063761 13.714544 29.920345 +v -7.097289 13.779640 29.743568 +v -10.140608 11.625555 30.079613 +v -10.024406 11.492337 30.006390 +v -9.908204 11.359118 30.079613 +v -9.860071 11.303938 30.256390 +v -9.908204 11.359118 30.433167 +v -10.024406 11.492337 30.506390 +v -10.140608 11.625555 30.433167 +v -10.188740 11.680735 30.256390 +v -12.628118 8.860930 30.592434 +v -12.483412 8.759392 30.519211 +v -12.338705 8.657853 30.592434 +v -12.278765 8.615795 30.769211 +v -12.338705 8.657853 30.945988 +v -12.483412 8.759392 31.019211 +v -12.628118 8.860930 30.945988 +v -12.688058 8.902988 30.769211 +v -14.381727 5.581340 31.105255 +v -14.216926 5.517382 31.032032 +v -14.052125 5.453425 31.105255 +v -13.983861 5.426934 31.282032 +v -14.052125 5.453425 31.458809 +v -14.216926 5.517382 31.532032 +v -14.381727 5.581340 31.458809 +v -14.449991 5.607831 31.282032 +v -15.299523 1.977381 31.618076 +v -15.124205 1.954722 31.544853 +v -14.948886 1.932064 31.618076 +v -14.876267 1.922678 31.794853 +v -14.948886 1.932064 31.971630 +v -15.124205 1.954722 32.044853 +v -15.299523 1.977381 31.971630 +v -15.372143 1.986767 31.794853 +v -15.328165 -1.741495 32.130898 +v -15.152518 -1.721539 32.057674 +v -14.976871 -1.701583 32.130898 +v -14.904116 -1.693317 32.307674 +v -14.976871 -1.701583 32.484451 +v -15.152518 -1.721539 32.557674 +v -15.328165 -1.741495 32.484451 +v -15.400920 -1.749761 32.307674 +v -14.465988 -5.359161 32.643719 +v -14.300222 -5.297750 32.570496 +v -14.134455 -5.236340 32.643719 +v -14.065791 -5.210902 32.820496 +v -14.134455 -5.236340 32.997272 +v -14.300222 -5.297750 33.070496 +v -14.465988 -5.359161 32.997272 +v -14.534652 -5.384599 32.820496 +v -12.763101 -8.665373 33.156540 +v -12.616848 -8.566076 33.083317 +v -12.470594 -8.466778 33.156540 +v -12.410014 -8.425648 33.333317 +v -12.470594 -8.466778 33.510094 +v -12.616848 -8.566076 33.583317 +v -12.763101 -8.665373 33.510094 +v -12.823681 -8.706503 33.333317 +v -10.318468 -11.467984 33.669361 +v -10.200228 -11.336572 33.596138 +v -10.081987 -11.205159 33.669361 +v -10.033011 -11.150726 33.846138 +v -10.081987 -11.205159 34.022915 +v -10.200228 -11.336572 34.096138 +v -10.318468 -11.467984 34.022915 +v -10.367444 -11.522417 33.846138 +v -7.274163 -13.604117 34.182182 +v -7.190808 -13.448227 34.108959 +v -7.107453 -13.292336 34.182182 +v -7.072926 -13.227764 34.358959 +v -7.107453 -13.292336 34.535736 +v -7.190808 -13.448227 34.608959 +v -7.274163 -13.604117 34.535736 +v -7.308690 -13.668689 34.358959 +v -3.807110 -14.949627 34.695004 +v -3.763484 -14.778318 34.621780 +v -3.719857 -14.607010 34.695004 +v -3.701787 -14.536051 34.871780 +v -3.719857 -14.607010 35.048557 +v -3.763484 -14.778318 35.121780 +v -3.807110 -14.949627 35.048557 +v -3.825180 -15.020586 34.871780 +v -0.118800 -15.426320 35.207825 +v -0.117439 -15.249548 35.134602 +v -0.116077 -15.072777 35.207825 +v -0.115513 -14.999556 35.384602 +v -0.116077 -15.072777 35.561378 +v -0.117439 -15.249548 35.634602 +v -0.118800 -15.426320 35.561378 +v -0.119364 -15.499541 35.384602 +v 3.576414 -15.006488 35.720646 +v 3.535431 -14.834528 35.647423 +v 3.494449 -14.662568 35.720646 +v 3.477473 -14.591339 35.897423 +v 3.494449 -14.662568 36.074200 +v 3.535431 -14.834528 36.147423 +v 3.576414 -15.006488 36.074200 +v 3.593389 -15.077717 35.897423 +v 7.063779 -13.714535 36.233467 +v 6.982835 -13.557379 36.160244 +v 6.901890 -13.400223 36.233467 +v 6.868362 -13.335127 36.410244 +v 6.901890 -13.400223 36.587021 +v 6.982835 -13.557379 36.660244 +v 7.063779 -13.714535 36.587021 +v 7.097307 -13.779631 36.410244 +v 10.140623 -11.625542 36.746288 +v 10.024421 -11.492324 36.673065 +v 9.908218 -11.359106 36.746288 +v 9.860086 -11.303925 36.923065 +v 9.908218 -11.359106 37.099842 +v 10.024421 -11.492324 37.173065 +v 10.140623 -11.625542 37.099842 +v 10.188755 -11.680723 36.923065 +v 12.628130 -8.860914 37.259109 +v 12.483423 -8.759376 37.185886 +v 12.338716 -8.657838 37.259109 +v 12.278777 -8.615780 37.435886 +v 12.338716 -8.657838 37.612663 +v 12.483423 -8.759376 37.685886 +v 12.628130 -8.860914 37.612663 +v 12.688069 -8.902972 37.435886 +v 14.381735 -5.581321 37.771931 +v 14.216934 -5.517364 37.698708 +v 14.052133 -5.453408 37.771931 +v 13.983870 -5.426916 37.948708 +v 14.052133 -5.453407 38.125484 +v 14.216934 -5.517364 38.198708 +v 14.381736 -5.581320 38.125484 +v 14.449999 -5.607812 37.948708 +v 15.299525 -1.977361 38.284752 +v 15.124206 -1.954703 38.211529 +v 14.948888 -1.932044 38.284752 +v 14.876268 -1.922658 38.461529 +v 14.948888 -1.932044 38.638306 +v 15.124206 -1.954703 38.711529 +v 15.299525 -1.977361 38.638306 +v 15.372144 -1.986747 38.461529 +v 15.328162 1.741514 38.797573 +v 15.152516 1.721558 38.724350 +v 14.976869 1.701602 38.797573 +v 14.904114 1.693336 38.974350 +v 14.976869 1.701602 39.151127 +v 15.152516 1.721558 39.224350 +v 15.328162 1.741514 39.151127 +v 15.400917 1.749780 38.974350 +v 14.465981 5.359180 39.310394 +v 14.300215 5.297769 39.237171 +v 14.134448 5.236358 39.310394 +v 14.065785 5.210920 39.487171 +v 14.134448 5.236358 39.663948 +v 14.300215 5.297769 39.737171 +v 14.465981 5.359180 39.663948 +v 14.534645 5.384618 39.487171 +v 12.763090 8.665389 39.823215 +v 12.616837 8.566092 39.749992 +v 12.470583 8.466794 39.823215 +v 12.410003 8.425664 39.999992 +v 12.470583 8.466794 40.176769 +v 12.616837 8.566092 40.249992 +v 12.763090 8.665389 40.176769 +v 12.823670 8.706520 39.999992 +v 10.318454 11.467997 40.336037 +v 10.200213 11.336585 40.262814 +v 10.081973 11.205172 40.336037 +v 10.032997 11.150739 40.512814 +v 10.081973 11.205172 40.689590 +v 10.200213 11.336585 40.762814 +v 10.318454 11.467997 40.689590 +v 10.367430 11.522430 40.512814 +v 7.274145 13.604127 40.848858 +v 7.190790 13.448236 40.775635 +v 7.107435 13.292345 40.848858 +v 7.072908 13.227773 41.025635 +v 7.107435 13.292345 41.202412 +v 7.190790 13.448236 41.275635 +v 7.274145 13.604127 41.202412 +v 7.308672 13.668699 41.025635 +v 3.807088 14.949632 41.361679 +v 3.763463 14.778323 41.288456 +v 3.719838 14.607014 41.361679 +v 3.701767 14.536056 41.538456 +v 3.719838 14.607014 41.715233 +v 3.763463 14.778323 41.788456 +v 3.807088 14.949632 41.715233 +v 3.825159 15.020590 41.538456 +v 0.118780 15.426319 41.874500 +v 0.117419 15.249547 41.801277 +v 0.116057 15.072776 41.874500 +v 0.115493 14.999555 42.051277 +v 0.116057 15.072776 42.228054 +v 0.117419 15.249547 42.301277 +v 0.118780 15.426319 42.228054 +v 0.119344 15.499540 42.051277 +v -3.576433 15.006484 42.387321 +v -3.535451 14.834524 42.314098 +v -3.494468 14.662564 42.387321 +v -3.477492 14.591335 42.564098 +v -3.494468 14.662564 42.740875 +v -3.535451 14.834524 42.814098 +v -3.576433 15.006484 42.740875 +v -3.593409 15.077713 42.564098 +v -7.063796 13.714526 42.900143 +v -6.982852 13.557370 42.826920 +v -6.901907 13.400214 42.900143 +v -6.868379 13.335118 43.076920 +v -6.901907 13.400214 43.253696 +v -6.982852 13.557370 43.326920 +v -7.063796 13.714526 43.253696 +v -7.097324 13.779621 43.076920 +v -10.140637 11.625529 43.412964 +v -10.024435 11.492311 43.339741 +v -9.908233 11.359093 43.412964 +v -9.860100 11.303912 43.589741 +v -9.908233 11.359093 43.766518 +v -10.024435 11.492311 43.839741 +v -10.140637 11.625529 43.766518 +v -10.188770 11.680709 43.589741 +v -12.628141 8.860897 43.925785 +v -12.483434 8.759359 43.852562 +v -12.338726 8.657822 43.925785 +v -12.278787 8.615763 44.102562 +v -12.338726 8.657822 44.279339 +v -12.483434 8.759359 44.352562 +v -12.628141 8.860897 44.279339 +v -12.688080 8.902955 44.102562 +v -14.381742 5.581301 44.438606 +v -14.216941 5.517345 44.365383 +v -14.052139 5.453389 44.438606 +v -13.983876 5.426897 44.615383 +v -14.052139 5.453389 44.792160 +v -14.216941 5.517345 44.865383 +v -14.381742 5.581301 44.792160 +v -14.450005 5.607793 44.615383 +v -15.299528 1.977342 44.951427 +v -15.124209 1.954683 44.878204 +v -14.948891 1.932025 44.951427 +v -14.876271 1.922639 45.128204 +v -14.948891 1.932025 45.304981 +v -15.124209 1.954683 45.378204 +v -15.299528 1.977342 45.304981 +v -15.372147 1.986728 45.128204 +v -15.328160 -1.741534 45.464249 +v -15.152514 -1.721578 45.391026 +v -14.976867 -1.701621 45.464249 +v -14.904112 -1.693355 45.641026 +v -14.976867 -1.701621 45.817802 +v -15.152514 -1.721578 45.891026 +v -15.328160 -1.741534 45.817802 +v -15.400915 -1.749800 45.641026 +v -14.465974 -5.359198 45.977070 +v -14.300207 -5.297787 45.903847 +v -14.134441 -5.236375 45.977070 +v -14.065778 -5.210938 46.153847 +v -14.134441 -5.236375 46.330624 +v -14.300207 -5.297787 46.403847 +v -14.465974 -5.359198 46.330624 +v -14.534637 -5.384636 46.153847 +v -12.763079 -8.665406 46.489891 +v -12.616826 -8.566108 46.416668 +v -12.470573 -8.466810 46.489891 +v -12.409993 -8.425680 46.666668 +v -12.470572 -8.466810 46.843445 +v -12.616826 -8.566108 46.916668 +v -12.763079 -8.665406 46.843445 +v -12.823659 -8.706536 46.666668 +v -10.318439 -11.468011 47.002712 +v -10.200199 -11.336597 46.929489 +v -10.081959 -11.205184 47.002712 +v -10.032983 -11.150752 47.179489 +v -10.081959 -11.205184 47.356266 +v -10.200199 -11.336597 47.429489 +v -10.318439 -11.468011 47.356266 +v -10.367415 -11.522443 47.179489 +v -7.274129 -13.604136 47.515533 +v -7.190773 -13.448245 47.442310 +v -7.107418 -13.292354 47.515533 +v -7.072892 -13.227783 47.692310 +v -7.107418 -13.292354 47.869087 +v -7.190773 -13.448245 47.942310 +v -7.274128 -13.604136 47.869087 +v -7.308655 -13.668708 47.692310 +v -3.807070 -14.949637 48.028355 +v -3.763445 -14.778328 47.955132 +v -3.719820 -14.607019 48.028355 +v -3.701749 -14.536060 48.205132 +v -3.719820 -14.607019 48.381908 +v -3.763445 -14.778328 48.455132 +v -3.807070 -14.949637 48.381908 +v -3.825141 -15.020596 48.205132 +v -0.118760 -15.426320 48.541176 +v -0.117399 -15.249548 48.467953 +v -0.116039 -15.072777 48.541176 +v -0.115475 -14.999556 48.717953 +v -0.116039 -15.072777 48.894730 +v -0.117399 -15.249548 48.967953 +v -0.118760 -15.426320 48.894730 +v -0.119324 -15.499540 48.717953 +v 3.576452 -15.006480 49.053997 +v 3.535469 -14.834519 48.980774 +v 3.494486 -14.662558 49.053997 +v 3.477510 -14.591330 49.230774 +v 3.494486 -14.662558 49.407551 +v 3.535469 -14.834519 49.480774 +v 3.576452 -15.006480 49.407551 +v 3.593427 -15.077708 49.230774 +v 7.063814 -13.714517 49.566818 +v 6.982869 -13.557361 49.493595 +v 6.901924 -13.400205 49.566818 +v 6.868396 -13.335110 49.743595 +v 6.901924 -13.400205 49.920372 +v 6.982869 -13.557361 49.993595 +v 7.063814 -13.714517 49.920372 +v 7.097342 -13.779613 49.743595 +v 10.140652 -11.625515 50.079639 +v 10.024449 -11.492298 50.006416 +v 9.908247 -11.359080 50.079639 +v 9.860114 -11.303899 50.256416 +v 9.908247 -11.359080 50.433193 +v 10.024449 -11.492298 50.506416 +v 10.140652 -11.625515 50.433193 +v 10.188785 -11.680696 50.256416 +v 12.628152 -8.860881 50.592461 +v 12.483445 -8.759344 50.519238 +v 12.338738 -8.657806 50.592461 +v 12.278798 -8.615748 50.769238 +v 12.338738 -8.657806 50.946014 +v 12.483445 -8.759344 51.019238 +v 12.628152 -8.860881 50.946014 +v 12.688092 -8.902939 50.769238 +v 14.381749 -5.581284 51.105282 +v 14.216947 -5.517328 51.032059 +v 14.052146 -5.453371 51.105282 +v 13.983883 -5.426879 51.282059 +v 14.052146 -5.453371 51.458836 +v 14.216947 -5.517328 51.532059 +v 14.381749 -5.581284 51.458836 +v 14.450012 -5.607776 51.282059 +v 15.299530 -1.977323 51.618103 +v 15.124212 -1.954664 51.544880 +v 14.948893 -1.932006 51.618103 +v 14.876274 -1.922621 51.794880 +v 14.948893 -1.932006 51.971657 +v 15.124212 -1.954664 52.044880 +v 15.299530 -1.977323 51.971657 +v 15.372149 -1.986708 51.794880 +v 15.328158 1.741553 52.130924 +v 15.152511 1.721597 52.057701 +v 14.976865 1.701640 52.130924 +v 14.904109 1.693374 52.307701 +v 14.976865 1.701640 52.484478 +v 15.152511 1.721597 52.557701 +v 15.328158 1.741553 52.484478 +v 15.400913 1.749820 52.307701 +v 14.465968 5.359217 52.643745 +v 14.300201 5.297805 52.570522 +v 14.134435 5.236394 52.643745 +v 14.065772 5.210956 52.820522 +v 14.134435 5.236394 52.997299 +v 14.300201 5.297805 53.070522 +v 14.465968 5.359217 52.997299 +v 14.534631 5.384655 52.820522 +v 12.763068 8.665422 53.156567 +v 12.616815 8.566124 53.083344 +v 12.470562 8.466826 53.156567 +v 12.409982 8.425696 53.333344 +v 12.470562 8.466826 53.510120 +v 12.616815 8.566124 53.583344 +v 12.763068 8.665422 53.510120 +v 12.823648 8.706552 53.333344 +v 10.318423 11.468023 53.669388 +v 10.200184 11.336611 53.596165 +v 10.081945 11.205198 53.669388 +v 10.032968 11.150765 53.846165 +v 10.081945 11.205198 54.022942 +v 10.200184 11.336611 54.096165 +v 10.318423 11.468023 54.022942 +v 10.367400 11.522456 53.846165 +v 7.274111 13.604145 54.182209 +v 7.190756 13.448254 54.108986 +v 7.107401 13.292363 54.182209 +v 7.072875 13.227791 54.358986 +v 7.107401 13.292363 54.535763 +v 7.190756 13.448254 54.608986 +v 7.274111 13.604145 54.535763 +v 7.308637 13.668717 54.358986 +v 3.807052 14.949642 54.695030 +v 3.763427 14.778333 54.621807 +v 3.719801 14.607024 54.695030 +v 3.701731 14.536065 54.871807 +v 3.719801 14.607024 55.048584 +v 3.763427 14.778333 55.121807 +v 3.807052 14.949642 55.048584 +v 3.825122 15.020601 54.871807 +v 0.118740 15.426319 55.207851 +v 0.117380 15.249548 55.134628 +v 0.116020 15.072776 55.207851 +v 0.115456 14.999555 55.384628 +v 0.116020 15.072776 55.561405 +v 0.117380 15.249548 55.634628 +v 0.118740 15.426319 55.561405 +v 0.119304 15.499541 55.384628 +v -3.576414 15.006488 55.720673 +v -3.535431 14.834528 55.647449 +v -3.494449 14.662568 55.720673 +v -3.477473 14.591339 55.897449 +v -3.494449 14.662568 56.074226 +v -3.535431 14.834528 56.147449 +v -3.576414 15.006488 56.074226 +v -3.593389 15.077717 55.897449 +v -7.063779 13.714535 56.233494 +v -6.982835 13.557379 56.160271 +v -6.901890 13.400223 56.233494 +v -6.868362 13.335127 56.410271 +v -6.901890 13.400223 56.587048 +v -6.982835 13.557379 56.660271 +v -7.063779 13.714535 56.587048 +v -7.097307 13.779631 56.410271 +v -10.140623 11.625541 56.746315 +v -10.024420 11.492323 56.673092 +v -9.908218 11.359105 56.746315 +v -9.860086 11.303924 56.923092 +v -9.908218 11.359105 57.099869 +v -10.024420 11.492323 57.173092 +v -10.140623 11.625541 57.099869 +v -10.188755 11.680722 56.923092 +v -12.628130 8.860914 57.259136 +v -12.483423 8.759376 57.185913 +v -12.338717 8.657837 57.259136 +v -12.278777 8.615779 57.435913 +v -12.338717 8.657837 57.612690 +v -12.483423 8.759376 57.685913 +v -12.628130 8.860914 57.612690 +v -12.688069 8.902972 57.435913 +v -14.381735 5.581320 57.771957 +v -14.216934 5.517363 57.698734 +v -14.052132 5.453407 57.771957 +v -13.983869 5.426915 57.948734 +v -14.052133 5.453407 58.125511 +v -14.216934 5.517363 58.198734 +v -14.381735 5.581320 58.125511 +v -14.449998 5.607811 57.948734 +v -15.299525 1.977361 58.284779 +v -15.124206 1.954703 58.211555 +v -14.948888 1.932044 58.284779 +v -14.876268 1.922658 58.461555 +v -14.948888 1.932044 58.638332 +v -15.124206 1.954703 58.711555 +v -15.299525 1.977361 58.638332 +v -15.372144 1.986747 58.461555 +v -15.328162 -1.741515 58.797600 +v -15.152515 -1.721558 58.724377 +v -14.976869 -1.701602 58.797600 +v -14.904114 -1.693336 58.974377 +v -14.976869 -1.701602 59.151154 +v -15.152515 -1.721558 59.224377 +v -15.328162 -1.741515 59.151154 +v -15.400917 -1.749781 58.974377 +v -14.465981 -5.359180 59.310421 +v -14.300215 -5.297769 59.237198 +v -14.134448 -5.236358 59.310421 +v -14.065785 -5.210920 59.487198 +v -14.134448 -5.236358 59.663975 +v -14.300215 -5.297769 59.737198 +v -14.465981 -5.359180 59.663975 +v -14.534645 -5.384618 59.487198 +v -12.763090 -8.665390 59.823242 +v -12.616837 -8.566092 59.750019 +v -12.470583 -8.466795 59.823242 +v -12.410003 -8.425664 60.000019 +v -12.470583 -8.466795 60.176796 +v -12.616837 -8.566092 60.250019 +v -12.763090 -8.665390 60.176796 +v -12.823670 -8.706520 60.000019 +v -10.318454 -11.467998 60.336063 +v -10.200213 -11.336585 60.262840 +v -10.081973 -11.205172 60.336063 +v -10.032997 -11.150739 60.512840 +v -10.081973 -11.205172 60.689617 +v -10.200213 -11.336585 60.762840 +v -10.318454 -11.467998 60.689617 +v -10.367430 -11.522430 60.512840 +v -7.274144 -13.604127 60.848885 +v -7.190789 -13.448236 60.775661 +v -7.107434 -13.292345 60.848885 +v -7.072907 -13.227772 61.025661 +v -7.107434 -13.292345 61.202438 +v -7.190789 -13.448236 61.275661 +v -7.274144 -13.604127 61.202438 +v -7.308671 -13.668699 61.025661 +v -3.807088 -14.949632 61.361706 +v -3.763463 -14.778323 61.288483 +v -3.719838 -14.607014 61.361706 +v -3.701767 -14.536056 61.538483 +v -3.719838 -14.607014 61.715260 +v -3.763463 -14.778323 61.788483 +v -3.807088 -14.949632 61.715260 +v -3.825159 -15.020590 61.538483 +v -0.118780 -15.426319 61.874527 +v -0.117419 -15.249547 61.801304 +v -0.116057 -15.072776 61.874527 +v -0.115493 -14.999555 62.051304 +v -0.116057 -15.072776 62.228081 +v -0.117419 -15.249547 62.301304 +v -0.118780 -15.426319 62.228081 +v -0.119344 -15.499540 62.051304 +v 3.576433 -15.006484 62.387348 +v 3.535451 -14.834524 62.314125 +v 3.494469 -14.662564 62.387348 +v 3.477492 -14.591335 62.564125 +v 3.494469 -14.662564 62.740902 +v 3.535451 -14.834524 62.814125 +v 3.576433 -15.006484 62.740902 +v 3.593409 -15.077713 62.564125 +v 7.063797 -13.714526 62.900169 +v 6.982852 -13.557370 62.826946 +v 6.901907 -13.400213 62.900169 +v 6.868379 -13.335118 63.076946 +v 6.901907 -13.400213 63.253723 +v 6.982852 -13.557370 63.326946 +v 7.063797 -13.714526 63.253723 +v 7.097325 -13.779621 63.076946 +v 10.140638 -11.625529 63.412991 +v 10.024435 -11.492311 63.339767 +v 9.908233 -11.359093 63.412991 +v 9.860100 -11.303912 63.589767 +v 9.908233 -11.359093 63.766544 +v 10.024435 -11.492311 63.839767 +v 10.140638 -11.625529 63.766544 +v 10.188770 -11.680709 63.589767 +v 12.628141 -8.860897 63.925808 +v 12.483434 -8.759359 63.852585 +v 12.338727 -8.657821 63.925808 +v 12.278787 -8.615763 64.102585 +v 12.338727 -8.657821 64.279358 +v 12.483434 -8.759359 64.352585 +v 12.628141 -8.860897 64.279358 +v 12.688080 -8.902955 64.102585 +v 14.381742 -5.581301 64.438629 +v 14.216941 -5.517345 64.365402 +v 14.052139 -5.453389 64.438629 +v 13.983876 -5.426897 64.615402 +v 14.052139 -5.453389 64.792175 +v 14.216941 -5.517345 64.865402 +v 14.381742 -5.581301 64.792175 +v 14.450005 -5.607793 64.615402 +v 15.299528 -1.977341 64.951447 +v 15.124210 -1.954683 64.878220 +v 14.948892 -1.932024 64.951447 +v 14.876272 -1.922638 65.128220 +v 14.948892 -1.932024 65.304993 +v 15.124210 -1.954683 65.378220 +v 15.299528 -1.977341 65.304993 +v 15.372148 -1.986727 65.128220 +v 15.328160 1.741534 65.464264 +v 15.152514 1.721578 65.391037 +v 14.976867 1.701622 65.464264 +v 14.904112 1.693356 65.641037 +v 14.976867 1.701622 65.817810 +v 15.152514 1.721578 65.891037 +v 15.328160 1.741534 65.817810 +v 15.400915 1.749801 65.641037 +v 14.465974 5.359199 65.977081 +v 14.300208 5.297787 65.903854 +v 14.134441 5.236376 65.977081 +v 14.065778 5.210938 66.153854 +v 14.134441 5.236376 66.330627 +v 14.300208 5.297787 66.403854 +v 14.465974 5.359199 66.330627 +v 14.534638 5.384636 66.153854 +v 12.763079 8.665406 66.489899 +v 12.616826 8.566108 66.416672 +v 12.470572 8.466811 66.489899 +v 12.409992 8.425680 66.666672 +v 12.470572 8.466811 66.843445 +v 12.616826 8.566108 66.916672 +v 12.763079 8.665406 66.843445 +v 12.823659 8.706536 66.666672 +v 10.318439 11.468011 67.002716 +v 10.200199 11.336598 66.929489 +v 10.081958 11.205185 67.002716 +v 10.032982 11.150752 67.179489 +v 10.081958 11.205185 67.356262 +v 10.200199 11.336598 67.429489 +v 10.318439 11.468011 67.356262 +v 10.367415 11.522444 67.179489 +v 7.274128 13.604136 67.515533 +v 7.190772 13.448245 67.442307 +v 7.107417 13.292354 67.515533 +v 7.072891 13.227782 67.692307 +v 7.107417 13.292354 67.869080 +v 7.190772 13.448245 67.942307 +v 7.274127 13.604136 67.869080 +v 7.308654 13.668708 67.692307 +v 3.807070 14.949637 68.028351 +v 3.763445 14.778328 67.955124 +v 3.719820 14.607019 68.028351 +v 3.701749 14.536060 68.205124 +v 3.719820 14.607019 68.381897 +v 3.763445 14.778328 68.455124 +v 3.807070 14.949637 68.381897 +v 3.825141 15.020596 68.205124 +v 0.118759 15.426319 68.541168 +v 0.117399 15.249548 68.467941 +v 0.116038 15.072776 68.541168 +v 0.115474 14.999556 68.717941 +v 0.116038 15.072776 68.894714 +v 0.117399 15.249548 68.967941 +v 0.118759 15.426319 68.894714 +v 0.119323 15.499540 68.717941 +v -3.576452 15.006479 69.053986 +v -3.535469 14.834518 68.980759 +v -3.494486 14.662557 69.053986 +v -3.477511 14.591329 69.230759 +v -3.494486 14.662557 69.407532 +v -3.535469 14.834518 69.480759 +v -3.576452 15.006479 69.407532 +v -3.593428 15.077707 69.230759 +v -7.063814 13.714517 69.566803 +v -6.982869 13.557361 69.493576 +v -6.901925 13.400205 69.566803 +v -6.868396 13.335109 69.743576 +v -6.901925 13.400205 69.920349 +v -6.982869 13.557361 69.993576 +v -7.063814 13.714517 69.920349 +v -7.097343 13.779613 69.743576 +v -10.140652 11.625515 70.079620 +v -10.024450 11.492297 70.006393 +v -9.908247 11.359079 70.079620 +v -9.860114 11.303899 70.256393 +v -9.908247 11.359079 70.433167 +v -10.024450 11.492297 70.506393 +v -10.140652 11.625515 70.433167 +v -10.188785 11.680696 70.256393 +v -12.628152 8.860881 70.592438 +v -12.483445 8.759343 70.519211 +v -12.338738 8.657806 70.592438 +v -12.278798 8.615748 70.769211 +v -12.338738 8.657806 70.945984 +v -12.483445 8.759343 71.019211 +v -12.628152 8.860881 70.945984 +v -12.688092 8.902939 70.769211 +v -14.381750 5.581283 71.105255 +v -14.216948 5.517327 71.032028 +v -14.052147 5.453371 71.105255 +v -13.983884 5.426879 71.282028 +v -14.052147 5.453371 71.458801 +v -14.216948 5.517327 71.532028 +v -14.381750 5.581283 71.458801 +v -14.450013 5.607775 71.282028 +v -15.299531 1.977322 71.618073 +v -15.124212 1.954664 71.544846 +v -14.948894 1.932005 71.618073 +v -14.876275 1.922620 71.794846 +v -14.948894 1.932005 71.971619 +v -15.124212 1.954664 72.044846 +v -15.299531 1.977322 71.971619 +v -15.372150 1.986707 71.794846 +v -15.328157 -1.741553 72.130890 +v -15.152511 -1.721597 72.057663 +v -14.976865 -1.701641 72.130890 +v -14.904109 -1.693374 72.307663 +v -14.976865 -1.701641 72.484436 +v -15.152511 -1.721597 72.557663 +v -15.328157 -1.741553 72.484436 +v -15.400913 -1.749820 72.307663 +v -14.465968 -5.359217 72.643707 +v -14.300201 -5.297806 72.570480 +v -14.134435 -5.236394 72.643707 +v -14.065772 -5.210957 72.820480 +v -14.134435 -5.236394 72.997253 +v -14.300201 -5.297806 73.070480 +v -14.465968 -5.359217 72.997253 +v -14.534631 -5.384655 72.820480 +v -12.763068 -8.665422 73.156525 +v -12.616815 -8.566124 73.083298 +v -12.470561 -8.466827 73.156525 +v -12.409982 -8.425696 73.333298 +v -12.470561 -8.466827 73.510071 +v -12.616815 -8.566124 73.583298 +v -12.763068 -8.665422 73.510071 +v -12.823648 -8.706553 73.333298 +v -10.318423 -11.468024 73.669342 +v -10.200184 -11.336611 73.596115 +v -10.081945 -11.205198 73.669342 +v -10.032968 -11.150765 73.846115 +v -10.081945 -11.205198 74.022888 +v -10.200184 -11.336611 74.096115 +v -10.318423 -11.468024 74.022888 +v -10.367400 -11.522457 73.846115 +v -7.274110 -13.604145 74.182159 +v -7.190755 -13.448254 74.108932 +v -7.107400 -13.292363 74.182159 +v -7.072874 -13.227791 74.358932 +v -7.107400 -13.292363 74.535706 +v -7.190755 -13.448254 74.608932 +v -7.274110 -13.604145 74.535706 +v -7.308636 -13.668717 74.358932 +v -3.807051 -14.949643 74.694977 +v -3.763426 -14.778334 74.621750 +v -3.719801 -14.607024 74.694977 +v -3.701730 -14.536066 74.871750 +v -3.719801 -14.607024 75.048523 +v -3.763426 -14.778334 75.121750 +v -3.807051 -14.949643 75.048523 +v -3.825122 -15.020602 74.871750 +v -0.118740 -15.426320 75.207794 +v -0.117380 -15.249549 75.134567 +v -0.116019 -15.072777 75.207794 +v -0.115456 -14.999556 75.384567 +v -0.116019 -15.072777 75.561340 +v -0.117380 -15.249549 75.634567 +v -0.118740 -15.426320 75.561340 +v -0.119304 -15.499542 75.384567 +v 3.576472 -15.006475 75.720612 +v 3.535488 -14.834514 75.647385 +v 3.494505 -14.662554 75.720612 +v 3.477530 -14.591326 75.897385 +v 3.494505 -14.662554 76.074158 +v 3.535488 -14.834514 76.147385 +v 3.576472 -15.006475 76.074158 +v 3.593447 -15.077703 75.897385 +v 7.063832 -13.714508 76.233429 +v 6.982887 -13.557352 76.160202 +v 6.901941 -13.400196 76.233429 +v 6.868413 -13.335100 76.410202 +v 6.901941 -13.400196 76.586975 +v 6.982887 -13.557352 76.660202 +v 7.063832 -13.714508 76.586975 +v 7.097360 -13.779603 76.410202 +v 10.140668 -11.625503 76.746246 +v 10.024465 -11.492285 76.673019 +v 9.908262 -11.359067 76.746246 +v 9.860129 -11.303887 76.923019 +v 9.908262 -11.359067 77.099792 +v 10.024465 -11.492285 77.173019 +v 10.140668 -11.625503 77.099792 +v 10.188800 -11.680683 76.923019 +v 12.628164 -8.860865 77.259064 +v 12.483457 -8.759327 77.185837 +v 12.338749 -8.657790 77.259064 +v 12.278810 -8.615732 77.435837 +v 12.338749 -8.657790 77.612610 +v 12.483457 -8.759327 77.685837 +v 12.628164 -8.860865 77.612610 +v 12.688104 -8.902923 77.435837 +v 14.381756 -5.581265 77.771881 +v 14.216954 -5.517309 77.698654 +v 14.052153 -5.453353 77.771881 +v 13.983889 -5.426861 77.948654 +v 14.052153 -5.453353 78.125427 +v 14.216954 -5.517309 78.198654 +v 14.381756 -5.581265 78.125427 +v 14.450020 -5.607757 77.948654 +v 15.299534 -1.977303 78.284698 +v 15.124215 -1.954645 78.211472 +v 14.948896 -1.931987 78.284698 +v 14.876276 -1.922602 78.461472 +v 14.948896 -1.931987 78.638245 +v 15.124215 -1.954645 78.711472 +v 15.299534 -1.977303 78.638245 +v 15.372153 -1.986688 78.461472 +v 15.328155 1.741573 78.797516 +v 15.152509 1.721617 78.724289 +v 14.976863 1.701660 78.797516 +v 14.904107 1.693393 78.974289 +v 14.976863 1.701660 79.151062 +v 15.152509 1.721617 79.224289 +v 15.328155 1.741573 79.151062 +v 15.400911 1.749840 78.974289 +v 14.465961 5.359236 79.310333 +v 14.300195 5.297824 79.237106 +v 14.134428 5.236412 79.310333 +v 14.065765 5.210974 79.487106 +v 14.134428 5.236412 79.663879 +v 14.300195 5.297824 79.737106 +v 14.465961 5.359236 79.663879 +v 14.534624 5.384674 79.487106 +v 12.763057 8.665439 79.823151 +v 12.616804 8.566141 79.749924 +v 12.470551 8.466843 79.823151 +v 12.409971 8.425712 79.999924 +v 12.470551 8.466843 80.176697 +v 12.616804 8.566141 80.249924 +v 12.763057 8.665439 80.176697 +v 12.823637 8.706569 79.999924 +vt 0.610485 0.045765 +vt 0.500000 0.000000 +vt 0.389515 0.045765 +vt 0.343750 0.156250 +vt 0.389515 0.266735 +vt 0.500000 0.312500 +vt 0.610485 0.266735 +vt 0.656250 0.156250 +vt 0.375000 0.312500 +vt 0.406250 0.312500 +vt 0.437500 0.312500 +vt 0.468750 0.312500 +vt 0.500000 0.312500 +vt 0.531250 0.312500 +vt 0.562500 0.312500 +vt 0.593750 0.312500 +vt 0.625000 0.312500 +vt 0.375000 0.313705 +vt 0.406250 0.313705 +vt 0.437500 0.313705 +vt 0.468750 0.313705 +vt 0.500000 0.313705 +vt 0.531250 0.313705 +vt 0.562500 0.313705 +vt 0.593750 0.313705 +vt 0.625000 0.313705 +vt 0.375000 0.314910 +vt 0.406250 0.314910 +vt 0.437500 0.314910 +vt 0.468750 0.314910 +vt 0.500000 0.314910 +vt 0.531250 0.314910 +vt 0.562500 0.314910 +vt 0.593750 0.314910 +vt 0.625000 0.314910 +vt 0.375000 0.316115 +vt 0.406250 0.316115 +vt 0.437500 0.316115 +vt 0.468750 0.316115 +vt 0.500000 0.316115 +vt 0.531250 0.316115 +vt 0.562500 0.316115 +vt 0.593750 0.316115 +vt 0.625000 0.316115 +vt 0.375000 0.317320 +vt 0.406250 0.317320 +vt 0.437500 0.317320 +vt 0.468750 0.317320 +vt 0.500000 0.317320 +vt 0.531250 0.317320 +vt 0.562500 0.317320 +vt 0.593750 0.317320 +vt 0.625000 0.317320 +vt 0.375000 0.318525 +vt 0.406250 0.318525 +vt 0.437500 0.318525 +vt 0.468750 0.318525 +vt 0.500000 0.318525 +vt 0.531250 0.318525 +vt 0.562500 0.318525 +vt 0.593750 0.318525 +vt 0.625000 0.318525 +vt 0.375000 0.319730 +vt 0.406250 0.319730 +vt 0.437500 0.319730 +vt 0.468750 0.319730 +vt 0.500000 0.319730 +vt 0.531250 0.319730 +vt 0.562500 0.319730 +vt 0.593750 0.319730 +vt 0.625000 0.319730 +vt 0.375000 0.320935 +vt 0.406250 0.320935 +vt 0.437500 0.320935 +vt 0.468750 0.320935 +vt 0.500000 0.320935 +vt 0.531250 0.320935 +vt 0.562500 0.320935 +vt 0.593750 0.320935 +vt 0.625000 0.320935 +vt 0.375000 0.322140 +vt 0.406250 0.322140 +vt 0.437500 0.322140 +vt 0.468750 0.322140 +vt 0.500000 0.322140 +vt 0.531250 0.322140 +vt 0.562500 0.322140 +vt 0.593750 0.322140 +vt 0.625000 0.322140 +vt 0.375000 0.323344 +vt 0.406250 0.323344 +vt 0.437500 0.323344 +vt 0.468750 0.323344 +vt 0.500000 0.323344 +vt 0.531250 0.323344 +vt 0.562500 0.323344 +vt 0.593750 0.323344 +vt 0.625000 0.323344 +vt 0.375000 0.324549 +vt 0.406250 0.324549 +vt 0.437500 0.324549 +vt 0.468750 0.324549 +vt 0.500000 0.324549 +vt 0.531250 0.324549 +vt 0.562500 0.324549 +vt 0.593750 0.324549 +vt 0.625000 0.324549 +vt 0.375000 0.325754 +vt 0.406250 0.325754 +vt 0.437500 0.325754 +vt 0.468750 0.325754 +vt 0.500000 0.325754 +vt 0.531250 0.325754 +vt 0.562500 0.325754 +vt 0.593750 0.325754 +vt 0.625000 0.325754 +vt 0.375000 0.326959 +vt 0.406250 0.326959 +vt 0.437500 0.326959 +vt 0.468750 0.326959 +vt 0.500000 0.326959 +vt 0.531250 0.326959 +vt 0.562500 0.326959 +vt 0.593750 0.326959 +vt 0.625000 0.326959 +vt 0.375000 0.328164 +vt 0.406250 0.328164 +vt 0.437500 0.328164 +vt 0.468750 0.328164 +vt 0.500000 0.328164 +vt 0.531250 0.328164 +vt 0.562500 0.328164 +vt 0.593750 0.328164 +vt 0.625000 0.328164 +vt 0.375000 0.329369 +vt 0.406250 0.329369 +vt 0.437500 0.329369 +vt 0.468750 0.329369 +vt 0.500000 0.329369 +vt 0.531250 0.329369 +vt 0.562500 0.329369 +vt 0.593750 0.329369 +vt 0.625000 0.329369 +vt 0.375000 0.330574 +vt 0.406250 0.330574 +vt 0.437500 0.330574 +vt 0.468750 0.330574 +vt 0.500000 0.330574 +vt 0.531250 0.330574 +vt 0.562500 0.330574 +vt 0.593750 0.330574 +vt 0.625000 0.330574 +vt 0.375000 0.331779 +vt 0.406250 0.331779 +vt 0.437500 0.331779 +vt 0.468750 0.331779 +vt 0.500000 0.331779 +vt 0.531250 0.331779 +vt 0.562500 0.331779 +vt 0.593750 0.331779 +vt 0.625000 0.331779 +vt 0.375000 0.332984 +vt 0.406250 0.332984 +vt 0.437500 0.332984 +vt 0.468750 0.332984 +vt 0.500000 0.332984 +vt 0.531250 0.332984 +vt 0.562500 0.332984 +vt 0.593750 0.332984 +vt 0.625000 0.332984 +vt 0.375000 0.334189 +vt 0.406250 0.334189 +vt 0.437500 0.334189 +vt 0.468750 0.334189 +vt 0.500000 0.334189 +vt 0.531250 0.334189 +vt 0.562500 0.334189 +vt 0.593750 0.334189 +vt 0.625000 0.334189 +vt 0.375000 0.335394 +vt 0.406250 0.335394 +vt 0.437500 0.335394 +vt 0.468750 0.335394 +vt 0.500000 0.335394 +vt 0.531250 0.335394 +vt 0.562500 0.335394 +vt 0.593750 0.335394 +vt 0.625000 0.335394 +vt 0.375000 0.336599 +vt 0.406250 0.336599 +vt 0.437500 0.336599 +vt 0.468750 0.336599 +vt 0.500000 0.336599 +vt 0.531250 0.336599 +vt 0.562500 0.336599 +vt 0.593750 0.336599 +vt 0.625000 0.336599 +vt 0.375000 0.337804 +vt 0.406250 0.337804 +vt 0.437500 0.337804 +vt 0.468750 0.337804 +vt 0.500000 0.337804 +vt 0.531250 0.337804 +vt 0.562500 0.337804 +vt 0.593750 0.337804 +vt 0.625000 0.337804 +vt 0.375000 0.339009 +vt 0.406250 0.339009 +vt 0.437500 0.339009 +vt 0.468750 0.339009 +vt 0.500000 0.339009 +vt 0.531250 0.339009 +vt 0.562500 0.339009 +vt 0.593750 0.339009 +vt 0.625000 0.339009 +vt 0.375000 0.340214 +vt 0.406250 0.340214 +vt 0.437500 0.340214 +vt 0.468750 0.340214 +vt 0.500000 0.340214 +vt 0.531250 0.340214 +vt 0.562500 0.340214 +vt 0.593750 0.340214 +vt 0.625000 0.340214 +vt 0.375000 0.341419 +vt 0.406250 0.341419 +vt 0.437500 0.341419 +vt 0.468750 0.341419 +vt 0.500000 0.341419 +vt 0.531250 0.341419 +vt 0.562500 0.341419 +vt 0.593750 0.341419 +vt 0.625000 0.341419 +vt 0.375000 0.342623 +vt 0.406250 0.342623 +vt 0.437500 0.342623 +vt 0.468750 0.342623 +vt 0.500000 0.342623 +vt 0.531250 0.342623 +vt 0.562500 0.342623 +vt 0.593750 0.342623 +vt 0.625000 0.342623 +vt 0.375000 0.343828 +vt 0.406250 0.343828 +vt 0.437500 0.343828 +vt 0.468750 0.343828 +vt 0.500000 0.343828 +vt 0.531250 0.343828 +vt 0.562500 0.343828 +vt 0.593750 0.343828 +vt 0.625000 0.343828 +vt 0.375000 0.345033 +vt 0.406250 0.345033 +vt 0.437500 0.345033 +vt 0.468750 0.345033 +vt 0.500000 0.345033 +vt 0.531250 0.345033 +vt 0.562500 0.345033 +vt 0.593750 0.345033 +vt 0.625000 0.345033 +vt 0.375000 0.346238 +vt 0.406250 0.346238 +vt 0.437500 0.346238 +vt 0.468750 0.346238 +vt 0.500000 0.346238 +vt 0.531250 0.346238 +vt 0.562500 0.346238 +vt 0.593750 0.346238 +vt 0.625000 0.346238 +vt 0.375000 0.347443 +vt 0.406250 0.347443 +vt 0.437500 0.347443 +vt 0.468750 0.347443 +vt 0.500000 0.347443 +vt 0.531250 0.347443 +vt 0.562500 0.347443 +vt 0.593750 0.347443 +vt 0.625000 0.347443 +vt 0.375000 0.348648 +vt 0.406250 0.348648 +vt 0.437500 0.348648 +vt 0.468750 0.348648 +vt 0.500000 0.348648 +vt 0.531250 0.348648 +vt 0.562500 0.348648 +vt 0.593750 0.348648 +vt 0.625000 0.348648 +vt 0.375000 0.349853 +vt 0.406250 0.349853 +vt 0.437500 0.349853 +vt 0.468750 0.349853 +vt 0.500000 0.349853 +vt 0.531250 0.349853 +vt 0.562500 0.349853 +vt 0.593750 0.349853 +vt 0.625000 0.349853 +vt 0.375000 0.351058 +vt 0.406250 0.351058 +vt 0.437500 0.351058 +vt 0.468750 0.351058 +vt 0.500000 0.351058 +vt 0.531250 0.351058 +vt 0.562500 0.351058 +vt 0.593750 0.351058 +vt 0.625000 0.351058 +vt 0.375000 0.352263 +vt 0.406250 0.352263 +vt 0.437500 0.352263 +vt 0.468750 0.352263 +vt 0.500000 0.352263 +vt 0.531250 0.352263 +vt 0.562500 0.352263 +vt 0.593750 0.352263 +vt 0.625000 0.352263 +vt 0.375000 0.353468 +vt 0.406250 0.353468 +vt 0.437500 0.353468 +vt 0.468750 0.353468 +vt 0.500000 0.353468 +vt 0.531250 0.353468 +vt 0.562500 0.353468 +vt 0.593750 0.353468 +vt 0.625000 0.353468 +vt 0.375000 0.354673 +vt 0.406250 0.354673 +vt 0.437500 0.354673 +vt 0.468750 0.354673 +vt 0.500000 0.354673 +vt 0.531250 0.354673 +vt 0.562500 0.354673 +vt 0.593750 0.354673 +vt 0.625000 0.354673 +vt 0.375000 0.355878 +vt 0.406250 0.355878 +vt 0.437500 0.355878 +vt 0.468750 0.355878 +vt 0.500000 0.355878 +vt 0.531250 0.355878 +vt 0.562500 0.355878 +vt 0.593750 0.355878 +vt 0.625000 0.355878 +vt 0.375000 0.357083 +vt 0.406250 0.357083 +vt 0.437500 0.357083 +vt 0.468750 0.357083 +vt 0.500000 0.357083 +vt 0.531250 0.357083 +vt 0.562500 0.357083 +vt 0.593750 0.357083 +vt 0.625000 0.357083 +vt 0.375000 0.358288 +vt 0.406250 0.358288 +vt 0.437500 0.358288 +vt 0.468750 0.358288 +vt 0.500000 0.358288 +vt 0.531250 0.358288 +vt 0.562500 0.358288 +vt 0.593750 0.358288 +vt 0.625000 0.358288 +vt 0.375000 0.359493 +vt 0.406250 0.359493 +vt 0.437500 0.359493 +vt 0.468750 0.359493 +vt 0.500000 0.359493 +vt 0.531250 0.359493 +vt 0.562500 0.359493 +vt 0.593750 0.359493 +vt 0.625000 0.359493 +vt 0.375000 0.360698 +vt 0.406250 0.360698 +vt 0.437500 0.360698 +vt 0.468750 0.360698 +vt 0.500000 0.360698 +vt 0.531250 0.360698 +vt 0.562500 0.360698 +vt 0.593750 0.360698 +vt 0.625000 0.360698 +vt 0.375000 0.361902 +vt 0.406250 0.361902 +vt 0.437500 0.361902 +vt 0.468750 0.361902 +vt 0.500000 0.361902 +vt 0.531250 0.361902 +vt 0.562500 0.361902 +vt 0.593750 0.361902 +vt 0.625000 0.361902 +vt 0.375000 0.363107 +vt 0.406250 0.363107 +vt 0.437500 0.363107 +vt 0.468750 0.363107 +vt 0.500000 0.363107 +vt 0.531250 0.363107 +vt 0.562500 0.363107 +vt 0.593750 0.363107 +vt 0.625000 0.363107 +vt 0.375000 0.364312 +vt 0.406250 0.364312 +vt 0.437500 0.364312 +vt 0.468750 0.364312 +vt 0.500000 0.364312 +vt 0.531250 0.364312 +vt 0.562500 0.364312 +vt 0.593750 0.364312 +vt 0.625000 0.364312 +vt 0.375000 0.365517 +vt 0.406250 0.365517 +vt 0.437500 0.365517 +vt 0.468750 0.365517 +vt 0.500000 0.365517 +vt 0.531250 0.365517 +vt 0.562500 0.365517 +vt 0.593750 0.365517 +vt 0.625000 0.365517 +vt 0.375000 0.366722 +vt 0.406250 0.366722 +vt 0.437500 0.366722 +vt 0.468750 0.366722 +vt 0.500000 0.366722 +vt 0.531250 0.366722 +vt 0.562500 0.366722 +vt 0.593750 0.366722 +vt 0.625000 0.366722 +vt 0.375000 0.367927 +vt 0.406250 0.367927 +vt 0.437500 0.367927 +vt 0.468750 0.367927 +vt 0.500000 0.367927 +vt 0.531250 0.367927 +vt 0.562500 0.367927 +vt 0.593750 0.367927 +vt 0.625000 0.367927 +vt 0.375000 0.369132 +vt 0.406250 0.369132 +vt 0.437500 0.369132 +vt 0.468750 0.369132 +vt 0.500000 0.369132 +vt 0.531250 0.369132 +vt 0.562500 0.369132 +vt 0.593750 0.369132 +vt 0.625000 0.369132 +vt 0.375000 0.370337 +vt 0.406250 0.370337 +vt 0.437500 0.370337 +vt 0.468750 0.370337 +vt 0.500000 0.370337 +vt 0.531250 0.370337 +vt 0.562500 0.370337 +vt 0.593750 0.370337 +vt 0.625000 0.370337 +vt 0.375000 0.371542 +vt 0.406250 0.371542 +vt 0.437500 0.371542 +vt 0.468750 0.371542 +vt 0.500000 0.371542 +vt 0.531250 0.371542 +vt 0.562500 0.371542 +vt 0.593750 0.371542 +vt 0.625000 0.371542 +vt 0.375000 0.372747 +vt 0.406250 0.372747 +vt 0.437500 0.372747 +vt 0.468750 0.372747 +vt 0.500000 0.372747 +vt 0.531250 0.372747 +vt 0.562500 0.372747 +vt 0.593750 0.372747 +vt 0.625000 0.372747 +vt 0.375000 0.373952 +vt 0.406250 0.373952 +vt 0.437500 0.373952 +vt 0.468750 0.373952 +vt 0.500000 0.373952 +vt 0.531250 0.373952 +vt 0.562500 0.373952 +vt 0.593750 0.373952 +vt 0.625000 0.373952 +vt 0.375000 0.375157 +vt 0.406250 0.375157 +vt 0.437500 0.375157 +vt 0.468750 0.375157 +vt 0.500000 0.375157 +vt 0.531250 0.375157 +vt 0.562500 0.375157 +vt 0.593750 0.375157 +vt 0.625000 0.375157 +vt 0.375000 0.376362 +vt 0.406250 0.376362 +vt 0.437500 0.376362 +vt 0.468750 0.376362 +vt 0.500000 0.376362 +vt 0.531250 0.376362 +vt 0.562500 0.376362 +vt 0.593750 0.376362 +vt 0.625000 0.376362 +vt 0.375000 0.377567 +vt 0.406250 0.377567 +vt 0.437500 0.377567 +vt 0.468750 0.377567 +vt 0.500000 0.377567 +vt 0.531250 0.377567 +vt 0.562500 0.377567 +vt 0.593750 0.377567 +vt 0.625000 0.377567 +vt 0.375000 0.378772 +vt 0.406250 0.378772 +vt 0.437500 0.378772 +vt 0.468750 0.378772 +vt 0.500000 0.378772 +vt 0.531250 0.378772 +vt 0.562500 0.378772 +vt 0.593750 0.378772 +vt 0.625000 0.378772 +vt 0.375000 0.379977 +vt 0.406250 0.379977 +vt 0.437500 0.379977 +vt 0.468750 0.379977 +vt 0.500000 0.379977 +vt 0.531250 0.379977 +vt 0.562500 0.379977 +vt 0.593750 0.379977 +vt 0.625000 0.379977 +vt 0.375000 0.381181 +vt 0.406250 0.381181 +vt 0.437500 0.381181 +vt 0.468750 0.381181 +vt 0.500000 0.381181 +vt 0.531250 0.381181 +vt 0.562500 0.381181 +vt 0.593750 0.381181 +vt 0.625000 0.381181 +vt 0.375000 0.382386 +vt 0.406250 0.382386 +vt 0.437500 0.382386 +vt 0.468750 0.382386 +vt 0.500000 0.382386 +vt 0.531250 0.382386 +vt 0.562500 0.382386 +vt 0.593750 0.382386 +vt 0.625000 0.382386 +vt 0.375000 0.383591 +vt 0.406250 0.383591 +vt 0.437500 0.383591 +vt 0.468750 0.383591 +vt 0.500000 0.383591 +vt 0.531250 0.383591 +vt 0.562500 0.383591 +vt 0.593750 0.383591 +vt 0.625000 0.383591 +vt 0.375000 0.384796 +vt 0.406250 0.384796 +vt 0.437500 0.384796 +vt 0.468750 0.384796 +vt 0.500000 0.384796 +vt 0.531250 0.384796 +vt 0.562500 0.384796 +vt 0.593750 0.384796 +vt 0.625000 0.384796 +vt 0.375000 0.386001 +vt 0.406250 0.386001 +vt 0.437500 0.386001 +vt 0.468750 0.386001 +vt 0.500000 0.386001 +vt 0.531250 0.386001 +vt 0.562500 0.386001 +vt 0.593750 0.386001 +vt 0.625000 0.386001 +vt 0.375000 0.387206 +vt 0.406250 0.387206 +vt 0.437500 0.387206 +vt 0.468750 0.387206 +vt 0.500000 0.387206 +vt 0.531250 0.387206 +vt 0.562500 0.387206 +vt 0.593750 0.387206 +vt 0.625000 0.387206 +vt 0.375000 0.388411 +vt 0.406250 0.388411 +vt 0.437500 0.388411 +vt 0.468750 0.388411 +vt 0.500000 0.388411 +vt 0.531250 0.388411 +vt 0.562500 0.388411 +vt 0.593750 0.388411 +vt 0.625000 0.388411 +vt 0.375000 0.389616 +vt 0.406250 0.389616 +vt 0.437500 0.389616 +vt 0.468750 0.389616 +vt 0.500000 0.389616 +vt 0.531250 0.389616 +vt 0.562500 0.389616 +vt 0.593750 0.389616 +vt 0.625000 0.389616 +vt 0.375000 0.390821 +vt 0.406250 0.390821 +vt 0.437500 0.390821 +vt 0.468750 0.390821 +vt 0.500000 0.390821 +vt 0.531250 0.390821 +vt 0.562500 0.390821 +vt 0.593750 0.390821 +vt 0.625000 0.390821 +vt 0.375000 0.392026 +vt 0.406250 0.392026 +vt 0.437500 0.392026 +vt 0.468750 0.392026 +vt 0.500000 0.392026 +vt 0.531250 0.392026 +vt 0.562500 0.392026 +vt 0.593750 0.392026 +vt 0.625000 0.392026 +vt 0.375000 0.393231 +vt 0.406250 0.393231 +vt 0.437500 0.393231 +vt 0.468750 0.393231 +vt 0.500000 0.393231 +vt 0.531250 0.393231 +vt 0.562500 0.393231 +vt 0.593750 0.393231 +vt 0.625000 0.393231 +vt 0.375000 0.394436 +vt 0.406250 0.394436 +vt 0.437500 0.394436 +vt 0.468750 0.394436 +vt 0.500000 0.394436 +vt 0.531250 0.394436 +vt 0.562500 0.394436 +vt 0.593750 0.394436 +vt 0.625000 0.394436 +vt 0.375000 0.395641 +vt 0.406250 0.395641 +vt 0.437500 0.395641 +vt 0.468750 0.395641 +vt 0.500000 0.395641 +vt 0.531250 0.395641 +vt 0.562500 0.395641 +vt 0.593750 0.395641 +vt 0.625000 0.395641 +vt 0.375000 0.396846 +vt 0.406250 0.396846 +vt 0.437500 0.396846 +vt 0.468750 0.396846 +vt 0.500000 0.396846 +vt 0.531250 0.396846 +vt 0.562500 0.396846 +vt 0.593750 0.396846 +vt 0.625000 0.396846 +vt 0.375000 0.398051 +vt 0.406250 0.398051 +vt 0.437500 0.398051 +vt 0.468750 0.398051 +vt 0.500000 0.398051 +vt 0.531250 0.398051 +vt 0.562500 0.398051 +vt 0.593750 0.398051 +vt 0.625000 0.398051 +vt 0.375000 0.399256 +vt 0.406250 0.399256 +vt 0.437500 0.399256 +vt 0.468750 0.399256 +vt 0.500000 0.399256 +vt 0.531250 0.399256 +vt 0.562500 0.399256 +vt 0.593750 0.399256 +vt 0.625000 0.399256 +vt 0.375000 0.400460 +vt 0.406250 0.400460 +vt 0.437500 0.400460 +vt 0.468750 0.400460 +vt 0.500000 0.400460 +vt 0.531250 0.400460 +vt 0.562500 0.400460 +vt 0.593750 0.400460 +vt 0.625000 0.400460 +vt 0.375000 0.401665 +vt 0.406250 0.401665 +vt 0.437500 0.401665 +vt 0.468750 0.401665 +vt 0.500000 0.401665 +vt 0.531250 0.401665 +vt 0.562500 0.401665 +vt 0.593750 0.401665 +vt 0.625000 0.401665 +vt 0.375000 0.402870 +vt 0.406250 0.402870 +vt 0.437500 0.402870 +vt 0.468750 0.402870 +vt 0.500000 0.402870 +vt 0.531250 0.402870 +vt 0.562500 0.402870 +vt 0.593750 0.402870 +vt 0.625000 0.402870 +vt 0.375000 0.404075 +vt 0.406250 0.404075 +vt 0.437500 0.404075 +vt 0.468750 0.404075 +vt 0.500000 0.404075 +vt 0.531250 0.404075 +vt 0.562500 0.404075 +vt 0.593750 0.404075 +vt 0.625000 0.404075 +vt 0.375000 0.405280 +vt 0.406250 0.405280 +vt 0.437500 0.405280 +vt 0.468750 0.405280 +vt 0.500000 0.405280 +vt 0.531250 0.405280 +vt 0.562500 0.405280 +vt 0.593750 0.405280 +vt 0.625000 0.405280 +vt 0.375000 0.406485 +vt 0.406250 0.406485 +vt 0.437500 0.406485 +vt 0.468750 0.406485 +vt 0.500000 0.406485 +vt 0.531250 0.406485 +vt 0.562500 0.406485 +vt 0.593750 0.406485 +vt 0.625000 0.406485 +vt 0.375000 0.407690 +vt 0.406250 0.407690 +vt 0.437500 0.407690 +vt 0.468750 0.407690 +vt 0.500000 0.407690 +vt 0.531250 0.407690 +vt 0.562500 0.407690 +vt 0.593750 0.407690 +vt 0.625000 0.407690 +vt 0.375000 0.408895 +vt 0.406250 0.408895 +vt 0.437500 0.408895 +vt 0.468750 0.408895 +vt 0.500000 0.408895 +vt 0.531250 0.408895 +vt 0.562500 0.408895 +vt 0.593750 0.408895 +vt 0.625000 0.408895 +vt 0.375000 0.410100 +vt 0.406250 0.410100 +vt 0.437500 0.410100 +vt 0.468750 0.410100 +vt 0.500000 0.410100 +vt 0.531250 0.410100 +vt 0.562500 0.410100 +vt 0.593750 0.410100 +vt 0.625000 0.410100 +vt 0.375000 0.411305 +vt 0.406250 0.411305 +vt 0.437500 0.411305 +vt 0.468750 0.411305 +vt 0.500000 0.411305 +vt 0.531250 0.411305 +vt 0.562500 0.411305 +vt 0.593750 0.411305 +vt 0.625000 0.411305 +vt 0.375000 0.412510 +vt 0.406250 0.412510 +vt 0.437500 0.412510 +vt 0.468750 0.412510 +vt 0.500000 0.412510 +vt 0.531250 0.412510 +vt 0.562500 0.412510 +vt 0.593750 0.412510 +vt 0.625000 0.412510 +vt 0.375000 0.413715 +vt 0.406250 0.413715 +vt 0.437500 0.413715 +vt 0.468750 0.413715 +vt 0.500000 0.413715 +vt 0.531250 0.413715 +vt 0.562500 0.413715 +vt 0.593750 0.413715 +vt 0.625000 0.413715 +vt 0.375000 0.414920 +vt 0.406250 0.414920 +vt 0.437500 0.414920 +vt 0.468750 0.414920 +vt 0.500000 0.414920 +vt 0.531250 0.414920 +vt 0.562500 0.414920 +vt 0.593750 0.414920 +vt 0.625000 0.414920 +vt 0.375000 0.416125 +vt 0.406250 0.416125 +vt 0.437500 0.416125 +vt 0.468750 0.416125 +vt 0.500000 0.416125 +vt 0.531250 0.416125 +vt 0.562500 0.416125 +vt 0.593750 0.416125 +vt 0.625000 0.416125 +vt 0.375000 0.417330 +vt 0.406250 0.417330 +vt 0.437500 0.417330 +vt 0.468750 0.417330 +vt 0.500000 0.417330 +vt 0.531250 0.417330 +vt 0.562500 0.417330 +vt 0.593750 0.417330 +vt 0.625000 0.417330 +vt 0.375000 0.418535 +vt 0.406250 0.418535 +vt 0.437500 0.418535 +vt 0.468750 0.418535 +vt 0.500000 0.418535 +vt 0.531250 0.418535 +vt 0.562500 0.418535 +vt 0.593750 0.418535 +vt 0.625000 0.418535 +vt 0.375000 0.419739 +vt 0.406250 0.419739 +vt 0.437500 0.419739 +vt 0.468750 0.419739 +vt 0.500000 0.419739 +vt 0.531250 0.419739 +vt 0.562500 0.419739 +vt 0.593750 0.419739 +vt 0.625000 0.419739 +vt 0.375000 0.420944 +vt 0.406250 0.420944 +vt 0.437500 0.420944 +vt 0.468750 0.420944 +vt 0.500000 0.420944 +vt 0.531250 0.420944 +vt 0.562500 0.420944 +vt 0.593750 0.420944 +vt 0.625000 0.420944 +vt 0.375000 0.422149 +vt 0.406250 0.422149 +vt 0.437500 0.422149 +vt 0.468750 0.422149 +vt 0.500000 0.422149 +vt 0.531250 0.422149 +vt 0.562500 0.422149 +vt 0.593750 0.422149 +vt 0.625000 0.422149 +vt 0.375000 0.423354 +vt 0.406250 0.423354 +vt 0.437500 0.423354 +vt 0.468750 0.423354 +vt 0.500000 0.423354 +vt 0.531250 0.423354 +vt 0.562500 0.423354 +vt 0.593750 0.423354 +vt 0.625000 0.423354 +vt 0.375000 0.424559 +vt 0.406250 0.424559 +vt 0.437500 0.424559 +vt 0.468750 0.424559 +vt 0.500000 0.424559 +vt 0.531250 0.424559 +vt 0.562500 0.424559 +vt 0.593750 0.424559 +vt 0.625000 0.424559 +vt 0.375000 0.425764 +vt 0.406250 0.425764 +vt 0.437500 0.425764 +vt 0.468750 0.425764 +vt 0.500000 0.425764 +vt 0.531250 0.425764 +vt 0.562500 0.425764 +vt 0.593750 0.425764 +vt 0.625000 0.425764 +vt 0.375000 0.426969 +vt 0.406250 0.426969 +vt 0.437500 0.426969 +vt 0.468750 0.426969 +vt 0.500000 0.426969 +vt 0.531250 0.426969 +vt 0.562500 0.426969 +vt 0.593750 0.426969 +vt 0.625000 0.426969 +vt 0.375000 0.428174 +vt 0.406250 0.428174 +vt 0.437500 0.428174 +vt 0.468750 0.428174 +vt 0.500000 0.428174 +vt 0.531250 0.428174 +vt 0.562500 0.428174 +vt 0.593750 0.428174 +vt 0.625000 0.428174 +vt 0.375000 0.429379 +vt 0.406250 0.429379 +vt 0.437500 0.429379 +vt 0.468750 0.429379 +vt 0.500000 0.429379 +vt 0.531250 0.429379 +vt 0.562500 0.429379 +vt 0.593750 0.429379 +vt 0.625000 0.429379 +vt 0.375000 0.430584 +vt 0.406250 0.430584 +vt 0.437500 0.430584 +vt 0.468750 0.430584 +vt 0.500000 0.430584 +vt 0.531250 0.430584 +vt 0.562500 0.430584 +vt 0.593750 0.430584 +vt 0.625000 0.430584 +vt 0.375000 0.431789 +vt 0.406250 0.431789 +vt 0.437500 0.431789 +vt 0.468750 0.431789 +vt 0.500000 0.431789 +vt 0.531250 0.431789 +vt 0.562500 0.431789 +vt 0.593750 0.431789 +vt 0.625000 0.431789 +vt 0.375000 0.432994 +vt 0.406250 0.432994 +vt 0.437500 0.432994 +vt 0.468750 0.432994 +vt 0.500000 0.432994 +vt 0.531250 0.432994 +vt 0.562500 0.432994 +vt 0.593750 0.432994 +vt 0.625000 0.432994 +vt 0.375000 0.434199 +vt 0.406250 0.434199 +vt 0.437500 0.434199 +vt 0.468750 0.434199 +vt 0.500000 0.434199 +vt 0.531250 0.434199 +vt 0.562500 0.434199 +vt 0.593750 0.434199 +vt 0.625000 0.434199 +vt 0.375000 0.435404 +vt 0.406250 0.435404 +vt 0.437500 0.435404 +vt 0.468750 0.435404 +vt 0.500000 0.435404 +vt 0.531250 0.435404 +vt 0.562500 0.435404 +vt 0.593750 0.435404 +vt 0.625000 0.435404 +vt 0.375000 0.436609 +vt 0.406250 0.436609 +vt 0.437500 0.436609 +vt 0.468750 0.436609 +vt 0.500000 0.436609 +vt 0.531250 0.436609 +vt 0.562500 0.436609 +vt 0.593750 0.436609 +vt 0.625000 0.436609 +vt 0.375000 0.437814 +vt 0.406250 0.437814 +vt 0.437500 0.437814 +vt 0.468750 0.437814 +vt 0.500000 0.437814 +vt 0.531250 0.437814 +vt 0.562500 0.437814 +vt 0.593750 0.437814 +vt 0.625000 0.437814 +vt 0.375000 0.439018 +vt 0.406250 0.439018 +vt 0.437500 0.439018 +vt 0.468750 0.439018 +vt 0.500000 0.439018 +vt 0.531250 0.439018 +vt 0.562500 0.439018 +vt 0.593750 0.439018 +vt 0.625000 0.439018 +vt 0.375000 0.440223 +vt 0.406250 0.440223 +vt 0.437500 0.440223 +vt 0.468750 0.440223 +vt 0.500000 0.440223 +vt 0.531250 0.440223 +vt 0.562500 0.440223 +vt 0.593750 0.440223 +vt 0.625000 0.440223 +vt 0.375000 0.441428 +vt 0.406250 0.441428 +vt 0.437500 0.441428 +vt 0.468750 0.441428 +vt 0.500000 0.441428 +vt 0.531250 0.441428 +vt 0.562500 0.441428 +vt 0.593750 0.441428 +vt 0.625000 0.441428 +vt 0.375000 0.442633 +vt 0.406250 0.442633 +vt 0.437500 0.442633 +vt 0.468750 0.442633 +vt 0.500000 0.442633 +vt 0.531250 0.442633 +vt 0.562500 0.442633 +vt 0.593750 0.442633 +vt 0.625000 0.442633 +vt 0.375000 0.443838 +vt 0.406250 0.443838 +vt 0.437500 0.443838 +vt 0.468750 0.443838 +vt 0.500000 0.443838 +vt 0.531250 0.443838 +vt 0.562500 0.443838 +vt 0.593750 0.443838 +vt 0.625000 0.443838 +vt 0.375000 0.445043 +vt 0.406250 0.445043 +vt 0.437500 0.445043 +vt 0.468750 0.445043 +vt 0.500000 0.445043 +vt 0.531250 0.445043 +vt 0.562500 0.445043 +vt 0.593750 0.445043 +vt 0.625000 0.445043 +vt 0.375000 0.446248 +vt 0.406250 0.446248 +vt 0.437500 0.446248 +vt 0.468750 0.446248 +vt 0.500000 0.446248 +vt 0.531250 0.446248 +vt 0.562500 0.446248 +vt 0.593750 0.446248 +vt 0.625000 0.446248 +vt 0.375000 0.447453 +vt 0.406250 0.447453 +vt 0.437500 0.447453 +vt 0.468750 0.447453 +vt 0.500000 0.447453 +vt 0.531250 0.447453 +vt 0.562500 0.447453 +vt 0.593750 0.447453 +vt 0.625000 0.447453 +vt 0.375000 0.448658 +vt 0.406250 0.448658 +vt 0.437500 0.448658 +vt 0.468750 0.448658 +vt 0.500000 0.448658 +vt 0.531250 0.448658 +vt 0.562500 0.448658 +vt 0.593750 0.448658 +vt 0.625000 0.448658 +vt 0.375000 0.449863 +vt 0.406250 0.449863 +vt 0.437500 0.449863 +vt 0.468750 0.449863 +vt 0.500000 0.449863 +vt 0.531250 0.449863 +vt 0.562500 0.449863 +vt 0.593750 0.449863 +vt 0.625000 0.449863 +vt 0.375000 0.451068 +vt 0.406250 0.451068 +vt 0.437500 0.451068 +vt 0.468750 0.451068 +vt 0.500000 0.451068 +vt 0.531250 0.451068 +vt 0.562500 0.451068 +vt 0.593750 0.451068 +vt 0.625000 0.451068 +vt 0.375000 0.452273 +vt 0.406250 0.452273 +vt 0.437500 0.452273 +vt 0.468750 0.452273 +vt 0.500000 0.452273 +vt 0.531250 0.452273 +vt 0.562500 0.452273 +vt 0.593750 0.452273 +vt 0.625000 0.452273 +vt 0.375000 0.453478 +vt 0.406250 0.453478 +vt 0.437500 0.453478 +vt 0.468750 0.453478 +vt 0.500000 0.453478 +vt 0.531250 0.453478 +vt 0.562500 0.453478 +vt 0.593750 0.453478 +vt 0.625000 0.453478 +vt 0.375000 0.454683 +vt 0.406250 0.454683 +vt 0.437500 0.454683 +vt 0.468750 0.454683 +vt 0.500000 0.454683 +vt 0.531250 0.454683 +vt 0.562500 0.454683 +vt 0.593750 0.454683 +vt 0.625000 0.454683 +vt 0.375000 0.455888 +vt 0.406250 0.455888 +vt 0.437500 0.455888 +vt 0.468750 0.455888 +vt 0.500000 0.455888 +vt 0.531250 0.455888 +vt 0.562500 0.455888 +vt 0.593750 0.455888 +vt 0.625000 0.455888 +vt 0.375000 0.457093 +vt 0.406250 0.457093 +vt 0.437500 0.457093 +vt 0.468750 0.457093 +vt 0.500000 0.457093 +vt 0.531250 0.457093 +vt 0.562500 0.457093 +vt 0.593750 0.457093 +vt 0.625000 0.457093 +vt 0.375000 0.458297 +vt 0.406250 0.458297 +vt 0.437500 0.458297 +vt 0.468750 0.458297 +vt 0.500000 0.458297 +vt 0.531250 0.458297 +vt 0.562500 0.458297 +vt 0.593750 0.458297 +vt 0.625000 0.458297 +vt 0.375000 0.459502 +vt 0.406250 0.459502 +vt 0.437500 0.459502 +vt 0.468750 0.459502 +vt 0.500000 0.459502 +vt 0.531250 0.459502 +vt 0.562500 0.459502 +vt 0.593750 0.459502 +vt 0.625000 0.459502 +vt 0.375000 0.460707 +vt 0.406250 0.460707 +vt 0.437500 0.460707 +vt 0.468750 0.460707 +vt 0.500000 0.460707 +vt 0.531250 0.460707 +vt 0.562500 0.460707 +vt 0.593750 0.460707 +vt 0.625000 0.460707 +vt 0.375000 0.461912 +vt 0.406250 0.461912 +vt 0.437500 0.461912 +vt 0.468750 0.461912 +vt 0.500000 0.461912 +vt 0.531250 0.461912 +vt 0.562500 0.461912 +vt 0.593750 0.461912 +vt 0.625000 0.461912 +vt 0.375000 0.463117 +vt 0.406250 0.463117 +vt 0.437500 0.463117 +vt 0.468750 0.463117 +vt 0.500000 0.463117 +vt 0.531250 0.463117 +vt 0.562500 0.463117 +vt 0.593750 0.463117 +vt 0.625000 0.463117 +vt 0.375000 0.464322 +vt 0.406250 0.464322 +vt 0.437500 0.464322 +vt 0.468750 0.464322 +vt 0.500000 0.464322 +vt 0.531250 0.464322 +vt 0.562500 0.464322 +vt 0.593750 0.464322 +vt 0.625000 0.464322 +vt 0.375000 0.465527 +vt 0.406250 0.465527 +vt 0.437500 0.465527 +vt 0.468750 0.465527 +vt 0.500000 0.465527 +vt 0.531250 0.465527 +vt 0.562500 0.465527 +vt 0.593750 0.465527 +vt 0.625000 0.465527 +vt 0.375000 0.466732 +vt 0.406250 0.466732 +vt 0.437500 0.466732 +vt 0.468750 0.466732 +vt 0.500000 0.466732 +vt 0.531250 0.466732 +vt 0.562500 0.466732 +vt 0.593750 0.466732 +vt 0.625000 0.466732 +vt 0.375000 0.467937 +vt 0.406250 0.467937 +vt 0.437500 0.467937 +vt 0.468750 0.467937 +vt 0.500000 0.467937 +vt 0.531250 0.467937 +vt 0.562500 0.467937 +vt 0.593750 0.467937 +vt 0.625000 0.467937 +vt 0.375000 0.469142 +vt 0.406250 0.469142 +vt 0.437500 0.469142 +vt 0.468750 0.469142 +vt 0.500000 0.469142 +vt 0.531250 0.469142 +vt 0.562500 0.469142 +vt 0.593750 0.469142 +vt 0.625000 0.469142 +vt 0.375000 0.470347 +vt 0.406250 0.470347 +vt 0.437500 0.470347 +vt 0.468750 0.470347 +vt 0.500000 0.470347 +vt 0.531250 0.470347 +vt 0.562500 0.470347 +vt 0.593750 0.470347 +vt 0.625000 0.470347 +vt 0.375000 0.471552 +vt 0.406250 0.471552 +vt 0.437500 0.471552 +vt 0.468750 0.471552 +vt 0.500000 0.471552 +vt 0.531250 0.471552 +vt 0.562500 0.471552 +vt 0.593750 0.471552 +vt 0.625000 0.471552 +vt 0.375000 0.472757 +vt 0.406250 0.472757 +vt 0.437500 0.472757 +vt 0.468750 0.472757 +vt 0.500000 0.472757 +vt 0.531250 0.472757 +vt 0.562500 0.472757 +vt 0.593750 0.472757 +vt 0.625000 0.472757 +vt 0.375000 0.473962 +vt 0.406250 0.473962 +vt 0.437500 0.473962 +vt 0.468750 0.473962 +vt 0.500000 0.473962 +vt 0.531250 0.473962 +vt 0.562500 0.473962 +vt 0.593750 0.473962 +vt 0.625000 0.473962 +vt 0.375000 0.475167 +vt 0.406250 0.475167 +vt 0.437500 0.475167 +vt 0.468750 0.475167 +vt 0.500000 0.475167 +vt 0.531250 0.475167 +vt 0.562500 0.475167 +vt 0.593750 0.475167 +vt 0.625000 0.475167 +vt 0.375000 0.476372 +vt 0.406250 0.476372 +vt 0.437500 0.476372 +vt 0.468750 0.476372 +vt 0.500000 0.476372 +vt 0.531250 0.476372 +vt 0.562500 0.476372 +vt 0.593750 0.476372 +vt 0.625000 0.476372 +vt 0.375000 0.477576 +vt 0.406250 0.477576 +vt 0.437500 0.477576 +vt 0.468750 0.477576 +vt 0.500000 0.477576 +vt 0.531250 0.477576 +vt 0.562500 0.477576 +vt 0.593750 0.477576 +vt 0.625000 0.477576 +vt 0.375000 0.478781 +vt 0.406250 0.478781 +vt 0.437500 0.478781 +vt 0.468750 0.478781 +vt 0.500000 0.478781 +vt 0.531250 0.478781 +vt 0.562500 0.478781 +vt 0.593750 0.478781 +vt 0.625000 0.478781 +vt 0.375000 0.479986 +vt 0.406250 0.479986 +vt 0.437500 0.479986 +vt 0.468750 0.479986 +vt 0.500000 0.479986 +vt 0.531250 0.479986 +vt 0.562500 0.479986 +vt 0.593750 0.479986 +vt 0.625000 0.479986 +vt 0.375000 0.481191 +vt 0.406250 0.481191 +vt 0.437500 0.481191 +vt 0.468750 0.481191 +vt 0.500000 0.481191 +vt 0.531250 0.481191 +vt 0.562500 0.481191 +vt 0.593750 0.481191 +vt 0.625000 0.481191 +vt 0.375000 0.482396 +vt 0.406250 0.482396 +vt 0.437500 0.482396 +vt 0.468750 0.482396 +vt 0.500000 0.482396 +vt 0.531250 0.482396 +vt 0.562500 0.482396 +vt 0.593750 0.482396 +vt 0.625000 0.482396 +vt 0.375000 0.483601 +vt 0.406250 0.483601 +vt 0.437500 0.483601 +vt 0.468750 0.483601 +vt 0.500000 0.483601 +vt 0.531250 0.483601 +vt 0.562500 0.483601 +vt 0.593750 0.483601 +vt 0.625000 0.483601 +vt 0.375000 0.484806 +vt 0.406250 0.484806 +vt 0.437500 0.484806 +vt 0.468750 0.484806 +vt 0.500000 0.484806 +vt 0.531250 0.484806 +vt 0.562500 0.484806 +vt 0.593750 0.484806 +vt 0.625000 0.484806 +vt 0.375000 0.486011 +vt 0.406250 0.486011 +vt 0.437500 0.486011 +vt 0.468750 0.486011 +vt 0.500000 0.486011 +vt 0.531250 0.486011 +vt 0.562500 0.486011 +vt 0.593750 0.486011 +vt 0.625000 0.486011 +vt 0.375000 0.487216 +vt 0.406250 0.487216 +vt 0.437500 0.487216 +vt 0.468750 0.487216 +vt 0.500000 0.487216 +vt 0.531250 0.487216 +vt 0.562500 0.487216 +vt 0.593750 0.487216 +vt 0.625000 0.487216 +vt 0.375000 0.488421 +vt 0.406250 0.488421 +vt 0.437500 0.488421 +vt 0.468750 0.488421 +vt 0.500000 0.488421 +vt 0.531250 0.488421 +vt 0.562500 0.488421 +vt 0.593750 0.488421 +vt 0.625000 0.488421 +vt 0.375000 0.489626 +vt 0.406250 0.489626 +vt 0.437500 0.489626 +vt 0.468750 0.489626 +vt 0.500000 0.489626 +vt 0.531250 0.489626 +vt 0.562500 0.489626 +vt 0.593750 0.489626 +vt 0.625000 0.489626 +vt 0.375000 0.490831 +vt 0.406250 0.490831 +vt 0.437500 0.490831 +vt 0.468750 0.490831 +vt 0.500000 0.490831 +vt 0.531250 0.490831 +vt 0.562500 0.490831 +vt 0.593750 0.490831 +vt 0.625000 0.490831 +vt 0.375000 0.492036 +vt 0.406250 0.492036 +vt 0.437500 0.492036 +vt 0.468750 0.492036 +vt 0.500000 0.492036 +vt 0.531250 0.492036 +vt 0.562500 0.492036 +vt 0.593750 0.492036 +vt 0.625000 0.492036 +vt 0.375000 0.493241 +vt 0.406250 0.493241 +vt 0.437500 0.493241 +vt 0.468750 0.493241 +vt 0.500000 0.493241 +vt 0.531250 0.493241 +vt 0.562500 0.493241 +vt 0.593750 0.493241 +vt 0.625000 0.493241 +vt 0.375000 0.494446 +vt 0.406250 0.494446 +vt 0.437500 0.494446 +vt 0.468750 0.494446 +vt 0.500000 0.494446 +vt 0.531250 0.494446 +vt 0.562500 0.494446 +vt 0.593750 0.494446 +vt 0.625000 0.494446 +vt 0.375000 0.495651 +vt 0.406250 0.495651 +vt 0.437500 0.495651 +vt 0.468750 0.495651 +vt 0.500000 0.495651 +vt 0.531250 0.495651 +vt 0.562500 0.495651 +vt 0.593750 0.495651 +vt 0.625000 0.495651 +vt 0.375000 0.496855 +vt 0.406250 0.496855 +vt 0.437500 0.496855 +vt 0.468750 0.496855 +vt 0.500000 0.496855 +vt 0.531250 0.496855 +vt 0.562500 0.496855 +vt 0.593750 0.496855 +vt 0.625000 0.496855 +vt 0.375000 0.498060 +vt 0.406250 0.498060 +vt 0.437500 0.498060 +vt 0.468750 0.498060 +vt 0.500000 0.498060 +vt 0.531250 0.498060 +vt 0.562500 0.498060 +vt 0.593750 0.498060 +vt 0.625000 0.498060 +vt 0.375000 0.499265 +vt 0.406250 0.499265 +vt 0.437500 0.499265 +vt 0.468750 0.499265 +vt 0.500000 0.499265 +vt 0.531250 0.499265 +vt 0.562500 0.499265 +vt 0.593750 0.499265 +vt 0.625000 0.499265 +vt 0.375000 0.500470 +vt 0.406250 0.500470 +vt 0.437500 0.500470 +vt 0.468750 0.500470 +vt 0.500000 0.500470 +vt 0.531250 0.500470 +vt 0.562500 0.500470 +vt 0.593750 0.500470 +vt 0.625000 0.500470 +vt 0.375000 0.501675 +vt 0.406250 0.501675 +vt 0.437500 0.501675 +vt 0.468750 0.501675 +vt 0.500000 0.501675 +vt 0.531250 0.501675 +vt 0.562500 0.501675 +vt 0.593750 0.501675 +vt 0.625000 0.501675 +vt 0.375000 0.502880 +vt 0.406250 0.502880 +vt 0.437500 0.502880 +vt 0.468750 0.502880 +vt 0.500000 0.502880 +vt 0.531250 0.502880 +vt 0.562500 0.502880 +vt 0.593750 0.502880 +vt 0.625000 0.502880 +vt 0.375000 0.504085 +vt 0.406250 0.504085 +vt 0.437500 0.504085 +vt 0.468750 0.504085 +vt 0.500000 0.504085 +vt 0.531250 0.504085 +vt 0.562500 0.504085 +vt 0.593750 0.504085 +vt 0.625000 0.504085 +vt 0.375000 0.505290 +vt 0.406250 0.505290 +vt 0.437500 0.505290 +vt 0.468750 0.505290 +vt 0.500000 0.505290 +vt 0.531250 0.505290 +vt 0.562500 0.505290 +vt 0.593750 0.505290 +vt 0.625000 0.505290 +vt 0.375000 0.506495 +vt 0.406250 0.506495 +vt 0.437500 0.506495 +vt 0.468750 0.506495 +vt 0.500000 0.506495 +vt 0.531250 0.506495 +vt 0.562500 0.506495 +vt 0.593750 0.506495 +vt 0.625000 0.506495 +vt 0.375000 0.507700 +vt 0.406250 0.507700 +vt 0.437500 0.507700 +vt 0.468750 0.507700 +vt 0.500000 0.507700 +vt 0.531250 0.507700 +vt 0.562500 0.507700 +vt 0.593750 0.507700 +vt 0.625000 0.507700 +vt 0.375000 0.508905 +vt 0.406250 0.508905 +vt 0.437500 0.508905 +vt 0.468750 0.508905 +vt 0.500000 0.508905 +vt 0.531250 0.508905 +vt 0.562500 0.508905 +vt 0.593750 0.508905 +vt 0.625000 0.508905 +vt 0.375000 0.510110 +vt 0.406250 0.510110 +vt 0.437500 0.510110 +vt 0.468750 0.510110 +vt 0.500000 0.510110 +vt 0.531250 0.510110 +vt 0.562500 0.510110 +vt 0.593750 0.510110 +vt 0.625000 0.510110 +vt 0.375000 0.511314 +vt 0.406250 0.511314 +vt 0.437500 0.511314 +vt 0.468750 0.511314 +vt 0.500000 0.511314 +vt 0.531250 0.511314 +vt 0.562500 0.511314 +vt 0.593750 0.511314 +vt 0.625000 0.511314 +vt 0.375000 0.512519 +vt 0.406250 0.512519 +vt 0.437500 0.512519 +vt 0.468750 0.512519 +vt 0.500000 0.512519 +vt 0.531250 0.512519 +vt 0.562500 0.512519 +vt 0.593750 0.512519 +vt 0.625000 0.512519 +vt 0.375000 0.513724 +vt 0.406250 0.513724 +vt 0.437500 0.513724 +vt 0.468750 0.513724 +vt 0.500000 0.513724 +vt 0.531250 0.513724 +vt 0.562500 0.513724 +vt 0.593750 0.513724 +vt 0.625000 0.513724 +vt 0.375000 0.514929 +vt 0.406250 0.514929 +vt 0.437500 0.514929 +vt 0.468750 0.514929 +vt 0.500000 0.514929 +vt 0.531250 0.514929 +vt 0.562500 0.514929 +vt 0.593750 0.514929 +vt 0.625000 0.514929 +vt 0.375000 0.516134 +vt 0.406250 0.516134 +vt 0.437500 0.516134 +vt 0.468750 0.516134 +vt 0.500000 0.516134 +vt 0.531250 0.516134 +vt 0.562500 0.516134 +vt 0.593750 0.516134 +vt 0.625000 0.516134 +vt 0.375000 0.517339 +vt 0.406250 0.517339 +vt 0.437500 0.517339 +vt 0.468750 0.517339 +vt 0.500000 0.517339 +vt 0.531250 0.517339 +vt 0.562500 0.517339 +vt 0.593750 0.517339 +vt 0.625000 0.517339 +vt 0.375000 0.518544 +vt 0.406250 0.518544 +vt 0.437500 0.518544 +vt 0.468750 0.518544 +vt 0.500000 0.518544 +vt 0.531250 0.518544 +vt 0.562500 0.518544 +vt 0.593750 0.518544 +vt 0.625000 0.518544 +vt 0.375000 0.519749 +vt 0.406250 0.519749 +vt 0.437500 0.519749 +vt 0.468750 0.519749 +vt 0.500000 0.519749 +vt 0.531250 0.519749 +vt 0.562500 0.519749 +vt 0.593750 0.519749 +vt 0.625000 0.519749 +vt 0.375000 0.520954 +vt 0.406250 0.520954 +vt 0.437500 0.520954 +vt 0.468750 0.520954 +vt 0.500000 0.520954 +vt 0.531250 0.520954 +vt 0.562500 0.520954 +vt 0.593750 0.520954 +vt 0.625000 0.520954 +vt 0.375000 0.522159 +vt 0.406250 0.522159 +vt 0.437500 0.522159 +vt 0.468750 0.522159 +vt 0.500000 0.522159 +vt 0.531250 0.522159 +vt 0.562500 0.522159 +vt 0.593750 0.522159 +vt 0.625000 0.522159 +vt 0.375000 0.523364 +vt 0.406250 0.523364 +vt 0.437500 0.523364 +vt 0.468750 0.523364 +vt 0.500000 0.523364 +vt 0.531250 0.523364 +vt 0.562500 0.523364 +vt 0.593750 0.523364 +vt 0.625000 0.523364 +vt 0.375000 0.524568 +vt 0.406250 0.524568 +vt 0.437500 0.524568 +vt 0.468750 0.524568 +vt 0.500000 0.524568 +vt 0.531250 0.524568 +vt 0.562500 0.524568 +vt 0.593750 0.524568 +vt 0.625000 0.524568 +vt 0.375000 0.525773 +vt 0.406250 0.525773 +vt 0.437500 0.525773 +vt 0.468750 0.525773 +vt 0.500000 0.525773 +vt 0.531250 0.525773 +vt 0.562500 0.525773 +vt 0.593750 0.525773 +vt 0.625000 0.525773 +vt 0.375000 0.526978 +vt 0.406250 0.526978 +vt 0.437500 0.526978 +vt 0.468750 0.526978 +vt 0.500000 0.526978 +vt 0.531250 0.526978 +vt 0.562500 0.526978 +vt 0.593750 0.526978 +vt 0.625000 0.526978 +vt 0.375000 0.528183 +vt 0.406250 0.528183 +vt 0.437500 0.528183 +vt 0.468750 0.528183 +vt 0.500000 0.528183 +vt 0.531250 0.528183 +vt 0.562500 0.528183 +vt 0.593750 0.528183 +vt 0.625000 0.528183 +vt 0.375000 0.529388 +vt 0.406250 0.529388 +vt 0.437500 0.529388 +vt 0.468750 0.529388 +vt 0.500000 0.529388 +vt 0.531250 0.529388 +vt 0.562500 0.529388 +vt 0.593750 0.529388 +vt 0.625000 0.529388 +vt 0.375000 0.530593 +vt 0.406250 0.530593 +vt 0.437500 0.530593 +vt 0.468750 0.530593 +vt 0.500000 0.530593 +vt 0.531250 0.530593 +vt 0.562500 0.530593 +vt 0.593750 0.530593 +vt 0.625000 0.530593 +vt 0.375000 0.531798 +vt 0.406250 0.531798 +vt 0.437500 0.531798 +vt 0.468750 0.531798 +vt 0.500000 0.531798 +vt 0.531250 0.531798 +vt 0.562500 0.531798 +vt 0.593750 0.531798 +vt 0.625000 0.531798 +vt 0.375000 0.533003 +vt 0.406250 0.533003 +vt 0.437500 0.533003 +vt 0.468750 0.533003 +vt 0.500000 0.533003 +vt 0.531250 0.533003 +vt 0.562500 0.533003 +vt 0.593750 0.533003 +vt 0.625000 0.533003 +vt 0.375000 0.534208 +vt 0.406250 0.534208 +vt 0.437500 0.534208 +vt 0.468750 0.534208 +vt 0.500000 0.534208 +vt 0.531250 0.534208 +vt 0.562500 0.534208 +vt 0.593750 0.534208 +vt 0.625000 0.534208 +vt 0.375000 0.535413 +vt 0.406250 0.535413 +vt 0.437500 0.535413 +vt 0.468750 0.535413 +vt 0.500000 0.535413 +vt 0.531250 0.535413 +vt 0.562500 0.535413 +vt 0.593750 0.535413 +vt 0.625000 0.535413 +vt 0.375000 0.536618 +vt 0.406250 0.536618 +vt 0.437500 0.536618 +vt 0.468750 0.536618 +vt 0.500000 0.536618 +vt 0.531250 0.536618 +vt 0.562500 0.536618 +vt 0.593750 0.536618 +vt 0.625000 0.536618 +vt 0.375000 0.537822 +vt 0.406250 0.537822 +vt 0.437500 0.537822 +vt 0.468750 0.537822 +vt 0.500000 0.537822 +vt 0.531250 0.537822 +vt 0.562500 0.537822 +vt 0.593750 0.537822 +vt 0.625000 0.537822 +vt 0.375000 0.539027 +vt 0.406250 0.539027 +vt 0.437500 0.539027 +vt 0.468750 0.539027 +vt 0.500000 0.539027 +vt 0.531250 0.539027 +vt 0.562500 0.539027 +vt 0.593750 0.539027 +vt 0.625000 0.539027 +vt 0.375000 0.540232 +vt 0.406250 0.540232 +vt 0.437500 0.540232 +vt 0.468750 0.540232 +vt 0.500000 0.540232 +vt 0.531250 0.540232 +vt 0.562500 0.540232 +vt 0.593750 0.540232 +vt 0.625000 0.540232 +vt 0.375000 0.541437 +vt 0.406250 0.541437 +vt 0.437500 0.541437 +vt 0.468750 0.541437 +vt 0.500000 0.541437 +vt 0.531250 0.541437 +vt 0.562500 0.541437 +vt 0.593750 0.541437 +vt 0.625000 0.541437 +vt 0.375000 0.542642 +vt 0.406250 0.542642 +vt 0.437500 0.542642 +vt 0.468750 0.542642 +vt 0.500000 0.542642 +vt 0.531250 0.542642 +vt 0.562500 0.542642 +vt 0.593750 0.542642 +vt 0.625000 0.542642 +vt 0.375000 0.543847 +vt 0.406250 0.543847 +vt 0.437500 0.543847 +vt 0.468750 0.543847 +vt 0.500000 0.543847 +vt 0.531250 0.543847 +vt 0.562500 0.543847 +vt 0.593750 0.543847 +vt 0.625000 0.543847 +vt 0.375000 0.545052 +vt 0.406250 0.545052 +vt 0.437500 0.545052 +vt 0.468750 0.545052 +vt 0.500000 0.545052 +vt 0.531250 0.545052 +vt 0.562500 0.545052 +vt 0.593750 0.545052 +vt 0.625000 0.545052 +vt 0.375000 0.546257 +vt 0.406250 0.546257 +vt 0.437500 0.546257 +vt 0.468750 0.546257 +vt 0.500000 0.546257 +vt 0.531250 0.546257 +vt 0.562500 0.546257 +vt 0.593750 0.546257 +vt 0.625000 0.546257 +vt 0.375000 0.547462 +vt 0.406250 0.547462 +vt 0.437500 0.547462 +vt 0.468750 0.547462 +vt 0.500000 0.547462 +vt 0.531250 0.547462 +vt 0.562500 0.547462 +vt 0.593750 0.547462 +vt 0.625000 0.547462 +vt 0.375000 0.548667 +vt 0.406250 0.548667 +vt 0.437500 0.548667 +vt 0.468750 0.548667 +vt 0.500000 0.548667 +vt 0.531250 0.548667 +vt 0.562500 0.548667 +vt 0.593750 0.548667 +vt 0.625000 0.548667 +vt 0.375000 0.549872 +vt 0.406250 0.549872 +vt 0.437500 0.549872 +vt 0.468750 0.549872 +vt 0.500000 0.549872 +vt 0.531250 0.549872 +vt 0.562500 0.549872 +vt 0.593750 0.549872 +vt 0.625000 0.549872 +vt 0.375000 0.551076 +vt 0.406250 0.551076 +vt 0.437500 0.551076 +vt 0.468750 0.551076 +vt 0.500000 0.551076 +vt 0.531250 0.551076 +vt 0.562500 0.551076 +vt 0.593750 0.551076 +vt 0.625000 0.551076 +vt 0.375000 0.552281 +vt 0.406250 0.552281 +vt 0.437500 0.552281 +vt 0.468750 0.552281 +vt 0.500000 0.552281 +vt 0.531250 0.552281 +vt 0.562500 0.552281 +vt 0.593750 0.552281 +vt 0.625000 0.552281 +vt 0.375000 0.553486 +vt 0.406250 0.553486 +vt 0.437500 0.553486 +vt 0.468750 0.553486 +vt 0.500000 0.553486 +vt 0.531250 0.553486 +vt 0.562500 0.553486 +vt 0.593750 0.553486 +vt 0.625000 0.553486 +vt 0.375000 0.554691 +vt 0.406250 0.554691 +vt 0.437500 0.554691 +vt 0.468750 0.554691 +vt 0.500000 0.554691 +vt 0.531250 0.554691 +vt 0.562500 0.554691 +vt 0.593750 0.554691 +vt 0.625000 0.554691 +vt 0.375000 0.555896 +vt 0.406250 0.555896 +vt 0.437500 0.555896 +vt 0.468750 0.555896 +vt 0.500000 0.555896 +vt 0.531250 0.555896 +vt 0.562500 0.555896 +vt 0.593750 0.555896 +vt 0.625000 0.555896 +vt 0.375000 0.557101 +vt 0.406250 0.557101 +vt 0.437500 0.557101 +vt 0.468750 0.557101 +vt 0.500000 0.557101 +vt 0.531250 0.557101 +vt 0.562500 0.557101 +vt 0.593750 0.557101 +vt 0.625000 0.557101 +vt 0.375000 0.558306 +vt 0.406250 0.558306 +vt 0.437500 0.558306 +vt 0.468750 0.558306 +vt 0.500000 0.558306 +vt 0.531250 0.558306 +vt 0.562500 0.558306 +vt 0.593750 0.558306 +vt 0.625000 0.558306 +vt 0.375000 0.559511 +vt 0.406250 0.559511 +vt 0.437500 0.559511 +vt 0.468750 0.559511 +vt 0.500000 0.559511 +vt 0.531250 0.559511 +vt 0.562500 0.559511 +vt 0.593750 0.559511 +vt 0.625000 0.559511 +vt 0.375000 0.560716 +vt 0.406250 0.560716 +vt 0.437500 0.560716 +vt 0.468750 0.560716 +vt 0.500000 0.560716 +vt 0.531250 0.560716 +vt 0.562500 0.560716 +vt 0.593750 0.560716 +vt 0.625000 0.560716 +vt 0.375000 0.561921 +vt 0.406250 0.561921 +vt 0.437500 0.561921 +vt 0.468750 0.561921 +vt 0.500000 0.561921 +vt 0.531250 0.561921 +vt 0.562500 0.561921 +vt 0.593750 0.561921 +vt 0.625000 0.561921 +vt 0.375000 0.563125 +vt 0.406250 0.563125 +vt 0.437500 0.563125 +vt 0.468750 0.563125 +vt 0.500000 0.563125 +vt 0.531250 0.563125 +vt 0.562500 0.563125 +vt 0.593750 0.563125 +vt 0.625000 0.563125 +vt 0.375000 0.564330 +vt 0.406250 0.564330 +vt 0.437500 0.564330 +vt 0.468750 0.564330 +vt 0.500000 0.564330 +vt 0.531250 0.564330 +vt 0.562500 0.564330 +vt 0.593750 0.564330 +vt 0.625000 0.564330 +vt 0.375000 0.565535 +vt 0.406250 0.565535 +vt 0.437500 0.565535 +vt 0.468750 0.565535 +vt 0.500000 0.565535 +vt 0.531250 0.565535 +vt 0.562500 0.565535 +vt 0.593750 0.565535 +vt 0.625000 0.565535 +vt 0.375000 0.566740 +vt 0.406250 0.566740 +vt 0.437500 0.566740 +vt 0.468750 0.566740 +vt 0.500000 0.566740 +vt 0.531250 0.566740 +vt 0.562500 0.566740 +vt 0.593750 0.566740 +vt 0.625000 0.566740 +vt 0.375000 0.567945 +vt 0.406250 0.567945 +vt 0.437500 0.567945 +vt 0.468750 0.567945 +vt 0.500000 0.567945 +vt 0.531250 0.567945 +vt 0.562500 0.567945 +vt 0.593750 0.567945 +vt 0.625000 0.567945 +vt 0.375000 0.569150 +vt 0.406250 0.569150 +vt 0.437500 0.569150 +vt 0.468750 0.569150 +vt 0.500000 0.569150 +vt 0.531250 0.569150 +vt 0.562500 0.569150 +vt 0.593750 0.569150 +vt 0.625000 0.569150 +vt 0.375000 0.570355 +vt 0.406250 0.570355 +vt 0.437500 0.570355 +vt 0.468750 0.570355 +vt 0.500000 0.570355 +vt 0.531250 0.570355 +vt 0.562500 0.570355 +vt 0.593750 0.570355 +vt 0.625000 0.570355 +vt 0.375000 0.571560 +vt 0.406250 0.571560 +vt 0.437500 0.571560 +vt 0.468750 0.571560 +vt 0.500000 0.571560 +vt 0.531250 0.571560 +vt 0.562500 0.571560 +vt 0.593750 0.571560 +vt 0.625000 0.571560 +vt 0.375000 0.572765 +vt 0.406250 0.572765 +vt 0.437500 0.572765 +vt 0.468750 0.572765 +vt 0.500000 0.572765 +vt 0.531250 0.572765 +vt 0.562500 0.572765 +vt 0.593750 0.572765 +vt 0.625000 0.572765 +vt 0.375000 0.573970 +vt 0.406250 0.573970 +vt 0.437500 0.573970 +vt 0.468750 0.573970 +vt 0.500000 0.573970 +vt 0.531250 0.573970 +vt 0.562500 0.573970 +vt 0.593750 0.573970 +vt 0.625000 0.573970 +vt 0.375000 0.575175 +vt 0.406250 0.575175 +vt 0.437500 0.575175 +vt 0.468750 0.575175 +vt 0.500000 0.575175 +vt 0.531250 0.575175 +vt 0.562500 0.575175 +vt 0.593750 0.575175 +vt 0.625000 0.575175 +vt 0.375000 0.576379 +vt 0.406250 0.576379 +vt 0.437500 0.576379 +vt 0.468750 0.576379 +vt 0.500000 0.576379 +vt 0.531250 0.576379 +vt 0.562500 0.576379 +vt 0.593750 0.576379 +vt 0.625000 0.576379 +vt 0.375000 0.577584 +vt 0.406250 0.577584 +vt 0.437500 0.577584 +vt 0.468750 0.577584 +vt 0.500000 0.577584 +vt 0.531250 0.577584 +vt 0.562500 0.577584 +vt 0.593750 0.577584 +vt 0.625000 0.577584 +vt 0.375000 0.578789 +vt 0.406250 0.578789 +vt 0.437500 0.578789 +vt 0.468750 0.578789 +vt 0.500000 0.578789 +vt 0.531250 0.578789 +vt 0.562500 0.578789 +vt 0.593750 0.578789 +vt 0.625000 0.578789 +vt 0.375000 0.579994 +vt 0.406250 0.579994 +vt 0.437500 0.579994 +vt 0.468750 0.579994 +vt 0.500000 0.579994 +vt 0.531250 0.579994 +vt 0.562500 0.579994 +vt 0.593750 0.579994 +vt 0.625000 0.579994 +vt 0.375000 0.581199 +vt 0.406250 0.581199 +vt 0.437500 0.581199 +vt 0.468750 0.581199 +vt 0.500000 0.581199 +vt 0.531250 0.581199 +vt 0.562500 0.581199 +vt 0.593750 0.581199 +vt 0.625000 0.581199 +vt 0.375000 0.582404 +vt 0.406250 0.582404 +vt 0.437500 0.582404 +vt 0.468750 0.582404 +vt 0.500000 0.582404 +vt 0.531250 0.582404 +vt 0.562500 0.582404 +vt 0.593750 0.582404 +vt 0.625000 0.582404 +vt 0.375000 0.583609 +vt 0.406250 0.583609 +vt 0.437500 0.583609 +vt 0.468750 0.583609 +vt 0.500000 0.583609 +vt 0.531250 0.583609 +vt 0.562500 0.583609 +vt 0.593750 0.583609 +vt 0.625000 0.583609 +vt 0.375000 0.584814 +vt 0.406250 0.584814 +vt 0.437500 0.584814 +vt 0.468750 0.584814 +vt 0.500000 0.584814 +vt 0.531250 0.584814 +vt 0.562500 0.584814 +vt 0.593750 0.584814 +vt 0.625000 0.584814 +vt 0.375000 0.586019 +vt 0.406250 0.586019 +vt 0.437500 0.586019 +vt 0.468750 0.586019 +vt 0.500000 0.586019 +vt 0.531250 0.586019 +vt 0.562500 0.586019 +vt 0.593750 0.586019 +vt 0.625000 0.586019 +vt 0.375000 0.587224 +vt 0.406250 0.587224 +vt 0.437500 0.587224 +vt 0.468750 0.587224 +vt 0.500000 0.587224 +vt 0.531250 0.587224 +vt 0.562500 0.587224 +vt 0.593750 0.587224 +vt 0.625000 0.587224 +vt 0.375000 0.588429 +vt 0.406250 0.588429 +vt 0.437500 0.588429 +vt 0.468750 0.588429 +vt 0.500000 0.588429 +vt 0.531250 0.588429 +vt 0.562500 0.588429 +vt 0.593750 0.588429 +vt 0.625000 0.588429 +vt 0.375000 0.589633 +vt 0.406250 0.589633 +vt 0.437500 0.589633 +vt 0.468750 0.589633 +vt 0.500000 0.589633 +vt 0.531250 0.589633 +vt 0.562500 0.589633 +vt 0.593750 0.589633 +vt 0.625000 0.589633 +vt 0.375000 0.590838 +vt 0.406250 0.590838 +vt 0.437500 0.590838 +vt 0.468750 0.590838 +vt 0.500000 0.590838 +vt 0.531250 0.590838 +vt 0.562500 0.590838 +vt 0.593750 0.590838 +vt 0.625000 0.590838 +vt 0.375000 0.592043 +vt 0.406250 0.592043 +vt 0.437500 0.592043 +vt 0.468750 0.592043 +vt 0.500000 0.592043 +vt 0.531250 0.592043 +vt 0.562500 0.592043 +vt 0.593750 0.592043 +vt 0.625000 0.592043 +vt 0.375000 0.593248 +vt 0.406250 0.593248 +vt 0.437500 0.593248 +vt 0.468750 0.593248 +vt 0.500000 0.593248 +vt 0.531250 0.593248 +vt 0.562500 0.593248 +vt 0.593750 0.593248 +vt 0.625000 0.593248 +vt 0.375000 0.594453 +vt 0.406250 0.594453 +vt 0.437500 0.594453 +vt 0.468750 0.594453 +vt 0.500000 0.594453 +vt 0.531250 0.594453 +vt 0.562500 0.594453 +vt 0.593750 0.594453 +vt 0.625000 0.594453 +vt 0.375000 0.595658 +vt 0.406250 0.595658 +vt 0.437500 0.595658 +vt 0.468750 0.595658 +vt 0.500000 0.595658 +vt 0.531250 0.595658 +vt 0.562500 0.595658 +vt 0.593750 0.595658 +vt 0.625000 0.595658 +vt 0.375000 0.596863 +vt 0.406250 0.596863 +vt 0.437500 0.596863 +vt 0.468750 0.596863 +vt 0.500000 0.596863 +vt 0.531250 0.596863 +vt 0.562500 0.596863 +vt 0.593750 0.596863 +vt 0.625000 0.596863 +vt 0.375000 0.598068 +vt 0.406250 0.598068 +vt 0.437500 0.598068 +vt 0.468750 0.598068 +vt 0.500000 0.598068 +vt 0.531250 0.598068 +vt 0.562500 0.598068 +vt 0.593750 0.598068 +vt 0.625000 0.598068 +vt 0.375000 0.599273 +vt 0.406250 0.599273 +vt 0.437500 0.599273 +vt 0.468750 0.599273 +vt 0.500000 0.599273 +vt 0.531250 0.599273 +vt 0.562500 0.599273 +vt 0.593750 0.599273 +vt 0.625000 0.599273 +vt 0.375000 0.600478 +vt 0.406250 0.600478 +vt 0.437500 0.600478 +vt 0.468750 0.600478 +vt 0.500000 0.600478 +vt 0.531250 0.600478 +vt 0.562500 0.600478 +vt 0.593750 0.600478 +vt 0.625000 0.600478 +vt 0.375000 0.601683 +vt 0.406250 0.601683 +vt 0.437500 0.601683 +vt 0.468750 0.601683 +vt 0.500000 0.601683 +vt 0.531250 0.601683 +vt 0.562500 0.601683 +vt 0.593750 0.601683 +vt 0.625000 0.601683 +vt 0.375000 0.602887 +vt 0.406250 0.602887 +vt 0.437500 0.602887 +vt 0.468750 0.602887 +vt 0.500000 0.602887 +vt 0.531250 0.602887 +vt 0.562500 0.602887 +vt 0.593750 0.602887 +vt 0.625000 0.602887 +vt 0.375000 0.604092 +vt 0.406250 0.604092 +vt 0.437500 0.604092 +vt 0.468750 0.604092 +vt 0.500000 0.604092 +vt 0.531250 0.604092 +vt 0.562500 0.604092 +vt 0.593750 0.604092 +vt 0.625000 0.604092 +vt 0.375000 0.605297 +vt 0.406250 0.605297 +vt 0.437500 0.605297 +vt 0.468750 0.605297 +vt 0.500000 0.605297 +vt 0.531250 0.605297 +vt 0.562500 0.605297 +vt 0.593750 0.605297 +vt 0.625000 0.605297 +vt 0.375000 0.606502 +vt 0.406250 0.606502 +vt 0.437500 0.606502 +vt 0.468750 0.606502 +vt 0.500000 0.606502 +vt 0.531250 0.606502 +vt 0.562500 0.606502 +vt 0.593750 0.606502 +vt 0.625000 0.606502 +vt 0.375000 0.607707 +vt 0.406250 0.607707 +vt 0.437500 0.607707 +vt 0.468750 0.607707 +vt 0.500000 0.607707 +vt 0.531250 0.607707 +vt 0.562500 0.607707 +vt 0.593750 0.607707 +vt 0.625000 0.607707 +vt 0.375000 0.608912 +vt 0.406250 0.608912 +vt 0.437500 0.608912 +vt 0.468750 0.608912 +vt 0.500000 0.608912 +vt 0.531250 0.608912 +vt 0.562500 0.608912 +vt 0.593750 0.608912 +vt 0.625000 0.608912 +vt 0.375000 0.610117 +vt 0.406250 0.610117 +vt 0.437500 0.610117 +vt 0.468750 0.610117 +vt 0.500000 0.610117 +vt 0.531250 0.610117 +vt 0.562500 0.610117 +vt 0.593750 0.610117 +vt 0.625000 0.610117 +vt 0.375000 0.611322 +vt 0.406250 0.611322 +vt 0.437500 0.611322 +vt 0.468750 0.611322 +vt 0.500000 0.611322 +vt 0.531250 0.611322 +vt 0.562500 0.611322 +vt 0.593750 0.611322 +vt 0.625000 0.611322 +vt 0.375000 0.612527 +vt 0.406250 0.612527 +vt 0.437500 0.612527 +vt 0.468750 0.612527 +vt 0.500000 0.612527 +vt 0.531250 0.612527 +vt 0.562500 0.612527 +vt 0.593750 0.612527 +vt 0.625000 0.612527 +vt 0.375000 0.613732 +vt 0.406250 0.613732 +vt 0.437500 0.613732 +vt 0.468750 0.613732 +vt 0.500000 0.613732 +vt 0.531250 0.613732 +vt 0.562500 0.613732 +vt 0.593750 0.613732 +vt 0.625000 0.613732 +vt 0.375000 0.614937 +vt 0.406250 0.614937 +vt 0.437500 0.614937 +vt 0.468750 0.614937 +vt 0.500000 0.614937 +vt 0.531250 0.614937 +vt 0.562500 0.614937 +vt 0.593750 0.614937 +vt 0.625000 0.614937 +vt 0.375000 0.616141 +vt 0.406250 0.616141 +vt 0.437500 0.616141 +vt 0.468750 0.616141 +vt 0.500000 0.616141 +vt 0.531250 0.616141 +vt 0.562500 0.616141 +vt 0.593750 0.616141 +vt 0.625000 0.616141 +vt 0.375000 0.617346 +vt 0.406250 0.617346 +vt 0.437500 0.617346 +vt 0.468750 0.617346 +vt 0.500000 0.617346 +vt 0.531250 0.617346 +vt 0.562500 0.617346 +vt 0.593750 0.617346 +vt 0.625000 0.617346 +vt 0.375000 0.618551 +vt 0.406250 0.618551 +vt 0.437500 0.618551 +vt 0.468750 0.618551 +vt 0.500000 0.618551 +vt 0.531250 0.618551 +vt 0.562500 0.618551 +vt 0.593750 0.618551 +vt 0.625000 0.618551 +vt 0.375000 0.619756 +vt 0.406250 0.619756 +vt 0.437500 0.619756 +vt 0.468750 0.619756 +vt 0.500000 0.619756 +vt 0.531250 0.619756 +vt 0.562500 0.619756 +vt 0.593750 0.619756 +vt 0.625000 0.619756 +vt 0.375000 0.620961 +vt 0.406250 0.620961 +vt 0.437500 0.620961 +vt 0.468750 0.620961 +vt 0.500000 0.620961 +vt 0.531250 0.620961 +vt 0.562500 0.620961 +vt 0.593750 0.620961 +vt 0.625000 0.620961 +vt 0.375000 0.622166 +vt 0.406250 0.622166 +vt 0.437500 0.622166 +vt 0.468750 0.622166 +vt 0.500000 0.622166 +vt 0.531250 0.622166 +vt 0.562500 0.622166 +vt 0.593750 0.622166 +vt 0.625000 0.622166 +vt 0.375000 0.623371 +vt 0.406250 0.623371 +vt 0.437500 0.623371 +vt 0.468750 0.623371 +vt 0.500000 0.623371 +vt 0.531250 0.623371 +vt 0.562500 0.623371 +vt 0.593750 0.623371 +vt 0.625000 0.623371 +vt 0.375000 0.624576 +vt 0.406250 0.624576 +vt 0.437500 0.624576 +vt 0.468750 0.624576 +vt 0.500000 0.624576 +vt 0.531250 0.624576 +vt 0.562500 0.624576 +vt 0.593750 0.624576 +vt 0.625000 0.624576 +vt 0.375000 0.625781 +vt 0.406250 0.625781 +vt 0.437500 0.625781 +vt 0.468750 0.625781 +vt 0.500000 0.625781 +vt 0.531250 0.625781 +vt 0.562500 0.625781 +vt 0.593750 0.625781 +vt 0.625000 0.625781 +vt 0.375000 0.626986 +vt 0.406250 0.626986 +vt 0.437500 0.626986 +vt 0.468750 0.626986 +vt 0.500000 0.626986 +vt 0.531250 0.626986 +vt 0.562500 0.626986 +vt 0.593750 0.626986 +vt 0.625000 0.626986 +vt 0.375000 0.628191 +vt 0.406250 0.628191 +vt 0.437500 0.628191 +vt 0.468750 0.628191 +vt 0.500000 0.628191 +vt 0.531250 0.628191 +vt 0.562500 0.628191 +vt 0.593750 0.628191 +vt 0.625000 0.628191 +vt 0.375000 0.629395 +vt 0.406250 0.629395 +vt 0.437500 0.629395 +vt 0.468750 0.629395 +vt 0.500000 0.629395 +vt 0.531250 0.629395 +vt 0.562500 0.629395 +vt 0.593750 0.629395 +vt 0.625000 0.629395 +vt 0.375000 0.630600 +vt 0.406250 0.630600 +vt 0.437500 0.630600 +vt 0.468750 0.630600 +vt 0.500000 0.630600 +vt 0.531250 0.630600 +vt 0.562500 0.630600 +vt 0.593750 0.630600 +vt 0.625000 0.630600 +vt 0.375000 0.631805 +vt 0.406250 0.631805 +vt 0.437500 0.631805 +vt 0.468750 0.631805 +vt 0.500000 0.631805 +vt 0.531250 0.631805 +vt 0.562500 0.631805 +vt 0.593750 0.631805 +vt 0.625000 0.631805 +vt 0.375000 0.633010 +vt 0.406250 0.633010 +vt 0.437500 0.633010 +vt 0.468750 0.633010 +vt 0.500000 0.633010 +vt 0.531250 0.633010 +vt 0.562500 0.633010 +vt 0.593750 0.633010 +vt 0.625000 0.633010 +vt 0.375000 0.634215 +vt 0.406250 0.634215 +vt 0.437500 0.634215 +vt 0.468750 0.634215 +vt 0.500000 0.634215 +vt 0.531250 0.634215 +vt 0.562500 0.634215 +vt 0.593750 0.634215 +vt 0.625000 0.634215 +vt 0.375000 0.635420 +vt 0.406250 0.635420 +vt 0.437500 0.635420 +vt 0.468750 0.635420 +vt 0.500000 0.635420 +vt 0.531250 0.635420 +vt 0.562500 0.635420 +vt 0.593750 0.635420 +vt 0.625000 0.635420 +vt 0.375000 0.636625 +vt 0.406250 0.636625 +vt 0.437500 0.636625 +vt 0.468750 0.636625 +vt 0.500000 0.636625 +vt 0.531250 0.636625 +vt 0.562500 0.636625 +vt 0.593750 0.636625 +vt 0.625000 0.636625 +vt 0.375000 0.637830 +vt 0.406250 0.637830 +vt 0.437500 0.637830 +vt 0.468750 0.637830 +vt 0.500000 0.637830 +vt 0.531250 0.637830 +vt 0.562500 0.637830 +vt 0.593750 0.637830 +vt 0.625000 0.637830 +vt 0.375000 0.639035 +vt 0.406250 0.639035 +vt 0.437500 0.639035 +vt 0.468750 0.639035 +vt 0.500000 0.639035 +vt 0.531250 0.639035 +vt 0.562500 0.639035 +vt 0.593750 0.639035 +vt 0.625000 0.639035 +vt 0.375000 0.640240 +vt 0.406250 0.640240 +vt 0.437500 0.640240 +vt 0.468750 0.640240 +vt 0.500000 0.640240 +vt 0.531250 0.640240 +vt 0.562500 0.640240 +vt 0.593750 0.640240 +vt 0.625000 0.640240 +vt 0.375000 0.641445 +vt 0.406250 0.641445 +vt 0.437500 0.641445 +vt 0.468750 0.641445 +vt 0.500000 0.641445 +vt 0.531250 0.641445 +vt 0.562500 0.641445 +vt 0.593750 0.641445 +vt 0.625000 0.641445 +vt 0.375000 0.642649 +vt 0.406250 0.642649 +vt 0.437500 0.642649 +vt 0.468750 0.642649 +vt 0.500000 0.642649 +vt 0.531250 0.642649 +vt 0.562500 0.642649 +vt 0.593750 0.642649 +vt 0.625000 0.642649 +vt 0.375000 0.643854 +vt 0.406250 0.643854 +vt 0.437500 0.643854 +vt 0.468750 0.643854 +vt 0.500000 0.643854 +vt 0.531250 0.643854 +vt 0.562500 0.643854 +vt 0.593750 0.643854 +vt 0.625000 0.643854 +vt 0.375000 0.645059 +vt 0.406250 0.645059 +vt 0.437500 0.645059 +vt 0.468750 0.645059 +vt 0.500000 0.645059 +vt 0.531250 0.645059 +vt 0.562500 0.645059 +vt 0.593750 0.645059 +vt 0.625000 0.645059 +vt 0.375000 0.646264 +vt 0.406250 0.646264 +vt 0.437500 0.646264 +vt 0.468750 0.646264 +vt 0.500000 0.646264 +vt 0.531250 0.646264 +vt 0.562500 0.646264 +vt 0.593750 0.646264 +vt 0.625000 0.646264 +vt 0.375000 0.647469 +vt 0.406250 0.647469 +vt 0.437500 0.647469 +vt 0.468750 0.647469 +vt 0.500000 0.647469 +vt 0.531250 0.647469 +vt 0.562500 0.647469 +vt 0.593750 0.647469 +vt 0.625000 0.647469 +vt 0.375000 0.648674 +vt 0.406250 0.648674 +vt 0.437500 0.648674 +vt 0.468750 0.648674 +vt 0.500000 0.648674 +vt 0.531250 0.648674 +vt 0.562500 0.648674 +vt 0.593750 0.648674 +vt 0.625000 0.648674 +vt 0.375000 0.649879 +vt 0.406250 0.649879 +vt 0.437500 0.649879 +vt 0.468750 0.649879 +vt 0.500000 0.649879 +vt 0.531250 0.649879 +vt 0.562500 0.649879 +vt 0.593750 0.649879 +vt 0.625000 0.649879 +vt 0.375000 0.651084 +vt 0.406250 0.651084 +vt 0.437500 0.651084 +vt 0.468750 0.651084 +vt 0.500000 0.651084 +vt 0.531250 0.651084 +vt 0.562500 0.651084 +vt 0.593750 0.651084 +vt 0.625000 0.651084 +vt 0.375000 0.652289 +vt 0.406250 0.652289 +vt 0.437500 0.652289 +vt 0.468750 0.652289 +vt 0.500000 0.652289 +vt 0.531250 0.652289 +vt 0.562500 0.652289 +vt 0.593750 0.652289 +vt 0.625000 0.652289 +vt 0.375000 0.653494 +vt 0.406250 0.653494 +vt 0.437500 0.653494 +vt 0.468750 0.653494 +vt 0.500000 0.653494 +vt 0.531250 0.653494 +vt 0.562500 0.653494 +vt 0.593750 0.653494 +vt 0.625000 0.653494 +vt 0.375000 0.654698 +vt 0.406250 0.654698 +vt 0.437500 0.654698 +vt 0.468750 0.654698 +vt 0.500000 0.654698 +vt 0.531250 0.654698 +vt 0.562500 0.654698 +vt 0.593750 0.654698 +vt 0.625000 0.654698 +vt 0.375000 0.655903 +vt 0.406250 0.655903 +vt 0.437500 0.655903 +vt 0.468750 0.655903 +vt 0.500000 0.655903 +vt 0.531250 0.655903 +vt 0.562500 0.655903 +vt 0.593750 0.655903 +vt 0.625000 0.655903 +vt 0.375000 0.657108 +vt 0.406250 0.657108 +vt 0.437500 0.657108 +vt 0.468750 0.657108 +vt 0.500000 0.657108 +vt 0.531250 0.657108 +vt 0.562500 0.657108 +vt 0.593750 0.657108 +vt 0.625000 0.657108 +vt 0.375000 0.658313 +vt 0.406250 0.658313 +vt 0.437500 0.658313 +vt 0.468750 0.658313 +vt 0.500000 0.658313 +vt 0.531250 0.658313 +vt 0.562500 0.658313 +vt 0.593750 0.658313 +vt 0.625000 0.658313 +vt 0.375000 0.659518 +vt 0.406250 0.659518 +vt 0.437500 0.659518 +vt 0.468750 0.659518 +vt 0.500000 0.659518 +vt 0.531250 0.659518 +vt 0.562500 0.659518 +vt 0.593750 0.659518 +vt 0.625000 0.659518 +vt 0.375000 0.660723 +vt 0.406250 0.660723 +vt 0.437500 0.660723 +vt 0.468750 0.660723 +vt 0.500000 0.660723 +vt 0.531250 0.660723 +vt 0.562500 0.660723 +vt 0.593750 0.660723 +vt 0.625000 0.660723 +vt 0.375000 0.661928 +vt 0.406250 0.661928 +vt 0.437500 0.661928 +vt 0.468750 0.661928 +vt 0.500000 0.661928 +vt 0.531250 0.661928 +vt 0.562500 0.661928 +vt 0.593750 0.661928 +vt 0.625000 0.661928 +vt 0.375000 0.663133 +vt 0.406250 0.663133 +vt 0.437500 0.663133 +vt 0.468750 0.663133 +vt 0.500000 0.663133 +vt 0.531250 0.663133 +vt 0.562500 0.663133 +vt 0.593750 0.663133 +vt 0.625000 0.663133 +vt 0.375000 0.664338 +vt 0.406250 0.664338 +vt 0.437500 0.664338 +vt 0.468750 0.664338 +vt 0.500000 0.664338 +vt 0.531250 0.664338 +vt 0.562500 0.664338 +vt 0.593750 0.664338 +vt 0.625000 0.664338 +vt 0.375000 0.665543 +vt 0.406250 0.665543 +vt 0.437500 0.665543 +vt 0.468750 0.665543 +vt 0.500000 0.665543 +vt 0.531250 0.665543 +vt 0.562500 0.665543 +vt 0.593750 0.665543 +vt 0.625000 0.665543 +vt 0.375000 0.666748 +vt 0.406250 0.666748 +vt 0.437500 0.666748 +vt 0.468750 0.666748 +vt 0.500000 0.666748 +vt 0.531250 0.666748 +vt 0.562500 0.666748 +vt 0.593750 0.666748 +vt 0.625000 0.666748 +vt 0.375000 0.667952 +vt 0.406250 0.667952 +vt 0.437500 0.667952 +vt 0.468750 0.667952 +vt 0.500000 0.667952 +vt 0.531250 0.667952 +vt 0.562500 0.667952 +vt 0.593750 0.667952 +vt 0.625000 0.667952 +vt 0.375000 0.669157 +vt 0.406250 0.669157 +vt 0.437500 0.669157 +vt 0.468750 0.669157 +vt 0.500000 0.669157 +vt 0.531250 0.669157 +vt 0.562500 0.669157 +vt 0.593750 0.669157 +vt 0.625000 0.669157 +vt 0.375000 0.670362 +vt 0.406250 0.670362 +vt 0.437500 0.670362 +vt 0.468750 0.670362 +vt 0.500000 0.670362 +vt 0.531250 0.670362 +vt 0.562500 0.670362 +vt 0.593750 0.670362 +vt 0.625000 0.670362 +vt 0.375000 0.671567 +vt 0.406250 0.671567 +vt 0.437500 0.671567 +vt 0.468750 0.671567 +vt 0.500000 0.671567 +vt 0.531250 0.671567 +vt 0.562500 0.671567 +vt 0.593750 0.671567 +vt 0.625000 0.671567 +vt 0.375000 0.672772 +vt 0.406250 0.672772 +vt 0.437500 0.672772 +vt 0.468750 0.672772 +vt 0.500000 0.672772 +vt 0.531250 0.672772 +vt 0.562500 0.672772 +vt 0.593750 0.672772 +vt 0.625000 0.672772 +vt 0.375000 0.673977 +vt 0.406250 0.673977 +vt 0.437500 0.673977 +vt 0.468750 0.673977 +vt 0.500000 0.673977 +vt 0.531250 0.673977 +vt 0.562500 0.673977 +vt 0.593750 0.673977 +vt 0.625000 0.673977 +vt 0.375000 0.675182 +vt 0.406250 0.675182 +vt 0.437500 0.675182 +vt 0.468750 0.675182 +vt 0.500000 0.675182 +vt 0.531250 0.675182 +vt 0.562500 0.675182 +vt 0.593750 0.675182 +vt 0.625000 0.675182 +vt 0.375000 0.676387 +vt 0.406250 0.676387 +vt 0.437500 0.676387 +vt 0.468750 0.676387 +vt 0.500000 0.676387 +vt 0.531250 0.676387 +vt 0.562500 0.676387 +vt 0.593750 0.676387 +vt 0.625000 0.676387 +vt 0.375000 0.677592 +vt 0.406250 0.677592 +vt 0.437500 0.677592 +vt 0.468750 0.677592 +vt 0.500000 0.677592 +vt 0.531250 0.677592 +vt 0.562500 0.677592 +vt 0.593750 0.677592 +vt 0.625000 0.677592 +vt 0.375000 0.678797 +vt 0.406250 0.678797 +vt 0.437500 0.678797 +vt 0.468750 0.678797 +vt 0.500000 0.678797 +vt 0.531250 0.678797 +vt 0.562500 0.678797 +vt 0.593750 0.678797 +vt 0.625000 0.678797 +vt 0.375000 0.680002 +vt 0.406250 0.680002 +vt 0.437500 0.680002 +vt 0.468750 0.680002 +vt 0.500000 0.680002 +vt 0.531250 0.680002 +vt 0.562500 0.680002 +vt 0.593750 0.680002 +vt 0.625000 0.680002 +vt 0.375000 0.681206 +vt 0.406250 0.681206 +vt 0.437500 0.681206 +vt 0.468750 0.681206 +vt 0.500000 0.681206 +vt 0.531250 0.681206 +vt 0.562500 0.681206 +vt 0.593750 0.681206 +vt 0.625000 0.681206 +vt 0.375000 0.682411 +vt 0.406250 0.682411 +vt 0.437500 0.682411 +vt 0.468750 0.682411 +vt 0.500000 0.682411 +vt 0.531250 0.682411 +vt 0.562500 0.682411 +vt 0.593750 0.682411 +vt 0.625000 0.682411 +vt 0.375000 0.683616 +vt 0.406250 0.683616 +vt 0.437500 0.683616 +vt 0.468750 0.683616 +vt 0.500000 0.683616 +vt 0.531250 0.683616 +vt 0.562500 0.683616 +vt 0.593750 0.683616 +vt 0.625000 0.683616 +vt 0.375000 0.684821 +vt 0.406250 0.684821 +vt 0.437500 0.684821 +vt 0.468750 0.684821 +vt 0.500000 0.684821 +vt 0.531250 0.684821 +vt 0.562500 0.684821 +vt 0.593750 0.684821 +vt 0.625000 0.684821 +vt 0.375000 0.686026 +vt 0.406250 0.686026 +vt 0.437500 0.686026 +vt 0.468750 0.686026 +vt 0.500000 0.686026 +vt 0.531250 0.686026 +vt 0.562500 0.686026 +vt 0.593750 0.686026 +vt 0.625000 0.686026 +vt 0.375000 0.687231 +vt 0.406250 0.687231 +vt 0.437500 0.687231 +vt 0.468750 0.687231 +vt 0.500000 0.687231 +vt 0.531250 0.687231 +vt 0.562500 0.687231 +vt 0.593750 0.687231 +vt 0.625000 0.687231 +vt 0.375000 0.688436 +vt 0.406250 0.688436 +vt 0.437500 0.688436 +vt 0.468750 0.688436 +vt 0.500000 0.688436 +vt 0.531250 0.688436 +vt 0.562500 0.688436 +vt 0.593750 0.688436 +vt 0.625000 0.688436 +vt 0.610485 0.733265 +vt 0.500000 0.687500 +vt 0.389515 0.733265 +vt 0.343750 0.843750 +vt 0.389515 0.954235 +vt 0.500000 1.000000 +vt 0.610485 0.954235 +vt 0.656250 0.843750 +vn 0.204412 0.346759 -0.915409 +vn 0.204412 0.346759 -0.915409 +vn 0.161547 0.365996 -0.916487 +vn 0.158534 0.367312 -0.916487 +vn -0.372212 -0.154270 -0.915237 +vn -0.372212 -0.154270 -0.915237 +vn -0.347993 -0.198153 -0.916317 +vn -0.349629 -0.195254 -0.916317 +vn -0.731289 -0.566568 -0.379759 +vn -0.731289 -0.566568 -0.379759 +vn -0.650587 -0.656289 -0.382127 +vn -0.663646 -0.643082 -0.382125 +vn -0.660661 -0.647542 0.379759 +vn -0.660661 -0.647542 0.379759 +vn -0.569701 -0.727614 0.382124 +vn -0.584210 -0.716015 0.382126 +vn -0.203398 -0.347811 0.915236 +vn -0.203398 -0.347811 0.915236 +vn -0.157390 -0.368227 0.916317 +vn -0.160445 -0.366905 0.916318 +vn 0.371312 0.155412 0.915409 +vn 0.371312 0.155412 0.915409 +vn 0.348597 0.196295 0.916487 +vn 0.346971 0.199153 0.916488 +vn 0.730371 0.567732 0.379786 +vn 0.730371 0.567732 0.379786 +vn 0.662421 0.644326 0.382155 +vn 0.649695 0.657155 0.382157 +vn 0.661687 0.646477 -0.379786 +vn 0.661687 0.646477 -0.379786 +vn 0.585157 0.715226 -0.382157 +vn 0.571062 0.726530 -0.382155 +vn 0.069260 0.394028 -0.916485 +vn 0.066019 0.394585 -0.916485 +vn -0.290465 -0.275670 -0.916317 +vn -0.292747 -0.273247 -0.916316 +vn -0.474623 -0.792915 -0.382125 +vn -0.490465 -0.783215 -0.382123 +vn -0.379012 -0.842813 0.382120 +vn -0.395875 -0.835024 0.382122 +vn -0.064701 -0.395184 0.916321 +vn -0.067983 -0.394632 0.916321 +vn 0.291489 0.274018 0.916487 +vn 0.289226 0.276405 0.916487 +vn 0.488970 0.784135 0.382154 +vn 0.473545 0.793545 0.382155 +vn 0.396984 0.834482 -0.382156 +vn 0.380593 0.842085 -0.382154 +vn -0.027047 0.399152 -0.916486 +vn -0.030327 0.398916 -0.916486 +vn -0.216041 -0.337185 -0.916315 +vn -0.218838 -0.335377 -0.916315 +vn -0.271068 -0.883462 -0.382122 +vn -0.288771 -0.877836 -0.382120 +vn -0.166301 -0.909027 0.382118 +vn -0.184537 -0.905500 0.382119 +vn 0.031757 -0.399184 0.916321 +vn 0.028437 -0.399433 0.916321 +vn 0.217445 0.335810 0.916487 +vn 0.214678 0.337585 0.916488 +vn 0.287108 0.878368 0.382151 +vn 0.269880 0.883812 0.382153 +vn 0.185749 0.905238 -0.382155 +vn 0.168016 0.908696 -0.382154 +vn -0.121781 0.381079 -0.916487 +vn -0.124910 0.380066 -0.916486 +vn -0.129073 -0.379087 -0.916315 +vn -0.132219 -0.378003 -0.916314 +vn -0.051760 -0.922662 -0.382120 +vn -0.070294 -0.921436 -0.382118 +vn 0.056066 -0.922409 0.382124 +vn 0.037516 -0.923349 0.382125 +vn 0.126371 -0.379987 0.916319 +vn 0.123208 -0.381023 0.916319 +vn 0.130762 0.378089 0.916488 +vn 0.127650 0.379150 0.916488 +vn 0.068570 0.921551 0.382154 +vn 0.050540 0.922715 0.382156 +vn -0.036285 0.923386 -0.382155 +vn -0.054333 0.922501 -0.382152 +vn -0.209457 0.340887 -0.916474 +vn -0.212253 0.339156 -0.916473 +vn -0.034609 -0.398955 -0.916317 +vn -0.037925 -0.398654 -0.916317 +vn 0.170548 -0.908238 -0.382121 +vn 0.152260 -0.911483 -0.382119 +vn 0.275179 -0.882187 0.382130 +vn 0.257392 -0.887539 0.382131 +vn 0.213638 -0.338701 0.916319 +vn 0.210814 -0.340465 0.916319 +vn 0.036477 0.398398 0.916487 +vn 0.033201 0.398684 0.916487 +vn -0.153968 0.911182 0.382153 +vn -0.171754 0.907997 0.382154 +vn -0.256214 0.887870 -0.382153 +vn -0.273524 0.882692 -0.382153 +vn -0.284937 0.280849 -0.916480 +vn -0.287234 0.278496 -0.916481 +vn 0.061885 -0.395660 -0.916310 +vn 0.058593 -0.396161 -0.916310 +vn 0.382943 -0.841031 -0.382128 +vn 0.365963 -0.848558 -0.382125 +vn 0.478308 -0.790694 0.382131 +vn 0.462319 -0.800147 0.382133 +vn 0.288476 -0.277712 0.916328 +vn 0.286158 -0.280101 0.916328 +vn -0.059928 0.395556 0.916485 +vn -0.063177 0.395050 0.916485 +vn -0.367553 0.847858 0.382153 +vn -0.384059 0.840509 0.382156 +vn -0.461248 0.800756 -0.382153 +vn -0.476816 0.791585 -0.382150 +vn -0.343858 0.204491 -0.916485 +vn -0.345529 0.201660 -0.916484 +vn 0.154766 -0.369349 -0.916313 +vn 0.151691 -0.370624 -0.916312 +vn 0.573087 -0.724950 -0.382124 +vn 0.558401 -0.736322 -0.382124 +vn 0.653637 -0.653252 0.382125 +vn 0.640375 -0.666257 0.382128 +vn 0.346565 -0.200609 0.916323 +vn 0.344884 -0.203481 0.916325 +vn -0.152844 0.369715 0.916487 +vn -0.155877 0.368445 0.916488 +vn -0.559779 0.735260 0.382152 +vn -0.574047 0.724175 0.382152 +vn -0.639478 0.667102 -0.382155 +vn -0.652399 0.654472 -0.382154 +vn -0.382806 0.116264 -0.916484 +vn -0.383748 0.113112 -0.916484 +vn 0.238649 -0.321568 -0.916319 +vn 0.235968 -0.323541 -0.916319 +vn 0.729924 -0.566743 -0.382117 +vn 0.718387 -0.581299 -0.382115 +vn 0.790977 -0.477847 0.382123 +vn 0.781212 -0.493648 0.382125 +vn 0.384521 -0.111863 0.916314 +vn 0.383577 -0.115055 0.916314 +vn -0.236875 0.322384 0.916493 +vn -0.239516 0.320426 0.916493 +vn -0.719472 0.579934 0.382147 +vn -0.730672 0.565755 0.382150 +vn -0.780546 0.494673 -0.382161 +vn -0.790069 0.479318 -0.382159 +vn -0.399497 0.021263 -0.916488 +vn -0.399659 0.017979 -0.916488 +vn 0.308677 -0.255119 -0.916315 +vn 0.306546 -0.257676 -0.916315 +vn 0.844344 -0.375585 -0.382123 +vn 0.836626 -0.392482 -0.382120 +vn 0.882350 -0.274661 0.382126 +vn 0.876651 -0.292339 0.382127 +vn 0.400116 -0.016593 0.916314 +vn 0.399964 -0.019919 0.916315 +vn -0.307148 0.256331 0.916491 +vn -0.309243 0.253797 0.916491 +vn -0.837351 0.390899 0.382152 +vn -0.844833 0.374453 0.382154 +vn -0.876248 0.293508 -0.382155 +vn -0.881820 0.276321 -0.382153 +vn -0.392990 -0.074943 -0.916484 +vn -0.392362 -0.078170 -0.916483 +vn 0.360757 -0.173827 -0.916318 +vn 0.359301 -0.176822 -0.916317 +vn 0.909693 -0.162597 -0.382126 +vn 0.906242 -0.180848 -0.382124 +vn 0.922443 -0.055528 0.382121 +vn 0.921139 -0.074055 0.382124 +vn 0.392454 0.079649 0.916317 +vn 0.393102 0.076383 0.916317 +vn -0.359573 0.175386 0.916486 +vn -0.361003 0.172425 0.916486 +vn -0.906568 0.179140 0.382156 +vn -0.909897 0.161379 0.382158 +vn -0.921026 0.075281 -0.382157 +vn -0.922322 0.057259 -0.382156 +vn -0.363633 -0.166810 -0.916486 +vn -0.362250 -0.169794 -0.916485 +vn 0.391869 -0.082431 -0.916321 +vn 0.391170 -0.085686 -0.916321 +vn 0.922173 0.059825 -0.382124 +vn 0.923190 0.041280 -0.382122 +vn 0.908928 0.166834 0.382121 +vn 0.912097 0.148531 0.382122 +vn 0.361986 0.171260 0.916317 +vn 0.363396 0.168245 0.916317 +vn -0.391099 0.084242 0.916485 +vn -0.391778 0.081024 0.916485 +vn -0.923095 -0.043027 0.382158 +vn -0.922077 -0.061064 0.382159 +vn -0.912276 -0.147330 -0.382161 +vn -0.909222 -0.165139 -0.382159 +vn -0.313132 -0.248995 -0.916488 +vn -0.311075 -0.251561 -0.916488 +vn 0.400214 0.013740 -0.916318 +vn 0.400315 0.010413 -0.916318 +vn 0.881060 0.278775 -0.382123 +vn 0.886485 0.261011 -0.382122 +vn 0.842587 0.379514 0.382122 +vn 0.850044 0.362501 0.382124 +vn 0.310484 0.252912 0.916316 +vn 0.312575 0.250321 0.916317 +vn -0.399889 -0.011809 0.916488 +vn -0.399778 -0.015095 0.916488 +vn -0.885980 -0.262677 0.382153 +vn -0.880674 -0.279949 0.382154 +vn -0.850512 -0.361369 -0.382155 +vn -0.843285 -0.377928 -0.382153 +vn -0.244440 -0.316702 -0.916487 +vn -0.241830 -0.318701 -0.916487 +vn 0.385299 0.109117 -0.916318 +vn 0.386193 0.105911 -0.916318 +vn 0.788741 0.481528 -0.382124 +vn 0.798261 0.465578 -0.382122 +vn 0.727279 0.570130 0.382122 +vn 0.738590 0.555398 0.382124 +vn 0.240935 0.319866 0.916316 +vn 0.243585 0.317852 0.916317 +vn -0.385444 -0.107166 0.916487 +vn -0.384549 -0.110331 0.916487 +vn -0.797372 -0.467075 0.382151 +vn -0.788087 -0.482575 0.382153 +vn -0.739319 -0.554407 -0.382152 +vn -0.728338 -0.568757 -0.382151 +vn -0.161547 -0.365996 -0.916487 +vn -0.158534 -0.367312 -0.916487 +vn 0.347993 0.198153 -0.916317 +vn 0.349628 0.195254 -0.916317 +vn 0.650587 0.656290 -0.382126 +vn 0.663646 0.643082 -0.382125 +vn 0.569702 0.727613 0.382124 +vn 0.584210 0.716015 0.382126 +vn 0.157388 0.368230 0.916316 +vn 0.160443 0.366908 0.916317 +vn -0.348600 -0.196291 0.916487 +vn -0.346974 -0.199149 0.916487 +vn -0.662424 -0.644323 0.382155 +vn -0.649699 -0.657151 0.382157 +vn -0.585155 -0.715227 -0.382156 +vn -0.571060 -0.726531 -0.382155 +vn -0.069271 -0.394012 -0.916491 +vn -0.066031 -0.394568 -0.916491 +vn 0.290458 0.275679 -0.916316 +vn 0.292741 0.273255 -0.916316 +vn 0.474615 0.792921 -0.382123 +vn 0.490457 0.783221 -0.382122 +vn 0.379021 0.842809 0.382122 +vn 0.395882 0.835020 0.382124 +vn 0.064698 0.395188 0.916319 +vn 0.067981 0.394637 0.916319 +vn -0.291492 -0.274013 0.916487 +vn -0.289229 -0.276400 0.916488 +vn -0.488975 -0.784132 0.382152 +vn -0.473549 -0.793543 0.382153 +vn -0.396992 -0.834479 -0.382155 +vn -0.380602 -0.842082 -0.382153 +vn 0.027040 -0.399144 -0.916490 +vn 0.030320 -0.398910 -0.916489 +vn 0.216054 0.337166 -0.916319 +vn 0.218849 0.335360 -0.916318 +vn 0.271061 0.883466 -0.382117 +vn 0.288762 0.877841 -0.382116 +vn 0.166315 0.909023 0.382121 +vn 0.184552 0.905496 0.382123 +vn -0.031764 0.399190 0.916318 +vn -0.028443 0.399439 0.916318 +vn -0.217439 -0.335818 0.916486 +vn -0.214671 -0.337594 0.916486 +vn -0.287108 -0.878368 0.382149 +vn -0.269881 -0.883812 0.382152 +vn -0.185758 -0.905235 -0.382156 +vn -0.168024 -0.908694 -0.382155 +vn 0.121787 -0.381087 -0.916483 +vn 0.124915 -0.380073 -0.916483 +vn 0.129086 0.379073 -0.916319 +vn 0.132234 0.377986 -0.916319 +vn 0.051765 0.922661 -0.382121 +vn 0.070298 0.921436 -0.382119 +vn -0.056061 0.922409 0.382125 +vn -0.037510 0.923349 0.382126 +vn -0.126383 0.380001 0.916311 +vn -0.123220 0.381037 0.916312 +vn -0.130762 -0.378089 0.916488 +vn -0.127650 -0.379150 0.916488 +vn -0.068557 -0.921554 0.382150 +vn -0.050525 -0.922718 0.382151 +vn 0.036279 -0.923384 -0.382160 +vn 0.054327 -0.922499 -0.382158 +vn 0.209443 -0.340865 -0.916485 +vn 0.212238 -0.339132 -0.916485 +vn 0.034603 0.398963 -0.916314 +vn 0.037919 0.398662 -0.916314 +vn -0.170544 0.908238 -0.382125 +vn -0.152256 0.911482 -0.382123 +vn -0.275183 0.882187 0.382126 +vn -0.257396 0.887539 0.382128 +vn -0.213648 0.338716 0.916311 +vn -0.210825 0.340480 0.916311 +vn -0.036483 -0.398391 0.916490 +vn -0.033207 -0.398676 0.916490 +vn 0.153974 -0.911183 0.382149 +vn 0.171759 -0.907997 0.382152 +vn 0.256209 -0.887869 -0.382158 +vn 0.273520 -0.882691 -0.382156 +vn 0.284922 -0.280824 -0.916492 +vn 0.287221 -0.278473 -0.916492 +vn -0.061873 0.395644 -0.916317 +vn -0.058583 0.396146 -0.916317 +vn -0.382946 0.841032 -0.382124 +vn -0.365965 0.848559 -0.382122 +vn -0.478311 0.790697 0.382123 +vn -0.462322 0.800150 0.382125 +vn -0.288501 0.277752 0.916308 +vn -0.286181 0.280140 0.916309 +vn 0.059940 -0.395570 0.916478 +vn 0.063190 -0.395065 0.916478 +vn 0.367556 -0.847858 0.382151 +vn 0.384063 -0.840509 0.382152 +vn 0.461247 -0.800753 -0.382160 +vn 0.476815 -0.791582 -0.382159 +vn 0.343854 -0.204482 -0.916489 +vn 0.345524 -0.201651 -0.916488 +vn -0.154760 0.369342 -0.916317 +vn -0.151684 0.370616 -0.916317 +vn -0.573089 0.724948 -0.382125 +vn -0.558403 0.736320 -0.382123 +vn -0.653638 0.653251 0.382126 +vn -0.640376 0.666256 0.382127 +vn -0.346583 0.200641 0.916310 +vn -0.344903 0.203515 0.916310 +vn 0.152856 -0.369730 0.916480 +vn 0.155888 -0.368459 0.916481 +vn 0.559780 -0.735260 0.382151 +vn 0.574048 -0.724174 0.382153 +vn 0.639477 -0.667103 -0.382156 +vn 0.652398 -0.654473 -0.382153 +vn 0.382805 -0.116263 -0.916484 +vn 0.383748 -0.113113 -0.916484 +vn -0.238659 0.321583 -0.916311 +vn -0.235978 0.323556 -0.916311 +vn -0.729927 0.566734 -0.382125 +vn -0.718390 0.581290 -0.382123 +vn -0.790980 0.477840 0.382127 +vn -0.781215 0.493640 0.382129 +vn -0.384520 0.111863 0.916314 +vn -0.383576 0.115055 0.916314 +vn 0.236880 -0.322391 0.916489 +vn 0.239522 -0.320433 0.916489 +vn 0.719472 -0.579931 0.382152 +vn 0.730672 -0.565754 0.382153 +vn 0.780544 -0.494681 -0.382153 +vn 0.790068 -0.479325 -0.382152 +vn 0.399501 -0.021272 -0.916486 +vn 0.399663 -0.017988 -0.916486 +vn -0.308677 0.255118 -0.916315 +vn -0.306546 0.257676 -0.916315 +vn -0.844346 0.375579 -0.382127 +vn -0.836627 0.392474 -0.382125 +vn -0.882349 0.274669 0.382123 +vn -0.876649 0.292346 0.382125 +vn -0.400112 0.016583 0.916316 +vn -0.399960 0.019910 0.916317 +vn 0.307153 -0.256338 0.916487 +vn 0.309249 -0.253804 0.916487 +vn 0.837352 -0.390904 0.382147 +vn 0.844834 -0.374457 0.382149 +vn 0.876250 -0.293501 -0.382157 +vn 0.881821 -0.276313 -0.382155 +vn 0.392976 0.074959 -0.916488 +vn 0.392347 0.078187 -0.916488 +vn -0.360762 0.173838 -0.916314 +vn -0.359304 0.176831 -0.916314 +vn -0.909693 0.162596 -0.382128 +vn -0.906242 0.180846 -0.382126 +vn -0.922442 0.055537 0.382122 +vn -0.921139 0.074065 0.382123 +vn -0.392451 -0.079659 0.916317 +vn -0.393098 -0.076394 0.916317 +vn 0.359573 -0.175384 0.916487 +vn 0.361002 -0.172423 0.916487 +vn 0.906569 -0.179146 0.382151 +vn 0.909897 -0.161386 0.382153 +vn 0.921027 -0.075280 -0.382154 +vn 0.922324 -0.057260 -0.382152 +vn 0.363616 0.166832 -0.916488 +vn 0.362233 0.169815 -0.916488 +vn -0.391883 0.082458 -0.916312 +vn -0.391185 0.085713 -0.916312 +vn -0.922172 -0.059831 -0.382124 +vn -0.923189 -0.041284 -0.382123 +vn -0.908928 -0.166835 0.382120 +vn -0.912097 -0.148532 0.382122 +vn -0.361986 -0.171261 0.916317 +vn -0.363397 -0.168245 0.916317 +vn 0.391099 -0.084240 0.916485 +vn 0.391778 -0.081023 0.916485 +vn 0.923097 0.043017 0.382153 +vn 0.922079 0.061056 0.382155 +vn 0.912281 0.147316 -0.382153 +vn 0.909227 0.165125 -0.382152 +vn 0.313129 0.249000 -0.916487 +vn 0.311072 0.251566 -0.916487 +vn -0.400219 -0.013728 -0.916317 +vn -0.400320 -0.010400 -0.916316 +vn -0.881059 -0.278780 -0.382122 +vn -0.886485 -0.261016 -0.382120 +vn -0.842586 -0.379515 0.382122 +vn -0.850043 -0.362503 0.382123 +vn -0.310483 -0.252909 0.916317 +vn -0.312574 -0.250319 0.916317 +vn 0.399890 0.011809 0.916487 +vn 0.399779 0.015096 0.916487 +vn 0.885980 0.262675 0.382153 +vn 0.880675 0.279947 0.382154 +vn 0.850514 0.361365 -0.382152 +vn 0.843287 0.377926 -0.382150 +vn 0.244440 0.316702 -0.916487 +vn 0.241829 0.318701 -0.916487 +vn -0.385300 -0.109112 -0.916318 +vn -0.386194 -0.105906 -0.916318 +vn -0.788741 -0.481528 -0.382124 +vn -0.798260 -0.465578 -0.382122 +vn -0.727277 -0.570133 0.382122 +vn -0.738588 -0.555400 0.382124 +vn -0.240934 -0.319865 0.916317 +vn -0.243584 -0.317850 0.916318 +vn 0.385444 0.107165 0.916487 +vn 0.384550 0.110329 0.916487 +vn 0.797373 0.467073 0.382151 +vn 0.788088 0.482573 0.382152 +vn 0.739319 0.554407 -0.382152 +vn 0.728338 0.568757 -0.382151 +vn 0.161547 0.365995 -0.916488 +vn 0.158533 0.367311 -0.916488 +vn -0.347991 -0.198157 -0.916316 +vn -0.349627 -0.195258 -0.916316 +vn -0.650584 -0.656294 -0.382124 +vn -0.663644 -0.643086 -0.382122 +vn -0.569702 -0.727616 0.382119 +vn -0.584210 -0.716018 0.382121 +vn -0.157387 -0.368231 0.916316 +vn -0.160442 -0.366909 0.916317 +vn 0.348597 0.196294 0.916488 +vn 0.346971 0.199152 0.916488 +vn 0.662429 0.644322 0.382149 +vn 0.649705 0.657149 0.382150 +vn 0.585157 0.715228 -0.382152 +vn 0.571062 0.726533 -0.382150 +vn 0.069265 0.394018 -0.916489 +vn 0.066024 0.394575 -0.916489 +vn -0.290455 -0.275684 -0.916316 +vn -0.292738 -0.273260 -0.916315 +vn -0.474620 -0.792918 -0.382122 +vn -0.490461 -0.783220 -0.382120 +vn -0.379012 -0.842814 0.382118 +vn -0.395875 -0.835026 0.382120 +vn -0.064691 -0.395196 0.916316 +vn -0.067974 -0.394644 0.916317 +vn 0.291488 0.274017 0.916488 +vn 0.289225 0.276403 0.916488 +vn 0.488986 0.784125 0.382152 +vn 0.473561 0.793535 0.382154 +vn 0.396985 0.834484 -0.382151 +vn 0.380593 0.842087 -0.382150 +vn -0.027047 0.399150 -0.916487 +vn -0.030327 0.398915 -0.916486 +vn -0.216047 -0.337175 -0.916317 +vn -0.218843 -0.335368 -0.916317 +vn -0.271068 -0.883462 -0.382121 +vn -0.288770 -0.877836 -0.382120 +vn -0.166299 -0.909028 0.382117 +vn -0.184535 -0.905501 0.382118 +vn 0.031763 -0.399190 0.916318 +vn 0.028444 -0.399439 0.916318 +vn 0.217445 0.335810 0.916488 +vn 0.214678 0.337585 0.916488 +vn 0.287116 0.878364 0.382154 +vn 0.269888 0.883809 0.382155 +vn 0.185749 0.905238 -0.382155 +vn 0.168016 0.908696 -0.382153 +vn -0.121788 0.381086 -0.916483 +vn -0.124916 0.380072 -0.916483 +vn -0.129086 -0.379071 -0.916320 +vn -0.132233 -0.377986 -0.916319 +vn -0.051764 -0.922661 -0.382122 +vn -0.070297 -0.921435 -0.382120 +vn 0.056070 -0.922411 0.382118 +vn 0.037520 -0.923351 0.382120 +vn 0.126374 -0.379984 0.916320 +vn 0.123210 -0.381021 0.916320 +vn 0.130767 0.378080 0.916491 +vn 0.127655 0.379141 0.916491 +vn 0.068563 0.921553 0.382151 +vn 0.050532 0.922717 0.382152 +vn -0.036280 0.923385 -0.382158 +vn -0.054327 0.922500 -0.382156 +vn -0.209450 0.340870 -0.916481 +vn -0.212245 0.339138 -0.916481 +vn -0.034601 -0.398962 -0.916314 +vn -0.037918 -0.398661 -0.916314 +vn 0.170539 -0.908237 -0.382128 +vn 0.152251 -0.911482 -0.382125 +vn 0.275191 -0.882190 0.382114 +vn 0.257404 -0.887542 0.382116 +vn 0.213631 -0.338682 0.916327 +vn 0.210809 -0.340447 0.916327 +vn 0.036498 0.398367 0.916500 +vn 0.033223 0.398651 0.916501 +vn -0.153978 0.911185 0.382142 +vn -0.171765 0.908000 0.382143 +vn -0.256210 0.887870 -0.382157 +vn -0.273520 0.882691 -0.382156 +vn -0.284925 0.280823 -0.916491 +vn -0.287223 0.278471 -0.916492 +vn 0.061874 -0.395643 -0.916318 +vn 0.058584 -0.396146 -0.916317 +vn 0.382948 -0.841033 -0.382119 +vn 0.365966 -0.848560 -0.382119 +vn 0.478312 -0.790697 0.382120 +vn 0.462324 -0.800151 0.382120 +vn 0.288479 -0.277712 0.916328 +vn 0.286159 -0.280099 0.916328 +vn -0.059906 0.395525 0.916499 +vn -0.063156 0.395020 0.916499 +vn -0.367561 0.847860 0.382142 +vn -0.384066 0.840511 0.382145 +vn -0.461249 0.800755 -0.382153 +vn -0.476818 0.791584 -0.382150 +vn -0.343844 0.204466 -0.916496 +vn -0.345514 0.201635 -0.916495 +vn 0.154753 -0.369336 -0.916320 +vn 0.151677 -0.370609 -0.916320 +vn 0.573092 -0.724951 -0.382114 +vn 0.558406 -0.736324 -0.382111 +vn 0.653641 -0.653251 0.382121 +vn 0.640379 -0.666255 0.382124 +vn 0.346563 -0.200608 0.916324 +vn 0.344883 -0.203483 0.916324 +vn -0.152836 0.369709 0.916491 +vn -0.155869 0.368439 0.916492 +vn -0.559783 0.735260 0.382148 +vn -0.574051 0.724174 0.382148 +vn -0.639481 0.667102 -0.382151 +vn -0.652402 0.654471 -0.382150 +vn -0.382787 0.116241 -0.916495 +vn -0.383729 0.113090 -0.916495 +vn 0.238642 -0.321571 -0.916320 +vn 0.235962 -0.323546 -0.916319 +vn 0.729931 -0.566734 -0.382116 +vn 0.718394 -0.581291 -0.382114 +vn 0.790980 -0.477848 0.382114 +vn 0.781216 -0.493649 0.382116 +vn 0.384502 -0.111840 0.916324 +vn 0.383558 -0.115032 0.916325 +vn -0.236874 0.322395 0.916489 +vn -0.239515 0.320437 0.916489 +vn -0.719476 0.579929 0.382147 +vn -0.730677 0.565750 0.382149 +vn -0.780547 0.494683 -0.382146 +vn -0.790069 0.479330 -0.382143 +vn -0.399483 0.021260 -0.916494 +vn -0.399645 0.017977 -0.916494 +vn 0.308658 -0.255110 -0.916324 +vn 0.306527 -0.257667 -0.916324 +vn 0.844351 -0.375575 -0.382120 +vn 0.836632 -0.392472 -0.382117 +vn 0.882352 -0.274674 0.382112 +vn 0.876652 -0.292351 0.382114 +vn 0.400100 -0.016580 0.916322 +vn 0.399948 -0.019905 0.916322 +vn -0.307135 0.256329 0.916495 +vn -0.309230 0.253794 0.916496 +vn -0.837356 0.390899 0.382143 +vn -0.844838 0.374455 0.382143 +vn -0.876251 0.293513 -0.382144 +vn -0.881823 0.276322 -0.382144 +vn -0.392961 -0.074961 -0.916495 +vn -0.392331 -0.078189 -0.916495 +vn 0.360740 -0.173829 -0.916324 +vn 0.359284 -0.176823 -0.916324 +vn 0.909697 -0.162594 -0.382120 +vn 0.906246 -0.180843 -0.382119 +vn 0.922445 -0.055530 0.382115 +vn 0.921142 -0.074060 0.382116 +vn 0.392440 0.079651 0.916322 +vn 0.393088 0.076386 0.916322 +vn -0.359549 0.175372 0.916499 +vn -0.360978 0.172412 0.916498 +vn -0.906572 0.179153 0.382140 +vn -0.909901 0.161391 0.382142 +vn -0.921031 0.075278 -0.382145 +vn -0.922328 0.057259 -0.382142 +vn -0.363597 -0.166832 -0.916496 +vn -0.362215 -0.169815 -0.916495 +vn 0.391856 -0.082442 -0.916325 +vn 0.391158 -0.085697 -0.916325 +vn 0.922175 0.059831 -0.382117 +vn 0.923192 0.041283 -0.382115 +vn 0.908928 0.166846 0.382115 +vn 0.912097 0.148545 0.382117 +vn 0.361971 0.171257 0.916323 +vn 0.363382 0.168241 0.916323 +vn -0.391079 0.084242 0.916493 +vn -0.391758 0.081024 0.916494 +vn -0.923101 -0.043022 0.382144 +vn -0.922082 -0.061061 0.382146 +vn -0.912287 -0.147309 -0.382143 +vn -0.909232 -0.165119 -0.382142 +vn -0.313113 -0.248991 -0.916495 +vn -0.311057 -0.251557 -0.916495 +vn 0.400201 0.013728 -0.916325 +vn 0.400302 0.010401 -0.916324 +vn 0.881060 0.278785 -0.382115 +vn 0.886486 0.261022 -0.382113 +vn 0.842588 0.379520 0.382113 +vn 0.850045 0.362507 0.382115 +vn 0.310467 0.252904 0.916324 +vn 0.312558 0.250314 0.916324 +vn -0.399872 -0.011805 0.916495 +vn -0.399761 -0.015091 0.916495 +vn -0.885983 -0.262676 0.382145 +vn -0.880677 -0.279949 0.382147 +vn -0.850518 -0.361363 -0.382147 +vn -0.843290 -0.377924 -0.382146 +vn -0.244424 -0.316693 -0.916495 +vn -0.241813 -0.318691 -0.916495 +vn 0.385287 0.109105 -0.916324 +vn 0.386181 0.105898 -0.916324 +vn 0.788743 0.481530 -0.382117 +vn 0.798262 0.465581 -0.382115 +vn 0.727279 0.570134 0.382115 +vn 0.738591 0.555402 0.382116 +vn 0.240923 0.319854 0.916324 +vn 0.243573 0.317840 0.916324 +vn -0.385428 -0.107156 0.916495 +vn -0.384534 -0.110320 0.916495 +vn -0.797373 -0.467078 0.382144 +vn -0.788088 -0.482579 0.382145 +vn -0.739323 -0.554407 -0.382146 +vn -0.728342 -0.568757 -0.382143 +vn -0.161537 -0.365979 -0.916496 +vn -0.158525 -0.367294 -0.916496 +vn 0.347984 0.198138 -0.916323 +vn 0.349619 0.195239 -0.916323 +vn 0.650583 0.656298 -0.382119 +vn 0.663643 0.643090 -0.382117 +vn 0.569701 0.727617 0.382117 +vn 0.584211 0.716019 0.382119 +vn 0.157373 0.368221 0.916322 +vn 0.160429 0.366900 0.916323 +vn -0.348583 -0.196283 0.916495 +vn -0.346958 -0.199141 0.916495 +vn -0.662427 -0.644327 0.382144 +vn -0.649702 -0.657154 0.382146 +vn -0.585160 -0.715230 -0.382145 +vn -0.571064 -0.726535 -0.382144 +vn -0.069259 -0.394000 -0.916497 +vn -0.066018 -0.394557 -0.916497 +vn 0.290453 0.275663 -0.916323 +vn 0.292735 0.273239 -0.916322 +vn 0.474619 0.792921 -0.382117 +vn 0.490459 0.783223 -0.382115 +vn 0.379017 0.842815 0.382111 +vn 0.395879 0.835026 0.382114 +vn 0.064683 0.395180 0.916324 +vn 0.067965 0.394628 0.916324 +vn -0.291486 -0.273998 0.916494 +vn -0.289224 -0.276384 0.916494 +vn -0.488974 -0.784136 0.382145 +vn -0.473547 -0.793547 0.382147 +vn -0.396992 -0.834482 -0.382148 +vn -0.380602 -0.842084 -0.382147 +vn 0.027046 -0.399125 -0.916498 +vn 0.030326 -0.398890 -0.916497 +vn 0.216047 0.337158 -0.916323 +vn 0.218842 0.335351 -0.916323 +vn 0.271064 0.883467 -0.382113 +vn 0.288767 0.877841 -0.382112 +vn 0.166317 0.909026 0.382114 +vn 0.184552 0.905499 0.382115 +vn -0.031771 0.399177 0.916323 +vn -0.028451 0.399426 0.916324 +vn -0.217445 -0.335792 0.916494 +vn -0.214677 -0.337567 0.916495 +vn -0.287109 -0.878370 0.382145 +vn -0.269882 -0.883814 0.382147 +vn -0.185743 -0.905243 -0.382145 +vn -0.168007 -0.908703 -0.382143 +vn 0.121782 -0.381057 -0.916496 +vn 0.124911 -0.380045 -0.916495 +vn 0.129077 0.379069 -0.916322 +vn 0.132225 0.377982 -0.916322 +vn 0.051767 0.922663 -0.382117 +vn 0.070299 0.921437 -0.382114 +vn -0.056064 0.922412 0.382116 +vn -0.037512 0.923352 0.382119 +vn -0.126383 0.379981 0.916320 +vn -0.123220 0.381017 0.916320 +vn -0.130767 -0.378069 0.916495 +vn -0.127655 -0.379130 0.916496 +vn -0.068557 -0.921556 0.382144 +vn -0.050524 -0.922720 0.382144 +vn 0.036291 -0.923389 -0.382146 +vn 0.054335 -0.922503 -0.382145 +vn 0.209441 -0.340845 -0.916493 +vn 0.212235 -0.339112 -0.916493 +vn 0.034610 0.398944 -0.916322 +vn 0.037925 0.398644 -0.916321 +vn -0.170550 0.908240 -0.382115 +vn -0.152259 0.911485 -0.382115 +vn -0.275182 0.882189 0.382122 +vn -0.257396 0.887542 0.382122 +vn -0.213645 0.338697 0.916319 +vn -0.210821 0.340460 0.916319 +vn -0.036485 -0.398380 0.916494 +vn -0.033208 -0.398667 0.916494 +vn 0.153975 -0.911185 0.382144 +vn 0.171758 -0.907999 0.382147 +vn 0.256215 -0.887873 -0.382147 +vn 0.273528 -0.882694 -0.382143 +vn 0.284926 -0.280821 -0.916492 +vn 0.287225 -0.278471 -0.916491 +vn -0.061863 0.395629 -0.916325 +vn -0.058572 0.396130 -0.916325 +vn -0.382951 0.841034 -0.382113 +vn -0.365971 0.848562 -0.382110 +vn -0.478311 0.790696 0.382122 +vn -0.462321 0.800150 0.382126 +vn -0.288484 0.277718 0.916324 +vn -0.286165 0.280107 0.916324 +vn 0.059914 -0.395533 0.916495 +vn 0.063162 -0.395026 0.916496 +vn 0.367558 -0.847859 0.382147 +vn 0.384066 -0.840510 0.382147 +vn 0.461253 -0.800756 -0.382148 +vn 0.476820 -0.791584 -0.382148 +vn 0.343849 -0.204475 -0.916492 +vn 0.345518 -0.201642 -0.916492 +vn -0.154747 0.369328 -0.916324 +vn -0.151672 0.370602 -0.916324 +vn -0.573094 0.724948 -0.382117 +vn -0.558408 0.736321 -0.382115 +vn -0.653641 0.653252 0.382118 +vn -0.640379 0.666258 0.382120 +vn -0.346569 0.200617 0.916320 +vn -0.344888 0.203490 0.916321 +vn 0.152825 -0.369693 0.916499 +vn 0.155859 -0.368425 0.916499 +vn 0.559784 -0.735261 0.382143 +vn 0.574052 -0.724175 0.382146 +vn 0.639481 -0.667101 -0.382152 +vn 0.652402 -0.654472 -0.382149 +vn 0.382787 -0.116240 -0.916495 +vn 0.383730 -0.113091 -0.916494 +vn -0.238643 0.321572 -0.916319 +vn -0.235962 0.323544 -0.916320 +vn -0.729932 0.566730 -0.382121 +vn -0.718394 0.581287 -0.382119 +vn -0.790981 0.477847 0.382115 +vn -0.781217 0.493646 0.382118 +vn -0.384502 0.111839 0.916324 +vn -0.383559 0.115033 0.916324 +vn 0.236864 -0.322380 0.916497 +vn 0.239505 -0.320422 0.916497 +vn 0.719475 -0.579932 0.382145 +vn 0.730675 -0.565754 0.382146 +vn 0.780548 -0.494679 -0.382149 +vn 0.790072 -0.479322 -0.382149 +vn 0.399479 -0.021251 -0.916496 +vn 0.399641 -0.017967 -0.916496 +vn -0.308663 0.255116 -0.916320 +vn -0.306533 0.257675 -0.916319 +vn -0.844350 0.375575 -0.382121 +vn -0.836631 0.392470 -0.382120 +vn -0.882352 0.274671 0.382115 +vn -0.876652 0.292351 0.382116 +vn -0.400091 0.016563 0.916326 +vn -0.399937 0.019887 0.916327 +vn 0.307139 -0.256336 0.916492 +vn 0.309235 -0.253803 0.916492 +vn 0.837355 -0.390899 0.382144 +vn 0.844837 -0.374452 0.382146 +vn 0.876252 -0.293503 -0.382151 +vn 0.881823 -0.276316 -0.382148 +vn 0.392961 0.074962 -0.916495 +vn 0.392332 0.078188 -0.916494 +vn -0.360740 0.173826 -0.916325 +vn -0.359283 0.176818 -0.916325 +vn -0.909697 0.162597 -0.382117 +vn -0.906246 0.180849 -0.382116 +vn -0.922446 0.055526 0.382114 +vn -0.921142 0.074053 0.382116 +vn -0.392439 -0.079657 0.916322 +vn -0.393087 -0.076391 0.916323 +vn 0.359558 -0.175385 0.916492 +vn 0.360986 -0.172423 0.916493 +vn 0.906572 -0.179147 0.382143 +vn 0.909901 -0.161388 0.382144 +vn 0.921031 -0.075279 -0.382145 +vn 0.922328 -0.057256 -0.382144 +vn 0.363605 0.166823 -0.916494 +vn 0.362221 0.169807 -0.916494 +vn -0.391858 0.082446 -0.916324 +vn -0.391160 0.085701 -0.916324 +vn -0.922176 -0.059831 -0.382115 +vn -0.923193 -0.041284 -0.382113 +vn -0.908929 -0.166848 0.382113 +vn -0.912098 -0.148544 0.382114 +vn -0.361968 -0.171261 0.916324 +vn -0.363378 -0.168246 0.916324 +vn 0.391077 -0.084233 0.916495 +vn 0.391756 -0.081016 0.916496 +vn 0.923101 0.043012 0.382144 +vn 0.922083 0.061053 0.382147 +vn 0.912281 0.147330 -0.382148 +vn 0.909227 0.165137 -0.382147 +vn 0.313107 0.249001 -0.916495 +vn 0.311051 0.251566 -0.916494 +vn -0.400203 -0.013729 -0.916324 +vn -0.400303 -0.010402 -0.916324 +vn -0.881060 -0.278783 -0.382117 +vn -0.886486 -0.261018 -0.382115 +vn -0.842586 -0.379522 0.382115 +vn -0.850042 -0.362511 0.382117 +vn -0.310466 -0.252909 0.916323 +vn -0.312557 -0.250318 0.916323 +vn 0.399874 0.011801 0.916494 +vn 0.399762 0.015087 0.916495 +vn 0.885980 0.262681 0.382149 +vn 0.880675 0.279953 0.382150 +vn 0.850516 0.361364 -0.382150 +vn 0.843289 0.377925 -0.382148 +vn 0.244424 0.316692 -0.916495 +vn 0.241814 0.318690 -0.916495 +vn -0.385292 -0.109102 -0.916322 +vn -0.386186 -0.105896 -0.916322 +vn -0.788739 -0.481535 -0.382119 +vn -0.798259 -0.465585 -0.382117 +vn -0.727279 -0.570133 0.382117 +vn -0.738591 -0.555400 0.382119 +vn -0.240921 -0.319861 0.916322 +vn -0.243571 -0.317847 0.916322 +vn 0.385427 0.107158 0.916495 +vn 0.384533 0.110322 0.916495 +vn 0.797374 0.467076 0.382144 +vn 0.788089 0.482577 0.382145 +vn 0.739320 0.554410 -0.382145 +vn 0.728340 0.568760 -0.382143 +vn 0.161532 0.365986 -0.916494 +vn 0.158519 0.367302 -0.916494 +vn -0.347983 -0.198140 -0.916323 +vn -0.349619 -0.195240 -0.916323 +vn -0.650585 -0.656297 -0.382117 +vn -0.663645 -0.643089 -0.382115 +vn -0.569702 -0.727618 0.382114 +vn -0.584211 -0.716020 0.382117 +vn -0.157375 -0.368217 0.916324 +vn -0.160430 -0.366896 0.916324 +vn 0.348589 0.196278 0.916494 +vn 0.346964 0.199135 0.916494 +vn 0.662422 0.644332 0.382143 +vn 0.649696 0.657161 0.382145 +vn 0.585161 0.715228 -0.382145 +vn 0.571066 0.726533 -0.382144 +vn 0.069256 0.394004 -0.916496 +vn 0.066016 0.394560 -0.916496 +vn -0.290455 -0.275657 -0.916324 +vn -0.292737 -0.273234 -0.916324 +vn -0.474618 -0.792922 -0.382115 +vn -0.490460 -0.783223 -0.382113 +vn -0.379017 -0.842815 0.382112 +vn -0.395879 -0.835026 0.382114 +vn -0.064678 -0.395182 0.916323 +vn -0.067961 -0.394629 0.916324 +vn 0.291486 0.273997 0.916494 +vn 0.289223 0.276384 0.916494 +vn 0.488976 0.784134 0.382148 +vn 0.473552 0.793543 0.382150 +vn 0.396989 0.834483 -0.382150 +vn 0.380596 0.842086 -0.382148 +vn -0.027055 0.399135 -0.916493 +vn -0.030335 0.398900 -0.916492 +vn -0.216046 -0.337156 -0.916324 +vn -0.218842 -0.335349 -0.916324 +vn -0.271076 -0.883461 -0.382119 +vn -0.288777 -0.877835 -0.382117 +vn -0.166293 -0.909032 0.382109 +vn -0.184531 -0.905505 0.382111 +vn 0.031771 -0.399174 0.916325 +vn 0.028452 -0.399424 0.916325 +vn 0.217437 0.335800 0.916493 +vn 0.214670 0.337575 0.916494 +vn 0.287113 0.878367 0.382149 +vn 0.269883 0.883813 0.382150 +vn 0.185747 0.905240 -0.382150 +vn 0.168014 0.908699 -0.382148 +vn -0.121783 0.381057 -0.916496 +vn -0.124910 0.380042 -0.916496 +vn -0.129084 -0.379059 -0.916325 +vn -0.132230 -0.377974 -0.916324 +vn -0.051764 -0.922663 -0.382118 +vn -0.070301 -0.921436 -0.382117 +vn 0.056069 -0.922412 0.382116 +vn 0.037522 -0.923352 0.382116 +vn 0.126384 -0.379981 0.916320 +vn 0.123219 -0.381016 0.916321 +vn 0.130754 0.378084 0.916491 +vn 0.127642 0.379145 0.916491 +vn 0.068563 0.921555 0.382147 +vn 0.050532 0.922718 0.382149 +vn -0.036295 0.923390 -0.382144 +vn -0.054343 0.922505 -0.382142 +vn -0.209431 0.340829 -0.916501 +vn -0.212226 0.339098 -0.916500 +vn -0.034610 -0.398945 -0.916322 +vn -0.037926 -0.398643 -0.916322 +vn 0.170554 -0.908240 -0.382114 +vn 0.152266 -0.911486 -0.382111 +vn 0.275186 -0.882190 0.382118 +vn 0.257398 -0.887542 0.382121 +vn 0.213640 -0.338687 0.916323 +vn 0.210818 -0.340453 0.916323 +vn 0.036477 0.398388 0.916491 +vn 0.033202 0.398673 0.916492 +vn -0.153974 0.911184 0.382146 +vn -0.171761 0.907999 0.382147 +vn -0.256218 0.887872 -0.382146 +vn -0.273527 0.882693 -0.382146 +vn -0.284921 0.280814 -0.916495 +vn -0.287220 0.278463 -0.916495 +vn 0.061869 -0.395635 -0.916321 +vn 0.058579 -0.396138 -0.916321 +vn 0.382953 -0.841032 -0.382115 +vn 0.365972 -0.848560 -0.382114 +vn 0.478315 -0.790698 0.382115 +vn 0.462326 -0.800151 0.382116 +vn 0.288486 -0.277719 0.916323 +vn 0.286166 -0.280105 0.916324 +vn -0.059920 0.395539 0.916492 +vn -0.063169 0.395033 0.916493 +vn -0.367560 0.847859 0.382146 +vn -0.384066 0.840509 0.382149 +vn -0.461251 0.800755 -0.382150 +vn -0.476820 0.791585 -0.382146 +vn -0.343849 0.204474 -0.916492 +vn -0.345519 0.201642 -0.916492 +vn 0.154753 -0.369336 -0.916320 +vn 0.151677 -0.370609 -0.916321 +vn 0.573095 -0.724949 -0.382114 +vn 0.558409 -0.736322 -0.382112 +vn 0.653642 -0.653257 0.382110 +vn 0.640380 -0.666261 0.382113 +vn 0.346569 -0.200615 0.916321 +vn 0.344889 -0.203490 0.916321 +vn -0.152832 0.369701 0.916495 +vn -0.155864 0.368431 0.916496 +vn -0.559785 0.735259 0.382147 +vn -0.574053 0.724173 0.382147 +vn -0.639483 0.667103 -0.382146 +vn -0.652404 0.654472 -0.382146 +vn -0.382787 0.116241 -0.916494 +vn -0.383730 0.113090 -0.916494 +vn 0.238638 -0.321563 -0.916324 +vn 0.235958 -0.323538 -0.916323 +vn 0.729934 -0.566733 -0.382113 +vn 0.718396 -0.581290 -0.382112 +vn 0.790984 -0.477840 0.382117 +vn 0.781219 -0.493644 0.382116 +vn 0.384508 -0.111848 0.916321 +vn 0.383564 -0.115039 0.916321 +vn -0.236869 0.322387 0.916493 +vn -0.239511 0.320430 0.916493 +vn -0.719478 0.579928 0.382145 +vn -0.730678 0.565749 0.382148 +vn -0.780549 0.494678 -0.382148 +vn -0.790072 0.479323 -0.382146 +vn -0.399480 0.021250 -0.916496 +vn -0.399642 0.017967 -0.916495 +vn 0.308659 -0.255109 -0.916324 +vn 0.306527 -0.257665 -0.916324 +vn 0.844352 -0.375567 -0.382124 +vn 0.836633 -0.392465 -0.382121 +vn 0.882353 -0.274667 0.382115 +vn 0.876654 -0.292341 0.382119 +vn 0.400100 -0.016579 0.916322 +vn 0.399948 -0.019906 0.916322 +vn -0.307141 0.256337 0.916491 +vn -0.309236 0.253802 0.916492 +vn -0.837359 0.390886 0.382150 +vn -0.844841 0.374440 0.382151 +vn -0.876250 0.293517 -0.382143 +vn -0.881822 0.276329 -0.382141 +vn -0.392961 -0.074966 -0.916494 +vn -0.392332 -0.078194 -0.916494 +vn 0.360743 -0.173831 -0.916323 +vn 0.359287 -0.176826 -0.916322 +vn 0.909697 -0.162591 -0.382119 +vn 0.906246 -0.180839 -0.382119 +vn 0.922446 -0.055532 0.382112 +vn 0.921143 -0.074064 0.382113 +vn 0.392437 0.079655 0.916323 +vn 0.393084 0.076391 0.916324 +vn -0.359555 0.175376 0.916495 +vn -0.360984 0.172416 0.916495 +vn -0.906571 0.179136 0.382151 +vn -0.909900 0.161375 0.382153 +vn -0.921030 0.075287 -0.382147 +vn -0.922326 0.057265 -0.382146 +vn -0.363601 -0.166831 -0.916494 +vn -0.362218 -0.169814 -0.916494 +vn 0.391854 -0.082439 -0.916326 +vn 0.391156 -0.085693 -0.916326 +vn 0.922177 0.059827 -0.382114 +vn 0.923194 0.041279 -0.382111 +vn 0.908929 0.166847 0.382113 +vn 0.912098 0.148546 0.382114 +vn 0.361970 0.171257 0.916324 +vn 0.363381 0.168241 0.916324 +vn -0.391078 0.084233 0.916495 +vn -0.391756 0.081016 0.916495 +vn -0.923099 -0.043025 0.382148 +vn -0.922081 -0.061064 0.382148 +vn -0.912282 -0.147324 -0.382148 +vn -0.909228 -0.165134 -0.382145 +vn -0.313111 -0.248995 -0.916495 +vn -0.311054 -0.251560 -0.916495 +vn 0.400205 0.013727 -0.916323 +vn 0.400306 0.010399 -0.916323 +vn 0.881061 0.278787 -0.382112 +vn 0.886486 0.261023 -0.382111 +vn 0.842591 0.379516 0.382110 +vn 0.850048 0.362503 0.382112 +vn 0.310465 0.252912 0.916323 +vn 0.312556 0.250322 0.916323 +vn -0.399870 -0.011808 0.916496 +vn -0.399759 -0.015093 0.916496 +vn -0.885983 -0.262682 0.382141 +vn -0.880677 -0.279954 0.382143 +vn -0.850516 -0.361370 -0.382143 +vn -0.843289 -0.377930 -0.382141 +vn -0.244422 -0.316693 -0.916495 +vn -0.241811 -0.318692 -0.916495 +vn 0.385289 0.109106 -0.916323 +vn 0.386184 0.105899 -0.916323 +vn 0.788741 0.481533 -0.382117 +vn 0.798261 0.465583 -0.382114 +vn 0.727277 0.570137 0.382115 +vn 0.738589 0.555404 0.382116 +vn 0.240922 0.319858 0.916323 +vn 0.243572 0.317843 0.916323 +vn -0.385429 -0.107153 0.916495 +vn -0.384535 -0.110317 0.916495 +vn -0.797373 -0.467081 0.382141 +vn -0.788087 -0.482582 0.382143 +vn -0.739322 -0.554410 -0.382143 +vn -0.728341 -0.568759 -0.382141 +vn -0.161534 -0.365983 -0.916495 +vn -0.158521 -0.367299 -0.916495 +vn 0.347985 0.198135 -0.916324 +vn 0.349620 0.195237 -0.916323 +vn 0.650580 0.656302 -0.382117 +vn 0.663640 0.643093 -0.382116 +vn 0.569704 0.727616 0.382115 +vn 0.584212 0.716019 0.382118 +vn 0.157372 0.368220 0.916323 +vn 0.160428 0.366898 0.916323 +vn -0.348585 -0.196284 0.916494 +vn -0.346959 -0.199142 0.916494 +vn -0.662426 -0.644327 0.382144 +vn -0.649702 -0.657154 0.382147 +vn -0.585156 -0.715232 -0.382146 +vn -0.571060 -0.726537 -0.382144 +vn -0.069252 -0.394007 -0.916495 +vn -0.066012 -0.394564 -0.916494 +vn 0.290454 0.275660 -0.916323 +vn 0.292736 0.273236 -0.916323 +vn 0.474616 0.792923 -0.382115 +vn 0.490456 0.783226 -0.382113 +vn 0.379015 0.842815 0.382113 +vn 0.395879 0.835026 0.382114 +vn 0.064682 0.395179 0.916324 +vn 0.067964 0.394627 0.916324 +vn -0.291485 -0.273998 0.916494 +vn -0.289223 -0.276383 0.916495 +vn -0.488977 -0.784134 0.382147 +vn -0.473551 -0.793544 0.382148 +vn -0.396989 -0.834483 -0.382148 +vn -0.380599 -0.842086 -0.382147 +vn 0.027047 -0.399123 -0.916498 +vn 0.030326 -0.398887 -0.916498 +vn 0.216051 0.337153 -0.916324 +vn 0.218846 0.335347 -0.916323 +vn 0.271062 0.883465 -0.382119 +vn 0.288766 0.877839 -0.382117 +vn 0.166309 0.909025 0.382118 +vn 0.184544 0.905499 0.382119 +vn -0.031772 0.399176 0.916324 +vn -0.028452 0.399425 0.916324 +vn -0.217440 -0.335793 0.916495 +vn -0.214672 -0.337569 0.916495 +vn -0.287112 -0.878368 0.382146 +vn -0.269885 -0.883813 0.382148 +vn -0.185745 -0.905242 -0.382147 +vn -0.168009 -0.908702 -0.382144 +vn 0.121780 -0.381052 -0.916498 +vn 0.124908 -0.380040 -0.916498 +vn 0.129080 0.379064 -0.916324 +vn 0.132228 0.377977 -0.916324 +vn 0.051759 0.922664 -0.382116 +vn 0.070292 0.921438 -0.382114 +vn -0.056068 0.922412 0.382117 +vn -0.037516 0.923351 0.382120 +vn -0.126383 0.379980 0.916320 +vn -0.123220 0.381016 0.916321 +vn -0.130763 -0.378072 0.916495 +vn -0.127652 -0.379132 0.916495 +vn -0.068563 -0.921555 0.382147 +vn -0.050531 -0.922719 0.382148 +vn 0.036294 -0.923390 -0.382145 +vn 0.054340 -0.922504 -0.382143 +vn 0.209441 -0.340845 -0.916493 +vn 0.212236 -0.339112 -0.916493 +vn 0.034616 0.398935 -0.916325 +vn 0.037930 0.398636 -0.916325 +vn -0.170551 0.908240 -0.382116 +vn -0.152262 0.911485 -0.382114 +vn -0.275186 0.882190 0.382118 +vn -0.257400 0.887542 0.382119 +vn -0.213651 0.338703 0.916315 +vn -0.210828 0.340466 0.916316 +vn -0.036484 -0.398380 0.916495 +vn -0.033207 -0.398666 0.916495 +vn 0.153966 -0.911183 0.382151 +vn 0.171750 -0.907998 0.382155 +vn 0.256220 -0.887873 -0.382143 +vn 0.273531 -0.882694 -0.382140 +vn 0.284921 -0.280814 -0.916495 +vn 0.287220 -0.278463 -0.916495 +vn -0.061870 0.395637 -0.916321 +vn -0.058578 0.396136 -0.916321 +vn -0.382949 0.841032 -0.382119 +vn -0.365969 0.848560 -0.382117 +vn -0.478316 0.790698 0.382113 +vn -0.462326 0.800151 0.382117 +vn -0.288480 0.277709 0.916328 +vn -0.286162 0.280099 0.916327 +vn 0.059920 -0.395540 0.916492 +vn 0.063168 -0.395033 0.916493 +vn 0.367554 -0.847857 0.382154 +vn 0.384062 -0.840508 0.382155 +vn 0.461254 -0.800756 -0.382144 +vn 0.476822 -0.791585 -0.382144 +vn 0.343845 -0.204466 -0.916496 +vn 0.345514 -0.201634 -0.916495 +vn -0.154758 0.369341 -0.916317 +vn -0.151684 0.370617 -0.916316 +vn -0.573096 0.724949 -0.382113 +vn -0.558409 0.736321 -0.382113 +vn -0.653643 0.653255 0.382112 +vn -0.640381 0.666260 0.382112 +vn -0.346560 0.200601 0.916327 +vn -0.344879 0.203472 0.916328 +vn 0.152832 -0.369700 0.916496 +vn 0.155865 -0.368431 0.916496 +vn 0.559785 -0.735257 0.382150 +vn 0.574053 -0.724170 0.382152 +vn 0.639483 -0.667102 -0.382147 +vn 0.652404 -0.654473 -0.382145 +vn 0.382792 -0.116248 -0.916492 +vn 0.383736 -0.113099 -0.916491 +vn -0.238643 0.321571 -0.916319 +vn -0.235962 0.323544 -0.916320 +vn -0.729936 0.566728 -0.382116 +vn -0.718398 0.581287 -0.382112 +vn -0.790984 0.477843 0.382114 +vn -0.781219 0.493643 0.382116 +vn -0.384502 0.111838 0.916324 +vn -0.383560 0.115032 0.916324 +vn 0.236865 -0.322380 0.916497 +vn 0.239506 -0.320421 0.916497 +vn 0.719478 -0.579927 0.382147 +vn 0.730678 -0.565750 0.382147 +vn 0.780547 -0.494684 -0.382144 +vn 0.790071 -0.479328 -0.382143 +vn 0.399486 -0.021260 -0.916493 +vn 0.399647 -0.017975 -0.916493 +vn -0.308663 0.255116 -0.916321 +vn -0.306532 0.257675 -0.916320 +vn -0.844353 0.375573 -0.382116 +vn -0.836635 0.392466 -0.382116 +vn -0.882355 0.274661 0.382114 +vn -0.876655 0.292341 0.382115 +vn -0.400090 0.016562 0.916326 +vn -0.399937 0.019886 0.916327 +vn 0.307138 -0.256332 0.916493 +vn 0.309234 -0.253799 0.916493 +vn 0.837356 -0.390896 0.382145 +vn 0.844839 -0.374448 0.382148 +vn 0.876251 -0.293510 -0.382147 +vn 0.881823 -0.276322 -0.382145 +vn 0.392959 0.074967 -0.916495 +vn 0.392331 0.078193 -0.916495 +vn -0.360738 0.173824 -0.916326 +vn -0.359281 0.176817 -0.916326 +vn -0.909698 0.162601 -0.382114 +vn -0.906247 0.180852 -0.382112 +vn -0.922446 0.055522 0.382113 +vn -0.921143 0.074049 0.382115 +vn -0.392436 -0.079656 0.916323 +vn -0.393085 -0.076390 0.916324 +vn 0.359556 -0.175381 0.916494 +vn 0.360984 -0.172418 0.916495 +vn 0.906572 -0.179138 0.382149 +vn 0.909900 -0.161380 0.382150 +vn 0.921030 -0.075279 -0.382148 +vn 0.922326 -0.057255 -0.382147 +vn 0.363602 0.166828 -0.916494 +vn 0.362219 0.169812 -0.916494 +vn -0.391857 0.082445 -0.916325 +vn -0.391159 0.085700 -0.916324 +vn -0.922177 -0.059828 -0.382114 +vn -0.923193 -0.041283 -0.382112 +vn -0.908929 -0.166848 0.382113 +vn -0.912098 -0.148544 0.382114 +vn -0.361970 -0.171256 0.916324 +vn -0.363380 -0.168241 0.916324 +vn 0.391077 -0.084233 0.916495 +vn 0.391756 -0.081016 0.916496 +vn 0.923101 0.043018 0.382145 +vn 0.922082 0.061058 0.382147 +vn 0.912281 0.147332 -0.382149 +vn 0.909226 0.165140 -0.382147 +vn 0.313109 0.249001 -0.916494 +vn 0.311053 0.251566 -0.916494 +vn -0.400202 -0.013728 -0.916324 +vn -0.400303 -0.010401 -0.916324 +vn -0.881062 -0.278783 -0.382112 +vn -0.886488 -0.261018 -0.382110 +vn -0.842587 -0.379525 0.382110 +vn -0.850044 -0.362513 0.382113 +vn -0.310469 -0.252904 0.916324 +vn -0.312560 -0.250313 0.916324 +vn 0.399877 0.011800 0.916493 +vn 0.399765 0.015086 0.916494 +vn 0.885982 0.262682 0.382144 +vn 0.880677 0.279954 0.382145 +vn 0.850516 0.361368 -0.382145 +vn 0.843289 0.377929 -0.382143 +vn 0.244424 0.316690 -0.916496 +vn 0.241814 0.318688 -0.916495 +vn -0.385290 -0.109102 -0.916323 +vn -0.386185 -0.105895 -0.916323 +vn -0.788741 -0.481537 -0.382112 +vn -0.798261 -0.465588 -0.382110 +vn -0.727280 -0.570136 0.382110 +vn -0.738592 -0.555403 0.382112 +vn -0.240920 -0.319859 0.916323 +vn -0.243570 -0.317845 0.916323 +vn 0.385427 0.107157 0.916495 +vn 0.384532 0.110321 0.916496 +vn 0.797375 0.467078 0.382141 +vn 0.788089 0.482578 0.382143 +vn 0.739319 0.554413 -0.382143 +vn 0.728339 0.568762 -0.382141 +vn 0.161531 0.365984 -0.916495 +vn 0.158518 0.367301 -0.916495 +vn -0.347982 -0.198141 -0.916324 +vn -0.349618 -0.195241 -0.916323 +vn -0.650586 -0.656297 -0.382115 +vn -0.663646 -0.643090 -0.382113 +vn -0.569702 -0.727619 0.382113 +vn -0.584211 -0.716021 0.382114 +vn -0.157375 -0.368217 0.916324 +vn -0.160430 -0.366896 0.916324 +vn 0.348586 0.196279 0.916495 +vn 0.346961 0.199136 0.916495 +vn 0.662420 0.644332 0.382145 +vn 0.649695 0.657161 0.382148 +vn 0.585157 0.715230 -0.382147 +vn 0.571062 0.726534 -0.382147 +vn 0.069252 0.394007 -0.916495 +vn 0.066012 0.394563 -0.916495 +vn -0.290455 -0.275657 -0.916324 +vn -0.292737 -0.273234 -0.916323 +vn -0.474618 -0.792922 -0.382115 +vn -0.490460 -0.783223 -0.382113 +vn -0.379020 -0.842813 0.382113 +vn -0.395882 -0.835024 0.382115 +vn -0.064675 -0.395185 0.916322 +vn -0.067959 -0.394633 0.916322 +vn 0.291484 0.273999 0.916494 +vn 0.289221 0.276385 0.916495 +vn 0.488976 0.784134 0.382146 +vn 0.473552 0.793544 0.382148 +vn 0.396983 0.834487 -0.382147 +vn 0.380590 0.842091 -0.382144 +vn -0.027055 0.399134 -0.916493 +vn -0.030335 0.398899 -0.916493 +vn -0.216043 -0.337161 -0.916323 +vn -0.218839 -0.335354 -0.916323 +vn -0.271072 -0.883464 -0.382115 +vn -0.288774 -0.877838 -0.382113 +vn -0.166303 -0.909030 0.382111 +vn -0.184541 -0.905502 0.382113 +vn 0.031775 -0.399177 0.916323 +vn 0.028456 -0.399428 0.916323 +vn 0.217440 0.335795 0.916494 +vn 0.214673 0.337569 0.916495 +vn 0.287110 0.878370 0.382145 +vn 0.269879 0.883815 0.382147 +vn 0.185746 0.905241 -0.382147 +vn 0.168014 0.908700 -0.382147 +vn -0.121786 0.381060 -0.916494 +vn -0.124913 0.380046 -0.916494 +vn -0.129084 -0.379058 -0.916325 +vn -0.132230 -0.377974 -0.916325 +vn -0.051757 -0.922666 -0.382110 +vn -0.070293 -0.921440 -0.382110 +vn 0.056067 -0.922413 0.382113 +vn 0.037518 -0.923354 0.382113 +vn 0.126381 -0.379976 0.916322 +vn 0.123218 -0.381012 0.916323 +vn 0.130760 0.378075 0.916494 +vn 0.127648 0.379137 0.916494 +vn 0.068560 0.921555 0.382147 +vn 0.050532 0.922718 0.382150 +vn -0.036287 0.923387 -0.382150 +vn -0.054336 0.922503 -0.382147 +vn -0.209441 0.340843 -0.916494 +vn -0.212237 0.339111 -0.916493 +vn -0.034607 -0.398948 -0.916320 +vn -0.037923 -0.398646 -0.916321 +vn 0.170555 -0.908241 -0.382113 +vn 0.152267 -0.911486 -0.382109 +vn 0.275190 -0.882191 0.382112 +vn 0.257401 -0.887543 0.382115 +vn 0.213638 -0.338683 0.916326 +vn 0.210815 -0.340448 0.916325 +vn 0.036486 0.398376 0.916496 +vn 0.033211 0.398661 0.916497 +vn -0.153973 0.911185 0.382145 +vn -0.171760 0.907999 0.382146 +vn -0.256215 0.887872 -0.382147 +vn -0.273525 0.882694 -0.382147 +vn -0.284922 0.280813 -0.916495 +vn -0.287220 0.278462 -0.916496 +vn 0.061868 -0.395635 -0.916322 +vn 0.058579 -0.396138 -0.916320 +vn 0.382954 -0.841032 -0.382114 +vn 0.365973 -0.848560 -0.382113 +vn 0.478316 -0.790698 0.382114 +vn 0.462327 -0.800152 0.382114 +vn 0.288485 -0.277719 0.916323 +vn 0.286165 -0.280105 0.916324 +vn -0.059914 0.395531 0.916496 +vn -0.063163 0.395026 0.916496 +vn -0.367560 0.847858 0.382147 +vn -0.384066 0.840508 0.382151 +vn -0.461253 0.800755 -0.382148 +vn -0.476822 0.791585 -0.382144 +vn -0.343849 0.204473 -0.916492 +vn -0.345520 0.201642 -0.916491 +vn 0.154743 -0.369320 -0.916328 +vn 0.151667 -0.370593 -0.916328 +vn 0.573097 -0.724949 -0.382110 +vn 0.558411 -0.736322 -0.382108 +vn 0.653644 -0.653252 0.382114 +vn 0.640382 -0.666256 0.382117 +vn 0.346569 -0.200615 0.916321 +vn 0.344889 -0.203490 0.916321 +vn -0.152832 0.369701 0.916495 +vn -0.155865 0.368431 0.916496 +vn -0.559786 0.735260 0.382142 +vn -0.574055 0.724175 0.382140 +vn -0.639484 0.667101 -0.382147 +vn -0.652406 0.654469 -0.382147 +vn -0.382791 0.116244 -0.916492 +vn -0.383733 0.113093 -0.916493 +vn 0.238638 -0.321562 -0.916324 +vn 0.235958 -0.323536 -0.916323 +vn 0.729935 -0.566732 -0.382112 +vn 0.718398 -0.581288 -0.382111 +vn 0.790985 -0.477841 0.382115 +vn 0.781220 -0.493643 0.382116 +vn 0.384505 -0.111844 0.916322 +vn 0.383561 -0.115035 0.916323 +vn -0.236864 0.322379 0.916497 +vn -0.239506 0.320421 0.916497 +vn -0.719478 0.579936 0.382133 +vn -0.730679 0.565757 0.382136 +vn -0.780551 0.494675 -0.382147 +vn -0.790074 0.479322 -0.382144 +vn -0.399479 0.021250 -0.916496 +vn -0.399642 0.017967 -0.916495 +vn 0.308658 -0.255108 -0.916324 +vn 0.306527 -0.257665 -0.916324 +vn 0.844354 -0.375573 -0.382115 +vn 0.836635 -0.392470 -0.382113 +vn 0.882355 -0.274665 0.382111 +vn 0.876656 -0.292342 0.382114 +vn 0.400096 -0.016575 0.916323 +vn 0.399945 -0.019901 0.916323 +vn -0.307135 0.256328 0.916495 +vn -0.309231 0.253794 0.916496 +vn -0.837360 0.390895 0.382139 +vn -0.844841 0.374449 0.382140 +vn -0.876253 0.293512 -0.382140 +vn -0.881825 0.276322 -0.382139 +vn -0.392960 -0.074966 -0.916495 +vn -0.392331 -0.078194 -0.916494 +vn 0.360740 -0.173828 -0.916324 +vn 0.359284 -0.176821 -0.916324 +vn 0.909698 -0.162593 -0.382117 +vn 0.906247 -0.180842 -0.382115 +vn 0.922446 -0.055524 0.382113 +vn 0.921143 -0.074055 0.382114 +vn 0.392437 0.079656 0.916323 +vn 0.393085 0.076391 0.916324 +vn -0.359557 0.175380 0.916494 +vn -0.360986 0.172419 0.916494 +vn -0.906573 0.179140 0.382145 +vn -0.909901 0.161377 0.382148 +vn -0.921031 0.075277 -0.382146 +vn -0.922327 0.057257 -0.382145 +vn -0.363600 -0.166834 -0.916494 +vn -0.362218 -0.169816 -0.916494 +vn 0.391857 -0.082443 -0.916325 +vn 0.391159 -0.085698 -0.916325 +vn 0.922176 0.059830 -0.382116 +vn 0.923193 0.041282 -0.382114 +vn 0.908927 0.166852 0.382115 +vn 0.912096 0.148551 0.382118 +vn 0.361972 0.171254 0.916323 +vn 0.363383 0.168239 0.916323 +vn -0.391083 0.084240 0.916492 +vn -0.391761 0.081022 0.916493 +vn -0.923098 -0.043030 0.382150 +vn -0.922080 -0.061068 0.382151 +vn -0.912282 -0.147321 -0.382149 +vn -0.909228 -0.165132 -0.382147 +vn -0.313114 -0.248995 -0.916494 +vn -0.311058 -0.251561 -0.916494 +vn 0.400203 0.013727 -0.916324 +vn 0.400304 0.010400 -0.916323 +vn 0.881060 0.278785 -0.382114 +vn 0.886486 0.261021 -0.382113 +vn 0.842587 0.379522 0.382113 +vn 0.850044 0.362510 0.382114 +vn 0.310466 0.252908 0.916324 +vn 0.312556 0.250318 0.916324 +vn -0.399874 -0.011807 0.916494 +vn -0.399763 -0.015093 0.916494 +vn -0.885980 -0.262682 0.382148 +vn -0.880674 -0.279955 0.382150 +vn -0.850513 -0.361372 -0.382150 +vn -0.843285 -0.377932 -0.382148 +vn -0.244421 -0.316696 -0.916494 +vn -0.241811 -0.318695 -0.916494 +vn 0.385288 0.109104 -0.916324 +vn 0.386182 0.105898 -0.916324 +vn 0.788742 0.481534 -0.382114 +vn 0.798261 0.465585 -0.382113 +vn 0.727276 0.570140 0.382113 +vn 0.738588 0.555407 0.382114 +vn 0.240921 0.319856 0.916324 +vn 0.243571 0.317841 0.916324 +vn -0.385431 -0.107155 0.916494 +vn -0.384536 -0.110318 0.916494 +vn -0.797369 -0.467083 0.382146 +vn -0.788084 -0.482583 0.382147 +vn -0.739320 -0.554409 -0.382148 +vn -0.728340 -0.568758 -0.382146 +vn -0.161532 -0.365983 -0.916495 +vn -0.158519 -0.367299 -0.916495 +vn 0.347982 0.198137 -0.916324 +vn 0.349618 0.195238 -0.916324 +vn 0.650580 0.656303 -0.382114 +vn 0.663641 0.643095 -0.382112 +vn 0.569702 0.727619 0.382113 +vn 0.584210 0.716021 0.382114 +vn 0.157371 0.368219 0.916324 +vn 0.160427 0.366897 0.916324 +vn -0.348584 -0.196282 0.916495 +vn -0.346958 -0.199141 0.916495 +vn -0.662425 -0.644327 0.382146 +vn -0.649701 -0.657154 0.382148 +vn -0.585156 -0.715231 -0.382147 +vn -0.571060 -0.726536 -0.382146 +vn -0.069249 -0.394010 -0.916494 +vn -0.066008 -0.394567 -0.916493 +vn 0.290450 0.275661 -0.916324 +vn 0.292733 0.273237 -0.916324 +vn 0.474617 0.792924 -0.382112 +vn 0.490457 0.783226 -0.382111 +vn 0.379013 0.842818 0.382109 +vn 0.395877 0.835028 0.382112 +vn 0.064681 0.395176 0.916325 +vn 0.067964 0.394624 0.916326 +vn -0.291485 -0.273997 0.916495 +vn -0.289223 -0.276383 0.916495 +vn -0.488977 -0.784133 0.382149 +vn -0.473550 -0.793544 0.382150 +vn -0.396989 -0.834482 -0.382151 +vn -0.380599 -0.842085 -0.382149 +vn 0.027056 -0.399135 -0.916493 +vn 0.030335 -0.398900 -0.916493 +vn 0.216039 0.337164 -0.916323 +vn 0.218835 0.335358 -0.916322 +vn 0.271067 0.883466 -0.382115 +vn 0.288770 0.877840 -0.382112 +vn 0.166300 0.909030 0.382110 +vn 0.184537 0.905504 0.382111 +vn -0.031772 0.399174 0.916325 +vn -0.028452 0.399423 0.916325 +vn -0.217447 -0.335787 0.916496 +vn -0.214679 -0.337562 0.916496 +vn -0.287108 -0.878371 0.382143 +vn -0.269880 -0.883816 0.382145 +vn -0.185752 -0.905241 -0.382146 +vn -0.168016 -0.908701 -0.382144 +vn 0.121786 -0.381060 -0.916494 +vn 0.124914 -0.380047 -0.916494 +vn 0.129080 0.379063 -0.916324 +vn 0.132227 0.377978 -0.916323 +vn 0.051759 0.922663 -0.382118 +vn 0.070294 0.921437 -0.382115 +vn -0.056072 0.922412 0.382115 +vn -0.037522 0.923352 0.382117 +vn -0.126381 0.379976 0.916322 +vn -0.123218 0.381012 0.916322 +vn -0.130759 -0.378075 0.916494 +vn -0.127647 -0.379137 0.916494 +vn -0.068562 -0.921556 0.382144 +vn -0.050530 -0.922720 0.382146 +vn 0.036292 -0.923390 -0.382143 +vn 0.054339 -0.922505 -0.382141 +vn 0.209439 -0.340840 -0.916495 +vn 0.212234 -0.339107 -0.916495 +vn 0.034612 0.398940 -0.916324 +vn 0.037927 0.398639 -0.916323 +vn -0.170553 0.908239 -0.382117 +vn -0.152264 0.911484 -0.382115 +vn -0.275190 0.882189 0.382116 +vn -0.257403 0.887541 0.382118 +vn -0.213641 0.338687 0.916323 +vn -0.210818 0.340451 0.916324 +vn -0.036476 -0.398387 0.916492 +vn -0.033201 -0.398672 0.916492 +vn 0.153974 -0.911184 0.382146 +vn 0.171760 -0.907999 0.382148 +vn 0.256220 -0.887872 -0.382146 +vn 0.273531 -0.882693 -0.382144 +vn 0.284922 -0.280813 -0.916496 +vn 0.287221 -0.278462 -0.916495 +vn -0.061870 0.395635 -0.916321 +vn -0.058580 0.396136 -0.916321 +vn -0.382953 0.841032 -0.382115 +vn -0.365972 0.848560 -0.382113 +vn -0.478317 0.790696 0.382116 +vn -0.462327 0.800150 0.382118 +vn -0.288488 0.277721 0.916322 +vn -0.286169 0.280109 0.916322 +vn 0.059920 -0.395539 0.916493 +vn 0.063169 -0.395032 0.916493 +vn 0.367562 -0.847857 0.382147 +vn 0.384068 -0.840508 0.382149 +vn 0.461254 -0.800754 -0.382148 +vn 0.476823 -0.791584 -0.382146 +vn 0.343848 -0.204470 -0.916494 +vn 0.345518 -0.201637 -0.916494 +vn -0.154752 0.369330 -0.916323 +vn -0.151677 0.370604 -0.916322 +vn -0.573097 0.724947 -0.382114 +vn -0.558411 0.736320 -0.382112 +vn -0.653645 0.653252 0.382113 +vn -0.640382 0.666257 0.382115 +vn -0.346567 0.200612 0.916322 +vn -0.344886 0.203485 0.916323 +vn 0.152832 -0.369700 0.916495 +vn 0.155865 -0.368431 0.916496 +vn 0.559788 -0.735257 0.382144 +vn 0.574056 -0.724171 0.382146 +vn 0.639484 -0.667100 -0.382148 +vn 0.652405 -0.654470 -0.382147 +vn 0.382785 -0.116235 -0.916496 +vn 0.383728 -0.113085 -0.916496 +vn -0.238639 0.321562 -0.916324 +vn -0.235958 0.323535 -0.916324 +vn -0.729936 0.566730 -0.382113 +vn -0.718398 0.581287 -0.382112 +vn -0.790985 0.477845 0.382110 +vn -0.781220 0.493646 0.382112 +vn -0.384502 0.111839 0.916324 +vn -0.383559 0.115031 0.916325 +vn 0.236864 -0.322379 0.916497 +vn 0.239506 -0.320421 0.916498 +vn 0.719481 -0.579927 0.382141 +vn 0.730681 -0.565749 0.382143 +vn 0.780551 -0.494677 -0.382145 +vn 0.790074 -0.479322 -0.382143 +vn 0.399479 -0.021250 -0.916496 +vn 0.399641 -0.017966 -0.916496 +vn -0.308658 0.255107 -0.916324 +vn -0.306527 0.257665 -0.916324 +vn -0.844354 0.375577 -0.382111 +vn -0.836635 0.392472 -0.382110 +vn -0.882356 0.274663 0.382109 +vn -0.876657 0.292342 0.382111 +vn -0.400097 0.016575 0.916323 +vn -0.399944 0.019900 0.916323 +vn 0.307135 -0.256327 0.916496 +vn 0.309231 -0.253793 0.916496 +vn 0.837358 -0.390898 0.382140 +vn 0.844840 -0.374451 0.382141 +vn 0.876254 -0.293506 -0.382144 +vn 0.881825 -0.276317 -0.382143 +vn 0.392958 0.074969 -0.916495 +vn 0.392330 0.078196 -0.916495 +vn -0.360743 0.173830 -0.916323 +vn -0.359286 0.176823 -0.916323 +vn -0.909698 0.162596 -0.382115 +vn -0.906247 0.180847 -0.382112 +vn -0.922446 0.055519 0.382113 +vn -0.921144 0.074048 0.382114 +vn -0.392440 -0.079651 0.916322 +vn -0.393088 -0.076386 0.916323 +vn 0.359554 -0.175376 0.916496 +vn 0.360983 -0.172414 0.916496 +vn 0.906574 -0.179146 0.382140 +vn 0.909902 -0.161385 0.382142 +vn 0.921032 -0.075273 -0.382145 +vn 0.922328 -0.057251 -0.382143 +vn 0.363597 0.166832 -0.916496 +vn 0.362215 0.169815 -0.916495 +vn -0.391863 0.082450 -0.916322 +vn -0.391164 0.085705 -0.916321 +vn -0.922174 -0.059834 -0.382119 +vn -0.923191 -0.041287 -0.382118 +vn -0.908926 -0.166853 0.382118 +vn -0.912095 -0.148550 0.382120 +vn -0.361971 -0.171259 0.916323 +vn -0.363381 -0.168244 0.916323 +vn 0.391077 -0.084234 0.916495 +vn 0.391755 -0.081017 0.916495 +vn 0.923102 0.043023 0.382141 +vn 0.922084 0.061063 0.382143 +vn 0.912284 0.147328 -0.382143 +vn 0.909230 0.165136 -0.382141 +vn 0.313107 0.248997 -0.916496 +vn 0.311051 0.251562 -0.916496 +vn -0.400206 -0.013727 -0.916322 +vn -0.400307 -0.010400 -0.916322 +vn -0.881058 -0.278787 -0.382119 +vn -0.886484 -0.261022 -0.382117 +vn -0.842584 -0.379524 0.382118 +vn -0.850041 -0.362513 0.382119 +vn -0.310467 -0.252911 0.916322 +vn -0.312558 -0.250321 0.916322 +vn 0.399872 0.011802 0.916495 +vn 0.399760 0.015089 0.916495 +vn 0.885983 0.262684 0.382141 +vn 0.880677 0.279957 0.382143 +vn 0.850518 0.361370 -0.382141 +vn 0.843290 0.377931 -0.382139 +vn 0.244422 0.316693 -0.916495 +vn 0.241811 0.318692 -0.916495 +vn -0.385290 -0.109104 -0.916323 +vn -0.386184 -0.105898 -0.916323 +vn -0.788740 -0.481538 -0.382114 +vn -0.798259 -0.465588 -0.382113 +vn -0.727277 -0.570139 0.382112 +vn -0.738589 -0.555405 0.382115 +vn -0.240921 -0.319859 0.916323 +vn -0.243571 -0.317844 0.916323 +vn 0.385428 0.107156 0.916495 +vn 0.384533 0.110320 0.916495 +vn 0.797372 0.467081 0.382143 +vn 0.788086 0.482581 0.382145 +vn 0.739318 0.554413 -0.382145 +vn 0.728337 0.568762 -0.382144 +vn 0.161529 0.365986 -0.916495 +vn 0.158516 0.367302 -0.916494 +vn -0.347981 -0.198142 -0.916324 +vn -0.349617 -0.195242 -0.916323 +vn -0.650582 -0.656303 -0.382112 +vn -0.663642 -0.643095 -0.382110 +vn -0.569700 -0.727622 0.382110 +vn -0.584209 -0.716024 0.382112 +vn -0.157373 -0.368219 0.916324 +vn -0.160428 -0.366897 0.916324 +vn 0.348586 0.196280 0.916494 +vn 0.346961 0.199138 0.916494 +vn 0.662419 0.644333 0.382148 +vn 0.649693 0.657161 0.382150 +vn 0.585155 0.715231 -0.382150 +vn 0.571059 0.726536 -0.382148 +vn 0.069249 0.394010 -0.916494 +vn 0.066009 0.394567 -0.916493 +vn -0.290453 -0.275662 -0.916323 +vn -0.292735 -0.273239 -0.916323 +vn -0.474611 -0.792927 -0.382114 +vn -0.490453 -0.783228 -0.382112 +vn -0.379015 -0.842815 0.382113 +vn -0.395878 -0.835027 0.382114 +vn -0.064678 -0.395183 0.916323 +vn -0.067961 -0.394631 0.916323 +vn 0.291485 0.273997 0.916495 +vn 0.289223 0.276383 0.916495 +vn 0.488972 0.784137 0.382146 +vn 0.473547 0.793547 0.382147 +vn 0.396987 0.834484 -0.382148 +vn 0.380596 0.842087 -0.382147 +vn -0.027053 0.399131 -0.916495 +vn -0.030333 0.398895 -0.916495 +vn -0.216044 -0.337162 -0.916322 +vn -0.218840 -0.335355 -0.916322 +vn -0.271060 -0.883467 -0.382115 +vn -0.288762 -0.877842 -0.382113 +vn -0.166303 -0.909028 0.382114 +vn -0.184540 -0.905501 0.382116 +vn 0.031774 -0.399178 0.916323 +vn 0.028455 -0.399428 0.916323 +vn 0.217442 0.335789 0.916496 +vn 0.214675 0.337564 0.916496 +vn 0.287111 0.878369 0.382145 +vn 0.269883 0.883814 0.382148 +vn 0.185742 0.905242 -0.382149 +vn 0.168007 0.908701 -0.382147 +vn -0.121784 0.381055 -0.916497 +vn -0.124912 0.380042 -0.916496 +vn -0.129077 -0.379068 -0.916323 +vn -0.132223 -0.377982 -0.916322 +vn -0.051756 -0.922663 -0.382117 +vn -0.070290 -0.921438 -0.382115 +vn 0.056073 -0.922411 0.382117 +vn 0.037523 -0.923351 0.382119 +vn 0.126382 -0.379976 0.916322 +vn 0.123218 -0.381013 0.916322 +vn 0.130765 0.378067 0.916497 +vn 0.127653 0.379128 0.916497 +vn 0.068557 0.921555 0.382147 +vn 0.050526 0.922719 0.382149 +vn -0.036293 0.923388 -0.382149 +vn -0.054340 0.922502 -0.382147 +vn -0.209442 0.340843 -0.916493 +vn -0.212237 0.339111 -0.916493 +vn -0.034608 -0.398943 -0.916322 +vn -0.037924 -0.398643 -0.916322 +vn 0.170553 -0.908239 -0.382118 +vn 0.152264 -0.911484 -0.382116 +vn 0.275192 -0.882188 0.382118 +vn 0.257405 -0.887540 0.382120 +vn 0.213642 -0.338687 0.916323 +vn 0.210819 -0.340451 0.916323 +vn 0.036486 0.398375 0.916497 +vn 0.033210 0.398661 0.916497 +vn -0.153982 0.911184 0.382143 +vn -0.171768 0.907999 0.382144 +vn -0.256217 0.887871 -0.382150 +vn -0.273527 0.882692 -0.382149 +vn -0.284925 0.280817 -0.916493 +vn -0.287223 0.278466 -0.916493 +vn 0.061868 -0.395631 -0.916323 +vn 0.058577 -0.396132 -0.916323 +vn 0.382953 -0.841031 -0.382117 +vn 0.365972 -0.848559 -0.382116 +vn 0.478318 -0.790695 0.382116 +vn 0.462329 -0.800149 0.382118 +vn 0.288484 -0.277713 0.916326 +vn 0.286165 -0.280100 0.916326 +vn -0.059915 0.395531 0.916496 +vn -0.063164 0.395025 0.916496 +vn -0.367565 0.847858 0.382143 +vn -0.384071 0.840508 0.382145 +vn -0.461255 0.800753 -0.382150 +vn -0.476823 0.791583 -0.382148 +vn -0.343848 0.204469 -0.916494 +vn -0.345518 0.201637 -0.916493 +vn 0.154752 -0.369330 -0.916323 +vn 0.151677 -0.370604 -0.916323 +vn 0.573098 -0.724946 -0.382114 +vn 0.558412 -0.736319 -0.382112 +vn 0.653645 -0.653252 0.382113 +vn 0.640383 -0.666257 0.382115 +vn 0.346563 -0.200602 0.916326 +vn 0.344883 -0.203476 0.916326 +vn -0.152830 0.369696 0.916498 +vn -0.155863 0.368427 0.916498 +vn -0.559788 0.735257 0.382144 +vn -0.574057 0.724171 0.382146 +vn -0.639485 0.667100 -0.382147 +vn -0.652407 0.654470 -0.382145 +vn -0.382788 0.116239 -0.916494 +vn -0.383731 0.113089 -0.916494 +vn 0.238642 -0.321566 -0.916322 +vn 0.235961 -0.323539 -0.916321 +vn 0.729936 -0.566729 -0.382115 +vn 0.718399 -0.581286 -0.382113 +vn 0.790984 -0.477844 0.382112 +vn 0.781219 -0.493645 0.382114 +vn 0.384503 -0.111839 0.916324 +vn 0.383559 -0.115030 0.916324 +vn -0.236863 0.322375 0.916499 +vn -0.239505 0.320416 0.916499 +vn -0.719480 0.579926 0.382144 +vn -0.730681 0.565748 0.382146 +vn -0.780550 0.494678 -0.382146 +vn -0.790073 0.479322 -0.382144 +vn -0.399480 0.021250 -0.916496 +vn -0.399642 0.017966 -0.916495 +vn 0.308661 -0.255109 -0.916323 +vn 0.306530 -0.257667 -0.916323 +vn 0.844352 -0.375573 -0.382117 +vn 0.836634 -0.392469 -0.382116 +vn 0.882354 -0.274664 0.382114 +vn 0.876655 -0.292342 0.382115 +vn 0.400097 -0.016572 0.916323 +vn 0.399944 -0.019898 0.916323 +vn -0.307136 0.256325 0.916496 +vn -0.309232 0.253792 0.916496 +vn -0.837358 0.390891 0.382147 +vn -0.844840 0.374443 0.382148 +vn -0.876252 0.293506 -0.382147 +vn -0.881824 0.276318 -0.382145 +vn -0.392959 -0.074969 -0.916495 +vn -0.392331 -0.078196 -0.916495 +vn 0.360742 -0.173827 -0.916324 +vn 0.359285 -0.176820 -0.916324 +vn 0.909698 -0.162596 -0.382115 +vn 0.906247 -0.180846 -0.382114 +vn 0.922446 -0.055521 0.382113 +vn 0.921143 -0.074050 0.382115 +vn 0.392434 0.079660 0.916324 +vn 0.393082 0.076395 0.916324 +vn -0.359557 0.175378 0.916494 +vn -0.360986 0.172416 0.916494 +vn -0.906573 0.179137 0.382147 +vn -0.909901 0.161378 0.382148 +vn -0.921031 0.075275 -0.382147 +vn -0.922327 0.057252 -0.382146 +vn -0.363600 -0.166831 -0.916495 +vn -0.362218 -0.169813 -0.916494 +vn 0.391858 -0.082444 -0.916324 +vn 0.391160 -0.085698 -0.916324 +vn 0.922176 0.059832 -0.382114 +vn 0.923193 0.041285 -0.382112 +vn 0.908929 0.166850 0.382112 +vn 0.912098 0.148547 0.382114 +vn 0.361968 0.171260 0.916324 +vn 0.363379 0.168244 0.916324 +vn -0.391079 0.084235 0.916494 +vn -0.391758 0.081017 0.916495 +vn -0.923100 -0.043026 0.382146 +vn -0.922081 -0.061065 0.382148 +vn -0.912281 -0.147331 -0.382148 +vn -0.909227 -0.165140 -0.382146 +vn -0.313110 -0.248997 -0.916495 +vn -0.311053 -0.251562 -0.916495 +vn 0.400204 0.013728 -0.916323 +vn 0.400305 0.010401 -0.916323 +vn 0.881061 0.278788 -0.382112 +vn 0.886487 0.261023 -0.382110 +vn 0.842588 0.379523 0.382110 +vn 0.850045 0.362511 0.382112 +vn 0.310466 0.252909 0.916323 +vn 0.312557 0.250319 0.916324 +vn -0.399873 -0.011804 0.916494 +vn -0.399762 -0.015090 0.916495 +vn -0.885980 -0.262687 0.382144 +vn -0.880675 -0.279959 0.382145 +vn -0.850514 -0.361373 -0.382146 +vn -0.843287 -0.377933 -0.382143 +vn -0.244422 -0.316693 -0.916495 +vn -0.241812 -0.318692 -0.916495 +vn 0.385290 0.109105 -0.916323 +vn 0.386184 0.105899 -0.916323 +vn 0.788738 0.481538 -0.382117 +vn 0.798258 0.465588 -0.382114 +vn 0.727276 0.570138 0.382116 +vn 0.738588 0.555405 0.382116 +vn 0.240920 0.319860 0.916323 +vn 0.243570 0.317845 0.916323 +vn -0.385428 -0.107157 0.916495 +vn -0.384534 -0.110321 0.916495 +vn -0.797372 -0.467083 0.382141 +vn -0.788086 -0.482583 0.382143 +vn -0.739319 -0.554413 -0.382143 +vn -0.728339 -0.568762 -0.382141 +vn -0.161531 -0.365986 -0.916495 +vn -0.158517 -0.367301 -0.916494 +vn 0.347983 0.198141 -0.916323 +vn 0.349619 0.195241 -0.916323 +vn 0.650578 0.656302 -0.382121 +vn 0.663638 0.643094 -0.382120 +vn 0.569699 0.727618 0.382120 +vn 0.584207 0.716020 0.382122 +vn 0.157372 0.368221 0.916323 +vn 0.160427 0.366900 0.916323 +vn -0.348584 -0.196283 0.916494 +vn -0.346959 -0.199142 0.916495 +vn -0.662420 -0.644333 0.382145 +vn -0.649695 -0.657160 0.382148 +vn -0.585155 -0.715232 -0.382147 +vn -0.571059 -0.726537 -0.382146 +vn -0.069249 -0.394009 -0.916494 +vn -0.066009 -0.394566 -0.916494 +vn 0.290452 0.275658 -0.916324 +vn 0.292734 0.273235 -0.916324 +vn 0.474609 0.792926 -0.382119 +vn 0.490451 0.783227 -0.382117 +vn 0.379015 0.842813 0.382118 +vn 0.395878 0.835024 0.382120 +vn 0.064679 0.395180 0.916324 +vn 0.067961 0.394628 0.916324 +vn -0.291481 -0.274002 0.916494 +vn -0.289219 -0.276388 0.916494 +vn -0.488972 -0.784136 0.382148 +vn -0.473547 -0.793546 0.382150 +vn -0.396984 -0.834485 -0.382150 +vn -0.380592 -0.842088 -0.382148 +vn 0.027055 -0.399131 -0.916495 +vn 0.030334 -0.398896 -0.916494 +vn 0.216043 0.337158 -0.916324 +vn 0.218839 0.335351 -0.916324 +vn 0.271060 0.883466 -0.382119 +vn 0.288761 0.877840 -0.382117 +vn 0.166300 0.909028 0.382117 +vn 0.184537 0.905501 0.382119 +vn -0.031774 0.399176 0.916324 +vn -0.028455 0.399425 0.916324 +vn -0.217439 -0.335794 0.916495 +vn -0.214671 -0.337569 0.916495 +vn -0.287109 -0.878369 0.382146 +vn -0.269881 -0.883814 0.382148 +vn -0.185742 -0.905242 -0.382147 +vn -0.168007 -0.908702 -0.382146 +vn 0.121787 -0.381059 -0.916495 +vn 0.124915 -0.380046 -0.916494 +vn 0.129078 0.379065 -0.916323 +vn 0.132225 0.377980 -0.916323 +vn 0.051759 0.922662 -0.382120 +vn 0.070292 0.921436 -0.382118 +vn -0.056076 0.922411 0.382117 +vn -0.037526 0.923351 0.382118 +vn -0.126381 0.379974 0.916323 +vn -0.123218 0.381010 0.916323 +vn -0.130760 -0.378073 0.916495 +vn -0.127648 -0.379134 0.916495 +vn -0.068559 -0.921555 0.382146 +vn -0.050527 -0.922719 0.382148 +vn 0.036294 -0.923388 -0.382147 +vn 0.054341 -0.922503 -0.382146 +vn 0.209442 -0.340841 -0.916494 +vn 0.212236 -0.339108 -0.916494 +vn 0.034610 0.398941 -0.916323 +vn 0.037925 0.398641 -0.916323 +vn -0.170554 0.908238 -0.382118 +vn -0.152265 0.911484 -0.382117 +vn -0.275193 0.882188 0.382117 +vn -0.257406 0.887540 0.382119 +vn -0.213642 0.338687 0.916323 +vn -0.210818 0.340451 0.916324 +vn -0.036481 -0.398381 0.916494 +vn -0.033206 -0.398666 0.916495 +vn 0.153978 -0.911184 0.382145 +vn 0.171764 -0.907999 0.382146 +vn 0.256220 -0.887871 -0.382148 +vn 0.273531 -0.882692 -0.382147 +vn 0.284925 -0.280816 -0.916493 +vn 0.287224 -0.278465 -0.916493 +vn -0.061870 0.395633 -0.916322 +vn -0.058579 0.396134 -0.916322 +vn -0.382953 0.841031 -0.382117 +vn -0.365973 0.848559 -0.382115 +vn -0.478319 0.790695 0.382115 +vn -0.462330 0.800149 0.382117 +vn -0.288486 0.277717 0.916324 +vn -0.286167 0.280105 0.916324 +vn 0.059916 -0.395533 0.916495 +vn 0.063165 -0.395026 0.916496 +vn 0.367566 -0.847858 0.382142 +vn 0.384073 -0.840508 0.382144 +vn 0.461256 -0.800753 -0.382150 +vn 0.476824 -0.791582 -0.382148 +vn 0.343849 -0.204469 -0.916493 +vn 0.345519 -0.201636 -0.916493 +vn -0.154751 0.369328 -0.916324 +vn -0.151676 0.370603 -0.916323 +vn -0.573098 0.724945 -0.382118 +vn -0.558412 0.736318 -0.382116 +vn -0.653646 0.653250 0.382114 +vn -0.640384 0.666255 0.382116 +vn -0.346564 0.200605 0.916325 +vn -0.344884 0.203479 0.916325 +vn 0.152834 -0.369701 0.916495 +vn 0.155867 -0.368432 0.916495 +vn 0.559790 -0.735256 0.382143 +vn 0.574058 -0.724170 0.382145 +vn 0.639485 -0.667099 -0.382148 +vn 0.652407 -0.654469 -0.382146 +vn 0.382788 -0.116237 -0.916495 +vn 0.383731 -0.113087 -0.916494 +vn -0.238641 0.321562 -0.916323 +vn -0.235960 0.323535 -0.916323 +vn -0.729936 0.566727 -0.382119 +vn -0.718398 0.581284 -0.382117 +vn -0.790985 0.477840 0.382115 +vn -0.781220 0.493641 0.382117 +vn -0.384504 0.111839 0.916324 +vn -0.383560 0.115031 0.916324 +vn 0.236871 -0.322384 0.916494 +vn 0.239512 -0.320426 0.916494 +vn 0.719481 -0.579924 0.382146 +vn 0.730681 -0.565746 0.382148 +vn 0.780550 -0.494675 -0.382150 +vn 0.790073 -0.479319 -0.382149 +vn 0.399483 -0.021255 -0.916494 +vn 0.399645 -0.017971 -0.916494 +vn -0.308663 0.255109 -0.916322 +vn -0.306532 0.257667 -0.916322 +vn -0.844353 0.375572 -0.382119 +vn -0.836634 0.392467 -0.382117 +vn -0.882355 0.274659 0.382115 +vn -0.876656 0.292338 0.382117 +vn -0.400099 0.016575 0.916322 +vn -0.399947 0.019901 0.916322 +vn 0.307139 -0.256329 0.916494 +vn 0.309235 -0.253796 0.916494 +vn 0.837358 -0.390889 0.382147 +vn 0.844840 -0.374442 0.382149 +vn 0.876253 -0.293499 -0.382151 +vn 0.881825 -0.276311 -0.382149 +vn 0.392959 0.074966 -0.916495 +vn 0.392331 0.078194 -0.916495 +vn -0.360743 0.173826 -0.916324 +vn -0.359286 0.176819 -0.916323 +vn -0.909698 0.162593 -0.382116 +vn -0.906247 0.180844 -0.382114 +vn -0.922446 0.055517 0.382114 +vn -0.921143 0.074045 0.382116 +vn -0.392438 -0.079656 0.916323 +vn -0.393086 -0.076391 0.916323 +vn 0.359557 -0.175377 0.916494 +vn 0.360986 -0.172416 0.916494 +vn 0.906573 -0.179138 0.382146 +vn 0.909901 -0.161378 0.382148 +vn 0.921031 -0.075271 -0.382148 +vn 0.922327 -0.057250 -0.382146 +vn 0.363599 0.166830 -0.916495 +vn 0.362217 0.169813 -0.916495 +vn -0.391861 0.082445 -0.916323 +vn -0.391163 0.085700 -0.916323 +vn -0.922175 -0.059836 -0.382117 +vn -0.923192 -0.041289 -0.382115 +vn -0.908927 -0.166853 0.382115 +vn -0.912096 -0.148551 0.382117 +vn -0.361971 -0.171260 0.916323 +vn -0.363382 -0.168244 0.916323 +vn 0.391077 -0.084232 0.916495 +vn 0.391756 -0.081015 0.916496 +vn 0.923101 0.043023 0.382144 +vn 0.922083 0.061064 0.382145 +vn 0.912282 0.147332 -0.382145 +vn 0.909228 0.165140 -0.382143 +vn 0.313110 0.248997 -0.916495 +vn 0.311054 0.251563 -0.916494 +vn -0.400204 -0.013729 -0.916323 +vn -0.400305 -0.010401 -0.916323 +vn -0.881059 -0.278789 -0.382114 +vn -0.886485 -0.261025 -0.382113 +vn -0.842586 -0.379524 0.382112 +vn -0.850043 -0.362512 0.382115 +vn -0.310466 -0.252908 0.916323 +vn -0.312558 -0.250318 0.916324 +vn 0.399872 0.011807 0.916495 +vn 0.399761 0.015093 0.916495 +vn 0.885982 0.262687 0.382141 +vn 0.880676 0.279959 0.382143 +vn 0.850514 0.361374 -0.382145 +vn 0.843287 0.377934 -0.382144 +vn 0.244423 0.316694 -0.916495 +vn 0.241812 0.318693 -0.916494 +vn -0.385286 -0.109104 -0.916325 +vn -0.386180 -0.105898 -0.916324 +vn -0.788740 -0.481540 -0.382110 +vn -0.798260 -0.465591 -0.382108 +vn -0.727277 -0.570142 0.382108 +vn -0.738589 -0.555409 0.382110 +vn -0.240917 -0.319857 0.916325 +vn -0.243568 -0.317842 0.916325 +vn 0.385429 0.107159 0.916494 +vn 0.384534 0.110323 0.916495 +vn 0.797370 0.467083 0.382143 +vn 0.788085 0.482584 0.382145 +vn 0.739317 0.554414 -0.382145 +vn 0.728337 0.568763 -0.382143 +vn 0.161531 0.365984 -0.916495 +vn 0.158518 0.367300 -0.916495 +vn -0.347980 -0.198140 -0.916324 +vn -0.349616 -0.195241 -0.916324 +vn -0.650580 -0.656305 -0.382112 +vn -0.663640 -0.643097 -0.382110 +vn -0.569699 -0.727622 0.382111 +vn -0.584208 -0.716025 0.382112 +vn -0.157370 -0.368218 0.916324 +vn -0.160425 -0.366896 0.916325 +vn 0.348585 0.196285 0.916494 +vn 0.346959 0.199143 0.916494 +vn 0.662419 0.644335 0.382144 +vn 0.649694 0.657163 0.382145 +vn 0.585155 0.715235 -0.382143 +vn 0.571059 0.726539 -0.382141 +vn 0.069251 0.394006 -0.916495 +vn 0.066010 0.394563 -0.916495 +vn -0.290452 -0.275660 -0.916324 +vn -0.292734 -0.273237 -0.916323 +vn -0.474611 -0.792926 -0.382116 +vn -0.490452 -0.783228 -0.382114 +vn -0.379014 -0.842815 0.382114 +vn -0.395877 -0.835026 0.382116 +vn -0.064677 -0.395182 0.916323 +vn -0.067960 -0.394630 0.916324 +vn 0.291481 0.274003 0.916494 +vn 0.289218 0.276388 0.916495 +vn 0.488973 0.784139 0.382140 +vn 0.473548 0.793549 0.382142 +vn 0.396986 0.834488 -0.382142 +vn 0.380594 0.842091 -0.382141 +vn -0.027055 0.399130 -0.916495 +vn -0.030334 0.398895 -0.916495 +vn -0.216042 -0.337161 -0.916323 +vn -0.218838 -0.335354 -0.916323 +vn -0.271060 -0.883467 -0.382117 +vn -0.288762 -0.877841 -0.382115 +vn -0.166301 -0.909028 0.382115 +vn -0.184538 -0.905501 0.382117 +vn 0.031777 -0.399179 0.916322 +vn 0.028457 -0.399429 0.916323 +vn 0.217438 0.335795 0.916495 +vn 0.214671 0.337570 0.916495 +vn 0.287107 0.878372 0.382142 +vn 0.269878 0.883817 0.382144 +vn 0.185744 0.905243 -0.382145 +vn 0.168010 0.908702 -0.382143 +vn -0.121786 0.381059 -0.916494 +vn -0.124914 0.380046 -0.916494 +vn -0.129076 -0.379067 -0.916323 +vn -0.132223 -0.377982 -0.916322 +vn -0.051758 -0.922663 -0.382118 +vn -0.070292 -0.921437 -0.382116 +vn 0.056077 -0.922412 0.382115 +vn 0.037526 -0.923352 0.382117 +vn 0.126382 -0.379974 0.916323 +vn 0.123219 -0.381011 0.916323 +vn 0.130760 0.378074 0.916494 +vn 0.127647 0.379135 0.916495 +vn 0.068556 0.921555 0.382146 +vn 0.050525 0.922719 0.382148 +vn -0.036293 0.923388 -0.382148 +vn -0.054340 0.922503 -0.382146 +vn -0.209442 0.340843 -0.916494 +vn -0.212237 0.339111 -0.916493 +vn -0.034608 -0.398943 -0.916322 +vn -0.037924 -0.398642 -0.916322 +vn 0.170553 -0.908239 -0.382119 +vn 0.152264 -0.911484 -0.382117 +vn 0.275194 -0.882189 0.382114 +vn 0.257408 -0.887541 0.382116 +vn 0.213642 -0.338687 0.916323 +vn 0.210818 -0.340451 0.916324 +vn 0.036480 0.398380 0.916495 +vn 0.033205 0.398666 0.916495 +vn -0.153979 0.911183 0.382146 +vn -0.171764 0.907998 0.382147 +vn -0.256219 0.887871 -0.382148 +vn -0.273530 0.882692 -0.382146 +vn -0.284923 0.280815 -0.916494 +vn -0.287222 0.278464 -0.916494 +vn 0.061868 -0.395631 -0.916324 +vn 0.058577 -0.396132 -0.916323 +vn 0.382954 -0.841031 -0.382116 +vn 0.365973 -0.848559 -0.382114 +vn 0.478319 -0.790695 0.382115 +vn 0.462330 -0.800149 0.382117 +vn 0.288487 -0.277719 0.916323 +vn 0.286168 -0.280107 0.916323 +vn -0.059920 0.395536 0.916494 +vn -0.063168 0.395029 0.916494 +vn -0.367564 0.847858 0.382144 +vn -0.384070 0.840509 0.382146 +vn -0.461256 0.800754 -0.382148 +vn -0.476824 0.791583 -0.382146 +vn -0.343847 0.204467 -0.916495 +vn -0.345516 0.201635 -0.916494 +vn 0.154748 -0.369324 -0.916326 +vn 0.151672 -0.370599 -0.916325 +vn 0.573099 -0.724946 -0.382114 +vn 0.558413 -0.736318 -0.382112 +vn 0.653646 -0.653249 0.382115 +vn 0.640384 -0.666255 0.382117 +vn 0.346566 -0.200609 0.916323 +vn 0.344886 -0.203483 0.916323 +vn -0.152836 0.369703 0.916494 +vn -0.155869 0.368433 0.916494 +vn -0.559789 0.735257 0.382143 +vn -0.574058 0.724171 0.382145 +vn -0.639486 0.667100 -0.382146 +vn -0.652407 0.654470 -0.382144 +vn -0.382789 0.116239 -0.916494 +vn -0.383732 0.113089 -0.916494 +vn 0.238638 -0.321559 -0.916325 +vn 0.235957 -0.323532 -0.916325 +vn 0.729936 -0.566729 -0.382116 +vn 0.718398 -0.581285 -0.382114 +vn 0.790985 -0.477840 0.382115 +vn 0.781221 -0.493641 0.382117 +vn 0.384504 -0.111840 0.916324 +vn 0.383560 -0.115032 0.916324 +vn -0.236869 0.322383 0.916494 +vn -0.239511 0.320425 0.916495 +vn -0.719481 0.579925 0.382144 +vn -0.730681 0.565747 0.382146 +vn -0.780551 0.494677 -0.382146 +vn -0.790074 0.479321 -0.382145 +vn -0.399482 0.021254 -0.916495 +vn -0.399644 0.017970 -0.916494 +vn 0.308660 -0.255107 -0.916324 +vn 0.306529 -0.257664 -0.916324 +vn 0.844352 -0.375575 -0.382117 +vn 0.836633 -0.392470 -0.382115 +vn 0.882355 -0.274660 0.382115 +vn 0.876655 -0.292338 0.382117 +vn 0.400096 -0.016572 0.916324 +vn 0.399943 -0.019897 0.916324 +vn -0.307138 0.256328 0.916495 +vn -0.309234 0.253794 0.916495 +vn -0.837359 0.390890 0.382145 +vn -0.844841 0.374444 0.382147 +vn -0.876253 0.293503 -0.382147 +vn -0.881825 0.276315 -0.382145 +vn -0.392960 -0.074966 -0.916495 +vn -0.392332 -0.078194 -0.916494 +vn 0.360742 -0.173827 -0.916324 +vn 0.359285 -0.176821 -0.916323 +vn 0.909698 -0.162595 -0.382115 +vn 0.906247 -0.180846 -0.382114 +vn 0.922446 -0.055517 0.382114 +vn 0.921143 -0.074046 0.382116 +vn 0.392436 0.079659 0.916323 +vn 0.393084 0.076393 0.916324 +vn -0.359557 0.175377 0.916494 +vn -0.360986 0.172416 0.916494 +vn -0.906572 0.179139 0.382147 +vn -0.909900 0.161380 0.382149 +vn -0.921030 0.075272 -0.382149 +vn -0.922326 0.057250 -0.382147 +vn -0.363600 -0.166830 -0.916495 +vn -0.362218 -0.169813 -0.916494 +vn 0.391860 -0.082445 -0.916323 +vn 0.391162 -0.085699 -0.916323 +vn 0.922175 0.059835 -0.382117 +vn 0.923192 0.041289 -0.382115 +vn 0.908927 0.166852 0.382115 +vn 0.912096 0.148550 0.382117 +vn 0.361970 0.171261 0.916323 +vn 0.363381 0.168245 0.916323 +vn -0.391080 0.084235 0.916494 +vn -0.391759 0.081018 0.916494 +vn -0.923100 -0.043023 0.382146 +vn -0.922082 -0.061063 0.382147 +vn -0.912281 -0.147332 -0.382148 +vn -0.909227 -0.165141 -0.382145 +vn -0.313110 -0.248998 -0.916495 +vn -0.311054 -0.251563 -0.916494 +vn 0.400203 0.013729 -0.916323 +vn 0.400305 0.010402 -0.916323 +vn 0.881058 0.278788 -0.382117 +vn 0.886484 0.261024 -0.382115 +vn 0.842585 0.379524 0.382115 +vn 0.850042 0.362512 0.382117 +vn 0.310466 0.252909 0.916323 +vn 0.312557 0.250319 0.916323 +vn -0.399874 -0.011805 0.916494 +vn -0.399763 -0.015091 0.916494 +vn -0.885981 -0.262686 0.382143 +vn -0.880675 -0.279959 0.382146 +vn -0.850514 -0.361373 -0.382145 +vn -0.843287 -0.377933 -0.382144 +vn -0.244423 -0.316695 -0.916495 +vn -0.241812 -0.318693 -0.916494 +vn 0.385288 0.109105 -0.916324 +vn 0.386182 0.105899 -0.916324 +vn 0.788739 0.481539 -0.382114 +vn 0.798259 0.465589 -0.382113 +vn 0.727276 0.570140 0.382113 +vn 0.738588 0.555407 0.382114 +vn 0.240919 0.319858 0.916324 +vn 0.243569 0.317844 0.916324 +vn -0.385429 -0.107158 0.916494 +vn -0.384534 -0.110322 0.916495 +vn -0.797369 -0.467082 0.382148 +vn -0.788084 -0.482582 0.382150 +vn -0.739316 -0.554413 -0.382150 +vn -0.728335 -0.568762 -0.382149 +vn -0.161530 -0.365986 -0.916495 +vn -0.158517 -0.367302 -0.916494 +vn 0.347982 0.198141 -0.916323 +vn 0.349618 0.195242 -0.916323 +vn 0.650579 0.656303 -0.382117 +vn 0.663639 0.643095 -0.382115 +vn 0.569699 0.727620 0.382115 +vn 0.584207 0.716023 0.382117 +vn 0.157371 0.368220 0.916323 +vn 0.160426 0.366899 0.916323 +vn -0.348584 -0.196283 0.916494 +vn -0.346959 -0.199141 0.916495 +vn -0.662420 -0.644333 0.382144 +vn -0.649696 -0.657161 0.382145 +vn -0.585154 -0.715234 -0.382146 +vn -0.571059 -0.726539 -0.382143 +vn -0.069251 -0.394008 -0.916495 +vn -0.066010 -0.394564 -0.916494 +vn 0.290452 0.275659 -0.916324 +vn 0.292734 0.273236 -0.916324 +vn 0.474611 0.792925 -0.382119 +vn 0.490452 0.783226 -0.382117 +vn 0.379012 0.842814 0.382117 +vn 0.395875 0.835026 0.382119 +vn 0.064677 0.395182 0.916323 +vn 0.067960 0.394630 0.916324 +vn -0.291481 -0.274001 0.916494 +vn -0.289219 -0.276387 0.916495 +vn -0.488974 -0.784139 0.382141 +vn -0.473549 -0.793548 0.382143 +vn -0.396984 -0.834488 -0.382143 +vn -0.380592 -0.842091 -0.382142 +vn 0.027053 -0.399132 -0.916494 +vn 0.030333 -0.398897 -0.916494 +vn 0.216042 0.337158 -0.916324 +vn 0.218838 0.335351 -0.916324 +vn 0.271060 0.883467 -0.382116 +vn 0.288762 0.877841 -0.382115 +vn 0.166300 0.909028 0.382115 +vn 0.184537 0.905501 0.382117 +vn -0.031775 0.399176 0.916324 +vn -0.028455 0.399425 0.916324 +vn -0.217439 -0.335796 0.916494 +vn -0.214671 -0.337571 0.916495 +vn -0.287107 -0.878370 0.382147 +vn -0.269878 -0.883815 0.382149 +vn -0.185741 -0.905242 -0.382149 +vn -0.168007 -0.908701 -0.382147 +vn 0.121785 -0.381059 -0.916495 +vn 0.124913 -0.380045 -0.916495 +vn 0.129076 0.379065 -0.916324 +vn 0.132223 0.377980 -0.916323 +vn 0.051756 0.922665 -0.382114 +vn 0.070290 0.921439 -0.382113 +vn -0.056077 0.922413 0.382112 +vn -0.037526 0.923353 0.382114 +vn -0.126381 0.379972 0.916324 +vn -0.123217 0.381009 0.916324 +vn -0.130759 -0.378075 0.916494 +vn -0.127647 -0.379137 0.916494 +vn -0.068556 -0.921555 0.382147 +vn -0.050525 -0.922719 0.382148 +vn 0.036294 -0.923388 -0.382148 +vn 0.054341 -0.922503 -0.382146 +vn 0.209441 -0.340840 -0.916495 +vn 0.212236 -0.339108 -0.916494 +vn 0.034609 0.398941 -0.916323 +vn 0.037925 0.398640 -0.916323 +vn -0.170555 0.908239 -0.382115 +vn -0.152266 0.911485 -0.382113 +vn -0.275194 0.882190 0.382112 +vn -0.257408 0.887542 0.382114 +vn -0.213643 0.338687 0.916323 +vn -0.210819 0.340451 0.916323 +vn -0.036480 -0.398381 0.916494 +vn -0.033204 -0.398667 0.916495 +vn 0.153979 -0.911184 0.382145 +vn 0.171764 -0.907998 0.382146 +vn 0.256221 -0.887871 -0.382147 +vn 0.273531 -0.882693 -0.382145 +vn 0.284924 -0.280814 -0.916494 +vn 0.287223 -0.278463 -0.916494 +vn -0.061868 0.395631 -0.916324 +vn -0.058577 0.396132 -0.916323 +vn -0.382956 0.841031 -0.382115 +vn -0.365975 0.848559 -0.382113 +vn -0.478319 0.790696 0.382114 +vn -0.462330 0.800149 0.382115 +vn -0.288489 0.277718 0.916322 +vn -0.286170 0.280106 0.916323 +vn 0.059920 -0.395537 0.916494 +vn 0.063169 -0.395030 0.916494 +vn 0.367565 -0.847857 0.382144 +vn 0.384071 -0.840508 0.382146 +vn 0.461257 -0.800754 -0.382146 +vn 0.476825 -0.791583 -0.382144 +vn 0.343847 -0.204468 -0.916494 +vn 0.345517 -0.201635 -0.916494 +vn -0.154751 0.369328 -0.916324 +vn -0.151676 0.370602 -0.916323 +vn -0.573100 0.724945 -0.382115 +vn -0.558414 0.736318 -0.382113 +vn -0.653647 0.653249 0.382114 +vn -0.640384 0.666255 0.382116 +vn -0.346568 0.200608 0.916323 +vn -0.344888 0.203482 0.916323 +vn 0.152837 -0.369703 0.916494 +vn 0.155870 -0.368434 0.916494 +vn 0.559790 -0.735255 0.382145 +vn 0.574058 -0.724170 0.382147 +vn 0.639487 -0.667099 -0.382146 +vn 0.652408 -0.654469 -0.382145 +vn 0.382789 -0.116239 -0.916494 +vn 0.383732 -0.113089 -0.916494 +vn -0.238641 0.321562 -0.916323 +vn -0.235960 0.323535 -0.916323 +vn -0.729936 0.566727 -0.382117 +vn -0.718399 0.581284 -0.382115 +vn -0.790985 0.477838 0.382116 +vn -0.781221 0.493639 0.382117 +vn -0.384506 0.111840 0.916323 +vn -0.383562 0.115033 0.916323 +vn 0.236872 -0.322384 0.916494 +vn 0.239513 -0.320426 0.916494 +vn 0.719480 -0.579924 0.382147 +vn 0.730681 -0.565745 0.382149 +vn 0.780551 -0.494674 -0.382149 +vn 0.790074 -0.479319 -0.382147 +vn 0.399484 -0.021252 -0.916494 +vn 0.399646 -0.017969 -0.916493 +vn -0.308662 0.255107 -0.916323 +vn -0.306531 0.257665 -0.916323 +vn -0.844352 0.375573 -0.382119 +vn -0.836634 0.392468 -0.382117 +vn -0.882354 0.274659 0.382117 +vn -0.876655 0.292337 0.382119 +vn -0.400098 0.016573 0.916323 +vn -0.399946 0.019898 0.916323 +vn 0.307140 -0.256330 0.916493 +vn 0.309236 -0.253796 0.916494 +vn 0.837358 -0.390889 0.382148 +vn 0.844840 -0.374442 0.382149 +vn 0.876253 -0.293502 -0.382149 +vn 0.881824 -0.276314 -0.382147 +vn 0.392962 0.074967 -0.916494 +vn 0.392334 0.078195 -0.916493 +vn -0.360744 0.173827 -0.916323 +vn -0.359287 0.176820 -0.916323 +vn -0.909698 0.162593 -0.382117 +vn -0.906247 0.180844 -0.382115 +vn -0.922446 0.055517 0.382116 +vn -0.921142 0.074046 0.382118 +vn -0.392438 -0.079659 0.916323 +vn -0.393085 -0.076394 0.916323 +vn 0.359558 -0.175378 0.916494 +vn 0.360987 -0.172416 0.916494 +vn 0.906572 -0.179137 0.382148 +vn 0.909900 -0.161378 0.382150 +vn 0.921030 -0.075272 -0.382150 +vn 0.922326 -0.057250 -0.382149 +vn 0.363602 0.166831 -0.916494 +vn 0.362219 0.169813 -0.916494 +vn -0.391862 0.082444 -0.916323 +vn -0.391164 0.085699 -0.916322 +vn -0.922176 -0.059837 -0.382115 +vn -0.923193 -0.041290 -0.382113 +vn -0.908928 -0.166853 0.382113 +vn -0.912097 -0.148550 0.382115 +vn -0.361971 -0.171261 0.916322 +vn -0.363381 -0.168246 0.916323 +vn 0.391080 -0.084233 0.916494 +vn 0.391758 -0.081016 0.916494 +vn 0.923099 0.043025 0.382149 +vn 0.922080 0.061066 0.382150 +vn 0.912280 0.147332 -0.382151 +vn 0.909226 0.165141 -0.382149 +vn 0.313109 0.248997 -0.916495 +vn 0.311053 0.251562 -0.916495 +vn -0.400206 -0.013730 -0.916322 +vn -0.400307 -0.010403 -0.916322 +vn -0.881058 -0.278789 -0.382117 +vn -0.886484 -0.261025 -0.382115 +vn -0.842585 -0.379524 0.382116 +vn -0.850042 -0.362512 0.382117 +vn -0.310468 -0.252910 0.916322 +vn -0.312559 -0.250320 0.916322 +vn 0.399872 0.011806 0.916495 +vn 0.399761 0.015092 0.916495 +vn 0.885979 0.262687 0.382146 +vn 0.880673 0.279959 0.382148 +vn 0.850513 0.361374 -0.382148 +vn 0.843285 0.377934 -0.382146 +vn 0.244423 0.316695 -0.916494 +vn 0.241812 0.318694 -0.916494 +vn -0.385290 -0.109106 -0.916323 +vn -0.386185 -0.105900 -0.916322 +vn -0.788738 -0.481539 -0.382117 +vn -0.798257 -0.465589 -0.382116 +vn -0.727274 -0.570140 0.382115 +vn -0.738586 -0.555407 0.382117 +vn -0.240920 -0.319861 0.916322 +vn -0.243571 -0.317846 0.916323 +vn 0.385429 0.107159 0.916494 +vn 0.384535 0.110323 0.916494 +vn 0.797368 0.467083 0.382148 +vn 0.788083 0.482583 0.382150 +vn 0.739315 0.554414 -0.382150 +vn 0.728334 0.568763 -0.382149 +vn 0.161531 0.365988 -0.916494 +vn 0.158518 0.367303 -0.916494 +vn -0.347982 -0.198141 -0.916324 +vn -0.349618 -0.195242 -0.916323 +vn -0.650579 -0.656304 -0.382115 +vn -0.663639 -0.643096 -0.382113 +vn -0.569698 -0.727622 0.382113 +vn -0.584207 -0.716024 0.382115 +vn -0.157371 -0.368220 0.916323 +vn -0.160426 -0.366899 0.916324 +vn 0.348586 0.196285 0.916493 +vn 0.346960 0.199143 0.916494 +vn 0.662419 0.644333 0.382147 +vn 0.649694 0.657161 0.382148 +vn 0.585152 0.715234 -0.382148 +vn 0.571057 0.726539 -0.382146 +vn 0.069250 0.394008 -0.916495 +vn 0.066010 0.394564 -0.916494 +vn -0.290453 -0.275662 -0.916323 +vn -0.292735 -0.273238 -0.916323 +vn -0.474610 -0.792926 -0.382118 +vn -0.490452 -0.783227 -0.382115 +vn -0.379012 -0.842815 0.382115 +vn -0.395875 -0.835027 0.382117 +vn -0.064677 -0.395183 0.916323 +vn -0.067960 -0.394630 0.916323 +vn 0.291480 0.274002 0.916494 +vn 0.289218 0.276388 0.916495 +vn 0.488972 0.784139 0.382142 +vn 0.473547 0.793549 0.382143 +vn 0.396982 0.834489 -0.382143 +vn 0.380592 0.842091 -0.382142 +vn -0.027054 0.399133 -0.916494 +vn -0.030334 0.398897 -0.916494 +vn -0.216043 -0.337162 -0.916323 +vn -0.218838 -0.335355 -0.916322 +vn -0.271059 -0.883467 -0.382116 +vn -0.288761 -0.877841 -0.382115 +vn -0.166300 -0.909029 0.382114 +vn -0.184536 -0.905502 0.382116 +vn 0.031775 -0.399177 0.916323 +vn 0.028456 -0.399427 0.916323 +vn 0.217438 0.335797 0.916494 +vn 0.214670 0.337572 0.916494 +vn 0.287107 0.878371 0.382144 +vn 0.269878 0.883816 0.382146 +vn 0.185741 0.905243 -0.382146 +vn 0.168007 0.908702 -0.382144 +vn -0.121787 0.381060 -0.916494 +vn -0.124915 0.380046 -0.916494 +vn -0.129076 -0.379065 -0.916324 +vn -0.132223 -0.377980 -0.916323 +vn -0.051754 -0.922665 -0.382114 +vn -0.070289 -0.921439 -0.382112 +vn 0.056077 -0.922413 0.382112 +vn 0.037526 -0.923353 0.382114 +vn 0.126381 -0.379973 0.916323 +vn 0.123218 -0.381009 0.916324 +vn 0.130758 0.378077 0.916494 +vn 0.127646 0.379138 0.916494 +vn 0.068556 0.921556 0.382146 +vn 0.050525 0.922719 0.382148 +vn -0.036295 0.923388 -0.382147 +vn -0.054342 0.922503 -0.382145 +vn -0.209441 0.340841 -0.916494 +vn -0.212236 0.339108 -0.916494 +vn -0.034609 -0.398941 -0.916323 +vn -0.037924 -0.398641 -0.916323 +vn 0.170557 -0.908239 -0.382115 +vn 0.152269 -0.911484 -0.382113 +vn 0.275195 -0.882189 0.382113 +vn 0.257408 -0.887541 0.382115 +vn 0.213642 -0.338687 0.916323 +vn 0.210819 -0.340451 0.916323 +vn 0.036480 0.398381 0.916494 +vn 0.033204 0.398667 0.916495 +vn -0.153980 0.911184 0.382145 +vn -0.171765 0.907998 0.382146 +vn -0.256221 0.887871 -0.382147 +vn -0.273532 0.882692 -0.382145 +vn -0.284924 0.280814 -0.916494 +vn -0.287223 0.278463 -0.916494 +vn 0.061869 -0.395631 -0.916323 +vn 0.058578 -0.396133 -0.916323 +vn 0.382957 -0.841030 -0.382115 +vn 0.365976 -0.848558 -0.382113 +vn 0.478320 -0.790695 0.382113 +vn 0.462331 -0.800149 0.382115 +vn 0.288487 -0.277716 0.916323 +vn 0.286168 -0.280105 0.916324 +vn -0.059919 0.395535 0.916494 +vn -0.063168 0.395028 0.916495 +vn -0.367567 0.847857 0.382144 +vn -0.384073 0.840507 0.382146 +vn -0.461259 0.800753 -0.382146 +vn -0.476827 0.791582 -0.382144 +vn -0.343848 0.204466 -0.916494 +vn -0.345518 0.201634 -0.916494 +vn 0.154751 -0.369329 -0.916323 +vn 0.151676 -0.370603 -0.916323 +vn 0.573101 -0.724943 -0.382116 +vn 0.558415 -0.736316 -0.382114 +vn 0.653647 -0.653250 0.382114 +vn 0.640385 -0.666255 0.382116 +vn 0.346568 -0.200608 0.916323 +vn 0.344887 -0.203481 0.916323 +vn -0.152837 0.369703 0.916494 +vn -0.155870 0.368434 0.916494 +vn -0.559791 0.735255 0.382145 +vn -0.574059 0.724169 0.382147 +vn -0.639488 0.667098 -0.382146 +vn -0.652409 0.654468 -0.382145 +vn -0.382789 0.116238 -0.916494 +vn -0.383732 0.113088 -0.916494 +vn 0.238642 -0.321563 -0.916323 +vn 0.235961 -0.323536 -0.916322 +vn 0.729938 -0.566725 -0.382117 +vn 0.718400 -0.581282 -0.382115 +vn 0.790986 -0.477839 0.382115 +vn 0.781221 -0.493640 0.382116 +vn 0.384505 -0.111840 0.916323 +vn 0.383562 -0.115033 0.916323 +vn -0.236871 0.322384 0.916494 +vn -0.239512 0.320426 0.916494 +vn -0.719482 0.579923 0.382145 +vn -0.730682 0.565745 0.382147 +vn -0.780553 0.494673 -0.382147 +vn -0.790076 0.479318 -0.382145 +vn -0.399483 0.021254 -0.916494 +vn -0.399645 0.017969 -0.916494 +vn 0.308663 -0.255108 -0.916322 +vn 0.306533 -0.257666 -0.916322 +vn 0.844354 -0.375571 -0.382116 +vn 0.836635 -0.392467 -0.382115 +vn 0.882356 -0.274658 0.382113 +vn 0.876657 -0.292336 0.382115 +vn 0.400096 -0.016572 0.916323 +vn 0.399944 -0.019897 0.916324 +vn -0.307139 0.256328 0.916494 +vn -0.309234 0.253795 0.916495 +vn -0.837360 0.390889 0.382145 +vn -0.844842 0.374441 0.382147 +vn -0.876255 0.293500 -0.382147 +vn -0.881826 0.276312 -0.382145 +vn -0.392961 -0.074968 -0.916494 +vn -0.392332 -0.078196 -0.916494 +vn 0.360745 -0.173827 -0.916322 +vn 0.359289 -0.176820 -0.916322 +vn 0.909698 -0.162592 -0.382117 +vn 0.906247 -0.180843 -0.382115 +vn 0.922446 -0.055515 0.382115 +vn 0.921143 -0.074044 0.382116 +vn 0.392437 0.079661 0.916323 +vn 0.393085 0.076395 0.916323 +vn -0.359557 0.175377 0.916494 +vn -0.360986 0.172416 0.916494 +vn -0.906572 0.179136 0.382148 +vn -0.909901 0.161377 0.382150 +vn -0.921030 0.075271 -0.382150 +vn -0.922326 0.057249 -0.382148 +vn -0.363600 -0.166832 -0.916495 +vn -0.362217 -0.169815 -0.916494 +vn 0.391861 -0.082444 -0.916323 +vn 0.391163 -0.085699 -0.916323 +vn 0.922176 0.059838 -0.382114 +vn 0.923193 0.041291 -0.382113 +vn 0.908928 0.166853 0.382112 +vn 0.912097 0.148551 0.382115 +vn 0.361968 0.171262 0.916323 +vn 0.363379 0.168247 0.916323 +vn -0.391079 0.084233 0.916494 +vn -0.391758 0.081016 0.916495 +vn -0.923101 -0.043027 0.382144 +vn -0.922083 -0.061067 0.382145 +vn -0.912281 -0.147333 -0.382148 +vn -0.909227 -0.165142 -0.382146 +vn -0.313109 -0.248999 -0.916495 +vn -0.311053 -0.251564 -0.916494 +vn 0.400201 0.013730 -0.916324 +vn 0.400303 0.010403 -0.916324 +vn 0.881060 0.278791 -0.382110 +vn 0.886487 0.261027 -0.382108 +vn 0.842587 0.379526 0.382108 +vn 0.850045 0.362514 0.382110 +vn 0.310464 0.252908 0.916324 +vn 0.312555 0.250318 0.916324 +vn -0.399874 -0.011807 0.916494 +vn -0.399762 -0.015093 0.916495 +vn -0.885982 -0.262690 0.382139 +vn -0.880676 -0.279962 0.382141 +vn -0.850514 -0.361376 -0.382143 +vn -0.843287 -0.377936 -0.382141 +vn -0.244422 -0.316696 -0.916494 +vn -0.241812 -0.318694 -0.916494 +vn 0.385289 0.109106 -0.916323 +vn 0.386183 0.105900 -0.916323 +vn 0.788737 0.481540 -0.382117 +vn 0.798257 0.465591 -0.382114 +vn 0.727274 0.570141 0.382116 +vn 0.738586 0.555408 0.382116 +vn 0.240919 0.319860 0.916323 +vn 0.243569 0.317845 0.916323 +vn -0.385430 -0.107159 0.916494 +vn -0.384535 -0.110323 0.916494 +vn -0.797369 -0.467084 0.382145 +vn -0.788083 -0.482585 0.382148 +vn -0.739315 -0.554415 -0.382147 +vn -0.728335 -0.568764 -0.382146 +vn -0.161530 -0.365986 -0.916495 +vn -0.158516 -0.367302 -0.916494 +vn 0.347983 0.198142 -0.916323 +vn 0.349619 0.195243 -0.916323 +vn 0.650577 0.656304 -0.382119 +vn 0.663637 0.643096 -0.382118 +vn 0.569697 0.727621 0.382117 +vn 0.584205 0.716023 0.382119 +vn 0.157371 0.368222 0.916323 +vn 0.160426 0.366900 0.916323 +vn -0.348584 -0.196284 0.916494 +vn -0.346958 -0.199142 0.916495 +vn -0.662418 -0.644335 0.382146 +vn -0.649693 -0.657162 0.382147 +vn -0.585152 -0.715234 -0.382148 +vn -0.571056 -0.726539 -0.382146 +vn -0.069249 -0.394008 -0.916495 +vn -0.066008 -0.394565 -0.916494 +vn 0.290451 0.275661 -0.916324 +vn 0.292733 0.273237 -0.916324 +vn 0.474609 0.792927 -0.382117 +vn 0.490450 0.783229 -0.382115 +vn 0.379012 0.842815 0.382115 +vn 0.395875 0.835027 0.382117 +vn 0.064677 0.395181 0.916324 +vn 0.067959 0.394629 0.916324 +vn -0.291481 -0.274002 0.916494 +vn -0.289219 -0.276388 0.916494 +vn -0.488970 -0.784139 0.382143 +vn -0.473545 -0.793549 0.382145 +vn -0.396982 -0.834488 -0.382145 +vn -0.380590 -0.842091 -0.382144 +vn 0.027057 -0.399132 -0.916494 +vn 0.030336 -0.398897 -0.916494 +vn 0.216040 0.337161 -0.916324 +vn 0.218836 0.335354 -0.916324 +vn 0.271057 0.883468 -0.382115 +vn 0.288759 0.877842 -0.382114 +vn 0.166299 0.909029 0.382115 +vn 0.184536 0.905502 0.382117 +vn -0.031776 0.399176 0.916324 +vn -0.028456 0.399425 0.916324 +vn -0.217439 -0.335796 0.916494 +vn -0.214672 -0.337571 0.916494 +vn -0.287104 -0.878372 0.382145 +vn -0.269875 -0.883817 0.382146 +vn -0.185740 -0.905243 -0.382147 +vn -0.168006 -0.908702 -0.382145 +vn 0.121789 -0.381059 -0.916494 +vn 0.124917 -0.380046 -0.916494 +vn 0.129075 0.379066 -0.916323 +vn 0.132222 0.377981 -0.916323 +vn 0.051754 0.922665 -0.382113 +vn 0.070288 0.921440 -0.382111 +vn -0.056079 0.922413 0.382113 +vn -0.037528 0.923353 0.382115 +vn -0.126382 0.379972 0.916324 +vn -0.123218 0.381009 0.916324 +vn -0.130759 -0.378074 0.916495 +vn -0.127647 -0.379135 0.916495 +vn -0.068554 -0.921557 0.382143 +vn -0.050522 -0.922720 0.382145 +vn 0.036295 -0.923389 -0.382145 +vn 0.054343 -0.922504 -0.382144 +vn 0.209442 -0.340840 -0.916495 +vn 0.212237 -0.339108 -0.916494 +vn 0.034607 0.398942 -0.916323 +vn 0.037923 0.398641 -0.916323 +vn -0.170558 0.908239 -0.382116 +vn -0.152269 0.911484 -0.382114 +vn -0.275196 0.882188 0.382114 +vn -0.257410 0.887540 0.382116 +vn -0.213642 0.338686 0.916324 +vn -0.210819 0.340449 0.916324 +vn -0.036478 -0.398382 0.916494 +vn -0.033203 -0.398667 0.916494 +vn 0.153981 -0.911184 0.382144 +vn 0.171767 -0.907999 0.382145 +vn 0.256224 -0.887871 -0.382145 +vn 0.273534 -0.882692 -0.382143 +vn 0.284925 -0.280815 -0.916494 +vn 0.287225 -0.278464 -0.916493 +vn -0.061870 0.395631 -0.916323 +vn -0.058580 0.396133 -0.916323 +vn -0.382958 0.841030 -0.382116 +vn -0.365977 0.848557 -0.382114 +vn -0.478322 0.790695 0.382112 +vn -0.462333 0.800148 0.382114 +vn -0.288487 0.277716 0.916324 +vn -0.286168 0.280104 0.916324 +vn 0.059919 -0.395534 0.916495 +vn 0.063168 -0.395027 0.916495 +vn 0.367568 -0.847856 0.382143 +vn 0.384075 -0.840507 0.382145 +vn 0.461259 -0.800753 -0.382145 +vn 0.476828 -0.791582 -0.382144 +vn 0.343849 -0.204468 -0.916494 +vn 0.345519 -0.201636 -0.916493 +vn -0.154755 0.369331 -0.916322 +vn -0.151679 0.370605 -0.916322 +vn -0.573101 0.724942 -0.382117 +vn -0.558415 0.736315 -0.382115 +vn -0.653648 0.653250 0.382112 +vn -0.640386 0.666255 0.382114 +vn -0.346565 0.200604 0.916325 +vn -0.344884 0.203478 0.916325 +vn 0.152836 -0.369700 0.916495 +vn 0.155869 -0.368431 0.916495 +vn 0.559792 -0.735254 0.382144 +vn 0.574060 -0.724168 0.382146 +vn 0.639488 -0.667097 -0.382147 +vn 0.652409 -0.654467 -0.382146 +vn 0.382789 -0.116239 -0.916494 +vn 0.383732 -0.113089 -0.916494 +vn -0.238643 0.321563 -0.916323 +vn -0.235962 0.323536 -0.916322 +vn -0.729938 0.566725 -0.382117 +vn -0.718400 0.581282 -0.382116 +vn -0.790987 0.477837 0.382115 +vn -0.781222 0.493638 0.382117 +vn -0.384504 0.111838 0.916324 +vn -0.383560 0.115031 0.916324 +vn 0.236872 -0.322383 0.916494 +vn 0.239513 -0.320425 0.916494 +vn 0.719482 -0.579922 0.382146 +vn 0.730683 -0.565744 0.382148 +vn 0.780553 -0.494672 -0.382148 +vn 0.790075 -0.479317 -0.382146 +vn 0.399482 -0.021254 -0.916495 +vn 0.399644 -0.017970 -0.916494 +vn -0.308660 0.255104 -0.916325 +vn -0.306530 0.257661 -0.916324 +vn -0.844353 0.375572 -0.382116 +vn -0.836635 0.392467 -0.382115 +vn -0.882356 0.274656 0.382115 +vn -0.876657 0.292334 0.382117 +vn -0.400099 0.016572 0.916322 +vn -0.399946 0.019898 0.916323 +vn 0.307139 -0.256327 0.916494 +vn 0.309235 -0.253794 0.916495 +vn 0.837360 -0.390887 0.382146 +vn 0.844842 -0.374440 0.382148 +vn 0.876254 -0.293500 -0.382147 +vn 0.881826 -0.276312 -0.382146 +vn 0.392958 0.074969 -0.916495 +vn 0.392329 0.078196 -0.916495 +vn -0.360744 0.173825 -0.916324 +vn -0.359287 0.176818 -0.916323 +vn -0.909698 0.162593 -0.382118 +vn -0.906247 0.180844 -0.382116 +vn -0.922446 0.055514 0.382116 +vn -0.921143 0.074043 0.382117 +vn -0.392437 -0.079660 0.916323 +vn -0.393085 -0.076395 0.916323 +vn 0.359557 -0.175376 0.916494 +vn 0.360986 -0.172415 0.916495 +vn 0.906573 -0.179135 0.382146 +vn 0.909902 -0.161376 0.382148 +vn 0.921031 -0.075269 -0.382148 +vn 0.922327 -0.057247 -0.382146 +vn 0.363599 0.166832 -0.916495 +vn 0.362217 0.169815 -0.916494 +vn -0.391861 0.082444 -0.916323 +vn -0.391163 0.085699 -0.916323 +vn -0.922175 -0.059838 -0.382116 +vn -0.923192 -0.041291 -0.382115 +vn -0.908927 -0.166855 0.382115 +vn -0.912096 -0.148553 0.382117 +vn -0.361969 -0.171261 0.916323 +vn -0.363379 -0.168246 0.916324 +vn 0.391079 -0.084232 0.916495 +vn 0.391757 -0.081014 0.916495 +vn 0.923101 0.043028 0.382144 +vn 0.922082 0.061068 0.382145 +vn 0.912281 0.147336 -0.382146 +vn 0.909227 0.165144 -0.382144 +vn 0.313110 0.248999 -0.916494 +vn 0.311053 0.251565 -0.916494 +vn -0.400203 -0.013730 -0.916324 +vn -0.400304 -0.010402 -0.916323 +vn -0.881059 -0.278792 -0.382112 +vn -0.886485 -0.261028 -0.382110 +vn -0.842586 -0.379526 0.382110 +vn -0.850044 -0.362514 0.382112 +vn -0.310465 -0.252909 0.916324 +vn -0.312556 -0.250319 0.916324 +vn 0.399874 0.011807 0.916494 +vn 0.399763 0.015094 0.916494 +vn 0.885979 0.262691 0.382146 +vn 0.880673 0.279962 0.382148 +vn 0.850512 0.361376 -0.382147 +vn 0.843284 0.377936 -0.382146 +vn 0.244421 0.316695 -0.916495 +vn 0.241810 0.318693 -0.916495 +vn -0.385287 -0.109106 -0.916324 +vn -0.386182 -0.105900 -0.916324 +vn -0.788738 -0.481542 -0.382112 +vn -0.798258 -0.465592 -0.382110 +vn -0.727274 -0.570143 0.382110 +vn -0.738586 -0.555411 0.382112 +vn -0.240918 -0.319859 0.916324 +vn -0.243568 -0.317845 0.916324 +vn 0.385428 0.107160 0.916495 +vn 0.384533 0.110323 0.916495 +vn 0.797369 0.467086 0.382144 +vn 0.788084 0.482586 0.382145 +vn 0.739315 0.554416 -0.382146 +vn 0.728335 0.568766 -0.382143 +vn 0.161529 0.365985 -0.916495 +vn 0.158516 0.367301 -0.916495 +vn -0.347982 -0.198142 -0.916323 +vn -0.349618 -0.195243 -0.916323 +vn -0.650578 -0.656304 -0.382117 +vn -0.663638 -0.643096 -0.382115 +vn -0.569696 -0.727623 0.382115 +vn -0.584205 -0.716025 0.382116 +vn -0.157370 -0.368222 0.916323 +vn -0.160425 -0.366901 0.916323 +vn 0.348583 0.196284 0.916495 +vn 0.346957 0.199142 0.916495 +vn 0.662419 0.644338 0.382139 +vn 0.649693 0.657166 0.382141 +vn 0.585152 0.715238 -0.382141 +vn 0.571057 0.726543 -0.382139 +vn 0.069249 0.394008 -0.916494 +vn 0.066009 0.394565 -0.916494 +vn -0.290452 -0.275661 -0.916323 +vn -0.292734 -0.273238 -0.916323 +vn -0.474608 -0.792926 -0.382119 +vn -0.490450 -0.783227 -0.382118 +vn -0.379010 -0.842815 0.382117 +vn -0.395873 -0.835027 0.382119 +vn -0.064676 -0.395182 0.916323 +vn -0.067959 -0.394630 0.916323 +vn 0.291481 0.274003 0.916494 +vn 0.289219 0.276389 0.916494 +vn 0.488968 0.784141 0.382143 +vn 0.473543 0.793550 0.382145 +vn 0.396981 0.834488 -0.382145 +vn 0.380590 0.842091 -0.382144 +vn -0.027056 0.399131 -0.916494 +vn -0.030336 0.398896 -0.916494 +vn -0.216040 -0.337160 -0.916324 +vn -0.218836 -0.335353 -0.916324 +vn -0.271055 -0.883468 -0.382118 +vn -0.288758 -0.877842 -0.382116 +vn -0.166299 -0.909028 0.382116 +vn -0.184535 -0.905501 0.382118 +vn 0.031776 -0.399176 0.916324 +vn 0.028456 -0.399425 0.916324 +vn 0.217438 0.335797 0.916494 +vn 0.214671 0.337572 0.916494 +vn 0.287102 0.878373 0.382144 +vn 0.269873 0.883818 0.382146 +vn 0.185740 0.905243 -0.382147 +vn 0.168006 0.908702 -0.382145 +vn -0.121790 0.381060 -0.916493 +vn -0.124918 0.380047 -0.916493 +vn -0.129075 -0.379066 -0.916323 +vn -0.132222 -0.377981 -0.916323 +vn -0.051752 -0.922664 -0.382116 +vn -0.070287 -0.921438 -0.382114 +vn 0.056079 -0.922412 0.382115 +vn 0.037528 -0.923352 0.382117 +vn 0.126382 -0.379973 0.916323 +vn 0.123218 -0.381009 0.916324 +vn 0.130757 0.378077 0.916494 +vn 0.127645 0.379138 0.916494 +vn 0.068553 0.921556 0.382145 +vn 0.050521 0.922719 0.382147 +vn -0.036297 0.923389 -0.382146 +vn -0.054343 0.922503 -0.382144 +vn -0.209444 0.340842 -0.916493 +vn -0.212238 0.339110 -0.916493 +vn -0.034607 -0.398942 -0.916323 +vn -0.037922 -0.398641 -0.916323 +vn 0.170559 -0.908239 -0.382116 +vn 0.152270 -0.911484 -0.382114 +vn 0.275199 -0.882188 0.382113 +vn 0.257412 -0.887540 0.382115 +vn 0.213643 -0.338686 0.916323 +vn 0.210820 -0.340450 0.916324 +vn 0.036478 0.398382 0.916494 +vn 0.033202 0.398667 0.916494 +vn -0.153982 0.911183 0.382146 +vn -0.171768 0.907997 0.382147 +vn -0.256223 0.887871 -0.382146 +vn -0.273534 0.882692 -0.382144 +vn -0.284926 0.280814 -0.916494 +vn -0.287225 0.278464 -0.916493 +vn 0.061874 -0.395635 -0.916321 +vn 0.058583 -0.396136 -0.916321 +vn 0.382959 -0.841029 -0.382115 +vn 0.365978 -0.848557 -0.382113 +vn 0.478323 -0.790694 0.382113 +vn 0.462334 -0.800147 0.382115 +vn 0.288488 -0.277715 0.916324 +vn 0.286169 -0.280103 0.916324 +vn -0.059917 0.395530 0.916497 +vn -0.063165 0.395023 0.916497 +vn -0.367569 0.847856 0.382143 +vn -0.384076 0.840506 0.382145 +vn -0.461259 0.800753 -0.382145 +vn -0.476828 0.791582 -0.382144 +vn -0.343851 0.204470 -0.916493 +vn -0.345521 0.201637 -0.916492 +vn 0.154753 -0.369329 -0.916323 +vn 0.151678 -0.370604 -0.916323 +vn 0.573103 -0.724942 -0.382114 +vn 0.558418 -0.736315 -0.382112 +vn 0.653649 -0.653248 0.382114 +vn 0.640387 -0.666253 0.382116 +vn 0.346568 -0.200605 0.916323 +vn 0.344887 -0.203478 0.916324 +vn -0.152833 0.369697 0.916497 +vn -0.155866 0.368428 0.916497 +vn -0.559793 0.735254 0.382144 +vn -0.574061 0.724167 0.382146 +vn -0.639489 0.667096 -0.382147 +vn -0.652410 0.654466 -0.382146 +vn -0.382788 0.116237 -0.916495 +vn -0.383731 0.113086 -0.916494 +vn 0.238640 -0.321559 -0.916324 +vn 0.235959 -0.323533 -0.916324 +vn 0.729940 -0.566723 -0.382115 +vn 0.718403 -0.581281 -0.382113 +vn 0.790988 -0.477837 0.382113 +vn 0.781223 -0.493638 0.382115 +vn 0.384505 -0.111837 0.916323 +vn 0.383561 -0.115029 0.916324 +vn -0.236870 0.322381 0.916495 +vn -0.239511 0.320423 0.916495 +vn -0.719483 0.579922 0.382145 +vn -0.730684 0.565743 0.382147 +vn -0.780553 0.494672 -0.382148 +vn -0.790076 0.479317 -0.382146 +vn -0.399482 0.021249 -0.916495 +vn -0.399644 0.017965 -0.916494 +vn 0.308661 -0.255108 -0.916323 +vn 0.306531 -0.257665 -0.916323 +vn 0.844355 -0.375569 -0.382116 +vn 0.836637 -0.392463 -0.382114 +vn 0.882357 -0.274656 0.382113 +vn 0.876658 -0.292335 0.382114 +vn 0.400096 -0.016569 0.916324 +vn 0.399943 -0.019895 0.916324 +vn -0.307140 0.256329 0.916494 +vn -0.309236 0.253795 0.916494 +vn -0.837361 0.390886 0.382145 +vn -0.844843 0.374439 0.382147 +vn -0.876254 0.293500 -0.382147 +vn -0.881826 0.276312 -0.382146 +vn -0.392961 -0.074970 -0.916494 +vn -0.392333 -0.078197 -0.916494 +vn 0.360743 -0.173826 -0.916324 +vn 0.359286 -0.176819 -0.916323 +vn 0.909699 -0.162591 -0.382115 +vn 0.906248 -0.180842 -0.382114 +vn 0.922447 -0.055513 0.382113 +vn 0.921144 -0.074042 0.382114 +vn 0.392436 0.079659 0.916323 +vn 0.393084 0.076394 0.916324 +vn -0.359559 0.175377 0.916493 +vn -0.360988 0.172416 0.916494 +vn -0.906574 0.179133 0.382146 +vn -0.909902 0.161373 0.382148 +vn -0.921031 0.075269 -0.382148 +vn -0.922327 0.057247 -0.382146 +vn -0.363600 -0.166832 -0.916495 +vn -0.362217 -0.169815 -0.916494 +vn 0.391859 -0.082443 -0.916324 +vn 0.391161 -0.085698 -0.916324 +vn 0.922177 0.059840 -0.382112 +vn 0.923194 0.041293 -0.382110 +vn 0.908929 0.166855 0.382110 +vn 0.912098 0.148553 0.382112 +vn 0.361969 0.171260 0.916324 +vn 0.363379 0.168245 0.916324 +vn -0.391080 0.084232 0.916494 +vn -0.391758 0.081015 0.916494 +vn -0.923100 -0.043030 0.382144 +vn -0.922082 -0.061070 0.382145 +vn -0.912281 -0.147337 -0.382146 +vn -0.909227 -0.165146 -0.382144 +vn -0.313110 -0.248999 -0.916494 +vn -0.311053 -0.251565 -0.916494 +vn 0.400202 0.013730 -0.916324 +vn 0.400303 0.010403 -0.916324 +vn 0.881060 0.278794 -0.382110 +vn 0.886486 0.261030 -0.382108 +vn 0.842586 0.379529 0.382108 +vn 0.850043 0.362517 0.382110 +vn 0.310463 0.252909 0.916324 +vn 0.312554 0.250319 0.916324 +vn -0.399875 -0.011807 0.916494 +vn -0.399764 -0.015093 0.916494 +vn -0.885978 -0.262691 0.382148 +vn -0.880671 -0.279962 0.382150 +vn -0.850510 -0.361378 -0.382149 +vn -0.843282 -0.377939 -0.382149 +vn -0.244421 -0.316696 -0.916495 +vn -0.241810 -0.318694 -0.916494 +vn 0.385288 0.109107 -0.916323 +vn 0.386183 0.105901 -0.916323 +vn 0.788737 0.481543 -0.382112 +vn 0.798257 0.465594 -0.382110 +vn 0.727274 0.570145 0.382110 +vn 0.738585 0.555412 0.382112 +vn 0.240917 0.319861 0.916323 +vn 0.243567 0.317846 0.916323 +vn -0.385428 -0.107160 0.916494 +vn -0.384534 -0.110324 0.916495 +vn -0.797365 -0.467084 0.382153 +vn -0.788080 -0.482585 0.382154 +vn -0.739311 -0.554416 -0.382155 +vn -0.728330 -0.568766 -0.382153 +vn -0.161527 -0.365986 -0.916495 +vn -0.158514 -0.367302 -0.916495 +vn 0.347983 0.198141 -0.916323 +vn 0.349619 0.195242 -0.916323 +vn 0.650575 0.656307 -0.382117 +vn 0.663635 0.643099 -0.382115 +vn 0.569696 0.727623 0.382115 +vn 0.584204 0.716025 0.382116 +vn 0.157369 0.368223 0.916323 +vn 0.160425 0.366901 0.916323 +vn -0.348583 -0.196284 0.916495 +vn -0.346957 -0.199142 0.916495 +vn -0.662415 -0.644336 0.382148 +vn -0.649690 -0.657164 0.382150 +vn -0.585149 -0.715236 -0.382150 +vn -0.571053 -0.726540 -0.382148 +vn -0.069247 -0.394010 -0.916494 +vn -0.066006 -0.394567 -0.916493 +vn 0.290453 0.275659 -0.916324 +vn 0.292735 0.273236 -0.916323 +vn 0.474604 0.792929 -0.382119 +vn 0.490446 0.783230 -0.382117 +vn 0.379012 0.842814 0.382118 +vn 0.395874 0.835026 0.382120 +vn 0.064675 0.395183 0.916323 +vn 0.067957 0.394631 0.916323 +vn -0.291481 -0.274003 0.916494 +vn -0.289219 -0.276389 0.916494 +vn -0.488967 -0.784140 0.382146 +vn -0.473542 -0.793550 0.382148 +vn -0.396979 -0.834489 -0.382147 +vn -0.380587 -0.842091 -0.382146 +vn 0.027056 -0.399133 -0.916494 +vn 0.030336 -0.398897 -0.916494 +vn 0.216042 0.337161 -0.916323 +vn 0.218838 0.335354 -0.916323 +vn 0.271056 0.883467 -0.382118 +vn 0.288757 0.877842 -0.382116 +vn 0.166297 0.909028 0.382116 +vn 0.184535 0.905501 0.382119 +vn -0.031778 0.399177 0.916323 +vn -0.028459 0.399427 0.916323 +vn -0.217436 -0.335799 0.916494 +vn -0.214669 -0.337574 0.916494 +vn -0.287103 -0.878371 0.382147 +vn -0.269875 -0.883816 0.382149 +vn -0.185734 -0.905244 -0.382148 +vn -0.167999 -0.908703 -0.382146 +vn 0.121787 -0.381057 -0.916495 +vn 0.124915 -0.380044 -0.916495 +vn 0.129075 0.379067 -0.916323 +vn 0.132222 0.377982 -0.916323 +vn 0.051752 0.922664 -0.382116 +vn 0.070286 0.921438 -0.382115 +vn -0.056082 0.922412 0.382114 +vn -0.037531 0.923352 0.382116 +vn -0.126383 0.379972 0.916323 +vn -0.123220 0.381009 0.916324 +vn -0.130759 -0.378073 0.916495 +vn -0.127647 -0.379134 0.916495 +vn -0.068552 -0.921556 0.382146 +vn -0.050520 -0.922720 0.382147 +vn 0.036300 -0.923388 -0.382147 +vn 0.054347 -0.922503 -0.382146 +vn 0.209442 -0.340838 -0.916495 +vn 0.212237 -0.339105 -0.916495 +vn 0.034610 0.398938 -0.916324 +vn 0.037925 0.398638 -0.916324 +vn -0.170562 0.908239 -0.382114 +vn -0.152273 0.911484 -0.382113 +vn -0.275197 0.882187 0.382116 +vn -0.257411 0.887540 0.382117 +vn -0.213644 0.338685 0.916323 +vn -0.210821 0.340449 0.916324 +vn -0.036481 -0.398378 0.916496 +vn -0.033205 -0.398664 0.916496 +vn 0.153985 -0.911184 0.382142 +vn 0.171771 -0.907998 0.382144 +vn 0.256225 -0.887870 -0.382146 +vn 0.273536 -0.882691 -0.382145 +vn 0.284927 -0.280814 -0.916494 +vn 0.287226 -0.278463 -0.916493 +vn -0.061867 0.395625 -0.916326 +vn -0.058576 0.396127 -0.916326 +vn -0.382961 0.841029 -0.382113 +vn -0.365980 0.848557 -0.382111 +vn -0.478322 0.790692 0.382118 +vn -0.462333 0.800146 0.382120 +vn -0.288491 0.277719 0.916322 +vn -0.286171 0.280106 0.916322 +vn 0.059920 -0.395534 0.916495 +vn 0.063168 -0.395027 0.916495 +vn 0.367571 -0.847856 0.382141 +vn 0.384078 -0.840507 0.382143 +vn 0.461261 -0.800751 -0.382147 +vn 0.476829 -0.791580 -0.382146 +vn 0.343850 -0.204468 -0.916493 +vn 0.345520 -0.201635 -0.916493 +vn -0.154751 0.369325 -0.916325 +vn -0.151676 0.370599 -0.916325 +vn -0.573104 0.724943 -0.382113 +vn -0.558418 0.736316 -0.382111 +vn -0.653650 0.653246 0.382115 +vn -0.640388 0.666251 0.382117 +vn -0.346569 0.200609 0.916322 +vn -0.344889 0.203483 0.916322 +vn 0.152832 -0.369695 0.916498 +vn 0.155865 -0.368425 0.916498 +vn 0.559794 -0.735254 0.382141 +vn 0.574062 -0.724168 0.382143 +vn 0.639490 -0.667094 -0.382149 +vn 0.652412 -0.654464 -0.382147 +vn 0.382790 -0.116238 -0.916494 +vn 0.383733 -0.113088 -0.916493 +vn -0.238642 0.321561 -0.916323 +vn -0.235961 0.323534 -0.916323 +vn -0.729941 0.566723 -0.382116 +vn -0.718403 0.581280 -0.382114 +vn -0.790988 0.477837 0.382112 +vn -0.781224 0.493638 0.382114 +vn -0.384505 0.111837 0.916323 +vn -0.383562 0.115029 0.916323 +vn 0.236868 -0.322377 0.916497 +vn 0.239509 -0.320419 0.916497 +vn 0.719486 -0.579920 0.382142 +vn 0.730686 -0.565742 0.382144 +vn 0.780555 -0.494670 -0.382146 +vn 0.790078 -0.479314 -0.382144 +vn 0.399484 -0.021253 -0.916494 +vn 0.399646 -0.017969 -0.916493 +vn -0.308664 0.255109 -0.916322 +vn -0.306533 0.257667 -0.916322 +vn -0.844356 0.375569 -0.382113 +vn -0.836638 0.392464 -0.382112 +vn -0.882358 0.274655 0.382111 +vn -0.876659 0.292334 0.382113 +vn -0.400093 0.016565 0.916325 +vn -0.399941 0.019890 0.916325 +vn 0.307141 -0.256330 0.916493 +vn 0.309237 -0.253797 0.916493 +vn 0.837363 -0.390883 0.382143 +vn 0.844845 -0.374437 0.382145 +vn 0.876256 -0.293498 -0.382144 +vn 0.881827 -0.276310 -0.382143 +vn 0.392958 0.074972 -0.916495 +vn 0.392329 0.078199 -0.916495 +vn -0.360747 0.173832 -0.916321 +vn -0.359290 0.176825 -0.916321 +vn -0.909700 0.162590 -0.382113 +vn -0.906249 0.180842 -0.382111 +vn -0.922447 0.055508 0.382113 +vn -0.921145 0.074037 0.382114 +vn -0.392431 -0.079668 0.916325 +vn -0.393079 -0.076403 0.916325 +vn 0.359559 -0.175376 0.916494 +vn 0.360987 -0.172414 0.916494 +vn 0.906575 -0.179134 0.382142 +vn 0.909904 -0.161375 0.382143 +vn 0.921032 -0.075269 -0.382144 +vn 0.922329 -0.057246 -0.382142 +vn 0.363597 0.166835 -0.916495 +vn 0.362214 0.169818 -0.916495 +vn -0.391862 0.082444 -0.916323 +vn -0.391164 0.085699 -0.916322 +vn -0.922176 -0.059841 -0.382114 +vn -0.923193 -0.041294 -0.382112 +vn -0.908927 -0.166859 0.382113 +vn -0.912096 -0.148557 0.382115 +vn -0.361967 -0.171267 0.916323 +vn -0.363378 -0.168252 0.916323 +vn 0.391078 -0.084228 0.916495 +vn 0.391756 -0.081011 0.916496 +vn 0.923102 0.043030 0.382141 +vn 0.922083 0.061070 0.382143 +vn 0.912282 0.147336 -0.382143 +vn 0.909228 0.165145 -0.382141 +vn 0.313107 0.249000 -0.916495 +vn 0.311051 0.251565 -0.916495 +vn -0.400204 -0.013734 -0.916323 +vn -0.400305 -0.010407 -0.916323 +vn -0.881057 -0.278793 -0.382117 +vn -0.886483 -0.261029 -0.382115 +vn -0.842583 -0.379529 0.382115 +vn -0.850040 -0.362517 0.382116 +vn -0.310464 -0.252912 0.916323 +vn -0.312555 -0.250322 0.916323 +vn 0.399874 0.011808 0.916494 +vn 0.399763 0.015094 0.916494 +vn 0.885979 0.262694 0.382144 +vn 0.880673 0.279965 0.382146 +vn 0.850512 0.361378 -0.382145 +vn 0.843285 0.377938 -0.382144 +vn 0.244421 0.316695 -0.916495 +vn 0.241810 0.318694 -0.916494 +vn -0.385289 -0.109108 -0.916323 +vn -0.386183 -0.105901 -0.916323 +vn -0.788735 -0.481543 -0.382117 +vn -0.798255 -0.465593 -0.382115 +vn -0.727272 -0.570144 0.382115 +vn -0.738583 -0.555411 0.382117 +vn -0.240917 -0.319862 0.916323 +vn -0.243567 -0.317848 0.916323 +vn 0.385429 0.107160 0.916494 +vn 0.384534 0.110324 0.916495 +vn 0.797366 0.467087 0.382148 +vn 0.788081 0.482587 0.382150 +vn 0.739312 0.554418 -0.382150 +vn 0.728331 0.568767 -0.382148 +vn 0.161529 0.365987 -0.916494 +vn 0.158515 0.367303 -0.916494 +vn -0.347981 -0.198141 -0.916324 +vn -0.349617 -0.195242 -0.916324 +vn -0.650577 -0.656307 -0.382114 +vn -0.663637 -0.643099 -0.382113 +vn -0.569697 -0.727623 0.382113 +vn -0.584205 -0.716026 0.382115 +vn -0.157367 -0.368224 0.916323 +vn -0.160423 -0.366902 0.916323 +vn 0.348581 0.196289 0.916494 +vn 0.346956 0.199147 0.916495 +vn 0.662415 0.644336 0.382148 +vn 0.649690 0.657164 0.382150 +vn 0.585145 0.715239 -0.382150 +vn 0.571050 0.726544 -0.382148 +vn 0.069247 0.394009 -0.916494 +vn 0.066006 0.394566 -0.916494 +vn -0.290451 -0.275661 -0.916324 +vn -0.292733 -0.273237 -0.916324 +vn -0.474606 -0.792930 -0.382114 +vn -0.490448 -0.783231 -0.382113 +vn -0.379009 -0.842818 0.382113 +vn -0.395872 -0.835029 0.382115 +vn -0.064675 -0.395182 0.916323 +vn -0.067957 -0.394630 0.916324 +vn 0.291478 0.274006 0.916494 +vn 0.289216 0.276391 0.916494 +vn 0.488969 0.784139 0.382146 +vn 0.473544 0.793548 0.382148 +vn 0.396975 0.834491 -0.382147 +vn 0.380584 0.842093 -0.382145 +vn -0.027058 0.399133 -0.916494 +vn -0.030338 0.398898 -0.916493 +vn -0.216040 -0.337162 -0.916323 +vn -0.218836 -0.335355 -0.916323 +vn -0.271060 -0.883466 -0.382117 +vn -0.288761 -0.877841 -0.382115 +vn -0.166291 -0.909031 0.382112 +vn -0.184529 -0.905504 0.382114 +vn 0.031778 -0.399176 0.916323 +vn 0.028458 -0.399426 0.916324 +vn 0.217437 0.335796 0.916495 +vn 0.214669 0.337571 0.916495 +vn 0.287103 0.878371 0.382146 +vn 0.269874 0.883816 0.382148 +vn 0.185735 0.905244 -0.382147 +vn 0.168000 0.908703 -0.382146 +vn -0.121789 0.381059 -0.916494 +vn -0.124917 0.380045 -0.916494 +vn -0.129075 -0.379066 -0.916324 +vn -0.132222 -0.377980 -0.916323 +vn -0.051755 -0.922663 -0.382119 +vn -0.070290 -0.921437 -0.382118 +vn 0.056087 -0.922412 0.382112 +vn 0.037536 -0.923353 0.382114 +vn 0.126384 -0.379973 0.916323 +vn 0.123221 -0.381010 0.916323 +vn 0.130757 0.378075 0.916494 +vn 0.127645 0.379136 0.916495 +vn 0.068552 0.921556 0.382147 +vn 0.050521 0.922719 0.382148 +vn -0.036302 0.923388 -0.382147 +vn -0.054349 0.922503 -0.382145 +vn -0.209443 0.340837 -0.916495 +vn -0.212237 0.339105 -0.916495 +vn -0.034606 -0.398942 -0.916323 +vn -0.037922 -0.398641 -0.916323 +vn 0.170563 -0.908238 -0.382116 +vn 0.152273 -0.911483 -0.382114 +vn 0.275199 -0.882187 0.382115 +vn 0.257413 -0.887539 0.382116 +vn 0.213645 -0.338685 0.916323 +vn 0.210821 -0.340449 0.916324 +vn 0.036480 0.398378 0.916496 +vn 0.033205 0.398663 0.916496 +vn -0.153983 0.911183 0.382145 +vn -0.171770 0.907997 0.382147 +vn -0.256227 0.887869 -0.382146 +vn -0.273538 0.882691 -0.382144 +vn -0.284927 0.280814 -0.916493 +vn -0.287226 0.278463 -0.916493 +vn 0.061873 -0.395633 -0.916322 +vn 0.058582 -0.396134 -0.916322 +vn 0.382963 -0.841029 -0.382113 +vn 0.365982 -0.848557 -0.382111 +vn 0.478324 -0.790693 0.382113 +vn 0.462335 -0.800146 0.382116 +vn 0.288489 -0.277714 0.916324 +vn 0.286170 -0.280102 0.916324 +vn -0.059917 0.395530 0.916497 +vn -0.063166 0.395023 0.916497 +vn -0.367573 0.847855 0.382142 +vn -0.384079 0.840506 0.382143 +vn -0.461261 0.800751 -0.382147 +vn -0.476829 0.791580 -0.382146 +vn -0.343851 0.204467 -0.916493 +vn -0.345520 0.201634 -0.916493 +vn 0.154757 -0.369332 -0.916321 +vn 0.151682 -0.370606 -0.916321 +vn 0.573104 -0.724941 -0.382115 +vn 0.558419 -0.736314 -0.382113 +vn 0.653651 -0.653246 0.382112 +vn 0.640389 -0.666252 0.382113 +vn 0.346568 -0.200605 0.916324 +vn 0.344887 -0.203478 0.916324 +vn -0.152835 0.369698 0.916496 +vn -0.155868 0.368429 0.916496 +vn -0.559795 0.735254 0.382141 +vn -0.574062 0.724168 0.382143 +vn -0.639491 0.667094 -0.382147 +vn -0.652412 0.654464 -0.382145 +vn -0.382790 0.116238 -0.916494 +vn -0.383733 0.113088 -0.916493 +vn 0.238645 -0.321564 -0.916322 +vn 0.235964 -0.323537 -0.916321 +vn 0.729940 -0.566723 -0.382117 +vn 0.718403 -0.581279 -0.382115 +vn 0.790989 -0.477835 0.382113 +vn 0.781224 -0.493636 0.382115 +vn 0.384505 -0.111837 0.916323 +vn 0.383562 -0.115029 0.916323 +vn -0.236871 0.322380 0.916495 +vn -0.239512 0.320422 0.916495 +vn -0.719485 0.579920 0.382145 +vn -0.730685 0.565741 0.382147 +vn -0.780555 0.494668 -0.382148 +vn -0.790078 0.479312 -0.382147 +vn -0.399487 0.021258 -0.916492 +vn -0.399649 0.017974 -0.916492 +vn 0.308662 -0.255105 -0.916324 +vn 0.306531 -0.257663 -0.916323 +vn 0.844355 -0.375567 -0.382118 +vn 0.836637 -0.392462 -0.382116 +vn 0.882357 -0.274653 0.382116 +vn 0.876657 -0.292333 0.382117 +vn 0.400097 -0.016569 0.916323 +vn 0.399944 -0.019894 0.916324 +vn -0.307142 0.256329 0.916493 +vn -0.309238 0.253796 0.916493 +vn -0.837361 0.390882 0.382148 +vn -0.844843 0.374436 0.382149 +vn -0.876255 0.293494 -0.382150 +vn -0.881827 0.276306 -0.382148 +vn -0.392963 -0.074963 -0.916494 +vn -0.392334 -0.078190 -0.916494 +vn 0.360743 -0.173822 -0.916324 +vn 0.359286 -0.176815 -0.916324 +vn 0.909697 -0.162587 -0.382121 +vn 0.906246 -0.180838 -0.382119 +vn 0.922444 -0.055512 0.382119 +vn 0.921142 -0.074040 0.382121 +vn 0.392434 0.079666 0.916324 +vn 0.393082 0.076401 0.916324 +vn -0.359555 0.175370 0.916496 +vn -0.360983 0.172408 0.916497 +vn -0.906573 0.179138 0.382145 +vn -0.909902 0.161379 0.382147 +vn -0.921031 0.075261 -0.382150 +vn -0.922327 0.057238 -0.382148 +vn -0.363597 -0.166835 -0.916495 +vn -0.362214 -0.169818 -0.916495 +vn 0.391859 -0.082437 -0.916325 +vn 0.391161 -0.085692 -0.916324 +vn 0.922175 0.059837 -0.382117 +vn 0.923191 0.041290 -0.382116 +vn 0.908926 0.166854 0.382116 +vn 0.912095 0.148552 0.382119 +vn 0.361967 0.171266 0.916323 +vn 0.363377 0.168252 0.916323 +vn -0.391075 0.084224 0.916497 +vn -0.391754 0.081007 0.916497 +vn -0.923101 -0.043029 0.382144 +vn -0.922082 -0.061071 0.382145 +vn -0.912280 -0.147342 -0.382146 +vn -0.909226 -0.165149 -0.382144 +vn -0.313105 -0.249003 -0.916495 +vn -0.311049 -0.251568 -0.916494 +vn 0.400204 0.013734 -0.916323 +vn 0.400304 0.010407 -0.916323 +vn 0.881057 0.278792 -0.382117 +vn 0.886484 0.261027 -0.382114 +vn 0.842583 0.379530 0.382115 +vn 0.850040 0.362518 0.382116 +vn 0.310465 0.252912 0.916323 +vn 0.312556 0.250322 0.916323 +vn -0.399874 -0.011806 0.916494 +vn -0.399762 -0.015093 0.916495 +vn -0.885978 -0.262699 0.382142 +vn -0.880672 -0.279970 0.382144 +vn -0.850514 -0.361377 -0.382143 +vn -0.843286 -0.377938 -0.382141 +vn -0.244420 -0.316694 -0.916495 +vn -0.241809 -0.318693 -0.916495 +vn 0.385290 0.109105 -0.916323 +vn 0.386184 0.105899 -0.916323 +vn 0.788734 0.481546 -0.382117 +vn 0.798253 0.465596 -0.382115 +vn 0.727272 0.570143 0.382115 +vn 0.738584 0.555411 0.382117 +vn 0.240915 0.319863 0.916323 +vn 0.243565 0.317849 0.916323 +vn -0.385426 -0.107163 0.916495 +vn -0.384532 -0.110327 0.916495 +vn -0.797369 -0.467088 0.382141 +vn -0.788083 -0.482588 0.382143 +vn -0.739312 -0.554422 -0.382143 +vn -0.728332 -0.568771 -0.382141 +vn -0.161525 -0.365993 -0.916493 +vn -0.158511 -0.367309 -0.916492 +vn 0.347980 0.198143 -0.916324 +vn 0.349616 0.195244 -0.916324 +vn 0.650577 0.656305 -0.382117 +vn 0.663636 0.643098 -0.382115 +vn 0.569690 0.727627 0.382115 +vn 0.584200 0.716029 0.382116 +vn 0.157371 0.368217 0.916325 +vn 0.160426 0.366896 0.916325 +vn -0.348586 -0.196285 0.916493 +vn -0.346961 -0.199143 0.916494 +vn -0.662413 -0.644340 0.382145 +vn -0.649687 -0.657168 0.382148 +vn -0.585151 -0.715235 -0.382148 +vn -0.571056 -0.726539 -0.382147 +vn -0.069247 -0.394011 -0.916494 +vn -0.066006 -0.394567 -0.916493 +vn 0.290453 0.275659 -0.916324 +vn 0.292735 0.273236 -0.916323 +vn 0.474603 0.792931 -0.382116 +vn 0.490446 0.783231 -0.382115 +vn 0.379007 0.842818 0.382115 +vn 0.395868 0.835030 0.382117 +vn 0.064675 0.395181 0.916324 +vn 0.067959 0.394629 0.916324 +vn -0.291480 -0.274006 0.916493 +vn -0.289217 -0.276393 0.916494 +vn -0.488966 -0.784141 0.382146 +vn -0.473542 -0.793550 0.382148 +vn -0.396978 -0.834489 -0.382148 +vn -0.380585 -0.842093 -0.382145 +vn 0.027059 -0.399132 -0.916494 +vn 0.030339 -0.398898 -0.916494 +vn 0.216038 0.337165 -0.916323 +vn 0.218834 0.335357 -0.916323 +vn 0.271057 0.883468 -0.382116 +vn 0.288756 0.877843 -0.382114 +vn 0.166293 0.909030 0.382114 +vn 0.184532 0.905503 0.382116 +vn -0.031778 0.399177 0.916323 +vn -0.028459 0.399427 0.916323 +vn -0.217439 -0.335795 0.916495 +vn -0.214672 -0.337569 0.916495 +vn -0.287101 -0.878374 0.382143 +vn -0.269871 -0.883819 0.382144 +vn -0.185735 -0.905245 -0.382144 +vn -0.168001 -0.908704 -0.382142 +vn 0.121790 -0.381057 -0.916495 +vn 0.124917 -0.380044 -0.916495 +vn 0.129075 0.379066 -0.916323 +vn 0.132221 0.377982 -0.916323 +vn 0.051750 0.922663 -0.382118 +vn 0.070286 0.921437 -0.382117 +vn -0.056080 0.922410 0.382119 +vn -0.037530 0.923350 0.382120 +vn -0.126388 0.379978 0.916320 +vn -0.123224 0.381015 0.916321 +vn -0.130758 -0.378074 0.916495 +vn -0.127645 -0.379136 0.916495 +vn -0.068548 -0.921557 0.382144 +vn -0.050517 -0.922720 0.382146 +vn 0.036301 -0.923389 -0.382146 +vn 0.054349 -0.922503 -0.382144 +vn 0.209445 -0.340841 -0.916493 +vn 0.212240 -0.339110 -0.916493 +vn 0.034605 0.398943 -0.916323 +vn 0.037921 0.398641 -0.916323 +vn -0.170559 0.908237 -0.382119 +vn -0.152272 0.911482 -0.382117 +vn -0.275203 0.882186 0.382114 +vn -0.257415 0.887538 0.382117 +vn -0.213642 0.338681 0.916326 +vn -0.210820 0.340446 0.916325 +vn -0.036479 -0.398379 0.916495 +vn -0.033205 -0.398663 0.916496 +vn 0.153986 -0.911183 0.382145 +vn 0.171773 -0.907997 0.382146 +vn 0.256228 -0.887869 -0.382147 +vn 0.273538 -0.882690 -0.382146 +vn 0.284930 -0.280818 -0.916491 +vn 0.287228 -0.278467 -0.916491 +vn -0.061873 0.395632 -0.916323 +vn -0.058583 0.396135 -0.916322 +vn -0.382961 0.841028 -0.382118 +vn -0.365979 0.848555 -0.382117 +vn -0.478327 0.790692 0.382111 +vn -0.462338 0.800146 0.382112 +vn -0.288489 0.277715 0.916323 +vn -0.286169 0.280102 0.916324 +vn 0.059918 -0.395529 0.916497 +vn 0.063167 -0.395023 0.916497 +vn 0.367572 -0.847854 0.382144 +vn 0.384078 -0.840505 0.382146 +vn 0.461263 -0.800750 -0.382147 +vn 0.476831 -0.791579 -0.382144 +vn 0.343852 -0.204471 -0.916492 +vn 0.345522 -0.201639 -0.916491 +vn -0.154752 0.369325 -0.916325 +vn -0.151676 0.370598 -0.916325 +vn -0.573105 0.724939 -0.382117 +vn -0.558419 0.736313 -0.382115 +vn -0.653651 0.653248 0.382109 +vn -0.640390 0.666252 0.382112 +vn -0.346572 0.200612 0.916320 +vn -0.344892 0.203487 0.916320 +vn 0.152836 -0.369698 0.916496 +vn 0.155868 -0.368428 0.916497 +vn 0.559796 -0.735251 0.382144 +vn 0.574064 -0.724166 0.382145 +vn 0.639491 -0.667095 -0.382147 +vn 0.652412 -0.654464 -0.382146 +vn 0.382791 -0.116238 -0.916493 +vn 0.383733 -0.113088 -0.916493 +vn -0.238643 0.321560 -0.916324 +vn -0.235962 0.323534 -0.916323 +vn -0.729942 0.566721 -0.382115 +vn -0.718405 0.581277 -0.382115 +vn -0.790988 0.477837 0.382112 +vn -0.781224 0.493639 0.382112 +vn -0.384508 0.111842 0.916321 +vn -0.383564 0.115033 0.916322 +vn 0.236868 -0.322376 0.916497 +vn 0.239510 -0.320419 0.916497 +vn 0.719486 -0.579919 0.382144 +vn 0.730686 -0.565740 0.382146 +vn 0.780555 -0.494667 -0.382148 +vn 0.790078 -0.479313 -0.382146 +vn 0.399485 -0.021253 -0.916493 +vn 0.399648 -0.017970 -0.916493 +vn -0.308662 0.255105 -0.916324 +vn -0.306531 0.257662 -0.916323 +vn -0.844357 0.375566 -0.382115 +vn -0.836638 0.392463 -0.382113 +vn -0.882358 0.274654 0.382113 +vn -0.876658 0.292332 0.382115 +vn -0.400097 0.016569 0.916323 +vn -0.399945 0.019895 0.916323 +vn 0.307138 -0.256322 0.916496 +vn 0.309233 -0.253787 0.916497 +vn 0.837362 -0.390884 0.382145 +vn 0.844843 -0.374439 0.382145 +vn 0.876255 -0.293494 -0.382150 +vn 0.881827 -0.276303 -0.382149 +vn 0.392964 0.074967 -0.916493 +vn 0.392335 0.078196 -0.916493 +vn -0.360745 0.173825 -0.916323 +vn -0.359288 0.176819 -0.916323 +vn -0.909700 0.162584 -0.382115 +vn -0.906249 0.180834 -0.382114 +vn -0.922447 0.055510 0.382112 +vn -0.921145 0.074041 0.382113 +vn -0.392434 -0.079666 0.916324 +vn -0.393081 -0.076402 0.916324 +vn 0.359557 -0.175370 0.916496 +vn 0.360986 -0.172409 0.916495 +vn 0.906573 -0.179134 0.382147 +vn 0.909901 -0.161372 0.382149 +vn 0.921030 -0.075260 -0.382152 +vn 0.922326 -0.057240 -0.382151 +vn 0.363600 0.166837 -0.916494 +vn 0.362218 0.169819 -0.916493 +vn -0.391861 0.082443 -0.916323 +vn -0.391163 0.085697 -0.916323 +vn -0.922175 -0.059845 -0.382115 +vn -0.923193 -0.041297 -0.382113 +vn -0.908926 -0.166861 0.382113 +vn -0.912095 -0.148561 0.382115 +vn -0.361967 -0.171264 0.916324 +vn -0.363378 -0.168248 0.916324 +vn 0.391084 -0.084234 0.916492 +vn 0.391763 -0.081016 0.916493 +vn 0.923097 0.043035 0.382151 +vn 0.922079 0.061074 0.382153 +vn 0.912278 0.147340 -0.382152 +vn 0.909223 0.165150 -0.382151 +vn 0.313111 0.248998 -0.916494 +vn 0.311054 0.251564 -0.916494 +vn -0.400205 -0.013728 -0.916323 +vn -0.400306 -0.010401 -0.916322 +vn -0.881055 -0.278798 -0.382117 +vn -0.886481 -0.261034 -0.382115 +vn -0.842583 -0.379529 0.382115 +vn -0.850041 -0.362516 0.382116 +vn -0.310462 -0.252914 0.916323 +vn -0.312553 -0.250324 0.916323 +vn 0.399874 0.011810 0.916494 +vn 0.399763 0.015096 0.916494 +vn 0.885979 0.262690 0.382146 +vn 0.880673 0.279962 0.382147 +vn 0.850507 0.361386 -0.382148 +vn 0.843280 0.377945 -0.382146 +vn 0.244417 0.316699 -0.916495 +vn 0.241806 0.318698 -0.916494 +vn -0.385286 -0.109110 -0.916324 +vn -0.386180 -0.105904 -0.916324 +vn -0.788735 -0.481543 -0.382117 +vn -0.798255 -0.465594 -0.382115 +vn -0.727270 -0.570147 0.382115 +vn -0.738581 -0.555414 0.382117 +vn -0.240917 -0.319859 0.916324 +vn -0.243568 -0.317844 0.916324 +vn 0.385428 0.107159 0.916494 +vn 0.384534 0.110323 0.916495 +vn 0.797365 0.467092 0.382144 +vn 0.788079 0.482593 0.382146 +vn 0.739314 0.554419 -0.382145 +vn 0.728333 0.568768 -0.382144 +vn 0.161527 0.365986 -0.916495 +vn 0.158514 0.367302 -0.916495 +vn -0.347982 -0.198137 -0.916324 +vn -0.349618 -0.195239 -0.916324 +vn -0.650572 -0.656312 -0.382114 +vn -0.663633 -0.643103 -0.382112 +vn -0.569698 -0.727622 0.382113 +vn -0.584206 -0.716025 0.382115 +vn -0.157363 -0.368223 0.916323 +vn -0.160419 -0.366902 0.916324 +vn 0.348579 0.196290 0.916495 +vn 0.346954 0.199148 0.916495 +vn 0.662413 0.644340 0.382146 +vn 0.649688 0.657167 0.382148 +vn 0.585145 0.715240 -0.382147 +vn 0.571049 0.726545 -0.382146 +vn 0.069242 0.394013 -0.916493 +vn 0.066001 0.394571 -0.916492 +vn -0.290452 -0.275659 -0.916324 +vn -0.292735 -0.273235 -0.916324 +vn -0.474606 -0.792929 -0.382117 +vn -0.490446 -0.783231 -0.382115 +vn -0.379005 -0.842819 0.382115 +vn -0.395870 -0.835029 0.382117 +vn -0.064672 -0.395183 0.916323 +vn -0.067955 -0.394632 0.916323 +vn 0.291477 0.274005 0.916495 +vn 0.289215 0.276390 0.916495 +vn 0.488963 0.784144 0.382144 +vn 0.473537 0.793554 0.382145 +vn 0.396977 0.834491 -0.382145 +vn 0.380587 0.842093 -0.382144 +vn -0.027060 0.399133 -0.916494 +vn -0.030338 0.398896 -0.916494 +vn -0.216038 -0.337164 -0.916323 +vn -0.218834 -0.335358 -0.916322 +vn -0.271049 -0.883470 -0.382117 +vn -0.288753 -0.877843 -0.382116 +vn -0.166295 -0.909029 0.382117 +vn -0.184530 -0.905502 0.382118 +vn 0.031782 -0.399180 0.916322 +vn 0.028462 -0.399429 0.916322 +vn 0.217435 0.335797 0.916494 +vn 0.214668 0.337573 0.916495 +vn 0.287100 0.878374 0.382141 +vn 0.269872 0.883819 0.382143 +vn 0.185735 0.905245 -0.382143 +vn 0.167999 0.908705 -0.382141 +vn -0.121787 0.381054 -0.916497 +vn -0.124915 0.380041 -0.916496 +vn -0.129068 -0.379075 -0.916321 +vn -0.132215 -0.377989 -0.916321 +vn -0.051747 -0.922664 -0.382117 +vn -0.070280 -0.921439 -0.382115 +vn 0.056087 -0.922412 0.382114 +vn 0.037535 -0.923352 0.382117 +vn 0.126385 -0.379973 0.916323 +vn 0.123223 -0.381011 0.916323 +vn 0.130760 0.378071 0.916496 +vn 0.127648 0.379131 0.916496 +vn 0.068545 0.921558 0.382143 +vn 0.050512 0.922721 0.382144 +vn -0.036303 0.923389 -0.382145 +vn -0.054349 0.922503 -0.382144 +vn -0.209446 0.340841 -0.916493 +vn -0.212240 0.339109 -0.916493 +vn -0.034605 -0.398941 -0.916323 +vn -0.037920 -0.398642 -0.916322 +vn 0.170566 -0.908238 -0.382114 +vn 0.152276 -0.911483 -0.382114 +vn 0.275205 -0.882186 0.382112 +vn 0.257419 -0.887539 0.382114 +vn 0.213646 -0.338686 0.916323 +vn 0.210822 -0.340449 0.916324 +vn 0.036474 0.398385 0.916493 +vn 0.033197 0.398672 0.916493 +vn -0.153991 0.911182 0.382143 +vn -0.171775 0.907997 0.382145 +vn -0.256228 0.887868 -0.382148 +vn -0.273540 0.882690 -0.382146 +vn -0.284930 0.280817 -0.916492 +vn -0.287229 0.278467 -0.916491 +vn 0.061881 -0.395640 -0.916318 +vn 0.058589 -0.396140 -0.916319 +vn 0.382960 -0.841027 -0.382119 +vn 0.365981 -0.848555 -0.382115 +vn 0.478327 -0.790691 0.382112 +vn 0.462338 -0.800145 0.382115 +vn 0.288484 -0.277705 0.916328 +vn 0.286166 -0.280095 0.916328 +vn -0.059930 0.395545 0.916489 +vn -0.063178 0.395037 0.916490 +vn -0.367573 0.847854 0.382145 +vn -0.384079 0.840504 0.382146 +vn -0.461264 0.800748 -0.382150 +vn -0.476831 0.791577 -0.382149 +vn -0.343849 0.204463 -0.916495 +vn -0.345518 0.201630 -0.916495 +vn 0.154763 -0.369338 -0.916318 +vn 0.151689 -0.370613 -0.916317 +vn 0.573105 -0.724935 -0.382125 +vn 0.558419 -0.736308 -0.382124 +vn 0.653653 -0.653244 0.382114 +vn 0.640390 -0.666249 0.382115 +vn 0.346568 -0.200605 0.916323 +vn 0.344887 -0.203477 0.916324 +vn -0.152841 0.369704 0.916492 +vn -0.155874 0.368436 0.916492 +vn -0.559796 0.735248 0.382150 +vn -0.574064 0.724161 0.382153 +vn -0.639492 0.667095 -0.382144 +vn -0.652413 0.654466 -0.382140 +vn -0.382790 0.116237 -0.916494 +vn -0.383734 0.113089 -0.916493 +vn 0.238643 -0.321560 -0.916324 +vn 0.235962 -0.323532 -0.916323 +vn 0.729945 -0.566712 -0.382124 +vn 0.718407 -0.581270 -0.382122 +vn 0.790988 -0.477838 0.382110 +vn 0.781224 -0.493638 0.382113 +vn 0.384505 -0.111836 0.916324 +vn 0.383562 -0.115030 0.916323 +vn -0.236870 0.322377 0.916497 +vn -0.239510 0.320417 0.916498 +vn -0.719488 0.579914 0.382148 +vn -0.730688 0.565737 0.382148 +vn -0.780555 0.494674 -0.382140 +vn -0.790079 0.479317 -0.382141 +vn -0.399485 0.021254 -0.916494 +vn -0.399646 0.017969 -0.916494 +vn 0.308662 -0.255105 -0.916324 +vn 0.306532 -0.257663 -0.916323 +vn 0.844357 -0.375564 -0.382116 +vn 0.836639 -0.392457 -0.382115 +vn 0.882358 -0.274656 0.382112 +vn 0.876658 -0.292336 0.382112 +vn 0.400093 -0.016561 0.916325 +vn 0.399939 -0.019885 0.916326 +vn -0.307140 0.256323 0.916495 +vn -0.309237 0.253792 0.916495 +vn -0.837362 0.390886 0.382144 +vn -0.844844 0.374437 0.382147 +vn -0.876257 0.293491 -0.382149 +vn -0.881828 0.276304 -0.382147 +vn -0.392959 -0.074973 -0.916495 +vn -0.392331 -0.078199 -0.916494 +vn 0.360745 -0.173826 -0.916323 +vn 0.359288 -0.176818 -0.916323 +vn 0.909701 -0.162586 -0.382112 +vn 0.906250 -0.180839 -0.382110 +vn 0.922448 -0.055512 0.382109 +vn 0.921145 -0.074039 0.382112 +vn 0.392435 0.079662 0.916324 +vn 0.393083 0.076396 0.916324 +vn -0.359564 0.175382 0.916490 +vn -0.360992 0.172419 0.916491 +vn -0.906574 0.179124 0.382149 +vn -0.909902 0.161366 0.382150 +vn -0.921031 0.075265 -0.382148 +vn -0.922327 0.057241 -0.382147 +vn -0.363603 -0.166828 -0.916494 +vn -0.362219 -0.169812 -0.916494 +vn 0.391863 -0.082443 -0.916322 +vn 0.391165 -0.085699 -0.916322 +vn 0.922176 0.059846 -0.382112 +vn 0.923193 0.041301 -0.382111 +vn 0.908929 0.166856 0.382110 +vn 0.912099 0.148552 0.382111 +vn 0.361968 0.171264 0.916323 +vn 0.363378 0.168249 0.916324 +vn -0.391078 0.084226 0.916496 +vn -0.391757 0.081009 0.916496 +vn -0.923099 -0.043032 0.382148 +vn -0.922080 -0.061073 0.382150 +vn -0.912278 -0.147344 -0.382150 +vn -0.909223 -0.165151 -0.382149 +vn -0.313108 -0.249002 -0.916494 +vn -0.311052 -0.251567 -0.916494 +vn 0.400201 0.013736 -0.916324 +vn 0.400303 0.010409 -0.916324 +vn 0.881057 0.278795 -0.382114 +vn 0.886484 0.261030 -0.382112 +vn 0.842581 0.379536 0.382113 +vn 0.850038 0.362525 0.382115 +vn 0.310466 0.252908 0.916323 +vn 0.312557 0.250318 0.916323 +vn -0.399875 -0.011809 0.916494 +vn -0.399764 -0.015095 0.916494 +vn -0.885976 -0.262696 0.382149 +vn -0.880670 -0.279968 0.382150 +vn -0.850510 -0.361379 -0.382150 +vn -0.843282 -0.377940 -0.382148 +vn -0.244420 -0.316696 -0.916495 +vn -0.241809 -0.318694 -0.916494 +vn 0.385288 0.109107 -0.916324 +vn 0.386182 0.105901 -0.916323 +vn 0.788731 0.481549 -0.382117 +vn 0.798251 0.465600 -0.382115 +vn 0.727270 0.570145 0.382115 +vn 0.738582 0.555413 0.382117 +vn 0.240915 0.319862 0.916323 +vn 0.243565 0.317847 0.916324 +vn -0.385428 -0.107163 0.916494 +vn -0.384533 -0.110327 0.916495 +vn -0.797366 -0.467088 0.382146 +vn -0.788081 -0.482589 0.382148 +vn -0.739310 -0.554422 -0.382148 +vn -0.728329 -0.568772 -0.382146 +vn -0.161523 -0.365987 -0.916495 +vn -0.158510 -0.367303 -0.916495 +vn 0.347981 0.198143 -0.916323 +vn 0.349617 0.195244 -0.916323 +vn 0.650576 0.656307 -0.382114 +vn 0.663635 0.643100 -0.382113 +vn 0.569688 0.727631 0.382112 +vn 0.584198 0.716032 0.382114 +vn 0.157369 0.368220 0.916324 +vn 0.160424 0.366898 0.916324 +vn -0.348582 -0.196283 0.916495 +vn -0.346956 -0.199140 0.916496 +vn -0.662412 -0.644342 0.382144 +vn -0.649687 -0.657170 0.382145 +vn -0.585148 -0.715239 -0.382146 +vn -0.571053 -0.726543 -0.382144 +vn -0.069247 -0.394006 -0.916496 +vn -0.066007 -0.394562 -0.916496 +vn 0.290454 0.275657 -0.916324 +vn 0.292736 0.273234 -0.916324 +vn 0.474608 0.792930 -0.382113 +vn 0.490450 0.783231 -0.382111 +vn 0.379000 0.842823 0.382109 +vn 0.395863 0.835036 0.382111 +vn 0.064671 0.395187 0.916322 +vn 0.067954 0.394634 0.916322 +vn -0.291478 -0.274004 0.916495 +vn -0.289215 -0.276391 0.916495 +vn -0.488966 -0.784142 0.382144 +vn -0.473542 -0.793550 0.382146 +vn -0.396972 -0.834493 -0.382144 +vn -0.380578 -0.842097 -0.382142 +vn 0.027063 -0.399136 -0.916492 +vn 0.030343 -0.398902 -0.916492 +vn 0.216037 0.337164 -0.916323 +vn 0.218834 0.335356 -0.916323 +vn 0.271059 0.883468 -0.382115 +vn 0.288760 0.877842 -0.382113 +vn 0.166281 0.909035 0.382107 +vn 0.184519 0.905508 0.382110 +vn -0.031778 0.399175 0.916324 +vn -0.028459 0.399426 0.916324 +vn -0.217439 -0.335795 0.916494 +vn -0.214672 -0.337569 0.916495 +vn -0.287096 -0.878373 0.382147 +vn -0.269865 -0.883819 0.382148 +vn -0.185732 -0.905244 -0.382148 +vn -0.168000 -0.908702 -0.382148 +vn 0.121793 -0.381061 -0.916493 +vn 0.124921 -0.380046 -0.916493 +vn 0.129068 0.379073 -0.916322 +vn 0.132214 0.377988 -0.916321 +vn 0.051748 0.922665 -0.382115 +vn 0.070284 0.921439 -0.382113 +vn -0.056086 0.922413 0.382112 +vn -0.037537 0.923353 0.382112 +vn -0.126389 0.379976 0.916321 +vn -0.123225 0.381012 0.916322 +vn -0.130757 -0.378074 0.916495 +vn -0.127645 -0.379136 0.916495 +vn -0.068545 -0.921556 0.382146 +vn -0.050515 -0.922719 0.382148 +vn 0.036300 -0.923387 -0.382149 +vn 0.054348 -0.922502 -0.382147 +vn 0.209441 -0.340832 -0.916498 +vn 0.212236 -0.339100 -0.916497 +vn 0.034599 0.398949 -0.916320 +vn 0.037915 0.398648 -0.916320 +vn -0.170563 0.908237 -0.382117 +vn -0.152275 0.911483 -0.382114 +vn -0.275200 0.882186 0.382117 +vn -0.257413 0.887538 0.382120 +vn -0.213650 0.338691 0.916320 +vn -0.210828 0.340455 0.916320 +vn -0.036479 -0.398377 0.916496 +vn -0.033204 -0.398662 0.916497 +vn 0.153991 -0.911183 0.382142 +vn 0.171778 -0.907998 0.382142 +vn 0.256230 -0.887869 -0.382145 +vn 0.273540 -0.882690 -0.382143 +vn 0.284925 -0.280809 -0.916495 +vn 0.287224 -0.278458 -0.916495 +vn -0.061867 0.395624 -0.916327 +vn -0.058578 0.396127 -0.916325 +vn -0.382966 0.841028 -0.382113 +vn -0.365984 0.848555 -0.382112 +vn -0.478326 0.790691 0.382116 +vn -0.462337 0.800144 0.382117 +vn -0.288490 0.277714 0.916324 +vn -0.286170 0.280101 0.916324 +vn 0.059917 -0.395528 0.916497 +vn 0.063167 -0.395023 0.916497 +vn 0.367577 -0.847854 0.382139 +vn 0.384083 -0.840504 0.382142 +vn 0.461265 -0.800749 -0.382146 +vn 0.476833 -0.791579 -0.382143 +vn 0.343849 -0.204462 -0.916495 +vn 0.345518 -0.201630 -0.916495 +vn -0.154753 0.369325 -0.916325 +vn -0.151676 0.370597 -0.916325 +vn -0.573107 0.724937 -0.382118 +vn -0.558421 0.736311 -0.382114 +vn -0.653653 0.653246 0.382109 +vn -0.640391 0.666251 0.382112 +vn -0.346568 0.200604 0.916324 +vn -0.344888 0.203478 0.916324 +vn 0.152831 -0.369691 0.916500 +vn 0.155863 -0.368420 0.916501 +vn 0.559798 -0.735252 0.382140 +vn 0.574066 -0.724166 0.382141 +vn 0.639493 -0.667092 -0.382147 +vn 0.652415 -0.654461 -0.382146 +vn 0.382787 -0.116229 -0.916496 +vn 0.383729 -0.113078 -0.916496 +vn -0.238649 0.321567 -0.916320 +vn -0.235968 0.323541 -0.916319 +vn -0.729943 0.566717 -0.382120 +vn -0.718406 0.581272 -0.382119 +vn -0.790990 0.477835 0.382112 +vn -0.781225 0.493638 0.382112 +vn -0.384506 0.111837 0.916323 +vn -0.383562 0.115029 0.916323 +vn 0.236869 -0.322375 0.916497 +vn 0.239511 -0.320419 0.916497 +vn 0.719487 -0.579920 0.382140 +vn 0.730688 -0.565740 0.382143 +vn 0.780556 -0.494668 -0.382147 +vn 0.790079 -0.479314 -0.382144 +vn 0.399483 -0.021248 -0.916495 +vn 0.399645 -0.017964 -0.916494 +vn -0.308664 0.255105 -0.916323 +vn -0.306533 0.257662 -0.916323 +vn -0.844356 0.375571 -0.382112 +vn -0.836637 0.392467 -0.382110 +vn -0.882359 0.274642 0.382117 +vn -0.876660 0.292321 0.382119 +vn -0.400097 0.016569 0.916323 +vn -0.399945 0.019895 0.916323 +vn 0.307145 -0.256333 0.916491 +vn 0.309240 -0.253799 0.916492 +vn 0.837364 -0.390877 0.382147 +vn 0.844846 -0.374431 0.382148 +vn 0.876256 -0.293496 -0.382145 +vn 0.881828 -0.276306 -0.382144 +vn 0.392960 0.074972 -0.916494 +vn 0.392330 0.078200 -0.916494 +vn -0.360747 0.173825 -0.916322 +vn -0.359290 0.176819 -0.916322 +vn -0.909699 0.162593 -0.382113 +vn -0.906249 0.180843 -0.382111 +vn -0.922445 0.055493 0.382119 +vn -0.921143 0.074023 0.382121 +vn -0.392441 -0.079657 0.916322 +vn -0.393088 -0.076393 0.916322 +vn 0.359560 -0.175377 0.916493 +vn 0.360989 -0.172416 0.916493 +vn 0.906575 -0.179128 0.382145 +vn 0.909904 -0.161368 0.382146 +vn 0.921032 -0.075260 -0.382147 +vn 0.922328 -0.057239 -0.382145 +vn 0.363597 0.166838 -0.916495 +vn 0.362214 0.169820 -0.916494 +vn -0.391862 0.082439 -0.916323 +vn -0.391163 0.085694 -0.916323 +vn -0.922176 -0.059836 -0.382114 +vn -0.923193 -0.041288 -0.382113 +vn -0.908924 -0.166869 0.382116 +vn -0.912093 -0.148568 0.382118 +vn -0.361977 -0.171254 0.916321 +vn -0.363387 -0.168238 0.916322 +vn 0.391085 -0.084239 0.916492 +vn 0.391763 -0.081021 0.916492 +vn 0.923099 0.043036 0.382146 +vn 0.922081 0.061075 0.382148 +vn 0.912280 0.147341 -0.382148 +vn 0.909225 0.165151 -0.382146 +vn 0.313107 0.249000 -0.916495 +vn 0.311050 0.251566 -0.916495 +vn -0.400205 -0.013733 -0.916323 +vn -0.400306 -0.010406 -0.916323 +vn -0.881056 -0.278795 -0.382116 +vn -0.886483 -0.261030 -0.382114 +vn -0.842582 -0.379531 0.382115 +vn -0.850040 -0.362519 0.382116 +vn -0.310468 -0.252908 0.916323 +vn -0.312559 -0.250318 0.916323 +vn 0.399874 0.011808 0.916494 +vn 0.399763 0.015094 0.916494 +vn 0.885977 0.262697 0.382146 +vn 0.880670 0.279970 0.382148 +vn 0.850507 0.361387 -0.382148 +vn 0.843280 0.377947 -0.382146 +vn 0.244417 0.316701 -0.916494 +vn 0.241807 0.318700 -0.916493 +vn -0.385287 -0.109111 -0.916324 +vn -0.386181 -0.105904 -0.916323 +vn -0.788734 -0.481546 -0.382116 +vn -0.798253 -0.465596 -0.382115 +vn -0.727268 -0.570149 0.382115 +vn -0.738580 -0.555416 0.382117 +vn -0.240918 -0.319859 0.916323 +vn -0.243568 -0.317845 0.916324 +vn 0.385430 0.107161 0.916494 +vn 0.384535 0.110325 0.916494 +vn 0.797363 0.467093 0.382146 +vn 0.788078 0.482593 0.382148 +vn 0.739311 0.554420 -0.382148 +vn 0.728331 0.568770 -0.382146 +vn 0.161526 0.365989 -0.916494 +vn 0.158513 0.367305 -0.916494 +vn -0.347986 -0.198136 -0.916323 +vn -0.349621 -0.195237 -0.916323 +vn -0.650570 -0.656316 -0.382111 +vn -0.663631 -0.643107 -0.382110 +vn -0.569694 -0.727627 0.382110 +vn -0.584202 -0.716029 0.382112 +vn -0.157368 -0.368222 0.916323 +vn -0.160423 -0.366900 0.916324 +vn 0.348581 0.196292 0.916494 +vn 0.346955 0.199150 0.916494 +vn 0.662415 0.644340 0.382142 +vn 0.649690 0.657168 0.382143 +vn 0.585145 0.715243 -0.382143 +vn 0.571049 0.726548 -0.382141 +vn 0.069242 0.394010 -0.916494 +vn 0.066002 0.394567 -0.916494 +vn -0.290451 -0.275661 -0.916324 +vn -0.292734 -0.273237 -0.916324 +vn -0.474600 -0.792934 -0.382114 +vn -0.490441 -0.783236 -0.382111 +vn -0.379003 -0.842821 0.382113 +vn -0.395867 -0.835032 0.382114 +vn -0.064676 -0.395180 0.916324 +vn -0.067958 -0.394628 0.916324 +vn 0.291480 0.274000 0.916495 +vn 0.289218 0.276385 0.916496 +vn 0.488961 0.784148 0.382138 +vn 0.473534 0.793558 0.382140 +vn 0.396980 0.834490 -0.382142 +vn 0.380591 0.842092 -0.382141 +vn -0.027057 0.399127 -0.916497 +vn -0.030336 0.398891 -0.916497 +vn -0.216034 -0.337168 -0.916323 +vn -0.218830 -0.335361 -0.916322 +vn -0.271049 -0.883470 -0.382118 +vn -0.288752 -0.877844 -0.382116 +vn -0.166294 -0.909029 0.382117 +vn -0.184529 -0.905502 0.382119 +vn 0.031786 -0.399184 0.916320 +vn 0.028466 -0.399433 0.916320 +vn 0.217435 0.335796 0.916495 +vn 0.214666 0.337572 0.916495 +vn 0.287098 0.878374 0.382144 +vn 0.269872 0.883818 0.382146 +vn 0.185734 0.905244 -0.382146 +vn 0.167997 0.908704 -0.382144 +vn -0.121784 0.381047 -0.916500 +vn -0.124913 0.380034 -0.916499 +vn -0.129067 -0.379076 -0.916320 +vn -0.132214 -0.377990 -0.916320 +vn -0.051754 -0.922662 -0.382121 +vn -0.070287 -0.921437 -0.382118 +vn 0.056085 -0.922411 0.382117 +vn 0.037533 -0.923351 0.382119 +vn 0.126390 -0.379979 0.916320 +vn 0.123228 -0.381016 0.916320 +vn 0.130756 0.378076 0.916494 +vn 0.127645 0.379137 0.916495 +vn 0.068552 0.921555 0.382148 +vn 0.050519 0.922719 0.382149 +vn -0.036306 0.923388 -0.382147 +vn -0.054351 0.922502 -0.382146 +vn -0.209438 0.340828 -0.916500 +vn -0.212232 0.339095 -0.916500 +vn -0.034611 -0.398935 -0.916326 +vn -0.037926 -0.398636 -0.916325 +vn 0.170565 -0.908237 -0.382117 +vn 0.152274 -0.911482 -0.382116 +vn 0.275201 -0.882185 0.382119 +vn 0.257415 -0.887537 0.382120 +vn 0.213653 -0.338695 0.916318 +vn 0.210829 -0.340457 0.916319 +vn 0.036468 0.398394 0.916489 +vn 0.033190 0.398682 0.916489 +vn -0.153985 0.911182 0.382147 +vn -0.171769 0.907996 0.382150 +vn -0.256231 0.887868 -0.382146 +vn -0.273543 0.882690 -0.382143 +vn -0.284930 0.280817 -0.916492 +vn -0.287229 0.278467 -0.916491 +vn 0.061862 -0.395618 -0.916329 +vn 0.058571 -0.396119 -0.916329 +vn 0.382962 -0.841028 -0.382115 +vn 0.365982 -0.848556 -0.382112 +vn 0.478327 -0.790694 0.382108 +vn 0.462338 -0.800146 0.382112 +vn 0.288489 -0.277713 0.916324 +vn 0.286170 -0.280103 0.916324 +vn -0.059930 0.395545 0.916489 +vn -0.063177 0.395037 0.916491 +vn -0.367569 0.847853 0.382149 +vn -0.384077 0.840504 0.382149 +vn -0.461263 0.800750 -0.382145 +vn -0.476831 0.791579 -0.382146 +vn -0.343854 0.204471 -0.916491 +vn -0.345522 0.201637 -0.916492 +vn 0.154751 -0.369324 -0.916325 +vn 0.151676 -0.370599 -0.916325 +vn 0.573106 -0.724941 -0.382113 +vn 0.558420 -0.736313 -0.382112 +vn 0.653652 -0.653246 0.382111 +vn 0.640390 -0.666252 0.382110 +vn 0.346564 -0.200597 0.916327 +vn 0.344883 -0.203469 0.916328 +vn -0.152835 0.369697 0.916496 +vn -0.155868 0.368429 0.916496 +vn -0.559796 0.735251 0.382143 +vn -0.574064 0.724165 0.382145 +vn -0.639492 0.667091 -0.382151 +vn -0.652413 0.654461 -0.382149 +vn -0.382795 0.116245 -0.916491 +vn -0.383739 0.113098 -0.916490 +vn 0.238643 -0.321560 -0.916323 +vn 0.235962 -0.323533 -0.916323 +vn 0.729941 -0.566723 -0.382113 +vn 0.718404 -0.581281 -0.382111 +vn 0.790989 -0.477835 0.382114 +vn 0.781225 -0.493633 0.382117 +vn 0.384506 -0.111836 0.916323 +vn 0.383563 -0.115029 0.916323 +vn -0.236874 0.322384 0.916493 +vn -0.239515 0.320425 0.916493 +vn -0.719486 0.579922 0.382140 +vn -0.730686 0.565744 0.382141 +vn -0.780557 0.494661 -0.382153 +vn -0.790081 0.479304 -0.382152 +vn -0.399489 0.021259 -0.916492 +vn -0.399649 0.017972 -0.916492 +vn 0.308657 -0.255097 -0.916328 +vn 0.306527 -0.257655 -0.916327 +vn 0.844357 -0.375566 -0.382115 +vn 0.836638 -0.392460 -0.382114 +vn 0.882357 -0.274656 0.382112 +vn 0.876658 -0.292337 0.382113 +vn 0.400097 -0.016570 0.916323 +vn 0.399944 -0.019894 0.916324 +vn -0.307140 0.256325 0.916495 +vn -0.309236 0.253792 0.916495 +vn -0.837363 0.390880 0.382146 +vn -0.844846 0.374430 0.382149 +vn -0.876255 0.293495 -0.382149 +vn -0.881826 0.276310 -0.382146 +vn -0.392957 -0.074977 -0.916495 +vn -0.392329 -0.078203 -0.916495 +vn 0.360740 -0.173818 -0.916326 +vn 0.359282 -0.176810 -0.916327 +vn 0.909701 -0.162587 -0.382112 +vn 0.906250 -0.180839 -0.382110 +vn 0.922447 -0.055508 0.382113 +vn 0.921144 -0.074035 0.382115 +vn 0.392436 0.079662 0.916323 +vn 0.393084 0.076396 0.916323 +vn -0.359557 0.175370 0.916496 +vn -0.360985 0.172408 0.916496 +vn -0.906575 0.179117 0.382151 +vn -0.909903 0.161359 0.382152 +vn -0.921031 0.075280 -0.382145 +vn -0.922327 0.057254 -0.382144 +vn -0.363604 -0.166829 -0.916494 +vn -0.362221 -0.169813 -0.916493 +vn 0.391863 -0.082448 -0.916322 +vn 0.391165 -0.085703 -0.916322 +vn 0.922177 0.059839 -0.382111 +vn 0.923194 0.041293 -0.382109 +vn 0.908927 0.166860 0.382113 +vn 0.912096 0.148557 0.382114 +vn 0.361966 0.171266 0.916324 +vn 0.363376 0.168251 0.916324 +vn -0.391079 0.084226 0.916495 +vn -0.391758 0.081010 0.916495 +vn -0.923099 -0.043030 0.382148 +vn -0.922080 -0.061070 0.382150 +vn -0.912277 -0.147346 -0.382151 +vn -0.909223 -0.165154 -0.382149 +vn -0.313108 -0.249002 -0.916494 +vn -0.311052 -0.251567 -0.916494 +vn 0.400204 0.013731 -0.916323 +vn 0.400304 0.010403 -0.916323 +vn 0.881059 0.278792 -0.382114 +vn 0.886485 0.261026 -0.382112 +vn 0.842582 0.379533 0.382113 +vn 0.850039 0.362522 0.382115 +vn 0.310464 0.252909 0.916324 +vn 0.312556 0.250319 0.916324 +vn -0.399877 -0.011805 0.916493 +vn -0.399765 -0.015091 0.916493 +vn -0.885978 -0.262694 0.382146 +vn -0.880672 -0.279965 0.382147 +vn -0.850509 -0.361382 -0.382148 +vn -0.843282 -0.377942 -0.382146 +vn -0.244420 -0.316695 -0.916495 +vn -0.241809 -0.318694 -0.916495 +vn 0.385289 0.109105 -0.916323 +vn 0.386184 0.105898 -0.916323 +vn 0.788732 0.481548 -0.382117 +vn 0.798252 0.465599 -0.382115 +vn 0.727273 0.570142 0.382115 +vn 0.738585 0.555409 0.382117 +vn 0.240915 0.319862 0.916323 +vn 0.243565 0.317847 0.916324 +vn -0.385426 -0.107164 0.916495 +vn -0.384531 -0.110328 0.916495 +vn -0.797367 -0.467089 0.382143 +vn -0.788082 -0.482589 0.382145 +vn -0.739311 -0.554422 -0.382145 +vn -0.728331 -0.568771 -0.382144 +vn -0.161519 -0.365995 -0.916493 +vn -0.158506 -0.367311 -0.916492 +vn 0.347981 0.198142 -0.916324 +vn 0.349617 0.195242 -0.916324 +vn 0.650575 0.656306 -0.382119 +vn 0.663634 0.643099 -0.382117 +vn 0.569692 0.727625 0.382117 +vn 0.584201 0.716026 0.382119 +vn 0.157367 0.368222 0.916323 +vn 0.160422 0.366900 0.916324 +vn -0.348584 -0.196284 0.916495 +vn -0.346958 -0.199141 0.916495 +vn -0.662412 -0.644341 0.382146 +vn -0.649686 -0.657169 0.382147 +vn -0.585147 -0.715239 -0.382147 +vn -0.571051 -0.726543 -0.382146 +vn -0.069240 -0.394016 -0.916492 +vn -0.066000 -0.394572 -0.916492 +vn 0.290455 0.275657 -0.916324 +vn 0.292737 0.273234 -0.916323 +vn 0.474606 0.792927 -0.382120 +vn 0.490449 0.783228 -0.382118 +vn 0.379008 0.842816 0.382118 +vn 0.395870 0.835028 0.382119 +vn 0.064672 0.395185 0.916322 +vn 0.067955 0.394633 0.916322 +vn -0.291478 -0.274004 0.916495 +vn -0.289215 -0.276391 0.916495 +vn -0.488966 -0.784141 0.382144 +vn -0.473542 -0.793550 0.382146 +vn -0.396974 -0.834492 -0.382145 +vn -0.380582 -0.842095 -0.382142 +vn 0.027059 -0.399132 -0.916494 +vn 0.030339 -0.398897 -0.916494 +vn 0.216038 0.337165 -0.916323 +vn 0.218835 0.335358 -0.916322 +vn 0.271058 0.883466 -0.382120 +vn 0.288760 0.877840 -0.382118 +vn 0.166286 0.909032 0.382113 +vn 0.184525 0.905504 0.382116 +vn -0.031776 0.399173 0.916325 +vn -0.028457 0.399423 0.916325 +vn -0.217438 -0.335794 0.916495 +vn -0.214671 -0.337568 0.916496 +vn -0.287105 -0.878372 0.382143 +vn -0.269875 -0.883817 0.382144 +vn -0.185737 -0.905245 -0.382144 +vn -0.168004 -0.908703 -0.382143 +vn 0.121787 -0.381054 -0.916496 +vn 0.124915 -0.380041 -0.916496 +vn 0.129075 0.379066 -0.916324 +vn 0.132221 0.377982 -0.916323 +vn 0.051749 0.922664 -0.382118 +vn 0.070285 0.921437 -0.382117 +vn -0.056086 0.922411 0.382115 +vn -0.037537 0.923352 0.382116 +vn -0.126383 0.379970 0.916324 +vn -0.123219 0.381006 0.916325 +vn -0.130758 -0.378074 0.916495 +vn -0.127645 -0.379136 0.916495 +vn -0.068554 -0.921556 0.382147 +vn -0.050523 -0.922719 0.382149 +vn 0.036300 -0.923388 -0.382147 +vn 0.054348 -0.922503 -0.382145 +vn 0.209446 -0.340841 -0.916493 +vn 0.212241 -0.339109 -0.916493 +vn 0.034605 0.398943 -0.916323 +vn 0.037921 0.398641 -0.916323 +vn -0.170561 0.908237 -0.382119 +vn -0.152274 0.911482 -0.382116 +vn -0.275203 0.882186 0.382115 +vn -0.257415 0.887538 0.382118 +vn -0.213645 0.338685 0.916323 +vn -0.210822 0.340449 0.916323 +vn -0.036473 -0.398386 0.916493 +vn -0.033198 -0.398671 0.916493 +vn 0.153986 -0.911182 0.382147 +vn 0.171772 -0.907996 0.382148 +vn 0.256229 -0.887868 -0.382147 +vn 0.273539 -0.882689 -0.382146 +vn 0.284935 -0.280825 -0.916487 +vn 0.287234 -0.278474 -0.916487 +vn -0.061880 0.395639 -0.916319 +vn -0.058590 0.396141 -0.916318 +vn -0.382961 0.841027 -0.382117 +vn -0.365980 0.848555 -0.382117 +vn -0.478328 0.790693 0.382109 +vn -0.462339 0.800146 0.382110 +vn -0.288489 0.277714 0.916324 +vn -0.286170 0.280102 0.916324 +vn 0.059918 -0.395529 0.916497 +vn 0.063167 -0.395023 0.916497 +vn 0.367574 -0.847854 0.382144 +vn 0.384080 -0.840504 0.382146 +vn 0.461264 -0.800749 -0.382147 +vn 0.476832 -0.791579 -0.382144 +vn 0.343853 -0.204471 -0.916491 +vn 0.345522 -0.201638 -0.916491 +vn -0.154759 0.369331 -0.916321 +vn -0.151683 0.370605 -0.916321 +vn -0.573106 0.724941 -0.382113 +vn -0.558420 0.736314 -0.382111 +vn -0.653652 0.653242 0.382118 +vn -0.640390 0.666248 0.382119 +vn -0.346573 0.200612 0.916320 +vn -0.344893 0.203486 0.916320 +vn 0.152837 -0.369696 0.916496 +vn 0.155871 -0.368427 0.916497 +vn 0.559795 -0.735250 0.382147 +vn 0.574063 -0.724164 0.382149 +vn 0.639492 -0.667095 -0.382143 +vn 0.652413 -0.654465 -0.382142 +vn 0.382796 -0.116245 -0.916490 +vn 0.383740 -0.113096 -0.916490 +vn -0.238651 0.321565 -0.916320 +vn -0.235970 0.323538 -0.916319 +vn -0.729940 0.566722 -0.382116 +vn -0.718403 0.581279 -0.382114 +vn -0.790989 0.477828 0.382122 +vn -0.781225 0.493628 0.382124 +vn -0.384514 0.111841 0.916319 +vn -0.383570 0.115034 0.916319 +vn 0.236885 -0.322387 0.916489 +vn 0.239527 -0.320429 0.916489 +vn 0.719483 -0.579922 0.382145 +vn 0.730683 -0.565745 0.382146 +vn 0.780557 -0.494662 -0.382152 +vn 0.790080 -0.479305 -0.382152 +vn 0.399498 -0.021262 -0.916487 +vn 0.399660 -0.017977 -0.916487 +vn -0.308669 0.255098 -0.916323 +vn -0.306538 0.257657 -0.916323 +vn -0.844355 0.375566 -0.382119 +vn -0.836637 0.392462 -0.382117 +vn -0.882355 0.274660 0.382115 +vn -0.876656 0.292337 0.382118 +vn -0.400109 0.016572 0.916318 +vn -0.399956 0.019897 0.916318 +vn 0.307155 -0.256326 0.916489 +vn 0.309251 -0.253792 0.916490 +vn 0.837358 -0.390887 0.382150 +vn 0.844840 -0.374439 0.382153 +vn 0.876254 -0.293488 -0.382156 +vn 0.881825 -0.276302 -0.382154 +vn 0.392975 0.074971 -0.916488 +vn 0.392346 0.078198 -0.916488 +vn -0.360757 0.173816 -0.916320 +vn -0.359299 0.176809 -0.916320 +vn -0.909698 0.162580 -0.382122 +vn -0.906247 0.180832 -0.382120 +vn -0.922445 0.055510 0.382118 +vn -0.921142 0.074041 0.382119 +vn -0.392449 -0.079660 0.916318 +vn -0.393097 -0.076394 0.916318 +vn 0.359571 -0.175364 0.916491 +vn 0.361000 -0.172403 0.916491 +vn 0.906571 -0.179131 0.382154 +vn 0.909899 -0.161372 0.382155 +vn 0.921028 -0.075274 -0.382153 +vn 0.922325 -0.057252 -0.382151 +vn 0.363617 0.166833 -0.916488 +vn 0.362234 0.169816 -0.916487 +vn -0.391879 0.082437 -0.916316 +vn -0.391181 0.085692 -0.916316 +vn -0.922172 -0.059848 -0.382123 +vn -0.923189 -0.041303 -0.382121 +vn -0.908922 -0.166866 0.382120 +vn -0.912092 -0.148565 0.382122 +vn -0.361987 -0.171261 0.916316 +vn -0.363397 -0.168246 0.916317 +vn 0.391096 -0.084225 0.916488 +vn 0.391774 -0.081007 0.916489 +vn 0.923097 0.043026 0.382152 +vn 0.922079 0.061066 0.382153 +vn 0.912277 0.147338 -0.382154 +vn 0.909223 0.165148 -0.382153 +vn 0.313127 0.249002 -0.916488 +vn 0.311070 0.251568 -0.916487 +vn -0.400216 -0.013744 -0.916318 +vn -0.400317 -0.010416 -0.916317 +vn -0.881055 -0.278795 -0.382119 +vn -0.886481 -0.261031 -0.382118 +vn -0.842580 -0.379533 0.382117 +vn -0.850037 -0.362522 0.382119 +vn -0.310480 -0.252913 0.916317 +vn -0.312572 -0.250322 0.916318 +vn 0.399889 0.011820 0.916487 +vn 0.399778 0.015106 0.916487 +vn 0.885975 0.262689 0.382155 +vn 0.880669 0.279962 0.382157 +vn 0.850505 0.361383 -0.382157 +vn 0.843277 0.377943 -0.382156 +vn 0.244435 0.316705 -0.916487 +vn 0.241824 0.318704 -0.916487 +vn -0.385297 -0.109120 -0.916318 +vn -0.386192 -0.105914 -0.916318 +vn -0.788733 -0.481544 -0.382119 +vn -0.798253 -0.465595 -0.382117 +vn -0.727268 -0.570147 0.382117 +vn -0.738580 -0.555414 0.382119 +vn -0.240929 -0.319868 0.916318 +vn -0.243579 -0.317853 0.916318 +vn 0.385442 0.107173 0.916487 +vn 0.384547 0.110337 0.916487 +vn 0.797362 0.467088 0.382155 +vn 0.788077 0.482588 0.382157 +vn 0.739307 0.554420 -0.382157 +vn 0.728326 0.568769 -0.382155 +vn 0.161541 0.365994 -0.916490 +vn 0.158528 0.367310 -0.916489 +vn -0.347989 -0.198159 -0.916317 +vn -0.349624 -0.195259 -0.916317 +vn -0.650570 -0.656310 -0.382121 +vn -0.663630 -0.643102 -0.382119 +vn -0.569695 -0.727622 0.382118 +vn -0.584203 -0.716025 0.382120 +vn -0.157382 -0.368229 0.916318 +vn -0.160438 -0.366908 0.916318 +vn 0.348589 0.196300 0.916489 +vn 0.346963 0.199159 0.916489 +vn 0.662411 0.644339 0.382151 +vn 0.649686 0.657167 0.382152 +vn 0.585142 0.715240 -0.382152 +vn 0.571046 0.726545 -0.382150 +vn 0.069260 0.394017 -0.916490 +vn 0.066020 0.394573 -0.916490 +vn -0.290453 -0.275682 -0.916317 +vn -0.292736 -0.273258 -0.916317 +vn -0.474601 -0.792931 -0.382118 +vn -0.490442 -0.783233 -0.382117 +vn -0.379007 -0.842816 0.382118 +vn -0.395871 -0.835027 0.382120 +vn -0.064680 -0.395199 0.916315 +vn -0.067963 -0.394647 0.916316 +vn 0.291484 0.274021 0.916488 +vn 0.289221 0.276407 0.916488 +vn 0.488963 0.784140 0.382150 +vn 0.473538 0.793550 0.382153 +vn 0.396964 0.834494 -0.382152 +vn 0.380572 0.842096 -0.382151 +vn -0.027052 0.399148 -0.916487 +vn -0.030332 0.398913 -0.916487 +vn -0.216039 -0.337183 -0.916316 +vn -0.218835 -0.335376 -0.916316 +vn -0.271053 -0.883467 -0.382121 +vn -0.288755 -0.877842 -0.382119 +vn -0.166291 -0.909027 0.382121 +vn -0.184527 -0.905501 0.382123 +vn 0.031781 -0.399203 0.916312 +vn 0.028462 -0.399452 0.916312 +vn 0.217437 0.335817 0.916487 +vn 0.214669 0.337592 0.916487 +vn 0.287101 0.878368 0.382154 +vn 0.269873 0.883813 0.382156 +vn 0.185726 0.905243 -0.382154 +vn 0.167993 0.908701 -0.382152 +vn -0.121788 0.381074 -0.916488 +vn -0.124916 0.380060 -0.916488 +vn -0.129070 -0.379087 -0.916316 +vn -0.132217 -0.378002 -0.916315 +vn -0.051753 -0.922660 -0.382125 +vn -0.070287 -0.921435 -0.382123 +vn 0.056084 -0.922409 0.382121 +vn 0.037534 -0.923349 0.382123 +vn 0.126384 -0.379990 0.916316 +vn 0.123221 -0.381027 0.916316 +vn 0.130752 0.378094 0.916487 +vn 0.127640 0.379155 0.916488 +vn 0.068544 0.921554 0.382151 +vn 0.050512 0.922718 0.382152 +vn -0.036299 0.923385 -0.382155 +vn -0.054345 0.922500 -0.382153 +vn -0.209444 0.340851 -0.916490 +vn -0.212239 0.339119 -0.916489 +vn -0.034598 -0.398959 -0.916316 +vn -0.037914 -0.398658 -0.916315 +vn 0.170556 -0.908234 -0.382127 +vn 0.152267 -0.911480 -0.382125 +vn 0.275205 -0.882184 0.382117 +vn 0.257418 -0.887537 0.382119 +vn 0.213644 -0.338696 0.916320 +vn 0.210820 -0.340459 0.916320 +vn 0.036472 0.398395 0.916489 +vn 0.033196 0.398680 0.916489 +vn -0.153990 0.911180 0.382148 +vn -0.171774 0.907995 0.382151 +vn -0.256228 0.887866 -0.382153 +vn -0.273539 0.882688 -0.382151 +vn -0.284937 0.280834 -0.916484 +vn -0.287236 0.278484 -0.916484 +vn 0.061891 -0.395655 -0.916311 +vn 0.058599 -0.396156 -0.916311 +vn 0.382956 -0.841023 -0.382133 +vn 0.365975 -0.848551 -0.382131 +vn 0.478330 -0.790690 0.382112 +vn 0.462342 -0.800143 0.382114 +vn 0.288492 -0.277723 0.916320 +vn 0.286173 -0.280111 0.916320 +vn -0.059923 0.395537 0.916493 +vn -0.063172 0.395030 0.916494 +vn -0.367574 0.847852 0.382148 +vn -0.384081 0.840502 0.382148 +vn -0.461265 0.800746 -0.382153 +vn -0.476833 0.791575 -0.382152 +vn -0.343864 0.204486 -0.916484 +vn -0.345534 0.201653 -0.916484 +vn 0.154777 -0.369352 -0.916310 +vn 0.151701 -0.370626 -0.916309 +vn 0.573105 -0.724934 -0.382129 +vn 0.558419 -0.736306 -0.382128 +vn 0.653651 -0.653245 0.382114 +vn 0.640389 -0.666250 0.382115 +vn 0.346580 -0.200619 0.916316 +vn 0.344899 -0.203492 0.916316 +vn -0.152844 0.369702 0.916493 +vn -0.155878 0.368433 0.916493 +vn -0.559796 0.735250 0.382147 +vn -0.574063 0.724164 0.382150 +vn -0.639493 0.667088 -0.382155 +vn -0.652414 0.654458 -0.382153 +vn -0.382805 0.116250 -0.916486 +vn -0.383749 0.113101 -0.916485 +vn 0.238660 -0.321570 -0.916316 +vn 0.235979 -0.323544 -0.916315 +vn 0.729939 -0.566721 -0.382120 +vn 0.718403 -0.581277 -0.382119 +vn 0.790988 -0.477832 0.382119 +vn 0.781224 -0.493633 0.382120 +vn 0.384520 -0.111849 0.916315 +vn 0.383577 -0.115042 0.916316 +vn -0.236891 0.322394 0.916485 +vn -0.239533 0.320436 0.916485 +vn -0.719485 0.579914 0.382153 +vn -0.730685 0.565736 0.382154 +vn -0.780554 0.494666 -0.382154 +vn -0.790077 0.479310 -0.382153 +vn -0.399499 0.021260 -0.916487 +vn -0.399661 0.017976 -0.916487 +vn 0.308684 -0.255114 -0.916314 +vn 0.306552 -0.257671 -0.916314 +vn 0.844353 -0.375568 -0.382122 +vn 0.836634 -0.392464 -0.382119 +vn 0.882356 -0.274650 0.382121 +vn 0.876657 -0.292328 0.382122 +vn 0.400105 -0.016562 0.916320 +vn 0.399953 -0.019889 0.916320 +vn -0.307159 0.256333 0.916486 +vn -0.309255 0.253799 0.916487 +vn -0.837360 0.390886 0.382148 +vn -0.844842 0.374440 0.382149 +vn -0.876256 0.293483 -0.382156 +vn -0.881827 0.276294 -0.382154 +vn -0.392974 -0.074971 -0.916488 +vn -0.392345 -0.078198 -0.916488 +vn 0.360768 -0.173833 -0.916312 +vn 0.359312 -0.176827 -0.916312 +vn 0.909695 -0.162579 -0.382129 +vn 0.906245 -0.180831 -0.382127 +vn 0.922443 -0.055522 0.382122 +vn 0.921140 -0.074048 0.382124 +vn 0.392442 0.079679 0.916319 +vn 0.393090 0.076414 0.916319 +vn -0.359574 0.175372 0.916489 +vn -0.361002 0.172411 0.916489 +vn -0.906573 0.179130 0.382149 +vn -0.909901 0.161369 0.382152 +vn -0.921029 0.075256 -0.382154 +vn -0.922325 0.057236 -0.382152 +vn -0.363614 -0.166837 -0.916488 +vn -0.362231 -0.169820 -0.916488 +vn 0.391882 -0.082441 -0.916314 +vn 0.391184 -0.085696 -0.916314 +vn 0.922169 0.059854 -0.382128 +vn 0.923186 0.041308 -0.382127 +vn 0.908925 0.166848 0.382122 +vn 0.912094 0.148544 0.382124 +vn 0.361980 0.171275 0.916316 +vn 0.363390 0.168261 0.916317 +vn -0.391095 0.084224 0.916489 +vn -0.391773 0.081006 0.916489 +vn -0.923096 -0.043036 0.382153 +vn -0.922078 -0.061074 0.382155 +vn -0.912278 -0.147333 -0.382153 +vn -0.909224 -0.165142 -0.382152 +vn -0.313123 -0.249006 -0.916488 +vn -0.311066 -0.251572 -0.916487 +vn 0.400221 0.013738 -0.916316 +vn 0.400322 0.010411 -0.916315 +vn 0.881053 0.278799 -0.382122 +vn 0.886479 0.261036 -0.382120 +vn 0.842580 0.379532 0.382120 +vn 0.850037 0.362520 0.382121 +vn 0.310479 0.252919 0.916316 +vn 0.312571 0.250328 0.916316 +vn -0.399886 -0.011818 0.916489 +vn -0.399775 -0.015104 0.916489 +vn -0.885977 -0.262691 0.382150 +vn -0.880670 -0.279964 0.382152 +vn -0.850509 -0.361379 -0.382152 +vn -0.843281 -0.377940 -0.382150 +vn -0.244435 -0.316705 -0.916488 +vn -0.241824 -0.318704 -0.916487 +vn 0.385300 0.109121 -0.916317 +vn 0.386195 0.105915 -0.916316 +vn 0.788731 0.481544 -0.382124 +vn 0.798251 0.465595 -0.382122 +vn 0.727266 0.570146 0.382122 +vn 0.738578 0.555413 0.382124 +vn 0.240930 0.319871 0.916316 +vn 0.243580 0.317857 0.916316 +vn -0.385440 -0.107174 0.916488 +vn -0.384546 -0.110339 0.916488 +vn -0.797364 -0.467089 0.382150 +vn -0.788078 -0.482589 0.382153 +vn -0.739307 -0.554422 -0.382154 +vn -0.728326 -0.568771 -0.382153 +vn -0.161541 -0.365995 -0.916489 +vn -0.158528 -0.367311 -0.916489 +vn 0.347989 0.198161 -0.916317 +vn 0.349625 0.195261 -0.916316 +vn 0.650568 0.656310 -0.382123 +vn 0.663628 0.643102 -0.382122 +vn 0.569688 0.727625 0.382122 +vn 0.584197 0.716028 0.382124 +vn 0.157382 0.368232 0.916317 +vn 0.160437 0.366911 0.916317 +vn -0.348589 -0.196309 0.916487 +vn -0.346963 -0.199167 0.916488 +vn -0.662412 -0.644338 0.382151 +vn -0.649687 -0.657166 0.382152 +vn -0.585144 -0.715237 -0.382155 +vn -0.571049 -0.726541 -0.382153 +vn -0.069254 -0.394023 -0.916488 +vn -0.066013 -0.394580 -0.916487 +vn 0.290454 0.275682 -0.916317 +vn 0.292736 0.273259 -0.916316 +vn 0.474591 0.792935 -0.382122 +vn 0.490433 0.783237 -0.382120 +vn 0.379011 0.842812 0.382125 +vn 0.395872 0.835024 0.382126 +vn 0.064687 0.395192 0.916318 +vn 0.067970 0.394640 0.916318 +vn -0.291486 -0.274017 0.916488 +vn -0.289224 -0.276402 0.916489 +vn -0.488956 -0.784146 0.382149 +vn -0.473530 -0.793555 0.382151 +vn -0.396976 -0.834487 -0.382153 +vn -0.380584 -0.842090 -0.382152 +vn 0.027059 -0.399153 -0.916485 +vn 0.030339 -0.398918 -0.916485 +vn 0.216038 0.337182 -0.916316 +vn 0.218834 0.335375 -0.916316 +vn 0.271045 0.883469 -0.382123 +vn 0.288745 0.877844 -0.382121 +vn 0.166289 0.909027 0.382123 +vn 0.184527 0.905500 0.382126 +vn -0.031769 0.399187 0.916319 +vn -0.028450 0.399437 0.916319 +vn -0.217436 -0.335815 0.916488 +vn -0.214667 -0.337591 0.916488 +vn -0.287099 -0.878369 0.382154 +vn -0.269873 -0.883813 0.382156 +vn -0.185726 -0.905243 -0.382153 +vn -0.167992 -0.908702 -0.382151 +vn 0.121789 -0.381073 -0.916488 +vn 0.124917 -0.380060 -0.916488 +vn 0.129069 0.379086 -0.916316 +vn 0.132216 0.378001 -0.916316 +vn 0.051746 0.922661 -0.382123 +vn 0.070281 0.921436 -0.382122 +vn -0.056092 0.922409 0.382120 +vn -0.037542 0.923349 0.382121 +vn -0.126385 0.379991 0.916315 +vn -0.123221 0.381027 0.916316 +vn -0.130745 -0.378102 0.916485 +vn -0.127634 -0.379163 0.916485 +vn -0.068557 -0.921551 0.382157 +vn -0.050525 -0.922715 0.382158 +vn 0.036311 -0.923386 -0.382150 +vn 0.054358 -0.922501 -0.382149 +vn 0.209440 -0.340844 -0.916493 +vn 0.212235 -0.339112 -0.916493 +vn 0.034610 0.398943 -0.916322 +vn 0.037925 0.398643 -0.916322 +vn -0.170575 0.908236 -0.382114 +vn -0.152285 0.911481 -0.382114 +vn -0.275201 0.882181 0.382127 +vn -0.257415 0.887534 0.382128 +vn -0.213650 0.338703 0.916316 +vn -0.210827 0.340467 0.916316 +vn -0.036472 -0.398395 0.916489 +vn -0.033197 -0.398680 0.916489 +vn 0.153989 -0.911180 0.382150 +vn 0.171775 -0.907995 0.382151 +vn 0.256231 -0.887865 -0.382153 +vn 0.273541 -0.882686 -0.382152 +vn 0.284924 -0.280811 -0.916496 +vn 0.287223 -0.278460 -0.916495 +vn -0.061880 0.395641 -0.916319 +vn -0.058587 0.396140 -0.916319 +vn -0.382961 0.841023 -0.382127 +vn -0.365982 0.848552 -0.382122 +vn -0.478330 0.790691 0.382110 +vn -0.462341 0.800143 0.382115 +vn -0.288492 0.277723 0.916320 +vn -0.286173 0.280111 0.916320 +vn 0.059912 -0.395523 0.916500 +vn 0.063160 -0.395014 0.916501 +vn 0.367579 -0.847851 0.382144 +vn 0.384085 -0.840502 0.382145 +vn 0.461263 -0.800745 -0.382157 +vn 0.476832 -0.791574 -0.382155 +vn 0.343846 -0.204453 -0.916498 +vn 0.345515 -0.201620 -0.916498 +vn -0.154771 0.369343 -0.916314 +vn -0.151697 0.370619 -0.916313 +vn -0.573106 0.724934 -0.382128 +vn -0.558419 0.736305 -0.382128 +vn -0.653651 0.653250 0.382107 +vn -0.640389 0.666255 0.382107 +vn -0.346579 0.200620 0.916316 +vn -0.344899 0.203493 0.916316 +vn 0.152839 -0.369694 0.916497 +vn 0.155874 -0.368426 0.916496 +vn 0.559798 -0.735249 0.382147 +vn 0.574065 -0.724162 0.382149 +vn 0.639493 -0.667086 -0.382158 +vn 0.652414 -0.654455 -0.382157 +vn 0.382795 -0.116233 -0.916492 +vn 0.383739 -0.113084 -0.916491 +vn -0.238656 0.321562 -0.916320 +vn -0.235974 0.323535 -0.916319 +vn -0.729940 0.566719 -0.382121 +vn -0.718403 0.581277 -0.382118 +vn -0.790989 0.477830 0.382119 +vn -0.781225 0.493631 0.382121 +vn -0.384520 0.111849 0.916316 +vn -0.383576 0.115042 0.916316 +vn 0.236901 -0.322409 0.916477 +vn 0.239542 -0.320451 0.916477 +vn 0.719484 -0.579915 0.382152 +vn 0.730685 -0.565737 0.382154 +vn 0.780556 -0.494659 -0.382158 +vn 0.790079 -0.479304 -0.382156 +vn 0.399500 -0.021260 -0.916487 +vn 0.399662 -0.017975 -0.916486 +vn -0.308683 0.255113 -0.916314 +vn -0.306552 0.257670 -0.916314 +vn -0.844356 0.375555 -0.382127 +vn -0.836638 0.392450 -0.382125 +vn -0.882356 0.274650 0.382120 +vn -0.876657 0.292329 0.382121 +vn -0.400110 0.016572 0.916317 +vn -0.399958 0.019897 0.916318 +vn 0.307164 -0.256342 0.916482 +vn 0.309260 -0.253807 0.916483 +vn 0.837361 -0.390878 0.382152 +vn 0.844843 -0.374431 0.382154 +vn 0.876254 -0.293490 -0.382155 +vn 0.881825 -0.276302 -0.382154 +vn 0.392979 0.074962 -0.916487 +vn 0.392350 0.078189 -0.916487 +vn -0.360767 0.173832 -0.916313 +vn -0.359310 0.176826 -0.916313 +vn -0.909698 0.162572 -0.382125 +vn -0.906248 0.180822 -0.382124 +vn -0.922445 0.055511 0.382118 +vn -0.921142 0.074039 0.382120 +vn -0.392452 -0.079661 0.916316 +vn -0.393100 -0.076395 0.916317 +vn 0.359570 -0.175364 0.916492 +vn 0.360999 -0.172402 0.916492 +vn 0.906572 -0.179129 0.382152 +vn 0.909900 -0.161370 0.382154 +vn 0.921028 -0.075256 -0.382156 +vn 0.922325 -0.057234 -0.382154 +vn 0.363620 0.166828 -0.916487 +vn 0.362237 0.169812 -0.916487 +vn -0.391880 0.082441 -0.916315 +vn -0.391182 0.085696 -0.916315 +vn -0.922173 -0.059850 -0.382119 +vn -0.923190 -0.041304 -0.382118 +vn -0.908924 -0.166863 0.382117 +vn -0.912094 -0.148560 0.382119 +vn -0.361986 -0.171260 0.916317 +vn -0.363396 -0.168245 0.916317 +vn 0.391094 -0.084219 0.916489 +vn 0.391773 -0.081002 0.916489 +vn 0.923095 0.043031 0.382156 +vn 0.922076 0.061071 0.382159 +vn 0.912273 0.147348 -0.382160 +vn 0.909218 0.165156 -0.382159 +vn 0.313121 0.249008 -0.916488 +vn 0.311064 0.251573 -0.916488 +vn -0.400221 -0.013739 -0.916315 +vn -0.400323 -0.010411 -0.916315 +vn -0.881054 -0.278795 -0.382121 +vn -0.886481 -0.261031 -0.382119 +vn -0.842576 -0.379539 0.382120 +vn -0.850033 -0.362528 0.382121 +vn -0.310482 -0.252911 0.916317 +vn -0.312574 -0.250320 0.916317 +vn 0.399889 0.011816 0.916487 +vn 0.399777 0.015103 0.916488 +vn 0.885974 0.262696 0.382154 +vn 0.880668 0.279968 0.382154 +vn 0.850506 0.361382 -0.382155 +vn 0.843280 0.377941 -0.382152 +vn 0.281445 0.287772 -0.915410 +vn 0.281445 0.287772 -0.915411 +vn -0.398319 -0.060715 -0.915235 +vn -0.398319 -0.060715 -0.915235 +vn -0.845620 -0.375113 -0.379758 +vn -0.845620 -0.375113 -0.379758 +vn -0.796419 -0.470639 0.379758 +vn -0.796419 -0.470639 0.379758 +vn -0.280721 -0.289028 0.915237 +vn -0.280721 -0.289028 0.915237 +vn 0.397710 0.062044 0.915411 +vn 0.397710 0.062044 0.915411 +vn 0.845011 0.376466 0.379777 +vn 0.845011 0.376466 0.379777 +vn 0.797168 0.469354 -0.379777 +vn 0.797168 0.469353 -0.379777 +vn 0.561695 -0.827344 0.000000 +vn 0.561695 -0.827344 0.000000 +vn 0.561695 -0.827344 0.000000 +vn 0.561695 -0.827344 0.000000 +vn 0.561695 -0.827344 0.000000 +vn 0.561695 -0.827344 0.000000 +vn 0.561695 -0.827344 0.000000 +vn 0.561695 -0.827344 0.000000 +vn -0.561714 0.827331 -0.000000 +vn -0.561714 0.827331 -0.000000 +vn -0.561714 0.827331 -0.000000 +vn -0.561714 0.827331 -0.000000 +vn -0.561714 0.827331 -0.000000 +vn -0.561714 0.827331 -0.000000 +vn -0.561714 0.827331 -0.000000 +vn -0.561714 0.827331 -0.000000 +s 1 +f 2561/2809/7033 2562/2810/7034 2570/2819/7035 2569/2818/7036 +s 2 +f 2562/2810/7037 2563/2811/7038 2571/2820/7039 2570/2819/7040 +s 3 +f 2563/2811/7041 2564/2812/7042 2572/2821/7043 2571/2820/7044 +s 4 +f 2564/2812/7045 2565/2813/7046 2573/2822/7047 2572/2821/7048 +s 5 +f 2565/2813/7049 2566/2814/7050 2574/2823/7051 2573/2822/7052 +s 6 +f 2566/2814/7053 2567/2815/7054 2575/2824/7055 2574/2823/7056 +s 7 +f 2567/2815/7057 2568/2816/7058 2576/2825/7059 2575/2824/7060 +s 8 +f 2568/2816/7061 2561/2817/7062 2569/2826/7063 2576/2825/7064 +s 1 +f 2569/2818/7036 2570/2819/7035 2578/2828/7065 2577/2827/7066 +s 2 +f 2570/2819/7040 2571/2820/7039 2579/2829/7067 2578/2828/7068 +s 3 +f 2571/2820/7044 2572/2821/7043 2580/2830/7069 2579/2829/7070 +s 4 +f 2572/2821/7048 2573/2822/7047 2581/2831/7071 2580/2830/7072 +s 5 +f 2573/2822/7052 2574/2823/7051 2582/2832/7073 2581/2831/7074 +s 6 +f 2574/2823/7056 2575/2824/7055 2583/2833/7075 2582/2832/7076 +s 7 +f 2575/2824/7060 2576/2825/7059 2584/2834/7077 2583/2833/7078 +s 8 +f 2576/2825/7064 2569/2826/7063 2577/2835/7079 2584/2834/7080 +s 1 +f 2577/2827/7066 2578/2828/7065 2586/2837/7081 2585/2836/7082 +s 2 +f 2578/2828/7068 2579/2829/7067 2587/2838/7083 2586/2837/7084 +s 3 +f 2579/2829/7070 2580/2830/7069 2588/2839/7085 2587/2838/7086 +s 4 +f 2580/2830/7072 2581/2831/7071 2589/2840/7087 2588/2839/7088 +s 5 +f 2581/2831/7074 2582/2832/7073 2590/2841/7089 2589/2840/7090 +s 6 +f 2582/2832/7076 2583/2833/7075 2591/2842/7091 2590/2841/7092 +s 7 +f 2583/2833/7078 2584/2834/7077 2592/2843/7093 2591/2842/7094 +s 8 +f 2584/2834/7080 2577/2835/7079 2585/2844/7095 2592/2843/7096 +s 1 +f 2585/2836/7082 2586/2837/7081 2594/2846/7097 2593/2845/7098 +s 2 +f 2586/2837/7084 2587/2838/7083 2595/2847/7099 2594/2846/7100 +s 3 +f 2587/2838/7086 2588/2839/7085 2596/2848/7101 2595/2847/7102 +s 4 +f 2588/2839/7088 2589/2840/7087 2597/2849/7103 2596/2848/7104 +s 5 +f 2589/2840/7090 2590/2841/7089 2598/2850/7105 2597/2849/7106 +s 6 +f 2590/2841/7092 2591/2842/7091 2599/2851/7107 2598/2850/7108 +s 7 +f 2591/2842/7094 2592/2843/7093 2600/2852/7109 2599/2851/7110 +s 8 +f 2592/2843/7096 2585/2844/7095 2593/2853/7111 2600/2852/7112 +s 1 +f 2593/2845/7098 2594/2846/7097 2602/2855/7113 2601/2854/7114 +s 2 +f 2594/2846/7100 2595/2847/7099 2603/2856/7115 2602/2855/7116 +s 3 +f 2595/2847/7102 2596/2848/7101 2604/2857/7117 2603/2856/7118 +s 4 +f 2596/2848/7104 2597/2849/7103 2605/2858/7119 2604/2857/7120 +s 5 +f 2597/2849/7106 2598/2850/7105 2606/2859/7121 2605/2858/7122 +s 6 +f 2598/2850/7108 2599/2851/7107 2607/2860/7123 2606/2859/7124 +s 7 +f 2599/2851/7110 2600/2852/7109 2608/2861/7125 2607/2860/7126 +s 8 +f 2600/2852/7112 2593/2853/7111 2601/2862/7127 2608/2861/7128 +s 1 +f 2601/2854/7114 2602/2855/7113 2610/2864/7129 2609/2863/7130 +s 2 +f 2602/2855/7116 2603/2856/7115 2611/2865/7131 2610/2864/7132 +s 3 +f 2603/2856/7118 2604/2857/7117 2612/2866/7133 2611/2865/7134 +s 4 +f 2604/2857/7120 2605/2858/7119 2613/2867/7135 2612/2866/7136 +s 5 +f 2605/2858/7122 2606/2859/7121 2614/2868/7137 2613/2867/7138 +s 6 +f 2606/2859/7124 2607/2860/7123 2615/2869/7139 2614/2868/7140 +s 7 +f 2607/2860/7126 2608/2861/7125 2616/2870/7141 2615/2869/7142 +s 8 +f 2608/2861/7128 2601/2862/7127 2609/2871/7143 2616/2870/7144 +s 1 +f 2609/2863/7130 2610/2864/7129 2618/2873/7145 2617/2872/7146 +s 2 +f 2610/2864/7132 2611/2865/7131 2619/2874/7147 2618/2873/7148 +s 3 +f 2611/2865/7134 2612/2866/7133 2620/2875/7149 2619/2874/7150 +s 4 +f 2612/2866/7136 2613/2867/7135 2621/2876/7151 2620/2875/7152 +s 5 +f 2613/2867/7138 2614/2868/7137 2622/2877/7153 2621/2876/7154 +s 6 +f 2614/2868/7140 2615/2869/7139 2623/2878/7155 2622/2877/7156 +s 7 +f 2615/2869/7142 2616/2870/7141 2624/2879/7157 2623/2878/7158 +s 8 +f 2616/2870/7144 2609/2871/7143 2617/2880/7159 2624/2879/7160 +s 1 +f 2617/2872/7146 2618/2873/7145 2626/2882/7161 2625/2881/7162 +s 2 +f 2618/2873/7148 2619/2874/7147 2627/2883/7163 2626/2882/7164 +s 3 +f 2619/2874/7150 2620/2875/7149 2628/2884/7165 2627/2883/7166 +s 4 +f 2620/2875/7152 2621/2876/7151 2629/2885/7167 2628/2884/7168 +s 5 +f 2621/2876/7154 2622/2877/7153 2630/2886/7169 2629/2885/7170 +s 6 +f 2622/2877/7156 2623/2878/7155 2631/2887/7171 2630/2886/7172 +s 7 +f 2623/2878/7158 2624/2879/7157 2632/2888/7173 2631/2887/7174 +s 8 +f 2624/2879/7160 2617/2880/7159 2625/2889/7175 2632/2888/7176 +s 1 +f 2625/2881/7162 2626/2882/7161 2634/2891/7177 2633/2890/7178 +s 2 +f 2626/2882/7164 2627/2883/7163 2635/2892/7179 2634/2891/7180 +s 3 +f 2627/2883/7166 2628/2884/7165 2636/2893/7181 2635/2892/7182 +s 4 +f 2628/2884/7168 2629/2885/7167 2637/2894/7183 2636/2893/7184 +s 5 +f 2629/2885/7170 2630/2886/7169 2638/2895/7185 2637/2894/7186 +s 6 +f 2630/2886/7172 2631/2887/7171 2639/2896/7187 2638/2895/7188 +s 7 +f 2631/2887/7174 2632/2888/7173 2640/2897/7189 2639/2896/7190 +s 8 +f 2632/2888/7176 2625/2889/7175 2633/2898/7191 2640/2897/7192 +s 1 +f 2633/2890/7178 2634/2891/7177 2642/2900/7193 2641/2899/7194 +s 2 +f 2634/2891/7180 2635/2892/7179 2643/2901/7195 2642/2900/7196 +s 3 +f 2635/2892/7182 2636/2893/7181 2644/2902/7197 2643/2901/7198 +s 4 +f 2636/2893/7184 2637/2894/7183 2645/2903/7199 2644/2902/7200 +s 5 +f 2637/2894/7186 2638/2895/7185 2646/2904/7201 2645/2903/7202 +s 6 +f 2638/2895/7188 2639/2896/7187 2647/2905/7203 2646/2904/7204 +s 7 +f 2639/2896/7190 2640/2897/7189 2648/2906/7205 2647/2905/7206 +s 8 +f 2640/2897/7192 2633/2898/7191 2641/2907/7207 2648/2906/7208 +s 1 +f 2641/2899/7194 2642/2900/7193 2650/2909/7209 2649/2908/7210 +s 2 +f 2642/2900/7196 2643/2901/7195 2651/2910/7211 2650/2909/7212 +s 3 +f 2643/2901/7198 2644/2902/7197 2652/2911/7213 2651/2910/7214 +s 4 +f 2644/2902/7200 2645/2903/7199 2653/2912/7215 2652/2911/7216 +s 5 +f 2645/2903/7202 2646/2904/7201 2654/2913/7217 2653/2912/7218 +s 6 +f 2646/2904/7204 2647/2905/7203 2655/2914/7219 2654/2913/7220 +s 7 +f 2647/2905/7206 2648/2906/7205 2656/2915/7221 2655/2914/7222 +s 8 +f 2648/2906/7208 2641/2907/7207 2649/2916/7223 2656/2915/7224 +s 1 +f 2649/2908/7210 2650/2909/7209 2658/2918/7225 2657/2917/7226 +s 2 +f 2650/2909/7212 2651/2910/7211 2659/2919/7227 2658/2918/7228 +s 3 +f 2651/2910/7214 2652/2911/7213 2660/2920/7229 2659/2919/7230 +s 4 +f 2652/2911/7216 2653/2912/7215 2661/2921/7231 2660/2920/7232 +s 5 +f 2653/2912/7218 2654/2913/7217 2662/2922/7233 2661/2921/7234 +s 6 +f 2654/2913/7220 2655/2914/7219 2663/2923/7235 2662/2922/7236 +s 7 +f 2655/2914/7222 2656/2915/7221 2664/2924/7237 2663/2923/7238 +s 8 +f 2656/2915/7224 2649/2916/7223 2657/2925/7239 2664/2924/7240 +s 1 +f 2657/2917/7226 2658/2918/7225 2666/2927/7241 2665/2926/7242 +s 2 +f 2658/2918/7228 2659/2919/7227 2667/2928/7243 2666/2927/7244 +s 3 +f 2659/2919/7230 2660/2920/7229 2668/2929/7245 2667/2928/7246 +s 4 +f 2660/2920/7232 2661/2921/7231 2669/2930/7247 2668/2929/7248 +s 5 +f 2661/2921/7234 2662/2922/7233 2670/2931/7249 2669/2930/7250 +s 6 +f 2662/2922/7236 2663/2923/7235 2671/2932/7251 2670/2931/7252 +s 7 +f 2663/2923/7238 2664/2924/7237 2672/2933/7253 2671/2932/7254 +s 8 +f 2664/2924/7240 2657/2925/7239 2665/2934/7255 2672/2933/7256 +s 1 +f 2665/2926/7242 2666/2927/7241 2674/2936/7257 2673/2935/7258 +s 2 +f 2666/2927/7244 2667/2928/7243 2675/2937/7259 2674/2936/7260 +s 3 +f 2667/2928/7246 2668/2929/7245 2676/2938/7261 2675/2937/7262 +s 4 +f 2668/2929/7248 2669/2930/7247 2677/2939/7263 2676/2938/7264 +s 5 +f 2669/2930/7250 2670/2931/7249 2678/2940/7265 2677/2939/7266 +s 6 +f 2670/2931/7252 2671/2932/7251 2679/2941/7267 2678/2940/7268 +s 7 +f 2671/2932/7254 2672/2933/7253 2680/2942/7269 2679/2941/7270 +s 8 +f 2672/2933/7256 2665/2934/7255 2673/2943/7271 2680/2942/7272 +s 1 +f 2673/2935/7258 2674/2936/7257 2682/2945/7273 2681/2944/7274 +s 2 +f 2674/2936/7260 2675/2937/7259 2683/2946/7275 2682/2945/7276 +s 3 +f 2675/2937/7262 2676/2938/7261 2684/2947/7277 2683/2946/7278 +s 4 +f 2676/2938/7264 2677/2939/7263 2685/2948/7279 2684/2947/7280 +s 5 +f 2677/2939/7266 2678/2940/7265 2686/2949/7281 2685/2948/7282 +s 6 +f 2678/2940/7268 2679/2941/7267 2687/2950/7283 2686/2949/7284 +s 7 +f 2679/2941/7270 2680/2942/7269 2688/2951/7285 2687/2950/7286 +s 8 +f 2680/2942/7272 2673/2943/7271 2681/2952/7287 2688/2951/7288 +s 1 +f 2681/2944/7274 2682/2945/7273 2690/2954/7289 2689/2953/7290 +s 2 +f 2682/2945/7276 2683/2946/7275 2691/2955/7291 2690/2954/7292 +s 3 +f 2683/2946/7278 2684/2947/7277 2692/2956/7293 2691/2955/7294 +s 4 +f 2684/2947/7280 2685/2948/7279 2693/2957/7295 2692/2956/7296 +s 5 +f 2685/2948/7282 2686/2949/7281 2694/2958/7297 2693/2957/7298 +s 6 +f 2686/2949/7284 2687/2950/7283 2695/2959/7299 2694/2958/7300 +s 7 +f 2687/2950/7286 2688/2951/7285 2696/2960/7301 2695/2959/7302 +s 8 +f 2688/2951/7288 2681/2952/7287 2689/2961/7303 2696/2960/7304 +s 1 +f 2689/2953/7290 2690/2954/7289 2698/2963/7305 2697/2962/7306 +s 2 +f 2690/2954/7292 2691/2955/7291 2699/2964/7307 2698/2963/7308 +s 3 +f 2691/2955/7294 2692/2956/7293 2700/2965/7309 2699/2964/7310 +s 4 +f 2692/2956/7296 2693/2957/7295 2701/2966/7311 2700/2965/7312 +s 5 +f 2693/2957/7298 2694/2958/7297 2702/2967/7313 2701/2966/7314 +s 6 +f 2694/2958/7300 2695/2959/7299 2703/2968/7315 2702/2967/7316 +s 7 +f 2695/2959/7302 2696/2960/7301 2704/2969/7317 2703/2968/7318 +s 8 +f 2696/2960/7304 2689/2961/7303 2697/2970/7319 2704/2969/7320 +s 1 +f 2697/2962/7306 2698/2963/7305 2706/2972/7321 2705/2971/7322 +s 2 +f 2698/2963/7308 2699/2964/7307 2707/2973/7323 2706/2972/7324 +s 3 +f 2699/2964/7310 2700/2965/7309 2708/2974/7325 2707/2973/7326 +s 4 +f 2700/2965/7312 2701/2966/7311 2709/2975/7327 2708/2974/7328 +s 5 +f 2701/2966/7314 2702/2967/7313 2710/2976/7329 2709/2975/7330 +s 6 +f 2702/2967/7316 2703/2968/7315 2711/2977/7331 2710/2976/7332 +s 7 +f 2703/2968/7318 2704/2969/7317 2712/2978/7333 2711/2977/7334 +s 8 +f 2704/2969/7320 2697/2970/7319 2705/2979/7335 2712/2978/7336 +s 1 +f 2705/2971/7322 2706/2972/7321 2714/2981/7337 2713/2980/7338 +s 2 +f 2706/2972/7324 2707/2973/7323 2715/2982/7339 2714/2981/7340 +s 3 +f 2707/2973/7326 2708/2974/7325 2716/2983/7341 2715/2982/7342 +s 4 +f 2708/2974/7328 2709/2975/7327 2717/2984/7343 2716/2983/7344 +s 5 +f 2709/2975/7330 2710/2976/7329 2718/2985/7345 2717/2984/7346 +s 6 +f 2710/2976/7332 2711/2977/7331 2719/2986/7347 2718/2985/7348 +s 7 +f 2711/2977/7334 2712/2978/7333 2720/2987/7349 2719/2986/7350 +s 8 +f 2712/2978/7336 2705/2979/7335 2713/2988/7351 2720/2987/7352 +s 1 +f 2713/2980/7338 2714/2981/7337 2722/2990/7353 2721/2989/7354 +s 2 +f 2714/2981/7340 2715/2982/7339 2723/2991/7355 2722/2990/7356 +s 3 +f 2715/2982/7342 2716/2983/7341 2724/2992/7357 2723/2991/7358 +s 4 +f 2716/2983/7344 2717/2984/7343 2725/2993/7359 2724/2992/7360 +s 5 +f 2717/2984/7346 2718/2985/7345 2726/2994/7361 2725/2993/7362 +s 6 +f 2718/2985/7348 2719/2986/7347 2727/2995/7363 2726/2994/7364 +s 7 +f 2719/2986/7350 2720/2987/7349 2728/2996/7365 2727/2995/7366 +s 8 +f 2720/2987/7352 2713/2988/7351 2721/2997/7367 2728/2996/7368 +s 1 +f 2721/2989/7354 2722/2990/7353 2730/2999/7369 2729/2998/7370 +s 2 +f 2722/2990/7356 2723/2991/7355 2731/3000/7371 2730/2999/7372 +s 3 +f 2723/2991/7358 2724/2992/7357 2732/3001/7373 2731/3000/7374 +s 4 +f 2724/2992/7360 2725/2993/7359 2733/3002/7375 2732/3001/7376 +s 5 +f 2725/2993/7362 2726/2994/7361 2734/3003/7377 2733/3002/7378 +s 6 +f 2726/2994/7364 2727/2995/7363 2735/3004/7379 2734/3003/7380 +s 7 +f 2727/2995/7366 2728/2996/7365 2736/3005/7381 2735/3004/7382 +s 8 +f 2728/2996/7368 2721/2997/7367 2729/3006/7383 2736/3005/7384 +s 1 +f 2729/2998/7370 2730/2999/7369 2738/3008/7385 2737/3007/7386 +s 2 +f 2730/2999/7372 2731/3000/7371 2739/3009/7387 2738/3008/7388 +s 3 +f 2731/3000/7374 2732/3001/7373 2740/3010/7389 2739/3009/7390 +s 4 +f 2732/3001/7376 2733/3002/7375 2741/3011/7391 2740/3010/7392 +s 5 +f 2733/3002/7378 2734/3003/7377 2742/3012/7393 2741/3011/7394 +s 6 +f 2734/3003/7380 2735/3004/7379 2743/3013/7395 2742/3012/7396 +s 7 +f 2735/3004/7382 2736/3005/7381 2744/3014/7397 2743/3013/7398 +s 8 +f 2736/3005/7384 2729/3006/7383 2737/3015/7399 2744/3014/7400 +s 1 +f 2737/3007/7386 2738/3008/7385 2746/3017/7401 2745/3016/7402 +s 2 +f 2738/3008/7388 2739/3009/7387 2747/3018/7403 2746/3017/7404 +s 3 +f 2739/3009/7390 2740/3010/7389 2748/3019/7405 2747/3018/7406 +s 4 +f 2740/3010/7392 2741/3011/7391 2749/3020/7407 2748/3019/7408 +s 5 +f 2741/3011/7394 2742/3012/7393 2750/3021/7409 2749/3020/7410 +s 6 +f 2742/3012/7396 2743/3013/7395 2751/3022/7411 2750/3021/7412 +s 7 +f 2743/3013/7398 2744/3014/7397 2752/3023/7413 2751/3022/7414 +s 8 +f 2744/3014/7400 2737/3015/7399 2745/3024/7415 2752/3023/7416 +s 1 +f 2745/3016/7402 2746/3017/7401 2754/3026/7417 2753/3025/7418 +s 2 +f 2746/3017/7404 2747/3018/7403 2755/3027/7419 2754/3026/7420 +s 3 +f 2747/3018/7406 2748/3019/7405 2756/3028/7421 2755/3027/7422 +s 4 +f 2748/3019/7408 2749/3020/7407 2757/3029/7423 2756/3028/7424 +s 5 +f 2749/3020/7410 2750/3021/7409 2758/3030/7425 2757/3029/7426 +s 6 +f 2750/3021/7412 2751/3022/7411 2759/3031/7427 2758/3030/7428 +s 7 +f 2751/3022/7414 2752/3023/7413 2760/3032/7429 2759/3031/7430 +s 8 +f 2752/3023/7416 2745/3024/7415 2753/3033/7431 2760/3032/7432 +s 1 +f 2753/3025/7418 2754/3026/7417 2762/3035/7433 2761/3034/7434 +s 2 +f 2754/3026/7420 2755/3027/7419 2763/3036/7435 2762/3035/7436 +s 3 +f 2755/3027/7422 2756/3028/7421 2764/3037/7437 2763/3036/7438 +s 4 +f 2756/3028/7424 2757/3029/7423 2765/3038/7439 2764/3037/7440 +s 5 +f 2757/3029/7426 2758/3030/7425 2766/3039/7441 2765/3038/7442 +s 6 +f 2758/3030/7428 2759/3031/7427 2767/3040/7443 2766/3039/7444 +s 7 +f 2759/3031/7430 2760/3032/7429 2768/3041/7445 2767/3040/7446 +s 8 +f 2760/3032/7432 2753/3033/7431 2761/3042/7447 2768/3041/7448 +s 1 +f 2761/3034/7434 2762/3035/7433 2770/3044/7449 2769/3043/7450 +s 2 +f 2762/3035/7436 2763/3036/7435 2771/3045/7451 2770/3044/7452 +s 3 +f 2763/3036/7438 2764/3037/7437 2772/3046/7453 2771/3045/7454 +s 4 +f 2764/3037/7440 2765/3038/7439 2773/3047/7455 2772/3046/7456 +s 5 +f 2765/3038/7442 2766/3039/7441 2774/3048/7457 2773/3047/7458 +s 6 +f 2766/3039/7444 2767/3040/7443 2775/3049/7459 2774/3048/7460 +s 7 +f 2767/3040/7446 2768/3041/7445 2776/3050/7461 2775/3049/7462 +s 8 +f 2768/3041/7448 2761/3042/7447 2769/3051/7463 2776/3050/7464 +s 1 +f 2769/3043/7450 2770/3044/7449 2778/3053/7465 2777/3052/7466 +s 2 +f 2770/3044/7452 2771/3045/7451 2779/3054/7467 2778/3053/7468 +s 3 +f 2771/3045/7454 2772/3046/7453 2780/3055/7469 2779/3054/7470 +s 4 +f 2772/3046/7456 2773/3047/7455 2781/3056/7471 2780/3055/7472 +s 5 +f 2773/3047/7458 2774/3048/7457 2782/3057/7473 2781/3056/7474 +s 6 +f 2774/3048/7460 2775/3049/7459 2783/3058/7475 2782/3057/7476 +s 7 +f 2775/3049/7462 2776/3050/7461 2784/3059/7477 2783/3058/7478 +s 8 +f 2776/3050/7464 2769/3051/7463 2777/3060/7479 2784/3059/7480 +s 1 +f 2777/3052/7466 2778/3053/7465 2786/3062/7481 2785/3061/7482 +s 2 +f 2778/3053/7468 2779/3054/7467 2787/3063/7483 2786/3062/7484 +s 3 +f 2779/3054/7470 2780/3055/7469 2788/3064/7485 2787/3063/7486 +s 4 +f 2780/3055/7472 2781/3056/7471 2789/3065/7487 2788/3064/7488 +s 5 +f 2781/3056/7474 2782/3057/7473 2790/3066/7489 2789/3065/7490 +s 6 +f 2782/3057/7476 2783/3058/7475 2791/3067/7491 2790/3066/7492 +s 7 +f 2783/3058/7478 2784/3059/7477 2792/3068/7493 2791/3067/7494 +s 8 +f 2784/3059/7480 2777/3060/7479 2785/3069/7495 2792/3068/7496 +s 1 +f 2785/3061/7482 2786/3062/7481 2794/3071/7497 2793/3070/7498 +s 2 +f 2786/3062/7484 2787/3063/7483 2795/3072/7499 2794/3071/7500 +s 3 +f 2787/3063/7486 2788/3064/7485 2796/3073/7501 2795/3072/7502 +s 4 +f 2788/3064/7488 2789/3065/7487 2797/3074/7503 2796/3073/7504 +s 5 +f 2789/3065/7490 2790/3066/7489 2798/3075/7505 2797/3074/7506 +s 6 +f 2790/3066/7492 2791/3067/7491 2799/3076/7507 2798/3075/7508 +s 7 +f 2791/3067/7494 2792/3068/7493 2800/3077/7509 2799/3076/7510 +s 8 +f 2792/3068/7496 2785/3069/7495 2793/3078/7511 2800/3077/7512 +s 1 +f 2793/3070/7498 2794/3071/7497 2802/3080/7513 2801/3079/7514 +s 2 +f 2794/3071/7500 2795/3072/7499 2803/3081/7515 2802/3080/7516 +s 3 +f 2795/3072/7502 2796/3073/7501 2804/3082/7517 2803/3081/7518 +s 4 +f 2796/3073/7504 2797/3074/7503 2805/3083/7519 2804/3082/7520 +s 5 +f 2797/3074/7506 2798/3075/7505 2806/3084/7521 2805/3083/7522 +s 6 +f 2798/3075/7508 2799/3076/7507 2807/3085/7523 2806/3084/7524 +s 7 +f 2799/3076/7510 2800/3077/7509 2808/3086/7525 2807/3085/7526 +s 8 +f 2800/3077/7512 2793/3078/7511 2801/3087/7527 2808/3086/7528 +s 1 +f 2801/3079/7514 2802/3080/7513 2810/3089/7529 2809/3088/7530 +s 2 +f 2802/3080/7516 2803/3081/7515 2811/3090/7531 2810/3089/7532 +s 3 +f 2803/3081/7518 2804/3082/7517 2812/3091/7533 2811/3090/7534 +s 4 +f 2804/3082/7520 2805/3083/7519 2813/3092/7535 2812/3091/7536 +s 5 +f 2805/3083/7522 2806/3084/7521 2814/3093/7537 2813/3092/7538 +s 6 +f 2806/3084/7524 2807/3085/7523 2815/3094/7539 2814/3093/7540 +s 7 +f 2807/3085/7526 2808/3086/7525 2816/3095/7541 2815/3094/7542 +s 8 +f 2808/3086/7528 2801/3087/7527 2809/3096/7543 2816/3095/7544 +s 1 +f 2809/3088/7530 2810/3089/7529 2818/3098/7545 2817/3097/7546 +s 2 +f 2810/3089/7532 2811/3090/7531 2819/3099/7547 2818/3098/7548 +s 3 +f 2811/3090/7534 2812/3091/7533 2820/3100/7549 2819/3099/7550 +s 4 +f 2812/3091/7536 2813/3092/7535 2821/3101/7551 2820/3100/7552 +s 5 +f 2813/3092/7538 2814/3093/7537 2822/3102/7553 2821/3101/7554 +s 6 +f 2814/3093/7540 2815/3094/7539 2823/3103/7555 2822/3102/7556 +s 7 +f 2815/3094/7542 2816/3095/7541 2824/3104/7557 2823/3103/7558 +s 8 +f 2816/3095/7544 2809/3096/7543 2817/3105/7559 2824/3104/7560 +s 1 +f 2817/3097/7546 2818/3098/7545 2826/3107/7561 2825/3106/7562 +s 2 +f 2818/3098/7548 2819/3099/7547 2827/3108/7563 2826/3107/7564 +s 3 +f 2819/3099/7550 2820/3100/7549 2828/3109/7565 2827/3108/7566 +s 4 +f 2820/3100/7552 2821/3101/7551 2829/3110/7567 2828/3109/7568 +s 5 +f 2821/3101/7554 2822/3102/7553 2830/3111/7569 2829/3110/7570 +s 6 +f 2822/3102/7556 2823/3103/7555 2831/3112/7571 2830/3111/7572 +s 7 +f 2823/3103/7558 2824/3104/7557 2832/3113/7573 2831/3112/7574 +s 8 +f 2824/3104/7560 2817/3105/7559 2825/3114/7575 2832/3113/7576 +s 1 +f 2825/3106/7562 2826/3107/7561 2834/3116/7577 2833/3115/7578 +s 2 +f 2826/3107/7564 2827/3108/7563 2835/3117/7579 2834/3116/7580 +s 3 +f 2827/3108/7566 2828/3109/7565 2836/3118/7581 2835/3117/7582 +s 4 +f 2828/3109/7568 2829/3110/7567 2837/3119/7583 2836/3118/7584 +s 5 +f 2829/3110/7570 2830/3111/7569 2838/3120/7585 2837/3119/7586 +s 6 +f 2830/3111/7572 2831/3112/7571 2839/3121/7587 2838/3120/7588 +s 7 +f 2831/3112/7574 2832/3113/7573 2840/3122/7589 2839/3121/7590 +s 8 +f 2832/3113/7576 2825/3114/7575 2833/3123/7591 2840/3122/7592 +s 1 +f 2833/3115/7578 2834/3116/7577 2842/3125/7593 2841/3124/7594 +s 2 +f 2834/3116/7580 2835/3117/7579 2843/3126/7595 2842/3125/7596 +s 3 +f 2835/3117/7582 2836/3118/7581 2844/3127/7597 2843/3126/7598 +s 4 +f 2836/3118/7584 2837/3119/7583 2845/3128/7599 2844/3127/7600 +s 5 +f 2837/3119/7586 2838/3120/7585 2846/3129/7601 2845/3128/7602 +s 6 +f 2838/3120/7588 2839/3121/7587 2847/3130/7603 2846/3129/7604 +s 7 +f 2839/3121/7590 2840/3122/7589 2848/3131/7605 2847/3130/7606 +s 8 +f 2840/3122/7592 2833/3123/7591 2841/3132/7607 2848/3131/7608 +s 1 +f 2841/3124/7594 2842/3125/7593 2850/3134/7609 2849/3133/7610 +s 2 +f 2842/3125/7596 2843/3126/7595 2851/3135/7611 2850/3134/7612 +s 3 +f 2843/3126/7598 2844/3127/7597 2852/3136/7613 2851/3135/7614 +s 4 +f 2844/3127/7600 2845/3128/7599 2853/3137/7615 2852/3136/7616 +s 5 +f 2845/3128/7602 2846/3129/7601 2854/3138/7617 2853/3137/7618 +s 6 +f 2846/3129/7604 2847/3130/7603 2855/3139/7619 2854/3138/7620 +s 7 +f 2847/3130/7606 2848/3131/7605 2856/3140/7621 2855/3139/7622 +s 8 +f 2848/3131/7608 2841/3132/7607 2849/3141/7623 2856/3140/7624 +s 1 +f 2849/3133/7610 2850/3134/7609 2858/3143/7625 2857/3142/7626 +s 2 +f 2850/3134/7612 2851/3135/7611 2859/3144/7627 2858/3143/7628 +s 3 +f 2851/3135/7614 2852/3136/7613 2860/3145/7629 2859/3144/7630 +s 4 +f 2852/3136/7616 2853/3137/7615 2861/3146/7631 2860/3145/7632 +s 5 +f 2853/3137/7618 2854/3138/7617 2862/3147/7633 2861/3146/7634 +s 6 +f 2854/3138/7620 2855/3139/7619 2863/3148/7635 2862/3147/7636 +s 7 +f 2855/3139/7622 2856/3140/7621 2864/3149/7637 2863/3148/7638 +s 8 +f 2856/3140/7624 2849/3141/7623 2857/3150/7639 2864/3149/7640 +s 1 +f 2857/3142/7626 2858/3143/7625 2866/3152/7641 2865/3151/7642 +s 2 +f 2858/3143/7628 2859/3144/7627 2867/3153/7643 2866/3152/7644 +s 3 +f 2859/3144/7630 2860/3145/7629 2868/3154/7645 2867/3153/7646 +s 4 +f 2860/3145/7632 2861/3146/7631 2869/3155/7647 2868/3154/7648 +s 5 +f 2861/3146/7634 2862/3147/7633 2870/3156/7649 2869/3155/7650 +s 6 +f 2862/3147/7636 2863/3148/7635 2871/3157/7651 2870/3156/7652 +s 7 +f 2863/3148/7638 2864/3149/7637 2872/3158/7653 2871/3157/7654 +s 8 +f 2864/3149/7640 2857/3150/7639 2865/3159/7655 2872/3158/7656 +s 1 +f 2865/3151/7642 2866/3152/7641 2874/3161/7657 2873/3160/7658 +s 2 +f 2866/3152/7644 2867/3153/7643 2875/3162/7659 2874/3161/7660 +s 3 +f 2867/3153/7646 2868/3154/7645 2876/3163/7661 2875/3162/7662 +s 4 +f 2868/3154/7648 2869/3155/7647 2877/3164/7663 2876/3163/7664 +s 5 +f 2869/3155/7650 2870/3156/7649 2878/3165/7665 2877/3164/7666 +s 6 +f 2870/3156/7652 2871/3157/7651 2879/3166/7667 2878/3165/7668 +s 7 +f 2871/3157/7654 2872/3158/7653 2880/3167/7669 2879/3166/7670 +s 8 +f 2872/3158/7656 2865/3159/7655 2873/3168/7671 2880/3167/7672 +s 1 +f 2873/3160/7658 2874/3161/7657 2882/3170/7673 2881/3169/7674 +s 2 +f 2874/3161/7660 2875/3162/7659 2883/3171/7675 2882/3170/7676 +s 3 +f 2875/3162/7662 2876/3163/7661 2884/3172/7677 2883/3171/7678 +s 4 +f 2876/3163/7664 2877/3164/7663 2885/3173/7679 2884/3172/7680 +s 5 +f 2877/3164/7666 2878/3165/7665 2886/3174/7681 2885/3173/7682 +s 6 +f 2878/3165/7668 2879/3166/7667 2887/3175/7683 2886/3174/7684 +s 7 +f 2879/3166/7670 2880/3167/7669 2888/3176/7685 2887/3175/7686 +s 8 +f 2880/3167/7672 2873/3168/7671 2881/3177/7687 2888/3176/7688 +s 1 +f 2881/3169/7674 2882/3170/7673 2890/3179/7689 2889/3178/7690 +s 2 +f 2882/3170/7676 2883/3171/7675 2891/3180/7691 2890/3179/7692 +s 3 +f 2883/3171/7678 2884/3172/7677 2892/3181/7693 2891/3180/7694 +s 4 +f 2884/3172/7680 2885/3173/7679 2893/3182/7695 2892/3181/7696 +s 5 +f 2885/3173/7682 2886/3174/7681 2894/3183/7697 2893/3182/7698 +s 6 +f 2886/3174/7684 2887/3175/7683 2895/3184/7699 2894/3183/7700 +s 7 +f 2887/3175/7686 2888/3176/7685 2896/3185/7701 2895/3184/7702 +s 8 +f 2888/3176/7688 2881/3177/7687 2889/3186/7703 2896/3185/7704 +s 1 +f 2889/3178/7690 2890/3179/7689 2898/3188/7705 2897/3187/7706 +s 2 +f 2890/3179/7692 2891/3180/7691 2899/3189/7707 2898/3188/7708 +s 3 +f 2891/3180/7694 2892/3181/7693 2900/3190/7709 2899/3189/7710 +s 4 +f 2892/3181/7696 2893/3182/7695 2901/3191/7711 2900/3190/7712 +s 5 +f 2893/3182/7698 2894/3183/7697 2902/3192/7713 2901/3191/7714 +s 6 +f 2894/3183/7700 2895/3184/7699 2903/3193/7715 2902/3192/7716 +s 7 +f 2895/3184/7702 2896/3185/7701 2904/3194/7717 2903/3193/7718 +s 8 +f 2896/3185/7704 2889/3186/7703 2897/3195/7719 2904/3194/7720 +s 1 +f 2897/3187/7706 2898/3188/7705 2906/3197/7721 2905/3196/7722 +s 2 +f 2898/3188/7708 2899/3189/7707 2907/3198/7723 2906/3197/7724 +s 3 +f 2899/3189/7710 2900/3190/7709 2908/3199/7725 2907/3198/7726 +s 4 +f 2900/3190/7712 2901/3191/7711 2909/3200/7727 2908/3199/7728 +s 5 +f 2901/3191/7714 2902/3192/7713 2910/3201/7729 2909/3200/7730 +s 6 +f 2902/3192/7716 2903/3193/7715 2911/3202/7731 2910/3201/7732 +s 7 +f 2903/3193/7718 2904/3194/7717 2912/3203/7733 2911/3202/7734 +s 8 +f 2904/3194/7720 2897/3195/7719 2905/3204/7735 2912/3203/7736 +s 1 +f 2905/3196/7722 2906/3197/7721 2914/3206/7737 2913/3205/7738 +s 2 +f 2906/3197/7724 2907/3198/7723 2915/3207/7739 2914/3206/7740 +s 3 +f 2907/3198/7726 2908/3199/7725 2916/3208/7741 2915/3207/7742 +s 4 +f 2908/3199/7728 2909/3200/7727 2917/3209/7743 2916/3208/7744 +s 5 +f 2909/3200/7730 2910/3201/7729 2918/3210/7745 2917/3209/7746 +s 6 +f 2910/3201/7732 2911/3202/7731 2919/3211/7747 2918/3210/7748 +s 7 +f 2911/3202/7734 2912/3203/7733 2920/3212/7749 2919/3211/7750 +s 8 +f 2912/3203/7736 2905/3204/7735 2913/3213/7751 2920/3212/7752 +s 1 +f 2913/3205/7738 2914/3206/7737 2922/3215/7753 2921/3214/7754 +s 2 +f 2914/3206/7740 2915/3207/7739 2923/3216/7755 2922/3215/7756 +s 3 +f 2915/3207/7742 2916/3208/7741 2924/3217/7757 2923/3216/7758 +s 4 +f 2916/3208/7744 2917/3209/7743 2925/3218/7759 2924/3217/7760 +s 5 +f 2917/3209/7746 2918/3210/7745 2926/3219/7761 2925/3218/7762 +s 6 +f 2918/3210/7748 2919/3211/7747 2927/3220/7763 2926/3219/7764 +s 7 +f 2919/3211/7750 2920/3212/7749 2928/3221/7765 2927/3220/7766 +s 8 +f 2920/3212/7752 2913/3213/7751 2921/3222/7767 2928/3221/7768 +s 1 +f 2921/3214/7754 2922/3215/7753 2930/3224/7769 2929/3223/7770 +s 2 +f 2922/3215/7756 2923/3216/7755 2931/3225/7771 2930/3224/7772 +s 3 +f 2923/3216/7758 2924/3217/7757 2932/3226/7773 2931/3225/7774 +s 4 +f 2924/3217/7760 2925/3218/7759 2933/3227/7775 2932/3226/7776 +s 5 +f 2925/3218/7762 2926/3219/7761 2934/3228/7777 2933/3227/7778 +s 6 +f 2926/3219/7764 2927/3220/7763 2935/3229/7779 2934/3228/7780 +s 7 +f 2927/3220/7766 2928/3221/7765 2936/3230/7781 2935/3229/7782 +s 8 +f 2928/3221/7768 2921/3222/7767 2929/3231/7783 2936/3230/7784 +s 1 +f 2929/3223/7770 2930/3224/7769 2938/3233/7785 2937/3232/7786 +s 2 +f 2930/3224/7772 2931/3225/7771 2939/3234/7787 2938/3233/7788 +s 3 +f 2931/3225/7774 2932/3226/7773 2940/3235/7789 2939/3234/7790 +s 4 +f 2932/3226/7776 2933/3227/7775 2941/3236/7791 2940/3235/7792 +s 5 +f 2933/3227/7778 2934/3228/7777 2942/3237/7793 2941/3236/7794 +s 6 +f 2934/3228/7780 2935/3229/7779 2943/3238/7795 2942/3237/7796 +s 7 +f 2935/3229/7782 2936/3230/7781 2944/3239/7797 2943/3238/7798 +s 8 +f 2936/3230/7784 2929/3231/7783 2937/3240/7799 2944/3239/7800 +s 1 +f 2937/3232/7786 2938/3233/7785 2946/3242/7801 2945/3241/7802 +s 2 +f 2938/3233/7788 2939/3234/7787 2947/3243/7803 2946/3242/7804 +s 3 +f 2939/3234/7790 2940/3235/7789 2948/3244/7805 2947/3243/7806 +s 4 +f 2940/3235/7792 2941/3236/7791 2949/3245/7807 2948/3244/7808 +s 5 +f 2941/3236/7794 2942/3237/7793 2950/3246/7809 2949/3245/7810 +s 6 +f 2942/3237/7796 2943/3238/7795 2951/3247/7811 2950/3246/7812 +s 7 +f 2943/3238/7798 2944/3239/7797 2952/3248/7813 2951/3247/7814 +s 8 +f 2944/3239/7800 2937/3240/7799 2945/3249/7815 2952/3248/7816 +s 1 +f 2945/3241/7802 2946/3242/7801 2954/3251/7817 2953/3250/7818 +s 2 +f 2946/3242/7804 2947/3243/7803 2955/3252/7819 2954/3251/7820 +s 3 +f 2947/3243/7806 2948/3244/7805 2956/3253/7821 2955/3252/7822 +s 4 +f 2948/3244/7808 2949/3245/7807 2957/3254/7823 2956/3253/7824 +s 5 +f 2949/3245/7810 2950/3246/7809 2958/3255/7825 2957/3254/7826 +s 6 +f 2950/3246/7812 2951/3247/7811 2959/3256/7827 2958/3255/7828 +s 7 +f 2951/3247/7814 2952/3248/7813 2960/3257/7829 2959/3256/7830 +s 8 +f 2952/3248/7816 2945/3249/7815 2953/3258/7831 2960/3257/7832 +s 1 +f 2953/3250/7818 2954/3251/7817 2962/3260/7833 2961/3259/7834 +s 2 +f 2954/3251/7820 2955/3252/7819 2963/3261/7835 2962/3260/7836 +s 3 +f 2955/3252/7822 2956/3253/7821 2964/3262/7837 2963/3261/7838 +s 4 +f 2956/3253/7824 2957/3254/7823 2965/3263/7839 2964/3262/7840 +s 5 +f 2957/3254/7826 2958/3255/7825 2966/3264/7841 2965/3263/7842 +s 6 +f 2958/3255/7828 2959/3256/7827 2967/3265/7843 2966/3264/7844 +s 7 +f 2959/3256/7830 2960/3257/7829 2968/3266/7845 2967/3265/7846 +s 8 +f 2960/3257/7832 2953/3258/7831 2961/3267/7847 2968/3266/7848 +s 1 +f 2961/3259/7834 2962/3260/7833 2970/3269/7849 2969/3268/7850 +s 2 +f 2962/3260/7836 2963/3261/7835 2971/3270/7851 2970/3269/7852 +s 3 +f 2963/3261/7838 2964/3262/7837 2972/3271/7853 2971/3270/7854 +s 4 +f 2964/3262/7840 2965/3263/7839 2973/3272/7855 2972/3271/7856 +s 5 +f 2965/3263/7842 2966/3264/7841 2974/3273/7857 2973/3272/7858 +s 6 +f 2966/3264/7844 2967/3265/7843 2975/3274/7859 2974/3273/7860 +s 7 +f 2967/3265/7846 2968/3266/7845 2976/3275/7861 2975/3274/7862 +s 8 +f 2968/3266/7848 2961/3267/7847 2969/3276/7863 2976/3275/7864 +s 1 +f 2969/3268/7850 2970/3269/7849 2978/3278/7865 2977/3277/7866 +s 2 +f 2970/3269/7852 2971/3270/7851 2979/3279/7867 2978/3278/7868 +s 3 +f 2971/3270/7854 2972/3271/7853 2980/3280/7869 2979/3279/7870 +s 4 +f 2972/3271/7856 2973/3272/7855 2981/3281/7871 2980/3280/7872 +s 5 +f 2973/3272/7858 2974/3273/7857 2982/3282/7873 2981/3281/7874 +s 6 +f 2974/3273/7860 2975/3274/7859 2983/3283/7875 2982/3282/7876 +s 7 +f 2975/3274/7862 2976/3275/7861 2984/3284/7877 2983/3283/7878 +s 8 +f 2976/3275/7864 2969/3276/7863 2977/3285/7879 2984/3284/7880 +s 1 +f 2977/3277/7866 2978/3278/7865 2986/3287/7881 2985/3286/7882 +s 2 +f 2978/3278/7868 2979/3279/7867 2987/3288/7883 2986/3287/7884 +s 3 +f 2979/3279/7870 2980/3280/7869 2988/3289/7885 2987/3288/7886 +s 4 +f 2980/3280/7872 2981/3281/7871 2989/3290/7887 2988/3289/7888 +s 5 +f 2981/3281/7874 2982/3282/7873 2990/3291/7889 2989/3290/7890 +s 6 +f 2982/3282/7876 2983/3283/7875 2991/3292/7891 2990/3291/7892 +s 7 +f 2983/3283/7878 2984/3284/7877 2992/3293/7893 2991/3292/7894 +s 8 +f 2984/3284/7880 2977/3285/7879 2985/3294/7895 2992/3293/7896 +s 1 +f 2985/3286/7882 2986/3287/7881 2994/3296/7897 2993/3295/7898 +s 2 +f 2986/3287/7884 2987/3288/7883 2995/3297/7899 2994/3296/7900 +s 3 +f 2987/3288/7886 2988/3289/7885 2996/3298/7901 2995/3297/7902 +s 4 +f 2988/3289/7888 2989/3290/7887 2997/3299/7903 2996/3298/7904 +s 5 +f 2989/3290/7890 2990/3291/7889 2998/3300/7905 2997/3299/7906 +s 6 +f 2990/3291/7892 2991/3292/7891 2999/3301/7907 2998/3300/7908 +s 7 +f 2991/3292/7894 2992/3293/7893 3000/3302/7909 2999/3301/7910 +s 8 +f 2992/3293/7896 2985/3294/7895 2993/3303/7911 3000/3302/7912 +s 1 +f 2993/3295/7898 2994/3296/7897 3002/3305/7913 3001/3304/7914 +s 2 +f 2994/3296/7900 2995/3297/7899 3003/3306/7915 3002/3305/7916 +s 3 +f 2995/3297/7902 2996/3298/7901 3004/3307/7917 3003/3306/7918 +s 4 +f 2996/3298/7904 2997/3299/7903 3005/3308/7919 3004/3307/7920 +s 5 +f 2997/3299/7906 2998/3300/7905 3006/3309/7921 3005/3308/7922 +s 6 +f 2998/3300/7908 2999/3301/7907 3007/3310/7923 3006/3309/7924 +s 7 +f 2999/3301/7910 3000/3302/7909 3008/3311/7925 3007/3310/7926 +s 8 +f 3000/3302/7912 2993/3303/7911 3001/3312/7927 3008/3311/7928 +s 1 +f 3001/3304/7914 3002/3305/7913 3010/3314/7929 3009/3313/7930 +s 2 +f 3002/3305/7916 3003/3306/7915 3011/3315/7931 3010/3314/7932 +s 3 +f 3003/3306/7918 3004/3307/7917 3012/3316/7933 3011/3315/7934 +s 4 +f 3004/3307/7920 3005/3308/7919 3013/3317/7935 3012/3316/7936 +s 5 +f 3005/3308/7922 3006/3309/7921 3014/3318/7937 3013/3317/7938 +s 6 +f 3006/3309/7924 3007/3310/7923 3015/3319/7939 3014/3318/7940 +s 7 +f 3007/3310/7926 3008/3311/7925 3016/3320/7941 3015/3319/7942 +s 8 +f 3008/3311/7928 3001/3312/7927 3009/3321/7943 3016/3320/7944 +s 1 +f 3009/3313/7930 3010/3314/7929 3018/3323/7945 3017/3322/7946 +s 2 +f 3010/3314/7932 3011/3315/7931 3019/3324/7947 3018/3323/7948 +s 3 +f 3011/3315/7934 3012/3316/7933 3020/3325/7949 3019/3324/7950 +s 4 +f 3012/3316/7936 3013/3317/7935 3021/3326/7951 3020/3325/7952 +s 5 +f 3013/3317/7938 3014/3318/7937 3022/3327/7953 3021/3326/7954 +s 6 +f 3014/3318/7940 3015/3319/7939 3023/3328/7955 3022/3327/7956 +s 7 +f 3015/3319/7942 3016/3320/7941 3024/3329/7957 3023/3328/7958 +s 8 +f 3016/3320/7944 3009/3321/7943 3017/3330/7959 3024/3329/7960 +s 1 +f 3017/3322/7946 3018/3323/7945 3026/3332/7961 3025/3331/7962 +s 2 +f 3018/3323/7948 3019/3324/7947 3027/3333/7963 3026/3332/7964 +s 3 +f 3019/3324/7950 3020/3325/7949 3028/3334/7965 3027/3333/7966 +s 4 +f 3020/3325/7952 3021/3326/7951 3029/3335/7967 3028/3334/7968 +s 5 +f 3021/3326/7954 3022/3327/7953 3030/3336/7969 3029/3335/7970 +s 6 +f 3022/3327/7956 3023/3328/7955 3031/3337/7971 3030/3336/7972 +s 7 +f 3023/3328/7958 3024/3329/7957 3032/3338/7973 3031/3337/7974 +s 8 +f 3024/3329/7960 3017/3330/7959 3025/3339/7975 3032/3338/7976 +s 1 +f 3025/3331/7962 3026/3332/7961 3034/3341/7977 3033/3340/7978 +s 2 +f 3026/3332/7964 3027/3333/7963 3035/3342/7979 3034/3341/7980 +s 3 +f 3027/3333/7966 3028/3334/7965 3036/3343/7981 3035/3342/7982 +s 4 +f 3028/3334/7968 3029/3335/7967 3037/3344/7983 3036/3343/7984 +s 5 +f 3029/3335/7970 3030/3336/7969 3038/3345/7985 3037/3344/7986 +s 6 +f 3030/3336/7972 3031/3337/7971 3039/3346/7987 3038/3345/7988 +s 7 +f 3031/3337/7974 3032/3338/7973 3040/3347/7989 3039/3346/7990 +s 8 +f 3032/3338/7976 3025/3339/7975 3033/3348/7991 3040/3347/7992 +s 1 +f 3033/3340/7978 3034/3341/7977 3042/3350/7993 3041/3349/7994 +s 2 +f 3034/3341/7980 3035/3342/7979 3043/3351/7995 3042/3350/7996 +s 3 +f 3035/3342/7982 3036/3343/7981 3044/3352/7997 3043/3351/7998 +s 4 +f 3036/3343/7984 3037/3344/7983 3045/3353/7999 3044/3352/8000 +s 5 +f 3037/3344/7986 3038/3345/7985 3046/3354/8001 3045/3353/8002 +s 6 +f 3038/3345/7988 3039/3346/7987 3047/3355/8003 3046/3354/8004 +s 7 +f 3039/3346/7990 3040/3347/7989 3048/3356/8005 3047/3355/8006 +s 8 +f 3040/3347/7992 3033/3348/7991 3041/3357/8007 3048/3356/8008 +s 1 +f 3041/3349/7994 3042/3350/7993 3050/3359/8009 3049/3358/8010 +s 2 +f 3042/3350/7996 3043/3351/7995 3051/3360/8011 3050/3359/8012 +s 3 +f 3043/3351/7998 3044/3352/7997 3052/3361/8013 3051/3360/8014 +s 4 +f 3044/3352/8000 3045/3353/7999 3053/3362/8015 3052/3361/8016 +s 5 +f 3045/3353/8002 3046/3354/8001 3054/3363/8017 3053/3362/8018 +s 6 +f 3046/3354/8004 3047/3355/8003 3055/3364/8019 3054/3363/8020 +s 7 +f 3047/3355/8006 3048/3356/8005 3056/3365/8021 3055/3364/8022 +s 8 +f 3048/3356/8008 3041/3357/8007 3049/3366/8023 3056/3365/8024 +s 1 +f 3049/3358/8010 3050/3359/8009 3058/3368/8025 3057/3367/8026 +s 2 +f 3050/3359/8012 3051/3360/8011 3059/3369/8027 3058/3368/8028 +s 3 +f 3051/3360/8014 3052/3361/8013 3060/3370/8029 3059/3369/8030 +s 4 +f 3052/3361/8016 3053/3362/8015 3061/3371/8031 3060/3370/8032 +s 5 +f 3053/3362/8018 3054/3363/8017 3062/3372/8033 3061/3371/8034 +s 6 +f 3054/3363/8020 3055/3364/8019 3063/3373/8035 3062/3372/8036 +s 7 +f 3055/3364/8022 3056/3365/8021 3064/3374/8037 3063/3373/8038 +s 8 +f 3056/3365/8024 3049/3366/8023 3057/3375/8039 3064/3374/8040 +s 1 +f 3057/3367/8026 3058/3368/8025 3066/3377/8041 3065/3376/8042 +s 2 +f 3058/3368/8028 3059/3369/8027 3067/3378/8043 3066/3377/8044 +s 3 +f 3059/3369/8030 3060/3370/8029 3068/3379/8045 3067/3378/8046 +s 4 +f 3060/3370/8032 3061/3371/8031 3069/3380/8047 3068/3379/8048 +s 5 +f 3061/3371/8034 3062/3372/8033 3070/3381/8049 3069/3380/8050 +s 6 +f 3062/3372/8036 3063/3373/8035 3071/3382/8051 3070/3381/8052 +s 7 +f 3063/3373/8038 3064/3374/8037 3072/3383/8053 3071/3382/8054 +s 8 +f 3064/3374/8040 3057/3375/8039 3065/3384/8055 3072/3383/8056 +s 1 +f 3065/3376/8042 3066/3377/8041 3074/3386/8057 3073/3385/8058 +s 2 +f 3066/3377/8044 3067/3378/8043 3075/3387/8059 3074/3386/8060 +s 3 +f 3067/3378/8046 3068/3379/8045 3076/3388/8061 3075/3387/8062 +s 4 +f 3068/3379/8048 3069/3380/8047 3077/3389/8063 3076/3388/8064 +s 5 +f 3069/3380/8050 3070/3381/8049 3078/3390/8065 3077/3389/8066 +s 6 +f 3070/3381/8052 3071/3382/8051 3079/3391/8067 3078/3390/8068 +s 7 +f 3071/3382/8054 3072/3383/8053 3080/3392/8069 3079/3391/8070 +s 8 +f 3072/3383/8056 3065/3384/8055 3073/3393/8071 3080/3392/8072 +s 1 +f 3073/3385/8058 3074/3386/8057 3082/3395/8073 3081/3394/8074 +s 2 +f 3074/3386/8060 3075/3387/8059 3083/3396/8075 3082/3395/8076 +s 3 +f 3075/3387/8062 3076/3388/8061 3084/3397/8077 3083/3396/8078 +s 4 +f 3076/3388/8064 3077/3389/8063 3085/3398/8079 3084/3397/8080 +s 5 +f 3077/3389/8066 3078/3390/8065 3086/3399/8081 3085/3398/8082 +s 6 +f 3078/3390/8068 3079/3391/8067 3087/3400/8083 3086/3399/8084 +s 7 +f 3079/3391/8070 3080/3392/8069 3088/3401/8085 3087/3400/8086 +s 8 +f 3080/3392/8072 3073/3393/8071 3081/3402/8087 3088/3401/8088 +s 1 +f 3081/3394/8074 3082/3395/8073 3090/3404/8089 3089/3403/8090 +s 2 +f 3082/3395/8076 3083/3396/8075 3091/3405/8091 3090/3404/8092 +s 3 +f 3083/3396/8078 3084/3397/8077 3092/3406/8093 3091/3405/8094 +s 4 +f 3084/3397/8080 3085/3398/8079 3093/3407/8095 3092/3406/8096 +s 5 +f 3085/3398/8082 3086/3399/8081 3094/3408/8097 3093/3407/8098 +s 6 +f 3086/3399/8084 3087/3400/8083 3095/3409/8099 3094/3408/8100 +s 7 +f 3087/3400/8086 3088/3401/8085 3096/3410/8101 3095/3409/8102 +s 8 +f 3088/3401/8088 3081/3402/8087 3089/3411/8103 3096/3410/8104 +s 1 +f 3089/3403/8090 3090/3404/8089 3098/3413/8105 3097/3412/8106 +s 2 +f 3090/3404/8092 3091/3405/8091 3099/3414/8107 3098/3413/8108 +s 3 +f 3091/3405/8094 3092/3406/8093 3100/3415/8109 3099/3414/8110 +s 4 +f 3092/3406/8096 3093/3407/8095 3101/3416/8111 3100/3415/8112 +s 5 +f 3093/3407/8098 3094/3408/8097 3102/3417/8113 3101/3416/8114 +s 6 +f 3094/3408/8100 3095/3409/8099 3103/3418/8115 3102/3417/8116 +s 7 +f 3095/3409/8102 3096/3410/8101 3104/3419/8117 3103/3418/8118 +s 8 +f 3096/3410/8104 3089/3411/8103 3097/3420/8119 3104/3419/8120 +s 1 +f 3097/3412/8106 3098/3413/8105 3106/3422/8121 3105/3421/8122 +s 2 +f 3098/3413/8108 3099/3414/8107 3107/3423/8123 3106/3422/8124 +s 3 +f 3099/3414/8110 3100/3415/8109 3108/3424/8125 3107/3423/8126 +s 4 +f 3100/3415/8112 3101/3416/8111 3109/3425/8127 3108/3424/8128 +s 5 +f 3101/3416/8114 3102/3417/8113 3110/3426/8129 3109/3425/8130 +s 6 +f 3102/3417/8116 3103/3418/8115 3111/3427/8131 3110/3426/8132 +s 7 +f 3103/3418/8118 3104/3419/8117 3112/3428/8133 3111/3427/8134 +s 8 +f 3104/3419/8120 3097/3420/8119 3105/3429/8135 3112/3428/8136 +s 1 +f 3105/3421/8122 3106/3422/8121 3114/3431/8137 3113/3430/8138 +s 2 +f 3106/3422/8124 3107/3423/8123 3115/3432/8139 3114/3431/8140 +s 3 +f 3107/3423/8126 3108/3424/8125 3116/3433/8141 3115/3432/8142 +s 4 +f 3108/3424/8128 3109/3425/8127 3117/3434/8143 3116/3433/8144 +s 5 +f 3109/3425/8130 3110/3426/8129 3118/3435/8145 3117/3434/8146 +s 6 +f 3110/3426/8132 3111/3427/8131 3119/3436/8147 3118/3435/8148 +s 7 +f 3111/3427/8134 3112/3428/8133 3120/3437/8149 3119/3436/8150 +s 8 +f 3112/3428/8136 3105/3429/8135 3113/3438/8151 3120/3437/8152 +s 1 +f 3113/3430/8138 3114/3431/8137 3122/3440/8153 3121/3439/8154 +s 2 +f 3114/3431/8140 3115/3432/8139 3123/3441/8155 3122/3440/8156 +s 3 +f 3115/3432/8142 3116/3433/8141 3124/3442/8157 3123/3441/8158 +s 4 +f 3116/3433/8144 3117/3434/8143 3125/3443/8159 3124/3442/8160 +s 5 +f 3117/3434/8146 3118/3435/8145 3126/3444/8161 3125/3443/8162 +s 6 +f 3118/3435/8148 3119/3436/8147 3127/3445/8163 3126/3444/8164 +s 7 +f 3119/3436/8150 3120/3437/8149 3128/3446/8165 3127/3445/8166 +s 8 +f 3120/3437/8152 3113/3438/8151 3121/3447/8167 3128/3446/8168 +s 1 +f 3121/3439/8154 3122/3440/8153 3130/3449/8169 3129/3448/8170 +s 2 +f 3122/3440/8156 3123/3441/8155 3131/3450/8171 3130/3449/8172 +s 3 +f 3123/3441/8158 3124/3442/8157 3132/3451/8173 3131/3450/8174 +s 4 +f 3124/3442/8160 3125/3443/8159 3133/3452/8175 3132/3451/8176 +s 5 +f 3125/3443/8162 3126/3444/8161 3134/3453/8177 3133/3452/8178 +s 6 +f 3126/3444/8164 3127/3445/8163 3135/3454/8179 3134/3453/8180 +s 7 +f 3127/3445/8166 3128/3446/8165 3136/3455/8181 3135/3454/8182 +s 8 +f 3128/3446/8168 3121/3447/8167 3129/3456/8183 3136/3455/8184 +s 1 +f 3129/3448/8170 3130/3449/8169 3138/3458/8185 3137/3457/8186 +s 2 +f 3130/3449/8172 3131/3450/8171 3139/3459/8187 3138/3458/8188 +s 3 +f 3131/3450/8174 3132/3451/8173 3140/3460/8189 3139/3459/8190 +s 4 +f 3132/3451/8176 3133/3452/8175 3141/3461/8191 3140/3460/8192 +s 5 +f 3133/3452/8178 3134/3453/8177 3142/3462/8193 3141/3461/8194 +s 6 +f 3134/3453/8180 3135/3454/8179 3143/3463/8195 3142/3462/8196 +s 7 +f 3135/3454/8182 3136/3455/8181 3144/3464/8197 3143/3463/8198 +s 8 +f 3136/3455/8184 3129/3456/8183 3137/3465/8199 3144/3464/8200 +s 1 +f 3137/3457/8186 3138/3458/8185 3146/3467/8201 3145/3466/8202 +s 2 +f 3138/3458/8188 3139/3459/8187 3147/3468/8203 3146/3467/8204 +s 3 +f 3139/3459/8190 3140/3460/8189 3148/3469/8205 3147/3468/8206 +s 4 +f 3140/3460/8192 3141/3461/8191 3149/3470/8207 3148/3469/8208 +s 5 +f 3141/3461/8194 3142/3462/8193 3150/3471/8209 3149/3470/8210 +s 6 +f 3142/3462/8196 3143/3463/8195 3151/3472/8211 3150/3471/8212 +s 7 +f 3143/3463/8198 3144/3464/8197 3152/3473/8213 3151/3472/8214 +s 8 +f 3144/3464/8200 3137/3465/8199 3145/3474/8215 3152/3473/8216 +s 1 +f 3145/3466/8202 3146/3467/8201 3154/3476/8217 3153/3475/8218 +s 2 +f 3146/3467/8204 3147/3468/8203 3155/3477/8219 3154/3476/8220 +s 3 +f 3147/3468/8206 3148/3469/8205 3156/3478/8221 3155/3477/8222 +s 4 +f 3148/3469/8208 3149/3470/8207 3157/3479/8223 3156/3478/8224 +s 5 +f 3149/3470/8210 3150/3471/8209 3158/3480/8225 3157/3479/8226 +s 6 +f 3150/3471/8212 3151/3472/8211 3159/3481/8227 3158/3480/8228 +s 7 +f 3151/3472/8214 3152/3473/8213 3160/3482/8229 3159/3481/8230 +s 8 +f 3152/3473/8216 3145/3474/8215 3153/3483/8231 3160/3482/8232 +s 1 +f 3153/3475/8218 3154/3476/8217 3162/3485/8233 3161/3484/8234 +s 2 +f 3154/3476/8220 3155/3477/8219 3163/3486/8235 3162/3485/8236 +s 3 +f 3155/3477/8222 3156/3478/8221 3164/3487/8237 3163/3486/8238 +s 4 +f 3156/3478/8224 3157/3479/8223 3165/3488/8239 3164/3487/8240 +s 5 +f 3157/3479/8226 3158/3480/8225 3166/3489/8241 3165/3488/8242 +s 6 +f 3158/3480/8228 3159/3481/8227 3167/3490/8243 3166/3489/8244 +s 7 +f 3159/3481/8230 3160/3482/8229 3168/3491/8245 3167/3490/8246 +s 8 +f 3160/3482/8232 3153/3483/8231 3161/3492/8247 3168/3491/8248 +s 1 +f 3161/3484/8234 3162/3485/8233 3170/3494/8249 3169/3493/8250 +s 2 +f 3162/3485/8236 3163/3486/8235 3171/3495/8251 3170/3494/8252 +s 3 +f 3163/3486/8238 3164/3487/8237 3172/3496/8253 3171/3495/8254 +s 4 +f 3164/3487/8240 3165/3488/8239 3173/3497/8255 3172/3496/8256 +s 5 +f 3165/3488/8242 3166/3489/8241 3174/3498/8257 3173/3497/8258 +s 6 +f 3166/3489/8244 3167/3490/8243 3175/3499/8259 3174/3498/8260 +s 7 +f 3167/3490/8246 3168/3491/8245 3176/3500/8261 3175/3499/8262 +s 8 +f 3168/3491/8248 3161/3492/8247 3169/3501/8263 3176/3500/8264 +s 1 +f 3169/3493/8250 3170/3494/8249 3178/3503/8265 3177/3502/8266 +s 2 +f 3170/3494/8252 3171/3495/8251 3179/3504/8267 3178/3503/8268 +s 3 +f 3171/3495/8254 3172/3496/8253 3180/3505/8269 3179/3504/8270 +s 4 +f 3172/3496/8256 3173/3497/8255 3181/3506/8271 3180/3505/8272 +s 5 +f 3173/3497/8258 3174/3498/8257 3182/3507/8273 3181/3506/8274 +s 6 +f 3174/3498/8260 3175/3499/8259 3183/3508/8275 3182/3507/8276 +s 7 +f 3175/3499/8262 3176/3500/8261 3184/3509/8277 3183/3508/8278 +s 8 +f 3176/3500/8264 3169/3501/8263 3177/3510/8279 3184/3509/8280 +s 1 +f 3177/3502/8266 3178/3503/8265 3186/3512/8281 3185/3511/8282 +s 2 +f 3178/3503/8268 3179/3504/8267 3187/3513/8283 3186/3512/8284 +s 3 +f 3179/3504/8270 3180/3505/8269 3188/3514/8285 3187/3513/8286 +s 4 +f 3180/3505/8272 3181/3506/8271 3189/3515/8287 3188/3514/8288 +s 5 +f 3181/3506/8274 3182/3507/8273 3190/3516/8289 3189/3515/8290 +s 6 +f 3182/3507/8276 3183/3508/8275 3191/3517/8291 3190/3516/8292 +s 7 +f 3183/3508/8278 3184/3509/8277 3192/3518/8293 3191/3517/8294 +s 8 +f 3184/3509/8280 3177/3510/8279 3185/3519/8295 3192/3518/8296 +s 1 +f 3185/3511/8282 3186/3512/8281 3194/3521/8297 3193/3520/8298 +s 2 +f 3186/3512/8284 3187/3513/8283 3195/3522/8299 3194/3521/8300 +s 3 +f 3187/3513/8286 3188/3514/8285 3196/3523/8301 3195/3522/8302 +s 4 +f 3188/3514/8288 3189/3515/8287 3197/3524/8303 3196/3523/8304 +s 5 +f 3189/3515/8290 3190/3516/8289 3198/3525/8305 3197/3524/8306 +s 6 +f 3190/3516/8292 3191/3517/8291 3199/3526/8307 3198/3525/8308 +s 7 +f 3191/3517/8294 3192/3518/8293 3200/3527/8309 3199/3526/8310 +s 8 +f 3192/3518/8296 3185/3519/8295 3193/3528/8311 3200/3527/8312 +s 1 +f 3193/3520/8298 3194/3521/8297 3202/3530/8313 3201/3529/8314 +s 2 +f 3194/3521/8300 3195/3522/8299 3203/3531/8315 3202/3530/8316 +s 3 +f 3195/3522/8302 3196/3523/8301 3204/3532/8317 3203/3531/8318 +s 4 +f 3196/3523/8304 3197/3524/8303 3205/3533/8319 3204/3532/8320 +s 5 +f 3197/3524/8306 3198/3525/8305 3206/3534/8321 3205/3533/8322 +s 6 +f 3198/3525/8308 3199/3526/8307 3207/3535/8323 3206/3534/8324 +s 7 +f 3199/3526/8310 3200/3527/8309 3208/3536/8325 3207/3535/8326 +s 8 +f 3200/3527/8312 3193/3528/8311 3201/3537/8327 3208/3536/8328 +s 1 +f 3201/3529/8314 3202/3530/8313 3210/3539/8329 3209/3538/8330 +s 2 +f 3202/3530/8316 3203/3531/8315 3211/3540/8331 3210/3539/8332 +s 3 +f 3203/3531/8318 3204/3532/8317 3212/3541/8333 3211/3540/8334 +s 4 +f 3204/3532/8320 3205/3533/8319 3213/3542/8335 3212/3541/8336 +s 5 +f 3205/3533/8322 3206/3534/8321 3214/3543/8337 3213/3542/8338 +s 6 +f 3206/3534/8324 3207/3535/8323 3215/3544/8339 3214/3543/8340 +s 7 +f 3207/3535/8326 3208/3536/8325 3216/3545/8341 3215/3544/8342 +s 8 +f 3208/3536/8328 3201/3537/8327 3209/3546/8343 3216/3545/8344 +s 1 +f 3209/3538/8330 3210/3539/8329 3218/3548/8345 3217/3547/8346 +s 2 +f 3210/3539/8332 3211/3540/8331 3219/3549/8347 3218/3548/8348 +s 3 +f 3211/3540/8334 3212/3541/8333 3220/3550/8349 3219/3549/8350 +s 4 +f 3212/3541/8336 3213/3542/8335 3221/3551/8351 3220/3550/8352 +s 5 +f 3213/3542/8338 3214/3543/8337 3222/3552/8353 3221/3551/8354 +s 6 +f 3214/3543/8340 3215/3544/8339 3223/3553/8355 3222/3552/8356 +s 7 +f 3215/3544/8342 3216/3545/8341 3224/3554/8357 3223/3553/8358 +s 8 +f 3216/3545/8344 3209/3546/8343 3217/3555/8359 3224/3554/8360 +s 1 +f 3217/3547/8346 3218/3548/8345 3226/3557/8361 3225/3556/8362 +s 2 +f 3218/3548/8348 3219/3549/8347 3227/3558/8363 3226/3557/8364 +s 3 +f 3219/3549/8350 3220/3550/8349 3228/3559/8365 3227/3558/8366 +s 4 +f 3220/3550/8352 3221/3551/8351 3229/3560/8367 3228/3559/8368 +s 5 +f 3221/3551/8354 3222/3552/8353 3230/3561/8369 3229/3560/8370 +s 6 +f 3222/3552/8356 3223/3553/8355 3231/3562/8371 3230/3561/8372 +s 7 +f 3223/3553/8358 3224/3554/8357 3232/3563/8373 3231/3562/8374 +s 8 +f 3224/3554/8360 3217/3555/8359 3225/3564/8375 3232/3563/8376 +s 1 +f 3225/3556/8362 3226/3557/8361 3234/3566/8377 3233/3565/8378 +s 2 +f 3226/3557/8364 3227/3558/8363 3235/3567/8379 3234/3566/8380 +s 3 +f 3227/3558/8366 3228/3559/8365 3236/3568/8381 3235/3567/8382 +s 4 +f 3228/3559/8368 3229/3560/8367 3237/3569/8383 3236/3568/8384 +s 5 +f 3229/3560/8370 3230/3561/8369 3238/3570/8385 3237/3569/8386 +s 6 +f 3230/3561/8372 3231/3562/8371 3239/3571/8387 3238/3570/8388 +s 7 +f 3231/3562/8374 3232/3563/8373 3240/3572/8389 3239/3571/8390 +s 8 +f 3232/3563/8376 3225/3564/8375 3233/3573/8391 3240/3572/8392 +s 1 +f 3233/3565/8378 3234/3566/8377 3242/3575/8393 3241/3574/8394 +s 2 +f 3234/3566/8380 3235/3567/8379 3243/3576/8395 3242/3575/8396 +s 3 +f 3235/3567/8382 3236/3568/8381 3244/3577/8397 3243/3576/8398 +s 4 +f 3236/3568/8384 3237/3569/8383 3245/3578/8399 3244/3577/8400 +s 5 +f 3237/3569/8386 3238/3570/8385 3246/3579/8401 3245/3578/8402 +s 6 +f 3238/3570/8388 3239/3571/8387 3247/3580/8403 3246/3579/8404 +s 7 +f 3239/3571/8390 3240/3572/8389 3248/3581/8405 3247/3580/8406 +s 8 +f 3240/3572/8392 3233/3573/8391 3241/3582/8407 3248/3581/8408 +s 1 +f 3241/3574/8394 3242/3575/8393 3250/3584/8409 3249/3583/8410 +s 2 +f 3242/3575/8396 3243/3576/8395 3251/3585/8411 3250/3584/8412 +s 3 +f 3243/3576/8398 3244/3577/8397 3252/3586/8413 3251/3585/8414 +s 4 +f 3244/3577/8400 3245/3578/8399 3253/3587/8415 3252/3586/8416 +s 5 +f 3245/3578/8402 3246/3579/8401 3254/3588/8417 3253/3587/8418 +s 6 +f 3246/3579/8404 3247/3580/8403 3255/3589/8419 3254/3588/8420 +s 7 +f 3247/3580/8406 3248/3581/8405 3256/3590/8421 3255/3589/8422 +s 8 +f 3248/3581/8408 3241/3582/8407 3249/3591/8423 3256/3590/8424 +s 1 +f 3249/3583/8410 3250/3584/8409 3258/3593/8425 3257/3592/8426 +s 2 +f 3250/3584/8412 3251/3585/8411 3259/3594/8427 3258/3593/8428 +s 3 +f 3251/3585/8414 3252/3586/8413 3260/3595/8429 3259/3594/8430 +s 4 +f 3252/3586/8416 3253/3587/8415 3261/3596/8431 3260/3595/8432 +s 5 +f 3253/3587/8418 3254/3588/8417 3262/3597/8433 3261/3596/8434 +s 6 +f 3254/3588/8420 3255/3589/8419 3263/3598/8435 3262/3597/8436 +s 7 +f 3255/3589/8422 3256/3590/8421 3264/3599/8437 3263/3598/8438 +s 8 +f 3256/3590/8424 3249/3591/8423 3257/3600/8439 3264/3599/8440 +s 1 +f 3257/3592/8426 3258/3593/8425 3266/3602/8441 3265/3601/8442 +s 2 +f 3258/3593/8428 3259/3594/8427 3267/3603/8443 3266/3602/8444 +s 3 +f 3259/3594/8430 3260/3595/8429 3268/3604/8445 3267/3603/8446 +s 4 +f 3260/3595/8432 3261/3596/8431 3269/3605/8447 3268/3604/8448 +s 5 +f 3261/3596/8434 3262/3597/8433 3270/3606/8449 3269/3605/8450 +s 6 +f 3262/3597/8436 3263/3598/8435 3271/3607/8451 3270/3606/8452 +s 7 +f 3263/3598/8438 3264/3599/8437 3272/3608/8453 3271/3607/8454 +s 8 +f 3264/3599/8440 3257/3600/8439 3265/3609/8455 3272/3608/8456 +s 1 +f 3265/3601/8442 3266/3602/8441 3274/3611/8457 3273/3610/8458 +s 2 +f 3266/3602/8444 3267/3603/8443 3275/3612/8459 3274/3611/8460 +s 3 +f 3267/3603/8446 3268/3604/8445 3276/3613/8461 3275/3612/8462 +s 4 +f 3268/3604/8448 3269/3605/8447 3277/3614/8463 3276/3613/8464 +s 5 +f 3269/3605/8450 3270/3606/8449 3278/3615/8465 3277/3614/8466 +s 6 +f 3270/3606/8452 3271/3607/8451 3279/3616/8467 3278/3615/8468 +s 7 +f 3271/3607/8454 3272/3608/8453 3280/3617/8469 3279/3616/8470 +s 8 +f 3272/3608/8456 3265/3609/8455 3273/3618/8471 3280/3617/8472 +s 1 +f 3273/3610/8458 3274/3611/8457 3282/3620/8473 3281/3619/8474 +s 2 +f 3274/3611/8460 3275/3612/8459 3283/3621/8475 3282/3620/8476 +s 3 +f 3275/3612/8462 3276/3613/8461 3284/3622/8477 3283/3621/8478 +s 4 +f 3276/3613/8464 3277/3614/8463 3285/3623/8479 3284/3622/8480 +s 5 +f 3277/3614/8466 3278/3615/8465 3286/3624/8481 3285/3623/8482 +s 6 +f 3278/3615/8468 3279/3616/8467 3287/3625/8483 3286/3624/8484 +s 7 +f 3279/3616/8470 3280/3617/8469 3288/3626/8485 3287/3625/8486 +s 8 +f 3280/3617/8472 3273/3618/8471 3281/3627/8487 3288/3626/8488 +s 1 +f 3281/3619/8474 3282/3620/8473 3290/3629/8489 3289/3628/8490 +s 2 +f 3282/3620/8476 3283/3621/8475 3291/3630/8491 3290/3629/8492 +s 3 +f 3283/3621/8478 3284/3622/8477 3292/3631/8493 3291/3630/8494 +s 4 +f 3284/3622/8480 3285/3623/8479 3293/3632/8495 3292/3631/8496 +s 5 +f 3285/3623/8482 3286/3624/8481 3294/3633/8497 3293/3632/8498 +s 6 +f 3286/3624/8484 3287/3625/8483 3295/3634/8499 3294/3633/8500 +s 7 +f 3287/3625/8486 3288/3626/8485 3296/3635/8501 3295/3634/8502 +s 8 +f 3288/3626/8488 3281/3627/8487 3289/3636/8503 3296/3635/8504 +s 1 +f 3289/3628/8490 3290/3629/8489 3298/3638/8505 3297/3637/8506 +s 2 +f 3290/3629/8492 3291/3630/8491 3299/3639/8507 3298/3638/8508 +s 3 +f 3291/3630/8494 3292/3631/8493 3300/3640/8509 3299/3639/8510 +s 4 +f 3292/3631/8496 3293/3632/8495 3301/3641/8511 3300/3640/8512 +s 5 +f 3293/3632/8498 3294/3633/8497 3302/3642/8513 3301/3641/8514 +s 6 +f 3294/3633/8500 3295/3634/8499 3303/3643/8515 3302/3642/8516 +s 7 +f 3295/3634/8502 3296/3635/8501 3304/3644/8517 3303/3643/8518 +s 8 +f 3296/3635/8504 3289/3636/8503 3297/3645/8519 3304/3644/8520 +s 1 +f 3297/3637/8506 3298/3638/8505 3306/3647/8521 3305/3646/8522 +s 2 +f 3298/3638/8508 3299/3639/8507 3307/3648/8523 3306/3647/8524 +s 3 +f 3299/3639/8510 3300/3640/8509 3308/3649/8525 3307/3648/8526 +s 4 +f 3300/3640/8512 3301/3641/8511 3309/3650/8527 3308/3649/8528 +s 5 +f 3301/3641/8514 3302/3642/8513 3310/3651/8529 3309/3650/8530 +s 6 +f 3302/3642/8516 3303/3643/8515 3311/3652/8531 3310/3651/8532 +s 7 +f 3303/3643/8518 3304/3644/8517 3312/3653/8533 3311/3652/8534 +s 8 +f 3304/3644/8520 3297/3645/8519 3305/3654/8535 3312/3653/8536 +s 1 +f 3305/3646/8522 3306/3647/8521 3314/3656/8537 3313/3655/8538 +s 2 +f 3306/3647/8524 3307/3648/8523 3315/3657/8539 3314/3656/8540 +s 3 +f 3307/3648/8526 3308/3649/8525 3316/3658/8541 3315/3657/8542 +s 4 +f 3308/3649/8528 3309/3650/8527 3317/3659/8543 3316/3658/8544 +s 5 +f 3309/3650/8530 3310/3651/8529 3318/3660/8545 3317/3659/8546 +s 6 +f 3310/3651/8532 3311/3652/8531 3319/3661/8547 3318/3660/8548 +s 7 +f 3311/3652/8534 3312/3653/8533 3320/3662/8549 3319/3661/8550 +s 8 +f 3312/3653/8536 3305/3654/8535 3313/3663/8551 3320/3662/8552 +s 1 +f 3313/3655/8538 3314/3656/8537 3322/3665/8553 3321/3664/8554 +s 2 +f 3314/3656/8540 3315/3657/8539 3323/3666/8555 3322/3665/8556 +s 3 +f 3315/3657/8542 3316/3658/8541 3324/3667/8557 3323/3666/8558 +s 4 +f 3316/3658/8544 3317/3659/8543 3325/3668/8559 3324/3667/8560 +s 5 +f 3317/3659/8546 3318/3660/8545 3326/3669/8561 3325/3668/8562 +s 6 +f 3318/3660/8548 3319/3661/8547 3327/3670/8563 3326/3669/8564 +s 7 +f 3319/3661/8550 3320/3662/8549 3328/3671/8565 3327/3670/8566 +s 8 +f 3320/3662/8552 3313/3663/8551 3321/3672/8567 3328/3671/8568 +s 1 +f 3321/3664/8554 3322/3665/8553 3330/3674/8569 3329/3673/8570 +s 2 +f 3322/3665/8556 3323/3666/8555 3331/3675/8571 3330/3674/8572 +s 3 +f 3323/3666/8558 3324/3667/8557 3332/3676/8573 3331/3675/8574 +s 4 +f 3324/3667/8560 3325/3668/8559 3333/3677/8575 3332/3676/8576 +s 5 +f 3325/3668/8562 3326/3669/8561 3334/3678/8577 3333/3677/8578 +s 6 +f 3326/3669/8564 3327/3670/8563 3335/3679/8579 3334/3678/8580 +s 7 +f 3327/3670/8566 3328/3671/8565 3336/3680/8581 3335/3679/8582 +s 8 +f 3328/3671/8568 3321/3672/8567 3329/3681/8583 3336/3680/8584 +s 1 +f 3329/3673/8570 3330/3674/8569 3338/3683/8585 3337/3682/8586 +s 2 +f 3330/3674/8572 3331/3675/8571 3339/3684/8587 3338/3683/8588 +s 3 +f 3331/3675/8574 3332/3676/8573 3340/3685/8589 3339/3684/8590 +s 4 +f 3332/3676/8576 3333/3677/8575 3341/3686/8591 3340/3685/8592 +s 5 +f 3333/3677/8578 3334/3678/8577 3342/3687/8593 3341/3686/8594 +s 6 +f 3334/3678/8580 3335/3679/8579 3343/3688/8595 3342/3687/8596 +s 7 +f 3335/3679/8582 3336/3680/8581 3344/3689/8597 3343/3688/8598 +s 8 +f 3336/3680/8584 3329/3681/8583 3337/3690/8599 3344/3689/8600 +s 1 +f 3337/3682/8586 3338/3683/8585 3346/3692/8601 3345/3691/8602 +s 2 +f 3338/3683/8588 3339/3684/8587 3347/3693/8603 3346/3692/8604 +s 3 +f 3339/3684/8590 3340/3685/8589 3348/3694/8605 3347/3693/8606 +s 4 +f 3340/3685/8592 3341/3686/8591 3349/3695/8607 3348/3694/8608 +s 5 +f 3341/3686/8594 3342/3687/8593 3350/3696/8609 3349/3695/8610 +s 6 +f 3342/3687/8596 3343/3688/8595 3351/3697/8611 3350/3696/8612 +s 7 +f 3343/3688/8598 3344/3689/8597 3352/3698/8613 3351/3697/8614 +s 8 +f 3344/3689/8600 3337/3690/8599 3345/3699/8615 3352/3698/8616 +s 1 +f 3345/3691/8602 3346/3692/8601 3354/3701/8617 3353/3700/8618 +s 2 +f 3346/3692/8604 3347/3693/8603 3355/3702/8619 3354/3701/8620 +s 3 +f 3347/3693/8606 3348/3694/8605 3356/3703/8621 3355/3702/8622 +s 4 +f 3348/3694/8608 3349/3695/8607 3357/3704/8623 3356/3703/8624 +s 5 +f 3349/3695/8610 3350/3696/8609 3358/3705/8625 3357/3704/8626 +s 6 +f 3350/3696/8612 3351/3697/8611 3359/3706/8627 3358/3705/8628 +s 7 +f 3351/3697/8614 3352/3698/8613 3360/3707/8629 3359/3706/8630 +s 8 +f 3352/3698/8616 3345/3699/8615 3353/3708/8631 3360/3707/8632 +s 1 +f 3353/3700/8618 3354/3701/8617 3362/3710/8633 3361/3709/8634 +s 2 +f 3354/3701/8620 3355/3702/8619 3363/3711/8635 3362/3710/8636 +s 3 +f 3355/3702/8622 3356/3703/8621 3364/3712/8637 3363/3711/8638 +s 4 +f 3356/3703/8624 3357/3704/8623 3365/3713/8639 3364/3712/8640 +s 5 +f 3357/3704/8626 3358/3705/8625 3366/3714/8641 3365/3713/8642 +s 6 +f 3358/3705/8628 3359/3706/8627 3367/3715/8643 3366/3714/8644 +s 7 +f 3359/3706/8630 3360/3707/8629 3368/3716/8645 3367/3715/8646 +s 8 +f 3360/3707/8632 3353/3708/8631 3361/3717/8647 3368/3716/8648 +s 1 +f 3361/3709/8634 3362/3710/8633 3370/3719/8649 3369/3718/8650 +s 2 +f 3362/3710/8636 3363/3711/8635 3371/3720/8651 3370/3719/8652 +s 3 +f 3363/3711/8638 3364/3712/8637 3372/3721/8653 3371/3720/8654 +s 4 +f 3364/3712/8640 3365/3713/8639 3373/3722/8655 3372/3721/8656 +s 5 +f 3365/3713/8642 3366/3714/8641 3374/3723/8657 3373/3722/8658 +s 6 +f 3366/3714/8644 3367/3715/8643 3375/3724/8659 3374/3723/8660 +s 7 +f 3367/3715/8646 3368/3716/8645 3376/3725/8661 3375/3724/8662 +s 8 +f 3368/3716/8648 3361/3717/8647 3369/3726/8663 3376/3725/8664 +s 1 +f 3369/3718/8650 3370/3719/8649 3378/3728/8665 3377/3727/8666 +s 2 +f 3370/3719/8652 3371/3720/8651 3379/3729/8667 3378/3728/8668 +s 3 +f 3371/3720/8654 3372/3721/8653 3380/3730/8669 3379/3729/8670 +s 4 +f 3372/3721/8656 3373/3722/8655 3381/3731/8671 3380/3730/8672 +s 5 +f 3373/3722/8658 3374/3723/8657 3382/3732/8673 3381/3731/8674 +s 6 +f 3374/3723/8660 3375/3724/8659 3383/3733/8675 3382/3732/8676 +s 7 +f 3375/3724/8662 3376/3725/8661 3384/3734/8677 3383/3733/8678 +s 8 +f 3376/3725/8664 3369/3726/8663 3377/3735/8679 3384/3734/8680 +s 1 +f 3377/3727/8666 3378/3728/8665 3386/3737/8681 3385/3736/8682 +s 2 +f 3378/3728/8668 3379/3729/8667 3387/3738/8683 3386/3737/8684 +s 3 +f 3379/3729/8670 3380/3730/8669 3388/3739/8685 3387/3738/8686 +s 4 +f 3380/3730/8672 3381/3731/8671 3389/3740/8687 3388/3739/8688 +s 5 +f 3381/3731/8674 3382/3732/8673 3390/3741/8689 3389/3740/8690 +s 6 +f 3382/3732/8676 3383/3733/8675 3391/3742/8691 3390/3741/8692 +s 7 +f 3383/3733/8678 3384/3734/8677 3392/3743/8693 3391/3742/8694 +s 8 +f 3384/3734/8680 3377/3735/8679 3385/3744/8695 3392/3743/8696 +s 1 +f 3385/3736/8682 3386/3737/8681 3394/3746/8697 3393/3745/8698 +s 2 +f 3386/3737/8684 3387/3738/8683 3395/3747/8699 3394/3746/8700 +s 3 +f 3387/3738/8686 3388/3739/8685 3396/3748/8701 3395/3747/8702 +s 4 +f 3388/3739/8688 3389/3740/8687 3397/3749/8703 3396/3748/8704 +s 5 +f 3389/3740/8690 3390/3741/8689 3398/3750/8705 3397/3749/8706 +s 6 +f 3390/3741/8692 3391/3742/8691 3399/3751/8707 3398/3750/8708 +s 7 +f 3391/3742/8694 3392/3743/8693 3400/3752/8709 3399/3751/8710 +s 8 +f 3392/3743/8696 3385/3744/8695 3393/3753/8711 3400/3752/8712 +s 1 +f 3393/3745/8698 3394/3746/8697 3402/3755/8713 3401/3754/8714 +s 2 +f 3394/3746/8700 3395/3747/8699 3403/3756/8715 3402/3755/8716 +s 3 +f 3395/3747/8702 3396/3748/8701 3404/3757/8717 3403/3756/8718 +s 4 +f 3396/3748/8704 3397/3749/8703 3405/3758/8719 3404/3757/8720 +s 5 +f 3397/3749/8706 3398/3750/8705 3406/3759/8721 3405/3758/8722 +s 6 +f 3398/3750/8708 3399/3751/8707 3407/3760/8723 3406/3759/8724 +s 7 +f 3399/3751/8710 3400/3752/8709 3408/3761/8725 3407/3760/8726 +s 8 +f 3400/3752/8712 3393/3753/8711 3401/3762/8727 3408/3761/8728 +s 1 +f 3401/3754/8714 3402/3755/8713 3410/3764/8729 3409/3763/8730 +s 2 +f 3402/3755/8716 3403/3756/8715 3411/3765/8731 3410/3764/8732 +s 3 +f 3403/3756/8718 3404/3757/8717 3412/3766/8733 3411/3765/8734 +s 4 +f 3404/3757/8720 3405/3758/8719 3413/3767/8735 3412/3766/8736 +s 5 +f 3405/3758/8722 3406/3759/8721 3414/3768/8737 3413/3767/8738 +s 6 +f 3406/3759/8724 3407/3760/8723 3415/3769/8739 3414/3768/8740 +s 7 +f 3407/3760/8726 3408/3761/8725 3416/3770/8741 3415/3769/8742 +s 8 +f 3408/3761/8728 3401/3762/8727 3409/3771/8743 3416/3770/8744 +s 1 +f 3409/3763/8730 3410/3764/8729 3418/3773/8745 3417/3772/8746 +s 2 +f 3410/3764/8732 3411/3765/8731 3419/3774/8747 3418/3773/8748 +s 3 +f 3411/3765/8734 3412/3766/8733 3420/3775/8749 3419/3774/8750 +s 4 +f 3412/3766/8736 3413/3767/8735 3421/3776/8751 3420/3775/8752 +s 5 +f 3413/3767/8738 3414/3768/8737 3422/3777/8753 3421/3776/8754 +s 6 +f 3414/3768/8740 3415/3769/8739 3423/3778/8755 3422/3777/8756 +s 7 +f 3415/3769/8742 3416/3770/8741 3424/3779/8757 3423/3778/8758 +s 8 +f 3416/3770/8744 3409/3771/8743 3417/3780/8759 3424/3779/8760 +s 1 +f 3417/3772/8746 3418/3773/8745 3426/3782/8761 3425/3781/8762 +s 2 +f 3418/3773/8748 3419/3774/8747 3427/3783/8763 3426/3782/8764 +s 3 +f 3419/3774/8750 3420/3775/8749 3428/3784/8765 3427/3783/8766 +s 4 +f 3420/3775/8752 3421/3776/8751 3429/3785/8767 3428/3784/8768 +s 5 +f 3421/3776/8754 3422/3777/8753 3430/3786/8769 3429/3785/8770 +s 6 +f 3422/3777/8756 3423/3778/8755 3431/3787/8771 3430/3786/8772 +s 7 +f 3423/3778/8758 3424/3779/8757 3432/3788/8773 3431/3787/8774 +s 8 +f 3424/3779/8760 3417/3780/8759 3425/3789/8775 3432/3788/8776 +s 1 +f 3425/3781/8762 3426/3782/8761 3434/3791/8777 3433/3790/8778 +s 2 +f 3426/3782/8764 3427/3783/8763 3435/3792/8779 3434/3791/8780 +s 3 +f 3427/3783/8766 3428/3784/8765 3436/3793/8781 3435/3792/8782 +s 4 +f 3428/3784/8768 3429/3785/8767 3437/3794/8783 3436/3793/8784 +s 5 +f 3429/3785/8770 3430/3786/8769 3438/3795/8785 3437/3794/8786 +s 6 +f 3430/3786/8772 3431/3787/8771 3439/3796/8787 3438/3795/8788 +s 7 +f 3431/3787/8774 3432/3788/8773 3440/3797/8789 3439/3796/8790 +s 8 +f 3432/3788/8776 3425/3789/8775 3433/3798/8791 3440/3797/8792 +s 1 +f 3433/3790/8778 3434/3791/8777 3442/3800/8793 3441/3799/8794 +s 2 +f 3434/3791/8780 3435/3792/8779 3443/3801/8795 3442/3800/8796 +s 3 +f 3435/3792/8782 3436/3793/8781 3444/3802/8797 3443/3801/8798 +s 4 +f 3436/3793/8784 3437/3794/8783 3445/3803/8799 3444/3802/8800 +s 5 +f 3437/3794/8786 3438/3795/8785 3446/3804/8801 3445/3803/8802 +s 6 +f 3438/3795/8788 3439/3796/8787 3447/3805/8803 3446/3804/8804 +s 7 +f 3439/3796/8790 3440/3797/8789 3448/3806/8805 3447/3805/8806 +s 8 +f 3440/3797/8792 3433/3798/8791 3441/3807/8807 3448/3806/8808 +s 1 +f 3441/3799/8794 3442/3800/8793 3450/3809/8809 3449/3808/8810 +s 2 +f 3442/3800/8796 3443/3801/8795 3451/3810/8811 3450/3809/8812 +s 3 +f 3443/3801/8798 3444/3802/8797 3452/3811/8813 3451/3810/8814 +s 4 +f 3444/3802/8800 3445/3803/8799 3453/3812/8815 3452/3811/8816 +s 5 +f 3445/3803/8802 3446/3804/8801 3454/3813/8817 3453/3812/8818 +s 6 +f 3446/3804/8804 3447/3805/8803 3455/3814/8819 3454/3813/8820 +s 7 +f 3447/3805/8806 3448/3806/8805 3456/3815/8821 3455/3814/8822 +s 8 +f 3448/3806/8808 3441/3807/8807 3449/3816/8823 3456/3815/8824 +s 1 +f 3449/3808/8810 3450/3809/8809 3458/3818/8825 3457/3817/8826 +s 2 +f 3450/3809/8812 3451/3810/8811 3459/3819/8827 3458/3818/8828 +s 3 +f 3451/3810/8814 3452/3811/8813 3460/3820/8829 3459/3819/8830 +s 4 +f 3452/3811/8816 3453/3812/8815 3461/3821/8831 3460/3820/8832 +s 5 +f 3453/3812/8818 3454/3813/8817 3462/3822/8833 3461/3821/8834 +s 6 +f 3454/3813/8820 3455/3814/8819 3463/3823/8835 3462/3822/8836 +s 7 +f 3455/3814/8822 3456/3815/8821 3464/3824/8837 3463/3823/8838 +s 8 +f 3456/3815/8824 3449/3816/8823 3457/3825/8839 3464/3824/8840 +s 1 +f 3457/3817/8826 3458/3818/8825 3466/3827/8841 3465/3826/8842 +s 2 +f 3458/3818/8828 3459/3819/8827 3467/3828/8843 3466/3827/8844 +s 3 +f 3459/3819/8830 3460/3820/8829 3468/3829/8845 3467/3828/8846 +s 4 +f 3460/3820/8832 3461/3821/8831 3469/3830/8847 3468/3829/8848 +s 5 +f 3461/3821/8834 3462/3822/8833 3470/3831/8849 3469/3830/8850 +s 6 +f 3462/3822/8836 3463/3823/8835 3471/3832/8851 3470/3831/8852 +s 7 +f 3463/3823/8838 3464/3824/8837 3472/3833/8853 3471/3832/8854 +s 8 +f 3464/3824/8840 3457/3825/8839 3465/3834/8855 3472/3833/8856 +s 1 +f 3465/3826/8842 3466/3827/8841 3474/3836/8857 3473/3835/8858 +s 2 +f 3466/3827/8844 3467/3828/8843 3475/3837/8859 3474/3836/8860 +s 3 +f 3467/3828/8846 3468/3829/8845 3476/3838/8861 3475/3837/8862 +s 4 +f 3468/3829/8848 3469/3830/8847 3477/3839/8863 3476/3838/8864 +s 5 +f 3469/3830/8850 3470/3831/8849 3478/3840/8865 3477/3839/8866 +s 6 +f 3470/3831/8852 3471/3832/8851 3479/3841/8867 3478/3840/8868 +s 7 +f 3471/3832/8854 3472/3833/8853 3480/3842/8869 3479/3841/8870 +s 8 +f 3472/3833/8856 3465/3834/8855 3473/3843/8871 3480/3842/8872 +s 1 +f 3473/3835/8858 3474/3836/8857 3482/3845/8873 3481/3844/8874 +s 2 +f 3474/3836/8860 3475/3837/8859 3483/3846/8875 3482/3845/8876 +s 3 +f 3475/3837/8862 3476/3838/8861 3484/3847/8877 3483/3846/8878 +s 4 +f 3476/3838/8864 3477/3839/8863 3485/3848/8879 3484/3847/8880 +s 5 +f 3477/3839/8866 3478/3840/8865 3486/3849/8881 3485/3848/8882 +s 6 +f 3478/3840/8868 3479/3841/8867 3487/3850/8883 3486/3849/8884 +s 7 +f 3479/3841/8870 3480/3842/8869 3488/3851/8885 3487/3850/8886 +s 8 +f 3480/3842/8872 3473/3843/8871 3481/3852/8887 3488/3851/8888 +s 1 +f 3481/3844/8874 3482/3845/8873 3490/3854/8889 3489/3853/8890 +s 2 +f 3482/3845/8876 3483/3846/8875 3491/3855/8891 3490/3854/8892 +s 3 +f 3483/3846/8878 3484/3847/8877 3492/3856/8893 3491/3855/8894 +s 4 +f 3484/3847/8880 3485/3848/8879 3493/3857/8895 3492/3856/8896 +s 5 +f 3485/3848/8882 3486/3849/8881 3494/3858/8897 3493/3857/8898 +s 6 +f 3486/3849/8884 3487/3850/8883 3495/3859/8899 3494/3858/8900 +s 7 +f 3487/3850/8886 3488/3851/8885 3496/3860/8901 3495/3859/8902 +s 8 +f 3488/3851/8888 3481/3852/8887 3489/3861/8903 3496/3860/8904 +s 1 +f 3489/3853/8890 3490/3854/8889 3498/3863/8905 3497/3862/8906 +s 2 +f 3490/3854/8892 3491/3855/8891 3499/3864/8907 3498/3863/8908 +s 3 +f 3491/3855/8894 3492/3856/8893 3500/3865/8909 3499/3864/8910 +s 4 +f 3492/3856/8896 3493/3857/8895 3501/3866/8911 3500/3865/8912 +s 5 +f 3493/3857/8898 3494/3858/8897 3502/3867/8913 3501/3866/8914 +s 6 +f 3494/3858/8900 3495/3859/8899 3503/3868/8915 3502/3867/8916 +s 7 +f 3495/3859/8902 3496/3860/8901 3504/3869/8917 3503/3868/8918 +s 8 +f 3496/3860/8904 3489/3861/8903 3497/3870/8919 3504/3869/8920 +s 1 +f 3497/3862/8906 3498/3863/8905 3506/3872/8921 3505/3871/8922 +s 2 +f 3498/3863/8908 3499/3864/8907 3507/3873/8923 3506/3872/8924 +s 3 +f 3499/3864/8910 3500/3865/8909 3508/3874/8925 3507/3873/8926 +s 4 +f 3500/3865/8912 3501/3866/8911 3509/3875/8927 3508/3874/8928 +s 5 +f 3501/3866/8914 3502/3867/8913 3510/3876/8929 3509/3875/8930 +s 6 +f 3502/3867/8916 3503/3868/8915 3511/3877/8931 3510/3876/8932 +s 7 +f 3503/3868/8918 3504/3869/8917 3512/3878/8933 3511/3877/8934 +s 8 +f 3504/3869/8920 3497/3870/8919 3505/3879/8935 3512/3878/8936 +s 1 +f 3505/3871/8922 3506/3872/8921 3514/3881/8937 3513/3880/8938 +s 2 +f 3506/3872/8924 3507/3873/8923 3515/3882/8939 3514/3881/8940 +s 3 +f 3507/3873/8926 3508/3874/8925 3516/3883/8941 3515/3882/8942 +s 4 +f 3508/3874/8928 3509/3875/8927 3517/3884/8943 3516/3883/8944 +s 5 +f 3509/3875/8930 3510/3876/8929 3518/3885/8945 3517/3884/8946 +s 6 +f 3510/3876/8932 3511/3877/8931 3519/3886/8947 3518/3885/8948 +s 7 +f 3511/3877/8934 3512/3878/8933 3520/3887/8949 3519/3886/8950 +s 8 +f 3512/3878/8936 3505/3879/8935 3513/3888/8951 3520/3887/8952 +s 1 +f 3513/3880/8938 3514/3881/8937 3522/3890/8953 3521/3889/8954 +s 2 +f 3514/3881/8940 3515/3882/8939 3523/3891/8955 3522/3890/8956 +s 3 +f 3515/3882/8942 3516/3883/8941 3524/3892/8957 3523/3891/8958 +s 4 +f 3516/3883/8944 3517/3884/8943 3525/3893/8959 3524/3892/8960 +s 5 +f 3517/3884/8946 3518/3885/8945 3526/3894/8961 3525/3893/8962 +s 6 +f 3518/3885/8948 3519/3886/8947 3527/3895/8963 3526/3894/8964 +s 7 +f 3519/3886/8950 3520/3887/8949 3528/3896/8965 3527/3895/8966 +s 8 +f 3520/3887/8952 3513/3888/8951 3521/3897/8967 3528/3896/8968 +s 1 +f 3521/3889/8954 3522/3890/8953 3530/3899/8969 3529/3898/8970 +s 2 +f 3522/3890/8956 3523/3891/8955 3531/3900/8971 3530/3899/8972 +s 3 +f 3523/3891/8958 3524/3892/8957 3532/3901/8973 3531/3900/8974 +s 4 +f 3524/3892/8960 3525/3893/8959 3533/3902/8975 3532/3901/8976 +s 5 +f 3525/3893/8962 3526/3894/8961 3534/3903/8977 3533/3902/8978 +s 6 +f 3526/3894/8964 3527/3895/8963 3535/3904/8979 3534/3903/8980 +s 7 +f 3527/3895/8966 3528/3896/8965 3536/3905/8981 3535/3904/8982 +s 8 +f 3528/3896/8968 3521/3897/8967 3529/3906/8983 3536/3905/8984 +s 1 +f 3529/3898/8970 3530/3899/8969 3538/3908/8985 3537/3907/8986 +s 2 +f 3530/3899/8972 3531/3900/8971 3539/3909/8987 3538/3908/8988 +s 3 +f 3531/3900/8974 3532/3901/8973 3540/3910/8989 3539/3909/8990 +s 4 +f 3532/3901/8976 3533/3902/8975 3541/3911/8991 3540/3910/8992 +s 5 +f 3533/3902/8978 3534/3903/8977 3542/3912/8993 3541/3911/8994 +s 6 +f 3534/3903/8980 3535/3904/8979 3543/3913/8995 3542/3912/8996 +s 7 +f 3535/3904/8982 3536/3905/8981 3544/3914/8997 3543/3913/8998 +s 8 +f 3536/3905/8984 3529/3906/8983 3537/3915/8999 3544/3914/9000 +s 1 +f 3537/3907/8986 3538/3908/8985 3546/3917/9001 3545/3916/9002 +s 2 +f 3538/3908/8988 3539/3909/8987 3547/3918/9003 3546/3917/9004 +s 3 +f 3539/3909/8990 3540/3910/8989 3548/3919/9005 3547/3918/9006 +s 4 +f 3540/3910/8992 3541/3911/8991 3549/3920/9007 3548/3919/9008 +s 5 +f 3541/3911/8994 3542/3912/8993 3550/3921/9009 3549/3920/9010 +s 6 +f 3542/3912/8996 3543/3913/8995 3551/3922/9011 3550/3921/9012 +s 7 +f 3543/3913/8998 3544/3914/8997 3552/3923/9013 3551/3922/9014 +s 8 +f 3544/3914/9000 3537/3915/8999 3545/3924/9015 3552/3923/9016 +s 1 +f 3545/3916/9002 3546/3917/9001 3554/3926/9017 3553/3925/9018 +s 2 +f 3546/3917/9004 3547/3918/9003 3555/3927/9019 3554/3926/9020 +s 3 +f 3547/3918/9006 3548/3919/9005 3556/3928/9021 3555/3927/9022 +s 4 +f 3548/3919/9008 3549/3920/9007 3557/3929/9023 3556/3928/9024 +s 5 +f 3549/3920/9010 3550/3921/9009 3558/3930/9025 3557/3929/9026 +s 6 +f 3550/3921/9012 3551/3922/9011 3559/3931/9027 3558/3930/9028 +s 7 +f 3551/3922/9014 3552/3923/9013 3560/3932/9029 3559/3931/9030 +s 8 +f 3552/3923/9016 3545/3924/9015 3553/3933/9031 3560/3932/9032 +s 1 +f 3553/3925/9018 3554/3926/9017 3562/3935/9033 3561/3934/9034 +s 2 +f 3554/3926/9020 3555/3927/9019 3563/3936/9035 3562/3935/9036 +s 3 +f 3555/3927/9022 3556/3928/9021 3564/3937/9037 3563/3936/9038 +s 4 +f 3556/3928/9024 3557/3929/9023 3565/3938/9039 3564/3937/9040 +s 5 +f 3557/3929/9026 3558/3930/9025 3566/3939/9041 3565/3938/9042 +s 6 +f 3558/3930/9028 3559/3931/9027 3567/3940/9043 3566/3939/9044 +s 7 +f 3559/3931/9030 3560/3932/9029 3568/3941/9045 3567/3940/9046 +s 8 +f 3560/3932/9032 3553/3933/9031 3561/3942/9047 3568/3941/9048 +s 1 +f 3561/3934/9034 3562/3935/9033 3570/3944/9049 3569/3943/9050 +s 2 +f 3562/3935/9036 3563/3936/9035 3571/3945/9051 3570/3944/9052 +s 3 +f 3563/3936/9038 3564/3937/9037 3572/3946/9053 3571/3945/9054 +s 4 +f 3564/3937/9040 3565/3938/9039 3573/3947/9055 3572/3946/9056 +s 5 +f 3565/3938/9042 3566/3939/9041 3574/3948/9057 3573/3947/9058 +s 6 +f 3566/3939/9044 3567/3940/9043 3575/3949/9059 3574/3948/9060 +s 7 +f 3567/3940/9046 3568/3941/9045 3576/3950/9061 3575/3949/9062 +s 8 +f 3568/3941/9048 3561/3942/9047 3569/3951/9063 3576/3950/9064 +s 1 +f 3569/3943/9050 3570/3944/9049 3578/3953/9065 3577/3952/9066 +s 2 +f 3570/3944/9052 3571/3945/9051 3579/3954/9067 3578/3953/9068 +s 3 +f 3571/3945/9054 3572/3946/9053 3580/3955/9069 3579/3954/9070 +s 4 +f 3572/3946/9056 3573/3947/9055 3581/3956/9071 3580/3955/9072 +s 5 +f 3573/3947/9058 3574/3948/9057 3582/3957/9073 3581/3956/9074 +s 6 +f 3574/3948/9060 3575/3949/9059 3583/3958/9075 3582/3957/9076 +s 7 +f 3575/3949/9062 3576/3950/9061 3584/3959/9077 3583/3958/9078 +s 8 +f 3576/3950/9064 3569/3951/9063 3577/3960/9079 3584/3959/9080 +s 1 +f 3577/3952/9066 3578/3953/9065 3586/3962/9081 3585/3961/9082 +s 2 +f 3578/3953/9068 3579/3954/9067 3587/3963/9083 3586/3962/9084 +s 3 +f 3579/3954/9070 3580/3955/9069 3588/3964/9085 3587/3963/9086 +s 4 +f 3580/3955/9072 3581/3956/9071 3589/3965/9087 3588/3964/9088 +s 5 +f 3581/3956/9074 3582/3957/9073 3590/3966/9089 3589/3965/9090 +s 6 +f 3582/3957/9076 3583/3958/9075 3591/3967/9091 3590/3966/9092 +s 7 +f 3583/3958/9078 3584/3959/9077 3592/3968/9093 3591/3967/9094 +s 8 +f 3584/3959/9080 3577/3960/9079 3585/3969/9095 3592/3968/9096 +s 1 +f 3585/3961/9082 3586/3962/9081 3594/3971/9097 3593/3970/9098 +s 2 +f 3586/3962/9084 3587/3963/9083 3595/3972/9099 3594/3971/9100 +s 3 +f 3587/3963/9086 3588/3964/9085 3596/3973/9101 3595/3972/9102 +s 4 +f 3588/3964/9088 3589/3965/9087 3597/3974/9103 3596/3973/9104 +s 5 +f 3589/3965/9090 3590/3966/9089 3598/3975/9105 3597/3974/9106 +s 6 +f 3590/3966/9092 3591/3967/9091 3599/3976/9107 3598/3975/9108 +s 7 +f 3591/3967/9094 3592/3968/9093 3600/3977/9109 3599/3976/9110 +s 8 +f 3592/3968/9096 3585/3969/9095 3593/3978/9111 3600/3977/9112 +s 1 +f 3593/3970/9098 3594/3971/9097 3602/3980/9113 3601/3979/9114 +s 2 +f 3594/3971/9100 3595/3972/9099 3603/3981/9115 3602/3980/9116 +s 3 +f 3595/3972/9102 3596/3973/9101 3604/3982/9117 3603/3981/9118 +s 4 +f 3596/3973/9104 3597/3974/9103 3605/3983/9119 3604/3982/9120 +s 5 +f 3597/3974/9106 3598/3975/9105 3606/3984/9121 3605/3983/9122 +s 6 +f 3598/3975/9108 3599/3976/9107 3607/3985/9123 3606/3984/9124 +s 7 +f 3599/3976/9110 3600/3977/9109 3608/3986/9125 3607/3985/9126 +s 8 +f 3600/3977/9112 3593/3978/9111 3601/3987/9127 3608/3986/9128 +s 1 +f 3601/3979/9114 3602/3980/9113 3610/3989/9129 3609/3988/9130 +s 2 +f 3602/3980/9116 3603/3981/9115 3611/3990/9131 3610/3989/9132 +s 3 +f 3603/3981/9118 3604/3982/9117 3612/3991/9133 3611/3990/9134 +s 4 +f 3604/3982/9120 3605/3983/9119 3613/3992/9135 3612/3991/9136 +s 5 +f 3605/3983/9122 3606/3984/9121 3614/3993/9137 3613/3992/9138 +s 6 +f 3606/3984/9124 3607/3985/9123 3615/3994/9139 3614/3993/9140 +s 7 +f 3607/3985/9126 3608/3986/9125 3616/3995/9141 3615/3994/9142 +s 8 +f 3608/3986/9128 3601/3987/9127 3609/3996/9143 3616/3995/9144 +s 1 +f 3609/3988/9130 3610/3989/9129 3618/3998/9145 3617/3997/9146 +s 2 +f 3610/3989/9132 3611/3990/9131 3619/3999/9147 3618/3998/9148 +s 3 +f 3611/3990/9134 3612/3991/9133 3620/4000/9149 3619/3999/9150 +s 4 +f 3612/3991/9136 3613/3992/9135 3621/4001/9151 3620/4000/9152 +s 5 +f 3613/3992/9138 3614/3993/9137 3622/4002/9153 3621/4001/9154 +s 6 +f 3614/3993/9140 3615/3994/9139 3623/4003/9155 3622/4002/9156 +s 7 +f 3615/3994/9142 3616/3995/9141 3624/4004/9157 3623/4003/9158 +s 8 +f 3616/3995/9144 3609/3996/9143 3617/4005/9159 3624/4004/9160 +s 1 +f 3617/3997/9146 3618/3998/9145 3626/4007/9161 3625/4006/9162 +s 2 +f 3618/3998/9148 3619/3999/9147 3627/4008/9163 3626/4007/9164 +s 3 +f 3619/3999/9150 3620/4000/9149 3628/4009/9165 3627/4008/9166 +s 4 +f 3620/4000/9152 3621/4001/9151 3629/4010/9167 3628/4009/9168 +s 5 +f 3621/4001/9154 3622/4002/9153 3630/4011/9169 3629/4010/9170 +s 6 +f 3622/4002/9156 3623/4003/9155 3631/4012/9171 3630/4011/9172 +s 7 +f 3623/4003/9158 3624/4004/9157 3632/4013/9173 3631/4012/9174 +s 8 +f 3624/4004/9160 3617/4005/9159 3625/4014/9175 3632/4013/9176 +s 1 +f 3625/4006/9162 3626/4007/9161 3634/4016/9177 3633/4015/9178 +s 2 +f 3626/4007/9164 3627/4008/9163 3635/4017/9179 3634/4016/9180 +s 3 +f 3627/4008/9166 3628/4009/9165 3636/4018/9181 3635/4017/9182 +s 4 +f 3628/4009/9168 3629/4010/9167 3637/4019/9183 3636/4018/9184 +s 5 +f 3629/4010/9170 3630/4011/9169 3638/4020/9185 3637/4019/9186 +s 6 +f 3630/4011/9172 3631/4012/9171 3639/4021/9187 3638/4020/9188 +s 7 +f 3631/4012/9174 3632/4013/9173 3640/4022/9189 3639/4021/9190 +s 8 +f 3632/4013/9176 3625/4014/9175 3633/4023/9191 3640/4022/9192 +s 1 +f 3633/4015/9178 3634/4016/9177 3642/4025/9193 3641/4024/9194 +s 2 +f 3634/4016/9180 3635/4017/9179 3643/4026/9195 3642/4025/9196 +s 3 +f 3635/4017/9182 3636/4018/9181 3644/4027/9197 3643/4026/9198 +s 4 +f 3636/4018/9184 3637/4019/9183 3645/4028/9199 3644/4027/9200 +s 5 +f 3637/4019/9186 3638/4020/9185 3646/4029/9201 3645/4028/9202 +s 6 +f 3638/4020/9188 3639/4021/9187 3647/4030/9203 3646/4029/9204 +s 7 +f 3639/4021/9190 3640/4022/9189 3648/4031/9205 3647/4030/9206 +s 8 +f 3640/4022/9192 3633/4023/9191 3641/4032/9207 3648/4031/9208 +s 1 +f 3641/4024/9194 3642/4025/9193 3650/4034/9209 3649/4033/9210 +s 2 +f 3642/4025/9196 3643/4026/9195 3651/4035/9211 3650/4034/9212 +s 3 +f 3643/4026/9198 3644/4027/9197 3652/4036/9213 3651/4035/9214 +s 4 +f 3644/4027/9200 3645/4028/9199 3653/4037/9215 3652/4036/9216 +s 5 +f 3645/4028/9202 3646/4029/9201 3654/4038/9217 3653/4037/9218 +s 6 +f 3646/4029/9204 3647/4030/9203 3655/4039/9219 3654/4038/9220 +s 7 +f 3647/4030/9206 3648/4031/9205 3656/4040/9221 3655/4039/9222 +s 8 +f 3648/4031/9208 3641/4032/9207 3649/4041/9223 3656/4040/9224 +s 1 +f 3649/4033/9210 3650/4034/9209 3658/4043/9225 3657/4042/9226 +s 2 +f 3650/4034/9212 3651/4035/9211 3659/4044/9227 3658/4043/9228 +s 3 +f 3651/4035/9214 3652/4036/9213 3660/4045/9229 3659/4044/9230 +s 4 +f 3652/4036/9216 3653/4037/9215 3661/4046/9231 3660/4045/9232 +s 5 +f 3653/4037/9218 3654/4038/9217 3662/4047/9233 3661/4046/9234 +s 6 +f 3654/4038/9220 3655/4039/9219 3663/4048/9235 3662/4047/9236 +s 7 +f 3655/4039/9222 3656/4040/9221 3664/4049/9237 3663/4048/9238 +s 8 +f 3656/4040/9224 3649/4041/9223 3657/4050/9239 3664/4049/9240 +s 1 +f 3657/4042/9226 3658/4043/9225 3666/4052/9241 3665/4051/9242 +s 2 +f 3658/4043/9228 3659/4044/9227 3667/4053/9243 3666/4052/9244 +s 3 +f 3659/4044/9230 3660/4045/9229 3668/4054/9245 3667/4053/9246 +s 4 +f 3660/4045/9232 3661/4046/9231 3669/4055/9247 3668/4054/9248 +s 5 +f 3661/4046/9234 3662/4047/9233 3670/4056/9249 3669/4055/9250 +s 6 +f 3662/4047/9236 3663/4048/9235 3671/4057/9251 3670/4056/9252 +s 7 +f 3663/4048/9238 3664/4049/9237 3672/4058/9253 3671/4057/9254 +s 8 +f 3664/4049/9240 3657/4050/9239 3665/4059/9255 3672/4058/9256 +s 1 +f 3665/4051/9242 3666/4052/9241 3674/4061/9257 3673/4060/9258 +s 2 +f 3666/4052/9244 3667/4053/9243 3675/4062/9259 3674/4061/9260 +s 3 +f 3667/4053/9246 3668/4054/9245 3676/4063/9261 3675/4062/9262 +s 4 +f 3668/4054/9248 3669/4055/9247 3677/4064/9263 3676/4063/9264 +s 5 +f 3669/4055/9250 3670/4056/9249 3678/4065/9265 3677/4064/9266 +s 6 +f 3670/4056/9252 3671/4057/9251 3679/4066/9267 3678/4065/9268 +s 7 +f 3671/4057/9254 3672/4058/9253 3680/4067/9269 3679/4066/9270 +s 8 +f 3672/4058/9256 3665/4059/9255 3673/4068/9271 3680/4067/9272 +s 1 +f 3673/4060/9258 3674/4061/9257 3682/4070/9273 3681/4069/9274 +s 2 +f 3674/4061/9260 3675/4062/9259 3683/4071/9275 3682/4070/9276 +s 3 +f 3675/4062/9262 3676/4063/9261 3684/4072/9277 3683/4071/9278 +s 4 +f 3676/4063/9264 3677/4064/9263 3685/4073/9279 3684/4072/9280 +s 5 +f 3677/4064/9266 3678/4065/9265 3686/4074/9281 3685/4073/9282 +s 6 +f 3678/4065/9268 3679/4066/9267 3687/4075/9283 3686/4074/9284 +s 7 +f 3679/4066/9270 3680/4067/9269 3688/4076/9285 3687/4075/9286 +s 8 +f 3680/4067/9272 3673/4068/9271 3681/4077/9287 3688/4076/9288 +s 1 +f 3681/4069/9274 3682/4070/9273 3690/4079/9289 3689/4078/9290 +s 2 +f 3682/4070/9276 3683/4071/9275 3691/4080/9291 3690/4079/9292 +s 3 +f 3683/4071/9278 3684/4072/9277 3692/4081/9293 3691/4080/9294 +s 4 +f 3684/4072/9280 3685/4073/9279 3693/4082/9295 3692/4081/9296 +s 5 +f 3685/4073/9282 3686/4074/9281 3694/4083/9297 3693/4082/9298 +s 6 +f 3686/4074/9284 3687/4075/9283 3695/4084/9299 3694/4083/9300 +s 7 +f 3687/4075/9286 3688/4076/9285 3696/4085/9301 3695/4084/9302 +s 8 +f 3688/4076/9288 3681/4077/9287 3689/4086/9303 3696/4085/9304 +s 1 +f 3689/4078/9290 3690/4079/9289 3698/4088/9305 3697/4087/9306 +s 2 +f 3690/4079/9292 3691/4080/9291 3699/4089/9307 3698/4088/9308 +s 3 +f 3691/4080/9294 3692/4081/9293 3700/4090/9309 3699/4089/9310 +s 4 +f 3692/4081/9296 3693/4082/9295 3701/4091/9311 3700/4090/9312 +s 5 +f 3693/4082/9298 3694/4083/9297 3702/4092/9313 3701/4091/9314 +s 6 +f 3694/4083/9300 3695/4084/9299 3703/4093/9315 3702/4092/9316 +s 7 +f 3695/4084/9302 3696/4085/9301 3704/4094/9317 3703/4093/9318 +s 8 +f 3696/4085/9304 3689/4086/9303 3697/4095/9319 3704/4094/9320 +s 1 +f 3697/4087/9306 3698/4088/9305 3706/4097/9321 3705/4096/9322 +s 2 +f 3698/4088/9308 3699/4089/9307 3707/4098/9323 3706/4097/9324 +s 3 +f 3699/4089/9310 3700/4090/9309 3708/4099/9325 3707/4098/9326 +s 4 +f 3700/4090/9312 3701/4091/9311 3709/4100/9327 3708/4099/9328 +s 5 +f 3701/4091/9314 3702/4092/9313 3710/4101/9329 3709/4100/9330 +s 6 +f 3702/4092/9316 3703/4093/9315 3711/4102/9331 3710/4101/9332 +s 7 +f 3703/4093/9318 3704/4094/9317 3712/4103/9333 3711/4102/9334 +s 8 +f 3704/4094/9320 3697/4095/9319 3705/4104/9335 3712/4103/9336 +s 1 +f 3705/4096/9322 3706/4097/9321 3714/4106/9337 3713/4105/9338 +s 2 +f 3706/4097/9324 3707/4098/9323 3715/4107/9339 3714/4106/9340 +s 3 +f 3707/4098/9326 3708/4099/9325 3716/4108/9341 3715/4107/9342 +s 4 +f 3708/4099/9328 3709/4100/9327 3717/4109/9343 3716/4108/9344 +s 5 +f 3709/4100/9330 3710/4101/9329 3718/4110/9345 3717/4109/9346 +s 6 +f 3710/4101/9332 3711/4102/9331 3719/4111/9347 3718/4110/9348 +s 7 +f 3711/4102/9334 3712/4103/9333 3720/4112/9349 3719/4111/9350 +s 8 +f 3712/4103/9336 3705/4104/9335 3713/4113/9351 3720/4112/9352 +s 1 +f 3713/4105/9338 3714/4106/9337 3722/4115/9353 3721/4114/9354 +s 2 +f 3714/4106/9340 3715/4107/9339 3723/4116/9355 3722/4115/9356 +s 3 +f 3715/4107/9342 3716/4108/9341 3724/4117/9357 3723/4116/9358 +s 4 +f 3716/4108/9344 3717/4109/9343 3725/4118/9359 3724/4117/9360 +s 5 +f 3717/4109/9346 3718/4110/9345 3726/4119/9361 3725/4118/9362 +s 6 +f 3718/4110/9348 3719/4111/9347 3727/4120/9363 3726/4119/9364 +s 7 +f 3719/4111/9350 3720/4112/9349 3728/4121/9365 3727/4120/9366 +s 8 +f 3720/4112/9352 3713/4113/9351 3721/4122/9367 3728/4121/9368 +s 1 +f 3721/4114/9354 3722/4115/9353 3730/4124/9369 3729/4123/9370 +s 2 +f 3722/4115/9356 3723/4116/9355 3731/4125/9371 3730/4124/9372 +s 3 +f 3723/4116/9358 3724/4117/9357 3732/4126/9373 3731/4125/9374 +s 4 +f 3724/4117/9360 3725/4118/9359 3733/4127/9375 3732/4126/9376 +s 5 +f 3725/4118/9362 3726/4119/9361 3734/4128/9377 3733/4127/9378 +s 6 +f 3726/4119/9364 3727/4120/9363 3735/4129/9379 3734/4128/9380 +s 7 +f 3727/4120/9366 3728/4121/9365 3736/4130/9381 3735/4129/9382 +s 8 +f 3728/4121/9368 3721/4122/9367 3729/4131/9383 3736/4130/9384 +s 1 +f 3729/4123/9370 3730/4124/9369 3738/4133/9385 3737/4132/9386 +s 2 +f 3730/4124/9372 3731/4125/9371 3739/4134/9387 3738/4133/9388 +s 3 +f 3731/4125/9374 3732/4126/9373 3740/4135/9389 3739/4134/9390 +s 4 +f 3732/4126/9376 3733/4127/9375 3741/4136/9391 3740/4135/9392 +s 5 +f 3733/4127/9378 3734/4128/9377 3742/4137/9393 3741/4136/9394 +s 6 +f 3734/4128/9380 3735/4129/9379 3743/4138/9395 3742/4137/9396 +s 7 +f 3735/4129/9382 3736/4130/9381 3744/4139/9397 3743/4138/9398 +s 8 +f 3736/4130/9384 3729/4131/9383 3737/4140/9399 3744/4139/9400 +s 1 +f 3737/4132/9386 3738/4133/9385 3746/4142/9401 3745/4141/9402 +s 2 +f 3738/4133/9388 3739/4134/9387 3747/4143/9403 3746/4142/9404 +s 3 +f 3739/4134/9390 3740/4135/9389 3748/4144/9405 3747/4143/9406 +s 4 +f 3740/4135/9392 3741/4136/9391 3749/4145/9407 3748/4144/9408 +s 5 +f 3741/4136/9394 3742/4137/9393 3750/4146/9409 3749/4145/9410 +s 6 +f 3742/4137/9396 3743/4138/9395 3751/4147/9411 3750/4146/9412 +s 7 +f 3743/4138/9398 3744/4139/9397 3752/4148/9413 3751/4147/9414 +s 8 +f 3744/4139/9400 3737/4140/9399 3745/4149/9415 3752/4148/9416 +s 1 +f 3745/4141/9402 3746/4142/9401 3754/4151/9417 3753/4150/9418 +s 2 +f 3746/4142/9404 3747/4143/9403 3755/4152/9419 3754/4151/9420 +s 3 +f 3747/4143/9406 3748/4144/9405 3756/4153/9421 3755/4152/9422 +s 4 +f 3748/4144/9408 3749/4145/9407 3757/4154/9423 3756/4153/9424 +s 5 +f 3749/4145/9410 3750/4146/9409 3758/4155/9425 3757/4154/9426 +s 6 +f 3750/4146/9412 3751/4147/9411 3759/4156/9427 3758/4155/9428 +s 7 +f 3751/4147/9414 3752/4148/9413 3760/4157/9429 3759/4156/9430 +s 8 +f 3752/4148/9416 3745/4149/9415 3753/4158/9431 3760/4157/9432 +s 1 +f 3753/4150/9418 3754/4151/9417 3762/4160/9433 3761/4159/9434 +s 2 +f 3754/4151/9420 3755/4152/9419 3763/4161/9435 3762/4160/9436 +s 3 +f 3755/4152/9422 3756/4153/9421 3764/4162/9437 3763/4161/9438 +s 4 +f 3756/4153/9424 3757/4154/9423 3765/4163/9439 3764/4162/9440 +s 5 +f 3757/4154/9426 3758/4155/9425 3766/4164/9441 3765/4163/9442 +s 6 +f 3758/4155/9428 3759/4156/9427 3767/4165/9443 3766/4164/9444 +s 7 +f 3759/4156/9430 3760/4157/9429 3768/4166/9445 3767/4165/9446 +s 8 +f 3760/4157/9432 3753/4158/9431 3761/4167/9447 3768/4166/9448 +s 1 +f 3761/4159/9434 3762/4160/9433 3770/4169/9449 3769/4168/9450 +s 2 +f 3762/4160/9436 3763/4161/9435 3771/4170/9451 3770/4169/9452 +s 3 +f 3763/4161/9438 3764/4162/9437 3772/4171/9453 3771/4170/9454 +s 4 +f 3764/4162/9440 3765/4163/9439 3773/4172/9455 3772/4171/9456 +s 5 +f 3765/4163/9442 3766/4164/9441 3774/4173/9457 3773/4172/9458 +s 6 +f 3766/4164/9444 3767/4165/9443 3775/4174/9459 3774/4173/9460 +s 7 +f 3767/4165/9446 3768/4166/9445 3776/4175/9461 3775/4174/9462 +s 8 +f 3768/4166/9448 3761/4167/9447 3769/4176/9463 3776/4175/9464 +s 1 +f 3769/4168/9450 3770/4169/9449 3778/4178/9465 3777/4177/9466 +s 2 +f 3770/4169/9452 3771/4170/9451 3779/4179/9467 3778/4178/9468 +s 3 +f 3771/4170/9454 3772/4171/9453 3780/4180/9469 3779/4179/9470 +s 4 +f 3772/4171/9456 3773/4172/9455 3781/4181/9471 3780/4180/9472 +s 5 +f 3773/4172/9458 3774/4173/9457 3782/4182/9473 3781/4181/9474 +s 6 +f 3774/4173/9460 3775/4174/9459 3783/4183/9475 3782/4182/9476 +s 7 +f 3775/4174/9462 3776/4175/9461 3784/4184/9477 3783/4183/9478 +s 8 +f 3776/4175/9464 3769/4176/9463 3777/4185/9479 3784/4184/9480 +s 1 +f 3777/4177/9466 3778/4178/9465 3786/4187/9481 3785/4186/9482 +s 2 +f 3778/4178/9468 3779/4179/9467 3787/4188/9483 3786/4187/9484 +s 3 +f 3779/4179/9470 3780/4180/9469 3788/4189/9485 3787/4188/9486 +s 4 +f 3780/4180/9472 3781/4181/9471 3789/4190/9487 3788/4189/9488 +s 5 +f 3781/4181/9474 3782/4182/9473 3790/4191/9489 3789/4190/9490 +s 6 +f 3782/4182/9476 3783/4183/9475 3791/4192/9491 3790/4191/9492 +s 7 +f 3783/4183/9478 3784/4184/9477 3792/4193/9493 3791/4192/9494 +s 8 +f 3784/4184/9480 3777/4185/9479 3785/4194/9495 3792/4193/9496 +s 1 +f 3785/4186/9482 3786/4187/9481 3794/4196/9497 3793/4195/9498 +s 2 +f 3786/4187/9484 3787/4188/9483 3795/4197/9499 3794/4196/9500 +s 3 +f 3787/4188/9486 3788/4189/9485 3796/4198/9501 3795/4197/9502 +s 4 +f 3788/4189/9488 3789/4190/9487 3797/4199/9503 3796/4198/9504 +s 5 +f 3789/4190/9490 3790/4191/9489 3798/4200/9505 3797/4199/9506 +s 6 +f 3790/4191/9492 3791/4192/9491 3799/4201/9507 3798/4200/9508 +s 7 +f 3791/4192/9494 3792/4193/9493 3800/4202/9509 3799/4201/9510 +s 8 +f 3792/4193/9496 3785/4194/9495 3793/4203/9511 3800/4202/9512 +s 1 +f 3793/4195/9498 3794/4196/9497 3802/4205/9513 3801/4204/9514 +s 2 +f 3794/4196/9500 3795/4197/9499 3803/4206/9515 3802/4205/9516 +s 3 +f 3795/4197/9502 3796/4198/9501 3804/4207/9517 3803/4206/9518 +s 4 +f 3796/4198/9504 3797/4199/9503 3805/4208/9519 3804/4207/9520 +s 5 +f 3797/4199/9506 3798/4200/9505 3806/4209/9521 3805/4208/9522 +s 6 +f 3798/4200/9508 3799/4201/9507 3807/4210/9523 3806/4209/9524 +s 7 +f 3799/4201/9510 3800/4202/9509 3808/4211/9525 3807/4210/9526 +s 8 +f 3800/4202/9512 3793/4203/9511 3801/4212/9527 3808/4211/9528 +s 1 +f 3801/4204/9514 3802/4205/9513 3810/4214/9529 3809/4213/9530 +s 2 +f 3802/4205/9516 3803/4206/9515 3811/4215/9531 3810/4214/9532 +s 3 +f 3803/4206/9518 3804/4207/9517 3812/4216/9533 3811/4215/9534 +s 4 +f 3804/4207/9520 3805/4208/9519 3813/4217/9535 3812/4216/9536 +s 5 +f 3805/4208/9522 3806/4209/9521 3814/4218/9537 3813/4217/9538 +s 6 +f 3806/4209/9524 3807/4210/9523 3815/4219/9539 3814/4218/9540 +s 7 +f 3807/4210/9526 3808/4211/9525 3816/4220/9541 3815/4219/9542 +s 8 +f 3808/4211/9528 3801/4212/9527 3809/4221/9543 3816/4220/9544 +s 1 +f 3809/4213/9530 3810/4214/9529 3818/4223/9545 3817/4222/9546 +s 2 +f 3810/4214/9532 3811/4215/9531 3819/4224/9547 3818/4223/9548 +s 3 +f 3811/4215/9534 3812/4216/9533 3820/4225/9549 3819/4224/9550 +s 4 +f 3812/4216/9536 3813/4217/9535 3821/4226/9551 3820/4225/9552 +s 5 +f 3813/4217/9538 3814/4218/9537 3822/4227/9553 3821/4226/9554 +s 6 +f 3814/4218/9540 3815/4219/9539 3823/4228/9555 3822/4227/9556 +s 7 +f 3815/4219/9542 3816/4220/9541 3824/4229/9557 3823/4228/9558 +s 8 +f 3816/4220/9544 3809/4221/9543 3817/4230/9559 3824/4229/9560 +s 1 +f 3817/4222/9546 3818/4223/9545 3826/4232/9561 3825/4231/9562 +s 2 +f 3818/4223/9548 3819/4224/9547 3827/4233/9563 3826/4232/9564 +s 3 +f 3819/4224/9550 3820/4225/9549 3828/4234/9565 3827/4233/9566 +s 4 +f 3820/4225/9552 3821/4226/9551 3829/4235/9567 3828/4234/9568 +s 5 +f 3821/4226/9554 3822/4227/9553 3830/4236/9569 3829/4235/9570 +s 6 +f 3822/4227/9556 3823/4228/9555 3831/4237/9571 3830/4236/9572 +s 7 +f 3823/4228/9558 3824/4229/9557 3832/4238/9573 3831/4237/9574 +s 8 +f 3824/4229/9560 3817/4230/9559 3825/4239/9575 3832/4238/9576 +s 1 +f 3825/4231/9562 3826/4232/9561 3834/4241/9577 3833/4240/9578 +s 2 +f 3826/4232/9564 3827/4233/9563 3835/4242/9579 3834/4241/9580 +s 3 +f 3827/4233/9566 3828/4234/9565 3836/4243/9581 3835/4242/9582 +s 4 +f 3828/4234/9568 3829/4235/9567 3837/4244/9583 3836/4243/9584 +s 5 +f 3829/4235/9570 3830/4236/9569 3838/4245/9585 3837/4244/9586 +s 6 +f 3830/4236/9572 3831/4237/9571 3839/4246/9587 3838/4245/9588 +s 7 +f 3831/4237/9574 3832/4238/9573 3840/4247/9589 3839/4246/9590 +s 8 +f 3832/4238/9576 3825/4239/9575 3833/4248/9591 3840/4247/9592 +s 1 +f 3833/4240/9578 3834/4241/9577 3842/4250/9593 3841/4249/9594 +s 2 +f 3834/4241/9580 3835/4242/9579 3843/4251/9595 3842/4250/9596 +s 3 +f 3835/4242/9582 3836/4243/9581 3844/4252/9597 3843/4251/9598 +s 4 +f 3836/4243/9584 3837/4244/9583 3845/4253/9599 3844/4252/9600 +s 5 +f 3837/4244/9586 3838/4245/9585 3846/4254/9601 3845/4253/9602 +s 6 +f 3838/4245/9588 3839/4246/9587 3847/4255/9603 3846/4254/9604 +s 7 +f 3839/4246/9590 3840/4247/9589 3848/4256/9605 3847/4255/9606 +s 8 +f 3840/4247/9592 3833/4248/9591 3841/4257/9607 3848/4256/9608 +s 1 +f 3841/4249/9594 3842/4250/9593 3850/4259/9609 3849/4258/9610 +s 2 +f 3842/4250/9596 3843/4251/9595 3851/4260/9611 3850/4259/9612 +s 3 +f 3843/4251/9598 3844/4252/9597 3852/4261/9613 3851/4260/9614 +s 4 +f 3844/4252/9600 3845/4253/9599 3853/4262/9615 3852/4261/9616 +s 5 +f 3845/4253/9602 3846/4254/9601 3854/4263/9617 3853/4262/9618 +s 6 +f 3846/4254/9604 3847/4255/9603 3855/4264/9619 3854/4263/9620 +s 7 +f 3847/4255/9606 3848/4256/9605 3856/4265/9621 3855/4264/9622 +s 8 +f 3848/4256/9608 3841/4257/9607 3849/4266/9623 3856/4265/9624 +s 1 +f 3849/4258/9610 3850/4259/9609 3858/4268/9625 3857/4267/9626 +s 2 +f 3850/4259/9612 3851/4260/9611 3859/4269/9627 3858/4268/9628 +s 3 +f 3851/4260/9614 3852/4261/9613 3860/4270/9629 3859/4269/9630 +s 4 +f 3852/4261/9616 3853/4262/9615 3861/4271/9631 3860/4270/9632 +s 5 +f 3853/4262/9618 3854/4263/9617 3862/4272/9633 3861/4271/9634 +s 6 +f 3854/4263/9620 3855/4264/9619 3863/4273/9635 3862/4272/9636 +s 7 +f 3855/4264/9622 3856/4265/9621 3864/4274/9637 3863/4273/9638 +s 8 +f 3856/4265/9624 3849/4266/9623 3857/4275/9639 3864/4274/9640 +s 1 +f 3857/4267/9626 3858/4268/9625 3866/4277/9641 3865/4276/9642 +s 2 +f 3858/4268/9628 3859/4269/9627 3867/4278/9643 3866/4277/9644 +s 3 +f 3859/4269/9630 3860/4270/9629 3868/4279/9645 3867/4278/9646 +s 4 +f 3860/4270/9632 3861/4271/9631 3869/4280/9647 3868/4279/9648 +s 5 +f 3861/4271/9634 3862/4272/9633 3870/4281/9649 3869/4280/9650 +s 6 +f 3862/4272/9636 3863/4273/9635 3871/4282/9651 3870/4281/9652 +s 7 +f 3863/4273/9638 3864/4274/9637 3872/4283/9653 3871/4282/9654 +s 8 +f 3864/4274/9640 3857/4275/9639 3865/4284/9655 3872/4283/9656 +s 1 +f 3865/4276/9642 3866/4277/9641 3874/4286/9657 3873/4285/9658 +s 2 +f 3866/4277/9644 3867/4278/9643 3875/4287/9659 3874/4286/9660 +s 3 +f 3867/4278/9646 3868/4279/9645 3876/4288/9661 3875/4287/9662 +s 4 +f 3868/4279/9648 3869/4280/9647 3877/4289/9663 3876/4288/9664 +s 5 +f 3869/4280/9650 3870/4281/9649 3878/4290/9665 3877/4289/9666 +s 6 +f 3870/4281/9652 3871/4282/9651 3879/4291/9667 3878/4290/9668 +s 7 +f 3871/4282/9654 3872/4283/9653 3880/4292/9669 3879/4291/9670 +s 8 +f 3872/4283/9656 3865/4284/9655 3873/4293/9671 3880/4292/9672 +s 1 +f 3873/4285/9658 3874/4286/9657 3882/4295/9673 3881/4294/9674 +s 2 +f 3874/4286/9660 3875/4287/9659 3883/4296/9675 3882/4295/9676 +s 3 +f 3875/4287/9662 3876/4288/9661 3884/4297/9677 3883/4296/9678 +s 4 +f 3876/4288/9664 3877/4289/9663 3885/4298/9679 3884/4297/9680 +s 5 +f 3877/4289/9666 3878/4290/9665 3886/4299/9681 3885/4298/9682 +s 6 +f 3878/4290/9668 3879/4291/9667 3887/4300/9683 3886/4299/9684 +s 7 +f 3879/4291/9670 3880/4292/9669 3888/4301/9685 3887/4300/9686 +s 8 +f 3880/4292/9672 3873/4293/9671 3881/4302/9687 3888/4301/9688 +s 1 +f 3881/4294/9674 3882/4295/9673 3890/4304/9689 3889/4303/9690 +s 2 +f 3882/4295/9676 3883/4296/9675 3891/4305/9691 3890/4304/9692 +s 3 +f 3883/4296/9678 3884/4297/9677 3892/4306/9693 3891/4305/9694 +s 4 +f 3884/4297/9680 3885/4298/9679 3893/4307/9695 3892/4306/9696 +s 5 +f 3885/4298/9682 3886/4299/9681 3894/4308/9697 3893/4307/9698 +s 6 +f 3886/4299/9684 3887/4300/9683 3895/4309/9699 3894/4308/9700 +s 7 +f 3887/4300/9686 3888/4301/9685 3896/4310/9701 3895/4309/9702 +s 8 +f 3888/4301/9688 3881/4302/9687 3889/4311/9703 3896/4310/9704 +s 1 +f 3889/4303/9690 3890/4304/9689 3898/4313/9705 3897/4312/9706 +s 2 +f 3890/4304/9692 3891/4305/9691 3899/4314/9707 3898/4313/9708 +s 3 +f 3891/4305/9694 3892/4306/9693 3900/4315/9709 3899/4314/9710 +s 4 +f 3892/4306/9696 3893/4307/9695 3901/4316/9711 3900/4315/9712 +s 5 +f 3893/4307/9698 3894/4308/9697 3902/4317/9713 3901/4316/9714 +s 6 +f 3894/4308/9700 3895/4309/9699 3903/4318/9715 3902/4317/9716 +s 7 +f 3895/4309/9702 3896/4310/9701 3904/4319/9717 3903/4318/9718 +s 8 +f 3896/4310/9704 3889/4311/9703 3897/4320/9719 3904/4319/9720 +s 1 +f 3897/4312/9706 3898/4313/9705 3906/4322/9721 3905/4321/9722 +s 2 +f 3898/4313/9708 3899/4314/9707 3907/4323/9723 3906/4322/9724 +s 3 +f 3899/4314/9710 3900/4315/9709 3908/4324/9725 3907/4323/9726 +s 4 +f 3900/4315/9712 3901/4316/9711 3909/4325/9727 3908/4324/9728 +s 5 +f 3901/4316/9714 3902/4317/9713 3910/4326/9729 3909/4325/9730 +s 6 +f 3902/4317/9716 3903/4318/9715 3911/4327/9731 3910/4326/9732 +s 7 +f 3903/4318/9718 3904/4319/9717 3912/4328/9733 3911/4327/9734 +s 8 +f 3904/4319/9720 3897/4320/9719 3905/4329/9735 3912/4328/9736 +s 1 +f 3905/4321/9722 3906/4322/9721 3914/4331/9737 3913/4330/9738 +s 2 +f 3906/4322/9724 3907/4323/9723 3915/4332/9739 3914/4331/9740 +s 3 +f 3907/4323/9726 3908/4324/9725 3916/4333/9741 3915/4332/9742 +s 4 +f 3908/4324/9728 3909/4325/9727 3917/4334/9743 3916/4333/9744 +s 5 +f 3909/4325/9730 3910/4326/9729 3918/4335/9745 3917/4334/9746 +s 6 +f 3910/4326/9732 3911/4327/9731 3919/4336/9747 3918/4335/9748 +s 7 +f 3911/4327/9734 3912/4328/9733 3920/4337/9749 3919/4336/9750 +s 8 +f 3912/4328/9736 3905/4329/9735 3913/4338/9751 3920/4337/9752 +s 1 +f 3913/4330/9738 3914/4331/9737 3922/4340/9753 3921/4339/9754 +s 2 +f 3914/4331/9740 3915/4332/9739 3923/4341/9755 3922/4340/9756 +s 3 +f 3915/4332/9742 3916/4333/9741 3924/4342/9757 3923/4341/9758 +s 4 +f 3916/4333/9744 3917/4334/9743 3925/4343/9759 3924/4342/9760 +s 5 +f 3917/4334/9746 3918/4335/9745 3926/4344/9761 3925/4343/9762 +s 6 +f 3918/4335/9748 3919/4336/9747 3927/4345/9763 3926/4344/9764 +s 7 +f 3919/4336/9750 3920/4337/9749 3928/4346/9765 3927/4345/9766 +s 8 +f 3920/4337/9752 3913/4338/9751 3921/4347/9767 3928/4346/9768 +s 1 +f 3921/4339/9754 3922/4340/9753 3930/4349/9769 3929/4348/9770 +s 2 +f 3922/4340/9756 3923/4341/9755 3931/4350/9771 3930/4349/9772 +s 3 +f 3923/4341/9758 3924/4342/9757 3932/4351/9773 3931/4350/9774 +s 4 +f 3924/4342/9760 3925/4343/9759 3933/4352/9775 3932/4351/9776 +s 5 +f 3925/4343/9762 3926/4344/9761 3934/4353/9777 3933/4352/9778 +s 6 +f 3926/4344/9764 3927/4345/9763 3935/4354/9779 3934/4353/9780 +s 7 +f 3927/4345/9766 3928/4346/9765 3936/4355/9781 3935/4354/9782 +s 8 +f 3928/4346/9768 3921/4347/9767 3929/4356/9783 3936/4355/9784 +s 1 +f 3929/4348/9770 3930/4349/9769 3938/4358/9785 3937/4357/9786 +s 2 +f 3930/4349/9772 3931/4350/9771 3939/4359/9787 3938/4358/9788 +s 3 +f 3931/4350/9774 3932/4351/9773 3940/4360/9789 3939/4359/9790 +s 4 +f 3932/4351/9776 3933/4352/9775 3941/4361/9791 3940/4360/9792 +s 5 +f 3933/4352/9778 3934/4353/9777 3942/4362/9793 3941/4361/9794 +s 6 +f 3934/4353/9780 3935/4354/9779 3943/4363/9795 3942/4362/9796 +s 7 +f 3935/4354/9782 3936/4355/9781 3944/4364/9797 3943/4363/9798 +s 8 +f 3936/4355/9784 3929/4356/9783 3937/4365/9799 3944/4364/9800 +s 1 +f 3937/4357/9786 3938/4358/9785 3946/4367/9801 3945/4366/9802 +s 2 +f 3938/4358/9788 3939/4359/9787 3947/4368/9803 3946/4367/9804 +s 3 +f 3939/4359/9790 3940/4360/9789 3948/4369/9805 3947/4368/9806 +s 4 +f 3940/4360/9792 3941/4361/9791 3949/4370/9807 3948/4369/9808 +s 5 +f 3941/4361/9794 3942/4362/9793 3950/4371/9809 3949/4370/9810 +s 6 +f 3942/4362/9796 3943/4363/9795 3951/4372/9811 3950/4371/9812 +s 7 +f 3943/4363/9798 3944/4364/9797 3952/4373/9813 3951/4372/9814 +s 8 +f 3944/4364/9800 3937/4365/9799 3945/4374/9815 3952/4373/9816 +s 1 +f 3945/4366/9802 3946/4367/9801 3954/4376/9817 3953/4375/9818 +s 2 +f 3946/4367/9804 3947/4368/9803 3955/4377/9819 3954/4376/9820 +s 3 +f 3947/4368/9806 3948/4369/9805 3956/4378/9821 3955/4377/9822 +s 4 +f 3948/4369/9808 3949/4370/9807 3957/4379/9823 3956/4378/9824 +s 5 +f 3949/4370/9810 3950/4371/9809 3958/4380/9825 3957/4379/9826 +s 6 +f 3950/4371/9812 3951/4372/9811 3959/4381/9827 3958/4380/9828 +s 7 +f 3951/4372/9814 3952/4373/9813 3960/4382/9829 3959/4381/9830 +s 8 +f 3952/4373/9816 3945/4374/9815 3953/4383/9831 3960/4382/9832 +s 1 +f 3953/4375/9818 3954/4376/9817 3962/4385/9833 3961/4384/9834 +s 2 +f 3954/4376/9820 3955/4377/9819 3963/4386/9835 3962/4385/9836 +s 3 +f 3955/4377/9822 3956/4378/9821 3964/4387/9837 3963/4386/9838 +s 4 +f 3956/4378/9824 3957/4379/9823 3965/4388/9839 3964/4387/9840 +s 5 +f 3957/4379/9826 3958/4380/9825 3966/4389/9841 3965/4388/9842 +s 6 +f 3958/4380/9828 3959/4381/9827 3967/4390/9843 3966/4389/9844 +s 7 +f 3959/4381/9830 3960/4382/9829 3968/4391/9845 3967/4390/9846 +s 8 +f 3960/4382/9832 3953/4383/9831 3961/4392/9847 3968/4391/9848 +s 1 +f 3961/4384/9834 3962/4385/9833 3970/4394/9849 3969/4393/9850 +s 2 +f 3962/4385/9836 3963/4386/9835 3971/4395/9851 3970/4394/9852 +s 3 +f 3963/4386/9838 3964/4387/9837 3972/4396/9853 3971/4395/9854 +s 4 +f 3964/4387/9840 3965/4388/9839 3973/4397/9855 3972/4396/9856 +s 5 +f 3965/4388/9842 3966/4389/9841 3974/4398/9857 3973/4397/9858 +s 6 +f 3966/4389/9844 3967/4390/9843 3975/4399/9859 3974/4398/9860 +s 7 +f 3967/4390/9846 3968/4391/9845 3976/4400/9861 3975/4399/9862 +s 8 +f 3968/4391/9848 3961/4392/9847 3969/4401/9863 3976/4400/9864 +s 1 +f 3969/4393/9850 3970/4394/9849 3978/4403/9865 3977/4402/9866 +s 2 +f 3970/4394/9852 3971/4395/9851 3979/4404/9867 3978/4403/9868 +s 3 +f 3971/4395/9854 3972/4396/9853 3980/4405/9869 3979/4404/9870 +s 4 +f 3972/4396/9856 3973/4397/9855 3981/4406/9871 3980/4405/9872 +s 5 +f 3973/4397/9858 3974/4398/9857 3982/4407/9873 3981/4406/9874 +s 6 +f 3974/4398/9860 3975/4399/9859 3983/4408/9875 3982/4407/9876 +s 7 +f 3975/4399/9862 3976/4400/9861 3984/4409/9877 3983/4408/9878 +s 8 +f 3976/4400/9864 3969/4401/9863 3977/4410/9879 3984/4409/9880 +s 1 +f 3977/4402/9866 3978/4403/9865 3986/4412/9881 3985/4411/9882 +s 2 +f 3978/4403/9868 3979/4404/9867 3987/4413/9883 3986/4412/9884 +s 3 +f 3979/4404/9870 3980/4405/9869 3988/4414/9885 3987/4413/9886 +s 4 +f 3980/4405/9872 3981/4406/9871 3989/4415/9887 3988/4414/9888 +s 5 +f 3981/4406/9874 3982/4407/9873 3990/4416/9889 3989/4415/9890 +s 6 +f 3982/4407/9876 3983/4408/9875 3991/4417/9891 3990/4416/9892 +s 7 +f 3983/4408/9878 3984/4409/9877 3992/4418/9893 3991/4417/9894 +s 8 +f 3984/4409/9880 3977/4410/9879 3985/4419/9895 3992/4418/9896 +s 1 +f 3985/4411/9882 3986/4412/9881 3994/4421/9897 3993/4420/9898 +s 2 +f 3986/4412/9884 3987/4413/9883 3995/4422/9899 3994/4421/9900 +s 3 +f 3987/4413/9886 3988/4414/9885 3996/4423/9901 3995/4422/9902 +s 4 +f 3988/4414/9888 3989/4415/9887 3997/4424/9903 3996/4423/9904 +s 5 +f 3989/4415/9890 3990/4416/9889 3998/4425/9905 3997/4424/9906 +s 6 +f 3990/4416/9892 3991/4417/9891 3999/4426/9907 3998/4425/9908 +s 7 +f 3991/4417/9894 3992/4418/9893 4000/4427/9909 3999/4426/9910 +s 8 +f 3992/4418/9896 3985/4419/9895 3993/4428/9911 4000/4427/9912 +s 1 +f 3993/4420/9898 3994/4421/9897 4002/4430/9913 4001/4429/9914 +s 2 +f 3994/4421/9900 3995/4422/9899 4003/4431/9915 4002/4430/9916 +s 3 +f 3995/4422/9902 3996/4423/9901 4004/4432/9917 4003/4431/9918 +s 4 +f 3996/4423/9904 3997/4424/9903 4005/4433/9919 4004/4432/9920 +s 5 +f 3997/4424/9906 3998/4425/9905 4006/4434/9921 4005/4433/9922 +s 6 +f 3998/4425/9908 3999/4426/9907 4007/4435/9923 4006/4434/9924 +s 7 +f 3999/4426/9910 4000/4427/9909 4008/4436/9925 4007/4435/9926 +s 8 +f 4000/4427/9912 3993/4428/9911 4001/4437/9927 4008/4436/9928 +s 1 +f 4001/4429/9914 4002/4430/9913 4010/4439/9929 4009/4438/9930 +s 2 +f 4002/4430/9916 4003/4431/9915 4011/4440/9931 4010/4439/9932 +s 3 +f 4003/4431/9918 4004/4432/9917 4012/4441/9933 4011/4440/9934 +s 4 +f 4004/4432/9920 4005/4433/9919 4013/4442/9935 4012/4441/9936 +s 5 +f 4005/4433/9922 4006/4434/9921 4014/4443/9937 4013/4442/9938 +s 6 +f 4006/4434/9924 4007/4435/9923 4015/4444/9939 4014/4443/9940 +s 7 +f 4007/4435/9926 4008/4436/9925 4016/4445/9941 4015/4444/9942 +s 8 +f 4008/4436/9928 4001/4437/9927 4009/4446/9943 4016/4445/9944 +s 1 +f 4009/4438/9930 4010/4439/9929 4018/4448/9945 4017/4447/9946 +s 2 +f 4010/4439/9932 4011/4440/9931 4019/4449/9947 4018/4448/9948 +s 3 +f 4011/4440/9934 4012/4441/9933 4020/4450/9949 4019/4449/9950 +s 4 +f 4012/4441/9936 4013/4442/9935 4021/4451/9951 4020/4450/9952 +s 5 +f 4013/4442/9938 4014/4443/9937 4022/4452/9953 4021/4451/9954 +s 6 +f 4014/4443/9940 4015/4444/9939 4023/4453/9955 4022/4452/9956 +s 7 +f 4015/4444/9942 4016/4445/9941 4024/4454/9957 4023/4453/9958 +s 8 +f 4016/4445/9944 4009/4446/9943 4017/4455/9959 4024/4454/9960 +s 1 +f 4017/4447/9946 4018/4448/9945 4026/4457/9961 4025/4456/9962 +s 2 +f 4018/4448/9948 4019/4449/9947 4027/4458/9963 4026/4457/9964 +s 3 +f 4019/4449/9950 4020/4450/9949 4028/4459/9965 4027/4458/9966 +s 4 +f 4020/4450/9952 4021/4451/9951 4029/4460/9967 4028/4459/9968 +s 5 +f 4021/4451/9954 4022/4452/9953 4030/4461/9969 4029/4460/9970 +s 6 +f 4022/4452/9956 4023/4453/9955 4031/4462/9971 4030/4461/9972 +s 7 +f 4023/4453/9958 4024/4454/9957 4032/4463/9973 4031/4462/9974 +s 8 +f 4024/4454/9960 4017/4455/9959 4025/4464/9975 4032/4463/9976 +s 1 +f 4025/4456/9962 4026/4457/9961 4034/4466/9977 4033/4465/9978 +s 2 +f 4026/4457/9964 4027/4458/9963 4035/4467/9979 4034/4466/9980 +s 3 +f 4027/4458/9966 4028/4459/9965 4036/4468/9981 4035/4467/9982 +s 4 +f 4028/4459/9968 4029/4460/9967 4037/4469/9983 4036/4468/9984 +s 5 +f 4029/4460/9970 4030/4461/9969 4038/4470/9985 4037/4469/9986 +s 6 +f 4030/4461/9972 4031/4462/9971 4039/4471/9987 4038/4470/9988 +s 7 +f 4031/4462/9974 4032/4463/9973 4040/4472/9989 4039/4471/9990 +s 8 +f 4032/4463/9976 4025/4464/9975 4033/4473/9991 4040/4472/9992 +s 1 +f 4033/4465/9978 4034/4466/9977 4042/4475/9993 4041/4474/9994 +s 2 +f 4034/4466/9980 4035/4467/9979 4043/4476/9995 4042/4475/9996 +s 3 +f 4035/4467/9982 4036/4468/9981 4044/4477/9997 4043/4476/9998 +s 4 +f 4036/4468/9984 4037/4469/9983 4045/4478/9999 4044/4477/10000 +s 5 +f 4037/4469/9986 4038/4470/9985 4046/4479/10001 4045/4478/10002 +s 6 +f 4038/4470/9988 4039/4471/9987 4047/4480/10003 4046/4479/10004 +s 7 +f 4039/4471/9990 4040/4472/9989 4048/4481/10005 4047/4480/10006 +s 8 +f 4040/4472/9992 4033/4473/9991 4041/4482/10007 4048/4481/10008 +s 1 +f 4041/4474/9994 4042/4475/9993 4050/4484/10009 4049/4483/10010 +s 2 +f 4042/4475/9996 4043/4476/9995 4051/4485/10011 4050/4484/10012 +s 3 +f 4043/4476/9998 4044/4477/9997 4052/4486/10013 4051/4485/10014 +s 4 +f 4044/4477/10000 4045/4478/9999 4053/4487/10015 4052/4486/10016 +s 5 +f 4045/4478/10002 4046/4479/10001 4054/4488/10017 4053/4487/10018 +s 6 +f 4046/4479/10004 4047/4480/10003 4055/4489/10019 4054/4488/10020 +s 7 +f 4047/4480/10006 4048/4481/10005 4056/4490/10021 4055/4489/10022 +s 8 +f 4048/4481/10008 4041/4482/10007 4049/4491/10023 4056/4490/10024 +s 1 +f 4049/4483/10010 4050/4484/10009 4058/4493/10025 4057/4492/10026 +s 2 +f 4050/4484/10012 4051/4485/10011 4059/4494/10027 4058/4493/10028 +s 3 +f 4051/4485/10014 4052/4486/10013 4060/4495/10029 4059/4494/10030 +s 4 +f 4052/4486/10016 4053/4487/10015 4061/4496/10031 4060/4495/10032 +s 5 +f 4053/4487/10018 4054/4488/10017 4062/4497/10033 4061/4496/10034 +s 6 +f 4054/4488/10020 4055/4489/10019 4063/4498/10035 4062/4497/10036 +s 7 +f 4055/4489/10022 4056/4490/10021 4064/4499/10037 4063/4498/10038 +s 8 +f 4056/4490/10024 4049/4491/10023 4057/4500/10039 4064/4499/10040 +s 1 +f 4057/4492/10026 4058/4493/10025 4066/4502/10041 4065/4501/10042 +s 2 +f 4058/4493/10028 4059/4494/10027 4067/4503/10043 4066/4502/10044 +s 3 +f 4059/4494/10030 4060/4495/10029 4068/4504/10045 4067/4503/10046 +s 4 +f 4060/4495/10032 4061/4496/10031 4069/4505/10047 4068/4504/10048 +s 5 +f 4061/4496/10034 4062/4497/10033 4070/4506/10049 4069/4505/10050 +s 6 +f 4062/4497/10036 4063/4498/10035 4071/4507/10051 4070/4506/10052 +s 7 +f 4063/4498/10038 4064/4499/10037 4072/4508/10053 4071/4507/10054 +s 8 +f 4064/4499/10040 4057/4500/10039 4065/4509/10055 4072/4508/10056 +s 1 +f 4065/4501/10042 4066/4502/10041 4074/4511/10057 4073/4510/10058 +s 2 +f 4066/4502/10044 4067/4503/10043 4075/4512/10059 4074/4511/10060 +s 3 +f 4067/4503/10046 4068/4504/10045 4076/4513/10061 4075/4512/10062 +s 4 +f 4068/4504/10048 4069/4505/10047 4077/4514/10063 4076/4513/10064 +s 5 +f 4069/4505/10050 4070/4506/10049 4078/4515/10065 4077/4514/10066 +s 6 +f 4070/4506/10052 4071/4507/10051 4079/4516/10067 4078/4515/10068 +s 7 +f 4071/4507/10054 4072/4508/10053 4080/4517/10069 4079/4516/10070 +s 8 +f 4072/4508/10056 4065/4509/10055 4073/4518/10071 4080/4517/10072 +s 1 +f 4073/4510/10058 4074/4511/10057 4082/4520/10073 4081/4519/10074 +s 2 +f 4074/4511/10060 4075/4512/10059 4083/4521/10075 4082/4520/10076 +s 3 +f 4075/4512/10062 4076/4513/10061 4084/4522/10077 4083/4521/10078 +s 4 +f 4076/4513/10064 4077/4514/10063 4085/4523/10079 4084/4522/10080 +s 5 +f 4077/4514/10066 4078/4515/10065 4086/4524/10081 4085/4523/10082 +s 6 +f 4078/4515/10068 4079/4516/10067 4087/4525/10083 4086/4524/10084 +s 7 +f 4079/4516/10070 4080/4517/10069 4088/4526/10085 4087/4525/10086 +s 8 +f 4080/4517/10072 4073/4518/10071 4081/4527/10087 4088/4526/10088 +s 1 +f 4081/4519/10074 4082/4520/10073 4090/4529/10089 4089/4528/10090 +s 2 +f 4082/4520/10076 4083/4521/10075 4091/4530/10091 4090/4529/10092 +s 3 +f 4083/4521/10078 4084/4522/10077 4092/4531/10093 4091/4530/10094 +s 4 +f 4084/4522/10080 4085/4523/10079 4093/4532/10095 4092/4531/10096 +s 5 +f 4085/4523/10082 4086/4524/10081 4094/4533/10097 4093/4532/10098 +s 6 +f 4086/4524/10084 4087/4525/10083 4095/4534/10099 4094/4533/10100 +s 7 +f 4087/4525/10086 4088/4526/10085 4096/4535/10101 4095/4534/10102 +s 8 +f 4088/4526/10088 4081/4527/10087 4089/4536/10103 4096/4535/10104 +s 1 +f 4089/4528/10090 4090/4529/10089 4098/4538/10105 4097/4537/10106 +s 2 +f 4090/4529/10092 4091/4530/10091 4099/4539/10107 4098/4538/10108 +s 3 +f 4091/4530/10094 4092/4531/10093 4100/4540/10109 4099/4539/10110 +s 4 +f 4092/4531/10096 4093/4532/10095 4101/4541/10111 4100/4540/10112 +s 5 +f 4093/4532/10098 4094/4533/10097 4102/4542/10113 4101/4541/10114 +s 6 +f 4094/4533/10100 4095/4534/10099 4103/4543/10115 4102/4542/10116 +s 7 +f 4095/4534/10102 4096/4535/10101 4104/4544/10117 4103/4543/10118 +s 8 +f 4096/4535/10104 4089/4536/10103 4097/4545/10119 4104/4544/10120 +s 1 +f 4097/4537/10106 4098/4538/10105 4106/4547/10121 4105/4546/10122 +s 2 +f 4098/4538/10108 4099/4539/10107 4107/4548/10123 4106/4547/10124 +s 3 +f 4099/4539/10110 4100/4540/10109 4108/4549/10125 4107/4548/10126 +s 4 +f 4100/4540/10112 4101/4541/10111 4109/4550/10127 4108/4549/10128 +s 5 +f 4101/4541/10114 4102/4542/10113 4110/4551/10129 4109/4550/10130 +s 6 +f 4102/4542/10116 4103/4543/10115 4111/4552/10131 4110/4551/10132 +s 7 +f 4103/4543/10118 4104/4544/10117 4112/4553/10133 4111/4552/10134 +s 8 +f 4104/4544/10120 4097/4545/10119 4105/4554/10135 4112/4553/10136 +s 1 +f 4105/4546/10122 4106/4547/10121 4114/4556/10137 4113/4555/10138 +s 2 +f 4106/4547/10124 4107/4548/10123 4115/4557/10139 4114/4556/10140 +s 3 +f 4107/4548/10126 4108/4549/10125 4116/4558/10141 4115/4557/10142 +s 4 +f 4108/4549/10128 4109/4550/10127 4117/4559/10143 4116/4558/10144 +s 5 +f 4109/4550/10130 4110/4551/10129 4118/4560/10145 4117/4559/10146 +s 6 +f 4110/4551/10132 4111/4552/10131 4119/4561/10147 4118/4560/10148 +s 7 +f 4111/4552/10134 4112/4553/10133 4120/4562/10149 4119/4561/10150 +s 8 +f 4112/4553/10136 4105/4554/10135 4113/4563/10151 4120/4562/10152 +s 1 +f 4113/4555/10138 4114/4556/10137 4122/4565/10153 4121/4564/10154 +s 2 +f 4114/4556/10140 4115/4557/10139 4123/4566/10155 4122/4565/10156 +s 3 +f 4115/4557/10142 4116/4558/10141 4124/4567/10157 4123/4566/10158 +s 4 +f 4116/4558/10144 4117/4559/10143 4125/4568/10159 4124/4567/10160 +s 5 +f 4117/4559/10146 4118/4560/10145 4126/4569/10161 4125/4568/10162 +s 6 +f 4118/4560/10148 4119/4561/10147 4127/4570/10163 4126/4569/10164 +s 7 +f 4119/4561/10150 4120/4562/10149 4128/4571/10165 4127/4570/10166 +s 8 +f 4120/4562/10152 4113/4563/10151 4121/4572/10167 4128/4571/10168 +s 1 +f 4121/4564/10154 4122/4565/10153 4130/4574/10169 4129/4573/10170 +s 2 +f 4122/4565/10156 4123/4566/10155 4131/4575/10171 4130/4574/10172 +s 3 +f 4123/4566/10158 4124/4567/10157 4132/4576/10173 4131/4575/10174 +s 4 +f 4124/4567/10160 4125/4568/10159 4133/4577/10175 4132/4576/10176 +s 5 +f 4125/4568/10162 4126/4569/10161 4134/4578/10177 4133/4577/10178 +s 6 +f 4126/4569/10164 4127/4570/10163 4135/4579/10179 4134/4578/10180 +s 7 +f 4127/4570/10166 4128/4571/10165 4136/4580/10181 4135/4579/10182 +s 8 +f 4128/4571/10168 4121/4572/10167 4129/4581/10183 4136/4580/10184 +s 1 +f 4129/4573/10170 4130/4574/10169 4138/4583/10185 4137/4582/10186 +s 2 +f 4130/4574/10172 4131/4575/10171 4139/4584/10187 4138/4583/10188 +s 3 +f 4131/4575/10174 4132/4576/10173 4140/4585/10189 4139/4584/10190 +s 4 +f 4132/4576/10176 4133/4577/10175 4141/4586/10191 4140/4585/10192 +s 5 +f 4133/4577/10178 4134/4578/10177 4142/4587/10193 4141/4586/10194 +s 6 +f 4134/4578/10180 4135/4579/10179 4143/4588/10195 4142/4587/10196 +s 7 +f 4135/4579/10182 4136/4580/10181 4144/4589/10197 4143/4588/10198 +s 8 +f 4136/4580/10184 4129/4581/10183 4137/4590/10199 4144/4589/10200 +s 1 +f 4137/4582/10186 4138/4583/10185 4146/4592/10201 4145/4591/10202 +s 2 +f 4138/4583/10188 4139/4584/10187 4147/4593/10203 4146/4592/10204 +s 3 +f 4139/4584/10190 4140/4585/10189 4148/4594/10205 4147/4593/10206 +s 4 +f 4140/4585/10192 4141/4586/10191 4149/4595/10207 4148/4594/10208 +s 5 +f 4141/4586/10194 4142/4587/10193 4150/4596/10209 4149/4595/10210 +s 6 +f 4142/4587/10196 4143/4588/10195 4151/4597/10211 4150/4596/10212 +s 7 +f 4143/4588/10198 4144/4589/10197 4152/4598/10213 4151/4597/10214 +s 8 +f 4144/4589/10200 4137/4590/10199 4145/4599/10215 4152/4598/10216 +s 1 +f 4145/4591/10202 4146/4592/10201 4154/4601/10217 4153/4600/10218 +s 2 +f 4146/4592/10204 4147/4593/10203 4155/4602/10219 4154/4601/10220 +s 3 +f 4147/4593/10206 4148/4594/10205 4156/4603/10221 4155/4602/10222 +s 4 +f 4148/4594/10208 4149/4595/10207 4157/4604/10223 4156/4603/10224 +s 5 +f 4149/4595/10210 4150/4596/10209 4158/4605/10225 4157/4604/10226 +s 6 +f 4150/4596/10212 4151/4597/10211 4159/4606/10227 4158/4605/10228 +s 7 +f 4151/4597/10214 4152/4598/10213 4160/4607/10229 4159/4606/10230 +s 8 +f 4152/4598/10216 4145/4599/10215 4153/4608/10231 4160/4607/10232 +s 1 +f 4153/4600/10218 4154/4601/10217 4162/4610/10233 4161/4609/10234 +s 2 +f 4154/4601/10220 4155/4602/10219 4163/4611/10235 4162/4610/10236 +s 3 +f 4155/4602/10222 4156/4603/10221 4164/4612/10237 4163/4611/10238 +s 4 +f 4156/4603/10224 4157/4604/10223 4165/4613/10239 4164/4612/10240 +s 5 +f 4157/4604/10226 4158/4605/10225 4166/4614/10241 4165/4613/10242 +s 6 +f 4158/4605/10228 4159/4606/10227 4167/4615/10243 4166/4614/10244 +s 7 +f 4159/4606/10230 4160/4607/10229 4168/4616/10245 4167/4615/10246 +s 8 +f 4160/4607/10232 4153/4608/10231 4161/4617/10247 4168/4616/10248 +s 1 +f 4161/4609/10234 4162/4610/10233 4170/4619/10249 4169/4618/10250 +s 2 +f 4162/4610/10236 4163/4611/10235 4171/4620/10251 4170/4619/10252 +s 3 +f 4163/4611/10238 4164/4612/10237 4172/4621/10253 4171/4620/10254 +s 4 +f 4164/4612/10240 4165/4613/10239 4173/4622/10255 4172/4621/10256 +s 5 +f 4165/4613/10242 4166/4614/10241 4174/4623/10257 4173/4622/10258 +s 6 +f 4166/4614/10244 4167/4615/10243 4175/4624/10259 4174/4623/10260 +s 7 +f 4167/4615/10246 4168/4616/10245 4176/4625/10261 4175/4624/10262 +s 8 +f 4168/4616/10248 4161/4617/10247 4169/4626/10263 4176/4625/10264 +s 1 +f 4169/4618/10250 4170/4619/10249 4178/4628/10265 4177/4627/10266 +s 2 +f 4170/4619/10252 4171/4620/10251 4179/4629/10267 4178/4628/10268 +s 3 +f 4171/4620/10254 4172/4621/10253 4180/4630/10269 4179/4629/10270 +s 4 +f 4172/4621/10256 4173/4622/10255 4181/4631/10271 4180/4630/10272 +s 5 +f 4173/4622/10258 4174/4623/10257 4182/4632/10273 4181/4631/10274 +s 6 +f 4174/4623/10260 4175/4624/10259 4183/4633/10275 4182/4632/10276 +s 7 +f 4175/4624/10262 4176/4625/10261 4184/4634/10277 4183/4633/10278 +s 8 +f 4176/4625/10264 4169/4626/10263 4177/4635/10279 4184/4634/10280 +s 1 +f 4177/4627/10266 4178/4628/10265 4186/4637/10281 4185/4636/10282 +s 2 +f 4178/4628/10268 4179/4629/10267 4187/4638/10283 4186/4637/10284 +s 3 +f 4179/4629/10270 4180/4630/10269 4188/4639/10285 4187/4638/10286 +s 4 +f 4180/4630/10272 4181/4631/10271 4189/4640/10287 4188/4639/10288 +s 5 +f 4181/4631/10274 4182/4632/10273 4190/4641/10289 4189/4640/10290 +s 6 +f 4182/4632/10276 4183/4633/10275 4191/4642/10291 4190/4641/10292 +s 7 +f 4183/4633/10278 4184/4634/10277 4192/4643/10293 4191/4642/10294 +s 8 +f 4184/4634/10280 4177/4635/10279 4185/4644/10295 4192/4643/10296 +s 1 +f 4185/4636/10282 4186/4637/10281 4194/4646/10297 4193/4645/10298 +s 2 +f 4186/4637/10284 4187/4638/10283 4195/4647/10299 4194/4646/10300 +s 3 +f 4187/4638/10286 4188/4639/10285 4196/4648/10301 4195/4647/10302 +s 4 +f 4188/4639/10288 4189/4640/10287 4197/4649/10303 4196/4648/10304 +s 5 +f 4189/4640/10290 4190/4641/10289 4198/4650/10305 4197/4649/10306 +s 6 +f 4190/4641/10292 4191/4642/10291 4199/4651/10307 4198/4650/10308 +s 7 +f 4191/4642/10294 4192/4643/10293 4200/4652/10309 4199/4651/10310 +s 8 +f 4192/4643/10296 4185/4644/10295 4193/4653/10311 4200/4652/10312 +s 1 +f 4193/4645/10298 4194/4646/10297 4202/4655/10313 4201/4654/10314 +s 2 +f 4194/4646/10300 4195/4647/10299 4203/4656/10315 4202/4655/10316 +s 3 +f 4195/4647/10302 4196/4648/10301 4204/4657/10317 4203/4656/10318 +s 4 +f 4196/4648/10304 4197/4649/10303 4205/4658/10319 4204/4657/10320 +s 5 +f 4197/4649/10306 4198/4650/10305 4206/4659/10321 4205/4658/10322 +s 6 +f 4198/4650/10308 4199/4651/10307 4207/4660/10323 4206/4659/10324 +s 7 +f 4199/4651/10310 4200/4652/10309 4208/4661/10325 4207/4660/10326 +s 8 +f 4200/4652/10312 4193/4653/10311 4201/4662/10327 4208/4661/10328 +s 1 +f 4201/4654/10314 4202/4655/10313 4210/4664/10329 4209/4663/10330 +s 2 +f 4202/4655/10316 4203/4656/10315 4211/4665/10331 4210/4664/10332 +s 3 +f 4203/4656/10318 4204/4657/10317 4212/4666/10333 4211/4665/10334 +s 4 +f 4204/4657/10320 4205/4658/10319 4213/4667/10335 4212/4666/10336 +s 5 +f 4205/4658/10322 4206/4659/10321 4214/4668/10337 4213/4667/10338 +s 6 +f 4206/4659/10324 4207/4660/10323 4215/4669/10339 4214/4668/10340 +s 7 +f 4207/4660/10326 4208/4661/10325 4216/4670/10341 4215/4669/10342 +s 8 +f 4208/4661/10328 4201/4662/10327 4209/4671/10343 4216/4670/10344 +s 1 +f 4209/4663/10330 4210/4664/10329 4218/4673/10345 4217/4672/10346 +s 2 +f 4210/4664/10332 4211/4665/10331 4219/4674/10347 4218/4673/10348 +s 3 +f 4211/4665/10334 4212/4666/10333 4220/4675/10349 4219/4674/10350 +s 4 +f 4212/4666/10336 4213/4667/10335 4221/4676/10351 4220/4675/10352 +s 5 +f 4213/4667/10338 4214/4668/10337 4222/4677/10353 4221/4676/10354 +s 6 +f 4214/4668/10340 4215/4669/10339 4223/4678/10355 4222/4677/10356 +s 7 +f 4215/4669/10342 4216/4670/10341 4224/4679/10357 4223/4678/10358 +s 8 +f 4216/4670/10344 4209/4671/10343 4217/4680/10359 4224/4679/10360 +s 1 +f 4217/4672/10346 4218/4673/10345 4226/4682/10361 4225/4681/10362 +s 2 +f 4218/4673/10348 4219/4674/10347 4227/4683/10363 4226/4682/10364 +s 3 +f 4219/4674/10350 4220/4675/10349 4228/4684/10365 4227/4683/10366 +s 4 +f 4220/4675/10352 4221/4676/10351 4229/4685/10367 4228/4684/10368 +s 5 +f 4221/4676/10354 4222/4677/10353 4230/4686/10369 4229/4685/10370 +s 6 +f 4222/4677/10356 4223/4678/10355 4231/4687/10371 4230/4686/10372 +s 7 +f 4223/4678/10358 4224/4679/10357 4232/4688/10373 4231/4687/10374 +s 8 +f 4224/4679/10360 4217/4680/10359 4225/4689/10375 4232/4688/10376 +s 1 +f 4225/4681/10362 4226/4682/10361 4234/4691/10377 4233/4690/10378 +s 2 +f 4226/4682/10364 4227/4683/10363 4235/4692/10379 4234/4691/10380 +s 3 +f 4227/4683/10366 4228/4684/10365 4236/4693/10381 4235/4692/10382 +s 4 +f 4228/4684/10368 4229/4685/10367 4237/4694/10383 4236/4693/10384 +s 5 +f 4229/4685/10370 4230/4686/10369 4238/4695/10385 4237/4694/10386 +s 6 +f 4230/4686/10372 4231/4687/10371 4239/4696/10387 4238/4695/10388 +s 7 +f 4231/4687/10374 4232/4688/10373 4240/4697/10389 4239/4696/10390 +s 8 +f 4232/4688/10376 4225/4689/10375 4233/4698/10391 4240/4697/10392 +s 1 +f 4233/4690/10378 4234/4691/10377 4242/4700/10393 4241/4699/10394 +s 2 +f 4234/4691/10380 4235/4692/10379 4243/4701/10395 4242/4700/10396 +s 3 +f 4235/4692/10382 4236/4693/10381 4244/4702/10397 4243/4701/10398 +s 4 +f 4236/4693/10384 4237/4694/10383 4245/4703/10399 4244/4702/10400 +s 5 +f 4237/4694/10386 4238/4695/10385 4246/4704/10401 4245/4703/10402 +s 6 +f 4238/4695/10388 4239/4696/10387 4247/4705/10403 4246/4704/10404 +s 7 +f 4239/4696/10390 4240/4697/10389 4248/4706/10405 4247/4705/10406 +s 8 +f 4240/4697/10392 4233/4698/10391 4241/4707/10407 4248/4706/10408 +s 1 +f 4241/4699/10394 4242/4700/10393 4250/4709/10409 4249/4708/10410 +s 2 +f 4242/4700/10396 4243/4701/10395 4251/4710/10411 4250/4709/10412 +s 3 +f 4243/4701/10398 4244/4702/10397 4252/4711/10413 4251/4710/10414 +s 4 +f 4244/4702/10400 4245/4703/10399 4253/4712/10415 4252/4711/10416 +s 5 +f 4245/4703/10402 4246/4704/10401 4254/4713/10417 4253/4712/10418 +s 6 +f 4246/4704/10404 4247/4705/10403 4255/4714/10419 4254/4713/10420 +s 7 +f 4247/4705/10406 4248/4706/10405 4256/4715/10421 4255/4714/10422 +s 8 +f 4248/4706/10408 4241/4707/10407 4249/4716/10423 4256/4715/10424 +s 1 +f 4249/4708/10410 4250/4709/10409 4258/4718/10425 4257/4717/10426 +s 2 +f 4250/4709/10412 4251/4710/10411 4259/4719/10427 4258/4718/10428 +s 3 +f 4251/4710/10414 4252/4711/10413 4260/4720/10429 4259/4719/10430 +s 4 +f 4252/4711/10416 4253/4712/10415 4261/4721/10431 4260/4720/10432 +s 5 +f 4253/4712/10418 4254/4713/10417 4262/4722/10433 4261/4721/10434 +s 6 +f 4254/4713/10420 4255/4714/10419 4263/4723/10435 4262/4722/10436 +s 7 +f 4255/4714/10422 4256/4715/10421 4264/4724/10437 4263/4723/10438 +s 8 +f 4256/4715/10424 4249/4716/10423 4257/4725/10439 4264/4724/10440 +s 1 +f 4257/4717/10426 4258/4718/10425 4266/4727/10441 4265/4726/10442 +s 2 +f 4258/4718/10428 4259/4719/10427 4267/4728/10443 4266/4727/10444 +s 3 +f 4259/4719/10430 4260/4720/10429 4268/4729/10445 4267/4728/10446 +s 4 +f 4260/4720/10432 4261/4721/10431 4269/4730/10447 4268/4729/10448 +s 5 +f 4261/4721/10434 4262/4722/10433 4270/4731/10449 4269/4730/10450 +s 6 +f 4262/4722/10436 4263/4723/10435 4271/4732/10451 4270/4731/10452 +s 7 +f 4263/4723/10438 4264/4724/10437 4272/4733/10453 4271/4732/10454 +s 8 +f 4264/4724/10440 4257/4725/10439 4265/4734/10455 4272/4733/10456 +s 1 +f 4265/4726/10442 4266/4727/10441 4274/4736/10457 4273/4735/10458 +s 2 +f 4266/4727/10444 4267/4728/10443 4275/4737/10459 4274/4736/10460 +s 3 +f 4267/4728/10446 4268/4729/10445 4276/4738/10461 4275/4737/10462 +s 4 +f 4268/4729/10448 4269/4730/10447 4277/4739/10463 4276/4738/10464 +s 5 +f 4269/4730/10450 4270/4731/10449 4278/4740/10465 4277/4739/10466 +s 6 +f 4270/4731/10452 4271/4732/10451 4279/4741/10467 4278/4740/10468 +s 7 +f 4271/4732/10454 4272/4733/10453 4280/4742/10469 4279/4741/10470 +s 8 +f 4272/4733/10456 4265/4734/10455 4273/4743/10471 4280/4742/10472 +s 1 +f 4273/4735/10458 4274/4736/10457 4282/4745/10473 4281/4744/10474 +s 2 +f 4274/4736/10460 4275/4737/10459 4283/4746/10475 4282/4745/10476 +s 3 +f 4275/4737/10462 4276/4738/10461 4284/4747/10477 4283/4746/10478 +s 4 +f 4276/4738/10464 4277/4739/10463 4285/4748/10479 4284/4747/10480 +s 5 +f 4277/4739/10466 4278/4740/10465 4286/4749/10481 4285/4748/10482 +s 6 +f 4278/4740/10468 4279/4741/10467 4287/4750/10483 4286/4749/10484 +s 7 +f 4279/4741/10470 4280/4742/10469 4288/4751/10485 4287/4750/10486 +s 8 +f 4280/4742/10472 4273/4743/10471 4281/4752/10487 4288/4751/10488 +s 1 +f 4281/4744/10474 4282/4745/10473 4290/4754/10489 4289/4753/10490 +s 2 +f 4282/4745/10476 4283/4746/10475 4291/4755/10491 4290/4754/10492 +s 3 +f 4283/4746/10478 4284/4747/10477 4292/4756/10493 4291/4755/10494 +s 4 +f 4284/4747/10480 4285/4748/10479 4293/4757/10495 4292/4756/10496 +s 5 +f 4285/4748/10482 4286/4749/10481 4294/4758/10497 4293/4757/10498 +s 6 +f 4286/4749/10484 4287/4750/10483 4295/4759/10499 4294/4758/10500 +s 7 +f 4287/4750/10486 4288/4751/10485 4296/4760/10501 4295/4759/10502 +s 8 +f 4288/4751/10488 4281/4752/10487 4289/4761/10503 4296/4760/10504 +s 1 +f 4289/4753/10490 4290/4754/10489 4298/4763/10505 4297/4762/10506 +s 2 +f 4290/4754/10492 4291/4755/10491 4299/4764/10507 4298/4763/10508 +s 3 +f 4291/4755/10494 4292/4756/10493 4300/4765/10509 4299/4764/10510 +s 4 +f 4292/4756/10496 4293/4757/10495 4301/4766/10511 4300/4765/10512 +s 5 +f 4293/4757/10498 4294/4758/10497 4302/4767/10513 4301/4766/10514 +s 6 +f 4294/4758/10500 4295/4759/10499 4303/4768/10515 4302/4767/10516 +s 7 +f 4295/4759/10502 4296/4760/10501 4304/4769/10517 4303/4768/10518 +s 8 +f 4296/4760/10504 4289/4761/10503 4297/4770/10519 4304/4769/10520 +s 1 +f 4297/4762/10506 4298/4763/10505 4306/4772/10521 4305/4771/10522 +s 2 +f 4298/4763/10508 4299/4764/10507 4307/4773/10523 4306/4772/10524 +s 3 +f 4299/4764/10510 4300/4765/10509 4308/4774/10525 4307/4773/10526 +s 4 +f 4300/4765/10512 4301/4766/10511 4309/4775/10527 4308/4774/10528 +s 5 +f 4301/4766/10514 4302/4767/10513 4310/4776/10529 4309/4775/10530 +s 6 +f 4302/4767/10516 4303/4768/10515 4311/4777/10531 4310/4776/10532 +s 7 +f 4303/4768/10518 4304/4769/10517 4312/4778/10533 4311/4777/10534 +s 8 +f 4304/4769/10520 4297/4770/10519 4305/4779/10535 4312/4778/10536 +s 1 +f 4305/4771/10522 4306/4772/10521 4314/4781/10537 4313/4780/10538 +s 2 +f 4306/4772/10524 4307/4773/10523 4315/4782/10539 4314/4781/10540 +s 3 +f 4307/4773/10526 4308/4774/10525 4316/4783/10541 4315/4782/10542 +s 4 +f 4308/4774/10528 4309/4775/10527 4317/4784/10543 4316/4783/10544 +s 5 +f 4309/4775/10530 4310/4776/10529 4318/4785/10545 4317/4784/10546 +s 6 +f 4310/4776/10532 4311/4777/10531 4319/4786/10547 4318/4785/10548 +s 7 +f 4311/4777/10534 4312/4778/10533 4320/4787/10549 4319/4786/10550 +s 8 +f 4312/4778/10536 4305/4779/10535 4313/4788/10551 4320/4787/10552 +s 1 +f 4313/4780/10538 4314/4781/10537 4322/4790/10553 4321/4789/10554 +s 2 +f 4314/4781/10540 4315/4782/10539 4323/4791/10555 4322/4790/10556 +s 3 +f 4315/4782/10542 4316/4783/10541 4324/4792/10557 4323/4791/10558 +s 4 +f 4316/4783/10544 4317/4784/10543 4325/4793/10559 4324/4792/10560 +s 5 +f 4317/4784/10546 4318/4785/10545 4326/4794/10561 4325/4793/10562 +s 6 +f 4318/4785/10548 4319/4786/10547 4327/4795/10563 4326/4794/10564 +s 7 +f 4319/4786/10550 4320/4787/10549 4328/4796/10565 4327/4795/10566 +s 8 +f 4320/4787/10552 4313/4788/10551 4321/4797/10567 4328/4796/10568 +s 1 +f 4321/4789/10554 4322/4790/10553 4330/4799/10569 4329/4798/10570 +s 2 +f 4322/4790/10556 4323/4791/10555 4331/4800/10571 4330/4799/10572 +s 3 +f 4323/4791/10558 4324/4792/10557 4332/4801/10573 4331/4800/10574 +s 4 +f 4324/4792/10560 4325/4793/10559 4333/4802/10575 4332/4801/10576 +s 5 +f 4325/4793/10562 4326/4794/10561 4334/4803/10577 4333/4802/10578 +s 6 +f 4326/4794/10564 4327/4795/10563 4335/4804/10579 4334/4803/10580 +s 7 +f 4327/4795/10566 4328/4796/10565 4336/4805/10581 4335/4804/10582 +s 8 +f 4328/4796/10568 4321/4797/10567 4329/4806/10583 4336/4805/10584 +s 1 +f 4329/4798/10570 4330/4799/10569 4338/4808/10585 4337/4807/10586 +s 2 +f 4330/4799/10572 4331/4800/10571 4339/4809/10587 4338/4808/10588 +s 3 +f 4331/4800/10574 4332/4801/10573 4340/4810/10589 4339/4809/10590 +s 4 +f 4332/4801/10576 4333/4802/10575 4341/4811/10591 4340/4810/10592 +s 5 +f 4333/4802/10578 4334/4803/10577 4342/4812/10593 4341/4811/10594 +s 6 +f 4334/4803/10580 4335/4804/10579 4343/4813/10595 4342/4812/10596 +s 7 +f 4335/4804/10582 4336/4805/10581 4344/4814/10597 4343/4813/10598 +s 8 +f 4336/4805/10584 4329/4806/10583 4337/4815/10599 4344/4814/10600 +s 1 +f 4337/4807/10586 4338/4808/10585 4346/4817/10601 4345/4816/10602 +s 2 +f 4338/4808/10588 4339/4809/10587 4347/4818/10603 4346/4817/10604 +s 3 +f 4339/4809/10590 4340/4810/10589 4348/4819/10605 4347/4818/10606 +s 4 +f 4340/4810/10592 4341/4811/10591 4349/4820/10607 4348/4819/10608 +s 5 +f 4341/4811/10594 4342/4812/10593 4350/4821/10609 4349/4820/10610 +s 6 +f 4342/4812/10596 4343/4813/10595 4351/4822/10611 4350/4821/10612 +s 7 +f 4343/4813/10598 4344/4814/10597 4352/4823/10613 4351/4822/10614 +s 8 +f 4344/4814/10600 4337/4815/10599 4345/4824/10615 4352/4823/10616 +s 1 +f 4345/4816/10602 4346/4817/10601 4354/4826/10617 4353/4825/10618 +s 2 +f 4346/4817/10604 4347/4818/10603 4355/4827/10619 4354/4826/10620 +s 3 +f 4347/4818/10606 4348/4819/10605 4356/4828/10621 4355/4827/10622 +s 4 +f 4348/4819/10608 4349/4820/10607 4357/4829/10623 4356/4828/10624 +s 5 +f 4349/4820/10610 4350/4821/10609 4358/4830/10625 4357/4829/10626 +s 6 +f 4350/4821/10612 4351/4822/10611 4359/4831/10627 4358/4830/10628 +s 7 +f 4351/4822/10614 4352/4823/10613 4360/4832/10629 4359/4831/10630 +s 8 +f 4352/4823/10616 4345/4824/10615 4353/4833/10631 4360/4832/10632 +s 1 +f 4353/4825/10618 4354/4826/10617 4362/4835/10633 4361/4834/10634 +s 2 +f 4354/4826/10620 4355/4827/10619 4363/4836/10635 4362/4835/10636 +s 3 +f 4355/4827/10622 4356/4828/10621 4364/4837/10637 4363/4836/10638 +s 4 +f 4356/4828/10624 4357/4829/10623 4365/4838/10639 4364/4837/10640 +s 5 +f 4357/4829/10626 4358/4830/10625 4366/4839/10641 4365/4838/10642 +s 6 +f 4358/4830/10628 4359/4831/10627 4367/4840/10643 4366/4839/10644 +s 7 +f 4359/4831/10630 4360/4832/10629 4368/4841/10645 4367/4840/10646 +s 8 +f 4360/4832/10632 4353/4833/10631 4361/4842/10647 4368/4841/10648 +s 1 +f 4361/4834/10634 4362/4835/10633 4370/4844/10649 4369/4843/10650 +s 2 +f 4362/4835/10636 4363/4836/10635 4371/4845/10651 4370/4844/10652 +s 3 +f 4363/4836/10638 4364/4837/10637 4372/4846/10653 4371/4845/10654 +s 4 +f 4364/4837/10640 4365/4838/10639 4373/4847/10655 4372/4846/10656 +s 5 +f 4365/4838/10642 4366/4839/10641 4374/4848/10657 4373/4847/10658 +s 6 +f 4366/4839/10644 4367/4840/10643 4375/4849/10659 4374/4848/10660 +s 7 +f 4367/4840/10646 4368/4841/10645 4376/4850/10661 4375/4849/10662 +s 8 +f 4368/4841/10648 4361/4842/10647 4369/4851/10663 4376/4850/10664 +s 1 +f 4369/4843/10650 4370/4844/10649 4378/4853/10665 4377/4852/10666 +s 2 +f 4370/4844/10652 4371/4845/10651 4379/4854/10667 4378/4853/10668 +s 3 +f 4371/4845/10654 4372/4846/10653 4380/4855/10669 4379/4854/10670 +s 4 +f 4372/4846/10656 4373/4847/10655 4381/4856/10671 4380/4855/10672 +s 5 +f 4373/4847/10658 4374/4848/10657 4382/4857/10673 4381/4856/10674 +s 6 +f 4374/4848/10660 4375/4849/10659 4383/4858/10675 4382/4857/10676 +s 7 +f 4375/4849/10662 4376/4850/10661 4384/4859/10677 4383/4858/10678 +s 8 +f 4376/4850/10664 4369/4851/10663 4377/4860/10679 4384/4859/10680 +s 1 +f 4377/4852/10666 4378/4853/10665 4386/4862/10681 4385/4861/10682 +s 2 +f 4378/4853/10668 4379/4854/10667 4387/4863/10683 4386/4862/10684 +s 3 +f 4379/4854/10670 4380/4855/10669 4388/4864/10685 4387/4863/10686 +s 4 +f 4380/4855/10672 4381/4856/10671 4389/4865/10687 4388/4864/10688 +s 5 +f 4381/4856/10674 4382/4857/10673 4390/4866/10689 4389/4865/10690 +s 6 +f 4382/4857/10676 4383/4858/10675 4391/4867/10691 4390/4866/10692 +s 7 +f 4383/4858/10678 4384/4859/10677 4392/4868/10693 4391/4867/10694 +s 8 +f 4384/4859/10680 4377/4860/10679 4385/4869/10695 4392/4868/10696 +s 1 +f 4385/4861/10682 4386/4862/10681 4394/4871/10697 4393/4870/10698 +s 2 +f 4386/4862/10684 4387/4863/10683 4395/4872/10699 4394/4871/10700 +s 3 +f 4387/4863/10686 4388/4864/10685 4396/4873/10701 4395/4872/10702 +s 4 +f 4388/4864/10688 4389/4865/10687 4397/4874/10703 4396/4873/10704 +s 5 +f 4389/4865/10690 4390/4866/10689 4398/4875/10705 4397/4874/10706 +s 6 +f 4390/4866/10692 4391/4867/10691 4399/4876/10707 4398/4875/10708 +s 7 +f 4391/4867/10694 4392/4868/10693 4400/4877/10709 4399/4876/10710 +s 8 +f 4392/4868/10696 4385/4869/10695 4393/4878/10711 4400/4877/10712 +s 1 +f 4393/4870/10698 4394/4871/10697 4402/4880/10713 4401/4879/10714 +s 2 +f 4394/4871/10700 4395/4872/10699 4403/4881/10715 4402/4880/10716 +s 3 +f 4395/4872/10702 4396/4873/10701 4404/4882/10717 4403/4881/10718 +s 4 +f 4396/4873/10704 4397/4874/10703 4405/4883/10719 4404/4882/10720 +s 5 +f 4397/4874/10706 4398/4875/10705 4406/4884/10721 4405/4883/10722 +s 6 +f 4398/4875/10708 4399/4876/10707 4407/4885/10723 4406/4884/10724 +s 7 +f 4399/4876/10710 4400/4877/10709 4408/4886/10725 4407/4885/10726 +s 8 +f 4400/4877/10712 4393/4878/10711 4401/4887/10727 4408/4886/10728 +s 1 +f 4401/4879/10714 4402/4880/10713 4410/4889/10729 4409/4888/10730 +s 2 +f 4402/4880/10716 4403/4881/10715 4411/4890/10731 4410/4889/10732 +s 3 +f 4403/4881/10718 4404/4882/10717 4412/4891/10733 4411/4890/10734 +s 4 +f 4404/4882/10720 4405/4883/10719 4413/4892/10735 4412/4891/10736 +s 5 +f 4405/4883/10722 4406/4884/10721 4414/4893/10737 4413/4892/10738 +s 6 +f 4406/4884/10724 4407/4885/10723 4415/4894/10739 4414/4893/10740 +s 7 +f 4407/4885/10726 4408/4886/10725 4416/4895/10741 4415/4894/10742 +s 8 +f 4408/4886/10728 4401/4887/10727 4409/4896/10743 4416/4895/10744 +s 1 +f 4409/4888/10730 4410/4889/10729 4418/4898/10745 4417/4897/10746 +s 2 +f 4410/4889/10732 4411/4890/10731 4419/4899/10747 4418/4898/10748 +s 3 +f 4411/4890/10734 4412/4891/10733 4420/4900/10749 4419/4899/10750 +s 4 +f 4412/4891/10736 4413/4892/10735 4421/4901/10751 4420/4900/10752 +s 5 +f 4413/4892/10738 4414/4893/10737 4422/4902/10753 4421/4901/10754 +s 6 +f 4414/4893/10740 4415/4894/10739 4423/4903/10755 4422/4902/10756 +s 7 +f 4415/4894/10742 4416/4895/10741 4424/4904/10757 4423/4903/10758 +s 8 +f 4416/4895/10744 4409/4896/10743 4417/4905/10759 4424/4904/10760 +s 1 +f 4417/4897/10746 4418/4898/10745 4426/4907/10761 4425/4906/10762 +s 2 +f 4418/4898/10748 4419/4899/10747 4427/4908/10763 4426/4907/10764 +s 3 +f 4419/4899/10750 4420/4900/10749 4428/4909/10765 4427/4908/10766 +s 4 +f 4420/4900/10752 4421/4901/10751 4429/4910/10767 4428/4909/10768 +s 5 +f 4421/4901/10754 4422/4902/10753 4430/4911/10769 4429/4910/10770 +s 6 +f 4422/4902/10756 4423/4903/10755 4431/4912/10771 4430/4911/10772 +s 7 +f 4423/4903/10758 4424/4904/10757 4432/4913/10773 4431/4912/10774 +s 8 +f 4424/4904/10760 4417/4905/10759 4425/4914/10775 4432/4913/10776 +s 1 +f 4425/4906/10762 4426/4907/10761 4434/4916/10777 4433/4915/10778 +s 2 +f 4426/4907/10764 4427/4908/10763 4435/4917/10779 4434/4916/10780 +s 3 +f 4427/4908/10766 4428/4909/10765 4436/4918/10781 4435/4917/10782 +s 4 +f 4428/4909/10768 4429/4910/10767 4437/4919/10783 4436/4918/10784 +s 5 +f 4429/4910/10770 4430/4911/10769 4438/4920/10785 4437/4919/10786 +s 6 +f 4430/4911/10772 4431/4912/10771 4439/4921/10787 4438/4920/10788 +s 7 +f 4431/4912/10774 4432/4913/10773 4440/4922/10789 4439/4921/10790 +s 8 +f 4432/4913/10776 4425/4914/10775 4433/4923/10791 4440/4922/10792 +s 1 +f 4433/4915/10778 4434/4916/10777 4442/4925/10793 4441/4924/10794 +s 2 +f 4434/4916/10780 4435/4917/10779 4443/4926/10795 4442/4925/10796 +s 3 +f 4435/4917/10782 4436/4918/10781 4444/4927/10797 4443/4926/10798 +s 4 +f 4436/4918/10784 4437/4919/10783 4445/4928/10799 4444/4927/10800 +s 5 +f 4437/4919/10786 4438/4920/10785 4446/4929/10801 4445/4928/10802 +s 6 +f 4438/4920/10788 4439/4921/10787 4447/4930/10803 4446/4929/10804 +s 7 +f 4439/4921/10790 4440/4922/10789 4448/4931/10805 4447/4930/10806 +s 8 +f 4440/4922/10792 4433/4923/10791 4441/4932/10807 4448/4931/10808 +s 1 +f 4441/4924/10794 4442/4925/10793 4450/4934/10809 4449/4933/10810 +s 2 +f 4442/4925/10796 4443/4926/10795 4451/4935/10811 4450/4934/10812 +s 3 +f 4443/4926/10798 4444/4927/10797 4452/4936/10813 4451/4935/10814 +s 4 +f 4444/4927/10800 4445/4928/10799 4453/4937/10815 4452/4936/10816 +s 5 +f 4445/4928/10802 4446/4929/10801 4454/4938/10817 4453/4937/10818 +s 6 +f 4446/4929/10804 4447/4930/10803 4455/4939/10819 4454/4938/10820 +s 7 +f 4447/4930/10806 4448/4931/10805 4456/4940/10821 4455/4939/10822 +s 8 +f 4448/4931/10808 4441/4932/10807 4449/4941/10823 4456/4940/10824 +s 1 +f 4449/4933/10810 4450/4934/10809 4458/4943/10825 4457/4942/10826 +s 2 +f 4450/4934/10812 4451/4935/10811 4459/4944/10827 4458/4943/10828 +s 3 +f 4451/4935/10814 4452/4936/10813 4460/4945/10829 4459/4944/10830 +s 4 +f 4452/4936/10816 4453/4937/10815 4461/4946/10831 4460/4945/10832 +s 5 +f 4453/4937/10818 4454/4938/10817 4462/4947/10833 4461/4946/10834 +s 6 +f 4454/4938/10820 4455/4939/10819 4463/4948/10835 4462/4947/10836 +s 7 +f 4455/4939/10822 4456/4940/10821 4464/4949/10837 4463/4948/10838 +s 8 +f 4456/4940/10824 4449/4941/10823 4457/4950/10839 4464/4949/10840 +s 1 +f 4457/4942/10826 4458/4943/10825 4466/4952/10841 4465/4951/10842 +s 2 +f 4458/4943/10828 4459/4944/10827 4467/4953/10843 4466/4952/10844 +s 3 +f 4459/4944/10830 4460/4945/10829 4468/4954/10845 4467/4953/10846 +s 4 +f 4460/4945/10832 4461/4946/10831 4469/4955/10847 4468/4954/10848 +s 5 +f 4461/4946/10834 4462/4947/10833 4470/4956/10849 4469/4955/10850 +s 6 +f 4462/4947/10836 4463/4948/10835 4471/4957/10851 4470/4956/10852 +s 7 +f 4463/4948/10838 4464/4949/10837 4472/4958/10853 4471/4957/10854 +s 8 +f 4464/4949/10840 4457/4950/10839 4465/4959/10855 4472/4958/10856 +s 1 +f 4465/4951/10842 4466/4952/10841 4474/4961/10857 4473/4960/10858 +s 2 +f 4466/4952/10844 4467/4953/10843 4475/4962/10859 4474/4961/10860 +s 3 +f 4467/4953/10846 4468/4954/10845 4476/4963/10861 4475/4962/10862 +s 4 +f 4468/4954/10848 4469/4955/10847 4477/4964/10863 4476/4963/10864 +s 5 +f 4469/4955/10850 4470/4956/10849 4478/4965/10865 4477/4964/10866 +s 6 +f 4470/4956/10852 4471/4957/10851 4479/4966/10867 4478/4965/10868 +s 7 +f 4471/4957/10854 4472/4958/10853 4480/4967/10869 4479/4966/10870 +s 8 +f 4472/4958/10856 4465/4959/10855 4473/4968/10871 4480/4967/10872 +s 1 +f 4473/4960/10858 4474/4961/10857 4482/4970/10873 4481/4969/10874 +s 2 +f 4474/4961/10860 4475/4962/10859 4483/4971/10875 4482/4970/10876 +s 3 +f 4475/4962/10862 4476/4963/10861 4484/4972/10877 4483/4971/10878 +s 4 +f 4476/4963/10864 4477/4964/10863 4485/4973/10879 4484/4972/10880 +s 5 +f 4477/4964/10866 4478/4965/10865 4486/4974/10881 4485/4973/10882 +s 6 +f 4478/4965/10868 4479/4966/10867 4487/4975/10883 4486/4974/10884 +s 7 +f 4479/4966/10870 4480/4967/10869 4488/4976/10885 4487/4975/10886 +s 8 +f 4480/4967/10872 4473/4968/10871 4481/4977/10887 4488/4976/10888 +s 1 +f 4481/4969/10874 4482/4970/10873 4490/4979/10889 4489/4978/10890 +s 2 +f 4482/4970/10876 4483/4971/10875 4491/4980/10891 4490/4979/10892 +s 3 +f 4483/4971/10878 4484/4972/10877 4492/4981/10893 4491/4980/10894 +s 4 +f 4484/4972/10880 4485/4973/10879 4493/4982/10895 4492/4981/10896 +s 5 +f 4485/4973/10882 4486/4974/10881 4494/4983/10897 4493/4982/10898 +s 6 +f 4486/4974/10884 4487/4975/10883 4495/4984/10899 4494/4983/10900 +s 7 +f 4487/4975/10886 4488/4976/10885 4496/4985/10901 4495/4984/10902 +s 8 +f 4488/4976/10888 4481/4977/10887 4489/4986/10903 4496/4985/10904 +s 1 +f 4489/4978/10890 4490/4979/10889 4498/4988/10905 4497/4987/10906 +s 2 +f 4490/4979/10892 4491/4980/10891 4499/4989/10907 4498/4988/10908 +s 3 +f 4491/4980/10894 4492/4981/10893 4500/4990/10909 4499/4989/10910 +s 4 +f 4492/4981/10896 4493/4982/10895 4501/4991/10911 4500/4990/10912 +s 5 +f 4493/4982/10898 4494/4983/10897 4502/4992/10913 4501/4991/10914 +s 6 +f 4494/4983/10900 4495/4984/10899 4503/4993/10915 4502/4992/10916 +s 7 +f 4495/4984/10902 4496/4985/10901 4504/4994/10917 4503/4993/10918 +s 8 +f 4496/4985/10904 4489/4986/10903 4497/4995/10919 4504/4994/10920 +s 1 +f 4497/4987/10906 4498/4988/10905 4506/4997/10921 4505/4996/10922 +s 2 +f 4498/4988/10908 4499/4989/10907 4507/4998/10923 4506/4997/10924 +s 3 +f 4499/4989/10910 4500/4990/10909 4508/4999/10925 4507/4998/10926 +s 4 +f 4500/4990/10912 4501/4991/10911 4509/5000/10927 4508/4999/10928 +s 5 +f 4501/4991/10914 4502/4992/10913 4510/5001/10929 4509/5000/10930 +s 6 +f 4502/4992/10916 4503/4993/10915 4511/5002/10931 4510/5001/10932 +s 7 +f 4503/4993/10918 4504/4994/10917 4512/5003/10933 4511/5002/10934 +s 8 +f 4504/4994/10920 4497/4995/10919 4505/5004/10935 4512/5003/10936 +s 1 +f 4505/4996/10922 4506/4997/10921 4514/5006/10937 4513/5005/10938 +s 2 +f 4506/4997/10924 4507/4998/10923 4515/5007/10939 4514/5006/10940 +s 3 +f 4507/4998/10926 4508/4999/10925 4516/5008/10941 4515/5007/10942 +s 4 +f 4508/4999/10928 4509/5000/10927 4517/5009/10943 4516/5008/10944 +s 5 +f 4509/5000/10930 4510/5001/10929 4518/5010/10945 4517/5009/10946 +s 6 +f 4510/5001/10932 4511/5002/10931 4519/5011/10947 4518/5010/10948 +s 7 +f 4511/5002/10934 4512/5003/10933 4520/5012/10949 4519/5011/10950 +s 8 +f 4512/5003/10936 4505/5004/10935 4513/5013/10951 4520/5012/10952 +s 1 +f 4513/5005/10938 4514/5006/10937 4522/5015/10953 4521/5014/10954 +s 2 +f 4514/5006/10940 4515/5007/10939 4523/5016/10955 4522/5015/10956 +s 3 +f 4515/5007/10942 4516/5008/10941 4524/5017/10957 4523/5016/10958 +s 4 +f 4516/5008/10944 4517/5009/10943 4525/5018/10959 4524/5017/10960 +s 5 +f 4517/5009/10946 4518/5010/10945 4526/5019/10961 4525/5018/10962 +s 6 +f 4518/5010/10948 4519/5011/10947 4527/5020/10963 4526/5019/10964 +s 7 +f 4519/5011/10950 4520/5012/10949 4528/5021/10965 4527/5020/10966 +s 8 +f 4520/5012/10952 4513/5013/10951 4521/5022/10967 4528/5021/10968 +s 1 +f 4521/5014/10954 4522/5015/10953 4530/5024/10969 4529/5023/10970 +s 2 +f 4522/5015/10956 4523/5016/10955 4531/5025/10971 4530/5024/10972 +s 3 +f 4523/5016/10958 4524/5017/10957 4532/5026/10973 4531/5025/10974 +s 4 +f 4524/5017/10960 4525/5018/10959 4533/5027/10975 4532/5026/10976 +s 5 +f 4525/5018/10962 4526/5019/10961 4534/5028/10977 4533/5027/10978 +s 6 +f 4526/5019/10964 4527/5020/10963 4535/5029/10979 4534/5028/10980 +s 7 +f 4527/5020/10966 4528/5021/10965 4536/5030/10981 4535/5029/10982 +s 8 +f 4528/5021/10968 4521/5022/10967 4529/5031/10983 4536/5030/10984 +s 1 +f 4529/5023/10970 4530/5024/10969 4538/5033/10985 4537/5032/10986 +s 2 +f 4530/5024/10972 4531/5025/10971 4539/5034/10987 4538/5033/10988 +s 3 +f 4531/5025/10974 4532/5026/10973 4540/5035/10989 4539/5034/10990 +s 4 +f 4532/5026/10976 4533/5027/10975 4541/5036/10991 4540/5035/10992 +s 5 +f 4533/5027/10978 4534/5028/10977 4542/5037/10993 4541/5036/10994 +s 6 +f 4534/5028/10980 4535/5029/10979 4543/5038/10995 4542/5037/10996 +s 7 +f 4535/5029/10982 4536/5030/10981 4544/5039/10997 4543/5038/10998 +s 8 +f 4536/5030/10984 4529/5031/10983 4537/5040/10999 4544/5039/11000 +s 1 +f 4537/5032/10986 4538/5033/10985 4546/5042/11001 4545/5041/11002 +s 2 +f 4538/5033/10988 4539/5034/10987 4547/5043/11003 4546/5042/11004 +s 3 +f 4539/5034/10990 4540/5035/10989 4548/5044/11005 4547/5043/11006 +s 4 +f 4540/5035/10992 4541/5036/10991 4549/5045/11007 4548/5044/11008 +s 5 +f 4541/5036/10994 4542/5037/10993 4550/5046/11009 4549/5045/11010 +s 6 +f 4542/5037/10996 4543/5038/10995 4551/5047/11011 4550/5046/11012 +s 7 +f 4543/5038/10998 4544/5039/10997 4552/5048/11013 4551/5047/11014 +s 8 +f 4544/5039/11000 4537/5040/10999 4545/5049/11015 4552/5048/11016 +s 1 +f 4545/5041/11002 4546/5042/11001 4554/5051/11017 4553/5050/11018 +s 2 +f 4546/5042/11004 4547/5043/11003 4555/5052/11019 4554/5051/11020 +s 3 +f 4547/5043/11006 4548/5044/11005 4556/5053/11021 4555/5052/11022 +s 4 +f 4548/5044/11008 4549/5045/11007 4557/5054/11023 4556/5053/11024 +s 5 +f 4549/5045/11010 4550/5046/11009 4558/5055/11025 4557/5054/11026 +s 6 +f 4550/5046/11012 4551/5047/11011 4559/5056/11027 4558/5055/11028 +s 7 +f 4551/5047/11014 4552/5048/11013 4560/5057/11029 4559/5056/11030 +s 8 +f 4552/5048/11016 4545/5049/11015 4553/5058/11031 4560/5057/11032 +s 1 +f 4553/5050/11018 4554/5051/11017 4562/5060/11033 4561/5059/11034 +s 2 +f 4554/5051/11020 4555/5052/11019 4563/5061/11035 4562/5060/11036 +s 3 +f 4555/5052/11022 4556/5053/11021 4564/5062/11037 4563/5061/11038 +s 4 +f 4556/5053/11024 4557/5054/11023 4565/5063/11039 4564/5062/11040 +s 5 +f 4557/5054/11026 4558/5055/11025 4566/5064/11041 4565/5063/11042 +s 6 +f 4558/5055/11028 4559/5056/11027 4567/5065/11043 4566/5064/11044 +s 7 +f 4559/5056/11030 4560/5057/11029 4568/5066/11045 4567/5065/11046 +s 8 +f 4560/5057/11032 4553/5058/11031 4561/5067/11047 4568/5066/11048 +s 1 +f 4561/5059/11034 4562/5060/11033 4570/5069/11049 4569/5068/11050 +s 2 +f 4562/5060/11036 4563/5061/11035 4571/5070/11051 4570/5069/11052 +s 3 +f 4563/5061/11038 4564/5062/11037 4572/5071/11053 4571/5070/11054 +s 4 +f 4564/5062/11040 4565/5063/11039 4573/5072/11055 4572/5071/11056 +s 5 +f 4565/5063/11042 4566/5064/11041 4574/5073/11057 4573/5072/11058 +s 6 +f 4566/5064/11044 4567/5065/11043 4575/5074/11059 4574/5073/11060 +s 7 +f 4567/5065/11046 4568/5066/11045 4576/5075/11061 4575/5074/11062 +s 8 +f 4568/5066/11048 4561/5067/11047 4569/5076/11063 4576/5075/11064 +s 1 +f 4569/5068/11050 4570/5069/11049 4578/5078/11065 4577/5077/11066 +s 2 +f 4570/5069/11052 4571/5070/11051 4579/5079/11067 4578/5078/11068 +s 3 +f 4571/5070/11054 4572/5071/11053 4580/5080/11069 4579/5079/11070 +s 4 +f 4572/5071/11056 4573/5072/11055 4581/5081/11071 4580/5080/11072 +s 5 +f 4573/5072/11058 4574/5073/11057 4582/5082/11073 4581/5081/11074 +s 6 +f 4574/5073/11060 4575/5074/11059 4583/5083/11075 4582/5082/11076 +s 7 +f 4575/5074/11062 4576/5075/11061 4584/5084/11077 4583/5083/11078 +s 8 +f 4576/5075/11064 4569/5076/11063 4577/5085/11079 4584/5084/11080 +s 1 +f 4577/5077/11066 4578/5078/11065 4586/5087/11081 4585/5086/11082 +s 2 +f 4578/5078/11068 4579/5079/11067 4587/5088/11083 4586/5087/11084 +s 3 +f 4579/5079/11070 4580/5080/11069 4588/5089/11085 4587/5088/11086 +s 4 +f 4580/5080/11072 4581/5081/11071 4589/5090/11087 4588/5089/11088 +s 5 +f 4581/5081/11074 4582/5082/11073 4590/5091/11089 4589/5090/11090 +s 6 +f 4582/5082/11076 4583/5083/11075 4591/5092/11091 4590/5091/11092 +s 7 +f 4583/5083/11078 4584/5084/11077 4592/5093/11093 4591/5092/11094 +s 8 +f 4584/5084/11080 4577/5085/11079 4585/5094/11095 4592/5093/11096 +s 1 +f 4585/5086/11082 4586/5087/11081 4594/5096/11097 4593/5095/11098 +s 2 +f 4586/5087/11084 4587/5088/11083 4595/5097/11099 4594/5096/11100 +s 3 +f 4587/5088/11086 4588/5089/11085 4596/5098/11101 4595/5097/11102 +s 4 +f 4588/5089/11088 4589/5090/11087 4597/5099/11103 4596/5098/11104 +s 5 +f 4589/5090/11090 4590/5091/11089 4598/5100/11105 4597/5099/11106 +s 6 +f 4590/5091/11092 4591/5092/11091 4599/5101/11107 4598/5100/11108 +s 7 +f 4591/5092/11094 4592/5093/11093 4600/5102/11109 4599/5101/11110 +s 8 +f 4592/5093/11096 4585/5094/11095 4593/5103/11111 4600/5102/11112 +s 1 +f 4593/5095/11098 4594/5096/11097 4602/5105/11113 4601/5104/11114 +s 2 +f 4594/5096/11100 4595/5097/11099 4603/5106/11115 4602/5105/11116 +s 3 +f 4595/5097/11102 4596/5098/11101 4604/5107/11117 4603/5106/11118 +s 4 +f 4596/5098/11104 4597/5099/11103 4605/5108/11119 4604/5107/11120 +s 5 +f 4597/5099/11106 4598/5100/11105 4606/5109/11121 4605/5108/11122 +s 6 +f 4598/5100/11108 4599/5101/11107 4607/5110/11123 4606/5109/11124 +s 7 +f 4599/5101/11110 4600/5102/11109 4608/5111/11125 4607/5110/11126 +s 8 +f 4600/5102/11112 4593/5103/11111 4601/5112/11127 4608/5111/11128 +s 1 +f 4601/5104/11114 4602/5105/11113 4610/5114/11129 4609/5113/11130 +s 2 +f 4602/5105/11116 4603/5106/11115 4611/5115/11131 4610/5114/11132 +s 3 +f 4603/5106/11118 4604/5107/11117 4612/5116/11133 4611/5115/11134 +s 4 +f 4604/5107/11120 4605/5108/11119 4613/5117/11135 4612/5116/11136 +s 5 +f 4605/5108/11122 4606/5109/11121 4614/5118/11137 4613/5117/11138 +s 6 +f 4606/5109/11124 4607/5110/11123 4615/5119/11139 4614/5118/11140 +s 7 +f 4607/5110/11126 4608/5111/11125 4616/5120/11141 4615/5119/11142 +s 8 +f 4608/5111/11128 4601/5112/11127 4609/5121/11143 4616/5120/11144 +s 1 +f 4609/5113/11130 4610/5114/11129 4618/5123/11145 4617/5122/11146 +s 2 +f 4610/5114/11132 4611/5115/11131 4619/5124/11147 4618/5123/11148 +s 3 +f 4611/5115/11134 4612/5116/11133 4620/5125/11149 4619/5124/11150 +s 4 +f 4612/5116/11136 4613/5117/11135 4621/5126/11151 4620/5125/11152 +s 5 +f 4613/5117/11138 4614/5118/11137 4622/5127/11153 4621/5126/11154 +s 6 +f 4614/5118/11140 4615/5119/11139 4623/5128/11155 4622/5127/11156 +s 7 +f 4615/5119/11142 4616/5120/11141 4624/5129/11157 4623/5128/11158 +s 8 +f 4616/5120/11144 4609/5121/11143 4617/5130/11159 4624/5129/11160 +s 1 +f 4617/5122/11146 4618/5123/11145 4626/5132/11161 4625/5131/11162 +s 2 +f 4618/5123/11148 4619/5124/11147 4627/5133/11163 4626/5132/11164 +s 3 +f 4619/5124/11150 4620/5125/11149 4628/5134/11165 4627/5133/11166 +s 4 +f 4620/5125/11152 4621/5126/11151 4629/5135/11167 4628/5134/11168 +s 5 +f 4621/5126/11154 4622/5127/11153 4630/5136/11169 4629/5135/11170 +s 6 +f 4622/5127/11156 4623/5128/11155 4631/5137/11171 4630/5136/11172 +s 7 +f 4623/5128/11158 4624/5129/11157 4632/5138/11173 4631/5137/11174 +s 8 +f 4624/5129/11160 4617/5130/11159 4625/5139/11175 4632/5138/11176 +s 1 +f 4625/5131/11162 4626/5132/11161 4634/5141/11177 4633/5140/11178 +s 2 +f 4626/5132/11164 4627/5133/11163 4635/5142/11179 4634/5141/11180 +s 3 +f 4627/5133/11166 4628/5134/11165 4636/5143/11181 4635/5142/11182 +s 4 +f 4628/5134/11168 4629/5135/11167 4637/5144/11183 4636/5143/11184 +s 5 +f 4629/5135/11170 4630/5136/11169 4638/5145/11185 4637/5144/11186 +s 6 +f 4630/5136/11172 4631/5137/11171 4639/5146/11187 4638/5145/11188 +s 7 +f 4631/5137/11174 4632/5138/11173 4640/5147/11189 4639/5146/11190 +s 8 +f 4632/5138/11176 4625/5139/11175 4633/5148/11191 4640/5147/11192 +s 1 +f 4633/5140/11178 4634/5141/11177 4642/5150/11193 4641/5149/11194 +s 2 +f 4634/5141/11180 4635/5142/11179 4643/5151/11195 4642/5150/11196 +s 3 +f 4635/5142/11182 4636/5143/11181 4644/5152/11197 4643/5151/11198 +s 4 +f 4636/5143/11184 4637/5144/11183 4645/5153/11199 4644/5152/11200 +s 5 +f 4637/5144/11186 4638/5145/11185 4646/5154/11201 4645/5153/11202 +s 6 +f 4638/5145/11188 4639/5146/11187 4647/5155/11203 4646/5154/11204 +s 7 +f 4639/5146/11190 4640/5147/11189 4648/5156/11205 4647/5155/11206 +s 8 +f 4640/5147/11192 4633/5148/11191 4641/5157/11207 4648/5156/11208 +s 1 +f 4641/5149/11194 4642/5150/11193 4650/5159/11209 4649/5158/11210 +s 2 +f 4642/5150/11196 4643/5151/11195 4651/5160/11211 4650/5159/11212 +s 3 +f 4643/5151/11198 4644/5152/11197 4652/5161/11213 4651/5160/11214 +s 4 +f 4644/5152/11200 4645/5153/11199 4653/5162/11215 4652/5161/11216 +s 5 +f 4645/5153/11202 4646/5154/11201 4654/5163/11217 4653/5162/11218 +s 6 +f 4646/5154/11204 4647/5155/11203 4655/5164/11219 4654/5163/11220 +s 7 +f 4647/5155/11206 4648/5156/11205 4656/5165/11221 4655/5164/11222 +s 8 +f 4648/5156/11208 4641/5157/11207 4649/5166/11223 4656/5165/11224 +s 1 +f 4649/5158/11210 4650/5159/11209 4658/5168/11225 4657/5167/11226 +s 2 +f 4650/5159/11212 4651/5160/11211 4659/5169/11227 4658/5168/11228 +s 3 +f 4651/5160/11214 4652/5161/11213 4660/5170/11229 4659/5169/11230 +s 4 +f 4652/5161/11216 4653/5162/11215 4661/5171/11231 4660/5170/11232 +s 5 +f 4653/5162/11218 4654/5163/11217 4662/5172/11233 4661/5171/11234 +s 6 +f 4654/5163/11220 4655/5164/11219 4663/5173/11235 4662/5172/11236 +s 7 +f 4655/5164/11222 4656/5165/11221 4664/5174/11237 4663/5173/11238 +s 8 +f 4656/5165/11224 4649/5166/11223 4657/5175/11239 4664/5174/11240 +s 1 +f 4657/5167/11226 4658/5168/11225 4666/5177/11241 4665/5176/11242 +s 2 +f 4658/5168/11228 4659/5169/11227 4667/5178/11243 4666/5177/11244 +s 3 +f 4659/5169/11230 4660/5170/11229 4668/5179/11245 4667/5178/11246 +s 4 +f 4660/5170/11232 4661/5171/11231 4669/5180/11247 4668/5179/11248 +s 5 +f 4661/5171/11234 4662/5172/11233 4670/5181/11249 4669/5180/11250 +s 6 +f 4662/5172/11236 4663/5173/11235 4671/5182/11251 4670/5181/11252 +s 7 +f 4663/5173/11238 4664/5174/11237 4672/5183/11253 4671/5182/11254 +s 8 +f 4664/5174/11240 4657/5175/11239 4665/5184/11255 4672/5183/11256 +s 1 +f 4665/5176/11242 4666/5177/11241 4674/5186/11257 4673/5185/11258 +s 2 +f 4666/5177/11244 4667/5178/11243 4675/5187/11259 4674/5186/11260 +s 3 +f 4667/5178/11246 4668/5179/11245 4676/5188/11261 4675/5187/11262 +s 4 +f 4668/5179/11248 4669/5180/11247 4677/5189/11263 4676/5188/11264 +s 5 +f 4669/5180/11250 4670/5181/11249 4678/5190/11265 4677/5189/11266 +s 6 +f 4670/5181/11252 4671/5182/11251 4679/5191/11267 4678/5190/11268 +s 7 +f 4671/5182/11254 4672/5183/11253 4680/5192/11269 4679/5191/11270 +s 8 +f 4672/5183/11256 4665/5184/11255 4673/5193/11271 4680/5192/11272 +s 1 +f 4673/5185/11258 4674/5186/11257 4682/5195/11273 4681/5194/11274 +s 2 +f 4674/5186/11260 4675/5187/11259 4683/5196/11275 4682/5195/11276 +s 3 +f 4675/5187/11262 4676/5188/11261 4684/5197/11277 4683/5196/11278 +s 4 +f 4676/5188/11264 4677/5189/11263 4685/5198/11279 4684/5197/11280 +s 5 +f 4677/5189/11266 4678/5190/11265 4686/5199/11281 4685/5198/11282 +s 6 +f 4678/5190/11268 4679/5191/11267 4687/5200/11283 4686/5199/11284 +s 7 +f 4679/5191/11270 4680/5192/11269 4688/5201/11285 4687/5200/11286 +s 8 +f 4680/5192/11272 4673/5193/11271 4681/5202/11287 4688/5201/11288 +s 1 +f 4681/5194/11274 4682/5195/11273 4690/5204/11289 4689/5203/11290 +s 2 +f 4682/5195/11276 4683/5196/11275 4691/5205/11291 4690/5204/11292 +s 3 +f 4683/5196/11278 4684/5197/11277 4692/5206/11293 4691/5205/11294 +s 4 +f 4684/5197/11280 4685/5198/11279 4693/5207/11295 4692/5206/11296 +s 5 +f 4685/5198/11282 4686/5199/11281 4694/5208/11297 4693/5207/11298 +s 6 +f 4686/5199/11284 4687/5200/11283 4695/5209/11299 4694/5208/11300 +s 7 +f 4687/5200/11286 4688/5201/11285 4696/5210/11301 4695/5209/11302 +s 8 +f 4688/5201/11288 4681/5202/11287 4689/5211/11303 4696/5210/11304 +s 1 +f 4689/5203/11290 4690/5204/11289 4698/5213/11305 4697/5212/11306 +s 2 +f 4690/5204/11292 4691/5205/11291 4699/5214/11307 4698/5213/11308 +s 3 +f 4691/5205/11294 4692/5206/11293 4700/5215/11309 4699/5214/11310 +s 4 +f 4692/5206/11296 4693/5207/11295 4701/5216/11311 4700/5215/11312 +s 5 +f 4693/5207/11298 4694/5208/11297 4702/5217/11313 4701/5216/11314 +s 6 +f 4694/5208/11300 4695/5209/11299 4703/5218/11315 4702/5217/11316 +s 7 +f 4695/5209/11302 4696/5210/11301 4704/5219/11317 4703/5218/11318 +s 8 +f 4696/5210/11304 4689/5211/11303 4697/5220/11319 4704/5219/11320 +s 1 +f 4697/5212/11306 4698/5213/11305 4706/5222/11321 4705/5221/11322 +s 2 +f 4698/5213/11308 4699/5214/11307 4707/5223/11323 4706/5222/11324 +s 3 +f 4699/5214/11310 4700/5215/11309 4708/5224/11325 4707/5223/11326 +s 4 +f 4700/5215/11312 4701/5216/11311 4709/5225/11327 4708/5224/11328 +s 5 +f 4701/5216/11314 4702/5217/11313 4710/5226/11329 4709/5225/11330 +s 6 +f 4702/5217/11316 4703/5218/11315 4711/5227/11331 4710/5226/11332 +s 7 +f 4703/5218/11318 4704/5219/11317 4712/5228/11333 4711/5227/11334 +s 8 +f 4704/5219/11320 4697/5220/11319 4705/5229/11335 4712/5228/11336 +s 1 +f 4705/5221/11322 4706/5222/11321 4714/5231/11337 4713/5230/11338 +s 2 +f 4706/5222/11324 4707/5223/11323 4715/5232/11339 4714/5231/11340 +s 3 +f 4707/5223/11326 4708/5224/11325 4716/5233/11341 4715/5232/11342 +s 4 +f 4708/5224/11328 4709/5225/11327 4717/5234/11343 4716/5233/11344 +s 5 +f 4709/5225/11330 4710/5226/11329 4718/5235/11345 4717/5234/11346 +s 6 +f 4710/5226/11332 4711/5227/11331 4719/5236/11347 4718/5235/11348 +s 7 +f 4711/5227/11334 4712/5228/11333 4720/5237/11349 4719/5236/11350 +s 8 +f 4712/5228/11336 4705/5229/11335 4713/5238/11351 4720/5237/11352 +s 1 +f 4713/5230/11338 4714/5231/11337 4722/5240/11353 4721/5239/11354 +s 2 +f 4714/5231/11340 4715/5232/11339 4723/5241/11355 4722/5240/11356 +s 3 +f 4715/5232/11342 4716/5233/11341 4724/5242/11357 4723/5241/11358 +s 4 +f 4716/5233/11344 4717/5234/11343 4725/5243/11359 4724/5242/11360 +s 5 +f 4717/5234/11346 4718/5235/11345 4726/5244/11361 4725/5243/11362 +s 6 +f 4718/5235/11348 4719/5236/11347 4727/5245/11363 4726/5244/11364 +s 7 +f 4719/5236/11350 4720/5237/11349 4728/5246/11365 4727/5245/11366 +s 8 +f 4720/5237/11352 4713/5238/11351 4721/5247/11367 4728/5246/11368 +s 1 +f 4721/5239/11354 4722/5240/11353 4730/5249/11369 4729/5248/11370 +s 2 +f 4722/5240/11356 4723/5241/11355 4731/5250/11371 4730/5249/11372 +s 3 +f 4723/5241/11358 4724/5242/11357 4732/5251/11373 4731/5250/11374 +s 4 +f 4724/5242/11360 4725/5243/11359 4733/5252/11375 4732/5251/11376 +s 5 +f 4725/5243/11362 4726/5244/11361 4734/5253/11377 4733/5252/11378 +s 6 +f 4726/5244/11364 4727/5245/11363 4735/5254/11379 4734/5253/11380 +s 7 +f 4727/5245/11366 4728/5246/11365 4736/5255/11381 4735/5254/11382 +s 8 +f 4728/5246/11368 4721/5247/11367 4729/5256/11383 4736/5255/11384 +s 1 +f 4729/5248/11370 4730/5249/11369 4738/5258/11385 4737/5257/11386 +s 2 +f 4730/5249/11372 4731/5250/11371 4739/5259/11387 4738/5258/11388 +s 3 +f 4731/5250/11374 4732/5251/11373 4740/5260/11389 4739/5259/11390 +s 4 +f 4732/5251/11376 4733/5252/11375 4741/5261/11391 4740/5260/11392 +s 5 +f 4733/5252/11378 4734/5253/11377 4742/5262/11393 4741/5261/11394 +s 6 +f 4734/5253/11380 4735/5254/11379 4743/5263/11395 4742/5262/11396 +s 7 +f 4735/5254/11382 4736/5255/11381 4744/5264/11397 4743/5263/11398 +s 8 +f 4736/5255/11384 4729/5256/11383 4737/5265/11399 4744/5264/11400 +s 1 +f 4737/5257/11386 4738/5258/11385 4746/5267/11401 4745/5266/11402 +s 2 +f 4738/5258/11388 4739/5259/11387 4747/5268/11403 4746/5267/11404 +s 3 +f 4739/5259/11390 4740/5260/11389 4748/5269/11405 4747/5268/11406 +s 4 +f 4740/5260/11392 4741/5261/11391 4749/5270/11407 4748/5269/11408 +s 5 +f 4741/5261/11394 4742/5262/11393 4750/5271/11409 4749/5270/11410 +s 6 +f 4742/5262/11396 4743/5263/11395 4751/5272/11411 4750/5271/11412 +s 7 +f 4743/5263/11398 4744/5264/11397 4752/5273/11413 4751/5272/11414 +s 8 +f 4744/5264/11400 4737/5265/11399 4745/5274/11415 4752/5273/11416 +s 1 +f 4745/5266/11402 4746/5267/11401 4754/5276/11417 4753/5275/11418 +s 2 +f 4746/5267/11404 4747/5268/11403 4755/5277/11419 4754/5276/11420 +s 3 +f 4747/5268/11406 4748/5269/11405 4756/5278/11421 4755/5277/11422 +s 4 +f 4748/5269/11408 4749/5270/11407 4757/5279/11423 4756/5278/11424 +s 5 +f 4749/5270/11410 4750/5271/11409 4758/5280/11425 4757/5279/11426 +s 6 +f 4750/5271/11412 4751/5272/11411 4759/5281/11427 4758/5280/11428 +s 7 +f 4751/5272/11414 4752/5273/11413 4760/5282/11429 4759/5281/11430 +s 8 +f 4752/5273/11416 4745/5274/11415 4753/5283/11431 4760/5282/11432 +s 1 +f 4753/5275/11418 4754/5276/11417 4762/5285/11433 4761/5284/11434 +s 2 +f 4754/5276/11420 4755/5277/11419 4763/5286/11435 4762/5285/11436 +s 3 +f 4755/5277/11422 4756/5278/11421 4764/5287/11437 4763/5286/11438 +s 4 +f 4756/5278/11424 4757/5279/11423 4765/5288/11439 4764/5287/11440 +s 5 +f 4757/5279/11426 4758/5280/11425 4766/5289/11441 4765/5288/11442 +s 6 +f 4758/5280/11428 4759/5281/11427 4767/5290/11443 4766/5289/11444 +s 7 +f 4759/5281/11430 4760/5282/11429 4768/5291/11445 4767/5290/11446 +s 8 +f 4760/5282/11432 4753/5283/11431 4761/5292/11447 4768/5291/11448 +s 1 +f 4761/5284/11434 4762/5285/11433 4770/5294/11449 4769/5293/11450 +s 2 +f 4762/5285/11436 4763/5286/11435 4771/5295/11451 4770/5294/11452 +s 3 +f 4763/5286/11438 4764/5287/11437 4772/5296/11453 4771/5295/11454 +s 4 +f 4764/5287/11440 4765/5288/11439 4773/5297/11455 4772/5296/11456 +s 5 +f 4765/5288/11442 4766/5289/11441 4774/5298/11457 4773/5297/11458 +s 6 +f 4766/5289/11444 4767/5290/11443 4775/5299/11459 4774/5298/11460 +s 7 +f 4767/5290/11446 4768/5291/11445 4776/5300/11461 4775/5299/11462 +s 8 +f 4768/5291/11448 4761/5292/11447 4769/5301/11463 4776/5300/11464 +s 1 +f 4769/5293/11450 4770/5294/11449 4778/5303/11465 4777/5302/11466 +s 2 +f 4770/5294/11452 4771/5295/11451 4779/5304/11467 4778/5303/11468 +s 3 +f 4771/5295/11454 4772/5296/11453 4780/5305/11469 4779/5304/11470 +s 4 +f 4772/5296/11456 4773/5297/11455 4781/5306/11471 4780/5305/11472 +s 5 +f 4773/5297/11458 4774/5298/11457 4782/5307/11473 4781/5306/11474 +s 6 +f 4774/5298/11460 4775/5299/11459 4783/5308/11475 4782/5307/11476 +s 7 +f 4775/5299/11462 4776/5300/11461 4784/5309/11477 4783/5308/11478 +s 8 +f 4776/5300/11464 4769/5301/11463 4777/5310/11479 4784/5309/11480 +s 1 +f 4777/5302/11466 4778/5303/11465 4786/5312/11481 4785/5311/11482 +s 2 +f 4778/5303/11468 4779/5304/11467 4787/5313/11483 4786/5312/11484 +s 3 +f 4779/5304/11470 4780/5305/11469 4788/5314/11485 4787/5313/11486 +s 4 +f 4780/5305/11472 4781/5306/11471 4789/5315/11487 4788/5314/11488 +s 5 +f 4781/5306/11474 4782/5307/11473 4790/5316/11489 4789/5315/11490 +s 6 +f 4782/5307/11476 4783/5308/11475 4791/5317/11491 4790/5316/11492 +s 7 +f 4783/5308/11478 4784/5309/11477 4792/5318/11493 4791/5317/11494 +s 8 +f 4784/5309/11480 4777/5310/11479 4785/5319/11495 4792/5318/11496 +s 1 +f 4785/5311/11482 4786/5312/11481 4794/5321/11497 4793/5320/11498 +s 2 +f 4786/5312/11484 4787/5313/11483 4795/5322/11499 4794/5321/11500 +s 3 +f 4787/5313/11486 4788/5314/11485 4796/5323/11501 4795/5322/11502 +s 4 +f 4788/5314/11488 4789/5315/11487 4797/5324/11503 4796/5323/11504 +s 5 +f 4789/5315/11490 4790/5316/11489 4798/5325/11505 4797/5324/11506 +s 6 +f 4790/5316/11492 4791/5317/11491 4799/5326/11507 4798/5325/11508 +s 7 +f 4791/5317/11494 4792/5318/11493 4800/5327/11509 4799/5326/11510 +s 8 +f 4792/5318/11496 4785/5319/11495 4793/5328/11511 4800/5327/11512 +s 1 +f 4793/5320/11498 4794/5321/11497 4802/5330/11513 4801/5329/11514 +s 2 +f 4794/5321/11500 4795/5322/11499 4803/5331/11515 4802/5330/11516 +s 3 +f 4795/5322/11502 4796/5323/11501 4804/5332/11517 4803/5331/11518 +s 4 +f 4796/5323/11504 4797/5324/11503 4805/5333/11519 4804/5332/11520 +s 5 +f 4797/5324/11506 4798/5325/11505 4806/5334/11521 4805/5333/11522 +s 6 +f 4798/5325/11508 4799/5326/11507 4807/5335/11523 4806/5334/11524 +s 7 +f 4799/5326/11510 4800/5327/11509 4808/5336/11525 4807/5335/11526 +s 8 +f 4800/5327/11512 4793/5328/11511 4801/5337/11527 4808/5336/11528 +s 1 +f 4801/5329/11514 4802/5330/11513 4810/5339/11529 4809/5338/11530 +s 2 +f 4802/5330/11516 4803/5331/11515 4811/5340/11531 4810/5339/11532 +s 3 +f 4803/5331/11518 4804/5332/11517 4812/5341/11533 4811/5340/11534 +s 4 +f 4804/5332/11520 4805/5333/11519 4813/5342/11535 4812/5341/11536 +s 5 +f 4805/5333/11522 4806/5334/11521 4814/5343/11537 4813/5342/11538 +s 6 +f 4806/5334/11524 4807/5335/11523 4815/5344/11539 4814/5343/11540 +s 7 +f 4807/5335/11526 4808/5336/11525 4816/5345/11541 4815/5344/11542 +s 8 +f 4808/5336/11528 4801/5337/11527 4809/5346/11543 4816/5345/11544 +s 1 +f 4809/5338/11530 4810/5339/11529 4818/5348/11545 4817/5347/11546 +s 2 +f 4810/5339/11532 4811/5340/11531 4819/5349/11547 4818/5348/11548 +s 3 +f 4811/5340/11534 4812/5341/11533 4820/5350/11549 4819/5349/11550 +s 4 +f 4812/5341/11536 4813/5342/11535 4821/5351/11551 4820/5350/11552 +s 5 +f 4813/5342/11538 4814/5343/11537 4822/5352/11553 4821/5351/11554 +s 6 +f 4814/5343/11540 4815/5344/11539 4823/5353/11555 4822/5352/11556 +s 7 +f 4815/5344/11542 4816/5345/11541 4824/5354/11557 4823/5353/11558 +s 8 +f 4816/5345/11544 4809/5346/11543 4817/5355/11559 4824/5354/11560 +s 1 +f 4817/5347/11546 4818/5348/11545 4826/5357/11561 4825/5356/11562 +s 2 +f 4818/5348/11548 4819/5349/11547 4827/5358/11563 4826/5357/11564 +s 3 +f 4819/5349/11550 4820/5350/11549 4828/5359/11565 4827/5358/11566 +s 4 +f 4820/5350/11552 4821/5351/11551 4829/5360/11567 4828/5359/11568 +s 5 +f 4821/5351/11554 4822/5352/11553 4830/5361/11569 4829/5360/11570 +s 6 +f 4822/5352/11556 4823/5353/11555 4831/5362/11571 4830/5361/11572 +s 7 +f 4823/5353/11558 4824/5354/11557 4832/5363/11573 4831/5362/11574 +s 8 +f 4824/5354/11560 4817/5355/11559 4825/5364/11575 4832/5363/11576 +s 1 +f 4825/5356/11562 4826/5357/11561 4834/5366/11577 4833/5365/11578 +s 2 +f 4826/5357/11564 4827/5358/11563 4835/5367/11579 4834/5366/11580 +s 3 +f 4827/5358/11566 4828/5359/11565 4836/5368/11581 4835/5367/11582 +s 4 +f 4828/5359/11568 4829/5360/11567 4837/5369/11583 4836/5368/11584 +s 5 +f 4829/5360/11570 4830/5361/11569 4838/5370/11585 4837/5369/11586 +s 6 +f 4830/5361/11572 4831/5362/11571 4839/5371/11587 4838/5370/11588 +s 7 +f 4831/5362/11574 4832/5363/11573 4840/5372/11589 4839/5371/11590 +s 8 +f 4832/5363/11576 4825/5364/11575 4833/5373/11591 4840/5372/11592 +s 1 +f 4833/5365/11578 4834/5366/11577 4842/5375/11593 4841/5374/11594 +s 2 +f 4834/5366/11580 4835/5367/11579 4843/5376/11595 4842/5375/11596 +s 3 +f 4835/5367/11582 4836/5368/11581 4844/5377/11597 4843/5376/11598 +s 4 +f 4836/5368/11584 4837/5369/11583 4845/5378/11599 4844/5377/11600 +s 5 +f 4837/5369/11586 4838/5370/11585 4846/5379/11601 4845/5378/11602 +s 6 +f 4838/5370/11588 4839/5371/11587 4847/5380/11603 4846/5379/11604 +s 7 +f 4839/5371/11590 4840/5372/11589 4848/5381/11605 4847/5380/11606 +s 8 +f 4840/5372/11592 4833/5373/11591 4841/5382/11607 4848/5381/11608 +s 1 +f 4841/5374/11594 4842/5375/11593 4850/5384/11609 4849/5383/11610 +s 2 +f 4842/5375/11596 4843/5376/11595 4851/5385/11611 4850/5384/11612 +s 3 +f 4843/5376/11598 4844/5377/11597 4852/5386/11613 4851/5385/11614 +s 4 +f 4844/5377/11600 4845/5378/11599 4853/5387/11615 4852/5386/11616 +s 5 +f 4845/5378/11602 4846/5379/11601 4854/5388/11617 4853/5387/11618 +s 6 +f 4846/5379/11604 4847/5380/11603 4855/5389/11619 4854/5388/11620 +s 7 +f 4847/5380/11606 4848/5381/11605 4856/5390/11621 4855/5389/11622 +s 8 +f 4848/5381/11608 4841/5382/11607 4849/5391/11623 4856/5390/11624 +s 1 +f 4849/5383/11610 4850/5384/11609 4858/5393/11625 4857/5392/11626 +s 2 +f 4850/5384/11612 4851/5385/11611 4859/5394/11627 4858/5393/11628 +s 3 +f 4851/5385/11614 4852/5386/11613 4860/5395/11629 4859/5394/11630 +s 4 +f 4852/5386/11616 4853/5387/11615 4861/5396/11631 4860/5395/11632 +s 5 +f 4853/5387/11618 4854/5388/11617 4862/5397/11633 4861/5396/11634 +s 6 +f 4854/5388/11620 4855/5389/11619 4863/5398/11635 4862/5397/11636 +s 7 +f 4855/5389/11622 4856/5390/11621 4864/5399/11637 4863/5398/11638 +s 8 +f 4856/5390/11624 4849/5391/11623 4857/5400/11639 4864/5399/11640 +s 1 +f 4857/5392/11626 4858/5393/11625 4866/5402/11641 4865/5401/11642 +s 2 +f 4858/5393/11628 4859/5394/11627 4867/5403/11643 4866/5402/11644 +s 3 +f 4859/5394/11630 4860/5395/11629 4868/5404/11645 4867/5403/11646 +s 4 +f 4860/5395/11632 4861/5396/11631 4869/5405/11647 4868/5404/11648 +s 5 +f 4861/5396/11634 4862/5397/11633 4870/5406/11649 4869/5405/11650 +s 6 +f 4862/5397/11636 4863/5398/11635 4871/5407/11651 4870/5406/11652 +s 7 +f 4863/5398/11638 4864/5399/11637 4872/5408/11653 4871/5407/11654 +s 8 +f 4864/5399/11640 4857/5400/11639 4865/5409/11655 4872/5408/11656 +s 1 +f 4865/5401/11642 4866/5402/11641 4874/5411/11657 4873/5410/11658 +s 2 +f 4866/5402/11644 4867/5403/11643 4875/5412/11659 4874/5411/11660 +s 3 +f 4867/5403/11646 4868/5404/11645 4876/5413/11661 4875/5412/11662 +s 4 +f 4868/5404/11648 4869/5405/11647 4877/5414/11663 4876/5413/11664 +s 5 +f 4869/5405/11650 4870/5406/11649 4878/5415/11665 4877/5414/11666 +s 6 +f 4870/5406/11652 4871/5407/11651 4879/5416/11667 4878/5415/11668 +s 7 +f 4871/5407/11654 4872/5408/11653 4880/5417/11669 4879/5416/11670 +s 8 +f 4872/5408/11656 4865/5409/11655 4873/5418/11671 4880/5417/11672 +s 1 +f 4873/5410/11658 4874/5411/11657 4882/5420/11673 4881/5419/11674 +s 2 +f 4874/5411/11660 4875/5412/11659 4883/5421/11675 4882/5420/11676 +s 3 +f 4875/5412/11662 4876/5413/11661 4884/5422/11677 4883/5421/11678 +s 4 +f 4876/5413/11664 4877/5414/11663 4885/5423/11679 4884/5422/11680 +s 5 +f 4877/5414/11666 4878/5415/11665 4886/5424/11681 4885/5423/11682 +s 6 +f 4878/5415/11668 4879/5416/11667 4887/5425/11683 4886/5424/11684 +s 7 +f 4879/5416/11670 4880/5417/11669 4888/5426/11685 4887/5425/11686 +s 8 +f 4880/5417/11672 4873/5418/11671 4881/5427/11687 4888/5426/11688 +s 1 +f 4881/5419/11674 4882/5420/11673 4890/5429/11689 4889/5428/11690 +s 2 +f 4882/5420/11676 4883/5421/11675 4891/5430/11691 4890/5429/11692 +s 3 +f 4883/5421/11678 4884/5422/11677 4892/5431/11693 4891/5430/11694 +s 4 +f 4884/5422/11680 4885/5423/11679 4893/5432/11695 4892/5431/11696 +s 5 +f 4885/5423/11682 4886/5424/11681 4894/5433/11697 4893/5432/11698 +s 6 +f 4886/5424/11684 4887/5425/11683 4895/5434/11699 4894/5433/11700 +s 7 +f 4887/5425/11686 4888/5426/11685 4896/5435/11701 4895/5434/11702 +s 8 +f 4888/5426/11688 4881/5427/11687 4889/5436/11703 4896/5435/11704 +s 1 +f 4889/5428/11690 4890/5429/11689 4898/5438/11705 4897/5437/11706 +s 2 +f 4890/5429/11692 4891/5430/11691 4899/5439/11707 4898/5438/11708 +s 3 +f 4891/5430/11694 4892/5431/11693 4900/5440/11709 4899/5439/11710 +s 4 +f 4892/5431/11696 4893/5432/11695 4901/5441/11711 4900/5440/11712 +s 5 +f 4893/5432/11698 4894/5433/11697 4902/5442/11713 4901/5441/11714 +s 6 +f 4894/5433/11700 4895/5434/11699 4903/5443/11715 4902/5442/11716 +s 7 +f 4895/5434/11702 4896/5435/11701 4904/5444/11717 4903/5443/11718 +s 8 +f 4896/5435/11704 4889/5436/11703 4897/5445/11719 4904/5444/11720 +s 1 +f 4897/5437/11706 4898/5438/11705 4906/5447/11721 4905/5446/11722 +s 2 +f 4898/5438/11708 4899/5439/11707 4907/5448/11723 4906/5447/11724 +s 3 +f 4899/5439/11710 4900/5440/11709 4908/5449/11725 4907/5448/11726 +s 4 +f 4900/5440/11712 4901/5441/11711 4909/5450/11727 4908/5449/11728 +s 5 +f 4901/5441/11714 4902/5442/11713 4910/5451/11729 4909/5450/11730 +s 6 +f 4902/5442/11716 4903/5443/11715 4911/5452/11731 4910/5451/11732 +s 7 +f 4903/5443/11718 4904/5444/11717 4912/5453/11733 4911/5452/11734 +s 8 +f 4904/5444/11720 4897/5445/11719 4905/5454/11735 4912/5453/11736 +s 1 +f 4905/5446/11722 4906/5447/11721 4914/5456/11737 4913/5455/11738 +s 2 +f 4906/5447/11724 4907/5448/11723 4915/5457/11739 4914/5456/11740 +s 3 +f 4907/5448/11726 4908/5449/11725 4916/5458/11741 4915/5457/11742 +s 4 +f 4908/5449/11728 4909/5450/11727 4917/5459/11743 4916/5458/11744 +s 5 +f 4909/5450/11730 4910/5451/11729 4918/5460/11745 4917/5459/11746 +s 6 +f 4910/5451/11732 4911/5452/11731 4919/5461/11747 4918/5460/11748 +s 7 +f 4911/5452/11734 4912/5453/11733 4920/5462/11749 4919/5461/11750 +s 8 +f 4912/5453/11736 4905/5454/11735 4913/5463/11751 4920/5462/11752 +s 1 +f 4913/5455/11738 4914/5456/11737 4922/5465/11753 4921/5464/11754 +s 2 +f 4914/5456/11740 4915/5457/11739 4923/5466/11755 4922/5465/11756 +s 3 +f 4915/5457/11742 4916/5458/11741 4924/5467/11757 4923/5466/11758 +s 4 +f 4916/5458/11744 4917/5459/11743 4925/5468/11759 4924/5467/11760 +s 5 +f 4917/5459/11746 4918/5460/11745 4926/5469/11761 4925/5468/11762 +s 6 +f 4918/5460/11748 4919/5461/11747 4927/5470/11763 4926/5469/11764 +s 7 +f 4919/5461/11750 4920/5462/11749 4928/5471/11765 4927/5470/11766 +s 8 +f 4920/5462/11752 4913/5463/11751 4921/5472/11767 4928/5471/11768 +s 1 +f 4921/5464/11754 4922/5465/11753 4930/5474/11769 4929/5473/11770 +s 2 +f 4922/5465/11756 4923/5466/11755 4931/5475/11771 4930/5474/11772 +s 3 +f 4923/5466/11758 4924/5467/11757 4932/5476/11773 4931/5475/11774 +s 4 +f 4924/5467/11760 4925/5468/11759 4933/5477/11775 4932/5476/11776 +s 5 +f 4925/5468/11762 4926/5469/11761 4934/5478/11777 4933/5477/11778 +s 6 +f 4926/5469/11764 4927/5470/11763 4935/5479/11779 4934/5478/11780 +s 7 +f 4927/5470/11766 4928/5471/11765 4936/5480/11781 4935/5479/11782 +s 8 +f 4928/5471/11768 4921/5472/11767 4929/5481/11783 4936/5480/11784 +s 1 +f 4929/5473/11770 4930/5474/11769 4938/5483/11785 4937/5482/11786 +s 2 +f 4930/5474/11772 4931/5475/11771 4939/5484/11787 4938/5483/11788 +s 3 +f 4931/5475/11774 4932/5476/11773 4940/5485/11789 4939/5484/11790 +s 4 +f 4932/5476/11776 4933/5477/11775 4941/5486/11791 4940/5485/11792 +s 5 +f 4933/5477/11778 4934/5478/11777 4942/5487/11793 4941/5486/11794 +s 6 +f 4934/5478/11780 4935/5479/11779 4943/5488/11795 4942/5487/11796 +s 7 +f 4935/5479/11782 4936/5480/11781 4944/5489/11797 4943/5488/11798 +s 8 +f 4936/5480/11784 4929/5481/11783 4937/5490/11799 4944/5489/11800 +s 1 +f 4937/5482/11786 4938/5483/11785 4946/5492/11801 4945/5491/11802 +s 2 +f 4938/5483/11788 4939/5484/11787 4947/5493/11803 4946/5492/11804 +s 3 +f 4939/5484/11790 4940/5485/11789 4948/5494/11805 4947/5493/11806 +s 4 +f 4940/5485/11792 4941/5486/11791 4949/5495/11807 4948/5494/11808 +s 5 +f 4941/5486/11794 4942/5487/11793 4950/5496/11809 4949/5495/11810 +s 6 +f 4942/5487/11796 4943/5488/11795 4951/5497/11811 4950/5496/11812 +s 7 +f 4943/5488/11798 4944/5489/11797 4952/5498/11813 4951/5497/11814 +s 8 +f 4944/5489/11800 4937/5490/11799 4945/5499/11815 4952/5498/11816 +s 1 +f 4945/5491/11802 4946/5492/11801 4954/5501/11817 4953/5500/11818 +s 2 +f 4946/5492/11804 4947/5493/11803 4955/5502/11819 4954/5501/11820 +s 3 +f 4947/5493/11806 4948/5494/11805 4956/5503/11821 4955/5502/11822 +s 4 +f 4948/5494/11808 4949/5495/11807 4957/5504/11823 4956/5503/11824 +s 5 +f 4949/5495/11810 4950/5496/11809 4958/5505/11825 4957/5504/11826 +s 6 +f 4950/5496/11812 4951/5497/11811 4959/5506/11827 4958/5505/11828 +s 7 +f 4951/5497/11814 4952/5498/11813 4960/5507/11829 4959/5506/11830 +s 8 +f 4952/5498/11816 4945/5499/11815 4953/5508/11831 4960/5507/11832 +s 1 +f 4953/5500/11818 4954/5501/11817 4962/5510/11833 4961/5509/11834 +s 2 +f 4954/5501/11820 4955/5502/11819 4963/5511/11835 4962/5510/11836 +s 3 +f 4955/5502/11822 4956/5503/11821 4964/5512/11837 4963/5511/11838 +s 4 +f 4956/5503/11824 4957/5504/11823 4965/5513/11839 4964/5512/11840 +s 5 +f 4957/5504/11826 4958/5505/11825 4966/5514/11841 4965/5513/11842 +s 6 +f 4958/5505/11828 4959/5506/11827 4967/5515/11843 4966/5514/11844 +s 7 +f 4959/5506/11830 4960/5507/11829 4968/5516/11845 4967/5515/11846 +s 8 +f 4960/5507/11832 4953/5508/11831 4961/5517/11847 4968/5516/11848 +s 1 +f 4961/5509/11834 4962/5510/11833 4970/5519/11849 4969/5518/11850 +s 2 +f 4962/5510/11836 4963/5511/11835 4971/5520/11851 4970/5519/11852 +s 3 +f 4963/5511/11838 4964/5512/11837 4972/5521/11853 4971/5520/11854 +s 4 +f 4964/5512/11840 4965/5513/11839 4973/5522/11855 4972/5521/11856 +s 5 +f 4965/5513/11842 4966/5514/11841 4974/5523/11857 4973/5522/11858 +s 6 +f 4966/5514/11844 4967/5515/11843 4975/5524/11859 4974/5523/11860 +s 7 +f 4967/5515/11846 4968/5516/11845 4976/5525/11861 4975/5524/11862 +s 8 +f 4968/5516/11848 4961/5517/11847 4969/5526/11863 4976/5525/11864 +s 1 +f 4969/5518/11850 4970/5519/11849 4978/5528/11865 4977/5527/11866 +s 2 +f 4970/5519/11852 4971/5520/11851 4979/5529/11867 4978/5528/11868 +s 3 +f 4971/5520/11854 4972/5521/11853 4980/5530/11869 4979/5529/11870 +s 4 +f 4972/5521/11856 4973/5522/11855 4981/5531/11871 4980/5530/11872 +s 5 +f 4973/5522/11858 4974/5523/11857 4982/5532/11873 4981/5531/11874 +s 6 +f 4974/5523/11860 4975/5524/11859 4983/5533/11875 4982/5532/11876 +s 7 +f 4975/5524/11862 4976/5525/11861 4984/5534/11877 4983/5533/11878 +s 8 +f 4976/5525/11864 4969/5526/11863 4977/5535/11879 4984/5534/11880 +s 1 +f 4977/5527/11866 4978/5528/11865 4986/5537/11881 4985/5536/11882 +s 2 +f 4978/5528/11868 4979/5529/11867 4987/5538/11883 4986/5537/11884 +s 3 +f 4979/5529/11870 4980/5530/11869 4988/5539/11885 4987/5538/11886 +s 4 +f 4980/5530/11872 4981/5531/11871 4989/5540/11887 4988/5539/11888 +s 5 +f 4981/5531/11874 4982/5532/11873 4990/5541/11889 4989/5540/11890 +s 6 +f 4982/5532/11876 4983/5533/11875 4991/5542/11891 4990/5541/11892 +s 7 +f 4983/5533/11878 4984/5534/11877 4992/5543/11893 4991/5542/11894 +s 8 +f 4984/5534/11880 4977/5535/11879 4985/5544/11895 4992/5543/11896 +s 1 +f 4985/5536/11882 4986/5537/11881 4994/5546/11897 4993/5545/11898 +s 2 +f 4986/5537/11884 4987/5538/11883 4995/5547/11899 4994/5546/11900 +s 3 +f 4987/5538/11886 4988/5539/11885 4996/5548/11901 4995/5547/11902 +s 4 +f 4988/5539/11888 4989/5540/11887 4997/5549/11903 4996/5548/11904 +s 5 +f 4989/5540/11890 4990/5541/11889 4998/5550/11905 4997/5549/11906 +s 6 +f 4990/5541/11892 4991/5542/11891 4999/5551/11907 4998/5550/11908 +s 7 +f 4991/5542/11894 4992/5543/11893 5000/5552/11909 4999/5551/11910 +s 8 +f 4992/5543/11896 4985/5544/11895 4993/5553/11911 5000/5552/11912 +s 1 +f 4993/5545/11898 4994/5546/11897 5002/5555/11913 5001/5554/11914 +s 2 +f 4994/5546/11900 4995/5547/11899 5003/5556/11915 5002/5555/11916 +s 3 +f 4995/5547/11902 4996/5548/11901 5004/5557/11917 5003/5556/11918 +s 4 +f 4996/5548/11904 4997/5549/11903 5005/5558/11919 5004/5557/11920 +s 5 +f 4997/5549/11906 4998/5550/11905 5006/5559/11921 5005/5558/11922 +s 6 +f 4998/5550/11908 4999/5551/11907 5007/5560/11923 5006/5559/11924 +s 7 +f 4999/5551/11910 5000/5552/11909 5008/5561/11925 5007/5560/11926 +s 8 +f 5000/5552/11912 4993/5553/11911 5001/5562/11927 5008/5561/11928 +s 1 +f 5001/5554/11914 5002/5555/11913 5010/5564/11929 5009/5563/11930 +s 2 +f 5002/5555/11916 5003/5556/11915 5011/5565/11931 5010/5564/11932 +s 3 +f 5003/5556/11918 5004/5557/11917 5012/5566/11933 5011/5565/11934 +s 4 +f 5004/5557/11920 5005/5558/11919 5013/5567/11935 5012/5566/11936 +s 5 +f 5005/5558/11922 5006/5559/11921 5014/5568/11937 5013/5567/11938 +s 6 +f 5006/5559/11924 5007/5560/11923 5015/5569/11939 5014/5568/11940 +s 7 +f 5007/5560/11926 5008/5561/11925 5016/5570/11941 5015/5569/11942 +s 8 +f 5008/5561/11928 5001/5562/11927 5009/5571/11943 5016/5570/11944 +s 1 +f 5009/5563/11930 5010/5564/11929 5018/5573/11945 5017/5572/11946 +s 2 +f 5010/5564/11932 5011/5565/11931 5019/5574/11947 5018/5573/11948 +s 3 +f 5011/5565/11934 5012/5566/11933 5020/5575/11949 5019/5574/11950 +s 4 +f 5012/5566/11936 5013/5567/11935 5021/5576/11951 5020/5575/11952 +s 5 +f 5013/5567/11938 5014/5568/11937 5022/5577/11953 5021/5576/11954 +s 6 +f 5014/5568/11940 5015/5569/11939 5023/5578/11955 5022/5577/11956 +s 7 +f 5015/5569/11942 5016/5570/11941 5024/5579/11957 5023/5578/11958 +s 8 +f 5016/5570/11944 5009/5571/11943 5017/5580/11959 5024/5579/11960 +s 1 +f 5017/5572/11946 5018/5573/11945 5026/5582/11961 5025/5581/11962 +s 2 +f 5018/5573/11948 5019/5574/11947 5027/5583/11963 5026/5582/11964 +s 3 +f 5019/5574/11950 5020/5575/11949 5028/5584/11965 5027/5583/11966 +s 4 +f 5020/5575/11952 5021/5576/11951 5029/5585/11967 5028/5584/11968 +s 5 +f 5021/5576/11954 5022/5577/11953 5030/5586/11969 5029/5585/11970 +s 6 +f 5022/5577/11956 5023/5578/11955 5031/5587/11971 5030/5586/11972 +s 7 +f 5023/5578/11958 5024/5579/11957 5032/5588/11973 5031/5587/11974 +s 8 +f 5024/5579/11960 5017/5580/11959 5025/5589/11975 5032/5588/11976 +s 1 +f 5025/5581/11962 5026/5582/11961 5034/5591/11977 5033/5590/11978 +s 2 +f 5026/5582/11964 5027/5583/11963 5035/5592/11979 5034/5591/11980 +s 3 +f 5027/5583/11966 5028/5584/11965 5036/5593/11981 5035/5592/11982 +s 4 +f 5028/5584/11968 5029/5585/11967 5037/5594/11983 5036/5593/11984 +s 5 +f 5029/5585/11970 5030/5586/11969 5038/5595/11985 5037/5594/11986 +s 6 +f 5030/5586/11972 5031/5587/11971 5039/5596/11987 5038/5595/11988 +s 7 +f 5031/5587/11974 5032/5588/11973 5040/5597/11989 5039/5596/11990 +s 8 +f 5032/5588/11976 5025/5589/11975 5033/5598/11991 5040/5597/11992 +s 1 +f 5033/5590/11978 5034/5591/11977 5042/5600/11993 5041/5599/11994 +s 2 +f 5034/5591/11980 5035/5592/11979 5043/5601/11995 5042/5600/11996 +s 3 +f 5035/5592/11982 5036/5593/11981 5044/5602/11997 5043/5601/11998 +s 4 +f 5036/5593/11984 5037/5594/11983 5045/5603/11999 5044/5602/12000 +s 5 +f 5037/5594/11986 5038/5595/11985 5046/5604/12001 5045/5603/12002 +s 6 +f 5038/5595/11988 5039/5596/11987 5047/5605/12003 5046/5604/12004 +s 7 +f 5039/5596/11990 5040/5597/11989 5048/5606/12005 5047/5605/12006 +s 8 +f 5040/5597/11992 5033/5598/11991 5041/5607/12007 5048/5606/12008 +s 1 +f 5041/5599/11994 5042/5600/11993 5050/5609/12009 5049/5608/12010 +s 2 +f 5042/5600/11996 5043/5601/11995 5051/5610/12011 5050/5609/12012 +s 3 +f 5043/5601/11998 5044/5602/11997 5052/5611/12013 5051/5610/12014 +s 4 +f 5044/5602/12000 5045/5603/11999 5053/5612/12015 5052/5611/12016 +s 5 +f 5045/5603/12002 5046/5604/12001 5054/5613/12017 5053/5612/12018 +s 6 +f 5046/5604/12004 5047/5605/12003 5055/5614/12019 5054/5613/12020 +s 7 +f 5047/5605/12006 5048/5606/12005 5056/5615/12021 5055/5614/12022 +s 8 +f 5048/5606/12008 5041/5607/12007 5049/5616/12023 5056/5615/12024 +s 1 +f 5049/5608/12010 5050/5609/12009 5058/5618/12025 5057/5617/12026 +s 2 +f 5050/5609/12012 5051/5610/12011 5059/5619/12027 5058/5618/12028 +s 3 +f 5051/5610/12014 5052/5611/12013 5060/5620/12029 5059/5619/12030 +s 4 +f 5052/5611/12016 5053/5612/12015 5061/5621/12031 5060/5620/12032 +s 5 +f 5053/5612/12018 5054/5613/12017 5062/5622/12033 5061/5621/12034 +s 6 +f 5054/5613/12020 5055/5614/12019 5063/5623/12035 5062/5622/12036 +s 7 +f 5055/5614/12022 5056/5615/12021 5064/5624/12037 5063/5623/12038 +s 8 +f 5056/5615/12024 5049/5616/12023 5057/5625/12039 5064/5624/12040 +s off +f 2561/2801/12041 2568/2808/12042 2567/2807/12043 2566/2806/12044 2565/2805/12045 2564/2804/12046 2563/2803/12047 2562/2802/12048 +f 5057/5632/12049 5058/5631/12050 5059/5630/12051 5060/5629/12052 5061/5628/12053 5062/5627/12054 5063/5626/12055 5064/5633/12056 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Barbed Wire.obj.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Barbed Wire.obj.meta new file mode 100644 index 00000000..94a7e2f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Barbed Wire.obj.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: b1258906d22626643bb30f42b6bea168 +ModelImporter: + serializedVersion: 21100 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 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: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other.meta new file mode 100644 index 00000000..ec14e3da --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: acf39ba11ab74dc4798793878900d279 +folderAsset: yes +timeCreated: 1441853396 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials.meta new file mode 100644 index 00000000..7428f2a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cd7b904e171b264458ac8ff25bcd5271 +folderAsset: yes +timeCreated: 1441853396 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/Material4.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/Material4.mat new file mode 100644 index 00000000..5e3bd00e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/Material4.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Material4 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/Material4.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/Material4.mat.meta new file mode 100644 index 00000000..c0f1a2a2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/Material4.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3340c28ca4fb48d4c99c0709785a2191 +timeCreated: 1441868876 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.mat new file mode 100644 index 00000000..87d91a4b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: decal_logo + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHABLEND_ON + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 0b11953b2e948f64088c44ac699d9c39, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 5 + data: + first: + name: _DstBlend + second: 10 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 0 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 2 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .139705896, g: .138958812, b: .131487906, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.mat.meta new file mode 100644 index 00000000..1bcb2cc7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d41604faa020e7458f93340b1735930 +timeCreated: 1442460448 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.png new file mode 100644 index 00000000..367ec211 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.png.meta new file mode 100644 index 00000000..f0bca6b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 7639673b86055b245bbee31257352a9b +timeCreated: 1442617889 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_outline.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_outline.png new file mode 100644 index 00000000..3fcdcbf3 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_outline.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_outline.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_outline.png.meta new file mode 100644 index 00000000..9a976851 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_outline.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 880cd1ef770b968468399f4b9edfc7a5 +timeCreated: 1442617889 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_white.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_white.mat new file mode 100644 index 00000000..699aba62 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_white.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: decal_logo_white + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHABLEND_ON + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 7639673b86055b245bbee31257352a9b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 5 + data: + first: + name: _DstBlend + second: 10 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 0 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 2 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_white.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_white.mat.meta new file mode 100644 index 00000000..fb72a7c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/decal_logo_white.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb28faac4cf326048ab74f457dfe8e0e +timeCreated: 1442524902 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/default.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/default.mat new file mode 100644 index 00000000..ebe00d27 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/default.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: default + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .588, g: .588, b: .588, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/default.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/default.mat.meta new file mode 100644 index 00000000..9bb484c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/default.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a7d7d65c5ed99f642a7dca63c4370066 +timeCreated: 1441868877 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/metal_triplanar_01.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/metal_triplanar_01.png new file mode 100644 index 00000000..b187246c Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/metal_triplanar_01.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/metal_triplanar_01.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/metal_triplanar_01.png.meta new file mode 100644 index 00000000..847060d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/metal_triplanar_01.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: b323a59f586d4cc4aac4468c3890af85 +timeCreated: 1442617867 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new.mat new file mode 100644 index 00000000..3cd89881 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new.mat @@ -0,0 +1,262 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: other_ring_new + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Diffuse + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Edge + second: + m_Texture: {fileID: 2800000, guid: 1769c1724fffab2499432e75c63f041e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: 0b1cdbaaa6b43d642abeda82fd713fc3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Surface + second: + m_Texture: {fileID: 2800000, guid: 113b55dc7f38cb9428b7b3b79bc4590d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: 0b1cdbaaa6b43d642abeda82fd713fc3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_3386 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_4764 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_5610 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _AlbedoBoost + second: 1 + - first: + name: _Bands + second: 8 + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 1 + - first: + name: _CurvatureBoost + second: 0.784 + - first: + name: _CurvatureBoostSelf + second: 1 + - first: + name: _CurvatureBoostUniform + second: 0.8 + - first: + name: _CurvaturePower + second: 8 + - first: + name: _CurvatureWearFactor + second: 0.118 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DirtBoost + second: 0 + - first: + name: _DirtOcclusionCoverage + second: 0.358 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeFactor + second: 1 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 1 + - first: + name: _Gloss + second: 0.4511278 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 1 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0.179 + - first: + name: _Metallic + second: 1 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Sharpness + second: 10.6 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 0.64705884, b: 0.3764706, a: 1} + - first: + name: _ColorMain + second: {r: 1, g: 0.8040568, b: 0.38235295, a: 1} + - first: + name: _ColorSecondary + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - first: + name: _Diffuse + second: {r: 0.9117647, g: 0.8760425, b: 0.8179066, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _LightWrapping + second: {r: 0.9058824, g: 0.4941176, b: 0.4901961, a: 1} + - first: + name: _MainAlbedo + second: {r: 1, g: 0.6465517, b: 0.375, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new.mat.meta new file mode 100644 index 00000000..47b54c54 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b6d1a838997cdb74ebbd6d9883551835 +timeCreated: 1442493781 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_red.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_red.mat new file mode 100644 index 00000000..67ba6e11 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_red.mat @@ -0,0 +1,262 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: other_ring_new_red + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Diffuse + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Edge + second: + m_Texture: {fileID: 2800000, guid: 1769c1724fffab2499432e75c63f041e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: 0b1cdbaaa6b43d642abeda82fd713fc3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Surface + second: + m_Texture: {fileID: 2800000, guid: 113b55dc7f38cb9428b7b3b79bc4590d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: 0b1cdbaaa6b43d642abeda82fd713fc3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_3386 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_4764 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_5610 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _AlbedoBoost + second: 1 + - first: + name: _Bands + second: 8 + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 1 + - first: + name: _CurvatureBoost + second: 0.784 + - first: + name: _CurvatureBoostSelf + second: 1 + - first: + name: _CurvatureBoostUniform + second: 0.8 + - first: + name: _CurvaturePower + second: 8 + - first: + name: _CurvatureWearFactor + second: 0.118 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DirtBoost + second: 0 + - first: + name: _DirtOcclusionCoverage + second: 0.358 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeFactor + second: 1 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 1 + - first: + name: _Gloss + second: 0.4511278 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 1 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0.198 + - first: + name: _Metallic + second: 1 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Sharpness + second: 10.6 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 0.7490196, g: 0.4392157, b: 0.043137256, a: 1} + - first: + name: _ColorMain + second: {r: 1, g: 0.8040568, b: 0.38235295, a: 1} + - first: + name: _ColorSecondary + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - first: + name: _Diffuse + second: {r: 0.9117647, g: 0.8760425, b: 0.8179066, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _LightWrapping + second: {r: 0.9058824, g: 0.4941176, b: 0.4901961, a: 1} + - first: + name: _MainAlbedo + second: {r: 0.75, g: 0.43843815, b: 0.044117644, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_red.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_red.mat.meta new file mode 100644 index 00000000..d103f971 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_red.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33c37627ccf248345bf792beec367ed0 +timeCreated: 1444158051 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_white.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_white.mat new file mode 100644 index 00000000..75431204 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_white.mat @@ -0,0 +1,262 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: other_ring_new_white + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Diffuse + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Edge + second: + m_Texture: {fileID: 2800000, guid: 1769c1724fffab2499432e75c63f041e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: 0b1cdbaaa6b43d642abeda82fd713fc3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Surface + second: + m_Texture: {fileID: 2800000, guid: 113b55dc7f38cb9428b7b3b79bc4590d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: 0b1cdbaaa6b43d642abeda82fd713fc3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_3386 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_4764 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_5610 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _AlbedoBoost + second: 1 + - first: + name: _Bands + second: 8 + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 1 + - first: + name: _CurvatureBoost + second: 0.784 + - first: + name: _CurvatureBoostSelf + second: 1 + - first: + name: _CurvatureBoostUniform + second: 0.8 + - first: + name: _CurvaturePower + second: 8 + - first: + name: _CurvatureWearFactor + second: 0.118 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DirtBoost + second: 0 + - first: + name: _DirtOcclusionCoverage + second: 0.358 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeFactor + second: 1 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 1 + - first: + name: _Gloss + second: 0.4511278 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 1 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0.198 + - first: + name: _Metallic + second: 1 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Sharpness + second: 10.6 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 0.5529412, g: 0.5529412, b: 0.5529412, a: 1} + - first: + name: _ColorMain + second: {r: 1, g: 0.8040568, b: 0.38235295, a: 1} + - first: + name: _ColorSecondary + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - first: + name: _Diffuse + second: {r: 0.9117647, g: 0.8760425, b: 0.8179066, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _LightWrapping + second: {r: 0.9058824, g: 0.4941176, b: 0.4901961, a: 1} + - first: + name: _MainAlbedo + second: {r: 0.5514706, g: 0.5514706, b: 0.5514706, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_white.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_white.mat.meta new file mode 100644 index 00000000..7ac7e168 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_new_white.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51a7a57ed37fa1c43b442afb5f98dd6b +timeCreated: 1444158020 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_packed.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_packed.png new file mode 100644 index 00000000..d60b8048 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_packed.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_packed.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_packed.png.meta new file mode 100644 index 00000000..8fab8cee --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/other_ring_packed.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 0b1cdbaaa6b43d642abeda82fd713fc3 +timeCreated: 1442610866 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/outer_ring_fx.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/outer_ring_fx.mat new file mode 100644 index 00000000..a7e1d726 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/outer_ring_fx.mat @@ -0,0 +1,150 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: outer_ring_fx + m_Shader: {fileID: 4800000, guid: 459ce014ae96ed3438d05af3f6f12f71, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 1eef4d436ce539b4a99eb5fce36054c6, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _InvFade + second: 1 + data: + first: + name: _FresnelExponent + second: 2.42000008 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .56078434, g: .56078434, b: .56078434, a: 1} + data: + first: + name: _TintColor + second: {r: .25, g: .751724005, b: 1, a: .266000003} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/outer_ring_fx.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/outer_ring_fx.mat.meta new file mode 100644 index 00000000..32d0ee58 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/Materials/outer_ring_fx.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 211bde4fe9599bf4c84c5e40e994b404 +timeCreated: 1441855353 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring.prefab new file mode 100644 index 00000000..40bb1d8f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring.prefab @@ -0,0 +1,450 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &113268 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 422908} + - component: {fileID: 3332312} + - component: {fileID: 2304548} + m_Layer: 0 + m_Name: other_ring_fx + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &120992 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 437750} + - component: {fileID: 3312168} + - component: {fileID: 2359514} + m_Layer: 0 + m_Name: other_ring_fx + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &144320 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 481378} + - component: {fileID: 3373826} + - component: {fileID: 2339258} + m_Layer: 0 + m_Name: other_ring_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148554 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 449654} + - component: {fileID: 10898336} + m_Layer: 0 + m_Name: light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &160438 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 487670} + - component: {fileID: 3374112} + - component: {fileID: 2329366} + m_Layer: 0 + m_Name: other_ring_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &177212 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 435866} + - component: {fileID: 3381668} + - component: {fileID: 2352992} + m_Layer: 0 + m_Name: other_ring_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183772 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 458426} + m_Layer: 0 + m_Name: other_ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &422908 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113268} + m_LocalRotation: {x: 0.5000001, y: 0.5, z: 0.5, w: 0.49999994} + m_LocalPosition: {x: -0, y: -0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 458426} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &435866 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177212} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 458426} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &437750 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120992} + m_LocalRotation: {x: -0.49999884, y: 0.50000095, z: -0.49999884, w: 0.5000014} + m_LocalPosition: {x: -0, y: -0, z: -1.167} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 458426} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &449654 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148554} + 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_Children: [] + m_Father: {fileID: 458426} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &458426 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183772} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3.98, z: 0.64} + m_LocalScale: {x: 8.569674, y: 8.569674, z: 8.569674} + m_Children: + - {fileID: 435866} + - {fileID: 481378} + - {fileID: 487670} + - {fileID: 422908} + - {fileID: 437750} + - {fileID: 449654} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &481378 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144320} + m_LocalRotation: {x: -0.35355428, y: -0.6123719, z: 0.6123719, w: 0.35355428} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 458426} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &487670 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160438} + m_LocalRotation: {x: 0.35355166, y: -0.6123735, z: 0.6123735, w: -0.35355163} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 458426} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2304548 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113268} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 211bde4fe9599bf4c84c5e40e994b404, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2329366 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160438} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b6d1a838997cdb74ebbd6d9883551835, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2339258 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144320} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b6d1a838997cdb74ebbd6d9883551835, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2352992 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177212} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b6d1a838997cdb74ebbd6d9883551835, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2359514 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120992} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 211bde4fe9599bf4c84c5e40e994b404, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3312168 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120992} + m_Mesh: {fileID: 4300000, guid: 33dce83cdb6948247ba5a483fe0db390, type: 3} +--- !u!33 &3332312 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113268} + m_Mesh: {fileID: 4300000, guid: 33dce83cdb6948247ba5a483fe0db390, type: 3} +--- !u!33 &3373826 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 144320} + m_Mesh: {fileID: 4300000, guid: b49b0346a25d14b46bb04f1ad98478ac, type: 3} +--- !u!33 &3374112 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160438} + m_Mesh: {fileID: 4300000, guid: b49b0346a25d14b46bb04f1ad98478ac, type: 3} +--- !u!33 &3381668 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177212} + m_Mesh: {fileID: 4300000, guid: b49b0346a25d14b46bb04f1ad98478ac, type: 3} +--- !u!108 &10898336 +Light: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148554} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 2 + m_Color: {r: 0.33088237, g: 0.71854556, b: 1, a: 1} + m_Intensity: 3 + m_Range: 20 + m_SpotAngle: 30 + 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_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 183772} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring.prefab.meta new file mode 100644 index 00000000..5752de0b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d70956f95c65d1a4bb05b556fd7f5b94 +timeCreated: 1441854555 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_fx.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_fx.fbx new file mode 100644 index 00000000..fd1285bd Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_fx.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_fx.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_fx.fbx.meta new file mode 100644 index 00000000..66dd1c31 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_fx.fbx.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 33dce83cdb6948247ba5a483fe0db390 +timeCreated: 1441855338 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_uv2.FBX b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_uv2.FBX new file mode 100644 index 00000000..2e79e5ab Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_uv2.FBX differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_uv2.FBX.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_uv2.FBX.meta new file mode 100644 index 00000000..d6a6f580 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Other/other_ring_uv2.FBX.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: b49b0346a25d14b46bb04f1ad98478ac +timeCreated: 1441853523 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1[_26070] + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail.meta new file mode 100644 index 00000000..44ee455a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4501d979b5513e0449e85affed01b612 +folderAsset: yes +timeCreated: 1441931775 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials.meta new file mode 100644 index 00000000..46f85ce9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8cbd3488fec5e6f42872a969a6b8d3e0 +folderAsset: yes +timeCreated: 1441931775 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/FrontColor.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/FrontColor.mat new file mode 100644 index 00000000..0a7a3f1f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/FrontColor.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FrontColor + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/FrontColor.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/FrontColor.mat.meta new file mode 100644 index 00000000..e1910a9c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/FrontColor.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cf40427a3d8a89844a6953a1ac2de635 +timeCreated: 1441931775 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material1.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material1.mat new file mode 100644 index 00000000..05a93ca8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material1.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Material1 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .294117659, g: .258823544, b: .247058824, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material1.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material1.mat.meta new file mode 100644 index 00000000..44d76e87 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c961040172f09b347b8ad7d6c3474755 +timeCreated: 1442528228 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material14.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material14.mat new file mode 100644 index 00000000..fc03d986 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material14.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Material14 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .243137255, g: .227450982, b: .219607845, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material14.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material14.mat.meta new file mode 100644 index 00000000..48dfe0b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/Material14.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4490679d4eb42264aa6895fdbd7b9d7c +timeCreated: 1442528228 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/default.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/default.mat new file mode 100644 index 00000000..2132db46 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/default.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: default + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .588, g: .588, b: .588, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/default.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/default.mat.meta new file mode 100644 index 00000000..86caabc4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/default.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70050dcd9fde6b141b4f1e8cc389c006 +timeCreated: 1442523212 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.mat new file mode 100644 index 00000000..ee0c4415 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_bridge + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHATEST_ON + m_LightmapFlags: 5 + m_CustomRenderQueue: 2450 + stringTagMap: + RenderType: TransparentCutout + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 07958699501af504faa634a8159637d8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .202999994 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 1 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.mat.meta new file mode 100644 index 00000000..bd7f1e68 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a955516767ce5f468c818f1f44ab381 +timeCreated: 1441946994 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.png new file mode 100644 index 00000000..8065a474 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.png.meta new file mode 100644 index 00000000..228290e2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_bridge.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 07958699501af504faa634a8159637d8 +timeCreated: 1441947082 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body.mat new file mode 100644 index 00000000..b5755a20 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body.mat @@ -0,0 +1,262 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_car_body + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Diffuse + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Edge + second: + m_Texture: {fileID: 2800000, guid: 1769c1724fffab2499432e75c63f041e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 24867277122537d4c8e46818a80dfb39, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: f973c6f721c30854b861f319d59f8d2d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Surface + second: + m_Texture: {fileID: 2800000, guid: 113b55dc7f38cb9428b7b3b79bc4590d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: f973c6f721c30854b861f319d59f8d2d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 2800000, guid: 24867277122537d4c8e46818a80dfb39, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_3386 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_4764 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_5610 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _AlbedoBoost + second: 1 + - first: + name: _Bands + second: 8 + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 1 + - first: + name: _CurvatureBoost + second: 0.784 + - first: + name: _CurvatureBoostSelf + second: 1 + - first: + name: _CurvatureBoostUniform + second: 0.8 + - first: + name: _CurvaturePower + second: 8 + - first: + name: _CurvatureWearFactor + second: 0.55 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DirtBoost + second: 0 + - first: + name: _DirtOcclusionCoverage + second: 0.358 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeFactor + second: 1 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 1 + - first: + name: _Gloss + second: 0.4511278 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 1 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0.198 + - first: + name: _Metallic + second: 1 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Sharpness + second: 10.6 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 0.85490197, g: 0.79607844, b: 0.47843137, a: 1} + - first: + name: _ColorMain + second: {r: 1, g: 0.8040568, b: 0.38235295, a: 1} + - first: + name: _ColorSecondary + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - first: + name: _Diffuse + second: {r: 0.9117647, g: 0.8760425, b: 0.8179066, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 0.85294116, g: 0.7958478, b: 0.4766436, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _LightWrapping + second: {r: 0.9058824, g: 0.4941176, b: 0.4901961, a: 1} + - first: + name: _MainAlbedo + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body.mat.meta new file mode 100644 index 00000000..eee728d8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff +timeCreated: 1442544508 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_packed.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_packed.png new file mode 100644 index 00000000..a2682564 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_packed.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_packed.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_packed.png.meta new file mode 100644 index 00000000..b8adab08 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_packed.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: f973c6f721c30854b861f319d59f8d2d +timeCreated: 1442611559 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_vcols.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_vcols.png new file mode 100644 index 00000000..efb1addf Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_vcols.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_vcols.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_vcols.png.meta new file mode 100644 index 00000000..b11f8489 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_body_vcols.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 24867277122537d4c8e46818a80dfb39 +timeCreated: 1442612592 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.mat new file mode 100644 index 00000000..3a2276ed --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_car_coupling + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 9ded5cf3f195c4b49bb071b9a3a53ebd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Metallic + second: .950999975 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Glossiness + second: .354000002 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.mat.meta new file mode 100644 index 00000000..dfd18d77 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 258cd2fde7ecd5940ba82055ab0a1993 +timeCreated: 1442546886 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.png new file mode 100644 index 00000000..45736410 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.png.meta new file mode 100644 index 00000000..0707b06f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_coupling.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 9ded5cf3f195c4b49bb071b9a3a53ebd +timeCreated: 1442546886 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny.mat new file mode 100644 index 00000000..7ab91481 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny.mat @@ -0,0 +1,262 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_car_tiny + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Diffuse + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Edge + second: + m_Texture: {fileID: 2800000, guid: 1769c1724fffab2499432e75c63f041e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: a2d08d92b1886b24989b70d129f8d60f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Surface + second: + m_Texture: {fileID: 2800000, guid: 113b55dc7f38cb9428b7b3b79bc4590d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: a2d08d92b1886b24989b70d129f8d60f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 0.25, y: 0.25} + m_Offset: {x: 0, y: 0} + - first: + name: _node_3386 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_4764 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_5610 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _AlbedoBoost + second: 1 + - first: + name: _Bands + second: 8 + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 1 + - first: + name: _CurvatureBoost + second: 0.784 + - first: + name: _CurvatureBoostSelf + second: 1 + - first: + name: _CurvatureBoostUniform + second: 0.8 + - first: + name: _CurvaturePower + second: 8 + - first: + name: _CurvatureWearFactor + second: 0.723 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DirtBoost + second: 0 + - first: + name: _DirtOcclusionCoverage + second: 0.358 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeFactor + second: 1 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 1 + - first: + name: _Gloss + second: 0.4511278 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 1 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0.198 + - first: + name: _Metallic + second: 1 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Sharpness + second: 10.6 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 0.5568628, g: 0.40784314, b: 0.34509805, a: 1} + - first: + name: _ColorMain + second: {r: 1, g: 0.8040568, b: 0.38235295, a: 1} + - first: + name: _ColorSecondary + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - first: + name: _Diffuse + second: {r: 0.9117647, g: 0.8760425, b: 0.8179066, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _LightWrapping + second: {r: 0.9058824, g: 0.4941176, b: 0.4901961, a: 1} + - first: + name: _MainAlbedo + second: {r: 0.5588235, g: 0.4070457, b: 0.34515572, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny.mat.meta new file mode 100644 index 00000000..c9778eac --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59a5c9f887f9d6847af1e5f268ed1e8f +timeCreated: 1442523231 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny_packed.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny_packed.png new file mode 100644 index 00000000..fcf9ae44 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny_packed.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny_packed.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny_packed.png.meta new file mode 100644 index 00000000..c90fc7bd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_tiny_packed.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: a2d08d92b1886b24989b70d129f8d60f +timeCreated: 1442611558 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel.mat new file mode 100644 index 00000000..735a0a9f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel.mat @@ -0,0 +1,262 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_car_wheel + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Diffuse + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Edge + second: + m_Texture: {fileID: 2800000, guid: 1769c1724fffab2499432e75c63f041e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: e401476bf76ee4e4bbd3280e2dd2915c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Surface + second: + m_Texture: {fileID: 2800000, guid: 113b55dc7f38cb9428b7b3b79bc4590d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: e401476bf76ee4e4bbd3280e2dd2915c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_3386 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_4764 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_5610 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _AlbedoBoost + second: 1 + - first: + name: _Bands + second: 8 + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 1 + - first: + name: _CurvatureBoost + second: 0.784 + - first: + name: _CurvatureBoostSelf + second: 1 + - first: + name: _CurvatureBoostUniform + second: 0.8 + - first: + name: _CurvaturePower + second: 8 + - first: + name: _CurvatureWearFactor + second: 0.723 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DirtBoost + second: 0 + - first: + name: _DirtOcclusionCoverage + second: 0.358 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeFactor + second: 1 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 1 + - first: + name: _Gloss + second: 0.4511278 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 1 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0.198 + - first: + name: _Metallic + second: 1 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Sharpness + second: 10.6 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 0.5568628, g: 0.40784314, b: 0.34509805, a: 1} + - first: + name: _ColorMain + second: {r: 1, g: 0.8040568, b: 0.38235295, a: 1} + - first: + name: _ColorSecondary + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - first: + name: _Diffuse + second: {r: 0.9117647, g: 0.8760425, b: 0.8179066, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _LightWrapping + second: {r: 0.9058824, g: 0.4941176, b: 0.4901961, a: 1} + - first: + name: _MainAlbedo + second: {r: 0.5588235, g: 0.4070457, b: 0.34515572, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel.mat.meta new file mode 100644 index 00000000..e3098725 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cfb41dfe5f2704c42bd82542d42d8509 +timeCreated: 1442531789 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel_packed.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel_packed.png new file mode 100644 index 00000000..588aef60 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel_packed.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel_packed.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel_packed.png.meta new file mode 100644 index 00000000..62de0a06 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_car_wheel_packed.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: e401476bf76ee4e4bbd3280e2dd2915c +timeCreated: 1442611960 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_grass_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_grass_01.mat new file mode 100644 index 00000000..9346eebd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_grass_01.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_grass_01 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .215686277, g: .274509817, b: .109803922, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_grass_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_grass_01.mat.meta new file mode 100644 index 00000000..acdf0d29 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_grass_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2869e9014fb9af4cb8607965249c54d +timeCreated: 1442778337 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.mat new file mode 100644 index 00000000..a7385349 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_ground_02 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHATEST_ON _NORMALMAP + m_LightmapFlags: 5 + m_CustomRenderQueue: 2450 + stringTagMap: + RenderType: TransparentCutout + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 0e1584acd0c262e498265d6112ea5e2c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 2800000, guid: 3fdf4fef8273d0240bb9f17e3482d22a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .202999994 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 1 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.mat.meta new file mode 100644 index 00000000..7eac6181 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33c3d657e881b534ba30faec26966544 +timeCreated: 1441928826 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.png new file mode 100644 index 00000000..abb5049f Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.png.meta new file mode 100644 index 00000000..3f0e4071 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 0e1584acd0c262e498265d6112ea5e2c +timeCreated: 1442612592 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02_normal.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02_normal.png new file mode 100644 index 00000000..6db45160 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02_normal.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02_normal.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02_normal.png.meta new file mode 100644 index 00000000..7e9724c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_ground_02_normal.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 3fdf4fef8273d0240bb9f17e3482d22a +timeCreated: 1441946526 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 1 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.mat new file mode 100644 index 00000000..4ca2b27a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_metal_01 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 38b020987b917874c9ab9365844d1617, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 2800000, guid: 38b020987b917874c9ab9365844d1617, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 0 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.mat.meta new file mode 100644 index 00000000..43ec6639 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d95a914ec7156c4a8c498156a39c3d9 +timeCreated: 1441935126 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.png new file mode 100644 index 00000000..8045353f Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.png.meta new file mode 100644 index 00000000..33783b17 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_01.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 38b020987b917874c9ab9365844d1617 +timeCreated: 1442611987 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_02.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_02.mat new file mode 100644 index 00000000..85f9f031 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_02.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_metal_02 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 38b020987b917874c9ab9365844d1617, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 2800000, guid: 38b020987b917874c9ab9365844d1617, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 0 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _SpecColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_02.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_02.mat.meta new file mode 100644 index 00000000..65d49234 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_metal_02.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ca54d76a287321418f3fdb39b1a7c17 +timeCreated: 1442692903 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.mat new file mode 100644 index 00000000..6fbdba5d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_props + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 113f08a024e6c9a4c894881bea7c0fed, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .596078455, g: .588235319, b: .576470613, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.mat.meta new file mode 100644 index 00000000..75b44e37 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3d9562a082e55a4eac388df619cbabb +timeCreated: 1441942036 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.png new file mode 100644 index 00000000..152c35ef Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.png.meta new file mode 100644 index 00000000..c313845a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_props.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 113f08a024e6c9a4c894881bea7c0fed +timeCreated: 1441942036 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.mat new file mode 100644 index 00000000..045a94f6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_support_01 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 960d7afb79decef4b89c179f8bfcfd09, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.mat.meta new file mode 100644 index 00000000..acc613f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a4c121be56c81a40847241a8b289a33 +timeCreated: 1442435518 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.png new file mode 100644 index 00000000..12bb21e9 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.png.meta new file mode 100644 index 00000000..620becbc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_support_01.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 960d7afb79decef4b89c179f8bfcfd09 +timeCreated: 1442436854 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_terrain.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_terrain.mat new file mode 100644 index 00000000..5886e0ae --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_terrain.mat @@ -0,0 +1,194 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_terrain + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: dbba557d7e8d04140b73dc23ba840be3, type: 3} + m_Scale: {x: 25, y: 25} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 25, y: 25} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Diffuse + second: + m_Texture: {fileID: 2800000, guid: 7a9eef7d72cfc49448821479d5b0dd1f, type: 3} + m_Scale: {x: 25, y: 25} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Occlusion + second: + m_Texture: {fileID: 2800000, guid: 3105aa38841fdc1418d31bbbf144205d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Normal + second: + m_Texture: {fileID: 2800000, guid: 7e0fe619dd95e8b4893fffb34ca2af7b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Smoothness + second: 0 + data: + first: + name: _Wind + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _BulgeScale + second: .200000003 + data: + first: + name: _BulgeShape + second: 5 + data: + first: + name: _GlowIntensity + second: 1.20000005 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _GlowColor + second: {r: 1, g: .239148095, b: .110294104, a: 1} + data: + first: + name: _node_6957 + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_terrain.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_terrain.mat.meta new file mode 100644 index 00000000..36242e17 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_terrain.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3fbb64eeb951ac14381179a841926902 +timeCreated: 1441946372 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.mat new file mode 100644 index 00000000..7d9de9be --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: rail_test_01 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHATEST_ON + m_LightmapFlags: 5 + m_CustomRenderQueue: 2450 + stringTagMap: + RenderType: TransparentCutout + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: ec1bbaa29d54842428010ea9b83845fe, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .202999994 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 1 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.mat.meta new file mode 100644 index 00000000..3ddba5f0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6df88c479e4033444a81bbc3b0b097a9 +timeCreated: 1442346334 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.png new file mode 100644 index 00000000..eb07b9ed Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.png.meta new file mode 100644 index 00000000..09158cff --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/Materials/rail_test_01.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: ec1bbaa29d54842428010ea9b83845fe +timeCreated: 1442325893 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/TrainCar.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/TrainCar.prefab new file mode 100644 index 00000000..f8c08e57 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/TrainCar.prefab @@ -0,0 +1,1202 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &102820 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 436778} + - component: {fileID: 3382190} + - component: {fileID: 2305382} + m_Layer: 0 + m_Name: rail_car_wheel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &111826 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 478250} + - component: {fileID: 11416956} + - component: {fileID: 13512236} + m_Layer: 0 + m_Name: JunctionToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &119682 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 407968} + - component: {fileID: 3356568} + - component: {fileID: 2373902} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &130518 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 451932} + - component: {fileID: 3339550} + - component: {fileID: 2389648} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132526 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 495074} + - component: {fileID: 3301654} + - component: {fileID: 2339260} + m_Layer: 0 + m_Name: rail_car_coupling + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132908 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 497572} + - component: {fileID: 11478866} + m_Layer: 0 + m_Name: FrontAxis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &139408 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 433866} + - component: {fileID: 11492322} + - component: {fileID: 13573832} + m_Layer: 0 + m_Name: JunctionToggle (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &143266 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 442336} + - component: {fileID: 11470368} + m_Layer: 0 + m_Name: TrainCar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &153252 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 466658} + m_Layer: 0 + m_Name: ChaseTarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &153506 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 406214} + - component: {fileID: 11494186} + m_Layer: 0 + m_Name: BackAxis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &154970 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 450012} + - component: {fileID: 3355230} + - component: {fileID: 2303014} + m_Layer: 0 + m_Name: rail_car_wheel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &157056 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 472340} + - component: {fileID: 3382752} + - component: {fileID: 2331026} + m_Layer: 0 + m_Name: rail_car_coupling + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &166630 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 442410} + m_Layer: 0 + m_Name: rail_car_body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168738 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 457936} + - component: {fileID: 3325318} + - component: {fileID: 6441064} + - component: {fileID: 2322458} + m_Layer: 0 + m_Name: vehicle_logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &187826 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 404740} + - component: {fileID: 3304060} + - component: {fileID: 2364782} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &190140 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 432216} + - component: {fileID: 3317856} + - component: {fileID: 2367678} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &197704 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 429098} + - component: {fileID: 11406500} + m_Layer: 0 + m_Name: Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &198424 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 451214} + - component: {fileID: 3348712} + - component: {fileID: 6492380} + - component: {fileID: 2344574} + m_Layer: 0 + m_Name: vehicle_logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &404740 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187826} + m_LocalRotation: {x: 0.00000007062884, y: 0.7071069, z: 0.7071067, w: 0.00000002235174} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &406214 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153506} + m_LocalRotation: {x: -0.65174127, y: -0.27428696, z: -0.27428696, w: 0.65174127} + m_LocalPosition: {x: -75.317215, y: 0, z: -85.16213} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 450012} + - {fileID: 433866} + m_Father: {fileID: 442336} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &407968 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119682} + m_LocalRotation: {x: 0.00000007062884, y: 0.7071069, z: 0.7071067, w: 0.00000002235174} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: -1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &429098 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 197704} + m_LocalRotation: {x: 0, y: -0.3542291, z: -0, w: 0.9351587} + m_LocalPosition: {x: -78.69493, y: 0, z: -81.66936} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 466658} + - {fileID: 442410} + m_Father: {fileID: 442336} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &432216 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190140} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &433866 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139408} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 4.68, z: 2.17} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 406214} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &436778 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102820} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.2800007} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 497572} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &442336 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143266} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 39.618294, y: -19.53248, z: 54.854046} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 497572} + - {fileID: 406214} + - {fileID: 429098} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &442410 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166630} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.35, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 432216} + - {fileID: 451932} + - {fileID: 407968} + - {fileID: 404740} + - {fileID: 495074} + - {fileID: 472340} + - {fileID: 451214} + - {fileID: 457936} + m_Father: {fileID: 429098} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &450012 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154970} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0, z: 0.28} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 406214} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &451214 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198424} + m_LocalRotation: {x: 0, y: -0.707107, z: 0, w: 0.70710665} + m_LocalPosition: {x: 1.5189998, y: 0.721001, z: 0.07300156} + m_LocalScale: {x: 0.42813098, y: 0.42813098, z: 0.42813098} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &451932 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130518} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: -1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &457936 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168738} + m_LocalRotation: {x: 0, y: 0.70710635, z: 0, w: 0.7071073} + m_LocalPosition: {x: -1.52, y: 0.72500074, z: -0.06100452} + m_LocalScale: {x: 0.42813084, y: 0.42813098, z: 0.42813087} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &466658 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153252} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -17.08, y: 16.9, z: -53.13} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 429098} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &472340 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 0.12400091, z: -7.766999} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &478250 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111826} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -5.01, z: 2.35} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 497572} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &495074 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132526} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000010430813} + m_LocalPosition: {x: 0, y: 0.124, z: 7.767} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 442410} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &497572 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132908} + m_LocalRotation: {x: -0.6699033, y: -0.22633946, z: -0.22633946, w: 0.66990334} + m_LocalPosition: {x: -81.810776, y: 0, z: -77.94109} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 436778} + - {fileID: 478250} + m_Father: {fileID: 442336} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2303014 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154970} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: cfb41dfe5f2704c42bd82542d42d8509, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2305382 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102820} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: cfb41dfe5f2704c42bd82542d42d8509, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2322458 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168738} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: cb28faac4cf326048ab74f457dfe8e0e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2331026 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157056} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 258cd2fde7ecd5940ba82055ab0a1993, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2339260 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132526} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 258cd2fde7ecd5940ba82055ab0a1993, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2344574 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198424} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: cb28faac4cf326048ab74f457dfe8e0e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2364782 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187826} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2367678 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190140} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2373902 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119682} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2389648 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130518} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3301654 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132526} + m_Mesh: {fileID: 4300000, guid: 352a27f768da8184286150473a8e96c3, type: 3} +--- !u!33 &3304060 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187826} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!33 &3317856 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190140} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!33 &3325318 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168738} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3339550 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130518} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!33 &3348712 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198424} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3355230 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 154970} + m_Mesh: {fileID: 4300000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} +--- !u!33 &3356568 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119682} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!33 &3382190 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102820} + m_Mesh: {fileID: 4300000, guid: ab277e3cf5b9d96439028ce23217a409, type: 3} +--- !u!33 &3382752 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157056} + m_Mesh: {fileID: 4300000, guid: 352a27f768da8184286150473a8e96c3, type: 3} +--- !u!64 &6441064 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168738} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &6492380 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198424} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &11406500 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 197704} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 503.84 + m_MoveMode: 1 + m_Speed: 15 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_OrientationAxis: 0 + m_IgnoreDirection: 1 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.ControllerEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Spline: {fileID: 0} + m_UseCache: 1 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11416956 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 954bff2b3c3a1414ebeb2fbd118508fd, type: 3} + m_Name: + m_EditorClassIdentifier: + UIElement: {fileID: 0} +--- !u!114 &11470368 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143266} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 54e02eba0eec6d44e8a2f17e3553db48, type: 3} + m_Name: + m_EditorClassIdentifier: + Waggon: {fileID: 11406500} + FrontAxis: {fileID: 11478866} + BackAxis: {fileID: 11494186} +--- !u!114 &11478866 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 508.69998 + m_MoveMode: 1 + m_Speed: 15 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_OrientationAxis: 2 + m_IgnoreDirection: 1 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.ControllerEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Spline: {fileID: 0} + m_UseCache: 1 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11492322 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 954bff2b3c3a1414ebeb2fbd118508fd, type: 3} + m_Name: + m_EditorClassIdentifier: + UIElement: {fileID: 0} +--- !u!114 &11494186 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 1 + m_Position: 498.98 + m_MoveMode: 1 + m_Speed: 15 + m_Direction: 0 + m_Clamping: 1 + m_PlayAutomatically: 1 + m_OrientationMode: 1 + m_OrientationAxis: 2 + m_IgnoreDirection: 1 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.ControllerEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Spline: {fileID: 0} + m_UseCache: 1 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!135 &13512236 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 111826} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!135 &13573832 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 139408} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 143266} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/TrainCar.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/TrainCar.prefab.meta new file mode 100644 index 00000000..1a5dc424 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/TrainCar.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39089712dba12024695770a9a81f5205 +timeCreated: 1442546684 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_cap.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_cap.fbx new file mode 100644 index 00000000..6e8ce5ee Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_cap.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_cap.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_cap.fbx.meta new file mode 100644 index 00000000..8a47fa6a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_cap.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 00d2e0d1a4d1b0f46a67109828a5fa18 +timeCreated: 1442548462 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_support.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_support.fbx new file mode 100644 index 00000000..216d9398 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_support.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_support.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_support.fbx.meta new file mode 100644 index 00000000..8eb20210 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_bridge_support.fbx.meta @@ -0,0 +1,78 @@ +fileFormatVersion: 2 +guid: 51d6f4c434846684d989fa66e7a4edff +timeCreated: 1442016637 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: Mesh1 + 100002: //RootNode + 400000: Mesh1 + 400002: //RootNode + 2300000: Mesh1 + 2300002: //RootNode + 3300000: Mesh1 + 3300002: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body.prefab new file mode 100644 index 00000000..9c16fe95 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body.prefab @@ -0,0 +1,317 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &109702 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 475244} + - component: {fileID: 3310590} + - component: {fileID: 2375118} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150608 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 479036} + - component: {fileID: 3332460} + - component: {fileID: 2398482} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &160776 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 408224} + m_Layer: 0 + m_Name: rail_car_body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &164088 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 466218} + - component: {fileID: 3330992} + - component: {fileID: 2371920} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182600 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 451750} + - component: {fileID: 3319104} + - component: {fileID: 2320066} + m_Layer: 0 + m_Name: rail_car_body_half_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &408224 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160776} + 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_Children: + - {fileID: 475244} + - {fileID: 451750} + - {fileID: 466218} + - {fileID: 479036} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &451750 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182600} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: -1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 408224} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &466218 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164088} + m_LocalRotation: {x: 0.00000007062884, y: 0.7071069, z: 0.7071067, w: 0.00000002235174} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: -1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 408224} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &475244 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109702} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 408224} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &479036 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150608} + m_LocalRotation: {x: 0.00000007062884, y: 0.7071069, z: 0.7071067, w: 0.00000002235174} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 408224} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2320066 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182600} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2371920 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164088} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2375118 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109702} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2398482 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150608} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: f0926acb1fc4a7b4a89f1a3f1a3ad9ff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3310590 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109702} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!33 &3319104 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182600} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!33 &3330992 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164088} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!33 &3332460 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150608} + m_Mesh: {fileID: 4300000, guid: 440a27145d6e985469d56f8937beb858, type: 3} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 160776} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body.prefab.meta new file mode 100644 index 00000000..05e1bb9f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62a7efa8c665fb443bbc68e333038f15 +timeCreated: 1442546364 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body_half.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body_half.fbx new file mode 100644 index 00000000..6fbf7a8c Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body_half.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body_half.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body_half.fbx.meta new file mode 100644 index 00000000..bfabf19f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_body_half.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 440a27145d6e985469d56f8937beb858 +timeCreated: 1442544549 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: rail_car_body_fixed[_691628] + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_coupling.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_coupling.fbx new file mode 100644 index 00000000..98815f0b Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_coupling.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_coupling.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_coupling.fbx.meta new file mode 100644 index 00000000..a717f224 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_coupling.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 352a27f768da8184286150473a8e96c3 +timeCreated: 1442546886 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.FBX b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.FBX new file mode 100644 index 00000000..cd641405 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.FBX differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.FBX.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.FBX.meta new file mode 100644 index 00000000..46da2a64 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.FBX.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: d8ee59507f565064ca1b4e46c4b734ec +timeCreated: 1442523212 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: rail_car_tiny_raw_fixed[12158] + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.prefab new file mode 100644 index 00000000..3d45271d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.prefab @@ -0,0 +1,333 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &143906 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 496716} + - component: {fileID: 3360836} + - component: {fileID: 6480248} + - component: {fileID: 2372406} + m_Layer: 0 + m_Name: vehicle_logo_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145896 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 490416} + - component: {fileID: 3360708} + - component: {fileID: 6486020} + - component: {fileID: 2360088} + m_Layer: 0 + m_Name: vehicle_logo_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &156102 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 445586} + - component: {fileID: 3349122} + - component: {fileID: 6470380} + - component: {fileID: 2323244} + m_Layer: 0 + m_Name: vehicle_logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &160194 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 460312} + - component: {fileID: 3382152} + - component: {fileID: 2340092} + m_Layer: 0 + m_Name: rail_car_tiny + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &445586 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 156102} + m_LocalRotation: {x: 0.99923444, y: -0.0000000684752, z: -0.00000018551262, w: 0.039122604} + m_LocalPosition: {x: -0.988, y: 0.469, z: 1.634} + m_LocalScale: {x: 0.42813116, y: 0.42813098, z: 0.4281311} + m_Children: [] + m_Father: {fileID: 460312} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &460312 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160194} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0.238, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 445586} + - {fileID: 496716} + - {fileID: 490416} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &490416 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145896} + m_LocalRotation: {x: 0.43045956, y: -0.43045944, z: -0.56098545, w: 0.5609854} + m_LocalPosition: {x: 1.534, y: 0.642, z: 1.585} + m_LocalScale: {x: 0.24999993, y: 0.25, z: 0.24999999} + m_Children: [] + m_Father: {fileID: 460312} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &496716 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143906} + m_LocalRotation: {x: 0.49999997, y: 0.50000006, z: 0.50000036, w: 0.4999996} + m_LocalPosition: {x: -1.512, y: 0.788, z: 1.623} + m_LocalScale: {x: 0.25000006, y: 0.25000003, z: 0.25000006} + m_Children: [] + m_Father: {fileID: 460312} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2323244 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 156102} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: cb28faac4cf326048ab74f457dfe8e0e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2340092 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160194} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 59a5c9f887f9d6847af1e5f268ed1e8f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2360088 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145896} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4d41604faa020e7458f93340b1735930, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2372406 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143906} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4d41604faa020e7458f93340b1735930, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3349122 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 156102} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3360708 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145896} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3360836 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143906} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3382152 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160194} + m_Mesh: {fileID: 4300000, guid: d8ee59507f565064ca1b4e46c4b734ec, type: 3} +--- !u!64 &6470380 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 156102} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &6480248 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 143906} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &6486020 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145896} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 160194} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.prefab.meta new file mode 100644 index 00000000..0e59b452 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_tiny.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5477333d439b6c4f8fb42e2136f1997 +timeCreated: 1442523415 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_wheel.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_wheel.fbx new file mode 100644 index 00000000..68017d03 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_wheel.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_wheel.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_wheel.fbx.meta new file mode 100644 index 00000000..44a438ae --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_car_wheel.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: ab277e3cf5b9d96439028ce23217a409 +timeCreated: 1442531675 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.fbx new file mode 100644 index 00000000..74146a18 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.fbx.meta new file mode 100644 index 00000000..0b476d29 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.fbx.meta @@ -0,0 +1,220 @@ +fileFormatVersion: 2 +guid: 2b510ea19c8a54c43ab53a564cb3db98 +timeCreated: 1441938154 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: Component_11_1 + 100002: Component_11_2 + 100004: Component_11_3 + 100006: Component_11_4 + 100008: Component_11_5 + 100010: Component_11_6 + 100012: Component_11_7 + 100014: Component_12_1 + 100016: Component_12_2 + 100018: Component_12_3 + 100020: Component_12_4 + 100022: Component_12_5 + 100024: Component_12_6 + 100026: Component_13_1 + 100028: Component_13_2 + 100030: Component_13_3 + 100032: Component_13_4 + 100034: Component_13_5 + 100036: Component_13_6 + 100038: Component_13_7 + 100040: Component_13_8 + 100042: Mesh1 + 100044: Mesh10 + 100046: Mesh11 + 100048: Mesh12 + 100050: Mesh13 + 100052: Mesh14 + 100054: Mesh15 + 100056: Mesh16 + 100058: Mesh17 + 100060: Mesh18 + 100062: Mesh19 + 100064: Mesh2 + 100066: Mesh20 + 100068: Mesh21 + 100070: Mesh3 + 100072: Mesh4 + 100074: Mesh5 + 100076: Mesh6 + 100078: Mesh7 + 100080: Mesh8 + 100082: Mesh9 + 100084: //RootNode + 400000: Component_11_1 + 400002: Component_11_2 + 400004: Component_11_3 + 400006: Component_11_4 + 400008: Component_11_5 + 400010: Component_11_6 + 400012: Component_11_7 + 400014: Component_12_1 + 400016: Component_12_2 + 400018: Component_12_3 + 400020: Component_12_4 + 400022: Component_12_5 + 400024: Component_12_6 + 400026: Component_13_1 + 400028: Component_13_2 + 400030: Component_13_3 + 400032: Component_13_4 + 400034: Component_13_5 + 400036: Component_13_6 + 400038: Component_13_7 + 400040: Component_13_8 + 400042: Mesh1 + 400044: Mesh10 + 400046: Mesh11 + 400048: Mesh12 + 400050: Mesh13 + 400052: Mesh14 + 400054: Mesh15 + 400056: Mesh16 + 400058: Mesh17 + 400060: Mesh18 + 400062: Mesh19 + 400064: Mesh2 + 400066: Mesh20 + 400068: Mesh21 + 400070: Mesh3 + 400072: Mesh4 + 400074: Mesh5 + 400076: Mesh6 + 400078: Mesh7 + 400080: Mesh8 + 400082: Mesh9 + 400084: //RootNode + 2300000: Mesh1 + 2300002: Mesh10 + 2300004: Mesh11 + 2300006: Mesh12 + 2300008: Mesh13 + 2300010: Mesh14 + 2300012: Mesh15 + 2300014: Mesh16 + 2300016: Mesh17 + 2300018: Mesh18 + 2300020: Mesh19 + 2300022: Mesh2 + 2300024: Mesh20 + 2300026: Mesh21 + 2300028: Mesh3 + 2300030: Mesh4 + 2300032: Mesh5 + 2300034: Mesh6 + 2300036: Mesh7 + 2300038: Mesh8 + 2300040: Mesh9 + 2300042: //RootNode + 3300000: Mesh1 + 3300002: Mesh10 + 3300004: Mesh11 + 3300006: Mesh12 + 3300008: Mesh13 + 3300010: Mesh14 + 3300012: Mesh15 + 3300014: Mesh16 + 3300016: Mesh17 + 3300018: Mesh18 + 3300020: Mesh19 + 3300022: Mesh2 + 3300024: Mesh20 + 3300026: Mesh21 + 3300028: Mesh3 + 3300030: Mesh4 + 3300032: Mesh5 + 3300034: Mesh6 + 3300036: Mesh7 + 3300038: Mesh8 + 3300040: Mesh9 + 3300042: //RootNode + 4300000: Mesh1 + 4300002: Mesh2 + 4300004: Mesh3 + 4300006: Mesh4 + 4300008: Mesh5 + 4300010: Mesh6 + 4300012: Mesh7 + 4300014: Mesh8 + 4300016: Mesh9 + 4300018: Mesh10 + 4300020: Mesh11 + 4300022: Mesh12 + 4300024: Mesh13 + 4300026: Mesh14 + 4300028: Mesh15 + 4300030: Mesh16 + 4300032: Mesh17 + 4300034: Mesh18 + 4300036: Mesh19 + 4300038: Mesh20 + 4300040: Mesh21 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.prefab new file mode 100644 index 00000000..12889bad --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.prefab @@ -0,0 +1,81 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &180954 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 443322} + - component: {fileID: 3367288} + - component: {fileID: 2348936} + m_Layer: 0 + m_Name: rail_grass_01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &443322 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180954} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 19.631878, y: 0.156, z: 2.6165092} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2348936 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180954} + m_Enabled: 1 + m_CastShadows: 2 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 0cb282119d9749443b47fa8e7542a252, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3367288 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 180954} + m_Mesh: {fileID: 4300000, guid: 2b510ea19c8a54c43ab53a564cb3db98, type: 3} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 180954} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.prefab.meta new file mode 100644 index 00000000..effa13cd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_grass_01.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3d687b9d8f0ac449bb2be97ea7ed748 +timeCreated: 1441939357 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_post.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_post.fbx new file mode 100644 index 00000000..6432698c Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_post.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_post.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_post.fbx.meta new file mode 100644 index 00000000..0fc4c25e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_post.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 1b4d7b9afdf68ee4c8ffb212e7ee7606 +timeCreated: 1441943375 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.fbx new file mode 100644 index 00000000..d870744f Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.fbx.meta new file mode 100644 index 00000000..c0afae13 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.fbx.meta @@ -0,0 +1,78 @@ +fileFormatVersion: 2 +guid: 6ff5c7ae538469f42a5b3bbdd2f0fe91 +timeCreated: 1441931775 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: Mesh1 + 100002: //RootNode + 400000: Mesh1 + 400002: //RootNode + 2300000: Mesh1 + 2300002: //RootNode + 3300000: Mesh1 + 3300002: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.prefab new file mode 100644 index 00000000..c1384e25 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.prefab @@ -0,0 +1,81 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &153034 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 442464} + - component: {fileID: 3323764} + - component: {fileID: 2312364} + m_Layer: 0 + m_Name: rail_sleeper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &442464 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153034} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.176} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2312364 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153034} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: cf40427a3d8a89844a6953a1ac2de635, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3323764 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153034} + m_Mesh: {fileID: 4300000, guid: 6ff5c7ae538469f42a5b3bbdd2f0fe91, type: 3} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 153034} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.prefab.meta new file mode 100644 index 00000000..e023f300 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0112d1bd31999e749b942f5ee27ba3bd +timeCreated: 1441939359 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_a.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_a.fbx new file mode 100644 index 00000000..6433c28c Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_a.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_a.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_a.fbx.meta new file mode 100644 index 00000000..f5da8f4b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_a.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: db95e59c116ef034eb7d8478fc8c85ca +timeCreated: 1441942036 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_b.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_b.fbx new file mode 100644 index 00000000..0706a59a Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_b.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_b.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_b.fbx.meta new file mode 100644 index 00000000..ab29d645 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_b.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 5873b19dcde231d48939d2ddacd8d14f +timeCreated: 1441942036 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_c.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_c.fbx new file mode 100644 index 00000000..bfe70b5d Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_c.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_c.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_c.fbx.meta new file mode 100644 index 00000000..b9a95610 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_c.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 90c5239fbdc98f347b17525ec6d1569f +timeCreated: 1441942036 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_d.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_d.fbx new file mode 100644 index 00000000..daef0fa3 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_d.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_d.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_d.fbx.meta new file mode 100644 index 00000000..eaf98ba5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_sleeper_d.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: ea5c61c14ea67cf419612c0a501df4bb +timeCreated: 1441942036 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_support.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_support.fbx new file mode 100644 index 00000000..722a7255 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_support.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_support.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_support.fbx.meta new file mode 100644 index 00000000..84c5e029 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_support.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 6a2cc975c4ce2824b8bf4a727feccbb0 +timeCreated: 1442435518 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_a.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_a.fbx new file mode 100644 index 00000000..37109eea Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_a.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_a.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_a.fbx.meta new file mode 100644 index 00000000..f103482f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_a.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 8a7d08206a43f934eabc16cdaea15657 +timeCreated: 1442438674 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_b.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_b.fbx new file mode 100644 index 00000000..5db30448 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_b.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_b.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_b.fbx.meta new file mode 100644 index 00000000..8f8ce9c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Rail/rail_wire_attachment_b.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 1e95bb7ddc661294da284163a40291c3 +timeCreated: 1442438674 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship.meta new file mode 100644 index 00000000..d759fca6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 33a3bb3b02d103248a7a45250e04f1ee +folderAsset: yes +timeCreated: 1441851208 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials.meta new file mode 100644 index 00000000..1ed71b90 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b17bde9148bc2da4f84367af1507339b +folderAsset: yes +timeCreated: 1440413916 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.mat new file mode 100644 index 00000000..701c4e79 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.mat @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ship_fx_01 + m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 1eef4d436ce539b4a99eb5fce36054c6, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: + second: 1 + - first: + name: _InvFade + second: 1 + m_Colors: + - first: + name: + second: {r: 0.56078434, g: 0.56078434, b: 0.56078434, a: 1} + - first: + name: _TintColor + second: {r: 0.2509804, g: 0.7529412, b: 1, a: 0.15294118} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.mat.meta new file mode 100644 index 00000000..ce1e1474 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf4292b17c0db714d9da9355221ebd99 +timeCreated: 1440413917 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.png new file mode 100644 index 00000000..e87d6dac Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.png.meta new file mode 100644 index 00000000..6b6759ac --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_fx_01.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 1eef4d436ce539b4a99eb5fce36054c6 +timeCreated: 1440413968 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01.mat new file mode 100644 index 00000000..0efcd934 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01.mat @@ -0,0 +1,184 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ship_material_01 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 7741b02e79458a8418463e9f6bc05c50, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: eba18364fceeb044aae3582277a278bc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 2800000, guid: 1b5fce646213f9c47a3834e53ad3eb37, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: eba18364fceeb044aae3582277a278bc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 2800000, guid: 7741b02e79458a8418463e9f6bc05c50, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 0.3, y: 0.3} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 0.507 + - first: + name: _CurvatureBoostSelf + second: 0 + - first: + name: _CurvatureBoostUniform + second: 0 + - first: + name: _CurvaturePower + second: 1 + - first: + name: _CurvatureWearFactor + second: 0.666 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 0.8 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _MainAlbedo + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01.mat.meta new file mode 100644 index 00000000..e5f70e43 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e644d34adc0982e4584dae581d62b753 +timeCreated: 1440413916 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_packed.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_packed.png new file mode 100644 index 00000000..b108e5a3 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_packed.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_packed.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_packed.png.meta new file mode 100644 index 00000000..11fc30aa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_packed.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: eba18364fceeb044aae3582277a278bc +timeCreated: 1442614658 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_vcols.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_vcols.png new file mode 100644 index 00000000..e89e9a83 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_vcols.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_vcols.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_vcols.png.meta new file mode 100644 index 00000000..5d50ab86 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/Materials/ship_material_01_vcols.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 7741b02e79458a8418463e9f6bc05c50 +timeCreated: 1442614657 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_final.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_final.fbx new file mode 100644 index 00000000..772cc088 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_final.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_final.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_final.fbx.meta new file mode 100644 index 00000000..d21310b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_final.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: b05649bcdf167a24db2cedd2c5881ee3 +timeCreated: 1440339843 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_fx_01.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_fx_01.fbx new file mode 100644 index 00000000..50d51db0 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_fx_01.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_fx_01.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_fx_01.fbx.meta new file mode 100644 index 00000000..4df17a7a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Ship/ship_fx_01.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: faf49e0a7f5c2e14481335d8ed99d706 +timeCreated: 1440341529 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Sleeper.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Sleeper.fbx new file mode 100644 index 00000000..6a236881 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Sleeper.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Sleeper.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Sleeper.fbx.meta new file mode 100644 index 00000000..ac7cc219 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Sleeper.fbx.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 4a84da7147759ca48991787feb16257a +ModelImporter: + serializedVersion: 21100 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 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: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles.meta new file mode 100644 index 00000000..74f321a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3df1e78cc088ffb4cbf72fa0191bafae +folderAsset: yes +timeCreated: 1442263014 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials.meta new file mode 100644 index 00000000..b33531c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2f73ff1e172bbea46b0b86ad329511da +folderAsset: yes +timeCreated: 1442267581 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/default.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/default.mat new file mode 100644 index 00000000..99440daa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/default.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: default + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .588, g: .588, b: .588, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/default.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/default.mat.meta new file mode 100644 index 00000000..c4a0b430 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/default.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d0c8e8404688bd43888b423616214a6 +timeCreated: 1442268494 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.mat new file mode 100644 index 00000000..0ad1a1a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.mat @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: vehicle_offroad_fx_01 + m_Shader: {fileID: 4800000, guid: 459ce014ae96ed3438d05af3f6f12f71, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: e29d435c2a5bacf478b423798b139e90, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _InvFade + second: 1 + data: + first: + name: _FresnelExponent + second: 2.42000008 + data: + first: + name: _FresnelBoost + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .56078434, g: .56078434, b: .56078434, a: 1} + data: + first: + name: _TintColor + second: {r: 1, g: 1, b: 1, a: .347000003} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.mat.meta new file mode 100644 index 00000000..c8017e4c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0660ea65c1d955c4abd3cdcea14bbcb0 +timeCreated: 1442459211 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.png new file mode 100644 index 00000000..9238996a Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.png.meta new file mode 100644 index 00000000..350ee8e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_01.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: e29d435c2a5bacf478b423798b139e90 +timeCreated: 1442614719 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_02.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_02.mat new file mode 100644 index 00000000..89022982 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_02.mat @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: vehicle_offroad_fx_02 + m_Shader: {fileID: 4800000, guid: 459ce014ae96ed3438d05af3f6f12f71, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: e29d435c2a5bacf478b423798b139e90, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _InvFade + second: 1 + data: + first: + name: _FresnelExponent + second: 2.42000008 + data: + first: + name: _FresnelBoost + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .56078434, g: .56078434, b: .56078434, a: 1} + data: + first: + name: _TintColor + second: {r: .25, g: .565517008, b: 1, a: .458999991} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_02.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_02.mat.meta new file mode 100644 index 00000000..882fdf16 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_fx_02.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a4e2809a54b4cf469c7bc87f84ba53b +timeCreated: 1442459511 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.mat new file mode 100644 index 00000000..c57a8151 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.mat @@ -0,0 +1,262 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: vehicle_offroad_packed + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Diffuse + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Edge + second: + m_Texture: {fileID: 2800000, guid: 1769c1724fffab2499432e75c63f041e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 96ff5bef308608146891b3532b1777aa, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 2800000, guid: 343af76594988a042b668db5afa48f06, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Normals + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _Surface + second: + m_Texture: {fileID: 2800000, guid: 113b55dc7f38cb9428b7b3b79bc4590d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexAttributes + second: + m_Texture: {fileID: 2800000, guid: 343af76594988a042b668db5afa48f06, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _SurfaceTexColors + second: + m_Texture: {fileID: 2800000, guid: 96ff5bef308608146891b3532b1777aa, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _TriplanarAttributes + second: + m_Texture: {fileID: 2800000, guid: b323a59f586d4cc4aac4468c3890af85, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_3386 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_4764 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _node_5610 + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _AlbedoBoost + second: 1 + - first: + name: _Bands + second: 8 + - first: + name: _BumpScale + second: 1 + - first: + name: _CurvatureAlbedoBoost + second: 1 + - first: + name: _CurvatureBoost + second: 0.784 + - first: + name: _CurvatureBoostSelf + second: 1 + - first: + name: _CurvatureBoostUniform + second: 0.8 + - first: + name: _CurvaturePower + second: 8 + - first: + name: _CurvatureWearFactor + second: 0.118 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DirtBoost + second: 0 + - first: + name: _DirtOcclusionCoverage + second: 0.358 + - first: + name: _DstBlend + second: 0 + - first: + name: _EdgeFactor + second: 1 + - first: + name: _EdgeMetalness + second: 1 + - first: + name: _EdgeSmoothness + second: 1 + - first: + name: _Gloss + second: 0.4511278 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 1 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _MainMetalness + second: 0 + - first: + name: _MainSmoothness + second: 0.198 + - first: + name: _Metallic + second: 1 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Sharpness + second: 10.6 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _TriplanarSharpness + second: 6.265205 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _ColorMain + second: {r: 1, g: 0.8040568, b: 0.38235295, a: 1} + - first: + name: _ColorSecondary + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - first: + name: _Diffuse + second: {r: 0.9117647, g: 0.8760425, b: 0.8179066, a: 1} + - first: + name: _EdgeAlbedo + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _Emission + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _LightWrapping + second: {r: 0.9058824, g: 0.4941176, b: 0.4901961, a: 1} + - first: + name: _MainAlbedo + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.mat.meta new file mode 100644 index 00000000..081914a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e50eb4f703cc9b04bb5e19596cf26f8e +timeCreated: 1442267581 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.png new file mode 100644 index 00000000..116bc094 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.png.meta new file mode 100644 index 00000000..091cebd5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_packed.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 343af76594988a042b668db5afa48f06 +timeCreated: 1442615614 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_vcols.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_vcols.png new file mode 100644 index 00000000..7d8d3612 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_vcols.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_vcols.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_vcols.png.meta new file mode 100644 index 00000000..349b0e20 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/Materials/vehicle_offroad_vcols.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 96ff5bef308608146891b3532b1777aa +timeCreated: 1442615614 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.fbx new file mode 100644 index 00000000..efc156d0 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.fbx.meta new file mode 100644 index 00000000..a3485a77 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.fbx.meta @@ -0,0 +1,75 @@ +fileFormatVersion: 2 +guid: 5b5041355dc3b554ca8b3259cd4fc80b +timeCreated: 1442267581 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: vehicle_offroad_half_raw_combined[_12466] + 4300002: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 1 + useFileUnits: 1 + optimizeMeshForGPU: 0 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 0 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.prefab new file mode 100644 index 00000000..57710865 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.prefab @@ -0,0 +1,471 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &129384 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 445198} + - component: {fileID: 3322014} + - component: {fileID: 2303862} + m_Layer: 0 + m_Name: vehicle_offroad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &142978 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 430264} + - component: {fileID: 3340136} + - component: {fileID: 6402096} + - component: {fileID: 2344006} + m_Layer: 0 + m_Name: vehicle_logo_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148662 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 466976} + - component: {fileID: 3321630} + - component: {fileID: 2344188} + m_Layer: 0 + m_Name: vehicle_offroad_fx_02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &165750 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 415404} + - component: {fileID: 3325078} + - component: {fileID: 6484568} + - component: {fileID: 2332906} + m_Layer: 0 + m_Name: vehicle_logo_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168086 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 418644} + - component: {fileID: 3329238} + - component: {fileID: 6407980} + - component: {fileID: 2317630} + m_Layer: 0 + m_Name: vehicle_logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &176232 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 443248} + - component: {fileID: 3324270} + - component: {fileID: 2327910} + m_Layer: 0 + m_Name: vehicle_offroad_fx_01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &415404 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165750} + m_LocalRotation: {x: -0.00000023841858, y: 0.70710677, z: 0.7071068, w: -0.00000044875875} + m_LocalPosition: {x: -0.544, y: -1.5118, z: 1.174} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_Children: [] + m_Father: {fileID: 445198} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &418644 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168086} + m_LocalRotation: {x: 0.6766043, y: 0.6766039, z: 0.20544308, w: 0.20544331} + m_LocalPosition: {x: -0.803, y: 0.006, z: 1.891} + m_LocalScale: {x: 0.42813098, y: 0.42813098, z: 0.42813098} + m_Children: [] + m_Father: {fileID: 445198} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &430264 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142978} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: -0.511, y: 1.512, z: 1.174} + m_LocalScale: {x: 0.24999999, y: 0.25, z: 0.25000003} + m_Children: [] + m_Father: {fileID: 445198} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &443248 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176232} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 445198} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &445198 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 129384} + m_LocalRotation: {x: -0.5, y: -0.5, z: -0.5, w: 0.5} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 466976} + - {fileID: 443248} + - {fileID: 418644} + - {fileID: 415404} + - {fileID: 430264} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: -90.00001, y: 0, z: -90.00001} +--- !u!4 &466976 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148662} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 445198} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2303862 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 129384} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: e50eb4f703cc9b04bb5e19596cf26f8e, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2317630 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168086} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4d41604faa020e7458f93340b1735930, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2327910 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176232} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 0660ea65c1d955c4abd3cdcea14bbcb0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2332906 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165750} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4d41604faa020e7458f93340b1735930, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2344006 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142978} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4d41604faa020e7458f93340b1735930, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2344188 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148662} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 2a4e2809a54b4cf469c7bc87f84ba53b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3321630 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148662} + m_Mesh: {fileID: 4300000, guid: caf12178d076757488c06364c3a8e518, type: 3} +--- !u!33 &3322014 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 129384} + m_Mesh: {fileID: 4300002, guid: 5b5041355dc3b554ca8b3259cd4fc80b, type: 3} +--- !u!33 &3324270 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176232} + m_Mesh: {fileID: 4300000, guid: e734530e4ec3bae479a0fc51dacbec7f, type: 3} +--- !u!33 &3325078 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165750} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3329238 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168086} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &3340136 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142978} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &6402096 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142978} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &6407980 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168086} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &6484568 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165750} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 129384} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.prefab.meta new file mode 100644 index 00000000..57e8f8d2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19d19d9eb3c0c0448b2dd42b12951170 +timeCreated: 1442459809 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_01.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_01.fbx new file mode 100644 index 00000000..96546e7e Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_01.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_01.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_01.fbx.meta new file mode 100644 index 00000000..86aef3a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_01.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: e734530e4ec3bae479a0fc51dacbec7f +timeCreated: 1442459204 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_02.fbx b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_02.fbx new file mode 100644 index 00000000..9014a3b8 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_02.fbx differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_02.fbx.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_02.fbx.meta new file mode 100644 index 00000000..7dc91dcb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Objects/Vehicles/vehicle_offroad_fx_02.fbx.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: caf12178d076757488c06364c3a8e518 +timeCreated: 1442459204 +licenseType: Store +ModelImporter: + serializedVersion: 18 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Mesh1 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: .5 + animationPositionError: .5 + animationScaleError: .5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + splitTangentsAcrossUV: 1 + normalImportMode: 0 + tangentImportMode: 1 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: .5 + foreArmTwist: .5 + upperLegTwist: .5 + legTwist: .5 + armStretch: .0500000007 + legStretch: .0500000007 + feetSpacing: 0 + rootMotionBoneName: + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs.meta new file mode 100644 index 00000000..b6084466 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7ce064667b12b9f4d87c86ce93075ab1 +folderAsset: yes +timeCreated: 1432299456 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Checkpoint.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Checkpoint.prefab new file mode 100644 index 00000000..df75f429 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Checkpoint.prefab @@ -0,0 +1,476 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &120392 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 451860} + - component: {fileID: 3312414} + - component: {fileID: 2366262} + m_Layer: 0 + m_Name: other_ring_fx + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &128638 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 441990} + - component: {fileID: 3344038} + - component: {fileID: 2395202} + m_Layer: 0 + m_Name: other_ring_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &131902 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 482822} + m_Layer: 0 + m_Name: other_ring + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &137342 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 410614} + - component: {fileID: 3369816} + - component: {fileID: 2364438} + m_Layer: 0 + m_Name: other_ring_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &153134 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 442486} + - component: {fileID: 3399090} + - component: {fileID: 2353186} + m_Layer: 0 + m_Name: other_ring_fx + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &159084 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 481836} + - component: {fileID: 11485522} + m_Layer: 0 + m_Name: Checkpoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &172670 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 463984} + - component: {fileID: 3382492} + - component: {fileID: 2368564} + m_Layer: 0 + m_Name: other_ring_uv2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &410614 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137342} + m_LocalRotation: {x: 0.35355166, y: -0.6123735, z: 0.6123735, w: -0.35355163} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 482822} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &441990 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128638} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 482822} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &442486 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153134} + m_LocalRotation: {x: -0.49999884, y: 0.50000095, z: -0.49999884, w: 0.5000014} + m_LocalPosition: {x: -0, y: -0, z: -1.167} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 482822} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &451860 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120392} + m_LocalRotation: {x: 0.5000001, y: 0.5, z: 0.5, w: 0.49999994} + m_LocalPosition: {x: -0, y: -0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 482822} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &463984 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172670} + m_LocalRotation: {x: -0.35355428, y: -0.6123719, z: 0.6123719, w: 0.35355428} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 482822} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &481836 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159084} + m_LocalRotation: {x: -0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0.0000011920929, z: 19.999998} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 482822} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &482822 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 131902} + m_LocalRotation: {x: -0.7071069, y: 0, z: 0, w: 0.70710677} + m_LocalPosition: {x: 0, y: -0, z: 0} + m_LocalScale: {x: 6, y: 6, z: 6} + m_Children: + - {fileID: 441990} + - {fileID: 463984} + - {fileID: 410614} + - {fileID: 451860} + - {fileID: 442486} + m_Father: {fileID: 481836} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2353186 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153134} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 211bde4fe9599bf4c84c5e40e994b404, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2364438 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137342} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b6d1a838997cdb74ebbd6d9883551835, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2366262 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120392} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 211bde4fe9599bf4c84c5e40e994b404, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2368564 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172670} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b6d1a838997cdb74ebbd6d9883551835, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2395202 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128638} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b6d1a838997cdb74ebbd6d9883551835, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3312414 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 120392} + m_Mesh: {fileID: 4300000, guid: 33dce83cdb6948247ba5a483fe0db390, type: 3} +--- !u!33 &3344038 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 128638} + m_Mesh: {fileID: 4300000, guid: b49b0346a25d14b46bb04f1ad98478ac, type: 3} +--- !u!33 &3369816 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137342} + m_Mesh: {fileID: 4300000, guid: b49b0346a25d14b46bb04f1ad98478ac, type: 3} +--- !u!33 &3382492 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 172670} + m_Mesh: {fileID: 4300000, guid: b49b0346a25d14b46bb04f1ad98478ac, type: 3} +--- !u!33 &3399090 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153134} + m_Mesh: {fileID: 4300000, guid: 33dce83cdb6948247ba5a483fe0db390, type: 3} +--- !u!114 &11485522 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 159084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dacc8a2ff207fca49bdaf5d45a943d80, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + UpdateIn: 0 + m_PositionMode: 0 + m_Position: 0 + m_MoveMode: 0 + m_Speed: 0 + m_Direction: 0 + m_Clamping: 0 + m_PlayAutomatically: 1 + m_OrientationMode: 2 + m_OrientationAxis: 0 + m_IgnoreDirection: 0 + m_DampingDirection: 0 + m_DampingUp: 0 + m_OffsetAngle: 0 + m_OffsetRadius: 0 + m_OffsetCompensation: 1 + onInitialized: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.ControllerEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Spline: {fileID: 0} + m_UseCache: 0 + connectionBehavior: 0 + allowDirectionChange: 1 + rejectCurrentSpline: 1 + rejectTooDivergentSplines: 0 + maxAllowedDivergenceAngle: 90 + connectionCustomSelector: {fileID: 0} + m_OnControlPointReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnEndReached: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnSwitch: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.Controllers.CurvySplineMoveEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 0} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 033dc10817dc0b34eaf876897c62889e, type: 2} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 159084} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Checkpoint.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Checkpoint.prefab.meta new file mode 100644 index 00000000..9030c616 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Checkpoint.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8a09b0f1c96bfbe4f9a1ebc232bd2f64 +timeCreated: 1432299449 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailBlock.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailBlock.prefab new file mode 100644 index 00000000..5642e672 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailBlock.prefab @@ -0,0 +1,404 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &5782803670599948109 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5785955877103874077} + m_Layer: 0 + m_Name: RailBlock + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5785955877103874077 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5782803670599948109} + 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_Children: + - {fileID: 5788424862503177409} + - {fileID: 5785747030710279145} + - {fileID: 5785660123192957703} + - {fileID: 5788778265078341863} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5783183437730949005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5788424862503177409} + - component: {fileID: 5778146947792965757} + - component: {fileID: 5769558127883665693} + m_Layer: 0 + m_Name: Rail left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5788424862503177409 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783183437730949005} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: -0.8, y: 0.2515847, z: -0.08} + m_LocalScale: {x: 1.2750001, y: 0.1, z: 0.10000004} + m_Children: [] + m_Father: {fileID: 5785955877103874077} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5778146947792965757 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783183437730949005} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5769558127883665693 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783183437730949005} + 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: de34ef223168a5346b2bf29acbab9b95, 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: 1 + 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!1 &5783514360650349919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5785660123192957703} + - component: {fileID: 5779164202990701429} + - component: {fileID: 5771330784498657311} + - component: {fileID: 5842366081658390641} + m_Layer: 0 + m_Name: Sleeper 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5785660123192957703 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783514360650349919} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0.12579235, z: -0.325} + m_LocalScale: {x: 2.5541, y: 2.5541, z: 2.5541} + m_Children: [] + m_Father: {fileID: 5785955877103874077} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5779164202990701429 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783514360650349919} + m_Mesh: {fileID: 8674929239458529072, guid: 4a84da7147759ca48991787feb16257a, type: 3} +--- !u!23 &5771330784498657311 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783514360650349919} + 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: 2b639ca387b3c0e439013a4b86cb24ff, 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!95 &5842366081658390641 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783514360650349919} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 4496306d6bafa5d448eac8d6f173aa75, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &5783543332530398889 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5785747030710279145} + - component: {fileID: 5781973372882448855} + - component: {fileID: 5771278705649165149} + m_Layer: 0 + m_Name: Rail right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5785747030710279145 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783543332530398889} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0.8, y: 0.2515847, z: -0.08} + m_LocalScale: {x: 1.2750001, y: 0.1, z: 0.10000004} + m_Children: [] + m_Father: {fileID: 5785955877103874077} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5781973372882448855 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783543332530398889} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5771278705649165149 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783543332530398889} + 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: de34ef223168a5346b2bf29acbab9b95, 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: 1 + 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!1 &5783555499838129563 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5788778265078341863} + - component: {fileID: 5778398060266751111} + - component: {fileID: 5770964218058988135} + - component: {fileID: 5843154536937843465} + m_Layer: 0 + m_Name: Sleeper 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5788778265078341863 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783555499838129563} + m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0.12579235, z: 0.325} + m_LocalScale: {x: 2.5541, y: 2.5541, z: 2.5541} + m_Children: [] + m_Father: {fileID: 5785955877103874077} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5778398060266751111 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783555499838129563} + m_Mesh: {fileID: 8674929239458529072, guid: 4a84da7147759ca48991787feb16257a, type: 3} +--- !u!23 &5770964218058988135 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783555499838129563} + 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: 2b639ca387b3c0e439013a4b86cb24ff, 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!95 &5843154536937843465 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5783555499838129563} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 4496306d6bafa5d448eac8d6f173aa75, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailBlock.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailBlock.prefab.meta new file mode 100644 index 00000000..ea9acc44 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailBlock.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 93890153f30a45e4f9f536d64c5be5d2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailtrackGeneratorSimple.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailtrackGeneratorSimple.prefab new file mode 100644 index 00000000..ed263d84 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailtrackGeneratorSimple.prefab @@ -0,0 +1,1235 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &102088 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 472056} + - component: {fileID: 11444054} + - component: {fileID: 11470534} + - component: {fileID: 11494926} + m_Layer: 0 + m_Name: RailtrackGeneratorSimple + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &103682 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 483370} + - component: {fileID: 3331618} + - component: {fileID: 2315688} + - component: {fileID: 11429822} + - component: {fileID: 6464348} + m_Layer: 0 + m_Name: Create Mesh (Railtrack)_5_Mesh004 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &147792 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 476510} + - component: {fileID: 2375998} + - component: {fileID: 3328120} + - component: {fileID: 11456772} + - component: {fileID: 6469352} + m_Layer: 0 + m_Name: Create Mesh_5_Mesh001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &150254 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 491410} + - component: {fileID: 11413480} + m_Layer: 0 + m_Name: Volume Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &153440 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 424020} + - component: {fileID: 11401396} + m_Layer: 0 + m_Name: Input Spline Path (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &157240 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 410440} + - component: {fileID: 11478874} + m_Layer: 0 + m_Name: Input Spline Shape (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &158464 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 498604} + - component: {fileID: 2331680} + - component: {fileID: 3399508} + - component: {fileID: 11422600} + - component: {fileID: 6430850} + m_Layer: 0 + m_Name: Create Mesh (Railtrack)_5_Mesh005 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &167130 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 447510} + - component: {fileID: 2303522} + - component: {fileID: 3361090} + - component: {fileID: 11421240} + - component: {fileID: 6424464} + m_Layer: 0 + m_Name: Create Mesh_5_Mesh003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &174628 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 430040} + - component: {fileID: 2355606} + - component: {fileID: 3316580} + - component: {fileID: 11412446} + - component: {fileID: 6421636} + m_Layer: 0 + m_Name: Create Mesh_5_Mesh000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &175538 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 418442} + - component: {fileID: 2306052} + - component: {fileID: 3306858} + - component: {fileID: 11497312} + - component: {fileID: 6467422} + m_Layer: 0 + m_Name: Create Mesh_5_Mesh002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &182576 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 489540} + - component: {fileID: 11468422} + m_Layer: 0 + m_Name: Create Mesh (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &190894 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 486478} + - component: {fileID: 11408056} + m_Layer: 0 + m_Name: Shape Extrusion (Railtrack) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &410440 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157240} + 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_Children: [] + m_Father: {fileID: 472056} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &418442 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175538} + 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_Children: [] + m_Father: {fileID: 489540} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &424020 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153440} + 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_Children: [] + m_Father: {fileID: 472056} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &430040 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174628} + 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_Children: [] + m_Father: {fileID: 489540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &447510 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167130} + 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_Children: [] + m_Father: {fileID: 489540} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &472056 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102088} + 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_Children: + - {fileID: 424020} + - {fileID: 410440} + - {fileID: 486478} + - {fileID: 491410} + - {fileID: 489540} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &476510 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147792} + 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_Children: [] + m_Father: {fileID: 489540} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &483370 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103682} + 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_Children: [] + m_Father: {fileID: 489540} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &486478 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190894} + 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_Children: [] + m_Father: {fileID: 472056} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &489540 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182576} + 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_Children: + - {fileID: 430040} + - {fileID: 476510} + - {fileID: 418442} + - {fileID: 447510} + - {fileID: 483370} + - {fileID: 498604} + m_Father: {fileID: 472056} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &491410 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150254} + 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_Children: [] + m_Father: {fileID: 472056} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &498604 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158464} + 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_Children: [] + m_Father: {fileID: 489540} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2303522 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167130} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2306052 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175538} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2315688 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103682} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2331680 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158464} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2355606 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174628} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2375998 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147792} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3306858 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175538} + m_Mesh: {fileID: 0} +--- !u!33 &3316580 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174628} + m_Mesh: {fileID: 0} +--- !u!33 &3328120 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147792} + m_Mesh: {fileID: 0} +--- !u!33 &3331618 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103682} + m_Mesh: {fileID: 0} +--- !u!33 &3361090 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167130} + m_Mesh: {fileID: 0} +--- !u!33 &3399508 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158464} + m_Mesh: {fileID: 0} +--- !u!64 &6421636 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174628} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 0} +--- !u!64 &6424464 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167130} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 0} +--- !u!64 &6430850 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158464} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 0} +--- !u!64 &6464348 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103682} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 0} +--- !u!64 &6467422 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175538} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 0} +--- !u!64 &6469352 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147792} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 0} +--- !u!114 &11401396 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 153440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 14 + y: 35 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 0} +--- !u!114 &11408056 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 190894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 386 + y: 35 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 90 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 60 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 82 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 1 + m_CrossHardEdges: 1 + m_CrossMaterials: 1 + m_CrossExtendedUV: 1 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!114 &11412446 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174628} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bfd1baeec4f08064eb868f23f209ebc6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11413480 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 150254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 776 + y: 37 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_GenerateUV: 1 + m_Split: 1 + m_SplitLength: 100 + m_ReverseTriOrder: 0 + m_MaterialSettings: + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + - SwapUV: 1 + KeepAspect: 2 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: 33c3d657e881b534ba30faec26966544, type: 2} + - {fileID: 2100000, guid: 2d95a914ec7156c4a8c498156a39c3d9, type: 2} +--- !u!114 &11421240 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bfd1baeec4f08064eb868f23f209ebc6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11422600 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 158464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bfd1baeec4f08064eb868f23f209ebc6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11429822 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bfd1baeec4f08064eb868f23f209ebc6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11444054 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102088} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Modules: + - {fileID: 11401396} + - {fileID: 11478874} + - {fileID: 11408056} + - {fileID: 11413480} + - {fileID: 11468422} + m_LastModuleID: 47 +--- !u!114 &11456772 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 147792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bfd1baeec4f08064eb868f23f209ebc6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11468422 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 182576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1143 + y: 36 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: + - {fileID: 11412446} + - {fileID: 11456772} + - {fileID: 11497312} + - {fileID: 11421240} + - {fileID: 11429822} + - {fileID: 11422600} + m_Combine: 0 + m_GroupMeshes: 1 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!114 &11470534 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102088} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &11478874 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157240} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 232 + width: 250 + height: 0 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 0} +--- !u!114 &11494926 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 102088} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &11497312 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bfd1baeec4f08064eb868f23f209ebc6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 102088} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailtrackGeneratorSimple.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailtrackGeneratorSimple.prefab.meta new file mode 100644 index 00000000..8ff32349 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/RailtrackGeneratorSimple.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc8fac1bdfdd8a8449262e25b5ed641e +timeCreated: 1442663202 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/SceneSwitcher.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/SceneSwitcher.prefab new file mode 100644 index 00000000..0bc2a1b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/SceneSwitcher.prefab @@ -0,0 +1,1303 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &184722 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 476422} + - component: {fileID: 11429856} + m_Layer: 5 + m_Name: SceneSwitcher + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &476422 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184722} + 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_Children: + - {fileID: 224386190161986778} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &11429856 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 184722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c5af19fa201c5ff499f9c7924cb7bc4d, type: 3} + m_Name: + m_EditorClassIdentifier: + Text: {fileID: 114749051437422018} + DropDown: {fileID: 114880869331637630} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 184722} + m_IsPrefabParent: 1 +--- !u!1 &1049114243542112 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224295071682777730} + - component: {fileID: 222990781476729294} + - component: {fileID: 114786982298866730} + - component: {fileID: 114449223335755590} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1267955375407106 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224160352760281632} + - component: {fileID: 222250349986057630} + - component: {fileID: 114519409648699316} + m_Layer: 5 + m_Name: Item Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1269512503441150 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224948011388773908} + - component: {fileID: 222645106476048798} + - component: {fileID: 114517314648686038} + m_Layer: 5 + m_Name: Item Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1368114710848146 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224352176513618896} + - component: {fileID: 222665159741158950} + - component: {fileID: 114515296579920628} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1398101995675796 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224968885174406148} + - component: {fileID: 222539246397350084} + - component: {fileID: 114585881507736814} + m_Layer: 5 + m_Name: Item Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1412402025478414 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224283558649677998} + - component: {fileID: 222762838428026406} + - component: {fileID: 114735619237445372} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1478307002355498 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224091180185501758} + - component: {fileID: 114933201455835470} + - component: {fileID: 222018558930916960} + - component: {fileID: 114638944475763168} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1491969065731924 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224330993217388342} + - component: {fileID: 114523157366343332} + m_Layer: 5 + m_Name: Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1538674023939716 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224255076154017094} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1543092222171998 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224809915258006042} + - component: {fileID: 222561210209896318} + - component: {fileID: 114655526593643522} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1559102706042718 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224390445910339468} + - component: {fileID: 222719859261694684} + - component: {fileID: 114428087673239024} + - component: {fileID: 114541440800591314} + m_Layer: 5 + m_Name: Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1576575040144136 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224081288032191180} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1678849717887494 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224799723678972934} + - component: {fileID: 222609195781516180} + - component: {fileID: 114918695317977044} + - component: {fileID: 114427580226050290} + m_Layer: 5 + m_Name: Scrollbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1753329305780508 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224093361217178400} + - component: {fileID: 222513863209855046} + - component: {fileID: 114749051437422018} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1755888978894358 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224386190161986778} + - component: {fileID: 223087455574818840} + - component: {fileID: 114546718609019642} + - component: {fileID: 114366956241733400} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1910187496100736 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224703378156654398} + - component: {fileID: 222296813385966246} + - component: {fileID: 114166292155847736} + - component: {fileID: 114880869331637630} + m_Layer: 5 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114166292155847736 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1910187496100736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114366956241733400 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1755888978894358} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &114427580226050290 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1678849717887494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114735619237445372} + m_HandleRect: {fileID: 224283558649677998} + m_Direction: 2 + m_Value: 0 + m_Size: 0.2 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114428087673239024 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1559102706042718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114449223335755590 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1049114243542112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1184210157, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &114515296579920628 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1368114710848146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114517314648686038 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1269512503441150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114519409648699316 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1267955375407106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Option A +--- !u!114 &114523157366343332 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1491969065731924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114517314648686038} + toggleTransition: 1 + graphic: {fileID: 114585881507736814} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 1 +--- !u!114 &114541440800591314 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1559102706042718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 224081288032191180} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 45 + m_Viewport: {fileID: 224091180185501758} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 114427580226050290} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114546718609019642 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1755888978894358} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &114585881507736814 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1398101995675796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114638944475763168 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1478307002355498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114655526593643522 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1543092222171998} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Option A +--- !u!114 &114735619237445372 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1412402025478414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114749051437422018 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1753329305780508} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Scene selector +--- !u!114 &114786982298866730 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1049114243542112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114880869331637630 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1910187496100736} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 853051423, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114166292155847736} + m_Template: {fileID: 224390445910339468} + m_CaptionText: {fileID: 114655526593643522} + m_CaptionImage: {fileID: 0} + m_ItemText: {fileID: 114519409648699316} + m_ItemImage: {fileID: 0} + m_Value: 0 + m_Options: + m_Options: + - m_Text: Option A + m_Image: {fileID: 0} + - m_Text: Option B + m_Image: {fileID: 0} + - m_Text: Option C + m_Image: {fileID: 0} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Dropdown+DropdownEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114918695317977044 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1678849717887494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114933201455835470 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1478307002355498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &222018558930916960 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1478307002355498} +--- !u!222 &222250349986057630 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1267955375407106} +--- !u!222 &222296813385966246 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1910187496100736} +--- !u!222 &222513863209855046 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1753329305780508} +--- !u!222 &222539246397350084 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1398101995675796} +--- !u!222 &222561210209896318 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1543092222171998} +--- !u!222 &222609195781516180 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1678849717887494} +--- !u!222 &222645106476048798 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1269512503441150} +--- !u!222 &222665159741158950 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1368114710848146} +--- !u!222 &222719859261694684 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1559102706042718} +--- !u!222 &222762838428026406 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1412402025478414} +--- !u!222 &222990781476729294 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1049114243542112} +--- !u!223 &223087455574818840 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1755888978894358} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &224081288032191180 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1576575040144136} + 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_Children: + - {fileID: 224330993217388342} + m_Father: {fileID: 224091180185501758} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 28} + m_Pivot: {x: 0.5, y: 1} +--- !u!224 &224091180185501758 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1478307002355498} + 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_Children: + - {fileID: 224081288032191180} + m_Father: {fileID: 224390445910339468} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -18, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!224 &224093361217178400 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1753329305780508} + 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_Children: [] + m_Father: {fileID: 224295071682777730} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -3.5} + m_SizeDelta: {x: 100, y: -7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224160352760281632 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1267955375407106} + 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_Children: [] + m_Father: {fileID: 224330993217388342} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 5, y: -0.5} + m_SizeDelta: {x: -30, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224255076154017094 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1538674023939716} + 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_Children: + - {fileID: 224283558649677998} + m_Father: {fileID: 224799723678972934} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224283558649677998 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1412402025478414} + 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_Children: [] + m_Father: {fileID: 224255076154017094} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.2} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224295071682777730 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1049114243542112} + 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_Children: + - {fileID: 224093361217178400} + - {fileID: 224703378156654398} + m_Father: {fileID: 224386190161986778} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -360, y: -65} + m_SizeDelta: {x: 360, y: 65} + m_Pivot: {x: 0, y: 0} +--- !u!224 &224330993217388342 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1491969065731924} + 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_Children: + - {fileID: 224948011388773908} + - {fileID: 224968885174406148} + - {fileID: 224160352760281632} + m_Father: {fileID: 224081288032191180} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224352176513618896 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1368114710848146} + 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_Children: [] + m_Father: {fileID: 224703378156654398} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -15, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224386190161986778 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1755888978894358} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 224295071682777730} + m_Father: {fileID: 476422} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &224390445910339468 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1559102706042718} + 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_Children: + - {fileID: 224091180185501758} + - {fileID: 224799723678972934} + m_Father: {fileID: 224703378156654398} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 0, y: 150} + m_Pivot: {x: 0.5, y: 1} +--- !u!224 &224703378156654398 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1910187496100736} + 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_Children: + - {fileID: 224809915258006042} + - {fileID: 224352176513618896} + - {fileID: 224390445910339468} + m_Father: {fileID: 224295071682777730} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 37.7} + m_Pivot: {x: 0.5, y: 0} +--- !u!224 &224799723678972934 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1678849717887494} + 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_Children: + - {fileID: 224255076154017094} + m_Father: {fileID: 224390445910339468} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!224 &224809915258006042 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1543092222171998} + 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_Children: [] + m_Father: {fileID: 224703378156654398} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7.5, y: -0.5} + m_SizeDelta: {x: -35, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224948011388773908 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1269512503441150} + 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_Children: [] + m_Father: {fileID: 224330993217388342} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224968885174406148 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1398101995675796} + 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_Children: [] + m_Father: {fileID: 224330993217388342} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/SceneSwitcher.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/SceneSwitcher.prefab.meta new file mode 100644 index 00000000..23a56d4e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/SceneSwitcher.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13463edfb77f1304ca4a0da53dfe21a0 +timeCreated: 1453234396 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Ship.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Ship.prefab new file mode 100644 index 00000000..5986e6ff --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Ship.prefab @@ -0,0 +1,5615 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &109452 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 476716} + - component: {fileID: 3358408} + - component: {fileID: 2306100} + m_Layer: 0 + m_Name: ship_final + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &113010 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 459282} + - component: {fileID: 3359996} + - component: {fileID: 2332604} + m_Layer: 0 + m_Name: ship_fx_01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &157206 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 489470} + - component: {fileID: 19893762} + - component: {fileID: 19904112} + m_Layer: 0 + m_Name: emitter_l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &175260 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 429948} + - component: {fileID: 19890446} + - component: {fileID: 19972718} + m_Layer: 0 + m_Name: emitter_r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &181814 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 492112} + m_Layer: 0 + m_Name: Ship + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &429948 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175260} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000018812716} + m_LocalPosition: {x: 2.719999, y: -0, z: -2.2600005} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 492112} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &459282 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113010} + m_LocalRotation: {x: 0.00000013315807, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.02, y: -0.01, z: -3.15} + m_LocalScale: {x: 1, y: 1, z: 3} + m_Children: [] + m_Father: {fileID: 476716} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &476716 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109452} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000016292068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 459282} + m_Father: {fileID: 492112} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &489470 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157206} + m_LocalRotation: {x: 0, y: 1, z: 0, w: -0.00000018812716} + m_LocalPosition: {x: -2.7199993, y: -0, z: -2.2600005} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 492112} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &492112 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 181814} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: + - {fileID: 476716} + - {fileID: 489470} + - {fileID: 429948} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2306100 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109452} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: e644d34adc0982e4584dae581d62b753, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!23 &2332604 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113010} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: bf4292b17c0db714d9da9355221ebd99, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3358408 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109452} + m_Mesh: {fileID: 4300000, guid: b05649bcdf167a24db2cedd2c5881ee3, type: 3} +--- !u!33 &3359996 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 113010} + m_Mesh: {fileID: 4300000, guid: faf49e0a7f5c2e14481335d8ed99d706, type: 3} +--- !u!198 &19890446 +ParticleSystem: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175260} + serializedVersion: 5 + lengthInSec: 5 + simulationSpeed: 1 + looping: 1 + prewarm: 0 + playOnAwake: 1 + autoRandomSeed: 1 + startDelay: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + scalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSpeed: + scalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startColor: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 0.047058824} + minMaxState: 0 + startSize: + scalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSizeY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSizeZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationX: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationY: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotation: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + ShapeModule: + serializedVersion: 3 + enabled: 1 + type: 5 + radius: 1 + angle: 25 + length: 5 + boxX: 3.6 + boxY: 1 + boxZ: 1 + arc: 360 + placementMode: 0 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshScale: 1 + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + EmissionModule: + enabled: 1 + serializedVersion: 3 + rateOverTime: + scalar: 60 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + rateOverDistance: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + cnt0: 30 + cnt1: 30 + cnt2: 30 + cnt3: 30 + cntmax0: 30 + cntmax1: 30 + cntmax2: 30 + cntmax3: 30 + time0: 0 + time1: 0 + time2: 0 + time3: 0 + m_BurstCount: 0 + SizeModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 32382 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 3 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 1 + UVModule: + enabled: 0 + frameOverTime: + scalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + startFrame: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + flipU: 0 + flipV: 0 + randomRow: 1 + VelocityModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + ForceModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + enabled: 0 + multiplier: 1 + ClampVelocityModule: + enabled: 0 + x: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + magnitude: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxis: 0 + inWorldSpace: 0 + dampen: 1 + NoiseModule: + enabled: 0 + strength: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + strengthY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + strengthZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + remap: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + remapY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + remapZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + remapEnabled: 0 + SizeBySpeedModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 1 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_Bounce: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_EnergyLossOnCollision: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - emitter: {fileID: 0} + type: 0 + properties: 0 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + intensityCurve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + maxLights: 20 + TrailModule: + enabled: 0 + ratio: 1 + lifetime: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + minVertexDistance: 0.2 + textureMode: 0 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + colorOverLifetime: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 0 + widthOverTrail: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + colorOverTrail: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 0 +--- !u!198 &19893762 +ParticleSystem: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157206} + serializedVersion: 5 + lengthInSec: 5 + simulationSpeed: 1 + looping: 1 + prewarm: 0 + playOnAwake: 1 + autoRandomSeed: 1 + startDelay: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + moveWithTransform: 1 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + scalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSpeed: + scalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startColor: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 0.047058824} + minMaxState: 0 + startSize: + scalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSizeY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSizeZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationX: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationY: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotation: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + randomizeRotationDirection: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + gravityModifier: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + ShapeModule: + serializedVersion: 3 + enabled: 1 + type: 5 + radius: 1 + angle: 25 + length: 5 + boxX: 3.6 + boxY: 1 + boxZ: 1 + arc: 360 + placementMode: 0 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_MeshScale: 1 + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + EmissionModule: + enabled: 1 + serializedVersion: 3 + rateOverTime: + scalar: 60 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + rateOverDistance: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + cnt0: 30 + cnt1: 30 + cnt2: 30 + cnt3: 30 + cntmax0: 30 + cntmax1: 30 + cntmax2: 30 + cntmax3: 30 + time0: 0 + time1: 0 + time2: 0 + time3: 0 + m_BurstCount: 0 + SizeModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 32382 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 3 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 1 + UVModule: + enabled: 0 + frameOverTime: + scalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + startFrame: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + flipU: 0 + flipV: 0 + randomRow: 1 + VelocityModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + ForceModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + enabled: 0 + multiplier: 1 + ClampVelocityModule: + enabled: 0 + x: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + magnitude: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxis: 0 + inWorldSpace: 0 + dampen: 1 + NoiseModule: + enabled: 0 + strength: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + strengthY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + strengthZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + remap: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + remapY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + remapZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: -1 + inSlope: 0 + outSlope: 2 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 2 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + remapEnabled: 0 + SizeBySpeedModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 1 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_Bounce: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_EnergyLossOnCollision: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - emitter: {fileID: 0} + type: 0 + properties: 0 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + intensityCurve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + maxLights: 20 + TrailModule: + enabled: 0 + ratio: 1 + lifetime: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + minVertexDistance: 0.2 + textureMode: 0 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + colorOverLifetime: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 0 + widthOverTrail: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + colorOverTrail: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 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_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 0 +--- !u!199 &19904112 +ParticleSystemRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 157206} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_RenderMode: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_VertexStreamMask: 27 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} +--- !u!199 &19972718 +ParticleSystemRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 175260} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_RenderMode: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_VertexStreamMask: 27 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 181814} + m_IsPrefabParent: 1 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Ship.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Ship.prefab.meta new file mode 100644 index 00000000..523288bf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Prefabs/Ship.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffbb5901c3829b14f8b88e5068bdd36e +timeCreated: 1440414165 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders.meta new file mode 100644 index 00000000..8669a5e6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9e8057d45ae5d3a4d963065bd598b6f7 +folderAsset: yes +timeCreated: 1440062330 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders/ParticleAdditiveFresnel.shader b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders/ParticleAdditiveFresnel.shader new file mode 100644 index 00000000..80d61415 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders/ParticleAdditiveFresnel.shader @@ -0,0 +1,91 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + +// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' + +// Shader created with Shader Forge v1.18 +// Shader Forge (c) Neat Corporation / Joachim Holmer - http://www.acegikmo.com/shaderforge/ +// Note: Manually altering this data may prevent you from opening it in Shader Forge +// /*SF_DATA;ver:1.18;sub:START;pass:START;ps:flbk:,iptp:0,cusa:False,bamd:0,lico:1,lgpr:1,limd:0,spmd:1,trmd:0,grmd:0,uamb:True,mssp:True,bkdf:False,hqlp:False,rprd:False,enco:False,rmgx:True,rpth:0,hqsc:True,nrmq:1,nrsp:0,vomd:0,spxs:False,tesm:0,culm:2,bsrc:0,bdst:0,dpts:2,wrdp:False,dith:0,rfrpo:True,rfrpn:Refraction,coma:15,ufog:True,aust:True,igpj:True,qofs:0,qpre:3,rntp:2,fgom:False,fgoc:True,fgod:False,fgor:False,fgmd:0,fgcr:0,fgcg:0,fgcb:0,fgca:1,fgde:0.01,fgrn:0,fgrf:300,stcl:False,stva:128,stmr:255,stmw:255,stcp:6,stps:0,stfa:0,stfz:0,ofsf:0,ofsu:0,f2p0:False;n:type:ShaderForge.SFN_Final,id:4795,x:32987,y:32660,varname:node_4795,prsc:2|emission-1451-OUT;n:type:ShaderForge.SFN_Tex2d,id:6074,x:32235,y:32601,ptovrint:False,ptlb:MainTex,ptin:_MainTex,varname:_MainTex,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,ntxv:0,isnm:False;n:type:ShaderForge.SFN_Multiply,id:2393,x:32495,y:32793,varname:node_2393,prsc:2|A-6074-RGB,B-2053-RGB,C-797-RGB,D-9248-OUT;n:type:ShaderForge.SFN_VertexColor,id:2053,x:32235,y:32772,varname:node_2053,prsc:2;n:type:ShaderForge.SFN_Color,id:797,x:32235,y:32930,ptovrint:True,ptlb:Color,ptin:_TintColor,varname:_TintColor,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,c1:0.5,c2:0.5,c3:0.5,c4:1;n:type:ShaderForge.SFN_Vector1,id:9248,x:32235,y:33081,varname:node_9248,prsc:2,v1:2;n:type:ShaderForge.SFN_Fresnel,id:3878,x:32179,y:33234,varname:node_3878,prsc:2|EXP-8837-OUT;n:type:ShaderForge.SFN_Slider,id:8837,x:31808,y:33254,ptovrint:False,ptlb:Fresnel Exponent,ptin:_FresnelExponent,varname:node_8837,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:1,cur:1,max:4;n:type:ShaderForge.SFN_Multiply,id:1451,x:32673,y:32885,varname:node_1451,prsc:2|A-2393-OUT,B-797-A,C-1765-OUT;n:type:ShaderForge.SFN_OneMinus,id:1765,x:32674,y:33374,varname:node_1765,prsc:2|IN-8741-OUT;n:type:ShaderForge.SFN_Add,id:572,x:32179,y:33375,varname:node_572,prsc:2|A-3878-OUT,B-1109-OUT;n:type:ShaderForge.SFN_Slider,id:1109,x:31808,y:33358,ptovrint:False,ptlb:Fresnel Boost,ptin:_FresnelBoost,varname:node_1109,prsc:2,glob:False,taghide:False,taghdr:False,tagprd:False,tagnsco:False,tagnrm:False,min:0,cur:0,max:1;n:type:ShaderForge.SFN_Clamp01,id:8741,x:32361,y:33375,varname:node_8741,prsc:2|IN-572-OUT;proporder:6074-797-8837-1109;pass:END;sub:END;*/ + +Shader "Showcase/ParticleAdditiveFresnel" { + Properties { + _MainTex ("MainTex", 2D) = "white" {} + _TintColor ("Color", Color) = (0.5,0.5,0.5,1) + _FresnelExponent ("Fresnel Exponent", Range(1, 4)) = 1 + _FresnelBoost ("Fresnel Boost", Range(0, 1)) = 0 + } + SubShader { + Tags { + "IgnoreProjector"="True" + "Queue"="Transparent" + "RenderType"="Transparent" + } + Pass { + Name "FORWARD" + Tags { + "LightMode"="ForwardBase" + } + Blend One One + Cull Off + ZWrite Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #define UNITY_PASS_FORWARDBASE + #include "UnityCG.cginc" + #pragma multi_compile_fwdbase + #pragma multi_compile_fog + #pragma target 2.5 + uniform sampler2D _MainTex; uniform float4 _MainTex_ST; + uniform float4 _TintColor; + uniform float _FresnelExponent; + uniform float _FresnelBoost; + struct VertexInput { + float4 vertex : POSITION; + float3 normal : NORMAL; + float2 texcoord0 : TEXCOORD0; + float4 vertexColor : COLOR; + }; + struct VertexOutput { + float4 pos : SV_POSITION; + float2 uv0 : TEXCOORD0; + float4 posWorld : TEXCOORD1; + float3 normalDir : TEXCOORD2; + float4 vertexColor : COLOR; + UNITY_FOG_COORDS(3) + }; + VertexOutput vert (VertexInput v) { + VertexOutput o = (VertexOutput)0; + o.uv0 = v.texcoord0; + o.vertexColor = v.vertexColor; + o.normalDir = UnityObjectToWorldNormal(v.normal); + o.posWorld = mul(unity_ObjectToWorld, v.vertex); + o.pos = UnityObjectToClipPos(v.vertex); + UNITY_TRANSFER_FOG(o,o.pos); + return o; + } + float4 frag(VertexOutput i, float facing : VFACE) : COLOR { + float isFrontFace = ( facing >= 0 ? 1 : 0 ); + float faceSign = ( facing >= 0 ? 1 : -1 ); + i.normalDir = normalize(i.normalDir); + i.normalDir *= faceSign; +/////// Vectors: + float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz); + float3 normalDirection = i.normalDir; +////// Lighting: +////// Emissive: + float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex)); + float node_3878 = pow(1.0-max(0,dot(normalDirection, viewDirection)),_FresnelExponent); + float3 emissive = ((_MainTex_var.rgb*i.vertexColor.rgb*_TintColor.rgb*2.0)*_TintColor.a*(1.0 - saturate((node_3878+_FresnelBoost)))); + float3 finalColor = emissive; + fixed4 finalRGBA = fixed4(finalColor,1); + UNITY_APPLY_FOG_COLOR(i.fogCoord, finalRGBA, fixed4(0,0,0,1)); + return finalRGBA; + } + ENDCG + } + } + FallBack "Diffuse" + // CustomEditor "ShaderForgeMaterialInspector" +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders/ParticleAdditiveFresnel.shader.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders/ParticleAdditiveFresnel.shader.meta new file mode 100644 index 00000000..d1003512 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Shaders/ParticleAdditiveFresnel.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 459ce014ae96ed3438d05af3f6f12f71 +timeCreated: 1441851326 +licenseType: Store +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes.meta new file mode 100644 index 00000000..e512d586 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5b963076e40c13840ba5808805da7dd3 +folderAsset: yes +timeCreated: 1439482805 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials.meta new file mode 100644 index 00000000..a8f086a7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b5723fea90201a340a288e7cd403e875 +folderAsset: yes +timeCreated: 1439482805 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials/BlueGreenNebular.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials/BlueGreenNebular.mat new file mode 100644 index 00000000..fb515d1e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials/BlueGreenNebular.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: BlueGreenNebular + m_Shader: {fileID: 104, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _FrontTex + second: + m_Texture: {fileID: 2800000, guid: 8599da2418cd375488c829492f26947b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BackTex + second: + m_Texture: {fileID: 2800000, guid: 8290a398cfe5f2a4fbfda8871c747a1c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _LeftTex + second: + m_Texture: {fileID: 2800000, guid: 1b768ce317e47e94b83e06923faf3c3d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _RightTex + second: + m_Texture: {fileID: 2800000, guid: 6d972af689e23c04da6537edfff09b87, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _UpTex + second: + m_Texture: {fileID: 2800000, guid: 8c4cb9db8a93056429fbb721aec67a3c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DownTex + second: + m_Texture: {fileID: 2800000, guid: e3b7d6f16ec77264691074651aeaa4d1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _Exposure + second: 1 + data: + first: + name: _Rotation + second: 0 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _Tint + second: {r: .5, g: .5, b: .5, a: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials/BlueGreenNebular.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials/BlueGreenNebular.mat.meta new file mode 100644 index 00000000..29e009ca --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Materials/BlueGreenNebular.mat.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: a4f78a684965a2d4bbc20a4b86231606 +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures.meta new file mode 100644 index 00000000..63694a70 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ed1310615a2e1514bb79ede576255826 +folderAsset: yes +timeCreated: 1439482805 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_back.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_back.jpg new file mode 100644 index 00000000..ddc41c19 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_back.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_back.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_back.jpg.meta new file mode 100644 index 00000000..66ccd8c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_back.jpg.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 8290a398cfe5f2a4fbfda8871c747a1c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_bottom.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_bottom.jpg new file mode 100644 index 00000000..22c74ed5 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_bottom.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_bottom.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_bottom.jpg.meta new file mode 100644 index 00000000..a90cd456 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_bottom.jpg.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: e3b7d6f16ec77264691074651aeaa4d1 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_front.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_front.jpg new file mode 100644 index 00000000..57c93b62 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_front.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_front.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_front.jpg.meta new file mode 100644 index 00000000..490be385 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_front.jpg.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 8599da2418cd375488c829492f26947b +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_left.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_left.jpg new file mode 100644 index 00000000..2d06d9ea Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_left.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_left.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_left.jpg.meta new file mode 100644 index 00000000..b8f0b508 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_left.jpg.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 1b768ce317e47e94b83e06923faf3c3d +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_right.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_right.jpg new file mode 100644 index 00000000..da9180f8 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_right.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_right.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_right.jpg.meta new file mode 100644 index 00000000..d9c55ac7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_right.jpg.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 6d972af689e23c04da6537edfff09b87 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_top.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_top.jpg new file mode 100644 index 00000000..cd026c9b Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_top.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_top.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_top.jpg.meta new file mode 100644 index 00000000..9cad1282 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Skyboxes/Textures/BlueGreenNebula_top.jpg.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 8c4cb9db8a93056429fbb721aec67a3c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures.meta new file mode 100644 index 00000000..a7d8f819 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bf2c04b92991c1f4ba8fdf8b31d607e9 +folderAsset: yes +timeCreated: 1433841358 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Asteroid.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Asteroid.jpg new file mode 100644 index 00000000..b4094cbb Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Asteroid.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Asteroid.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Asteroid.jpg.meta new file mode 100644 index 00000000..27b6c1a5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Asteroid.jpg.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: ddce39766e2a9ce48a69c914a4a29487 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Planet.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Planet.jpg new file mode 100644 index 00000000..df684727 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Planet.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Planet.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Planet.jpg.meta new file mode 100644 index 00000000..b09e4145 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/Planet.jpg.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: 809351a75d90d354d9c1ea7f0097c4a1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock.meta new file mode 100644 index 00000000..466ef621 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71cd6b5c32d49994bbec4597affd7ca1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/diff.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/diff.jpg new file mode 100644 index 00000000..bd2feb07 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/diff.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/diff.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/diff.jpg.meta new file mode 100644 index 00000000..22aed699 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/diff.jpg.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 6d3b40e370f40984981bcf57c5f32907 +timeCreated: 1499995574 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/woods_002.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/woods_002.jpg new file mode 100644 index 00000000..f7c083cc Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/woods_002.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/woods_002.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/woods_002.jpg.meta new file mode 100644 index 00000000..c6bdde67 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/RailBlock/woods_002.jpg.meta @@ -0,0 +1,74 @@ +fileFormatVersion: 2 +guid: 6924e1076f80fb9458e731ae5a49911f +timeCreated: 1500354546 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/checkerboard.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/checkerboard.png new file mode 100644 index 00000000..2256bbef Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/checkerboard.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/checkerboard.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/checkerboard.png.meta new file mode 100644 index 00000000..88e4c0c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/checkerboard.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 5274f5b06558476438af1f41ba3b0bed +timeCreated: 1433842167 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: 1 + aniso: 1 + mipBias: -1 + wrapMode: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/grass.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/grass.jpg new file mode 100644 index 00000000..54f9f64c Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/grass.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/grass.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/grass.jpg.meta new file mode 100644 index 00000000..4b1e7193 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/grass.jpg.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: dbba557d7e8d04140b73dc23ba840be3 +timeCreated: 1442776600 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/line.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/line.png new file mode 100644 index 00000000..4ebab5f3 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/line.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/line.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/line.png.meta new file mode 100644 index 00000000..709744c7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy Examples/_Resources/Textures/line.png.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: a093beaa4d9aa264bbd9f761f563ec3f +timeCreated: 1439477062 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy.meta new file mode 100644 index 00000000..6319f1f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 41d80d7cf2375f9459a8ee9bdd6c5469 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates.meta new file mode 100644 index 00000000..c7de28b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1dc72bd97e665a74b88357193236d286 +folderAsset: yes +timeCreated: 1436432032 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Game Object.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Game Object.prefab new file mode 100644 index 00000000..5f2c24de --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Game Object.prefab @@ -0,0 +1,1127 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1543226949509793543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7212987290689955508} + - component: {fileID: 5689247736979016970} + m_Layer: 0 + m_Name: Rasterize Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7212987290689955508 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543226949509793543} + 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_Children: [] + m_Father: {fileID: 4518839854337749816} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5689247736979016970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1543226949509793543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4dd47aa60d1b454886133ad3297289c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1407282305 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 250 + height: 246 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 7 + m_TargetSlotName: Path/Volume + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 5 + m_TargetSlotName: Path + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 0 + m_AngleTreshold: 10 +--- !u!1 &1623801772257990380 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4518839854337749816} + - component: {fileID: 814139199980757498} + - component: {fileID: 8866587743389313785} + m_Layer: 0 + m_Name: Deform Game Object + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4518839854337749816 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623801772257990380} + 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_Children: + - {fileID: 6768321466360568677} + - {fileID: 7212987290689955508} + - {fileID: 1274443539902630023} + - {fileID: 6304983699644180075} + - {fileID: 6416773142747853729} + - {fileID: 3462012088228785217} + - {fileID: 8094768042723753376} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &814139199980757498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623801772257990380} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 5182551785264009827} + - {fileID: 5689247736979016970} + - {fileID: 5781737919560376736} + - {fileID: 5534063600015731172} + - {fileID: 1691238374767526596} + - {fileID: 6335498334613936088} + - {fileID: 5450070287096389816} + m_LastModuleID: 7 +--- !u!114 &8866587743389313785 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623801772257990380} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &2425727457223814114 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 961981134040911923} + - component: {fileID: 8194293269157428287} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &961981134040911923 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2425727457223814114} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1672069050099892286} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8194293269157428287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2425727457223814114} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &2743600708001301063 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6768321466360568677} + - component: {fileID: 5182551785264009827} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6768321466360568677 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2743600708001301063} + 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_Children: + - {fileID: 1672069050099892286} + m_Father: {fileID: 4518839854337749816} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5182551785264009827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2743600708001301063} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 237 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 9179106471492305941} +--- !u!1 &2920950414068306319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1274443539902630023} + - component: {fileID: 5781737919560376736} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1274443539902630023 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2920950414068306319} + 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_Children: [] + m_Father: {fileID: 4518839854337749816} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5781737919560376736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2920950414068306319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 47848249 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 1310 + y: 10 + width: 273 + height: 398 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 3 + m_SlotName: Spots + m_TargetModuleID: 5 + m_TargetSlotName: Spots + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &3091608100422511142 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6416773142747853729} + - component: {fileID: 1691238374767526596} + m_Layer: 0 + m_Name: Deform Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6416773142747853729 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3091608100422511142} + 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_Children: [] + m_Father: {fileID: 4518839854337749816} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1691238374767526596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3091608100422511142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484a3e33b7b7161448fd889c96322e73, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1109130960 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1010 + y: 10 + width: 250 + height: 177 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Spots + m_TargetModuleID: 7 + m_TargetSlotName: Spots + - m_ModuleID: 5 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 3 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: Spots + m_TargetModuleID: 3 + m_TargetSlotName: Spots +--- !u!1 &6004291642802428338 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6304983699644180075} + - component: {fileID: 5534063600015731172} + m_Layer: 0 + m_Name: Game Object To Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6304983699644180075 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6004291642802428338} + 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_Children: [] + m_Father: {fileID: 4518839854337749816} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5534063600015731172 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6004291642802428338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7773b5e28f4f8ca48a528baec6332880, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1831378439 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 276 + width: 250 + height: 162 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: GameObjects + m_TargetModuleID: 6 + m_TargetSlotName: GameObject + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 7 + m_TargetSlotName: Bounds + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + useChildrenMeshes: 0 +--- !u!1 &6360784256058642514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1236375181046574065} + - component: {fileID: 6562127983153500370} + - component: {fileID: 6673218351143865530} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1236375181046574065 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6360784256058642514} + 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_Children: [] + m_Father: {fileID: 1672069050099892286} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6562127983153500370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6360784256058642514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &6673218351143865530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6360784256058642514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &6638612370480723861 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1672069050099892286} + - component: {fileID: 9179106471492305941} + m_Layer: 0 + m_Name: Input Spline Path_2_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1672069050099892286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6638612370480723861} + 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_Children: + - {fileID: 1236375181046574065} + - {fileID: 961981134040911923} + - {fileID: 2467256886785496109} + m_Father: {fileID: 6768321466360568677} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9179106471492305941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6638612370480723861} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 6562127983153500370} + - {fileID: 8194293269157428287} + - {fileID: 270871011094091729} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6961493708290509741 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3462012088228785217} + - component: {fileID: 6335498334613936088} + m_Layer: 0 + m_Name: Input GameObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3462012088228785217 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6961493708290509741} + 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_Children: [] + m_Father: {fileID: 4518839854337749816} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6335498334613936088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6961493708290509741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1803102742 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 276 + width: 250 + height: 212 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 6 + m_SlotName: GameObject + m_TargetModuleID: 4 + m_TargetSlotName: GameObjects + m_GameObjects: [] +--- !u!1 &7294864261712865209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2467256886785496109} + - component: {fileID: 270871011094091729} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2467256886785496109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7294864261712865209} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1672069050099892286} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &270871011094091729 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7294864261712865209} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &8148396495423229751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8094768042723753376} + - component: {fileID: 5450070287096389816} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8094768042723753376 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8148396495423229751} + 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_Children: [] + m_Father: {fileID: 4518839854337749816} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5450070287096389816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8148396495423229751} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1572407500 + m_UniqueID: 7 + Properties: + Dimensions: + serializedVersion: 2 + x: 610 + y: 276 + width: 350 + height: 526 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 7 + m_SlotName: Path/Volume + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 7 + m_SlotName: Bounds + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 7 + m_SlotName: Spots + m_TargetModuleID: 5 + m_TargetSlotName: Spots + m_WasUpgraded: 0 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + 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: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Game Object.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Game Object.prefab.meta new file mode 100644 index 00000000..52b6cbfe --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Game Object.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a2f2d74dda6700147a25d3ef2bff0d30 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Mesh.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Mesh.prefab new file mode 100644 index 00000000..3fd13735 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Mesh.prefab @@ -0,0 +1,1045 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &139953720010849082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1219728733372847363} + - component: {fileID: 1965460796191880215} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1219728733372847363 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139953720010849082} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7868136959494422284} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1965460796191880215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139953720010849082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &713041948806842689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 743597697431437290} + - component: {fileID: 2533582176570465589} + m_Layer: 0 + m_Name: Input Meshes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &743597697431437290 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 713041948806842689} + 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_Children: [] + m_Father: {fileID: 1000070297695266252} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2533582176570465589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 713041948806842689} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4dcd8018d6d8ecf4f876101d6e13a763, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -980206793 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 312 + y: 283 + width: 250 + height: 212 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: VMesh + m_TargetModuleID: 2 + m_TargetSlotName: Bounds + - m_ModuleID: 3 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + m_Meshes: [] +--- !u!1 &2082589363239702277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7868136959494422284} + - component: {fileID: 592801245929175922} + m_Layer: 0 + m_Name: Input Spline Path_1_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7868136959494422284 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082589363239702277} + 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_Children: + - {fileID: 4085784993105897899} + - {fileID: 6681292852313534281} + - {fileID: 1219728733372847363} + m_Father: {fileID: 6010628173244899942} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &592801245929175922 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082589363239702277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 3310080621185300439} + - {fileID: 6768737805994782587} + - {fileID: 1965460796191880215} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + restricted2DPlane: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + bSplineDegree: 2 + isBSplineClamped: 1 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2511734964003400306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4228636210444717708} + - component: {fileID: 6811155178727177812} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4228636210444717708 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2511734964003400306} + 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_Children: [] + m_Father: {fileID: 1000070297695266252} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6811155178727177812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2511734964003400306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 47848249 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 1310 + y: 10 + width: 273 + height: 398 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: Spots + m_TargetModuleID: 6 + m_TargetSlotName: Spots + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + m_GroupMeshes: 1 + includeNormals: 1 + includeTangents: 0 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_IsTrigger: 0 + m_CookingOptions: 30 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!1 &2655501069386859360 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6010628173244899942} + - component: {fileID: 2520212194392842975} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6010628173244899942 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2655501069386859360} + 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_Children: + - {fileID: 7868136959494422284} + m_Father: {fileID: 1000070297695266252} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2520212194392842975 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2655501069386859360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 237 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 592801245929175922} +--- !u!1 &3137164033754147664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3996159640133764184} + - component: {fileID: 5157997397872809543} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3996159640133764184 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3137164033754147664} + 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_Children: [] + m_Father: {fileID: 1000070297695266252} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5157997397872809543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3137164033754147664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1572407500 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 610 + y: 276 + width: 350 + height: 526 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 2 + m_SlotName: Path/Volume + m_TargetModuleID: 4 + m_TargetSlotName: Path + - m_ModuleID: 2 + m_SlotName: Bounds + m_TargetModuleID: 3 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Spots + m_TargetModuleID: 6 + m_TargetSlotName: Spots + m_WasUpgraded: 0 + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 0 + m_CrossBase: 0 + m_CrossCurve: + 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: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Simulate: 0 + m_UseBuggedRNG: 0 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_CrossBase: + From: 0 + To: 0 + SimpleValue: 1 + m_IgnoreModuleCrossBase: 0 + m_RandomizeItems: 0 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_RelativeTranslation: 1 + m_TranslationX: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationY: + From: 0 + To: 0 + SimpleValue: 1 + m_TranslationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationX: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationY: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationZ: + From: 0 + To: 0 + SimpleValue: 1 + m_UniformScaling: 1 + m_ScaleX: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleY: + From: 1 + To: 1 + SimpleValue: 1 + m_ScaleZ: + From: 1 + To: 1 + SimpleValue: 1 + m_Items: + - m_Weight: 0.5 + Index: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!1 &3889666363937726036 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6681292852313534281} + - component: {fileID: 6768737805994782587} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6681292852313534281 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3889666363937726036} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7868136959494422284} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6768737805994782587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3889666363937726036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!1 &3957463094715041907 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4085784993105897899} + - component: {fileID: 3310080621185300439} + - component: {fileID: 3985368570218452842} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4085784993105897899 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3957463094715041907} + 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_Children: [] + m_Father: {fileID: 7868136959494422284} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3310080621185300439 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3957463094715041907} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &3985368570218452842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3957463094715041907} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 + uVEdgeUpdated: 1 +--- !u!1 &4190844724315286489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3677390904363611249} + - component: {fileID: 5112971474236942419} + m_Layer: 0 + m_Name: Rasterize Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3677390904363611249 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4190844724315286489} + 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_Children: [] + m_Father: {fileID: 1000070297695266252} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5112971474236942419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4190844724315286489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a4dd47aa60d1b454886133ad3297289c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1407282305 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 250 + height: 246 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path/Volume + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 6 + m_TargetSlotName: Path + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 0 + m_AngleTreshold: 10 +--- !u!1 &4877193396925921615 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1000070297695266252} + - component: {fileID: 2679933139248898325} + - component: {fileID: 5252817912376441626} + m_Layer: 0 + m_Name: Deform Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1000070297695266252 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4877193396925921615} + 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_Children: + - {fileID: 6010628173244899942} + - {fileID: 3996159640133764184} + - {fileID: 743597697431437290} + - {fileID: 3677390904363611249} + - {fileID: 4228636210444717708} + - {fileID: 1197315573085833464} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2679933139248898325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4877193396925921615} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ForceFrequentUpdates: 0 + Modules: + - {fileID: 2520212194392842975} + - {fileID: 5157997397872809543} + - {fileID: 2533582176570465589} + - {fileID: 5112971474236942419} + - {fileID: 6811155178727177812} + - {fileID: 3496973068325667855} + m_LastModuleID: 6 +--- !u!114 &5252817912376441626 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4877193396925921615} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!1 &8014959221854680400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1197315573085833464} + - component: {fileID: 3496973068325667855} + m_Layer: 0 + m_Name: Deform Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1197315573085833464 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8014959221854680400} + 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_Children: [] + m_Father: {fileID: 1000070297695266252} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3496973068325667855 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8014959221854680400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 484a3e33b7b7161448fd889c96322e73, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1109130960 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 1010 + y: 10 + width: 250 + height: 177 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Spots + m_TargetModuleID: 2 + m_TargetSlotName: Spots + - m_ModuleID: 6 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 3 + m_TargetSlotName: VMesh + OutputLinks: + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + - m_ModuleID: 6 + m_SlotName: Spots + m_TargetModuleID: 5 + m_TargetSlotName: Spots diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Mesh.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Mesh.prefab.meta new file mode 100644 index 00000000..5acd97ab --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Deform Mesh.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 05a3a08636e0bb843bdfe4bf2c65f8dc +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Shape Extrusion.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Shape Extrusion.prefab new file mode 100644 index 00000000..17632675 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Shape Extrusion.prefab @@ -0,0 +1,1301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1433054049627676} + m_IsPrefabParent: 1 +--- !u!1 &1035891075601182 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4598461150735782} + - component: {fileID: 114974900989668548} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1137676704877634 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4618276728960480} + - component: {fileID: 114916557327909474} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1160379540444052 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4898031054468830} + - component: {fileID: 114098777346659730} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1160486117378718 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4006674781482412} + - component: {fileID: 114787210514713946} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1173363226961354 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4878149572428522} + - component: {fileID: 114424956563766586} + m_Layer: 0 + m_Name: Input Spline Path_1_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1180221120100376 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4967541490682888} + - component: {fileID: 114676782200221882} + - component: {fileID: 114981548905774276} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1197693558588426 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4361529291592150} + - component: {fileID: 114263170032710900} + - component: {fileID: 114426361924063540} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1221221412127892 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4345437971498608} + - component: {fileID: 114124566104290266} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1281924493329584 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4344843523498006} + - component: {fileID: 114580822558433742} + m_Layer: 0 + m_Name: Volume Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1289696132473142 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4477249957176258} + - component: {fileID: 114156470509788902} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1433054049627676 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4325720702741826} + - component: {fileID: 114960513385966216} + - component: {fileID: 114979571267074904} + - component: {fileID: 114743637410572718} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1626900038782742 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4414569824891754} + - component: {fileID: 114144021899703194} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1713491879457430 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4377766521734202} + - component: {fileID: 114641300409808952} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1851025623691380 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4948054121773866} + - component: {fileID: 114912098539045090} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1958748960898626 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4246586981525046} + - component: {fileID: 114955359227439026} + - component: {fileID: 114160376946365496} + m_Layer: 0 + m_Name: Input Spline Shape_2_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4006674781482412 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1160486117378718} + 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_Children: + - {fileID: 4246586981525046} + m_Father: {fileID: 4325720702741826} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4246586981525046 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1958748960898626} + 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_Children: + - {fileID: 4361529291592150} + - {fileID: 4948054121773866} + - {fileID: 4345437971498608} + - {fileID: 4898031054468830} + m_Father: {fileID: 4006674781482412} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4325720702741826 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1433054049627676} + 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_Children: + - {fileID: 4477249957176258} + - {fileID: 4006674781482412} + - {fileID: 4414569824891754} + - {fileID: 4344843523498006} + - {fileID: 4377766521734202} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4344843523498006 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1281924493329584} + 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_Children: [] + m_Father: {fileID: 4325720702741826} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4345437971498608 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1221221412127892} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000008742278, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4246586981525046} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4361529291592150 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1197693558588426} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4246586981525046} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4377766521734202 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1713491879457430} + 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_Children: [] + m_Father: {fileID: 4325720702741826} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4414569824891754 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1626900038782742} + 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_Children: [] + m_Father: {fileID: 4325720702741826} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4477249957176258 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1289696132473142} + 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_Children: + - {fileID: 4878149572428522} + m_Father: {fileID: 4325720702741826} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4598461150735782 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1035891075601182} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4878149572428522} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4618276728960480 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1137676704877634} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4878149572428522} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4878149572428522 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1173363226961354} + 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_Children: + - {fileID: 4967541490682888} + - {fileID: 4598461150735782} + - {fileID: 4618276728960480} + m_Father: {fileID: 4477249957176258} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4898031054468830 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1160379540444052} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0.000000011924881, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4246586981525046} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4948054121773866 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1851025623691380} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: -0.00000004371139, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4246586981525046} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4967541490682888 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1180221120100376} + 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_Children: [] + m_Father: {fileID: 4878149572428522} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114098777346659730 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1160379540444052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.00000001643727, y: -0.55154324, z: -0} + m_HandleOut: {x: 0.00000001643727, y: 0.55154324, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114124566104290266 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1221221412127892} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.5515433, y: -0.000000049311815, z: -0} + m_HandleOut: {x: -0.55154324, y: 0.000000049311808, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114144021899703194 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1626900038782742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 10 + width: 270 + height: 253 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 3 + m_SlotName: Path + m_TargetModuleID: 1 + m_TargetSlotName: Path + - m_ModuleID: 3 + m_SlotName: Cross + m_TargetModuleID: 2 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!114 &114156470509788902 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1289696132473142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 10 + width: 250 + height: 197 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Path + m_TargetModuleID: 3 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 114424956563766586} +--- !u!114 &114160376946365496 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1958748960898626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Persistent: 1 + m_Count: 4 + m_Radius: 1 +--- !u!114 &114263170032710900 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1197693558588426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.55154324, y: -0, z: -0} + m_HandleOut: {x: 0.55154324, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114424956563766586 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1173363226961354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 114676782200221882} + - {fileID: 114974900989668548} + - {fileID: 114916557327909474} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &114426361924063540 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1197693558588426} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 +--- !u!114 &114580822558433742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1281924493329584} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 379291f9fb9edce4d9c19b219feb999b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -922049477 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 630 + y: 10 + width: 250 + height: 218 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 3 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 4 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: VMesh + m_GenerateUV: 1 + m_Split: 0 + m_SplitLength: 100 + m_ReverseTriOrder: 0 + m_MaterialSettings: + - SwapUV: 0 + KeepAspect: 0 + UVRotation: 0 + UVOffset: {x: 0, y: 0} + UVScale: {x: 1, y: 1} + MaterialID: 0 + m_Material: + - {fileID: 2100000, guid: e13301a1a6a473546b463d25260a7083, type: 2} +--- !u!114 &114641300409808952 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1713491879457430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 933406479 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 930 + y: 10 + width: 250 + height: 325 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: VMesh + m_TargetModuleID: 4 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + m_GroupMeshes: 1 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} +--- !u!114 &114676782200221882 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1180221120100376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114743637410572718 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1433054049627676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62f98941b92097f49bd5ff480ec47122, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Identifier: FluffyUnderware.Curvy.Generator.CGMeshResource, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Settings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &114787210514713946 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1160486117378718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 227 + width: 250 + height: 269 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Shape + m_TargetModuleID: 3 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 114955359227439026} +--- !u!114 &114912098539045090 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1851025623691380} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 0.55154324, z: -0} + m_HandleOut: {x: 0, y: -0.5515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114916557327909474 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1137676704877634} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114955359227439026 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1958748960898626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.0.0 + ControlPoints: + - {fileID: 114263170032710900} + - {fileID: 114912098539045090} + - {fileID: 114124566104290266} + - {fileID: 114098777346659730} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &114960513385966216 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1433054049627676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Modules: + - {fileID: 114156470509788902} + - {fileID: 114787210514713946} + - {fileID: 114144021899703194} + - {fileID: 114580822558433742} + - {fileID: 114641300409808952} + m_LastModuleID: 5 +--- !u!114 &114974900989668548 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1035891075601182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114979571267074904 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1433054049627676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &114981548905774276 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1180221120100376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Shape Extrusion.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Shape Extrusion.prefab.meta new file mode 100644 index 00000000..d25d5df7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Shape Extrusion.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f315c63dc9020a742946fcaf77dcebad +timeCreated: 1443439562 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot GameObjects.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot GameObjects.prefab new file mode 100644 index 00000000..8d390cdf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot GameObjects.prefab @@ -0,0 +1,1402 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1149031995989022} + m_IsPrefabParent: 1 +--- !u!1 &1045409688899122 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4846650820817346} + - component: {fileID: 114967755135620638} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1051139607957380 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4415685664133410} + - component: {fileID: 114868451609654766} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1149031995989022 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4373545719969074} + - component: {fileID: 114950851139585356} + - component: {fileID: 114546598908251602} + m_Layer: 0 + m_Name: Spot GameObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1170252192184116 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4775609981229312} + - component: {fileID: 114705118507604344} + m_Layer: 0 + m_Name: Create GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1200657860217392 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4771609641504766} + - component: {fileID: 114109834443383772} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1250422992524174 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4784024970868870} + - component: {fileID: 114148532047391028} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1287563414158790 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4656836780464362} + - component: {fileID: 114031816275174506} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1371933500387664 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4858232886058882} + - component: {fileID: 114416586367758218} + m_Layer: 0 + m_Name: Input GameObjects + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1503017789947294 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4564759361593608} + - component: {fileID: 114380967107720348} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1638871896668076 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4601124486698690} + - component: {fileID: 114297781868186868} + - component: {fileID: 114650691490839076} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1690655318407096 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4838426268565216} + - component: {fileID: 114345009319885144} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1705779022247198 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4974226887983380} + - component: {fileID: 114171110954843772} + - component: {fileID: 114942879771897714} + m_Layer: 0 + m_Name: Input Spline Shape_1_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1862002985767202 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4902132930659600} + - component: {fileID: 114965912243446746} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1882885046217036 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4177791684534906} + - component: {fileID: 114924253568630280} + m_Layer: 0 + m_Name: Input Spline Path_2_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1883334114756956 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4165806901865908} + - component: {fileID: 114757919278619884} + - component: {fileID: 114152227087035936} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1940986275326300 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4494257317577158} + - component: {fileID: 114567151361381372} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4165806901865908 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1883334114756956} + 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_Children: [] + m_Father: {fileID: 4177791684534906} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4177791684534906 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1882885046217036} + 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_Children: + - {fileID: 4165806901865908} + - {fileID: 4771609641504766} + - {fileID: 4784024970868870} + m_Father: {fileID: 4838426268565216} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4373545719969074 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1149031995989022} + 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_Children: + - {fileID: 4415685664133410} + - {fileID: 4838426268565216} + - {fileID: 4858232886058882} + - {fileID: 4902132930659600} + - {fileID: 4494257317577158} + - {fileID: 4775609981229312} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4415685664133410 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1051139607957380} + 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_Children: + - {fileID: 4974226887983380} + m_Father: {fileID: 4373545719969074} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4494257317577158 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1940986275326300} + 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_Children: [] + m_Father: {fileID: 4373545719969074} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4564759361593608 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503017789947294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0.000000011924881, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4974226887983380} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4601124486698690 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1638871896668076} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4974226887983380} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4656836780464362 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1287563414158790} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: -0.00000004371139, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4974226887983380} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4771609641504766 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1200657860217392} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4177791684534906} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4775609981229312 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1170252192184116} + 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_Children: [] + m_Father: {fileID: 4373545719969074} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4784024970868870 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1250422992524174} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4177791684534906} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4838426268565216 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1690655318407096} + 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_Children: + - {fileID: 4177791684534906} + m_Father: {fileID: 4373545719969074} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4846650820817346 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1045409688899122} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000008742278, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4974226887983380} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4858232886058882 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1371933500387664} + 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_Children: [] + m_Father: {fileID: 4373545719969074} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4902132930659600 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1862002985767202} + 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_Children: [] + m_Father: {fileID: 4373545719969074} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4974226887983380 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1705779022247198} + 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_Children: + - {fileID: 4601124486698690} + - {fileID: 4656836780464362} + - {fileID: 4846650820817346} + - {fileID: 4564759361593608} + m_Father: {fileID: 4415685664133410} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114031816275174506 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1287563414158790} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 0.55154324, z: -0} + m_HandleOut: {x: 0, y: -0.5515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114109834443383772 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1200657860217392} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114148532047391028 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1250422992524174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114152227087035936 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1883334114756956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 +--- !u!114 &114171110954843772 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1705779022247198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.0.0 + ControlPoints: + - {fileID: 114297781868186868} + - {fileID: 114031816275174506} + - {fileID: 114967755135620638} + - {fileID: 114380967107720348} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &114297781868186868 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1638871896668076} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.55154324, y: -0, z: -0} + m_HandleOut: {x: 0.55154324, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114345009319885144 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1690655318407096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 200 + width: 250 + height: 197 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 114924253568630280} +--- !u!114 &114380967107720348 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503017789947294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.00000001643727, y: -0.55154324, z: -0} + m_HandleOut: {x: 0.00000001643727, y: 0.55154324, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114416586367758218 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1371933500387664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8c91f1c72cdd8f4b99ab43636b1db6b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -954380924 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 330 + y: 10 + width: 250 + height: 170 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: GameObject + m_TargetModuleID: 5 + m_TargetSlotName: Bounds + - m_ModuleID: 3 + m_SlotName: GameObject + m_TargetModuleID: 6 + m_TargetSlotName: GameObject + m_GameObjects: [] +--- !u!114 &114546598908251602 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1149031995989022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &114567151361381372 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1940986275326300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -910245826 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 630 + y: 200 + width: 350 + height: 439 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Bounds + m_TargetModuleID: 3 + m_TargetSlotName: GameObject + - m_ModuleID: 5 + m_SlotName: Path/Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: Spots + m_TargetModuleID: 6 + m_TargetSlotName: Spots + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 1 + m_Simulate: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_Items: [] + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!114 &114650691490839076 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1638871896668076} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 +--- !u!114 &114705118507604344 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1170252192184116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 89a49fda31b97d84787924dbf8bd2a94, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -879076914 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 1030 + y: 10 + width: 250 + height: 217 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Spots + m_TargetModuleID: 5 + m_TargetSlotName: Spots + - m_ModuleID: 6 + m_SlotName: GameObject + m_TargetModuleID: 3 + m_TargetSlotName: GameObject + OutputLinks: [] + m_Resources: + Items: [] + PoolNames: [] + m_MakeStatic: 0 + m_Layer: 0 +--- !u!114 &114757919278619884 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1883334114756956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114868451609654766 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1051139607957380} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 417 + width: 250 + height: 269 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 114171110954843772} +--- !u!114 &114924253568630280 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1882885046217036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 114757919278619884} + - {fileID: 114109834443383772} + - {fileID: 114148532047391028} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &114942879771897714 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1705779022247198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Persistent: 1 + m_Count: 4 + m_Radius: 1 +--- !u!114 &114950851139585356 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1149031995989022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Modules: + - {fileID: 114868451609654766} + - {fileID: 114345009319885144} + - {fileID: 114416586367758218} + - {fileID: 114965912243446746} + - {fileID: 114567151361381372} + - {fileID: 114705118507604344} + m_LastModuleID: 6 +--- !u!114 &114965912243446746 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1862002985767202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 200 + width: 270 + height: 253 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 1 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Path/Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!114 &114967755135620638 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1045409688899122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.5515433, y: -0.000000049311815, z: -0} + m_HandleOut: {x: -0.55154324, y: 0.000000049311808, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot GameObjects.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot GameObjects.prefab.meta new file mode 100644 index 00000000..3db16b2c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot GameObjects.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8cf642e62d6f7d46a837a85f484d3ac +timeCreated: 1441972194 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot Meshes.prefab b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot Meshes.prefab new file mode 100644 index 00000000..8f188706 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot Meshes.prefab @@ -0,0 +1,1418 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1876932738735192} + m_IsPrefabParent: 1 +--- !u!1 &1047667964456268 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4176404260318534} + - component: {fileID: 114849343070083786} + m_Layer: 0 + m_Name: Input Spline Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1142402619690344 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4096918231239086} + - component: {fileID: 114651547473257596} + - component: {fileID: 114965130147398888} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1187633215761652 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4650754916355332} + - component: {fileID: 114533233884435930} + m_Layer: 0 + m_Name: CP0003 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1189086154529236 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4819850910015782} + - component: {fileID: 114088600058488924} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1224287044509976 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4076949788631542} + - component: {fileID: 114863406121414972} + - component: {fileID: 114458630722957734} + m_Layer: 0 + m_Name: CP0000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1258816774347064 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4318203443201480} + - component: {fileID: 114000420127885362} + m_Layer: 0 + m_Name: Input Spline Path_2_Spline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1339399216964640 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4645488131911242} + - component: {fileID: 114518718916505050} + m_Layer: 0 + m_Name: Input Meshes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1353548066270536 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4053913077951520} + - component: {fileID: 114223927810048742} + m_Layer: 0 + m_Name: Volume Spots + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1383434993425734 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4863783778706422} + - component: {fileID: 114036331740392722} + m_Layer: 0 + m_Name: CP0001 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1535353238707590 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4581971199854064} + - component: {fileID: 114237888078390234} + m_Layer: 0 + m_Name: Shape Extrusion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1575021317243488 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4396773874774906} + - component: {fileID: 114627386978393596} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1636230328433630 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4536607065713508} + - component: {fileID: 114694863799141942} + m_Layer: 0 + m_Name: CP0002 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1770871381648464 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4609832983489934} + - component: {fileID: 114479349518237964} + - component: {fileID: 114313988169377248} + m_Layer: 0 + m_Name: Input Spline Shape_3_Shape + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1788956604111112 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4265204868366308} + - component: {fileID: 114993980765043562} + m_Layer: 0 + m_Name: Create Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1799937642147316 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4303309274719034} + - component: {fileID: 114545987479673444} + m_Layer: 0 + m_Name: Input Spline Path + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1876932738735192 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4757064976705760} + - component: {fileID: 114236193938572640} + - component: {fileID: 114211976805880606} + m_Layer: 0 + m_Name: Spot Meshes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4053913077951520 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1353548066270536} + 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_Children: [] + m_Father: {fileID: 4757064976705760} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4076949788631542 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1224287044509976} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4609832983489934} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4096918231239086 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1142402619690344} + 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_Children: [] + m_Father: {fileID: 4318203443201480} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4176404260318534 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1047667964456268} + 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_Children: + - {fileID: 4609832983489934} + m_Father: {fileID: 4757064976705760} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4265204868366308 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1788956604111112} + 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_Children: [] + m_Father: {fileID: 4757064976705760} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4303309274719034 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1799937642147316} + 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_Children: + - {fileID: 4318203443201480} + m_Father: {fileID: 4757064976705760} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4318203443201480 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1258816774347064} + 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_Children: + - {fileID: 4096918231239086} + - {fileID: 4863783778706422} + - {fileID: 4536607065713508} + m_Father: {fileID: 4303309274719034} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4396773874774906 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575021317243488} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.00000008742278, y: -1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4609832983489934} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4536607065713508 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1636230328433630} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4318203443201480} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4581971199854064 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535353238707590} + 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_Children: [] + m_Father: {fileID: 4757064976705760} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4609832983489934 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1770871381648464} + 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_Children: + - {fileID: 4076949788631542} + - {fileID: 4819850910015782} + - {fileID: 4396773874774906} + - {fileID: 4650754916355332} + m_Father: {fileID: 4176404260318534} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4645488131911242 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1339399216964640} + 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_Children: [] + m_Father: {fileID: 4757064976705760} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4650754916355332 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1187633215761652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1, y: 0.000000011924881, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4609832983489934} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4757064976705760 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1876932738735192} + 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_Children: + - {fileID: 4645488131911242} + - {fileID: 4303309274719034} + - {fileID: 4176404260318534} + - {fileID: 4581971199854064} + - {fileID: 4053913077951520} + - {fileID: 4265204868366308} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4819850910015782 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1189086154529236} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1, y: -0.00000004371139, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4609832983489934} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4863783778706422 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1383434993425734} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4318203443201480} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114000420127885362 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1258816774347064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + ControlPoints: + - {fileID: 114651547473257596} + - {fileID: 114036331740392722} + - {fileID: 114694863799141942} + ShowGizmos: 1 + m_Interpolation: 1 + m_RestrictTo2D: 0 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &114036331740392722 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1383434993425734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114088600058488924 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1189086154529236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0, y: 0.55154324, z: -0} + m_HandleOut: {x: 0, y: -0.5515433, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114211976805880606 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1876932738735192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d8a3277e999b164d99f199328dc5d2d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoCreatePools: 1 + m_DefaultSettings: + m_Prewarm: 0 + m_AutoCreate: 1 + m_AutoEnableDisable: 1 + m_MinItems: 0 + m_Threshold: 0 + m_Speed: 1 + Debug: 0 +--- !u!114 &114223927810048742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1353548066270536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca7e92a8a4be4584da4f4e7d14a02b16, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1614889075 + m_UniqueID: 5 + Properties: + Dimensions: + serializedVersion: 2 + x: 630 + y: 200 + width: 350 + height: 466 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 350 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 5 + m_SlotName: Bounds + m_TargetModuleID: 1 + m_TargetSlotName: VMesh + - m_ModuleID: 5 + m_SlotName: Path/Volume + m_TargetModuleID: 4 + m_TargetSlotName: Volume + OutputLinks: + - m_ModuleID: 5 + m_SlotName: Spots + m_TargetModuleID: 6 + m_TargetSlotName: Spots + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_UseVolume: 1 + m_Simulate: 0 + m_CrossBase: 0 + m_CrossCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Groups: + - m_Weight: 0.5 + m_Name: Group + m_KeepTogether: 0 + m_SpaceBefore: + From: 0 + To: 0 + SimpleValue: 1 + m_SpaceAfter: + From: 0 + To: 0 + SimpleValue: 1 + m_RepeatingOrder: 1 + m_RepeatingItems: + From: 0 + To: 0 + SimpleValue: 0 + m_DistributionMode: 0 + m_PositionOffset: + From: 0 + To: 0 + SimpleValue: 1 + m_Height: + From: 0 + To: 0 + SimpleValue: 1 + m_RotationMode: 0 + m_RotationOffset: {x: 0, y: 0, z: 0} + m_RotationScatter: {x: 0, y: 0, z: 0} + m_Items: [] + m_RepeatingGroups: + From: 0 + To: 0 + SimpleValue: 0 + m_RepeatingOrder: 1 + m_FitEnd: 0 +--- !u!114 &114236193938572640 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1876932738735192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92f936dd5124460479f65d72577c8d9e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_ShowDebug: 0 + m_AutoRefresh: 1 + m_RefreshDelay: 0 + m_RefreshDelayEditor: 10 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + Modules: + - {fileID: 114518718916505050} + - {fileID: 114545987479673444} + - {fileID: 114849343070083786} + - {fileID: 114237888078390234} + - {fileID: 114223927810048742} + - {fileID: 114993980765043562} + m_LastModuleID: 6 +--- !u!114 &114237888078390234 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535353238707590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40872b673c65afa41a034045c5bcda65, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 446155156 + m_UniqueID: 4 + Properties: + Dimensions: + serializedVersion: 2 + x: 310 + y: 200 + width: 270 + height: 253 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 270 + LabelWidth: 100 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 4 + m_SlotName: Path + m_TargetModuleID: 2 + m_TargetSlotName: Path + - m_ModuleID: 4 + m_SlotName: Cross + m_TargetModuleID: 3 + m_TargetSlotName: Shape + OutputLinks: + - m_ModuleID: 4 + m_SlotName: Volume + m_TargetModuleID: 5 + m_TargetSlotName: Path/Volume + m_Range: + From: 0 + To: 1 + SimpleValue: 0 + m_Resolution: 50 + m_Optimize: 1 + m_AngleThreshold: 10 + m_CrossRange: + From: 0 + To: 1 + SimpleValue: 0 + m_CrossResolution: 50 + m_CrossOptimize: 1 + m_CrossAngleThreshold: 10 + m_CrossIncludeControlpoints: 0 + m_CrossHardEdges: 0 + m_CrossMaterials: 0 + m_CrossExtendedUV: 0 + m_CrossShiftMode: 1 + m_CrossShiftValue: 0 + m_CrossReverseNormals: 0 + m_ScaleMode: 0 + m_ScaleReference: 1 + m_ScaleOffset: 0 + m_ScaleUniform: 1 + m_ScaleX: 1 + m_ScaleY: 1 + m_ScaleCurveX: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ScaleCurveY: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_HollowInset: 0 + m_HollowReverseNormals: 0 +--- !u!114 &114313988169377248 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1770871381648464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db925cc84d8129f40818e17a75bc7ef3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_Plane: 0 + m_Persistent: 1 + m_Count: 4 + m_Radius: 1 +--- !u!114 &114458630722957734 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1224287044509976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 +--- !u!114 &114479349518237964 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1770871381648464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 82f49053b9b703e4cbb1c6e76a563270, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 2.0.0 + ControlPoints: + - {fileID: 114863406121414972} + - {fileID: 114088600058488924} + - {fileID: 114627386978393596} + - {fileID: 114533233884435930} + ShowGizmos: 1 + m_Interpolation: 3 + m_RestrictTo2D: 1 + m_Closed: 1 + m_AutoEndTangents: 1 + m_Orientation: 1 + m_AutoHandleDistance: 0.39 + m_Tension: 0 + m_Continuity: 0 + m_Bias: 0 + m_GizmoColor: {r: 0.70980394, g: 0.70980394, b: 0.70980394, a: 1} + m_GizmoSelectionColor: {r: 0.14901961, g: 0.34901962, b: 0.6784314, a: 1} + m_CacheDensity: 50 + m_MaxPointsPerUnit: 8 + m_UsePooling: 1 + m_UseThreading: 0 + m_CheckTransform: 1 + m_UpdateIn: 0 + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointChanges: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvySplineEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnAfterControlPointAdd: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_OnBeforeControlPointDelete: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyControlPointEvent, Assembly-CSharp-firstpass, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &114518718916505050 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1339399216964640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4dcd8018d6d8ecf4f876101d6e13a763, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1487550107 + m_UniqueID: 1 + Properties: + Dimensions: + serializedVersion: 2 + x: 330 + y: 10 + width: 250 + height: 170 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 1 + m_SlotName: VMesh + m_TargetModuleID: 5 + m_TargetSlotName: Bounds + - m_ModuleID: 1 + m_SlotName: VMesh + m_TargetModuleID: 6 + m_TargetSlotName: VMesh + m_Meshes: [] +--- !u!114 &114533233884435930 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1187633215761652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.00000001643727, y: -0.55154324, z: -0} + m_HandleOut: {x: 0.00000001643727, y: 0.55154324, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114545987479673444 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1799937642147316} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1c5cbffa9299884494795e0d5c9e852, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -470643561 + m_UniqueID: 2 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 200 + width: 250 + height: 197 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 2 + m_SlotName: Path + m_TargetModuleID: 4 + m_TargetSlotName: Path + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Spline: {fileID: 114000420127885362} +--- !u!114 &114627386978393596 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575021317243488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: 0.5515433, y: -0.000000049311815, z: -0} + m_HandleOut: {x: -0.55154324, y: 0.000000049311808, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114651547473257596 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1142402619690344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114694863799141942 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1636230328433630} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 0 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -1, y: 0, z: 0} + m_HandleOut: {x: 1, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114849343070083786 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1047667964456268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e981787696c73b041a1adb21ea65264a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: 1172321664 + m_UniqueID: 3 + Properties: + Dimensions: + serializedVersion: 2 + x: 10 + y: 417 + width: 250 + height: 269 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: [] + OutputLinks: + - m_ModuleID: 3 + m_SlotName: Shape + m_TargetModuleID: 4 + m_TargetSlotName: Cross + m_UseCache: 0 + m_UseGlobalSpace: 0 + m_StartCP: {fileID: 0} + m_EndCP: {fileID: 0} + m_Shape: {fileID: 114479349518237964} +--- !u!114 &114863406121414972 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1224287044509976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1f3c8d58ac75eab43bd8d07d598ce5bd, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AutoBakeOrientation: 0 + m_OrientationAnchor: 1 + m_Swirl: 0 + m_SwirlTurns: 0 + m_AutoHandles: 1 + m_AutoHandleDistance: 0.39 + m_HandleIn: {x: -0.55154324, y: -0, z: -0} + m_HandleOut: {x: 0.55154324, y: 0, z: 0} + m_OverrideGlobalTension: 0 + m_OverrideGlobalContinuity: 0 + m_OverrideGlobalBias: 0 + m_SynchronizeTCB: 1 + m_StartTension: 0 + m_EndTension: 0 + m_StartContinuity: 0 + m_EndContinuity: 0 + m_StartBias: 0 + m_EndBias: 0 + m_FollowUp: {fileID: 0} + m_FollowUpHeading: 2 + m_ConnectionSyncPosition: 0 + m_ConnectionSyncRotation: 0 + m_Connection: {fileID: 0} +--- !u!114 &114965130147398888 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1142402619690344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d8e6515f233d3da4fbaeff6c986c19df, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MaterialID: 0 + m_HardEdge: 0 + m_MaxStepDistance: 0 + m_UVEdge: 0 + m_ExplicitU: 0 + m_FirstU: 0 + m_SecondU: 0 +--- !u!114 &114993980765043562 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1788956604111112} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c6892ca2de7dc0741889c5dcd62ef9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: + m_OnBeforeRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnRefresh: + m_PersistentCalls: + m_Calls: [] + m_TypeName: FluffyUnderware.Curvy.CurvyCGEvent, Assembly-CSharp-firstpass, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_ModuleName: + m_Active: 1 + m_RandomizeSeed: 0 + m_Seed: -1579274610 + m_UniqueID: 6 + Properties: + Dimensions: + serializedVersion: 2 + x: 1030 + y: 10 + width: 250 + height: 325 + Expanded: + m_Target: 1 + speed: 3 + m_Value: 1 + MinWidth: 250 + LabelWidth: 0 + BackgroundColor: {r: 0, g: 0, b: 0, a: 1} + InputLinks: + - m_ModuleID: 6 + m_SlotName: Spots + m_TargetModuleID: 5 + m_TargetSlotName: Spots + - m_ModuleID: 6 + m_SlotName: VMesh + m_TargetModuleID: 1 + m_TargetSlotName: VMesh + OutputLinks: [] + m_MeshResources: + Items: [] + m_Combine: 0 + m_GroupMeshes: 1 + m_AddNormals: 2 + m_AddTangents: 1 + m_AddUV2: 1 + m_MakeStatic: 0 + m_Layer: 0 + m_Tag: Untagged + m_RendererEnabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_UseLightProbes: 1 + m_ReflectionProbes: 1 + m_AnchorOverride: {fileID: 0} + m_Collider: 1 + m_Convex: 0 + m_AutoUpdateColliders: 1 + m_Material: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot Meshes.prefab.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot Meshes.prefab.meta new file mode 100644 index 00000000..98049182 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CG Templates/Spot Meshes.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac4542fd60ec1d64faaa05cb8199c323 +timeCreated: 1441971033 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates.meta new file mode 100644 index 00000000..f8fef887 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 82121f41a40a6884d8eaad415a551f83 +folderAsset: yes +timeCreated: 1438939736 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleEditorTemplate.txt b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleEditorTemplate.txt new file mode 100644 index 00000000..a2cb2c5e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleEditorTemplate.txt @@ -0,0 +1,24 @@ +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(%CLASSNAME%))] + public class %CLASSNAME%Editor : CGModuleEditor<%CLASSNAME%> + { + + // Scene View GUI - Called only if the module is initialized and configured + //public override void OnModuleSceneGUI() {} + + // Scene View Debug GUI - Called only when Show Debug Visuals is activated + //public override void OnModuleSceneDebugGUI() {} + + // Inspector Debug GUI - Called only when Show Debug Values is activated + //public override void OnModuleDebugGUI() {} + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleEditorTemplate.txt.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleEditorTemplate.txt.meta new file mode 100644 index 00000000..9926ed88 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleEditorTemplate.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: cf0dee5ede4f40b409eeac853942044b +TextScriptImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleTemplate.txt b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleTemplate.txt new file mode 100644 index 00000000..98c4a9e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleTemplate.txt @@ -0,0 +1,95 @@ +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("%MENUNAME%",ModuleName="%MODULENAME%", Description="%DESCRIPTION%")] + public class %CLASSNAME% : CGModule + { + + [HideInInspector] + [InputSlotInfo(typeof(CGData))] + public CGModuleInputSlot InData = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGData))] + public CGModuleOutputSlot OutData = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + #endregion + #region ### Public Properties ### + + // Gets whether the module is properly configured i.e. has everything needed to work like intended + public override bool IsConfigured + { + get + { + return base.IsConfigured; + } + } + + // Gets whether the module and all its dependencies are fully initialized + public override bool IsInitialized + { + get + { + return base.IsInitialized; + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + protected override void OnEnable() + { + base.OnEnable(); + //Properties.MinWidth = 250; + //Properties.LabelWidth = 80; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + } +#endif + + public override void Reset() + { + base.Reset(); + } + + /*! \endcond */ + #endregion + + #region ### Module Overrides ### + + public override void Refresh() + { + base.Refresh(); + /* Add Module processing code in here */ + } + + // Called when a module's state changes (Link added/removed, Active toggles etc..) + //public override void OnStateChange() + //{ + // base.OnStateChange(); + //} + + // Called after a module was copied to a template + //public override void OnTemplateCreated() + //{ + // base.OnTemplateCreated(); + //} + + //Called in multiple situations to clear all the outputs generated by this module. One example is when you click on the "Clear output" button in the Curvy Generator's toolbar + //public override bool DeleteAllOutputManagedResources() + //{ + // return base.DeleteAllOutputManagedResources(); + //} + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleTemplate.txt.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleTemplate.txt.meta new file mode 100644 index 00000000..e9a5686b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/CGModuleTemplate.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 4cab19798ec77364ea0eaad5b61ef650 +TextScriptImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/ShapeTemplate.txt b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/ShapeTemplate.txt new file mode 100644 index 00000000..b9259a48 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/ShapeTemplate.txt @@ -0,0 +1,34 @@ +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy; + +namespace FluffyUnderware.Curvy.Shapes +{ + [CurvyShapeInfo("%MENUNAME%",%IS2D%)] + public class %CLASSNAME% : %PARENT% + { + + #if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + // Add your validation here + } + #endif + + // Set your default values here + protected override void Reset() + { + base.Reset(); + } + + // Add your shape generation code here + protected override void ApplyShape() + { + PrepareSpline(CurvyInterpolation.Bezier); + + } + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/ShapeTemplate.txt.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/ShapeTemplate.txt.meta new file mode 100644 index 00000000..31235ce2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ClassTemplates/ShapeTemplate.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: d64f7ccb370611049ae60f863ffc36e6 +TextScriptImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CurvyLicense.txt b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CurvyLicense.txt new file mode 100644 index 00000000..b1f540cc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CurvyLicense.txt @@ -0,0 +1,28 @@ +Asset is governed by the Asset Store EULA; however, the following third party components are governed by the licenses indicated below: + +==== DevTools ==== +Copyright (c) 2013-2017 FluffyUnderware, http://www.fluffyunderware.com +All rights reserved. + +==== LibTessDotNet ==== +SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +Copyright 2000, Silicon Graphics, Inc. All Rights Reserved. +Copyright 2012, Google Inc. All Rights Reserved. + +==== Vector Graphics ==== +com.unity.vectorgraphics copyright © 2020 Unity Technologies ApS +Licensed under the Unity Companion License for Unity-dependent projects--see [Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). +Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions. + +==== 3d models ==== +The used asteroid 3d model is from the "Asteroids Pack" asset by Mark Dion, with modification. +https://assetstore.unity.com/packages/3d/environments/asteroids-pack-84988 +License: Asset Store Terms of Service and EULA: https://unity3d.com/legal/as_terms + +The used rail block 3d model is from the "Railway Sleepers" asset by ALEXANDR PRIMAKOV, with modification. +https://assetstore.unity.com/packages/3d/environments/railway-sleepers-95855 +License: Asset Store Terms of Service and EULA: https://unity3d.com/legal/as_terms + +The used barbed wire 3d model is from the "Barbed Wire Spool" model by Aidan Callaghan +https://sketchfab.com/3d-models/barbed-wire-spool-59cc9460a24a459eac7057443e6a4e72#download +License: Creative Commons Attribution Interational 4.0: https://creativecommons.org/licenses/by/4.0/ \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CurvyLicense.txt.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CurvyLicense.txt.meta new file mode 100644 index 00000000..697a23e7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/CurvyLicense.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dfebc69270a6255489cc6ac1a4cf8820 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor.meta new file mode 100644 index 00000000..41fd0a3d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: c95117b0debbdcb40aceb58e927ba1ba +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/AboutWindow.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/AboutWindow.cs new file mode 100644 index 00000000..93c2775c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/AboutWindow.cs @@ -0,0 +1,173 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevToolsEditor; +using System.Linq; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor +{ + + public class AboutWindow : EditorWindow + { + static bool heightHasBeenSet = false; + + + public static void Open() + { + EditorWindow.GetWindow(true, "About Curvy"); + } + + void OnEnable() + { + CurvyProject.Instance.ShowAboutOnLoad = false; + } + + void OnGUI() + { + GUILayout.BeginVertical(); + GUILayout.Label(new GUIContent(CurvyStyles.TexLogoBig)); + DTGUI.PushContentColor(Color.black); + + GUIStyle labelStyle = new GUIStyle(EditorStyles.label); + labelStyle.alignment = TextAnchor.UpperLeft; + labelStyle.fontSize = 18; + labelStyle.richText = true; + + GUI.Label(new Rect(300, 70, 215, 40), "v " + CurvySpline.VERSION + "", labelStyle); + labelStyle.fontSize = 14; + GUI.Label(new Rect(300, 95, 215, 40), "© 2013 ToolBuddy", labelStyle); + DTGUI.PopContentColor(); + + + //head("Links"); + if (buttonCol("Release notes", "View release notes and upgrade instructions")) + OpenReleaseNotes(); + if (buttonCol("Leave a review", "We've got to feed the Asset Store's algorithm")) + Application.OpenURL("https://assetstore.unity.com/packages/tools/level-design/curvy-splines-7038"); + if (buttonCol("Custom development", "We can provide custom modifications for Curvy")) + Application.OpenURL("mailto:admin@curvyeditor.com?subject=Curvy custom development request"); + if (buttonCol("Curvy Website", "Visit Curvy Splines' website")) + OpenWeb(); + if (buttonCol("Our other assets", "Find our other assets on the Asset Store")) + Application.OpenURL("https://assetstore.unity.com/publishers/304"); + if (buttonCol("Submit a bug report", "Found a bug? Please issue a bug report")) + CurvyEditorUtility.SendBugReport(); + foot(); + + GUILayout.Space(10); + + head("Learning Resources"); + if (buttonCol("View Examples", "Show examples folder in the Project window")) + ShowExamples(); + if (buttonCol("Tutorials", "Watch some tutorials")) + OpenTutorials(); + if (buttonCol("Documentation", "Manuals! That magic source of wisdom")) + OpenDocs(); + if (buttonCol("API Reference", "Browse the API reference")) + OpenAPIDocs(); + if (buttonCol("Support Forum", "Visit Support forum")) + OpenForum(); + foot(); + + GUILayout.EndVertical(); + + if (!heightHasBeenSet && Event.current.type == EventType.Repaint) + setHeightToContent(); + } + + private void setHeightToContent() + { + int w = 500; + float height = GUILayoutUtility.GetLastRect().height + 10f; + position.Set(position.x, position.y, w, height); + minSize = new Vector2(w, height); + maxSize = new Vector2(w, height + 1); + heightHasBeenSet = true; + } + + void head(string text) + { + GUILayout.BeginHorizontal(); + GUILayout.Space(35); + GUILayout.Label(text, EditorStyles.boldLabel); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + GUILayout.Space(3); + } + + void foot() + { + GUILayout.Space(5); + } + + bool buttonCol(string btnText, string text) + { + return buttonCol(new GUIContent(btnText), text); + } + + bool buttonCol(GUIContent btn, string text) + { + GUILayout.BeginHorizontal(); + GUILayout.Space(20); + bool res = GUILayout.Button(btn, GUILayout.Width(150)); + GUILayout.Space(20); + EditorGUILayout.LabelField("" + text + "", DTStyles.HtmlLabel); + GUILayout.EndHorizontal(); + return res; + } + + public static void ShowExamples() + { + string searchString; +#if UNITY_2017_4_OR_NEWER + searchString = "t:Folder Curvy Examples"; +#else + searchString = "Curvy Examples"; +#endif + string[] assetsGuids = AssetDatabase.FindAssets(searchString); + if (assetsGuids.Any()) + EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(assetsGuids.First()))); + else + DTLog.LogError("[Curvy] Could not find the \"Curvy Examples\" folder"); + } + + public static void OpenTutorials() + { + Application.OpenURL(CurvySpline.DOCLINK + "tutorials"); + } + public static void OpenReleaseNotes() + { + Application.OpenURL(CurvySpline.DOCLINK + "releasenotes"); + } + + public static void OpenDocs() + { + Application.OpenURL(CurvySpline.WEBROOT + "documentation/"); + } + + public static void OpenAPIDocs() + { + Application.OpenURL("https://api.curvyeditor.com/" + CurvySpline.APIVERSION + "/"); + } + + public static void OpenWeb() + { + Application.OpenURL(CurvySpline.WEBROOT); + } + + public static void OpenForum() + { + Application.OpenURL("https://forum.curvyeditor.com"); + } + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/AboutWindow.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/AboutWindow.cs.meta new file mode 100644 index 00000000..f33c33c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/AboutWindow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: abfe48122637018449c040b59b54099e +timeCreated: 1438161978 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules.meta new file mode 100644 index 00000000..c84b47e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 534c288ce6c91a94ea65f88f19e34cea +folderAsset: yes +timeCreated: 1436263089 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildRasterizedPathEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildRasterizedPathEditor.cs new file mode 100644 index 00000000..554c84e2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildRasterizedPathEditor.cs @@ -0,0 +1,50 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(BuildRasterizedPath))] + public class BuildRasterizedPathEditor : CGModuleEditor + { + protected override void OnEnable() + { + base.OnEnable(); + HasDebugVisuals = true; + } + + public override void OnModuleSceneDebugGUI() + { + base.OnModuleSceneDebugGUI(); + CGPath data = Target.OutPath.GetData(); + if (data) + { + Handles.matrix = Target.Generator.transform.localToWorldMatrix; + CGEditorUtility.SceneGUIPlot(data.Positions.Array, data.Positions.Count, 0.1f,Color.white); + Handles.matrix = Matrix4x4.identity; + } + } + + public override void OnModuleDebugGUI() + { + CGPath data = Target.OutPath.GetData(); + if (data) + { + EditorGUILayout.LabelField("Samples: " + data.Count.ToString()); + } + } + } + + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildRasterizedPathEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildRasterizedPathEditor.cs.meta new file mode 100644 index 00000000..01829916 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildRasterizedPathEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a22d0d1b506cab148ac30469a3cbe49d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildShapeExtrusionEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildShapeExtrusionEditor.cs new file mode 100644 index 00000000..329e70dc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildShapeExtrusionEditor.cs @@ -0,0 +1,64 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(BuildShapeExtrusion))] + public class BuildShapeExtrusionEditor : CGModuleEditor + { + bool mEditCross; + bool mShowEditButton; + + public override void OnModuleDebugGUI() + { + EditorGUILayout.LabelField("Samples Path/Cross: " + Target.PathSamples.ToString() + "/" + Target.CrossSamples.ToString()); + EditorGUILayout.LabelField("Cross Sample Groups: " + Target.CrossGroups.ToString()); + } + + void CBEditCrossButton() + { + + if (DTGUI.IsLayout) + mShowEditButton = (Target.IsConfigured && Target.InCross.SourceSlot().ExternalInput != null && Target.InCross.SourceSlot().ExternalInput.SupportsIPE); + + if (mShowEditButton) + { + EditorGUI.BeginChangeCheck(); + mEditCross = GUILayout.Toggle(mEditCross, "Edit Cross", EditorStyles.miniButton); + if (EditorGUI.EndChangeCheck()) + { + if (mEditCross) + { + CGGraph.SetIPE(Target.Cross, this); + } + else + CGGraph.SetIPE(); + } + } + } + + /// + /// Called for the IPE initiator to get the TRS values for the target + /// + internal override void OnIPEGetTRS(out Vector3 position, out Quaternion rotation, out Vector3 scale) + { + position = Target.CrossPosition; + rotation = Target.CrossRotation; + scale = Target.GetScale(0); + } + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildShapeExtrusionEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildShapeExtrusionEditor.cs.meta new file mode 100644 index 00000000..78007c8d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildShapeExtrusionEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 665128a47ac13454d8d965e27da8833b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeCapsEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeCapsEditor.cs new file mode 100644 index 00000000..55e30160 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeCapsEditor.cs @@ -0,0 +1,36 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(BuildVolumeCaps))] + public class BuildVolumeCapsEditor : CGModuleEditor + { + + + public override void OnModuleDebugGUI() + { + CGVMesh vmesh = Target.OutVMesh.GetData(); + if (vmesh) + { + EditorGUILayout.LabelField("Vertices: " + vmesh.Count.ToString()); + EditorGUILayout.LabelField("Triangles: " + vmesh.TriangleCount.ToString()); + EditorGUILayout.LabelField("SubMeshes: " + vmesh.SubMeshes.Length.ToString()); + } + } + + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeCapsEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeCapsEditor.cs.meta new file mode 100644 index 00000000..de57fe56 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeCapsEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5d8157ce69d4dd4b92fdc9a14c40e18 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeMeshEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeMeshEditor.cs new file mode 100644 index 00000000..b7cd1f9d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeMeshEditor.cs @@ -0,0 +1,141 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Linq; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(BuildVolumeMesh))] + public class BuildVolumeMeshEditor : CGModuleEditor + { + bool showAddButton; + int matcount; + + public override void OnModuleDebugGUI() + { + CGVMesh vmesh = Target.OutVMesh.GetData(); + if (vmesh) + { + EditorGUILayout.LabelField("Vertices: " + vmesh.Count.ToString()); + EditorGUILayout.LabelField("Triangles: " + vmesh.TriangleCount.ToString()); + EditorGUILayout.LabelField("SubMeshes: " + vmesh.SubMeshes.Length.ToString()); + } + } + + protected override void OnReadNodes() + { + ensureMaterialTabs(); + } + + void ensureMaterialTabs() + { + DTGroupNode tabbar = Node.FindTabBarAt("Default"); + + if (tabbar == null) + return; + + tabbar.MaxItemsPerRow = 4; + for (int i = 0; i < Target.MaterialCount; i++) + { + string tabName = string.Format("Mat {0}", i); + if (tabbar.Count <= i + 1) + tabbar.AddTab(tabName, OnRenderTab); + else + { + tabbar[i + 1].Name = tabName; + tabbar[i + 1].GUIContent.text = tabName; + } + } + while (tabbar.Count > Target.MaterialCount + 1) + tabbar[tabbar.Count - 1].Delete(); + matcount = Target.MaterialCount; + } + + void OnRenderTab(DTInspectorNode node) + { + int idx = node.Index - 1; + + if (idx >= 0 && idx < Target.MaterialCount) + { + CGMaterialSettingsEx mat = Target.MaterialSetttings[idx]; + EditorGUI.BeginChangeCheck(); + + bool matSwapUv = EditorGUILayout.Toggle("Swap UV", mat.SwapUV); + if (matSwapUv != mat.SwapUV) + { + Undo.RegisterCompleteObjectUndo(Target, "Modify Swap UV"); + mat.SwapUV = matSwapUv; + } + + CGKeepAspectMode cgKeepAspectMode = (CGKeepAspectMode)EditorGUILayout.EnumPopup("Keep Aspect", mat.KeepAspect); + if (cgKeepAspectMode != mat.KeepAspect) + { + Undo.RegisterCompleteObjectUndo(Target, "Modify Keep Aspect"); + mat.KeepAspect = cgKeepAspectMode; + } + + Vector2 matUvOffset = EditorGUILayout.Vector2Field("UV Offset", mat.UVOffset); + if (matUvOffset != mat.UVOffset) + { + Undo.RegisterCompleteObjectUndo(Target, "Modify UV Offset"); + mat.UVOffset = matUvOffset; + } + + Vector2 matUvScale = EditorGUILayout.Vector2Field("UV Scale", mat.UVScale); + if (matUvScale != mat.UVScale) + { + Undo.RegisterCompleteObjectUndo(Target, "Modify UV Scale"); + mat.UVScale = matUvScale; + } + + Target.SetMaterial(idx, EditorGUILayout.ObjectField("Material", Target.GetMaterial(idx), typeof(Material), true) as Material); + + if (Target.MaterialCount > 1 && GUILayout.Button("Remove")) + { + Target.RemoveMaterial(idx); + node.Delete(); + ensureMaterialTabs(); + GUIUtility.ExitGUI(); + } + if (EditorGUI.EndChangeCheck()) + { + Target.Dirty = true; + EditorUtility.SetDirty(Target); + } + } + } + + void CBAddMaterial() + { + if (DTGUI.IsLayout) + showAddButton = Node.FindTabBarAt("Default").SelectedIndex == 0; + if (showAddButton) + { + if (GUILayout.Button("Add Material Group")) + { + Target.AddMaterial(); + ensureMaterialTabs(); + GUIUtility.ExitGUI(); + } + } + + } + + protected override void OnCustomInspectorGUI() + { + base.OnCustomInspectorGUI(); + if (matcount != Target.MaterialCount) + ensureMaterialTabs(); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeMeshEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeMeshEditor.cs.meta new file mode 100644 index 00000000..13a99918 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeMeshEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ea43086e5fba3b4e8d79ebce55076b7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeSpotsEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeSpotsEditor.cs new file mode 100644 index 00000000..3da9e8bf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeSpotsEditor.cs @@ -0,0 +1,357 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor.Extensions; +using UnityEditorInternal; +using FluffyUnderware.Curvy; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(BuildVolumeSpots))] + public class BuildVolumeSpotsEditor : CGModuleEditor + { + ReorderableList mGroupItemsList; + CGBoundsGroup mCurrentGroup; + + private DTGroupNode distributionGroupNode; + private DTGroupNode rotationGroupNode; + private DTGroupNode translationGroupNode; + private DTGroupNode scaleGroupNode; + + private readonly GUIContent uniformScalingLabel = new GUIContent("Scale"); + private readonly GUIContent itemsNumberLabel = new GUIContent(" Items #"); + private readonly GUIContent emptyLabel1 = new GUIContent(""); + private readonly GUIContent emptyLabel2 = new GUIContent(""); + private readonly GUIContent emptyLabel3 = new GUIContent(""); + + protected override void OnEnable() + { + base.OnEnable(); + HasDebugVisuals = true; + } + + public override void OnModuleSceneDebugGUI() + { + CGSpots data = Target.SimulatedSpots; + if (data) + { + Handles.matrix = Target.Generator.transform.localToWorldMatrix; + for (int i = 0; i < data.Spots.Count; i++) + { + Quaternion Q = data.Spots.Array[i].Rotation * Quaternion.Euler(-90, 0, 0); +#if UNITY_5_6_OR_NEWER + Handles.ArrowHandleCap(0, data.Spots.Array[i].Position, Q, 2, EventType.Repaint); +#else + Handles.ArrowCap(0, data.Points[i].Position, Q, 2); +#endif + + Handles.Label(data.Spots.Array[i].Position, data.Spots.Array[i].Index.ToString(), EditorStyles.whiteBoldLabel); + } + Handles.matrix = Matrix4x4.identity; + } + } + + protected override void OnReadNodes() + { + base.OnReadNodes(); + ensureGroupTabs(); + + //Used to subdivide nicely the diplayed fields within groups + distributionGroupNode = new DTGroupNode("Distribution"); + + rotationGroupNode = new DTGroupNode("Rotation"); + rotationGroupNode.Expanded = false; + translationGroupNode = new DTGroupNode("Translation"); + translationGroupNode.Expanded = false; + scaleGroupNode = new DTGroupNode("Scale"); + scaleGroupNode.Expanded = false; + } + + void ensureGroupTabs() + { + DTGroupNode tabbar = Node.FindTabBarAt("Default"); + for (int i = 0; i < Target.GroupCount; i++) + { + string tabName = string.Format("{0}:{1}", i, Target.Groups[i].Name); + if (tabbar.Count <= i + 2) + tabbar.AddTab(tabName, OnRenderTab); + else + { + tabbar[i + 2].Name = tabName; + tabbar[i + 2].GUIContent.text = tabName; + } + } + for (int i = tabbar.Count - 1; i > Target.GroupCount + 1; i--) + tabbar[i].Delete(); + + + } + + void OnRenderTab(DTInspectorNode node) + { + int grpIdx = node.Index - 2; + + if (grpIdx >= 0 && grpIdx < Target.GroupCount) + { + + SerializedProperty pGroup = serializedObject.FindProperty(string.Format("m_Groups.Array.data[{0}]", grpIdx)); + if (pGroup != null) + { + + CGBoundsGroup boundsGroup = Target.Groups[grpIdx]; + SerializedProperty pItems = pGroup.FindPropertyRelative("m_Items"); + if (pItems != null) + { + + if (mCurrentGroup != null && mCurrentGroup != boundsGroup) + mGroupItemsList = null; + if (mGroupItemsList == null) + { + mCurrentGroup = boundsGroup; + mGroupItemsList = new ReorderableList(pItems.serializedObject, pItems); + mGroupItemsList.draggable = true; + mGroupItemsList.drawHeaderCallback = (Rect Rect) => { EditorGUI.LabelField(Rect, "Items"); }; + mGroupItemsList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => + { + #region --- + + SerializedProperty prop = pItems.FindPropertyRelative(string.Format("Array.data[{0}]", index)); + SerializedProperty pIndex = prop.FindPropertyRelative("Index"); + + rect.height = EditorGUIUtility.singleLineHeight; + EditorGUI.LabelField(new Rect(rect.x, rect.y, 30, rect.height), "#" + index.ToString() + ":"); + + GUIContent[] boundNames = Target.BoundsNames; + int[] boundIndices = Target.BoundsIndices; + if (boundNames.Length == 0) + pIndex.intValue = EditorGUI.IntField(GetSelectorDrawArea(rect), "", pIndex.intValue); + else + EditorGUI.IntPopup(GetSelectorDrawArea(rect), pIndex, boundNames, boundIndices, emptyLabel1); + + if (boundsGroup.RandomizeItems && index >= boundsGroup.FirstRepeating && index <= boundsGroup.LastRepeating) + EditorGUI.PropertyField(GetWeightDrawArea(rect), prop.FindPropertyRelative("m_Weight"), emptyLabel2); + #endregion + }; + + mGroupItemsList.onAddCallback = (ReorderableList l) => + { + boundsGroup.Items.Insert(Mathf.Clamp(l.index + 1, 0, boundsGroup.ItemCount), new CGBoundsGroupItem()); + boundsGroup.LastRepeating++; + Target.Dirty = true; + EditorUtility.SetDirty(Target); + }; + mGroupItemsList.onRemoveCallback = (ReorderableList l) => + { + boundsGroup.Items.RemoveAt(l.index); + boundsGroup.LastRepeating--; + Target.Dirty = true; + EditorUtility.SetDirty(Target); + }; + } + + mGroupItemsList.DoLayoutList(); + + RenderSectionHeader(distributionGroupNode); + if (distributionGroupNode.ContentVisible) + { + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_RandomizeItems")); + if (boundsGroup.RandomizeItems) + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_RepeatingItems"), itemsNumberLabel); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_KeepTogether")); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_SpaceBefore")); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_SpaceAfter")); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_CrossBase")); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_IgnoreModuleCrossBase")); + } + RenderSectionFooter(distributionGroupNode); + NeedRepaint |= distributionGroupNode.NeedRepaint; + + RenderSectionHeader(translationGroupNode); + if (translationGroupNode.ContentVisible) + { + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_RelativeTranslation")); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_TranslationX"));//, XTranslationContent); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_TranslationY"));//, YTranslationContent); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_TranslationZ"));//, ZTranslationContent); + } + RenderSectionFooter(translationGroupNode); + NeedRepaint |= translationGroupNode.NeedRepaint; + + RenderSectionHeader(rotationGroupNode); + if (rotationGroupNode.ContentVisible) + { + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_RotationMode")); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_RotationX"));//, XRotationContent); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_RotationY"));//, YRotationContent); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_RotationZ"));//, ZRotationContent); + } + RenderSectionFooter(rotationGroupNode); + NeedRepaint |= rotationGroupNode.NeedRepaint; + + RenderSectionHeader(scaleGroupNode); + if (scaleGroupNode.ContentVisible) + { + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_UniformScaling"));//, XScaleContent); + if (boundsGroup.UniformScaling) + { + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_ScaleX"), uniformScalingLabel); + } + else + { + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_ScaleX"));//, XScaleContent); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_ScaleY"));//, YScaleContent); + EditorGUILayout.PropertyField(pGroup.FindPropertyRelative("m_ScaleZ"));//, ZScaleContent); + } + } + RenderSectionFooter(scaleGroupNode); + NeedRepaint |= scaleGroupNode.NeedRepaint; + } + } + } + } + + void RenderSectionHeader(DTGroupNode node) + { + GUILayout.Space(10); + Rect controlRect = EditorGUILayout.GetControlRect(false, 16); + bool toggleState = node.Expanded; + DTInspectorNodeDefaultRenderer.RenderHeader(controlRect, 0, String.Empty, node.GUIContent, ref toggleState); + node.Expanded = toggleState; + EditorGUILayout.BeginFadeGroup(node.ExpandedFaded); + //BUG if indentation is activated, mouse detection on the FloatRegion parameters gets fucked up + //EditorGUI.indentLevel = EditorGUI.indentLevel + 1; + } + + void RenderSectionFooter(DTGroupNode node) + { + //BUG if indentation is activated, mouse detection on the FloatRegion parameters gets fucked up + //EditorGUI.indentLevel = EditorGUI.indentLevel - 1; + EditorGUILayout.EndFadeGroup(); + } + + protected override void SetupArrayEx(DTFieldNode node, DevTools.ArrayExAttribute attribute) + { + switch (node.Name) + { + case "m_Groups": + node.ArrayEx.drawHeaderCallback = (Rect Rect) => { EditorGUI.LabelField(Rect, "Groups"); }; + node.ArrayEx.drawElementCallback = OnGroupElementGUI; + node.ArrayEx.onAddCallback = (ReorderableList l) => + { + //TODO unify this code with the one in BuildVolumeSpot.AddGroup() + + //Creates a group + CGBoundsGroup cgBoundsGroup = new CGBoundsGroup("Group"); + + ////Adds the first item from input module if any. + //if (Target.InBounds) + //{ + // List inGameObjects = Target.InBounds.GetAllData(); + // if (inGameObjects.Count != 0) + // { + // CGBoundsGroupItem cgBoundsGroupItem = new CGBoundsGroupItem(); + // cgBoundsGroup.Items.Add(cgBoundsGroupItem); + // } + //} + + //Always add an input + cgBoundsGroup.Items.Add(new CGBoundsGroupItem()); + + //Adds the group + Target.Groups.Insert(Mathf.Clamp(l.index + 1, 0, Target.GroupCount), cgBoundsGroup); + + Target.LastRepeating++; + EditorUtility.SetDirty(Target); + ensureGroupTabs(); + }; + node.ArrayEx.onRemoveCallback = (ReorderableList l) => + { + mGroupItemsList = null; + Target.Groups.RemoveAt(l.index); + Target.LastRepeating--; + EditorUtility.SetDirty(Target); + + //node[1+l.index].Delete(); + ensureGroupTabs(); + GUIUtility.ExitGUI(); + }; + node.ArrayEx.onReorderCallback = (ReorderableList l) => + { + ensureGroupTabs(); + GUIUtility.ExitGUI(); + }; + break; + } + } + + void OnGroupElementGUI(Rect rect, int index, bool isActive, bool isFocused) + { + bool fix = (index < Target.FirstRepeating || index > Target.LastRepeating); + + if (fix) + DTHandles.DrawSolidRectangleWithOutline(rect, new Color(0, 0, 0.5f, 0.2f), new Color(0, 0, 0, 0)); + + SerializedProperty prop = serializedObject.FindProperty(string.Format("m_Groups.Array.data[{0}]", index)); + if (prop != null) + { + SerializedProperty pName = prop.FindPropertyRelative("m_Name"); + SerializedProperty pRepeatingOrder = serializedObject.FindProperty("m_RepeatingOrder"); + + rect.height = EditorGUIUtility.singleLineHeight; + EditorGUI.LabelField(new Rect(rect.x, rect.y, 30, rect.height), "#" + index.ToString() + ":"); + + EditorGUI.BeginChangeCheck(); + pName.stringValue = EditorGUI.TextField(GetSelectorDrawArea(rect), "", pName.stringValue); + if (EditorGUI.EndChangeCheck()) + { + DTGroupNode tab = Node.FindTabBarAt("Default"); + if (tab && tab.Count > index + 2) + { + tab[index + 2].Name = string.Format("{0}:{1}", index, pName.stringValue); + tab[index + 2].GUIContent.text = string.Format("{0}:{1}", index, pName.stringValue); + } + } + + if (!fix && pRepeatingOrder.intValue == (int)CurvyRepeatingOrderEnum.Random) + EditorGUI.PropertyField(GetWeightDrawArea(rect), prop.FindPropertyRelative("m_Weight"), emptyLabel3); + } + } + + protected override void OnCustomInspectorGUIBefore() + { + base.OnCustomInspectorGUIBefore(); + EditorGUILayout.HelpBox("Spots: " + Target.Count.ToString(), MessageType.Info); + } + + private static Rect GetSelectorDrawArea(Rect rect) + { + Rect itemSelectorDrawArea = new Rect(rect); + itemSelectorDrawArea.x += 30; + itemSelectorDrawArea.y += 1; + itemSelectorDrawArea.width = rect.width / 2 - 50; + return itemSelectorDrawArea; + } + + private static Rect GetWeightDrawArea(Rect rect) + { + Rect weightDrawArea = new Rect(rect); + weightDrawArea.x += rect.width / 2 - 10; + weightDrawArea.y += 1; + weightDrawArea.width = rect.width / 2; + return weightDrawArea; + } + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeSpotsEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeSpotsEditor.cs.meta new file mode 100644 index 00000000..bcee7a37 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/BuildVolumeSpotsEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba3517e1babdd03478ed6bded8b06b79 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ConformPathEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ConformPathEditor.cs new file mode 100644 index 00000000..8dbe87c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ConformPathEditor.cs @@ -0,0 +1,22 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ConformPath))] + public class ConformPathEditor : CGModuleEditor + { + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ConformPathEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ConformPathEditor.cs.meta new file mode 100644 index 00000000..d5201c35 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ConformPathEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1b6b2bda946d97f4091098f7f032f604 +timeCreated: 1433940954 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateGameObjectEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateGameObjectEditor.cs new file mode 100644 index 00000000..461aa574 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateGameObjectEditor.cs @@ -0,0 +1,34 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(CreateGameObject))] + public class CreateGameObjectEditor : CGModuleEditor + { + protected override void OnReadNodes() + { + base.OnReadNodes(); + Node.FindTabBarAt("Default").AddTab("Export", OnExportTab); + } + + void OnExportTab(DTInspectorNode node) + { + GUI.enabled = Target.GameObjects.Count > 0; + if (GUILayout.Button("Save To Scene")) + Target.SaveToScene(); + GUI.enabled = true; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateGameObjectEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateGameObjectEditor.cs.meta new file mode 100644 index 00000000..1bed573c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateGameObjectEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f5b8ec7e389706a4aa211345824992e9 +timeCreated: 1441105931 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateMeshEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateMeshEditor.cs new file mode 100644 index 00000000..72dda65b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateMeshEditor.cs @@ -0,0 +1,55 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(CreateMesh))] + public class CreateMeshEditor : CGModuleEditor + { + public override void OnModuleDebugGUI() + { + base.OnModuleDebugGUI(); + if (Target){ + EditorGUILayout.LabelField("Meshes: "+Target.MeshCount.ToString()); + EditorGUILayout.LabelField("Vertices: " + Target.VertexCount.ToString()); + } + } + + protected override void OnReadNodes() + { + base.OnReadNodes(); + Node.FindTabBarAt("Default").AddTab("Export", onExportTab); + } + + void onExportTab(DTInspectorNode node) + { + GUI.enabled = Target.MeshCount > 0; + + if (GUILayout.Button(new GUIContent("Save To Scene","Creates a GameObject, outside of the generator, containing a copy of the generated mesh(es)"))) + { + Target.SaveToScene(); + } + if (GUILayout.Button(new GUIContent("Save To Assets", "Saves a copy of the generated mesh(es) as Asset(s)"))) + { + Target.SaveToAsset(); + } + if (GUILayout.Button(new GUIContent("Save To Both (Prefab Compatible)", "Saves a copy of the generated mesh(es) as Asset(s), then creates a GameObject, outside of the generator, referencing those mesh assets. This way the created GameObject can be made part of a prefab without issues"))) + { + Target.SaveToSceneAndAsset(); + } + + GUI.enabled = true; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateMeshEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateMeshEditor.cs.meta new file mode 100644 index 00000000..9d4e38a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreateMeshEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86844bb464cc3bb4db7570a1e838dbe3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreatePathLineRendererEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreatePathLineRendererEditor.cs new file mode 100644 index 00000000..6df9c90a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreatePathLineRendererEditor.cs @@ -0,0 +1,30 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(CreatePathLineRenderer))] + public class CreatePathLineRendererEditor : CGModuleEditor + { + + protected override void OnCustomInspectorGUIBefore() + { + base.OnCustomInspectorGUIBefore(); + EditorGUILayout.HelpBox("Please edit parameters in inspector!", MessageType.Info); + if (GUILayout.Button("Select Inspector")) + Selection.activeGameObject = Target.gameObject; + } + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreatePathLineRendererEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreatePathLineRendererEditor.cs.meta new file mode 100644 index 00000000..78fc6f92 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/CreatePathLineRendererEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e23df703953ef014db32b2b9fdd05f64 +timeCreated: 1479208691 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugRasterizedPathEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugRasterizedPathEditor.cs new file mode 100644 index 00000000..f1af7554 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugRasterizedPathEditor.cs @@ -0,0 +1,89 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(DebugRasterizedPath))] + public class DebugRasterizedPathEditor : CGModuleEditor + { + + protected override void OnEnable() + { + base.OnEnable(); + HasDebugVisuals = true; + ShowDebugVisuals = true; + } + + // Scene View GUI - Called only if the module is initialized and configured + //public override void OnModuleSceneGUI() {} + + // Scene View Debug GUI - Called only when Show Debug Visuals is activated + public override void OnModuleSceneDebugGUI() + { + if (Target.ShowNormals || Target.ShowOrientation) + { + CGPath path = Target.InPath.GetData(out bool isDisposable); + if(path) + { + Color gizmoOrientationColor = CurvyGlobalManager.GizmoOrientationColor; + Color gizmoTangentColor = CurvySplineSegment.GizmoTangentColor; + + if (Target.ShowOrientation) + { + DTHandles.PushHandlesColor(gizmoOrientationColor); + + for (int i = 0; i < path.Count; i++) + Handles.DrawLine(path.Positions.Array[i], path.Positions.Array[i] + path.Directions.Array[i] * 2); + + DTHandles.PopHandlesColor(); + } + + if (Target.ShowNormals) + { + DTHandles.PushHandlesColor(gizmoTangentColor); + + for (int i = 0; i < path.Count; i++) + Handles.DrawLine(path.Positions.Array[i], path.Positions.Array[i] + path.Normals.Array[i] * 2); + + DTHandles.PopHandlesColor(); + } + } + if (isDisposable) + path.Dispose(); + } + } + + public override void OnModuleDebugGUI() + { + CGPath path = Target.InPath.GetData(out bool isDisposable); + if (path) + { + EditorGUILayout.LabelField("VertexCount: " + path.Count.ToString()); + } + if (isDisposable) + path.Dispose(); + } + + // Inspector Debug GUI - Called only when Show Debug Values is activated + //public override void OnModuleDebugGUI() {} + + protected override void OnCustomInspectorGUI() + { + DebugVMeshEditor.CheckGeneratorDebugMode(Target); + base.OnCustomInspectorGUI(); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugRasterizedPathEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugRasterizedPathEditor.cs.meta new file mode 100644 index 00000000..45af38cf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugRasterizedPathEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b947cab6e199c084498c2905219851e6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVMeshEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVMeshEditor.cs new file mode 100644 index 00000000..d135046f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVMeshEditor.cs @@ -0,0 +1,80 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Linq; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(DebugVMesh))] + public class DebugVMeshEditor : CGModuleEditor + { + + protected override void OnEnable() + { + base.OnEnable(); + HasDebugVisuals = true; + ShowDebugVisuals = true; + } + + public override void OnModuleSceneDebugGUI() + { + CGVMesh vmesh = Target.InData.GetData(out bool isDisposable); + if (vmesh) + { + Handles.matrix = Target.Generator.transform.localToWorldMatrix; + if (Target.ShowVertices) + CGEditorUtility.SceneGUIPlot(vmesh.Vertices.Array, vmesh.Vertices.Count, 0.1f, Color.gray); + + if (Target.ShowVertexID) + { + string[] labels = Enumerable.Range(0, vmesh.Count).Select(i => i.ToString()).ToArray(); + CGEditorUtility.SceneGUILabels(vmesh.Vertices.Array, vmesh.Vertices.Count, labels, Color.black,Vector2.zero); + } + if (Target.ShowUV && vmesh.HasUV) + { + string[] labels = Enumerable.Range(0, vmesh.UVs.Count - 1).Select(i => string.Format("({0:0.##},{1:0.##})", vmesh.UVs.Array[i].x, vmesh.UVs.Array[i].y)).ToArray(); + CGEditorUtility.SceneGUILabels(vmesh.Vertices.Array, vmesh.Vertices.Count, labels, Color.black,Vector2.zero); + } + Handles.matrix = Matrix4x4.identity; + } + if (isDisposable) + vmesh.Dispose(); + } + + public override void OnModuleDebugGUI() + { + CGVMesh vmesh = Target.InData.GetData(out bool isDisposable); + if (vmesh) + { + EditorGUILayout.LabelField("VertexCount: " + vmesh.Count.ToString()); + } + if (isDisposable) + vmesh.Dispose(); + } + + protected override void OnCustomInspectorGUI() + { + CheckGeneratorDebugMode(Target); + base.OnCustomInspectorGUI(); + } + + /// + /// Clears all existing UI messages and adds one if the generator debug mode is not active + /// + internal static void CheckGeneratorDebugMode(CGModule module) + { + module.UIMessages.Clear(); + if (module.Generator.ShowDebug == false) + module.UIMessages.Add("To display the debug information, activate the Generator's Debug mode either via its toolbar, or its inspector"); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVMeshEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVMeshEditor.cs.meta new file mode 100644 index 00000000..942aac1a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVMeshEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f5d4bf9eab46c54a858a95a4e04b83b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVolumeEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVolumeEditor.cs new file mode 100644 index 00000000..8ded898f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVolumeEditor.cs @@ -0,0 +1,153 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Linq; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(DebugVolume))] + public class DebugVolumeEditor : CGModuleEditor + { + + protected override void OnEnable() + { + base.OnEnable(); + HasDebugVisuals = true; + ShowDebugVisuals = true; + } + + protected override void OnReadNodes() + { + base.OnReadNodes(); + Node.FindTabBarAt("Default").AddTab("Cross Groups", OnCrossGroupTab); + } + + public override void OnModuleSceneDebugGUI() + { + base.OnModuleSceneDebugGUI(); + CGVolume vol = Target.InData.GetData(out bool isDisposable); + if (vol) + { + Handles.matrix = Target.Generator.transform.localToWorldMatrix; + + if (Target.ShowPathSamples) + { + CGEditorUtility.SceneGUIPlot(vol.Positions.Array, vol.Positions.Count, 0.1f, Target.PathColor); + if (Target.ShowIndex) + { + string[] labels = Enumerable.Range(0, vol.Count).Select(i => i.ToString()).ToArray(); + CGEditorUtility.SceneGUILabels(vol.Positions.Array, vol.Positions.Count, labels, Color.black, Vector2.zero); + } + + if (Target.ShowNormals) + { + DTHandles.PushHandlesColor(Target.NormalColor); + + for (int i = 0; i < vol.Count; i++) + Handles.DrawLine(vol.Positions.Array[i], vol.Positions.Array[i] + vol.Normals.Array[i] * 2); + + DTHandles.PopHandlesColor(); + } + } + if (Target.ShowCrossSamples) + { + int vtLo = Target.LimitCross.From * vol.CrossSize; + int vtHi = vtLo + vol.CrossSize; + if (!Target.LimitCross.SimpleValue) + { + vtLo = Target.LimitCross.Low * vol.CrossSize; + vtHi = (Target.LimitCross.High + 1) * vol.CrossSize; + } + + vtLo = Mathf.Clamp(vtLo, 0, vol.VertexCount); + vtHi = Mathf.Clamp(vtHi, vtLo, vol.VertexCount); + var range = vol.Vertices.Array.Skip(vtLo).Take(vtHi - vtLo).ToArray(); + CGEditorUtility.SceneGUIPlot(range, range.Length, 0.1f, Color.white); + + if (Target.ShowIndex) + { + string[] labels = Enumerable.Range(vtLo, vtHi).Select(i => i.ToString()).ToArray(); + CGEditorUtility.SceneGUILabels(range, range.Length, labels, Color.black, Vector2.zero); + } + + if (Target.ShowMap) + { + string[] labels = Enumerable.Range(vtLo, vtHi).Select(i => DTMath.SnapPrecision(vol.CrossCustomValues.Array[i], 3).ToString()).ToArray(); + CGEditorUtility.SceneGUILabels(range, range.Length, labels, new Color(1, 0, 1), new Vector2(10, 20)); + } + + if (Target.ShowNormals) + { + DTHandles.PushHandlesColor(Target.NormalColor); + + for (int i = vtLo; i < vtHi; i++) + Handles.DrawLine(vol.Vertices.Array[i], vol.Vertices.Array[i] + vol.VertexNormals.Array[i] * 2); + + DTHandles.PopHandlesColor(); + } + } + if (Target.Interpolate) + { + Vector3 pos; + Vector3 tan; + Vector3 up; + vol.InterpolateVolume(Target.InterpolatePathF, Target.InterpolateCrossF, out pos, out tan, out up); +#if UNITY_5_6_OR_NEWER + Handles.ConeHandleCap(0, pos, Quaternion.LookRotation(up, tan), 1f, EventType.Repaint); +#else + Handles.ConeCap(0, pos, Quaternion.LookRotation(up,tan), 1f); +#endif + } + Handles.matrix = Matrix4x4.identity; + + if(isDisposable) + vol.Dispose(); + } + } + + public override void OnModuleDebugGUI() + { + CGVolume vol = Target.InData.GetData(out bool isDisposable); + if (vol) + { + EditorGUILayout.LabelField("VertexCount: " + vol.VertexCount.ToString()); + } + if(isDisposable) + vol.Dispose(); + } + + void OnCrossGroupTab(DTInspectorNode node) + { + CGVolume vol = Target.InData.GetData(out bool isDisposable); + if (vol) + { + GUILayout.Label("MaterialGroup.Patch: (MaterialID) Patch Details", EditorStyles.boldLabel); + for (int i = 0; i < vol.CrossMaterialGroups.Count; i++) + { + for (int p = 0; p < vol.CrossMaterialGroups[i].Patches.Count; p++) + GUILayout.Label(string.Format("{0}.{1}: (Mat:{2}) {3}", i, p, vol.CrossMaterialGroups[i].MaterialID, vol.CrossMaterialGroups[i].Patches[p].ToString())); + } + } + if (isDisposable) + vol.Dispose(); + } + + protected override void OnCustomInspectorGUI() + { + DebugVMeshEditor.CheckGeneratorDebugMode(Target); + base.OnCustomInspectorGUI(); + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVolumeEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVolumeEditor.cs.meta new file mode 100644 index 00000000..b826f5d9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DebugVolumeEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 332a17315cf8b0346aea0b8019a9f00f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DeformMeshEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DeformMeshEditor.cs new file mode 100644 index 00000000..b0a509aa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DeformMeshEditor.cs @@ -0,0 +1,28 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(DeformMesh))] + public class DeformMeshEditor : CGModuleEditor + { + + // Scene View GUI - Called only if the module is initialized and configured + //public override void OnModuleSceneGUI() {} + + // Scene View Debug GUI - Called only when Show Debug Visuals is activated + //public override void OnModuleSceneDebugGUI() {} + + // Inspector Debug GUI - Called only when Show Debug Values is activated + //public override void OnModuleDebugGUI() {} + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DeformMeshEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DeformMeshEditor.cs.meta new file mode 100644 index 00000000..fe2a5fe2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/DeformMeshEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 876c0f57076046442ad41d8487345baa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/GameObjectToMeshEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/GameObjectToMeshEditor.cs new file mode 100644 index 00000000..6e8da358 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/GameObjectToMeshEditor.cs @@ -0,0 +1,31 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(GameObjectToMesh))] + public class GameObjectToMeshEditor : CGModuleEditor + { + + // Scene View GUI - Called only if the module is initialized and configured + //public override void OnModuleSceneGUI() {} + + // Scene View Debug GUI - Called only when Show Debug Visuals is activated + //public override void OnModuleSceneDebugGUI() {} + + // Inspector Debug GUI - Called only when Show Debug Values is activated + //public override void OnModuleDebugGUI() {} + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/GameObjectToMeshEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/GameObjectToMeshEditor.cs.meta new file mode 100644 index 00000000..fa63c057 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/GameObjectToMeshEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a65f5e84bb3e07347ac89a2b08a71877 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputGameObjectEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputGameObjectEditor.cs new file mode 100644 index 00000000..dc262cfe --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputGameObjectEditor.cs @@ -0,0 +1,75 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; +using UnityEditorInternal; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(InputGameObject))] + public class InputGameObjectsEditor : CGModuleEditor + { + int selectedIndex; + + protected override void SetupArrayEx(DTFieldNode node, DevTools.ArrayExAttribute attribute) + { + node.ArrayEx.drawElementCallback = onGameObjectGUI; + node.ArrayEx.onSelectCallback = (ReorderableList l) => { selectedIndex = l.index; }; + node.ArrayEx.onAddCallback = (ReorderableList l) => + { + Target.GameObjects.Insert(Mathf.Clamp(l.index + 1, 0, Target.GameObjects.Count), new CGGameObjectProperties()); + EditorUtility.SetDirty(Target); + }; + } + + + + void onGameObjectGUI(Rect rect, int index, bool isActive, bool isFocused) + { + SerializedProperty prop = serializedObject.FindProperty(string.Format("m_GameObjects.Array.data[{0}]", index )); + if (prop != null) + { + rect.height = EditorGUIUtility.singleLineHeight; + rect.y += 1; + + SerializedProperty mshProp=prop.FindPropertyRelative("m_Object"); + mshProp.objectReferenceValue=EditorGUI.ObjectField(rect, mshProp.objectReferenceValue, typeof(GameObject), true); + } + } + + + void OnPropertiesGUI() + { + SerializedProperty prop=serializedObject.FindProperty(string.Format("m_GameObjects.Array.data[{0}]", selectedIndex )); + if (prop!=null) + { + EditorGUILayout.PropertyField(prop.FindPropertyRelative("m_Translation")); + EditorGUILayout.PropertyField(prop.FindPropertyRelative("m_Rotation")); + EditorGUILayout.PropertyField(prop.FindPropertyRelative("m_Scale")); + } + } + + protected override void OnCustomInspectorGUI() + { + base.OnCustomInspectorGUI(); + if (Target && selectedIndex < Target.GameObjects.Count && Target.GameObjects[selectedIndex].Object) + { + GUILayout.Space(5); + bool open=true; + CurvyGUI.Foldout(ref open, "Properties"); + OnPropertiesGUI(); + } + } + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputGameObjectEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputGameObjectEditor.cs.meta new file mode 100644 index 00000000..b5c1e7e8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputGameObjectEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9d4c717ece1291b428da067095f4b11e +timeCreated: 1440678509 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputMeshEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputMeshEditor.cs new file mode 100644 index 00000000..6f4fb841 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputMeshEditor.cs @@ -0,0 +1,106 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; +using UnityEditorInternal; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(InputMesh))] + public class InputMeshEditor : CGModuleEditor + { + int selectedIndex; + + protected override void SetupArrayEx(DTFieldNode node, DevTools.ArrayExAttribute attribute) + { + node.ArrayEx.drawElementCallback = OnMeshGUI; + node.ArrayEx.onSelectCallback = (ReorderableList l) => { selectedIndex = l.index; }; + node.ArrayEx.onAddCallback = (ReorderableList l) => + { + Target.Meshes.Insert(Mathf.Clamp(l.index + 1, 0, Target.Meshes.Count), new CGMeshProperties()); + EditorUtility.SetDirty(Target); + }; + } + + + + void OnMeshGUI(Rect rect, int index, bool isActive, bool isFocused) + { + SerializedProperty prop = serializedObject.FindProperty(string.Format("m_Meshes.Array.data[{0}]", index )); + if (prop != null) + { + rect.height = EditorGUIUtility.singleLineHeight; + rect.y += 1; + rect.width -= 100; + SerializedProperty mshProp=prop.FindPropertyRelative("m_Mesh"); + mshProp.objectReferenceValue=EditorGUI.ObjectField(rect, mshProp.objectReferenceValue, typeof(Mesh), false); + + rect.x += rect.width; + EditorGUI.LabelField(rect, getFormattedMeshInfo(mshProp.objectReferenceValue as Mesh),DTStyles.HtmlLabel); + } + } + + void OnPropertiesGUI() + { + SerializedProperty prop=serializedObject.FindProperty(string.Format("m_Meshes.Array.data[{0}]", selectedIndex )); + if (prop!=null) + { + SerializedProperty matProp = prop.FindPropertyRelative("m_Material"); + if (matProp != null) + { + ReorderableList l = new ReorderableList(serializedObject, matProp, true, true, false, false); + l.drawHeaderCallback = (Rect rect) => { GUI.Label(rect, "Materials for " + Target.Meshes[selectedIndex].Mesh.name); }; + l.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => + { + rect.height = EditorGUIUtility.singleLineHeight; + SerializedProperty pMat = prop.FindPropertyRelative(string.Format("m_Material.Array.data[{0}]",index )); + pMat.objectReferenceValue = EditorGUI.ObjectField(rect, pMat.objectReferenceValue, typeof(Material), false); + }; + l.DoLayoutList(); + } + EditorGUILayout.PropertyField(prop.FindPropertyRelative("m_Translation")); + EditorGUILayout.PropertyField(prop.FindPropertyRelative("m_Rotation")); + EditorGUILayout.PropertyField(prop.FindPropertyRelative("m_Scale")); + } + } + + protected override void OnCustomInspectorGUI() + { + base.OnCustomInspectorGUI(); + if (Target && selectedIndex < Target.Meshes.Count && Target.Meshes[selectedIndex].Mesh) + { + GUILayout.Space(5); + bool open=true; + CurvyGUI.Foldout(ref open, "Properties"); + OnPropertiesGUI(); + } + } + + string getFormattedMeshInfo(Mesh mesh) + { + if (mesh) + { + string has = ""; + string hasnt = ""; + string close = ""; + //OPTIM this code calls mesh's properties, just to get their length. Those properties do copy an array, every frame! A solution might be to store their length (or the boolean) in CGMeshProperties + string norm = (mesh.normals.Length > 0) ? has : hasnt; + string tan = (mesh.tangents.Length > 0) ? has : hasnt; + string uv = (mesh.uv.Length > 0) ? has : hasnt; + string uv2 = (mesh.uv2.Length > 0) ? has : hasnt; + return string.Format("{1}Nor{0} {2}Tan{0} {3}UV{0} {4}UV2{0}", close, norm, tan, uv, uv2); + } + else return ""; + } + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputMeshEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputMeshEditor.cs.meta new file mode 100644 index 00000000..db6826c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputMeshEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c127229c77cce034395d42ebc04baf85 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplinePathEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplinePathEditor.cs new file mode 100644 index 00000000..26ac862d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplinePathEditor.cs @@ -0,0 +1,22 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(InputSplinePath))] + public class InputSplinePathEditor : CGModuleEditor + { + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplinePathEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplinePathEditor.cs.meta new file mode 100644 index 00000000..05c0ab1f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplinePathEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 128e3e284da92124aafc1d1c6f295d51 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplineShapeEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplineShapeEditor.cs new file mode 100644 index 00000000..0352102f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplineShapeEditor.cs @@ -0,0 +1,73 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.Curvy; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(InputSplineShape))] + public class InputSplineShapeEditor : CGModuleEditor + { + + protected override void OnEnable() + { + base.OnEnable(); + EndIPE(); + } + + internal override void BeginIPE() + { + Target.Shape.ShowGizmos = true; + + if (Target.Shape.ControlPointCount > 0) + { + Selection.activeObject = Target.Shape.ControlPointsList[0]; + + + SceneView scn = SceneView.lastActiveSceneView; + if (scn != null) + { + Transform t=Target.Shape.transform; + scn.size = Target.Shape.Bounds.extents.magnitude * 1.5f; + scn.FixNegativeSize(); + scn.LookAt(t.position + t.forward, Quaternion.LookRotation(t.forward, Vector3.up)); + } + + SceneView.RepaintAll(); + } + } + + + /// + /// Called for the IPE Target when the module should TRS it's IPE editor to the given values + /// + internal override void OnIPESetTRS(Vector3 position, Quaternion rotation, Vector3 scale) + { + if (Target && Target.Shape) + { + Target.Shape.transform.localPosition = position; + Target.Shape.transform.localRotation = rotation; + Target.Shape.transform.localScale = scale; + } + } + + internal override void EndIPE() + { + + } + + + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplineShapeEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplineShapeEditor.cs.meta new file mode 100644 index 00000000..83edefbe --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSplineShapeEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b4c453ed3cd5e1d47b5a49f02cc592d3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSpotsEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSpotsEditor.cs new file mode 100644 index 00000000..1063ddca --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSpotsEditor.cs @@ -0,0 +1,91 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using UnityEditorInternal; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(InputSpots))] + public class InputSpotsEditor : CGModuleEditor + { + + protected override void SetupArrayEx(DevToolsEditor.DTFieldNode node, DevTools.ArrayExAttribute attribute) + { + base.SetupArrayEx(node, attribute); + node.ArrayEx.elementHeight *= 4; + node.ArrayEx.drawElementCallback = OnSpotGUI; + node.ArrayEx.onAddCallback = (ReorderableList l) => + { + int spotsCount = Target.Spots.Count; + + //value of -1 means nothing selected previously + var selectedIndex = l.index; + //when deleting all entries, while having element 0 selected, l.index would be equal to 0, so to handle this: + selectedIndex = selectedIndex < spotsCount ? selectedIndex : -1; + + CGSpot newSpot; + int insertionIndex; + if (selectedIndex < 0) + { + newSpot = new CGSpot(0, Vector3.zero, Quaternion.identity, Vector3.one); + insertionIndex = Mathf.Max(spotsCount - 1, 0); + } + else + { + newSpot = Target.Spots[selectedIndex]; + insertionIndex = selectedIndex; + } + + Target.Spots.Insert(insertionIndex, newSpot); + EditorUtility.SetDirty(Target); + }; + } + + + void OnSpotGUI(Rect rect, int index, bool isActive, bool isFocused) + { + SerializedProperty prop = serializedObject.FindProperty(string.Format("m_Spots.Array.data[{0}]", index.ToString())); + rect.height = EditorGUIUtility.singleLineHeight; + if (prop != null) + { + EditorGUIUtility.labelWidth = 40; + Rect r = new Rect(rect); + GUI.Label(new Rect(r.x, r.y, 30, r.height), "#" + index.ToString()); + EditorGUI.PropertyField(new Rect(r.x + 30, r.y, 115, r.height), prop.FindPropertyRelative("m_Index")); + + EditorGUIUtility.labelWidth = 55; + r.y += r.height + 1; + EditorGUI.PropertyField(r, prop.FindPropertyRelative("m_Position")); + r.y += r.height + 1; + EditorGUI.PropertyField(r, prop.FindPropertyRelative("m_Rotation")); + r.y += r.height + 1; + EditorGUI.PropertyField(r, prop.FindPropertyRelative("m_Scale")); + if (serializedObject.ApplyModifiedProperties()) + Target.Dirty = true; + } + } + + Vector2 scroll; + + + public override void OnInspectorGUI() + { + scroll = EditorGUILayout.BeginScrollView(scroll, GUILayout.Height(210)); + base.OnInspectorGUI(); + EditorGUILayout.EndScrollView(); + if (GUILayout.Button("Clear") && EditorUtility.DisplayDialog("Clear List", "Are you sure?", "Yes", "No")) + Target.Spots.Clear(); + } + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSpotsEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSpotsEditor.cs.meta new file mode 100644 index 00000000..b6016215 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputSpotsEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aacae595af62b6b41904baca420e0d2e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputTransformSpotsEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputTransformSpotsEditor.cs new file mode 100644 index 00000000..bf1dd2ce --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputTransformSpotsEditor.cs @@ -0,0 +1,86 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using UnityEditorInternal; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(InputTransformSpots))] + public class InputTransformSpotsEditor : CGModuleEditor + { + protected override void SetupArrayEx(DevToolsEditor.DTFieldNode node, DevTools.ArrayExAttribute attribute) + { + base.SetupArrayEx(node, attribute); + node.ArrayEx.elementHeight *= 2; + node.ArrayEx.drawElementCallback = OnSpotGUI; + node.ArrayEx.onAddCallback = (ReorderableList l) => + { + int spotsCount = Target.TransformSpots.Count; + + //value of -1 means nothing selected previously + var selectedIndex = l.index; + //when deleting all entries, while having element 0 selected, l.index would be equal to 0, so to handle this: + selectedIndex = selectedIndex < spotsCount ? selectedIndex : -1; + + InputTransformSpots.TransformSpot newSpot; + int insertionIndex; + if (selectedIndex < 0) + { + newSpot = new InputTransformSpots.TransformSpot(); + insertionIndex = Mathf.Max(spotsCount - 1, 0); + } + else + { + newSpot = Target.TransformSpots[selectedIndex]; + insertionIndex = selectedIndex; + } + + Target.TransformSpots.Insert(insertionIndex, newSpot); + EditorUtility.SetDirty(Target); + }; + } + + + void OnSpotGUI(Rect rect, int index, bool isActive, bool isFocused) + { + SerializedProperty prop = serializedObject.FindProperty(string.Format("transformSpots.Array.data[{0}]", index.ToString())); + rect.height = EditorGUIUtility.singleLineHeight; + if (prop != null) + { + EditorGUIUtility.labelWidth = 40; + Rect r = new Rect(rect); + GUI.Label(new Rect(r.x,r.y,30,r.height), "#" + index.ToString()); + EditorGUI.PropertyField(new Rect(r.x+30,r.y,115,r.height), prop.FindPropertyRelative("index")); + + EditorGUIUtility.labelWidth = 55; + r.y += r.height+1; + EditorGUI.PropertyField(r, prop.FindPropertyRelative("transform")); + if (serializedObject.ApplyModifiedProperties()) + Target.Dirty = true; + } + } + + Vector2 scroll; + + + public override void OnInspectorGUI() + { + scroll = EditorGUILayout.BeginScrollView(scroll,GUILayout.Height(210)); + base.OnInspectorGUI(); + EditorGUILayout.EndScrollView(); + if (GUILayout.Button("Clear") && EditorUtility.DisplayDialog("Clear List","Are you sure?","Yes","No")) + Target.TransformSpots.Clear(); + } + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputTransformSpotsEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputTransformSpotsEditor.cs.meta new file mode 100644 index 00000000..5227b7fd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/InputTransformSpotsEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3be363d24b936045a35d0cee3cd81aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/MixShapesEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/MixShapesEditor.cs new file mode 100644 index 00000000..1e8bd241 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/MixShapesEditor.cs @@ -0,0 +1,23 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Collections.Generic; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ModifierMixShapes))] + public class ModifierMixShapesEditor : CGModuleEditor + { + } + + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/MixShapesEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/MixShapesEditor.cs.meta new file mode 100644 index 00000000..d78fc443 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/MixShapesEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 46b6e4aba8f7b00449969382092fa0d5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierMixPathsEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierMixPathsEditor.cs new file mode 100644 index 00000000..9ac721e6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierMixPathsEditor.cs @@ -0,0 +1,23 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Collections.Generic; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ModifierMixPaths))] + public class ModifierMixPathsEditor : CGModuleEditor + { + } + + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierMixPathsEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierMixPathsEditor.cs.meta new file mode 100644 index 00000000..790d649c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierMixPathsEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c356fb19bdfc11478de97cfb65c6b24 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierPathRelativeTranslationEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierPathRelativeTranslationEditor.cs new file mode 100644 index 00000000..0c611f93 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierPathRelativeTranslationEditor.cs @@ -0,0 +1,28 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ModifierPathRelativeTranslation))] + public class ModifierPathRelativeTranslationEditor : CGModuleEditor + { + + // Scene View GUI - Called only if the module is initialized and configured + //public override void OnModuleSceneGUI() {} + + // Scene View Debug GUI - Called only when Show Debug Visuals is activated + //public override void OnModuleSceneDebugGUI() {} + + // Inspector Debug GUI - Called only when Show Debug Values is activated + //public override void OnModuleDebugGUI() {} + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierPathRelativeTranslationEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierPathRelativeTranslationEditor.cs.meta new file mode 100644 index 00000000..3e6d3f72 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierPathRelativeTranslationEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6dd872e6ca32ec243b1377d13ab1c075 +timeCreated: 1542637007 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSMeshEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSMeshEditor.cs new file mode 100644 index 00000000..61eb8962 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSMeshEditor.cs @@ -0,0 +1,22 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ModifierTRSMesh))] + public class ModifierTRSMeshEditor : CGModuleEditor + { + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSMeshEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSMeshEditor.cs.meta new file mode 100644 index 00000000..e5d087c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSMeshEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2aca7d5fc73d5784a88c56b1c7c60b00 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSPathEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSPathEditor.cs new file mode 100644 index 00000000..fd4d1367 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSPathEditor.cs @@ -0,0 +1,23 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Collections.Generic; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ModifierTRSPath))] + public class ModifierTRSPathEditor : CGModuleEditor + { + } + + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSPathEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSPathEditor.cs.meta new file mode 100644 index 00000000..2803cce0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSPathEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8112efb25a3080b4eb194e5815cf5465 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSShapeEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSShapeEditor.cs new file mode 100644 index 00000000..3195be30 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSShapeEditor.cs @@ -0,0 +1,22 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ModifierTRSShape))] + public class ModifierTRSShapeEditor : CGModuleEditor + { + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSShapeEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSShapeEditor.cs.meta new file mode 100644 index 00000000..3cbad127 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierTRSShapeEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 995de8b354016994286bf1a9a9e1979c +timeCreated: 1438610244 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierVariableMixShapesEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierVariableMixShapesEditor.cs new file mode 100644 index 00000000..3991082b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierVariableMixShapesEditor.cs @@ -0,0 +1,17 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(ModifierVariableMixShapes))] + public class ModifierVariableMixShapesEditor : CGModuleEditor + { + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierVariableMixShapesEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierVariableMixShapesEditor.cs.meta new file mode 100644 index 00000000..517d28d4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/ModifierVariableMixShapesEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c416b73776f822f42a39e134ce855b96 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/NoteEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/NoteEditor.cs new file mode 100644 index 00000000..37e128b6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/NoteEditor.cs @@ -0,0 +1,35 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator.Modules; +using System.Collections.Generic; + +namespace FluffyUnderware.CurvyEditor.Generator.Modules +{ + [CustomEditor(typeof(Note))] + public class NoteEditor : CGModuleEditor + { + /* + // Skip Label + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + serializedObject.UpdateIfDirtyOrScript(); + EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Text"), new GUIContent("")); + serializedObject.ApplyModifiedProperties(); + + + } + */ + } + + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/NoteEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/NoteEditor.cs.meta new file mode 100644 index 00000000..e51d877e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG Modules/NoteEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d0032aeab6fa1c499d5711ded39d964 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG.meta new file mode 100644 index 00000000..15b4ed5a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bb8d14434a7f7624ca5ba4af4ab67057 +folderAsset: yes +timeCreated: 1437476977 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGEditorUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGEditorUtility.cs new file mode 100644 index 00000000..a1bad594 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGEditorUtility.cs @@ -0,0 +1,245 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Utils; +using System.Reflection; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevToolsEditor.Extensions; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy; +using System.IO; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + public static class CGEditorUtility + { + + static List findOutputSlots(CurvyGenerator generator, bool includeOnRequestProcessing, System.Type filterSlotDataType = null) + { + List modules = generator.GetModules(includeOnRequestProcessing); + List res = new List(); + foreach (CGModule mod in modules) + res.AddRange(mod.GetOutputSlots(filterSlotDataType)); + return res; + } + + public static void ShowOutputSlotsMenu(GenericMenu.MenuFunction2 func, System.Type filterSlotDataType = null) + { + GenericMenu mnu = new GenericMenu(); + CurvyGenerator[] generators = Component.FindObjectsOfType(); + + mnu.AddItem(new GUIContent("none"), false, func, null); + + foreach (CurvyGenerator gen in generators) + { + List slots = findOutputSlots(gen, false, filterSlotDataType); + foreach (CGModuleOutputSlot slot in slots) + mnu.AddItem(new GUIContent(gen.name + "/" + slot.Module.ModuleName + "/" + slot.Info.DisplayName), false, func, slot); + } + + mnu.ShowAsContext(); + } + + public static List CopyModules(IList sourceModules, CurvyGenerator target, Vector2 canvasPosition) + { + List res = new List(); + + Dictionary IDMapping = new Dictionary(); + + + // I. Copy Module, store mapping from old to new ID + foreach (CGModule mod in sourceModules) + { + int oldID = mod.UniqueID; + // Duplicate module GameObject and parent it to the target Generator, also ensure a unique module name and module id + CGModule newMod = mod.CopyTo(target); + res.Add(newMod); + IDMapping.Add(oldID, newMod.UniqueID); + newMod.Properties.Dimensions.position += canvasPosition; + + // ! Handle managed Resources ! + /* + var resourceFields = DTUtility.GetFieldsWithAttribute(mod.GetType(), typeof(CGResourceManagerAttribute), BindingFlags.Instance | BindingFlags.NonPublic); + foreach (var fi in resourceFields) + { + var v = fi.GetValue(mod) as Component; + // Managed? + if (v != null && v.transform.parent == mod.transform) + { + var newV = v.DuplicateGameObject(newMod.transform); + if (newV != null) + fi.SetValue(newMod, newV); + } + }*/ + //newMod.renameManagedResourcesINTERNAL(); + + } + // II. Update Links to use the new IDs + for (int m = 0; m < res.Count; m++) + { + CGModule mod = res[m]; + int newID = mod.UniqueID; + + for (int i = mod.InputLinks.Count - 1; i >= 0; i--) + { + // if target module was copied as well, change both IDs + int newTargetID; + if (IDMapping.TryGetValue(mod.InputLinks[i].TargetModuleID, out newTargetID)) + { + mod.InputLinks[i].SetModuleIDIINTERNAL(newID, newTargetID); + } + else // otherwise delete link + mod.InputLinks.RemoveAt(i); + } + for (int i = mod.OutputLinks.Count - 1; i >= 0; i--) + { + // if target module was copied as well, change both IDs + int newTargetID; + if (IDMapping.TryGetValue(mod.OutputLinks[i].TargetModuleID, out newTargetID)) + { + mod.OutputLinks[i].SetModuleIDIINTERNAL(newID, newTargetID); + } + else // otherwise delete link + mod.OutputLinks.RemoveAt(i); + } + mod.ReInitializeLinkedSlots(); + } + + + /// III. Reinitialize target generator + target.Initialize(true); + + return res; + } + + public static bool CreateTemplate(IList modules, string absFilePath) + { + if (!Directory.Exists(Path.GetDirectoryName(absFilePath))) + { + Directory.CreateDirectory(Path.GetDirectoryName(absFilePath)); + + } + // Convert absolute to relative path + absFilePath = absFilePath.Replace(Application.dataPath, "Assets"); + if (modules.Count == 0 || string.IsNullOrEmpty(absFilePath)) + return false; + + CurvyGenerator assetGenerator = CurvyGenerator.Create(); + assetGenerator.name = Path.GetFileNameWithoutExtension(absFilePath); + CopyModules(modules, assetGenerator, Vector2.zero); + foreach (CGModule mod in assetGenerator.Modules) + mod.OnTemplateCreated(); + assetGenerator.ArrangeModules(); + PrefabUtility.SaveAsPrefabAsset(assetGenerator.gameObject, absFilePath); + GameObject.DestroyImmediate(assetGenerator.gameObject); + AssetDatabase.Refresh(); + return true; + + } + + public static List LoadTemplate(CurvyGenerator generator, string path, Vector2 canvasPosition) + { + CurvyGenerator srcGen = AssetDatabase.LoadAssetAtPath(path, typeof(CurvyGenerator)) as CurvyGenerator; + if (srcGen) + return CGEditorUtility.CopyModules(srcGen.Modules, generator, canvasPosition); + else + return null; + } + + public static void SetModulesExpandedState(bool expanded, params CGModule[] modules) + { + foreach (CGModule mod in modules) + mod.Properties.Expanded.target = expanded; + } + + public static void SceneGUIPlot(Vector3[] vertices, int verticesCount, float size, Color col) + { + DTHandles.PushHandlesColor(col); + for (int index = 0; index < verticesCount; index++) + { + Vector3 v = vertices[index]; + Handles.CubeHandleCap(0, v, Quaternion.identity, size * HandleUtility.GetHandleSize(v), EventType.Repaint); + } + + DTHandles.PopHandlesColor(); + } + + [Obsolete("Use the other overload or make a copy of this method")] + public static void SceneGUIPlot(IList vertices, float size, Color col) + { + DTHandles.PushHandlesColor(col); + for (int index = 0; index < vertices.Count; index++) + { + Vector3 v = vertices[index]; + Handles.CubeHandleCap(0, v, Quaternion.identity, size * HandleUtility.GetHandleSize(v), EventType.Repaint); + } + + DTHandles.PopHandlesColor(); + } + + public static void SceneGUILabels(Vector3[] vertices, int verticesCount, IList labels, Color col, Vector2 offset) + { + Dictionary labelsByPos = new Dictionary(); + int ub = Mathf.Min(verticesCount, labels.Count); + + for (int i = 0; i < ub; i++) + { + string val; + if (labelsByPos.TryGetValue(vertices[i], out val)) + labelsByPos[vertices[i]] = val + "," + labels[i]; + else + labelsByPos.Add(vertices[i], labels[i]); + } + + GUIStyle style = new GUIStyle(EditorStyles.boldLabel); + style.normal.textColor = col; + foreach (KeyValuePair kv in labelsByPos) + Handles.Label(DTHandles.TranslateByPixel(kv.Key, offset), kv.Value, style); + + } + + [Obsolete("Use the other overload or make a copy of this method")] + public static void SceneGUILabels(IList vertices, IList labels, Color col, Vector2 offset) + { + Dictionary labelsByPos = new Dictionary(); + int ub = Mathf.Min(vertices.Count, labels.Count); + + for (int i = 0; i < ub; i++) + { + string val; + if (labelsByPos.TryGetValue(vertices[i], out val)) + labelsByPos[vertices[i]] = val + "," + labels[i]; + else + labelsByPos.Add(vertices[i], labels[i]); + } + + GUIStyle style = new GUIStyle(EditorStyles.boldLabel); + style.normal.textColor = col; + foreach (KeyValuePair kv in labelsByPos) + Handles.Label(DTHandles.TranslateByPixel(kv.Key, offset), kv.Value, style); + + } + + public static void SceneGUIPoly(IEnumerable vertices, Color col) + { + DTHandles.PushHandlesColor(col); + + Handles.DrawPolyLine(vertices as Vector3[]); + DTHandles.PopHandlesColor(); + } + + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGEditorUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGEditorUtility.cs.meta new file mode 100644 index 00000000..407c945c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGEditorUtility.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3160a5daacc00349af244daf1e13e36 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGGraph.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGGraph.cs new file mode 100644 index 00000000..78dbdfb5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGGraph.cs @@ -0,0 +1,1118 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor.Extensions; +using FluffyUnderware.Curvy.Generator; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.DevToolsEditor; +using UnityEditor.AnimatedValues; +using FluffyUnderware.DevTools; +using System.Reflection; +using UnityEditor.Experimental.SceneManagement; +using UnityEditor.SceneManagement; +using UnityEngine.Assertions; +using UnityEngine.SceneManagement; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + public class CGGraph : EditorWindow + { + + #region ### Static Properties ### + + public static CGModuleEditorBase InPlaceEditTarget; + public static CGModuleEditorBase InPlaceEditInitiatedBy; + + /// + /// Initiates an IPE session or terminates it + /// + public static void SetIPE(IExternalInput target = null, CGModuleEditorBase initiatedBy = null) + { + + if (InPlaceEditTarget != null) + InPlaceEditTarget.EndIPE(); + + InPlaceEditInitiatedBy = initiatedBy; + + if (target != null) + { + InPlaceEditTarget = initiatedBy.Graph.GetModuleEditor((CGModule)target); + + if (SceneView.currentDrawingSceneView) + SceneView.currentDrawingSceneView.Focus(); + + SyncIPE(); + InPlaceEditTarget.BeginIPE(); + } + } + + /// + /// Sets IPE target's TRS + /// + public static void SyncIPE() + { + if (InPlaceEditInitiatedBy != null && InPlaceEditTarget != null) + { + Vector3 pos; + Quaternion rot; + Vector3 scl; + InPlaceEditInitiatedBy.OnIPEGetTRS(out pos, out rot, out scl); + InPlaceEditTarget.OnIPESetTRS(pos, rot, scl); + } + } + + + #endregion + + public CurvyGenerator Generator; + public Dictionary ModuleEditors = new Dictionary(); + public Dictionary TypeColors = new Dictionary(); + + + List mModules; + public List Modules + { + get + { + if (mModules == null) + mModules = new List(Generator.Modules.ToArray()); + return mModules; + } + set + { + mModules = value; + } + } + + internal CanvasState Canvas; + public CanvasSelection Sel; + internal CanvasUI UI; + // Statusbar + public DTStatusbar StatusBar = new DTStatusbar(); + const int mStatusbarHeight = 20; + int mModuleCount; + bool mDoRepaint; + /// + /// True if the user clicked on the Reorder button + /// + bool mDoReorder; + readonly AnimBool mShowDebug = new AnimBool(); + + Event EV { get { return Event.current; } } + public bool LMB { get { return EV.type == EventType.MouseDown && EV.button == 0; } } + public bool RMB { get { return EV.type == EventType.MouseDown && EV.button == 1; } } + + + + + CGModule editTitleModule; + + void OnSelectionChange() + { + CurvyGenerator gen = null; + List mod = DTSelection.GetAllAs(); + if (mod.Count > 0) + gen = mod[0].Generator; + if (gen == null) + gen = DTSelection.GetAs(); + if (gen != null && (Generator == null || gen != Generator)) + { + Initialize(gen); + Repaint(); + } + else + if (mod.Count > 0 && CurvyProject.Instance.CGSynchronizeSelection) + { + Sel.SetSelectionTo(mod); + Canvas.FocusSelection(); + Repaint(); + } + + //OnSelectionChange is called when a selected module is deleted (from the hierarchy for example) + Sel.SelectedModules.RemoveAll(m => m == null); + } + + internal static CGGraph Open(CurvyGenerator generator) + { + generator.Initialize(true); + CGGraph win = EditorWindow.GetWindow("", true); + win.Initialize(generator); + win.wantsMouseMove = true; + win.autoRepaintOnSceneChange = true; + return win; + } + + public void Initialize(CurvyGenerator generator) + { + destroyEditors(); + if (generator) + { + mShowDebug.speed = 3; + mShowDebug.value = generator.ShowDebug; + mShowDebug.valueChanged.RemoveAllListeners(); + mShowDebug.valueChanged.AddListener(Repaint); +#if UNITY_5_0 || UNITY_4_6 + title=generator.name; +#else + titleContent.text = generator.name; +#endif + Generator = generator; + Generator.ArrangeModules(); + Sel.Clear(); + Show(); + if (Generator.Modules.Count == 0) + StatusBar.SetInfo("Welcome to the Curvy Generator! Right click or drag a CurvySpline on the canvas to get started!", "", 10); + else + StatusBar.SetMessage(Generator.Modules.Count.ToString() + " modules loaded!", "", MessageType.None, 3); + } + } + + void OnDestroy() + { + destroyEditors(); + Resources.UnloadUnusedAssets(); + } + + void OnDisable() + { + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= OnSceneGUI; + + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + EditorApplication.pauseStateChanged -= onPauseStateChanged; + SetIPE(); + EditorApplication.update -= onUpdate; + Undo.undoRedoPerformed -= OnUndoRedo; + } + + void OnEnable() + { + Canvas = new CanvasState(this); + UI = new CanvasUI(this); + Sel = new CanvasSelection(this); + loadTypeColors(); + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= OnSceneGUI; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + += OnSceneGUI; + + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + EditorApplication.pauseStateChanged -= onPauseStateChanged; + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + EditorApplication.pauseStateChanged += onPauseStateChanged; + EditorApplication.update -= onUpdate; + EditorApplication.update += onUpdate; + + autoRepaintOnSceneChange = true; + wantsMouseMove = true; + Undo.undoRedoPerformed -= OnUndoRedo; + Undo.undoRedoPerformed += OnUndoRedo; + } + + void OnUndoRedo() + { + if (Generator) + { + if (mModuleCount != Generator.GetComponentsInChildren().Length) + { + Generator.Initialize(true); + Generator.Initialize(false); + Initialize(Generator); + } + } + } + + double? previousEditorTimeSinceStartup; + + void onUpdate() + { + double timeSinceStartup = EditorApplication.timeSinceStartup; + double editorDeltaTime = previousEditorTimeSinceStartup.HasValue == false ? 0 : timeSinceStartup - previousEditorTimeSinceStartup.Value; + previousEditorTimeSinceStartup = timeSinceStartup; + + Canvas.UpdateScrollingAnimation(editorDeltaTime); + + /* THIS CAUSES NullRefException when rendering ReorderableList's: + if (EditorApplication.isCompiling) + { + var eds = new List(ModuleEditors.Values); + for (int i = eds.Count - 1; i >= 0; i--) + Editor.DestroyImmediate(eds[i]); + ModuleEditors.Clear(); + }*/ + } + + void OnPlayModeStateChanged(PlayModeStateChange state) + { + OnStateChanged(); + } + + void onPauseStateChanged(PauseState state) + { + OnStateChanged(); + } + + void OnStateChanged() + { + destroyEditors(); + if (!Generator && Selection.activeGameObject) + { + Initialize(Selection.activeGameObject.GetComponent()); + Repaint(); + } + } + + void OnSceneGUI(SceneView sceneView) + { + if (!Generator) + return; + for (int i = 0; i < Modules.Count; i++) + { + CGModule mod = Modules[i]; + if (mod != null && mod.IsInitialized && mod.IsConfigured && mod.Active) + { + CGModuleEditorBase ed = GetModuleEditor(mod); + ed.OnModuleSceneGUI(); + if (Generator.ShowDebug && ed.ShowDebugVisuals) + ed.OnModuleSceneDebugGUI(); + } + } + } + + Vector2 deltaAccu; + + private List selectedObjectsCache1 = new List(); + private List selectedObjectsCache2 = new List(); + + void OnGUI() + { + + mDoRepaint = false; + if (!Generator) + return; + if (!Generator.IsInitialized) + { + Generator.Initialize(); + } + + + Modules = new List(Generator.Modules.ToArray()); + mModuleCount = Modules.Count; // store count to be checked in window GUI + + if (!Application.isPlaying && !Generator.IsInitialized) + Repaint(); + + DrawToolbar(); + Canvas.SetClientRect(0, GUILayoutUtility.GetLastRect().yMax, 0, mStatusbarHeight); + + // Scrollable Canvas + if (Canvas.IsScrollValueAnimating) + GUI.BeginScrollView(Canvas.ClientRect, Canvas.ScrollValue, Canvas.CanvasRect); + else + Canvas.ScrollValue = GUI.BeginScrollView(Canvas.ClientRect, Canvas.ScrollValue, Canvas.CanvasRect); + + + // render background + DTGUI.PushColor(Color.black.SkinAwareColor(true)); + GUI.Box(Canvas.ViewPort, ""); + DTGUI.PopColor(); + +#if CURVY_DEBUG + + GUILayout.BeginArea(Canvas.ViewPort); + GUILayout.Label("Canvas ClientRect: " + Canvas.ClientRect); + GUILayout.Label("Canvas Rect: " + Canvas.CanvasRect); + GUILayout.Label("Canvas Scroll: " + $" {Canvas.ScrollValue}/{Canvas.ScrollTarget} Speed {Canvas.ScrollSpeed}"); + GUILayout.Label("Canvas ViewPort: " + Canvas.ViewPort); + + GUILayout.Label("Mouse: " + EV.mousePosition); + //GUILayout.Label("IsWindowDrag: " + Canvas.IsWindowDrag); + GUILayout.Label("IsSelectionDrag: " + Canvas.IsSelectionRectDrag); + GUILayout.Label("IsLinkDrag: " + Canvas.IsLinkDrag); + GUILayout.Label("IsCanvasDrag: " + Canvas.IsCanvasDrag); + GUILayout.Label("IsModuleDrag: " + Canvas.IsModuleDrag); + GUILayout.Label("MouseOverModule: " + Canvas.MouseOverModule); + GUILayout.Label("MouseOverCanvas: " + Canvas.IsMouseOverCanvas); + GUILayout.Label("SelectedLink: " + Sel.SelectedLink); + GUILayout.Label("Selected Module: " + Sel.SelectedModule); + GUILayout.EndArea(); +#endif + + if (CurvyProject.Instance.CGShowHelp) + { + Rect r = new Rect(Canvas.ViewPort); + r.x = r.width - 230; + r.y = 10; + r.width = 220; + r.height = 240; + + GUILayout.BeginArea(r, GUI.skin.box); + GUI.Label(new Rect(10, -2, r.width, r.height), +@"General: + + RMB Contextual menu + MMB/Space Drag canvas + Alt Hold to snap to grid + Del Delete selection + + +Add Modules: + + - Drag & Drop objects (mesh, + spline, prefab,...) to create + associated input module + - Through the contextual menu + - Hold Ctrl while releasing a + link to create & connect", DTStyles.HtmlLabel); + + GUILayout.EndArea(); + } + + DrawLinks(); + + // Init and early catch some events + Canvas.BeginGUI(); + + DrawModules(); + + Canvas.EndGUI(); + + // Draw Selection + + DTGUI.PushBackgroundColor(Color.white);//.SkinAwareColor()); + foreach (CGModule mod in Sel.SelectedModules) + { + Rect selectionHighlightRectangle = mod.Properties.Dimensions.ScaleBy(2); + if (DTEditorUtility.UsesNewEditorUI) +#pragma warning disable 162 + { + selectionHighlightRectangle.x -= 1; + selectionHighlightRectangle.y -= 1; + selectionHighlightRectangle.width += 2; + selectionHighlightRectangle.height += 1; + } +#pragma warning restore 162 + GUI.Box(selectionHighlightRectangle, "", CurvyStyles.RoundRectangle); + } + DTGUI.PopBackgroundColor(); + + // Keep dragged Module in view and handle multiselection move + if (Canvas.IsModuleDrag && !DTGUI.IsLayout) + { + CGModule selectedModule = Canvas.Sel.SelectedModule; + +#if CURVY_SANITY_CHECKS_PRIVATE + if (selectedModule == null) + Debug.LogError($"Custom assertion is false: selectedModule != null"); +#endif + Vector2 mouseDelta = EV.delta; + deltaAccu += EV.delta; + if (EV.alt) + { + mouseDelta = deltaAccu.Snap(CurvyProject.Instance.CGGraphSnapping); + if (mouseDelta == deltaAccu) + mouseDelta = Vector2.zero; + } + if (Sel.SelectedModules.Count > 1) + { + foreach (CGModule mod in Sel.SelectedModules) + { + mod.Properties.Dimensions.position += mouseDelta; + } + if (!EV.alt || mouseDelta != Vector2.zero) + deltaAccu = Vector2.zero; + } + CGModule focusedModule; + if (Canvas.MouseOverModule && Sel.SelectedModules.Contains(Canvas.MouseOverModule)) + focusedModule = Canvas.MouseOverModule; + else + focusedModule = selectedModule; + + if (focusedModule) + { + Vector2 scrollDelta = Canvas.GetFocusDelta(focusedModule); + Canvas.SetScrollTarget(Canvas.ScrollValue + scrollDelta, Mathf.Max(60f, scrollDelta.magnitude * 20f)); + } + } + + // Linking in progress? + if (Canvas.IsLinkDrag) + { + Texture2D linkstyle = (Canvas.LinkDragFrom.OnRequestModule != null) ? CurvyStyles.RequestLineTexture : CurvyStyles.LineTexture; + Vector2 startPosition = Canvas.LinkDragFrom.Origin; + Vector2 endPosition = EV.mousePosition; + + CGGraph.GetLinkBezierTangents( + startPosition, + endPosition, + out Vector2 startTangent, + out Vector2 endTangent); + + Handles.DrawBezier(startPosition, endPosition, startTangent, endTangent, Color.white, linkstyle, 2); + } + + GUI.EndScrollView(true); + + // Selection + if (Canvas.IsSelectionRectDrag) + DrawSelectionRect(); + + // Statusbar + DrawStatusbar(); + + // IPE + SyncIPE(); + + bool selectionHasChanged; + { + Canvas.Sel.FillWithSelectedObjects(selectedObjectsCache1); + selectionHasChanged = selectedObjectsCache1.SequenceEqual(selectedObjectsCache2); + //swap both lists + (selectedObjectsCache2, selectedObjectsCache1) = (selectedObjectsCache1, selectedObjectsCache2); + } + + mDoRepaint = mDoRepaint || Canvas.IsCanvasDrag || Canvas.IsLinkDrag || Canvas.IsSelectionRectDrag || EV.type == EventType.MouseMove || mShowDebug.isAnimating || Canvas.IsScrollValueAnimating || selectionHasChanged; + + + // Disable Title edit mode? + if (editTitleModule != null) + { + if ((EV.isKey && (EV.keyCode == KeyCode.Escape || EV.keyCode == KeyCode.Return)) || + Sel.SelectedModule != editTitleModule + ) + { + editTitleModule = null; + //GUI.FocusControl(""); + mDoRepaint = true; + } + } + + if (mDoReorder) + Generator.ReorderModules(); + if (mDoRepaint) + Repaint(); + } + + + + void DrawModules() + { + //TODO at some point this method should be reworked to distinguish between what should be called when Event.current.type == EventType.Layout and what should be called otherwise + const int refreshHighlightSize = 9; + + //When modules are culled, they are not rendered (duh) and thus their height is not updated. This is ok as long as the height is constant. When there is some module expanding/collapsing, the height should change. In those cases, we disable the culling (for all modules for implementation simplicity sake, could be optimized) so the height is updated, so that the modules reordering code can work based on the actual height, and not the preculling one, which was leading to bad reordering results. + bool animationIsHappening = mShowDebug.isAnimating || Modules.Exists(m => m.Properties.Expanded.isAnimating); + + CGModule curSel = Sel.SelectedModule; + // Begin drawing Module Windows + BeginWindows(); + for (int i = 0; i < Modules.Count; i++) + { + CGModule mod = Modules[i]; + if (mod != null) + { + mod.Properties.Dimensions.width = Mathf.Max(mod.Properties.Dimensions.width, mod.Properties.MinWidth); + + //This is based on the condition at which mod.Properties.Expanded.target is modified in OnModuleWindowCB + bool autoModuleDetailsWillMakeModuleAnimate = DTGUI.IsLayout && CurvyProject.Instance.CGAutoModuleDetails && mod.Properties.Expanded.target != (mod == curSel); + + // Render title + string title = mod.ModuleName; + if (!mod.IsConfigured) + title = string.Format("{1}", new Color(1, 0.2f, 0.2f).SkinAwareColor().ToHtml(), mod.ModuleName); + //"" + mod.ModuleName + ""; + else if (mod is IOnRequestProcessing) + title = string.Format("{1}", CurvyStyles.IOnRequestProcessingTitleColor.SkinAwareColor().ToHtml(), mod.ModuleName); + +#if CURVY_DEBUG + title = mod.UniqueID + ":" + title; +#endif + + // the actual window + Vector2 oldPos = mod.Properties.Dimensions.position; + + bool shouldDraw; + { + //Ok, shit gets complicated here. The idea was to not draw modules that are out of the screen, but for reasons I don't fully grasp, the height can be 0, which fucks up the boundaries test. + //The height is set to 0 in the line just before calling GUILayout.Window, with the apparent goal for that method to update the height, but this update does not happen all the time. It happens when the OnGUI method is called following an Event of type Repaint, but does not happen when is called following an Event of type Layout. + //And if you remove the code setting height to 0, the height of the module is not updated correctly + if (mod.Properties.Dimensions.height == 0 || animationIsHappening || autoModuleDetailsWillMakeModuleAnimate) + shouldDraw = true; + else + { + Rect testedBoundaries = mod.Properties.Dimensions.ScaleBy(refreshHighlightSize); + shouldDraw = Canvas.ViewPort.Contains(testedBoundaries.min) || Canvas.ViewPort.Overlaps(testedBoundaries); + } + } + + Rect newWindowRect; + if (shouldDraw) + { + mod.Properties.Dimensions.height = 0; // will be set by GUILayout.Window + newWindowRect = GUILayout.Window(i, mod.Properties.Dimensions, OnModuleWindowCB, title, CurvyStyles.ModuleWindow); + } + else + { + UpdateLinks(mod); + newWindowRect = mod.Properties.Dimensions; + } + + if (!Application.isPlaying && oldPos != newWindowRect.position) + EditorSceneManager.MarkAllScenesDirty(); + + if (Sel.SelectedModules.Count > 1) // Multi-Module move in OnGUI() + { + mod.Properties.Dimensions = newWindowRect.SetPosition(oldPos); + } + else + { + if (EV.alt && Canvas.IsModuleDrag && Sel.SelectedModule == mod) + newWindowRect.position = newWindowRect.position.Snap(CurvyProject.Instance.CGGraphSnapping); + mod.Properties.Dimensions = newWindowRect; + } + + + + // Debugging + double lastUpdateDelta = (System.DateTime.Now - mod.DEBUG_LastUpdateTime).TotalMilliseconds; + if (lastUpdateDelta < 1500) + { + float alpha = Mathf.SmoothStep(1, 0, (float)lastUpdateDelta / 1500f); + DTGUI.PushBackgroundColor(new Color(0, 1, 0, alpha)); + GUI.Box(mod.Properties.Dimensions.ScaleBy(refreshHighlightSize), "", CurvyStyles.GlowBox); + DTGUI.PopBackgroundColor(); + Repaint(); + } + + } + } + EndWindows(); + + //update canvas rect to include any possible module's rectangle change (position and size) + if (EV.type != EventType.Layout) + //The following line is ignored in EventType.Layout, because the call to GUILayout.Window in that event, call on which we rely on to give us the correct module's rectangle, does not update the height. Maybe because that method is not supposed to be called in event layout, and maybe supposed to be called only in event repaint, but I am not going to do such drastic changes to this code now. This is a fight for another time + Canvas.ComputeCanvasRectangle(Modules); + + //focus selection + if (Sel.SelectedModule != curSel) + Canvas.FocusSelection(); + } + + void DrawSelectionRect() + { + Vector2 p = Canvas.SelectionRectStart; + Vector2 p2 = Canvas.ViewPortMousePosition; + Vector3[] verts = new Vector3[4] + { + new Vector3(p.x,p.y,0), + new Vector3(p2.x,p.y,0), + new Vector3(p2.x,p2.y,0), + new Vector3(p.x,p2.y,0) + }; + Handles.DrawSolidRectangleWithOutline(verts, new Color(.5f, .5f, .5f, 0.1f), Color.white); + } + + void OnModuleWindowCB(int id) + { + // something happened in the meantime? + if (id >= Modules.Count || mModuleCount != Modules.Count) + return; + CGModule mod = Modules[id]; + + //if (EV.type != EventType.Repaint && EV.type != EventType.Layout) + // Debug.Log("OnModuleWindowCB() " + EV.type + " " + Canvas.IsMouseOverCanvas); + if (EV.type == EventType.MouseDown && EV.button != 2 && !Sel.SelectedModules.Contains(mod) + /*&& Canvas.IsCanvasDrag == false && Canvas.IsLinkDrag == false*/) + Sel.SetSelectionTo(Modules[id]); + + Rect winRect = mod.Properties.Dimensions; + + // Draw Title Buttons + // Enabled + EditorGUI.BeginChangeCheck(); + mod.Active = GUI.Toggle(new Rect(2, 2, 16, 16), mod.Active, ""); + if (EditorGUI.EndChangeCheck()) + EditorUtility.SetDirty(Generator); + + //Edit Title & Color + if (editTitleModule == mod) + { + GUI.SetNextControlName("editTitle" + id.ToString()); + mod.ModuleName = GUI.TextField(new Rect(30, 5, winRect.width - 120, 16), mod.ModuleName); + mod.Properties.BackgroundColor = EditorGUI.ColorField(new Rect(winRect.width - 70, 5, 32, 16), mod.Properties.BackgroundColor); + } + + + if (GUI.Button(new Rect(winRect.width - 32, 6, 16, 16), new GUIContent(CurvyStyles.EditTexture, "Rename"), CurvyStyles.BorderlessButton)) + { + editTitleModule = mod; + //is this needed? + Sel.SetSelectionTo(mod); + EditorGUI.FocusTextInControl("editTitle" + id.ToString()); + } + + // Help + if (GUI.Button(new Rect(winRect.width - 16, 6, 16, 16), new GUIContent(CurvyStyles.HelpTexture, "Help"), CurvyStyles.BorderlessButton)) + { + string url = DTUtility.GetHelpUrl(mod); + if (!string.IsNullOrEmpty(url)) + Application.OpenURL(url); + } + + + // Check errors + if (mod.CircularReferenceError) + EditorGUILayout.HelpBox("Circular Reference", MessageType.Error); + // Draw Slots + DTGUI.PushColor(mod.Properties.BackgroundColor.SkinAwareColor(true)); + GUILayout.Space(1); + EditorGUILayout.BeginVertical(CurvyStyles.ModuleWindowSlotBackground); + DTGUI.PopColor(); + UpdateLinks(mod); + OnModuleWindowSlotGUI(mod); + EditorGUILayout.EndVertical(); + + CGModuleEditorBase ed = GetModuleEditor(mod); + + if (ed && ed.target != null) + { + + if (EditorGUILayout.BeginFadeGroup(mShowDebug.faded)) + ed.OnInspectorDebugGUIINTERNAL(Repaint); + EditorGUILayout.EndFadeGroup(); + + // Draw Module Options + + //I don't see the need for this, but I am not familiar enough with CG editor's code to feel confident to remove it + mod.Properties.Expanded.valueChanged.RemoveListener(Repaint); + mod.Properties.Expanded.valueChanged.AddListener(Repaint); + + if (!CurvyProject.Instance.CGAutoModuleDetails) + mod.Properties.Expanded.target = GUILayout.Toggle(mod.Properties.Expanded.target, new GUIContent(mod.Properties.Expanded.target ? CurvyStyles.CollapseTexture : CurvyStyles.ExpandTexture, "Show Details"), CurvyStyles.ShowDetailsButton); + + // === Module Details === + // Handle Auto-Folding + if (DTGUI.IsLayout && CurvyProject.Instance.CGAutoModuleDetails) + mod.Properties.Expanded.target = (mod == Sel.SelectedModule); + + if (EditorGUILayout.BeginFadeGroup(mod.Properties.Expanded.faded)) + { + EditorGUIUtility.labelWidth = (mod.Properties.LabelWidth); + // Draw Inspectors using Modules Background color + DTGUI.PushColor(ed.Target.Properties.BackgroundColor.SkinAwareColor(true)); + EditorGUILayout.BeginVertical(CurvyStyles.ModuleWindowBackground); + DTGUI.PopColor(); + + ed.RenderGUI(true); + if (ed.NeedRepaint) + mDoRepaint = true; + GUILayout.Space(2); + EditorGUILayout.EndVertical(); + } + EditorGUILayout.EndFadeGroup(); + + + } + + // Make it dragable + GUI.DragWindow(new Rect(0, 0, winRect.width, CurvyStyles.ModuleWindowTitleHeight)); + + } + + void OnModuleWindowSlotGUI(CGModule module) + { + + int i = 0; + + while (module.Input.Count > i || module.Output.Count > i) + { + GUILayout.BeginHorizontal(); + + if (module.Input.Count > i) + { + CGModuleInputSlot slot = module.Input[i]; + Color linkDataTypeColor = getTypeColor(slot.Info.DataTypes); + if (Canvas.IsLinkDrag && !slot.CanLinkTo(Canvas.LinkDragFrom)) + linkDataTypeColor = new Color(0.2f, 0.2f, 0.2f).SkinAwareColor(true); + DTGUI.PushColor(linkDataTypeColor); + GUILayout.Box("<", CurvyStyles.Slot); + DTGUI.PopColor(); + string postfix = ""; + if (slot.Info.Array && slot.Info.ArrayType == SlotInfo.SlotArrayType.Normal) + postfix = (slot.LastDataCountINTERNAL > 0) ? "[" + slot.LastDataCountINTERNAL.ToString() + "]" : "[]"; + GUILayout.Label(new GUIContent(ObjectNames.NicifyVariableName(slot.Info.DisplayName) + postfix, slot.Info.Tooltip), CurvyStyles.GetSlotLabelStyle(slot)); + + // LinkDrag? + if (Canvas.IsLinkDrag) + { + // If ending drag over dropzone, create static link + if (EV.type == EventType.MouseUp && slot.DropZone.Contains(EV.mousePosition) && slot.CanLinkTo(Canvas.LinkDragFrom)) + finishLink(slot); + } + // Clicking on Dropzone to pick existing link + else if (LMB && slot.Count == 1 && slot.DropZone.Contains(EV.mousePosition)) + { + CGModuleOutputSlot linkedOutSlot = slot.SourceSlot(); + linkedOutSlot.UnlinkFrom(slot); + EditorUtility.SetDirty(slot.Module); + startLinkDrag(linkedOutSlot); + GUIUtility.ExitGUI(); + } + } + + if (module.Output.Count > i) + { + CGModuleOutputSlot slot = module.Output[i]; + string postfix = ""; + if (slot.Info.Array && slot.Info.ArrayType == SlotInfo.SlotArrayType.Normal) + postfix = (slot.Data != null && slot.Data.Length > 1) ? "[" + slot.Data.Length.ToString() + "]" : ""; + + GUILayout.Label(new GUIContent(ObjectNames.NicifyVariableName(slot.Info.DisplayName) + postfix, slot.Info.Tooltip), CurvyStyles.GetSlotLabelStyle(slot)); + DTGUI.PushColor(getTypeColor(slot.Info.DataTypes)); + GUILayout.Box(">", CurvyStyles.Slot); + DTGUI.PopColor(); + // Debug + /* + if (Generator.ShowDebug) + { + GUI.enabled = slot.Data != null && slot.Data.Length>0; + if (GUILayout.Button(new GUIContent(CurvyStyles.DebugTexture, "Show Dump"), CurvyStyles.SmallButton, GUILayout.Width(16), GUILayout.Height(16))) + DTDebugWindow.Open(slot.Data[0].GetType().Name + ":", slot.Data[0].ToDumpString()); + GUI.enabled = true; + } + */ + // Start Linking? + if (LMB && !Canvas.IsSelectionRectDrag && slot.DropZone.Contains(EV.mousePosition)) + { + startLinkDrag(slot); + } + + } + GUILayout.EndHorizontal(); + i++; + } + + + } + + void DrawToolbar() + { + GUILayout.BeginHorizontal(CurvyStyles.Toolbar); + // Clear + if (GUILayout.Button(new GUIContent(CurvyStyles.DeleteTexture, "Clear modules"), EditorStyles.miniButton) && EditorUtility.DisplayDialog("Clear", "Clear graph?", "Yes", "No")) + { + Sel.Clear(); + Generator.Clear(); + Repaint(); + GUIUtility.ExitGUI(); + } + + GUILayout.Space(10); + + // clear outputs + if (GUILayout.Button(new GUIContent(CurvyStyles.DeleteBTexture, "Clear output"), EditorStyles.miniButton)) + { + bool associatedPrefabWasModified; + if (Generator.DeleteAllOutputManagedResources(out associatedPrefabWasModified) && Application.isPlaying == false) + if (PrefabStageUtility.GetPrefabStage(Generator.gameObject) == null) //if not editing the prefab in prefab mode + EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); + + if (associatedPrefabWasModified) + EditorUtility.DisplayDialog("Prefab asset modified", "The prefab asset associated with the prefab instance containing this Curvy Generator was modified.\n\nThis was done in order to allow the operation you initiated (Clear Output). You might need to apply the operation again.", "Ok"); + } + + // save resources to scene + if (GUILayout.Button(new GUIContent(CurvyStyles.SaveResourcesTexture, "Save output to scene"), EditorStyles.miniButton)) + { + Generator.SaveAllOutputManagedResources(); + } + + GUILayout.Space(10); + + // Refresh + if (GUILayout.Button(new GUIContent(CurvyStyles.RefreshTexture, "Refresh"), EditorStyles.miniButton, GUILayout.ExpandWidth(false)) && !DTGUI.IsLayout) + { + Modules = null; + Generator.Refresh(true); + Repaint(); + GUIUtility.ExitGUI(); + } + + // reorder + mDoReorder = GUILayout.Button(new GUIContent(CurvyStyles.ReorderTexture, "Reorder modules"), EditorStyles.miniButton, GUILayout.ExpandWidth(false)) && !DTGUI.IsLayout; + + // Debug + EditorGUI.BeginChangeCheck(); + mShowDebug.target = GUILayout.Toggle(mShowDebug.target, new GUIContent(CurvyStyles.DebugTexture, "Debug"), EditorStyles.miniButton); + if (EditorGUI.EndChangeCheck()) + { + Generator.ShowDebug = mShowDebug.target; + SceneView.RepaintAll(); + } + + GUILayout.Space(10); + + + // Expanded/Collapsed actions + CurvyProject.Instance.CGAutoModuleDetails = GUILayout.Toggle(CurvyProject.Instance.CGAutoModuleDetails, new GUIContent(CurvyStyles.CGAutoFoldTexture, "Auto-Expand selected module"), EditorStyles.miniButton); + if (GUILayout.Button(new GUIContent(CurvyStyles.ExpandTexture, "Expand all"), EditorStyles.miniButton)) + CGEditorUtility.SetModulesExpandedState(true, Generator.Modules.ToArray()); + if (GUILayout.Button(new GUIContent(CurvyStyles.CollapseTexture, "Collapse all"), EditorStyles.miniButton)) + CGEditorUtility.SetModulesExpandedState(false, Generator.Modules.ToArray()); + // Sync Selection + CurvyProject.Instance.CGSynchronizeSelection = GUILayout.Toggle(CurvyProject.Instance.CGSynchronizeSelection, new GUIContent(CurvyStyles.SynchronizeTexture, "Synchronize Selection"), EditorStyles.miniButton); + + // Save Template + GUILayout.Space(10); + GUI.enabled = Sel.SelectedModule != null; + if (GUILayout.Button(new GUIContent(CurvyStyles.AddTemplateTexture, "Save Selection as Template"), EditorStyles.miniButton)) + TemplateWizard.Open(Sel.SelectedModules, UI); + + GUI.enabled = true; + GUILayout.FlexibleSpace(); + GUILayout.Label(new GUIContent(CurvyStyles.TexGridSnap, "Snap Grid Size\n(Hold Alt while dragging to snap)")); + CurvyProject.Instance.CGGraphSnapping = (int)GUILayout.HorizontalSlider(CurvyProject.Instance.CGGraphSnapping, 1, 20, GUILayout.Width(60)); + GUILayout.Label(CurvyProject.Instance.CGGraphSnapping.ToString(), GUILayout.Width(20)); + CurvyProject.Instance.CGShowHelp = GUILayout.Toggle(CurvyProject.Instance.CGShowHelp, new GUIContent(CurvyStyles.HelpTexture, "Show Help"), EditorStyles.miniButton, GUILayout.Height(20)); + GUILayout.EndHorizontal(); + } + + void DrawStatusbar() + { + Rect r = new Rect(-1, position.height - mStatusbarHeight, 201, mStatusbarHeight - 1); + // Performance + EditorGUI.HelpBox(r, string.Format("Exec. Time (Avg): {0:0.###} ms", Generator.DEBUG_ExecutionTime.AverageMS), MessageType.None); + // Message + if (StatusBar.Render(new Rect(200, position.height - mStatusbarHeight, position.width, mStatusbarHeight - 1))) + mDoRepaint = true; + } + + void loadTypeColors() + { + TypeColors.Clear(); + + IEnumerable loadedTypes = TypeCache.GetTypesDerivedFrom(typeof(CGData)); + foreach (Type t in loadedTypes) + { + object[] ai = t.GetCustomAttributes(typeof(CGDataInfoAttribute), true); + if (ai.Length > 0) + { + TypeColors.Add(t, ((CGDataInfoAttribute)ai[0]).Color); + } + } + } + + public void destroyEditors() + { + List ed = new List(ModuleEditors.Values); + for (int i = ed.Count - 1; i >= 0; i--) + DestroyImmediate(ed[i]); + ModuleEditors.Clear(); + InPlaceEditTarget = null; + InPlaceEditInitiatedBy = null; + } + + internal CGModuleEditorBase GetModuleEditor(CGModule module) + { + CGModuleEditorBase ed; + if (!ModuleEditors.TryGetValue(module, out ed)) + { + ed = Editor.CreateEditor(module) as CGModuleEditorBase; + if (ed) + { + ed.Graph = this; + ModuleEditors.Add(module, ed); + } + else + DTLog.LogError("[Curvy] Curvy Generator: Missing editor script for module '" + module.GetType().Name + "' !"); + } + + return ed; + } + + Color getTypeColor(System.Type[] type) + { + Color c = Color.white; ; + if (type.Length == 1) + TypeColors.TryGetValue(type[0], out c); + + return c;//.SkinAwareColor(); + } + + #region Links + + public const int LinkSelectionDistance = 6; + + /// + /// Given a link's start and end positions, you get the Bezier tangents of the link at those positions + /// + public static void GetLinkBezierTangents(Vector2 startPosition, Vector2 endPosition, out Vector2 startTangent, out Vector2 endTangent) + { + float deltaX = Mathf.Abs(endPosition.x - startPosition.x); + float deltaY = Mathf.Abs(endPosition.y - startPosition.y); + + float xInfluence = deltaX / 2; + //when there is a big delta in y, a small delta in x, and multiple links going to the same module, the links are too close to distinguish. I "bump" the links (by increasing the tangent) in those cases so that they are distinguishable near the modules. + float yInfluence = 100f * Mathf.Min(1000f, deltaY) / 1000f; + + Vector2 tangent = new Vector2(xInfluence + yInfluence, 0); + startTangent = startPosition + tangent; + endTangent = endPosition - tangent; + } + + void DrawLinks() + { + Rect r = new Rect(); + + foreach (CGModule mod in Modules) + { + //Debug.Log(mod.name + ":" + mod.Properties.Dimensions.yMin+" to "+mod.Properties.Dimensions.yMax); + if (mod.OutputByName != null) + { + foreach (CGModuleOutputSlot slotOut in mod.OutputByName.Values) + { + Vector2 startPosition = slotOut.Origin; + foreach (CGModuleSlot slotIn in slotOut.LinkedSlots) + { + Vector2 endPosition = slotIn.Origin; + + r.Set(startPosition.x, startPosition.y, endPosition.x - startPosition.x, endPosition.y - startPosition.y); + // draw only visible lines + if (Canvas.ViewPort.Overlaps(r, true)) + { + GetLinkBezierTangents( + startPosition, + endPosition, + out Vector2 startTangent, + out Vector2 endTangent); + + if (EV.type == EventType.Repaint) + { + float w = (Sel.SelectedLink != null && Sel.SelectedLink.IsBetween(slotOut, slotIn)) ? 7 : 2; + + Color slotColor = getTypeColor(slotOut.Info.DataTypes); + + + if (!((CGModuleInputSlot)slotIn).InputInfo.RequestDataOnly && slotIn.OnRequestModule == null) + { + Handles.DrawBezier(startPosition, + endPosition, + startTangent, + endTangent, + slotColor, + CurvyStyles.LineTexture, + w); + } + else + { + //draw two parallel lines + Vector2 yOff = new Vector3(0, 2); + Handles.DrawBezier(startPosition + yOff, + endPosition + yOff, + startTangent + yOff, + endTangent + yOff, + slotColor, + CurvyStyles.LineTexture, + w); + + yOff = new Vector3(0, -2); + Handles.DrawBezier(startPosition + yOff, + endPosition + yOff, + startTangent + yOff, + endTangent + yOff, + slotColor, + CurvyStyles.LineTexture, + w); + } + } + + if (LMB && HandleUtility.DistancePointBezier(EV.mousePosition, startPosition, endPosition, startTangent, endTangent) <= LinkSelectionDistance) + { + Sel.SetSelectionTo(slotOut.Module.GetOutputLink((CGModuleOutputSlot)slotOut, (CGModuleInputSlot)slotIn)); + } + } + } + } + } + } + + } + + void UpdateLinks(CGModule module) + { + + int i = 0; + float slotDropZoneHeight = 18; + + while (module.Input.Count > i || module.Output.Count > i) + { + float y = CurvyStyles.ModuleWindowTitleHeight + slotDropZoneHeight * i; + + if (module.Input.Count > i) + { + CGModuleInputSlot slot = module.Input[i]; + slot.DropZone = new Rect(0, y, module.Properties.Dimensions.width / 2, slotDropZoneHeight); + slot.Origin = new Vector2(module.Properties.Dimensions.xMin, module.Properties.Dimensions.yMin + y + slotDropZoneHeight / 2); + } + + if (module.Output.Count > i) + { + CGModuleOutputSlot slot = module.Output[i]; + slot.DropZone = new Rect(module.Properties.Dimensions.width / 2, y, module.Properties.Dimensions.width / 2, slotDropZoneHeight); + slot.Origin = new Vector2(module.Properties.Dimensions.xMax, module.Properties.Dimensions.yMin + y + slotDropZoneHeight / 2); + } + i++; + } + } + + #endregion + + #region ### Actions ### + + void startLinkDrag(CGModuleSlot slot) + { + Sel.Clear(); + Canvas.LinkDragFrom = (CGModuleOutputSlot)slot; + StatusBar.SetMessage("Hold to quickly create & connect a module"); + } + + void finishLink(CGModuleInputSlot target) + { + StatusBar.Clear(); + Canvas.LinkDragFrom.LinkTo(target); + EditorUtility.SetDirty(target.Module); + if (!DTGUI.IsLayout) + GUIUtility.ExitGUI(); + } + #endregion + + + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGGraph.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGGraph.cs.meta new file mode 100644 index 00000000..4a97af75 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGGraph.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4d6374fae71341468322075901f0d3b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGModuleEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGModuleEditor.cs new file mode 100644 index 00000000..7da40c3e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGModuleEditor.cs @@ -0,0 +1,261 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor.Extensions; +using FluffyUnderware.Curvy; +using System.Collections.Generic; +using System; +using FluffyUnderware.DevToolsEditor; +using UnityEditor.AnimatedValues; +using UnityEngine.Events; +using FluffyUnderware.DevTools; +using Object = UnityEngine.Object; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + public class CGModuleEditorBase : CurvyEditorBase + { + public CGGraph Graph { get; internal set; } + + public AnimBool ShowDebugStats { get; set; } + public bool ShowDebugVisuals { get; set; } + protected bool HasDebugVisuals; + + protected override void OnEnable() + { + base.OnEnable(); + ShowDebugStats = new AnimBool(true); + ShowDebugStats.speed = 3; + HasDebugVisuals = false; + EndIPE(); + } + + /// + /// Called by the graph when an IPE session starts + /// + internal virtual void BeginIPE() + { + } + + /// + /// Called by the graph when an IPE session ends + /// + internal virtual void EndIPE() + { + } + + /// + /// Called for the IPE Target when the module should TRS it's IPE editor to the given values + /// + internal virtual void OnIPESetTRS(Vector3 position, Quaternion rotation, Vector3 scale) { } + + /// + /// Called for the IPE initiator to get the TRS values for the target + /// + internal virtual void OnIPEGetTRS(out Vector3 position, out Quaternion rotation, out Vector3 scale) + { + position = Vector3.zero; + rotation = Quaternion.identity; + scale = Vector3.one; + } + + + /// + /// Scene View GUI + /// + /// Called only if the module is initialized and configured + public virtual void OnModuleSceneGUI() + { + } + + /// + /// Scene View Debug GUI + /// + /// Called only when Show Debug Visuals is activated + public virtual void OnModuleSceneDebugGUI() + { + } + /// + /// Inspector Debug GUI + /// + /// Called only when Show Debug Values is activated + public virtual void OnModuleDebugGUI() + { + } + + protected override void OnCustomInspectorGUI() + { + base.OnCustomInspectorGUI(); + for (int m = 0; m < Target.UIMessages.Count; m++) + EditorGUILayout.HelpBox(Target.UIMessages[m], MessageType.Warning); + } + + protected override void OnReadNodes() + { + base.OnReadNodes(); + } + + public override void OnInspectorGUI() + { + bool showInspector; +#if UNITY_2018_3_OR_NEWER // New prefab system + showInspector = true; //With the new prefab system (Unity 2018.3) prefabs don't show inspector, and when opening prefab editor, its objects are of type PrefabAssetType.NotAPrefab, so no way to know if its from prefab or not? +#else + showInspector = IsPrefab == false; +#endif + + if (showInspector && Target) + { + if (!Target.IsInitialized) + { + Target.Initialize(); + } + DTGroupNode slotSection; + + if (DTGUI.IsLayout && IsInsideInspector && Target.Input!=null && Target.Output!=null && (Target.Input.Count > 0 || Target.Output.Count > 0) && !Node.FindNode("Slots", out slotSection)) + { + Node.AddSection("Slots", OnShowSlots).SortOrder = 99999; + Node.Sort(); + } + + if (GUILayout.Button(new GUIContent(CurvyStyles.OpenGraphTexture, "Edit Graph")) && Target.Generator) + { + CGGraph win = CGGraph.Open(Target.Generator); + win.Sel.SetSelectionTo(Target); + win.Canvas.FocusSelection(); + } + + base.OnInspectorGUI(); + + + + } + } + + void OnShowSlots(DTInspectorNode node) + { + if (Target) + { + List inSlots = Target.Input; + List outSlots = Target.Output; + + EditorGUILayout.BeginVertical(GUI.skin.box); + + if (inSlots.Count > 0) + { + EditorGUILayout.LabelField("Input", EditorStyles.boldLabel); + showSlots(inSlots); + } + + if (outSlots.Count > 0) + { + EditorGUILayout.LabelField("Output", EditorStyles.boldLabel); + showSlots(outSlots); + } + EditorGUILayout.EndVertical(); + GUILayout.Space(10); + + } + } + + void showSlots(List slots) where T:CGModuleSlot + { + foreach (CGModuleSlot slot in slots) + { + List linked = slot.GetLinkedModules(); + if (linked.Count > 1) + { + for (int i=0;i : CGModuleEditorBase where T : CGModule + { + public new T Target + { + get + { + return target as T; + } + } + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGModuleEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGModuleEditor.cs.meta new file mode 100644 index 00000000..a45e5f10 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGModuleEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2952921a87141e144bafce916291be32 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGResourceEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGResourceEditor.cs new file mode 100644 index 00000000..9b7f56bf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGResourceEditor.cs @@ -0,0 +1,208 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + + public static class CGResourceEditorHandler + { + static Dictionary Editors = new Dictionary(); + + internal static CGResourceEditor GetEditor(string resourceName, Component resource) + { + if (Editors.Count == 0) + loadEditors(); + if (Editors.ContainsKey(resourceName)) + { + return (CGResourceEditor)System.Activator.CreateInstance(Editors[resourceName], (object)resource); + } + return null; + } + + static void loadEditors() + { + Editors.Clear(); + TypeCache.TypeCollection types = TypeCache.GetTypesWithAttribute(); + foreach (Type T in types) + { + object[] at = T.GetCustomAttributes(typeof(ResourceEditorAttribute), true); + Editors.Add(((ResourceEditorAttribute)at[0]).ResourceName, T); + } + } + } + + public class CGResourceEditor + { + protected Component Resource { get; private set; } + + public CGResourceEditor() { } + + public CGResourceEditor(Component resource) + { + Resource = resource; + } + + /// + /// Resource GUI + /// + /// true if changes were made + public virtual bool OnGUI() { return false; } + + public static implicit operator bool(CGResourceEditor a) + { + return !object.ReferenceEquals(a, null); + } + } + + [ResourceEditor("Mesh")] + public class CGMeshResourceGUI : CGResourceEditor + { + + public CGMeshResourceGUI(Component resource) : base(resource) + { + } + + + } + + [ResourceEditor("Spline")] + public class CGSplineResourceGUI : CGResourceEditor + { + + public CGSplineResourceGUI(Component resource) + : base(resource) + { + } + } + + [ResourceEditor("Shape")] + public class CGShapeResourceGUI : CGResourceEditor + { + CurvyShape2D mCurrentShape; + + string[] mMenuNames; + int mSelection; + bool mFreeform; + + public CGShapeResourceGUI(Component resource) : base(resource) + { + mCurrentShape = resource.GetComponent(); + mMenuNames = CurvyShape.GetShapesMenuNames((mCurrentShape) ? mCurrentShape.GetType() : null, out mSelection, true).ToArray(); + mFreeform = (mCurrentShape == null); + } + + public override bool OnGUI() + { + bool dirty = false; + + bool b = GUILayout.Toggle(mFreeform, "Freeform"); + if (b != mFreeform) + { + if (b) + { + mCurrentShape.Spline.ShowGizmos = true; + mCurrentShape.Delete(); + mCurrentShape = null; + mFreeform = b; + + } + else if (EditorUtility.DisplayDialog("Warning", "The current shape will be irreversible replaced. Are you sure?", "Ok", "Cancel")) + { + if (DTUtility.DoesPrefabStatusAllowDeletion(Resource.gameObject.gameObject, out string errorMessage)) + { + mFreeform = b; + mCurrentShape = (CurvyShape2D)Resource.gameObject.AddComponent(CurvyShape.GetShapeType(mMenuNames[mSelection])); + mCurrentShape.Dirty = true; + } + else + { + EditorUtility.DisplayDialog($"Cannot delete Game Object '{Resource.gameObject.name}'", errorMessage, "Ok"); + } + } + + } + if (!mFreeform) + { + int sel = EditorGUILayout.Popup(mSelection, mMenuNames); + if (sel != mSelection) + { + if (DTUtility.DoesPrefabStatusAllowDeletion(Resource.gameObject, out string errorMessage)) + { + mSelection = sel; + dirty = true; + if (mCurrentShape) + mCurrentShape.Delete(); + mCurrentShape = (CurvyShape2D)Resource.gameObject.AddComponent(CurvyShape.GetShapeType(mMenuNames[mSelection])); + mCurrentShape.Dirty = true; + } + else + { + EditorUtility.DisplayDialog($"Cannot delete Game Object '{Resource.gameObject.name}'", errorMessage, "Ok"); + } + } + if (mCurrentShape) + { +#if UNITY_2017_4_OR_NEWER + using (SerializedObject so = new SerializedObject(mCurrentShape)) +#else + var so = new SerializedObject(mCurrentShape); +#endif + { + SerializedProperty prop = so.GetIterator(); + + bool enterChildren = true; + + while (prop.NextVisible(enterChildren)) + { + switch (prop.name) + { + case "m_Script": + case "InspectorFoldout": + case "m_Plane": + //case "m_Persistent": + break; + default: + EditorGUILayout.PropertyField(prop); + break; + } + enterChildren = false; + } + dirty = dirty || so.ApplyModifiedProperties(); + } + } + } + + return dirty; + } + } + + [System.AttributeUsage(System.AttributeTargets.Class)] + public class ResourceEditorAttribute : System.Attribute + { + public readonly string ResourceName; + + public ResourceEditorAttribute(string resName) + { + ResourceName = resName; + } + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGResourceEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGResourceEditor.cs.meta new file mode 100644 index 00000000..c6883b34 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CGResourceEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91cf6d920c15d7e44acdac5c2e58ad1a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasSelection.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasSelection.cs new file mode 100644 index 00000000..a02d8a63 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasSelection.cs @@ -0,0 +1,141 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.DevToolsEditor; +using JetBrains.Annotations; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + public class CanvasSelection + { + public List SelectedModules = new List(); + + public CGModuleLink SelectedLink { get; private set; } + public CGModule SelectedModule + { + get { return (SelectedModules.Count > 0) ? SelectedModules[0] : null; } + } + + //todo unused, remove it + public CGGraph Parent; + + /// + /// Returns a new array with the if any, otherwise + /// + public object[] SelectedObjects + { + get + { + if (SelectedLink != null) + return new object[1] { SelectedLink }; + return SelectedModules.ToArray(); + } + } + + /// + /// Empties list and adds into it the if any, otherwise + /// + public void FillWithSelectedObjects(List list) + { + list.Clear(); + if (SelectedLink != null) + list.Add(SelectedLink); + else + list.AddRange(SelectedModules); + } + + public CanvasSelection(CGGraph parent) + { + Parent = parent; + } + + public void Clear() + { + SelectedLink = null; + SelectedModules.Clear(); + if (CurvyProject.Instance.CGSynchronizeSelection) + DTSelection.Clear(); + } + + /// + /// Selects nothing (null), a link or one or more modules + /// + /// + [Obsolete("Use SetSelectionTo, or Clear, depending on your needs")] + public void Select(params object[] objects) + { + Clear(); + if (objects == null || objects.Length == 0) + return; + if (objects[0] is List) + objects = ((List)objects[0]).ToArray(); + if (objects[0] is CGModuleLink) + SelectedLink = (CGModuleLink)objects[0]; + else + { + List cmp = new List(); + foreach (object o in objects) + if (o is CGModule) + { + SelectedModules.Add((CGModule)o); + cmp.Add((CGModule)o); + } + + if (CurvyProject.Instance.CGSynchronizeSelection) + DTSelection.SetGameObjects(cmp.ToArray()); + } + + } + + public void SetSelectionTo([NotNull] CGModuleLink link) + { + Clear(); + SelectedLink = link; + } + + public void SetSelectionTo([NotNull] CGModule module) + { + SetSelectionTo(new[] { module }); + } + + public void SetSelectionTo([NotNull] IEnumerable modules) + { + bool modulesSelectionChanged = modules.SequenceEqual(SelectedModules) == false; + + Clear(); + + SelectedModules.AddRange(modules); + + if (modulesSelectionChanged && CurvyProject.Instance.CGSynchronizeSelection) + DTSelection.SetGameObjects(modules.Select(m => m as Component).ToArray()); + } + + /// + /// Adds or removes a module from the selection + /// + // Todo this code does not handle selection synchronisation. fix this before rehabilitating the method if needed + [Obsolete("Use SetSelectionTo, or Clear, depending on your needs")] + public void MultiSelectModule(CGModule mod) + { + if (mod == null) + return; + if (SelectedModules.Contains(mod)) + SelectedModules.Remove(mod); + else + SelectedModules.Add(mod); + + //todo why is this nt handling if (CurvyProject.Instance.CGSynchronizeSelection) + + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasSelection.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasSelection.cs.meta new file mode 100644 index 00000000..a2b22dd5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasSelection.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3a1be3eec3ac794e8bb30df7860a875 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasState.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasState.cs new file mode 100644 index 00000000..47b45059 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasState.cs @@ -0,0 +1,524 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevToolsEditor.Data; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + internal class CanvasState + { + CGGraph Parent; + public CanvasSelection Sel { get { return Parent.Sel; } } + public CanvasUI UI { get { return Parent.UI; } } + Event EV { get { return Event.current; } } + + + public CanvasState(CGGraph parent) + { + Parent = parent; + } + + + /// + /// The module the mouse is hovering + /// + //todo this and IsMouseOverModule should be tied + public CGModule MouseOverModule; + + + /// + /// Storing Event.current.mousePosition (in Canvasspace!) + /// + public Vector2 MousePosition; + + #region Scrolling + + + + /// + /// Canvas scrolling state + /// + [Obsolete("Use ScrollValue, ScrollTarget, ScrollSpeed or IsScrollValueAnimating")] + public AnimVector2 Scroll = new AnimVector2(); + + private Vector2 scrollValue; + + /// + /// Setting ScrollValue will stop any ongoing animation + /// + public Vector2 ScrollValue + { + get => scrollValue; + set + { + value.x = Mathf.Max(0f, value.x); + value.y = Mathf.Max(0f, value.y); + + scrollValue = value; + ScrollTarget = value; + ScrollSpeed = 0; + } + } + + public Vector2 ScrollTarget { get; private set; } + public float ScrollSpeed { get; private set; } + public bool IsScrollValueAnimating => ScrollTarget != ScrollValue; + + public void SetScrollTarget(Vector2 target, float speed) + { + target.x = Mathf.Max(0f, target.x); + target.y = Mathf.Max(0f, target.y); + + ScrollTarget = target; + ScrollSpeed = speed; + } + + public void UpdateScrollingAnimation(double time) + { + scrollValue = Vector2.MoveTowards(scrollValue, ScrollTarget, (float)(ScrollSpeed * time)); + } + + #endregion + + /// + /// Left/Top offset of Canvas from window + /// + public Vector2 ClientRectOffset; + + /// + /// Whether the mouse is hovering over a module or not + /// + //todo this and MouseOverModule should be tied + public bool IsMouseOverModule { get; private set; } + + public bool IsMouseOverCanvas + { + get + { + return ViewPort.Contains(MousePosition); + } + } + /// + /// Gets the canvas' scrollview size in window space + /// + public Rect ClientRect { get; private set; } + /// + /// Gets the total canvas size + /// + public Rect CanvasRect { get; private set; } + + /// + /// Gets the visible rect of the canvas + /// + public Rect ViewPort + { + get + { + return new Rect(CanvasRect.x + ScrollValue.x, CanvasRect.y + ScrollValue.y, ClientRect.width, ClientRect.height); + } + } + + public Vector2 ViewPortMousePosition + { + get + { + return MousePosition + ClientRectOffset - ViewPort.min; + } + } + + public void SetClientRect(float xOffset, float yOffset, float xspace = 0, float yspace = 0) + { + ClientRectOffset = new Vector2(xOffset, yOffset); + ClientRect = new Rect(ClientRectOffset.x, ClientRectOffset.y, (Parent.position.width - ClientRectOffset.x - xspace), (Parent.position.height - ClientRectOffset.y - yspace)); + + } + + /// + /// Grows the canvas to include the rect + /// + /// a rect in canvas space + public void EnlargeCanvasFor(Rect r) + { + //if (CurvyGUI.IsLayout) + CanvasRect = CanvasRect.Include(r); + } + + public void BeginGUI() + { + if (EV.isMouse || EV.type == EventType.DragUpdated || EV.type == EventType.DragExited) + MousePosition = EV.mousePosition; + + //if (EV.type != EventType.Repaint && EV.type != EventType.Layout) + // Debug.Log("BeginGUI() " + EV.type + " " + IsMouseOverCanvas); + + if (IsMouseOverCanvas) + //mouse events + switch (EV.type) + { + case EventType.MouseDrag: + if (!IsDragging) + { + if (IsMouseOverModule) + StartModuleDrag(); + else + StartSelectionRectangleDrag(); + } + break; + case EventType.MouseMove: + case EventType.MouseUp: + //ending drag is done in EventType.MouseMove to handle cases where the drag is finished while the mouse is out of the window, meaning that the MouseUp event is not catched + if (IsModuleDrag) + EndModuleDrag(); + if (EV.type == EventType.MouseUp) + { + if (EV.button == 1) + UI.ContextMenu(); + } + break; + case EventType.MouseDown: + if (IsCanvasDrag == false && EV.button == 2) + StartCanvasDrag(false); + break; + } + + //keyboard events + switch (EV.type) + { + case EventType.KeyDown: + if (IsCanvasDrag == false && EV.keyCode == KeyCode.Space) + StartCanvasDrag(true); + break; + case EventType.KeyUp: + if (IsCanvasDrag && isKeyboardCanvasDrag && EV.keyCode == KeyCode.Space) + EndCanvasDrag(); + break; + } + + if (EV.type != EventType.Layout) + IsMouseOverModule = false; + + if (IsCanvasDrag) + EditorGUIUtility.AddCursorRect(ViewPort, MouseCursor.Pan); + } + + /// + /// Processing of Events AFTER Module Window drawing (Beware! Window dragging eats up most events!) + /// + public void EndGUI() + { + //if (EV.type != EventType.Repaint && EV.type != EventType.Layout) + // Debug.Log("EndGUI() " + EV.type + " " + IsMouseOverCanvas); + + if (IsMouseOverCanvas) + //mouse events + switch (EV.type) + { + case EventType.MouseDrag: + // Drag canvas (i.e. change scroll offset) + if (IsCanvasDrag) + { + ScrollValue -= EV.delta; + } + break; + case EventType.MouseMove: + case EventType.MouseUp: + if (EV.type == EventType.MouseUp) + { + if (EV.button == 0 && !IsDragging) + { + if (Sel.SelectedLink && !MouseOverLink(Sel.SelectedLink) + || (Sel.SelectedModule && !MouseOverModule)) + Sel.Clear(); + } + + // Multi Selection + if (IsSelectionRectDrag) + EndSelectionRectangleDrag(); + + Parent.StatusBar.Clear(); + } + + //ending drag is done in EventType.MouseMove to handle cases where the drag is finished while the mouse is out of the window, meaning that the MouseUp event is not caught + { + if (IsLinkDrag) + EndLinkDrag(); + + // Multi Selection + if (IsSelectionRectDrag) + CancelSelectionRectangleDrag(); + + if (IsCanvasDrag && isKeyboardCanvasDrag == false) + EndCanvasDrag(); + } + break; + case EventType.DragUpdated: + UI.HandleDragDropProgress(); + break; + case EventType.DragPerform: + UI.HandleDragDropDone(); + break; + } + + //keyboard events + switch (EV.type) + { + case EventType.KeyDown: + switch (EV.keyCode) + { + case KeyCode.Delete: + CanvasUI.DeleteSelection(UI); + break; + case KeyCode.A: + if (EV.control) + CanvasUI.SelectAll(UI); + break; + case KeyCode.C: + if (EV.control) + CanvasUI.CopySelection(UI); + break; + case KeyCode.V: + if (EV.control) + CanvasUI.PastSelection(UI); + break; + case KeyCode.X: + if (EV.control) + CanvasUI.CutSelection(UI); + break; + case KeyCode.D: + if (EV.control) + { + CanvasUI.CopySelection(UI); + CanvasUI.PastSelection(UI); + } + break; + } + break; + } + } + + public void ViewPortRegisterWindow(CGModule module) + { + Rect winRect = module.Properties.Dimensions; + EnlargeCanvasFor(winRect); + + if (!IsMouseOverModule && EV.type != EventType.Layout) + { + IsMouseOverModule = winRect.Contains(EV.mousePosition); + MouseOverModule = (IsMouseOverModule) ? module : null; + } + } + + /// + /// Sets the Canvas Rectangle so that it includes all the given modules + /// + public void ComputeCanvasRectangle(List modules) + { + CanvasRect = new Rect(0, 0, 0, 0); + foreach (CGModule mod in modules) + if (mod != null) + ViewPortRegisterWindow(mod); + } + + public void FocusSelection() + { + CGModule selectedModule = Sel.SelectedModule; + if (selectedModule) + { + Vector2 scrollDelta = GetFocusDelta(selectedModule); + SetScrollTarget(ScrollValue + scrollDelta, Mathf.Max(60f, scrollDelta.magnitude * 4f)); + } + } + + /// + /// Returns the translation the viewport needs to do to focus on the given module + /// + /// The module to focus on + + public Vector2 GetFocusDelta(CGModule targetModule) + { + Rect focusedDimensions = targetModule.Properties.Dimensions; + + Rect viewPort = ViewPort; + + //add a margin, to include the module's highlight in the screen + const float xMargin = 5; + const float yMargin = 5; + focusedDimensions.x -= xMargin; + focusedDimensions.y -= yMargin; + //the + 17 is to take into account the pixels taken by the scroll bar. I am always assuming the scroll bar is visible. An improvement is to check if they are actually there or not. + focusedDimensions.width += 2 * xMargin + 17; + focusedDimensions.height += 2 * yMargin + 17; + + //clamp the focused rectangle to what can be possibly seen within the viewport + focusedDimensions.width = Mathf.Min(focusedDimensions.width, viewPort.width); + focusedDimensions.height = Mathf.Min(focusedDimensions.height, viewPort.height); + + //clamp the focused rectangle to the canvas dimensions + focusedDimensions.xMax = Math.Min(focusedDimensions.xMax, CanvasRect.width); + focusedDimensions.yMax = Math.Min(focusedDimensions.yMax, CanvasRect.height); + focusedDimensions.xMin = Math.Max(focusedDimensions.xMin, CanvasRect.x); + focusedDimensions.yMin = Math.Max(focusedDimensions.yMin, CanvasRect.y); + + + Vector2 delta = Vector2.zero; + if (focusedDimensions.xMax > viewPort.xMax) + delta.x = focusedDimensions.xMax - viewPort.xMax; + else if (focusedDimensions.xMin < viewPort.xMin) + delta.x = focusedDimensions.xMin - viewPort.xMin; + + if (focusedDimensions.yMax > viewPort.yMax) + delta.y = focusedDimensions.yMax - viewPort.yMax; + else if (focusedDimensions.yMin < viewPort.yMin) + delta.y = focusedDimensions.yMin - viewPort.yMin; + return delta; + } + + public bool MouseOverLink(CGModuleLink link) + { + if (link == null) + return false; + + CGModuleOutputSlot outSlot = Parent.Generator.ModulesByID[link.ModuleID].GetOutputSlot(link.SlotName); + CGModuleInputSlot inSlot = Parent.Generator.ModulesByID[link.TargetModuleID].GetInputSlot(link.TargetSlotName); + + Vector3 startPosition = outSlot.Origin; + Vector3 endPosition = inSlot.Origin; + + CGGraph.GetLinkBezierTangents( + startPosition, + endPosition, + out Vector2 startTangent, + out Vector2 endTangent); + + return HandleUtility.DistancePointBezier(EV.mousePosition, startPosition, endPosition, startTangent, endTangent) <= CGGraph.LinkSelectionDistance; + } + + + #region Drag handling + + /// + /// Gets whether the user is currently dragging anything (Canvas, Module, Link, etc..) + /// + public bool IsDragging + { + get { return IsCanvasDrag || IsModuleDrag || IsLinkDrag || IsSelectionRectDrag; } + } + + #region CanvasDrag + + public bool IsCanvasDrag; + /// + /// Was the Canvas drag initiated by the keyboard or the mouse? + /// + private bool isKeyboardCanvasDrag; + + private void StartCanvasDrag(bool isKeyboardInitiated) + { + IsCanvasDrag = true; + isKeyboardCanvasDrag = isKeyboardInitiated; + } + + private void EndCanvasDrag() + { + IsCanvasDrag = false; + } + + #endregion + #region Module Drag + + public bool IsModuleDrag; + + private void StartModuleDrag() + { + IsModuleDrag = true; + } + + private void EndModuleDrag() + { + IsModuleDrag = false; + } + + #endregion + + //The rest of the code handling links dragging is in CGGraph.cs + #region Link Drag + + + public CGModuleOutputSlot LinkDragFrom; + + /// + /// Gets whether a link is currently dragged + /// + public bool IsLinkDrag + { + get { return LinkDragFrom != null; } + } + + public CGModuleOutputSlot AutoConnectFrom; + + private void EndLinkDrag() + { + if (EV.control) + { + AutoConnectFrom = LinkDragFrom; + UI.AddModuleQuickmenu(LinkDragFrom); + } + + LinkDragFrom = null; + } + + //The rest of the code handling links dragging is in CGGraph.cs + + + #endregion + + #region Selection Rectangle Drag + + public bool IsSelectionRectDrag; + + /// + /// Starting position of selection drag + /// + public Vector2 SelectionRectStart; + + private void StartSelectionRectangleDrag() + { + IsSelectionRectDrag = true; + SelectionRectStart = ViewPortMousePosition; + } + + public void HandleMultiSelection() + { + Rect selectionRect = new Rect().SetBetween(SelectionRectStart, ViewPortMousePosition); + selectionRect.position -= ClientRectOffset - ViewPort.position; + + Sel.SetSelectionTo(Parent.Modules.Where(m => selectionRect.Overlaps(m.Properties.Dimensions, true)).ToList()); + } + + private void EndSelectionRectangleDrag() + { + HandleMultiSelection(); + IsSelectionRectDrag = false; + } + private void CancelSelectionRectangleDrag() + { + IsSelectionRectDrag = false; + } + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasState.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasState.cs.meta new file mode 100644 index 00000000..afe5b5a2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasState.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e7b2f43090b47ae4cb2bce3016056f9c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasUI.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasUI.cs new file mode 100644 index 00000000..6ef61e35 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasUI.cs @@ -0,0 +1,427 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.Reflection; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevTools; +using Object = UnityEngine.Object; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + + + public class CanvasUI + { + public static CGClipboard Clipboard = new CGClipboard(); + + CGGraph Parent; + /// + /// Gets ModuleInfo->Module Type mapping + /// + SortedDictionary TypeByModuleInfo = new SortedDictionary(); + /// + /// Gets Modules that accept a certain input data type + /// + Dictionary> ModuleInfoByInput = new Dictionary>(); + + /// + /// Used to get InputSlotInfo from (ModuleInfoAttribute,InputType) couples + /// + Dictionary> inputSlotInfoByModuleInfoAndInputType = new Dictionary>(); + + SortedDictionary TemplatesByMenuName = new SortedDictionary(); + + CanvasSelection Sel { get { return Parent.Sel; } } + CanvasState Canvas { get { return Parent.Canvas; } } + + public CanvasUI(CGGraph parent) + { + Parent = parent; + LoadData(); + } + + public void AddModuleQuickmenu(CGModuleOutputSlot forOutputSlot) + { + GenericMenu mnu = new GenericMenu(); + List matches; + System.Type outType = forOutputSlot.OutputInfo.DataType; + while (typeof(CGData).IsAssignableFrom(outType) && outType != typeof(CGData)) + { + + if (ModuleInfoByInput.TryGetValue(outType, out matches)) + { + foreach (ModuleInfoAttribute mi in matches) + { + InputSlotInfo si = inputSlotInfoByModuleInfoAndInputType[mi][outType]; + if (CGModuleInputSlot.AreInputAndOutputSlotsCompatible(si, typeof(IOnRequestProcessing).IsAssignableFrom(TypeByModuleInfo[mi]), forOutputSlot.OutputInfo, forOutputSlot.OnRequestModule != null)) + mnu.AddItem(new GUIContent(mi.MenuName), false, CTXOnAddAndConnectModule, mi); + } + mnu.ShowAsContext(); + } + outType = outType.BaseType; + } + } + + + + void AddMenuItem(GenericMenu mnu, string item, GenericMenu.MenuFunction2 func, object userData, bool enabled = true) + { + if (enabled) + mnu.AddItem(new GUIContent(item), false, func, userData); + else + mnu.AddDisabledItem(new GUIContent(item)); + } + + void AddMenuItem(GenericMenu mnu, string item, GenericMenu.MenuFunction func, bool enabled = true) + { + if (enabled) + mnu.AddItem(new GUIContent(item), false, func); + else + mnu.AddDisabledItem(new GUIContent(item)); + } + + public void ContextMenu() + { + GenericMenu mnu = new GenericMenu(); + // Add/ + List miNames = new List(TypeByModuleInfo.Keys); + + foreach (ModuleInfoAttribute mi in miNames) + AddMenuItem(mnu, "Add/" + mi.MenuName, CTXOnAddModule, mi); + // Add/ + + + foreach (string tplName in TemplatesByMenuName.Keys) + AddMenuItem(mnu, "Add Template/" + tplName, CTXOnAddTemplate, tplName); + + mnu.AddSeparator(""); + AddMenuItem(mnu, "Reset", CTXOnReset, Sel.SelectedModules.Count > 0); + mnu.AddSeparator(""); + AddMenuItem(mnu, "Cut", () => CutSelection(this), Sel.SelectedModules.Count > 0); + AddMenuItem(mnu, "Copy", () => CopySelection(this), Sel.SelectedModules.Count > 0); + AddMenuItem(mnu, "Paste", () => PastSelection(this), !Clipboard.Empty); + mnu.AddSeparator(""); + AddMenuItem(mnu, "Delete", () => DeleteSelection(this), Sel.SelectedModules.Count > 0 || Sel.SelectedLink != null); + mnu.AddSeparator(""); + AddMenuItem(mnu, "Select all", () => SelectAll(this)); + mnu.ShowAsContext(); + } + + void CTXOnReset() + { + foreach (CGModule mod in Sel.SelectedModules) + mod.Reset(); + } + + void CTXOnAddModule(object userData) + { + ModuleInfoAttribute mi = (ModuleInfoAttribute)userData; + CGModule mod = AddModule(TypeByModuleInfo[mi]); + mod.Properties.Dimensions = mod.Properties.Dimensions.SetPosition(Canvas.MousePosition); + } + + void CTXOnAddAndConnectModule(object userData) + { + if (!Canvas.AutoConnectFrom) + return; + + ModuleInfoAttribute mi = (ModuleInfoAttribute)userData; + CGModule mod = AddModule(TypeByModuleInfo[mi]); + + mod.Properties.Dimensions = mod.Properties.Dimensions.SetPosition(Canvas.MousePosition); + + foreach (CGModuleInputSlot inputSlot in mod.Input) + if (inputSlot.CanLinkTo(Canvas.AutoConnectFrom)) + { + Canvas.AutoConnectFrom.LinkTo(inputSlot); + return; + } + + } + + void CTXOnAddTemplate(object userData) + { + string tplPath; + if (TemplatesByMenuName.TryGetValue((string)userData, out tplPath)) + CGEditorUtility.LoadTemplate(Parent.Generator, tplPath, Canvas.MousePosition); + } + + public CGModule AddModule(System.Type type) + { + CGModule mod = Parent.Generator.AddModule(type); + Undo.RegisterCreatedObjectUndo(mod, "Create Module"); + return mod; + } + + /// + /// Deletes a link or one or more modules (Undo-Aware!) + /// + /// + public void Delete(params object[] objects) + { + if (objects == null || objects.Length == 0) + return; + if (objects[0] is CGModuleLink) + DeleteLink((CGModuleLink)objects[0]); + else + foreach (CGModule m in objects) + m.Delete(); + } + + public void DeleteLink(CGModuleLink link) + { + CGModuleOutputSlot sOut = Parent.Generator.GetModule(link.ModuleID, true).OutputByName[link.SlotName]; + CGModuleInputSlot sIn = Parent.Generator.GetModule(link.TargetModuleID, true).InputByName[link.TargetSlotName]; + sOut.UnlinkFrom(sIn); + } + + public void LoadData() + { + // Build TypeByModuleInfo and ModuleInfoByInput dictionaries + TypeByModuleInfo.Clear(); + ModuleInfoByInput.Clear(); + inputSlotInfoByModuleInfoAndInputType.Clear(); + TypeByModuleInfo = new SortedDictionary(typeof(CGModule).GetAllTypesWithAttribute()); + + foreach (KeyValuePair kv in TypeByModuleInfo) + { + Type moduleType = kv.Value; + ModuleInfoAttribute moduleInfoAttribute = kv.Key; + + FieldInfo[] fields = moduleType.GetFields(BindingFlags.Public | BindingFlags.Instance); + foreach (FieldInfo fieldInfo in fields) + if (fieldInfo.FieldType == typeof(CGModuleInputSlot)) + { + object[] slotAttrib = fieldInfo.GetCustomAttributes(typeof(InputSlotInfo), true); + if (slotAttrib.Length > 0) + { + InputSlotInfo inputSlotInfo = (InputSlotInfo)slotAttrib[0]; + List moduleInfoAttributes; + for (int x = 0; x < inputSlotInfo.DataTypes.Length; x++) + { + Type dataType = inputSlotInfo.DataTypes[x]; + if (!ModuleInfoByInput.TryGetValue(dataType, out moduleInfoAttributes)) + { + moduleInfoAttributes = new List(); + ModuleInfoByInput.Add(dataType, moduleInfoAttributes); + } + + moduleInfoAttributes.Add(moduleInfoAttribute); + + if (inputSlotInfoByModuleInfoAndInputType.ContainsKey(moduleInfoAttribute) == false) + inputSlotInfoByModuleInfoAndInputType[moduleInfoAttribute] = new Dictionary(); + if (inputSlotInfoByModuleInfoAndInputType[moduleInfoAttribute].ContainsKey(dataType) == false) + inputSlotInfoByModuleInfoAndInputType[moduleInfoAttribute][dataType] = inputSlotInfo; + } + } + } + } + // load Templates + ReloadTemplates(); + } + + /// + /// Reloads the available templates from the prefabs in the Templates folder + /// + public void ReloadTemplates() + { + TemplatesByMenuName.Clear(); + string[] baseFolders; + if (AssetDatabase.IsValidFolder("Assets/" + CurvyProject.Instance.CustomizationRootPath + CurvyProject.RELPATH_CGTEMPLATES)) + baseFolders = new string[2] { "Assets/" + CurvyEditorUtility.GetPackagePath("CG Templates"), "Assets/" + CurvyProject.Instance.CustomizationRootPath + CurvyProject.RELPATH_CGTEMPLATES }; + else + baseFolders = new string[1] { "Assets/" + CurvyEditorUtility.GetPackagePath("CG Templates") }; + + string[] prefabs = AssetDatabase.FindAssets("t:gameobject", baseFolders); + + foreach (string guid in prefabs) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + // Store under a unique menu name + string name = AssetDatabase.LoadAssetAtPath(path, typeof(Transform)).name; + string menuPath = System.IO.Path.GetDirectoryName(path).Replace(System.IO.Path.DirectorySeparatorChar.ToString(), "/"); + foreach (string s in baseFolders) + menuPath = menuPath.TrimStart(s); + menuPath = menuPath.TrimStart('/'); + + string menuName = string.IsNullOrEmpty(menuPath) + ? name + : menuPath + "/" + name; + int i = 0; + while (TemplatesByMenuName.ContainsKey((i == 0) + ? menuName + : menuName + i.ToString())) + i++; + TemplatesByMenuName.Add((i == 0) + ? menuName + : menuName + i.ToString(), path); + } + } + + public void HandleDragDropProgress() + { + DragAndDrop.visualMode = DragAndDropVisualMode.Generic; + } + + public void HandleDragDropDone() + { + Vector2 mousePosition = Event.current.mousePosition; + + foreach (Object @object in DragAndDrop.objectReferences) + { + CGModule module = null; + if (@object is GameObject gameObject) + { + CurvySpline spline = gameObject.GetComponent(); + if (spline) + { + CurvyShape shape = gameObject.GetComponent(); + if (shape) + { + InputSplineShape inputModule = Parent.Generator.AddModule(); + inputModule.Shape = spline; + module = inputModule; + } + else + { + InputSplinePath inputModule = Parent.Generator.AddModule(); + inputModule.Spline = spline; + module = inputModule; + } + } + else + { + InputGameObject inputModule = Parent.Generator.AddModule(); + inputModule.GameObjects.Add(new CGGameObjectProperties(gameObject)); + module = inputModule; + } + + } + else if (@object is Mesh mesh) + { + InputMesh inputModule = Parent.Generator.AddModule(); + inputModule.Meshes.Add(new CGMeshProperties(mesh)); + module = inputModule; + } + + if (module) + { + module.Properties.Dimensions.position = mousePosition; + module.Properties.Dimensions.xMin -= module.Properties.MinWidth / 2; + mousePosition.y += module.Properties.Dimensions.height; + } + } + + DragAndDrop.AcceptDrag(); + } + + #region shortcut/contextual menu shared commands + + public static void SelectAll(CanvasUI ui) + { + ui.Sel.SetSelectionTo(ui.Parent.Modules); + } + + public static void DeleteSelection(CanvasUI ui) + { + ui.Delete(ui.Sel.SelectedObjects); + ui.Sel.Clear(); + } + + public static void CopySelection(CanvasUI ui) + { + Clipboard.CopyModules(ui.Sel.SelectedModules); + } + public static void CutSelection(CanvasUI ui) + { + Clipboard.CutModules(ui.Sel.SelectedModules); + } + public static void PastSelection(CanvasUI ui) + { + // relative position between modules were kept, but take current mouse position as reference! + Vector2 off = ui.Canvas.MousePosition - Clipboard.Modules[0].Properties.Dimensions.position; + ui.Sel.SetSelectionTo(Clipboard.PasteModules(ui.Parent.Generator, off)); + } + + #endregion + } + + public class CGClipboard + { + public enum ClipboardMode + { + Cut, + Copy + } + + public ClipboardMode Mode = ClipboardMode.Copy; + + public List Modules = new List(); + + + public bool Empty { get { return Modules.Count == 0; } } + + public CurvyGenerator ParentGenerator + { + get + { + return (Modules.Count > 0) ? Modules[0].Generator : null; + } + } + + public void CutModules(IList modules) + { + Mode = ClipboardMode.Cut; + copyInternal(modules); + } + + public void CopyModules(IList modules) + { + Mode = ClipboardMode.Copy; + copyInternal(modules); + } + + public void Clear() + { + Modules.Clear(); + + } + + /// + /// Paste all Clipboard modules + /// + /// the generator to paste to + /// Canvas offset to use + /// the new modules + public List PasteModules(CurvyGenerator target, Vector2 positionOffset) + { + List res = CGEditorUtility.CopyModules(Modules, target, positionOffset); + if (Mode == ClipboardMode.Cut) + foreach (CGModule mod in Modules) + ParentGenerator.DeleteModule(mod); + Clear(); + + return res; + } + + void copyInternal(IList modules) + { + Modules.Clear(); + Modules.AddRange(modules); + } + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasUI.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasUI.cs.meta new file mode 100644 index 00000000..48c1105c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CanvasUI.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ce3f6137153735498d55b2fce2ad997 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CurvyGeneratorEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CurvyGeneratorEditor.cs new file mode 100644 index 00000000..efd7aa00 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CurvyGeneratorEditor.cs @@ -0,0 +1,55 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections; +using FluffyUnderware.Curvy.Generator; +using System.Collections.Generic; +using FluffyUnderware.DevToolsEditor.Extensions; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + [CustomEditor(typeof(CurvyGenerator))] + public class CurvyGeneratorEditor : CurvyEditorBase + { + protected override void OnCustomInspectorGUI() + { + GUILayout.Space(5); + if (Target) + EditorGUILayout.HelpBox("# of Modules: " + Target.Modules.Count.ToString(), MessageType.Info); + } + + public override void OnInspectorGUI() + { + bool showInspector; +#if UNITY_2018_3_OR_NEWER // New prefab system + showInspector = true; //With the new prefab system (Unity 2018.3) prefabs don't show inspector, and when opening prefab editor, its objects are of type PrefabAssetType.NotAPrefab, so no way to know if its from prefab or not? +#else + showInspector = IsPrefab == false; +#endif + + if (showInspector == false) + { + EditorGUILayout.HelpBox("Curvy Generator Template", MessageType.Info); + } + else + { + GUILayout.BeginHorizontal(GUILayout.Height(24)); + if (GUILayout.Button(new GUIContent(CurvyStyles.OpenGraphTexture, "Edit Graph"))) + CGGraph.Open(Target); + + if (GUILayout.Button(new GUIContent(CurvyStyles.DeleteTexture, "Clear Graph"), GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)) && EditorUtility.DisplayDialog("Clear", "Clear graph?", "Yes", "No")) + Target.Clear(); + GUILayout.EndHorizontal(); + + base.OnInspectorGUI(); + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CurvyGeneratorEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CurvyGeneratorEditor.cs.meta new file mode 100644 index 00000000..ceee2e97 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/CurvyGeneratorEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1bc2fddee027afa438e389e26eb163dc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/MetaCGOptionsEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/MetaCGOptionsEditor.cs new file mode 100644 index 00000000..e38f9458 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/MetaCGOptionsEditor.cs @@ -0,0 +1,135 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +using UnityEngine; +using UnityEditor; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.Curvy; +using UnityEngine.Assertions; + +namespace FluffyUnderware.CurvyEditor +{ + [CustomEditor(typeof(MetaCGOptions))] + [CanEditMultipleObjects] + public class MetaCGOptionsEditor : DTEditor + { + + [DrawGizmo(GizmoType.Active | GizmoType.NonSelected | GizmoType.InSelectionHierarchy)] + static void MetaGizmoDrawer(MetaCGOptions data, GizmoType context) + { + if (data.Spline == null) + return; + + if (CurvyGlobalManager.ShowMetadataGizmo && data.Spline.ShowGizmos) + { + if (data.CorrectedHardEdge) + { + Vector3 position = data.ControlPoint.transform.position; +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(position, "^", OrientationAxisEnum.Down); +#pragma warning restore CS0618 + } + if (data.Spline.Dirty == false && data.MaterialID != 0) + { + Vector3 position = data.Spline.ToWorldPosition(data.ControlPoint.Interpolate(0.5f)); +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(position, data.MaterialID.ToString(), OrientationAxisEnum.Forward); +#pragma warning restore CS0618 + } + } + } + + void CBSetFirstU() + { +#if CONTRACTS_FULL + Contract.Requires(Target.ControlPoint.Spline != null); +#endif + if (!Target.CorrectedUVEdge && GUILayout.Button("Set U from neighbours")) + { + CurvySplineSegment targetControlPoint = Target.ControlPoint; + CurvySpline targetSpline = targetControlPoint.Spline; + + float uValue; + if (targetSpline.IsControlPointVisible(targetControlPoint)) + { + if (targetSpline.Count == 0) + uValue = 0; + else + { + //TODO this implementation has a lot in common with SplineInputModuleBase.CalculateExtendedUV. I am sure there is some duplicated code between these two, and there might be bugs due to those two implementations calculating U differently in some cases + + CurvySplineSegment previousUWithDefinedCp; + CurvySpline curvySpline = Target.Spline; + { + CurvySplineSegment currentCp = curvySpline.GetPreviousControlPoint(targetControlPoint); + if (currentCp == null || targetControlPoint == curvySpline.FirstVisibleControlPoint) + previousUWithDefinedCp = targetControlPoint; + else + { + while (currentCp != curvySpline.FirstVisibleControlPoint) + { + MetaCGOptions currentCpOptions = currentCp.GetMetadata(true); + if (currentCpOptions.CorrectedUVEdge || currentCpOptions.ExplicitU) + break; + currentCp = curvySpline.GetPreviousControlPoint(currentCp); + } + previousUWithDefinedCp = currentCp; + } + + } + MetaCGOptions previousDefinedOptions = previousUWithDefinedCp.GetMetadata(true); + + CurvySplineSegment nextCpWithDefinedU; + { + + CurvySplineSegment currentCp = curvySpline.GetNextControlPoint(targetControlPoint); + if (currentCp == null || targetControlPoint == curvySpline.LastVisibleControlPoint) + nextCpWithDefinedU = targetControlPoint; + else + { + while (currentCp != curvySpline.LastVisibleControlPoint) + { + MetaCGOptions currentCpOptions = currentCp.GetMetadata(true); + if (currentCpOptions.CorrectedUVEdge || currentCpOptions.ExplicitU) + break; + currentCp = curvySpline.GetNextControlPoint(currentCp); + } + + nextCpWithDefinedU = currentCp; + } + } + if (curvySpline.Closed && nextCpWithDefinedU == curvySpline.LastVisibleControlPoint) + nextCpWithDefinedU = curvySpline.GetPreviousControlPoint(nextCpWithDefinedU); + MetaCGOptions nextDefinedOptions = nextCpWithDefinedU.GetMetadata(true); + + float frag = (targetControlPoint.Distance - previousUWithDefinedCp.Distance) / (nextCpWithDefinedU.Distance - previousUWithDefinedCp.Distance); +#if CURVY_SANITY_CHECKS + Assert.IsFalse(float.IsNaN(frag)); +#endif + + float startingU = (previousUWithDefinedCp == targetControlPoint) ? 0 : previousDefinedOptions.GetDefinedSecondU(0); + float endingU = (nextCpWithDefinedU == targetControlPoint) ? 1 : nextDefinedOptions.GetDefinedFirstU(1); + uValue = Mathf.Lerp(startingU, endingU, frag); + } + + } + else + uValue = 0; + + Target.FirstU = uValue; + + + EditorUtility.SetDirty(target); + } + } + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/MetaCGOptionsEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/MetaCGOptionsEditor.cs.meta new file mode 100644 index 00000000..b3448922 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CG/MetaCGOptionsEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 352a72fc4de23574f851e54f2adb3971 +timeCreated: 1442221136 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers.meta new file mode 100644 index 00000000..6fdb5ec2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: f0f84d388fdadf14f828a6a4598ac44f +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/CurvyControllerEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/CurvyControllerEditor.cs new file mode 100644 index 00000000..6860abd2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/CurvyControllerEditor.cs @@ -0,0 +1,92 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +namespace FluffyUnderware.CurvyEditor.Controllers +{ + + public class CurvyControllerEditor : CurvyEditorBase where T : CurvyController + { + protected override void OnEnable() + { + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + base.OnEnable(); + } + + protected override void OnDisable() + { + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + base.OnDisable(); + if (Application.isPlaying == false) + if (Target) + Target.Stop(); + } + + void OnPlayModeStateChanged(PlayModeStateChange state) + { + OnStateChanged(); + } + + void OnStateChanged() + { + if (Application.isPlaying == false) + Target.Stop(); + + } + + protected override void OnReadNodes() + { + DTGroupNode node = Node.AddSection("Preview", ShowPreviewButtons); + node.Expanded = false; + node.SortOrder = 5000; + } + + + /// + /// Show the preview buttons + /// + protected void ShowPreviewButtons(DTInspectorNode node) + { + GUILayout.BeginHorizontal(); + GUI.enabled = !Application.isPlaying; + + bool isPlayingOrPaused = Target.PlayState == CurvyController.CurvyControllerState.Playing || Target.PlayState == CurvyController.CurvyControllerState.Paused; + + //TODO it would be nice to have two different icons, one for Play and one for Pause + if (GUILayout.Toggle(isPlayingOrPaused, new GUIContent(CurvyStyles.TexPlay, "Play/Pause in Editor"), GUI.skin.button) != isPlayingOrPaused) + { + + switch (Target.PlayState) + { + case CurvyController.CurvyControllerState.Paused: + case CurvyController.CurvyControllerState.Stopped: + Target.Play(); + break; + case CurvyController.CurvyControllerState.Playing: + Target.Pause(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + if (GUILayout.Button(new GUIContent(CurvyStyles.TexStop, "Stop/Reset"))) + { + Target.Stop(); + } + GUI.enabled = true; + GUILayout.EndHorizontal(); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/CurvyControllerEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/CurvyControllerEditor.cs.meta new file mode 100644 index 00000000..adcdaa1c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/CurvyControllerEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3952319cbfad670488083249e69f8d33 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/MoveModeDrawer.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/MoveModeDrawer.cs new file mode 100644 index 00000000..2ee6964d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/MoveModeDrawer.cs @@ -0,0 +1,27 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.Curvy.Controllers; +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.CurvyEditor.Controllers +{ + [CustomPropertyDrawer(typeof(CurvyController.MoveModeEnum))] + public class MoveModeDrawer : PropertyDrawer + { + readonly GUIContent[] options = new[] { new GUIContent("Relative", "Speed is expressed as spline lengths per second"), new GUIContent("Absolute", "Speed is expressed as world units per second") }; + readonly GUIStyle guiStyle = EditorStyles.popup; + + override public void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + property.intValue = EditorGUI.Popup(position, label, property.intValue, options, guiStyle); + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/MoveModeDrawer.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/MoveModeDrawer.cs.meta new file mode 100644 index 00000000..6afc3408 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/MoveModeDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: bc870c7e0be8b8a42bb5579d77bfa8e3 +timeCreated: 1528148317 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/OnPositionReachedSettingsDrawer.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/OnPositionReachedSettingsDrawer.cs new file mode 100644 index 00000000..679d0ca0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/OnPositionReachedSettingsDrawer.cs @@ -0,0 +1,150 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +#region + +using System; +using System.Collections.Generic; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.DevTools.Extensions; +using UnityEditor; +using UnityEngine; + +#endregion + +namespace FluffyUnderware.CurvyEditor.Controllers +{ + [CustomPropertyDrawer(typeof(OnPositionReachedSettings))] + public class OnPositionReachedSettingsDrawer : PropertyDrawer + { + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + OnPositionReachedSettings onPositionReachedSettings; + { + object value = fieldInfo.GetValue(property.serializedObject.targetObject); + if (value.GetType().IsArrayOrList()) + { + int startIndex = property.propertyPath.LastIndexOf('['); + int endIndex = property.propertyPath.LastIndexOf(']'); + int index = Convert.ToInt32(property.propertyPath.Substring(startIndex + 1, endIndex - startIndex - 1)); + onPositionReachedSettings = ((List)value)[index]; + } + else + { + onPositionReachedSettings = (OnPositionReachedSettings)value; + } + } + + return GetPropertyHeight(property, onPositionReachedSettings); + } + + public static float GetPropertyHeight(SerializedProperty property, OnPositionReachedSettings onPositionReachedSettings) + { + if (property.isExpanded == false) + return EditorGUIUtility.singleLineHeight; + + return 190 + Math.Max(0, onPositionReachedSettings.Event.GetPersistentEventCount() - 1) * 47; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty nameProperty = property.FindPropertyRelative(nameof(OnPositionReachedSettings.Name)); + SerializedProperty colorProperty = property.FindPropertyRelative(nameof(OnPositionReachedSettings.GizmoColor)); + SerializedProperty eventProperty = property.FindPropertyRelative(nameof(OnPositionReachedSettings.Event)); + SerializedProperty positionProperty = property.FindPropertyRelative(nameof(OnPositionReachedSettings.Position)); + SerializedProperty positionModeProperty = property.FindPropertyRelative(nameof(OnPositionReachedSettings.PositionMode)); + SerializedProperty triggeringDirectionsProperty = property.FindPropertyRelative(nameof(OnPositionReachedSettings.TriggeringDirections)); + + float fieldHeight = EditorGUIUtility.singleLineHeight; + float fieldMarginHeight = EditorGUIUtility.standardVerticalSpacing; + + // Using BeginProperty / EndProperty on the parent property means that + // prefab override logic works on the entire property. + EditorGUI.BeginProperty(position, label, property); + + string labelString; + { + if (property.isExpanded) + labelString = $"{nameProperty.stringValue}"; + else + { + string positionModeEnumName; + { + bool positionModeParseSucceeded = Enum.TryParse(positionModeProperty.enumNames[positionModeProperty.enumValueIndex], out CurvyPositionMode positionMode); + positionModeEnumName = positionModeParseSucceeded ? CurvyPositionModeDrawer.GetDisplayName(positionMode) : positionModeProperty.enumDisplayNames[positionModeProperty.enumValueIndex]; + } + + labelString = $"{nameProperty.stringValue} (Position: {positionModeEnumName} {positionProperty.floatValue} - Direction: {triggeringDirectionsProperty.enumDisplayNames[triggeringDirectionsProperty.enumValueIndex]})"; + } + } + int indent = EditorGUI.indentLevel; + EditorGUI.indentLevel = indent + 1; + + property.isExpanded = EditorGUI.Foldout( + new Rect(position.x, + position.y, + position.width, + EditorGUIUtility.singleLineHeight), + property.isExpanded, + labelString); + + if (property.isExpanded) + { + float yCoordinate = position.y; + + EditorGUI.indentLevel = indent + 1; + + yCoordinate += fieldHeight + fieldMarginHeight; + + Rect nameRect = new Rect(position.x, + yCoordinate, + position.width - 75, + fieldHeight); + Rect colorRect = new Rect(position.x + position.width - 70, + yCoordinate, + 70, + fieldHeight); + + yCoordinate += fieldHeight + fieldMarginHeight; + Rect positionRect = new Rect(position.x, + yCoordinate, + position.width - 115, + fieldHeight); + Rect positionModeRect = new Rect(position.x + position.width - 110, + yCoordinate, + 110, + fieldHeight); + + yCoordinate += fieldHeight + fieldMarginHeight; + Rect directionRect = new Rect(position.x, + yCoordinate, + position.width, + fieldHeight); + + yCoordinate += fieldHeight + fieldMarginHeight; + Rect eventRect = new Rect(position.x, + yCoordinate, + position.width, + position.height - 70); + eventRect = EditorGUI.IndentedRect(eventRect); + + EditorGUI.PropertyField(nameRect, nameProperty); + EditorGUI.PropertyField(colorRect, colorProperty, GUIContent.none); + EditorGUI.PropertyField(eventRect, eventProperty, GUIContent.none); + EditorGUI.PropertyField(positionRect, positionProperty); + EditorGUI.PropertyField(positionModeRect, positionModeProperty, GUIContent.none); + EditorGUI.PropertyField(directionRect, triggeringDirectionsProperty); + + } + EditorGUI.indentLevel = indent; + + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/OnPositionReachedSettingsDrawer.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/OnPositionReachedSettingsDrawer.cs.meta new file mode 100644 index 00000000..2dc3ae55 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/OnPositionReachedSettingsDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85be52f98941fdb4a95eec748bb89ba7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/PathControllerEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/PathControllerEditor.cs new file mode 100644 index 00000000..1854bd32 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/PathControllerEditor.cs @@ -0,0 +1,19 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Controllers; + +namespace FluffyUnderware.CurvyEditor.Controllers +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(PathController), true)] + public class PathControllerEditor : CurvyControllerEditor + { + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/PathControllerEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/PathControllerEditor.cs.meta new file mode 100644 index 00000000..ea82c328 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/PathControllerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 709467389ecf3f446bda424d4e6fc7a7 +timeCreated: 1433401395 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/SplineControllerEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/SplineControllerEditor.cs new file mode 100644 index 00000000..359b4405 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/SplineControllerEditor.cs @@ -0,0 +1,142 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using System.Collections; +using FluffyUnderware.Curvy; +using FluffyUnderware.CurvyEditor; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor.Controllers +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(SplineController), true)] + public class SplineControllerEditor : CurvyControllerEditor + { + protected override void SetupArrayEx(DTFieldNode node, ArrayExAttribute attribute) + { + base.SetupArrayEx(node, attribute); + + float ArrayExElementHeightCallback(int index) + { + if (index >= node.serializedProperty.arraySize) + // this case happens due to this regression: https://issuetracker.unity3d.com/issues/reorderablelist-dot-elementheightcallback-is-invoked-when-list-has-no-element + return 0; + + return OnPositionReachedSettingsDrawer.GetPropertyHeight( + node.serializedProperty.GetArrayElementAtIndex(index), + ((SplineController)target).OnPositionReachedList[index]); + } + + node.ArrayEx.elementHeightCallback = ArrayExElementHeightCallback; + } + + protected override void OnSceneGUI() + { + base.OnSceneGUI(); + + CurvySpline spline; + + if (Target != null && (spline = Target.Spline) != null) + { + for (int index = 0; index < Target.OnPositionReachedList.Count; index++) + { + OnPositionReachedSettings settings = Target.OnPositionReachedList[index]; + DTHandles.PushHandlesColor(settings.GizmoColor); + + Vector3 position; + { + switch (settings.PositionMode) + { + case CurvyPositionMode.Relative: + position = spline.Interpolate(settings.Position, Space.World); + break; + case CurvyPositionMode.WorldUnits: + position = spline.InterpolateByDistance(settings.Position, Space.World); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + EditorGUI.BeginChangeCheck(); + + float handleSize = HandleUtility.GetHandleSize(position) * .2f; + var fmh_74_25_638805820951067415 = Quaternion.identity; Vector3 newPosition = Handles.FreeMoveHandle(position, + handleSize, + Vector3.one * 0.5f, //couldn't figure out what value to put here. I put the same value as the example in the documentation + Handles.SphereHandleCap); + + if (EditorGUI.EndChangeCheck()) + { + Undo.RecordObject(Target, "Modify Custom Event Position"); + float nearestTf = spline.GetNearestPointTF(newPosition, Space.World); + switch (settings.PositionMode) + { + case CurvyPositionMode.Relative: + settings.Position = nearestTf; + break; + case CurvyPositionMode.WorldUnits: + settings.Position = spline.TFToDistance(nearestTf); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + //draw label + { + Color textColor = new Color( + settings.GizmoColor.r * 0.2f, + settings.GizmoColor.g * 0.2f, + settings.GizmoColor.b * 0.2f, + 1); + + GUIStyle guiStyle = CurvyStyles.ControllerCustomEventStyle; + lock (guiStyle) + { + guiStyle.normal.textColor = textColor; + + //inlined version of CurvyGizmo.PointLabel(newPosition, settings.Name, OrientationAxisEnum.Up, handleSize * 4, guiStyle); + //I did the inline because CurvyGizmo.PointLabel has an issue with 2021.2, and I have a hack in that method to avoid the issue. The problem is the hack is counter-productive when the method is called from a OnSceneGUI method + Vector3 labelPosition = newPosition; + string label = settings.Name; + + //ugly shit to bypass the joke that is style.alignment. Tried to bypass the issue by using style.CalcSize(new GUIContent(label)) to manually place the labels. No luck with that + while (label.Length <= 5) + label = $" {label} "; + + labelPosition -= Camera.current.transform.right * (handleSize * 4) * 0.1f; + labelPosition += Camera.current.transform.up * (handleSize * 4) * 0.1f; + labelPosition += Camera.current.transform.up * (handleSize * 4) * 0.3f; + + Handles.Label(labelPosition, label, guiStyle); + } + } + + //direction handles + { + //optim if needed + float tf = settings.PositionMode == CurvyPositionMode.Relative ? settings.Position : spline.DistanceToTF(settings.Position); + Vector3 forward = spline.GetTangent(tf, Space.World); + Vector3 backward = -spline.GetTangent(tf * (1f - 0.001f), Space.World); //todo not the best way to compute the backward tangent, but it is a decent one for now. Enhance this if needed once you rework tangents computing code + + if (settings.TriggeringDirections != TriggeringDirections.Backward) + DTHandles.ArrowCap(newPosition, forward, Camera.current.transform.forward, settings.GizmoColor, .7f, .1f, .3f, .4f, handleSize * 2); + if (settings.TriggeringDirections != TriggeringDirections.Forward) + DTHandles.ArrowCap(newPosition, backward, Camera.current.transform.forward, settings.GizmoColor, .7f, .1f, .3f, .4f, handleSize * 2); + } + DTHandles.PopHandlesColor(); + } + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/SplineControllerEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/SplineControllerEditor.cs.meta new file mode 100644 index 00000000..bd9f04d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/SplineControllerEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3d05319f569b3242a40cd95655a6a80 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/VolumeControllerEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/VolumeControllerEditor.cs new file mode 100644 index 00000000..6cb11a7a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/VolumeControllerEditor.cs @@ -0,0 +1,19 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Controllers; + +namespace FluffyUnderware.CurvyEditor.Controllers +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(VolumeController), true)] + public class VolumeControllerEditor : CurvyControllerEditor + { + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/VolumeControllerEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/VolumeControllerEditor.cs.meta new file mode 100644 index 00000000..97fb6116 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Controllers/VolumeControllerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c857adf1af41cc34896f8a078cd9ea11 +timeCreated: 1433508165 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyConnectionEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyConnectionEditor.cs new file mode 100644 index 00000000..d01164d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyConnectionEditor.cs @@ -0,0 +1,417 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevToolsEditor; +using UnityEditor; +using UnityEngine; +using UnityEngine.Assertions; + +namespace FluffyUnderware.CurvyEditor +{ + [CustomEditor(typeof(CurvyConnection))] + public class CurvyConnectionEditor : CurvyEditorBase + { + /// + /// the gui style used in drawing the gizmo's label + /// + private GUIStyle sceneGuiLabelStyle; + /// + /// Used in the inspector, to avoid the margins added by Unity when subdivising a space + /// + private GUIStyle noMarginsStyle; + + private GUIStyle highlightedItemStyle; + + GUIContent selectCpContent; + GUIContent removeFromConnectionContent; + GUIContent controlPointTitleContent; + GUIContent syncPositionTitleContent; + GUIContent syncPositionContent; + GUIContent syncRotationTitleContent; + GUIContent syncRotationContent; + GUIContent noSyncPresetContent; + GUIContent positionSyncPresetContent; + GUIContent rotationSyncPresetContent; + GUIContent fullSyncPresetContent; + + private GUIContent splineTitleContent; + private GUIContent endControlPointTitleContent; + private GUIContent followUpTitleContent; + private GUIContent headingDirectionTitleContent; + + GUIContent splineStartDirectionContent; + GUIContent emptyContent; + GUIContent noDirectionContent; + GUIContent splineEndDirectionContent; + GUIContent automaticDirectionContent; + GUIContent directionUnavailableContent; + + [DrawGizmo(GizmoType.Active | GizmoType.NonSelected | GizmoType.InSelectionHierarchy)] + private static void ConnectionGizmoDrawer(CurvyConnection connection, GizmoType context) + { + if (CurvyGlobalManager.ShowConnectionsGizmo) + { + Gizmos.color = connection.GetGizmoColor(); + + foreach (CurvySplineSegment cp in connection.ControlPointsList) + { + if (cp.Spline.ShowGizmos) + { + //optim avoid drawing gizmo multiple times if cps have the same positin + Vector3 position = cp.transform.position; + float handleSize = HandleUtility.GetHandleSize(position); + Gizmos.DrawWireSphere(position, handleSize * CurvyGlobalManager.GizmoControlPointSize * 1.1f); + } + } + } + } + + + protected override void OnEnable() + { + base.OnEnable(); + sceneGuiLabelStyle = new GUIStyle(); + noMarginsStyle = new GUIStyle(); + noMarginsStyle.margin = new RectOffset(); + highlightedItemStyle = new GUIStyle(); + highlightedItemStyle.normal.background = new Texture2D(1, 1); + highlightedItemStyle.normal.background.SetPixel(0, 0, new Color(62 / 255f, 125 / 255f, 231 / 255f)); + highlightedItemStyle.normal.background.Apply(); + + selectCpContent = new GUIContent("Select", "Select the Control Point"); + removeFromConnectionContent = new GUIContent(CurvyStyles.DeleteSmallTexture, "Remove the Control Point from this Connection"); + controlPointTitleContent = new GUIContent("Control Point", "The name of the Control Point. You can select it or remove it from the connection"); + syncPositionTitleContent = new GUIContent("Sync Position", "Synchronize the Control Point's position with the connection's"); + syncPositionContent = new GUIContent("", "Synchronize the Control Point's position with the connection's"); + syncRotationTitleContent = new GUIContent("Sync Rotation", "Synchronize the Control Point's rotation with the connection's"); + syncRotationContent = new GUIContent("", "Synchronize the Control Point's rotation with the connection's"); + noSyncPresetContent = new GUIContent(CurvyStyles.TexConnection, "No synchronization"); + positionSyncPresetContent = new GUIContent(CurvyStyles.TexConnectionPos, "Position only"); + rotationSyncPresetContent = new GUIContent(CurvyStyles.TexConnectionRot, "Rotation only"); + fullSyncPresetContent = new GUIContent(CurvyStyles.TexConnectionFull, "Position and rotation"); + + splineTitleContent = new GUIContent("Spline", "The open spline for which the Follow-Up will be defined"); + endControlPointTitleContent = new GUIContent("Control Point", "The spline's end that will have a Follow-Up, either its first or last visible Control Point"); + followUpTitleContent = new GUIContent("Follow-Up", "The Control Point that will act as the continuity of the spline's end"); + headingDirectionTitleContent = new GUIContent("Heading Direction", "In which direction the Follow-Up should continue on"); + + splineStartDirectionContent = new GUIContent("To spline's start", "The Follow-Up segment continues towards its spline's start"); + emptyContent = new GUIContent(""); + noDirectionContent = new GUIContent("Nowhere", "There is no continuity for the Follow-Up"); + splineEndDirectionContent = new GUIContent("To spline's end", "The Follow-Up segment continues towards its spline's end"); + automaticDirectionContent = new GUIContent("Automatic", "Automatically selects the best option"); + directionUnavailableContent = new GUIContent("---", "Select a Follow-Up first"); + } + + public new void OnSceneGUI() + { + if (SceneView.currentDrawingSceneView.camera && Target) + { + int cpsCount = Target.ControlPointsList.Count; + if (cpsCount > 0) + { + sceneGuiLabelStyle.normal.textColor = Target.GetGizmoColor(); + + int syncedCPsCount = 0; + for (int i = 0; i < cpsCount; i++) + { + CurvySplineSegment controlPoint = Target.ControlPointsList[i]; + + int lineIndex; + if (controlPoint.ConnectionSyncPosition) + { + lineIndex = syncedCPsCount; + syncedCPsCount++; + } + else + lineIndex = 0; + + Handles.Label(DTHandles.TranslateByPixel(controlPoint.transform.position, 12, -12 * (1 + lineIndex)), controlPoint.ToString(), sceneGuiLabelStyle); + } + } + } + } + + protected override void OnReadNodes() + { + //If ControlPointsGui is no more called first, make sure the undoing code in it is moved to the right place + Node.AddSection("Control Point Options", ControlPointsGui); + Node.AddSection("Follow-Up", FollowUpGui); + Node.AddSection("Connection Options", ConnectionGui); + } + + private static float GetNodeWidth(DTInspectorNode node) + { + return EditorGUIUtility.currentViewWidth - 2 * node.Level * 15 /*value of EditorGUI.indent*/; + } + + void ControlPointsGui(DTInspectorNode node) + { + const string undoingOperationLabel = "Connection Modification"; + Undo.RecordObject(Target, undoingOperationLabel); + Undo.RecordObjects(Target.ControlPointsList.Select(o => (UnityEngine.Object)o).ToArray(), undoingOperationLabel); + Undo.RecordObjects(Target.ControlPointsList.Select(o => (UnityEngine.Object)o.transform).ToArray(), undoingOperationLabel); + + float drawingWidth = GetNodeWidth(node); + float column1Width = drawingWidth * 16 / 32; + float column2Width = drawingWidth * 8 / 32; + float column3Width = drawingWidth * 8 / 32; + + //header + { + EditorGUILayout.BeginHorizontal(); + PositionGuiElements(() => GUILayout.Label(controlPointTitleContent, EditorStyles.boldLabel), column1Width, false); + PositionGuiElements(() => GUILayout.Label(syncPositionTitleContent, EditorStyles.boldLabel), column2Width); + PositionGuiElements(() => GUILayout.Label(syncRotationTitleContent, EditorStyles.boldLabel), column3Width); + EditorGUILayout.EndHorizontal(); + } + + //Items + for (int index = 0; index < Target.ControlPointsList.Count; index++) + { + CurvySplineSegment item = Target.ControlPointsList[index]; + + bool itemIsSelected = item.gameObject == Selection.activeGameObject; + EditorGUILayout.BeginHorizontal(itemIsSelected + ? highlightedItemStyle + : GUIStyle.none); + + { + PositionGuiElements(() => + { + bool clicked = GUILayout.Button(item.ToString(), itemIsSelected + ? EditorStyles.whiteLabel + : EditorStyles.label, GUILayout.MinWidth(column1Width * 0.6f)); + + if (GUILayout.Button(selectCpContent, GUILayout.MinWidth(50))) + clicked = true; + + if (clicked) + DTSelection.SetGameObjects(item); + + if (GUILayout.Button(removeFromConnectionContent, CurvyStyles.ImageButton, GUILayout.MinWidth(20), GUILayout.MinHeight(18))) + { + item.Disconnect(); + CurvyProject.Instance.ScanConnections(); + GUIUtility.ExitGUI(); + } + }, column1Width, false); + } + + { + PositionGuiElements(() => + { + bool oldValue = item.ConnectionSyncPosition; + item.ConnectionSyncPosition = GUILayout.Toggle(oldValue, syncPositionContent); + if (item.ConnectionSyncPosition != oldValue) + item.Connection.SetSynchronisationPositionAndRotation(item.Connection.transform.position, item.Connection.transform.rotation); + }, column2Width); + PositionGuiElements(() => + { + bool oldValue = item.ConnectionSyncRotation; + item.ConnectionSyncRotation = GUILayout.Toggle(oldValue, syncRotationContent); + if (item.ConnectionSyncRotation != oldValue) + item.Connection.SetSynchronisationPositionAndRotation(item.Connection.transform.position, item.Connection.transform.rotation); + }, column3Width); + } + + EditorGUILayout.EndHorizontal(); + } + + //Presets + { + EditorGUILayout.BeginHorizontal(); + GUILayout.Label("Synchronization Presets", EditorStyles.boldLabel); + EditorGUILayout.EndHorizontal(); + + + EditorGUILayout.BeginHorizontal(GUILayout.Width(drawingWidth)); + bool syncPosition = false; + bool syncRotation = false; + bool buttonClicked = false; + if (GUILayout.Button(noSyncPresetContent)) + { + syncPosition = false; + syncRotation = false; + buttonClicked = true; + } + + if (GUILayout.Button(positionSyncPresetContent)) + { + syncPosition = true; + syncRotation = false; + buttonClicked = true; + } + + if (GUILayout.Button(rotationSyncPresetContent)) + { + syncPosition = false; + syncRotation = true; + buttonClicked = true; + } + + if (GUILayout.Button(fullSyncPresetContent)) + { + syncPosition = true; + syncRotation = true; + buttonClicked = true; + } + + if (buttonClicked && Target.ControlPointsList.Any()) + { + foreach (CurvySplineSegment controlPoint in Target.ControlPointsList) + { + controlPoint.ConnectionSyncPosition = syncPosition; + controlPoint.ConnectionSyncRotation = syncRotation; + } + + Target.SetSynchronisationPositionAndRotation(Target.transform.position, Target.transform.rotation); + Target.AutoSetFollowUp(); + } + + EditorGUILayout.EndHorizontal(); + } + } + + private void PositionGuiElements(Action guiElementsDrawer, float elementsTotalWidth, bool spaceBefore = true, bool spaceAfter = true) + { + EditorGUILayout.BeginHorizontal(noMarginsStyle, GUILayout.Width(elementsTotalWidth)); + if (spaceBefore) + GUILayout.FlexibleSpace(); + guiElementsDrawer(); + if (spaceAfter) + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + } + + void FollowUpGui(DTInspectorNode node) + { + float drawingWidth = GetNodeWidth(node); + float column1Width = drawingWidth * 2 / 10; + float column2Width = drawingWidth * 2 / 10; + float column3Width = drawingWidth * 3 / 10; + float column4Width = drawingWidth * 3 / 10; + + bool hasCpWhichCanHaveFollowUp = Target.ControlPointsList.Any(item => item.Spline && item.Spline.CanControlPointHaveFollowUp(item)); + + if (hasCpWhichCanHaveFollowUp) + { + //header + { + EditorGUILayout.BeginHorizontal(); + PositionGuiElements(() => GUILayout.Label(splineTitleContent, EditorStyles.boldLabel, GUILayout.MaxWidth(column1Width)), column1Width); + PositionGuiElements(() => GUILayout.Label(endControlPointTitleContent, EditorStyles.boldLabel, GUILayout.MaxWidth(column2Width)), column2Width); + PositionGuiElements(() => GUILayout.Label(followUpTitleContent, EditorStyles.boldLabel), column3Width); + PositionGuiElements(() => GUILayout.Label(headingDirectionTitleContent, EditorStyles.boldLabel), column4Width); + EditorGUILayout.EndHorizontal(); + } + + for (int index = 0; index < Target.ControlPointsList.Count; index++) + { + CurvySplineSegment item = Target.ControlPointsList[index]; + if (item.Spline && item.Spline.CanControlPointHaveFollowUp(item)) + { + EditorGUILayout.BeginHorizontal(); + + PositionGuiElements(() => + GUILayout.Label(item.Spline.name, GUILayout.MaxWidth(column1Width)), column1Width); + PositionGuiElements(() => + GUILayout.Label(String.Format("{0} ({1})", item.name, item.IsLastControlPoint + ? "Last CP" + : "First CP"), GUILayout.MaxWidth(column2Width)), column2Width); + PositionGuiElements(() => + { + List possibleTargets = (from cp in Target.ControlPointsList where cp != item select cp).ToList(); + int popUpIndex; + { + if (item.FollowUp == null) + popUpIndex = 0; + else + { + int followUpIndex = possibleTargets.IndexOf(item.FollowUp); +#if CURVY_SANITY_CHECKS + Assert.IsTrue(followUpIndex != -1); +#endif + popUpIndex = followUpIndex + 1; + } + } + + List popUpContent; + { + popUpContent = (from cp in possibleTargets select cp.ToString()).ToList(); + popUpContent.Insert(0, "No Follow-Up"); + } + + EditorGUI.BeginChangeCheck(); + + popUpIndex = EditorGUILayout.Popup(popUpIndex, popUpContent.ToArray(), GUILayout.MaxWidth(column3Width)); + + if (EditorGUI.EndChangeCheck()) + { + item.SetFollowUp(popUpIndex == 0 + ? null + : possibleTargets[popUpIndex - 1]); + } + }, column3Width); + + PositionGuiElements(() => + { + CurvySplineSegment itemFollowUp = item.FollowUp; + if (itemFollowUp) + { + int popUpIndex = (int)item.FollowUpHeading + 1; +#if CURVY_SANITY_CHECKS + Assert.IsTrue((int)ConnectionHeadingEnum.Minus == -1); + Assert.IsTrue((int)ConnectionHeadingEnum.Sharp == 0); + Assert.IsTrue((int)ConnectionHeadingEnum.Plus == 1); + Assert.IsTrue((int)ConnectionHeadingEnum.Auto == 2); +#endif + + GUIContent[] popUpContent = + { + CurvySplineSegment.CanFollowUpHeadToStart(itemFollowUp) + ? splineStartDirectionContent + : emptyContent, + noDirectionContent, + CurvySplineSegment.CanFollowUpHeadToEnd(itemFollowUp) + ? splineEndDirectionContent + : emptyContent, + automaticDirectionContent + }; + EditorGUI.BeginChangeCheck(); + popUpIndex = EditorGUILayout.Popup(popUpIndex, popUpContent.ToArray(), GUILayout.MaxWidth(column4Width)); + if (EditorGUI.EndChangeCheck()) + item.FollowUpHeading = (ConnectionHeadingEnum)(popUpIndex - 1); + } + else + GUILayout.Label(directionUnavailableContent); + }, column4Width); + + EditorGUILayout.EndHorizontal(); + } + } + } + else + GUILayout.Label("You should connect the first or last Control Point of an open spline to be able to setup Follow-Ups"); + } + + void ConnectionGui(DTInspectorNode node) + { + float drawingWidth = GetNodeWidth(node); + + if (GUILayout.Button("Delete Connection", GUILayout.Width(drawingWidth))) + { + Target.Delete(); + GUIUtility.ExitGUI(); + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyConnectionEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyConnectionEditor.cs.meta new file mode 100644 index 00000000..250994bf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyConnectionEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 512f7156b64ad1843b880b394f7bd408 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorBase.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorBase.cs new file mode 100644 index 00000000..d970b11d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorBase.cs @@ -0,0 +1,21 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy; +using System.Collections.Generic; + + +namespace FluffyUnderware.CurvyEditor +{ + public class CurvyEditorBase : DTEditor where T:MonoBehaviour + { + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorBase.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorBase.cs.meta new file mode 100644 index 00000000..513f35f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e36bb3df4d2e75438de2de819b17da8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorUtility.cs new file mode 100644 index 00000000..5275453a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorUtility.cs @@ -0,0 +1,227 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using System.IO; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; +using JetBrains.Annotations; +using Application = UnityEngine.Application; + +namespace FluffyUnderware.CurvyEditor +{ + + public static class CurvyEditorUtility + { + public static void SendBugReport() + { + string par = string.Format("@Operating System@={0}&@Unity Version@={1}&@Curvy Version@={2}", SystemInfo.operatingSystem, Application.unityVersion, CurvySpline.VERSION); + Application.OpenURL(CurvySpline.WEBROOT + "bugreport?" + par.Replace(" ", "%20")); + } + + public static void GenerateAssemblyDefinitions() + { + string curvyRootPath = GetCurvyRootPath(); + if (String.IsNullOrEmpty(curvyRootPath)) + { + DTLog.LogError("[Curvy] Assembly Definitions generation aborted, couldn't locate the installation folder"); + } + else + { + string curvyRootPathAbsolute = Application.dataPath + "/" + curvyRootPath; + DirectoryInfo parentInfo = Directory.GetParent(curvyRootPathAbsolute).Parent; + string assetsParentDirectory = parentInfo.FullName; + string toolbuddyDirectory = parentInfo.Parent.FullName; + + GenerateAssemblyDefinition($"{assetsParentDirectory}/Arrays Pooling/ToolBuddy.ArraysPooling.asmdef", + "{\n\t\"name\":\"ToolBuddy.ArraysPooling\"\n}"); + + GenerateAssemblyDefinition($"{toolbuddyDirectory}/Dependencies/Vector Graphics/ToolBuddy.Dependencies.VectorGraphics.asmdef", + "{\n\t\"name\":\"ToolBuddy.Dependencies.VectorGraphics\"\n}"); + + GenerateAssemblyDefinition($"{toolbuddyDirectory}/Dependencies/DevTools/FluffyUnderware.DevTools.asmdef", + "{\n\t\"name\":\"FluffyUnderware.DevTools\"\n}"); + + GenerateAssemblyDefinition($"{toolbuddyDirectory}/Dependencies/LibTessDotNet/LibTessDotNet.asmdef", + "{\n\t\"name\":\"LibTessDotNet\",\n\"references\":[\n\"ToolBuddy.ArraysPooling\"\n],\n\"includePlatforms\":[],\n\"excludePlatforms\":[]\n}"); + + GenerateAssemblyDefinition($"{toolbuddyDirectory}/Dependencies/DevTools/Editor/FlufyUnderware.DevTools.Editor.asmdef", + "{\n\"name\":\"FluffyUnderware.DevTools.Editor\",\n\"references\":[\n\"ToolBuddy.ArraysPooling\",\n\"FluffyUnderware.DevTools\"\n],\n\"includePlatforms\":[\n\"Editor\"\n],\n\"excludePlatforms\":[]\n}"); + + GenerateAssemblyDefinition($"{assetsParentDirectory}/Curvy/ToolBuddy.Curvy.asmdef", + "{\n\"name\":\"ToolBuddy.Curvy\",\n\"references\":[\n\"ToolBuddy.ArraysPooling\",\n\"ToolBuddy.Dependencies.VectorGraphics\",\n\"FluffyUnderware.DevTools\",\n\"LibTessDotNet\"\n],\n\"includePlatforms\":[],\n\"excludePlatforms\":[]\n}"); + + GenerateAssemblyDefinition($"{assetsParentDirectory}/Curvy/Editor/ToolBuddy.Curvy.Editor.asmdef", + "{\n\"name\":\"ToolBuddy.Curvy.Editor\",\n\"references\":[\n\"ToolBuddy.ArraysPooling\",\n\"ToolBuddy.Curvy\",\n\"FluffyUnderware.DevTools\",\n\"FluffyUnderware.DevTools.Editor\",\n\"LibTessDotNet\"\n],\n\"includePlatforms\":[\n\"Editor\"\n],\n\"excludePlatforms\":[]\n}"); + + GenerateAssemblyDefinition($"{assetsParentDirectory}/Curvy Examples/ToolBuddy.Curvy.Examples.asmdef", + "{\n\"name\":\"ToolBuddy.Curvy.Examples\",\n\"references\":[\n\"ToolBuddy.ArraysPooling\",\n\"FluffyUnderware.DevTools\",\n\"ToolBuddy.Curvy\"\n],\n\"includePlatforms\":[],\n\"excludePlatforms\":[]\n}"); + + GenerateAssemblyDefinition($"{assetsParentDirectory}/Curvy Examples/Editor/ToolBuddy.Curvy.Examples.Editor.asmdef", + "{\n\"name\":\"ToolBuddy.Curvy.Examples.Editor\",\n\"references\":[\n\"ToolBuddy.ArraysPooling\",\n\"FluffyUnderware.DevTools\",\n\"FluffyUnderware.DevTools.Editor\",\n\"ToolBuddy.Curvy\",\n\"ToolBuddy.Curvy.Editor\",\n\"ToolBuddy.Curvy.Examples\"\n],\n\"includePlatforms\":[\n\"Editor\"\n],\n\"excludePlatforms\":[]\n}"); + + AssetDatabase.Refresh(); + } + } + + private static void GenerateAssemblyDefinition(string filePath, string fileContent) + { + DirectoryInfo directory = Directory.GetParent(filePath); + if (Directory.Exists(directory.FullName) == false) + EditorUtility.DisplayDialog("Missing directory", + String.Format("Could not find the directory '{0}', file generation will be skipped", directory.FullName), "Continue"); + else if (!File.Exists(filePath) || EditorUtility.DisplayDialog("Replace File?", String.Format("The file '{0}' already exists! Replace it?", filePath), "Yes", "No")) + using (StreamWriter streamWriter = File.CreateText(filePath)) + { + streamWriter.WriteLine(fileContent); + } + } + + + /// + /// Converts a path/file relative to Curvy's root path to the real path, e.g. "ReadMe.txt" gives "Curvy/ReadMe.txt" + /// + /// a path/file inside the Curvy package, WITHOUT the leading Curvy + /// the real path, relative to Assets + public static string GetPackagePath(string relativePath) + { + return GetCurvyRootPath() + relativePath.TrimStart('/', '\\'); + } + /// + /// Converts a path/file relative to Curvy's root path to the real absolute path + /// + /// a path/file inside the Curvy package, WITHOUT the leading Curvy + /// the absolute system path + public static string GetPackagePathAbsolute(string relativePath) + { + return Application.dataPath + "/" + GetPackagePath(relativePath); + } + + /// + /// Gets the Curvy folder relative path, e.g. "Plugins/Curvy/" by default + /// + /// + public static string GetCurvyRootPath() + { + // Quick check for the regular path + if (File.Exists(Application.dataPath + "/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline.cs")) + return "Plugins/ToolBuddy/Assets/Curvy/"; + + + // Still no luck? Do a project search + string[] guid = AssetDatabase.FindAssets("curvyspline_private"); //FindAssets("curvyspline") returns also files other than CurvySpline.cs + if (guid.Length == 0) + { + DTLog.LogError("[Curvy] Unable to locate CurvySpline_private.cs in the project! Is the Curvy package fully imported?"); + return null; + } + else + return AssetDatabase.GUIDToAssetPath(guid[0]).TrimStart("Assets/").TrimEnd("Scripts/Splines/CurvySpline_private.cs"); + } + + /// + /// Gets the Curvy folder absolute path, i.e. Application.dataPath+"/"+CurvyEditorUtility.GetCurvyRootPath() + /// + /// + public static string GetCurvyRootPathAbsolute() + { + return Application.dataPath + "/" + GetCurvyRootPath(); + } + } + + public static class CurvyGizmo + { + /// + /// Displays a label next to a point. The relative position of the label compared to the point is defined by + /// +#if CURVY_SANITY_CHECKS_PRIVATE + [Obsolete("Do not call this method from a method not having the DrawGizmo attribute until the issue with Unity 2021.2 is fixed")] +#endif + public static void PointLabel(Vector3 pointPosition, String label, OrientationAxisEnum direction, float? handleSize = null, [CanBeNull] GUIStyle style = null) + { +#if UNITY_2021_2_0 || UNITY_2021_2_1 || UNITY_2021_2_2 || UNITY_2021_2_3 || UNITY_2021_2_4 || UNITY_2021_2_5 || UNITY_2021_2_6 || UNITY_2021_2_7 || UNITY_2021_2_8 || UNITY_2021_2_9 || UNITY_2021_2_10 || UNITY_2021_2_11 + //workaround to this issue: https://issuetracker.unity3d.com/issues/handles-dot-label-does-not-appear-in-the-supposed-place + //the issue seems to not happen when this method is called from a OnGui method. + pointPosition = DTHandles.TranslateByPixel(pointPosition, -53, 23); +#endif + //ugly shit to bypass the joke that is style.alignment. Tried to bypass the issue by using style.CalcSize(new GUIContent(label)) to manually place the labels. No luck with that + while (label.Length <= 5) + label = $" {label} "; + + if (handleSize.HasValue == false) + handleSize = HandleUtility.GetHandleSize(pointPosition); + + style = style ?? CurvyStyles.GizmoText; + + pointPosition -= Camera.current.transform.right * handleSize.Value * 0.1f; + pointPosition += Camera.current.transform.up * handleSize.Value * 0.1f; + Vector3 labelPosition; + switch (direction) + { + case OrientationAxisEnum.Up: + //style.alignment = TextAnchor.LowerCenter; + labelPosition = pointPosition; + labelPosition += Camera.current.transform.up * handleSize.Value * 0.3f; + break; + case OrientationAxisEnum.Down: + //style.alignment = TextAnchor.UpperCenter; + labelPosition = pointPosition; + labelPosition -= Camera.current.transform.up * handleSize.Value * 0.3f; + break; + case OrientationAxisEnum.Right: + //style.alignment = TextAnchor.MiddleLeft; + labelPosition = pointPosition; + labelPosition += Camera.current.transform.right * handleSize.Value * 0.4f; + break; + case OrientationAxisEnum.Left: + //style.alignment = TextAnchor.MiddleRight; + labelPosition = pointPosition; + labelPosition -= Camera.current.transform.right * handleSize.Value * 0.45f; + break; + case OrientationAxisEnum.Forward: + case OrientationAxisEnum.Backward: + //style.alignment = TextAnchor.MiddleCenter; + labelPosition = pointPosition; + break; + default: + throw new ArgumentOutOfRangeException(nameof(direction), direction, null); + } + + Handles.Label(labelPosition, label, style); + } + } + public static class CurvyGUI + { + + #region ### GUI Controls ### + + public static bool Foldout(ref bool state, string text) { return Foldout(ref state, new GUIContent(text), null); } + public static bool Foldout(ref bool state, string text, string helpURL) { return Foldout(ref state, new GUIContent(text), helpURL); } + + public static bool Foldout(ref bool state, GUIContent content, string helpURL, bool hierarchyMode = true) + { + Rect controlRect = GUILayoutUtility.GetRect(content, CurvyStyles.Foldout); + bool isInsideInspector = DTInspectorNode.IsInsideInspector; + int xOffset = isInsideInspector ? 12 : -2; + controlRect.x -= xOffset; + controlRect.width += (isInsideInspector ? 0 : 1); + + int indentLevel = DTInspectorNodeDefaultRenderer.RenderHeader(controlRect, xOffset, helpURL, content, ref state); + + EditorGUI.indentLevel = indentLevel; + + return state; + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorUtility.cs.meta new file mode 100644 index 00000000..3ce75337 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyEditorUtility.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0352d3a03998f41468aeff206517dd0e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyMenu.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyMenu.cs new file mode 100644 index 00000000..f5a630f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyMenu.cs @@ -0,0 +1,192 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Components; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.CurvyEditor.Generator; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.Curvy.Shapes; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor +{ + + public static class CurvyMenu + { + #region ### Tools Menu ### + #endregion + + #region ### GameObject Menu ### + + [MenuItem("GameObject/Curvy/Spline", false, 0)] + public static void CreateCurvySpline(MenuCommand cmd) + { + CurvySpline spline = Create(cmd); + ApplyIncrementalNameToSpline(spline); + } + + [MenuItem("GameObject/Curvy/UI Spline", false, 1)] + public static void CreateCurvyUISpline(MenuCommand cmd) + { + GameObject parent = cmd.context as GameObject; + if (!parent || parent.GetComponentInParent() == null) + { + Canvas cv = GameObject.FindObjectOfType(); + if (cv) + parent = cv.gameObject; + else + parent = new GameObject("Canvas", typeof(Canvas)); + } + + GameObject[] selectedGameObjects = Selection.gameObjects; + if (selectedGameObjects.Length > 0 && cmd.context == selectedGameObjects[0]) + Selection.activeObject = null; + + CurvyUISpline uiSpline; + { + const string gameObjectName = "UI Spline"; + uiSpline = CurvyUISpline.CreateUISpline(gameObjectName); + GameObjectUtility.SetParentAndAlign(uiSpline.gameObject, parent as GameObject); + Undo.RegisterCreatedObjectUndo(uiSpline.gameObject, "Create " + gameObjectName); + } + + DTSelection.AddGameObjects(uiSpline); + } + + [MenuItem("GameObject/Curvy/Generator", false, 5)] + public static void CreateCG(MenuCommand cmd) + { + CurvyGenerator generator = Create(cmd); + ApplyIncrementalNameToGenerator(generator); + + } + + [MenuItem("GameObject/Curvy/Controllers/Spline", false, 10)] + public static void CreateSplineController(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Controllers/CG Path", false, 12)] + public static void CreatePathController(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Controllers/CG Volume", false, 13)] + public static void CreateVolumeController(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Controllers/UI Text Spline", false, 14)] + public static void CreateUITextSplineController(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Converters/Spline To Line Renderer", false, 14)] + public static void CreateCurvyLineRenderer(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Converters/Spline To Edge Collider 2D", false, 14)] + public static void CreateCurvySplineToEdgeCollider2D(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Shapes/Circle", false, 14)] + public static void CreateCSCircle(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Shapes/Pie", false, 14)] + public static void CreateCSPie(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Shapes/Rectangle", false, 14)] + public static void CreateCSRectangle(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Shapes/Rounded Rectangle", false, 14)] + public static void CreateCSRoundedRectangle(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Shapes/Spiral", false, 14)] + public static void CreateCSSpiral(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Shapes/Star", false, 14)] + public static void CreateCSStar(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Misc/Nearest Spline Point", false, 14)] + public static void CreateNearestSplinePoint(MenuCommand cmd) => Create(cmd); + + [MenuItem("GameObject/Curvy/Misc/Curvy GL Renderer", false, 14)] + public static void CreateCurvyGLRenderer(MenuCommand cmd) => Create(cmd); + + + private static T Create(MenuCommand cmd) where T : MonoBehaviour + { + GameObject[] selectedGameObjects = Selection.gameObjects; + if (selectedGameObjects.Length > 0 && cmd.context == selectedGameObjects[0]) + Selection.activeObject = null; + T createdObject = CreateCurvyObjectAsChild(cmd.context, typeof(T).Name); + DTSelection.AddGameObjects(createdObject); + return createdObject; + } + + #endregion + + #region ### Project window Create Menu ### + + [MenuItem("Assets/Create/Curvy/CG Module")] + public static void CreatePCGModule() + { + ModuleWizard.Open(); + } + + [MenuItem("Assets/Create/Curvy/Shape")] + public static void CreateShape() + { + ShapeWizard.Open(); + } + + #endregion + + public static T CreateCurvyObject(Object parent, string name) where T : MonoBehaviour + { + GameObject go = parent as GameObject; + if (go == null) + { + go = new GameObject(name); + Undo.RegisterCreatedObjectUndo(go, "Create " + name); + } + + T obj = go.AddComponent(); + Undo.RegisterCreatedObjectUndo(obj, "Create " + name); + + return obj; + } + + public static T CreateCurvyObjectAsChild(Object parent, string name) where T : MonoBehaviour + { + GameObject go = new GameObject(name); + T obj = go.AddComponent(); + GameObjectUtility.SetParentAndAlign(go, parent as GameObject); + Undo.RegisterCreatedObjectUndo(go, "Create " + name); + + return obj; + } + + /// + /// Rename the given spline to "Curvy Spline number_of_existing_splines" + /// + public static void ApplyIncrementalNameToSpline(CurvySpline spline) + { + ApplyIncrementalName(spline, "Curvy Spline"); + } + + /// + /// Rename the given generator to "Curvy Generator number_of_existing_generators" + /// + public static void ApplyIncrementalNameToGenerator(CurvyGenerator generator) + { + ApplyIncrementalName(generator, "Curvy Generator"); + } + + /// + /// Rename the given component to " number_of_existing_components_of_type_T" + /// + public static void ApplyIncrementalName(T component, string baseName) where T : Component + { + component.name = $"{baseName} {Object.FindObjectsOfType().Length}"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyMenu.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyMenu.cs.meta new file mode 100644 index 00000000..7a0fdd86 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyMenu.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e881cd4f4b87e7646b55f627032e4ec0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPositionModeDrawer.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPositionModeDrawer.cs new file mode 100644 index 00000000..40719515 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPositionModeDrawer.cs @@ -0,0 +1,60 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using FluffyUnderware.Curvy; +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.CurvyEditor.Controllers +{ + [CustomPropertyDrawer(typeof(CurvyPositionMode))] + public class CurvyPositionModeDrawer : PropertyDrawer + { + private const string Relative = "Relative"; + private const string Absolute = "Absolute"; + + readonly GUIContent[] options = new[] + { + new GUIContent(Relative, + "Position is expressed as a fraction of a spline: 0 meaning the spline start, 1 meaning the spline end."), + new GUIContent(Absolute, + "Position is expressed as world units") + }; + readonly GUIStyle guiStyle = EditorStyles.popup; + + override public void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + property.intValue = EditorGUI.Popup(position, label, property.intValue, options, guiStyle); + EditorGUI.EndProperty(); + } + + /// + /// Gets the display name associated with a specific CurvyPositionMode value + /// + public static string GetDisplayName(CurvyPositionMode positionMode) + { + string displayName; + + switch (positionMode) + { + case CurvyPositionMode.Relative: + displayName = Relative; + break; + case CurvyPositionMode.WorldUnits: + displayName = Absolute; + break; + default: + throw new ArgumentOutOfRangeException(nameof(positionMode), positionMode, null); + } + + return displayName; + + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPositionModeDrawer.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPositionModeDrawer.cs.meta new file mode 100644 index 00000000..64e80c62 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPositionModeDrawer.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7c344282607d5504190915d0f7a2c163 +timeCreated: 1528149782 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyProject.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyProject.cs new file mode 100644 index 00000000..3117e85d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyProject.cs @@ -0,0 +1,586 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor; +using System.Collections.Generic; + +namespace FluffyUnderware.CurvyEditor +{ + public class CurvyProject : DTProject + { + public const string NAME = "Curvy"; + public const string RELPATH_SHAPEWIZARDSCRIPTS = "/Shapes"; + public const string RELPATH_CGMODULEWIZARDSCRIPTS = "/Generator Modules"; + public const string RELPATH_CGMODULEWIZARDEDITORSCRIPTS = "/Generator Modules/Editor"; + public const string RELPATH_CGTEMPLATES = "/Generator Templates"; + + public static CurvyProject Instance + { + get + { + return (CurvyProject)DT.Project(NAME); + } + } + + #region ### Persistent Settings ### + // DESIGN those settings are a mess: some are public fields, other properties of which the setter updates the editor preferences, and finally others ae part of CurvyGlobalManager (see CurvyProject.LoadPreferences to have a listing of them all). Shouldn't all of those settings be treated similarly? + + // Settings from Preferences window not stored in CurvyGlobalManager + + public bool SnapValuePrecision = true; + /// + /// If enabled and the spline has Restrict To 2D enabled, dots are shown instead of the default move handles + /// + public bool UseTiny2DHandles = false; + /// + /// Should the spline's text gizmos fade if the spline is too small on the screen + /// + public bool AutoFadeLabels = true; + public bool ShowGlobalToolbar = true; + public bool ShowHints = true; + public bool EnableMetrics = true; + public bool EnableAnnouncements = true; + + // Settings made in the toolbar or somewhere else + + bool mCGAutoModuleDetails = false; + public bool CGAutoModuleDetails + { + get { return mCGAutoModuleDetails; } + set + { + if (mCGAutoModuleDetails != value) + { + mCGAutoModuleDetails = value; + SetEditorPrefs("CGAutoModuleDetails", mCGAutoModuleDetails); + } + } + } + + bool mCGSynchronizeSelection = true; + public bool CGSynchronizeSelection + { + get { return mCGSynchronizeSelection; } + set + { + if (mCGSynchronizeSelection != value) + { + mCGSynchronizeSelection = value; + SetEditorPrefs("CGSynchronizeSelection", mCGSynchronizeSelection); + } + } + } + + bool mCGShowHelp = true; + public bool CGShowHelp + { + get { return mCGShowHelp; } + set + { + if (mCGShowHelp != value) + { + mCGShowHelp = value; + SetEditorPrefs("CGShowHelp", mCGShowHelp); + } + } + } + + int mCGGraphSnapping = 5; + /// + /// The size of the grid used for snapping when dragging a module in Curvy Generator Graph + /// + public int CGGraphSnapping + { + get { return mCGGraphSnapping; } + set + { + int v = Mathf.Max(1, value); + if (mCGGraphSnapping != v) + { + mCGGraphSnapping = v; + SetEditorPrefs("CGGraphSnapping", mCGGraphSnapping); + } + } + } + + string mCustomizationRootPath = "Packages/Curvy Customization"; + public string CustomizationRootPath + { + get + { + return mCustomizationRootPath; + } + set + { + if (mCustomizationRootPath != value) + { + mCustomizationRootPath = value; + SetEditorPrefs("CustomizationRootPath", mCustomizationRootPath); + } + } + } + + CurvyBezierModeEnum mBezierMode = CurvyBezierModeEnum.Direction | CurvyBezierModeEnum.Length; + public CurvyBezierModeEnum BezierMode + { + get { return mBezierMode; } + set + { + if (mBezierMode != value) + { + mBezierMode = value; + SetEditorPrefs("BezierMode", mBezierMode); + } + } + } + + CurvyAdvBezierModeEnum mAdvBezierMode = CurvyAdvBezierModeEnum.Direction | CurvyAdvBezierModeEnum.Length; + public CurvyAdvBezierModeEnum AdvBezierMode + { + get { return mAdvBezierMode; } + set + { + if (mAdvBezierMode != value) + { + mAdvBezierMode = value; + SetEditorPrefs("AdvBezierMode", mAdvBezierMode); + } + } + } + + bool mShowAboutOnLoad = true; + public bool ShowAboutOnLoad + { + get + { + return mShowAboutOnLoad; + } + set + { + if (mShowAboutOnLoad != value) + mShowAboutOnLoad = value; + SetEditorPrefs("ShowAboutOnLoad", mShowAboutOnLoad); + } + } + + #endregion + + + + + + static Vector2 scroll; + static bool[] foldouts = new bool[4] { true, true, true, true }; + + + + List mShowConIconObjects = new List(); + + + public CurvyProject() + : base(NAME, CurvySpline.VERSION) + { + Resource = CurvyResource.Instance; + Undo.undoRedoPerformed -= OnUndoRedo; + Undo.undoRedoPerformed += OnUndoRedo; + EditorApplication.update -= OnUpdate; + EditorApplication.update += OnUpdate; + EditorApplication.update += checkLaunch; +#if UNITY_2018_1_OR_NEWER + EditorApplication.hierarchyChanged -= ScanConnections; + EditorApplication.hierarchyChanged += ScanConnections; +#else + EditorApplication.hierarchyWindowChanged -= ScanConnections; + EditorApplication.hierarchyWindowChanged += ScanConnections; +#endif + EditorApplication.hierarchyWindowItemOnGUI -= OnHierarchyWindowItemOnGUI; + EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyWindowItemOnGUI; + ScanConnections(); + } + + /// + /// Rebuilds the list of GameObject that needs to show a connection icon in the hierarchy window + /// + /// Usually there is no need to call this manually + public void ScanConnections() + { + int old = mShowConIconObjects.Count; + mShowConIconObjects.Clear(); + + CurvyConnection[] o = GameObject.FindObjectsOfType(); + foreach (CurvyConnection con in o) + { + foreach (CurvySplineSegment cp in con.ControlPointsList) + { + if (cp != null && cp.gameObject != null) + // see comment in CurvyConnection.DoUpdate to know more about when cp.gameObject can be null + mShowConIconObjects.Add(cp.gameObject.GetInstanceID()); + } + } + + if (old != mShowConIconObjects.Count) + EditorApplication.RepaintHierarchyWindow(); + } + + void OnHierarchyWindowItemOnGUI(int instanceid, Rect selectionrect) + { + if (mShowConIconObjects.Contains(instanceid)) + { + GUI.DrawTexture(new Rect(selectionrect.xMax - 14, selectionrect.yMin + 4, 10, 10), CurvyStyles.HierarchyConnectionTexture); + } + } + + void checkLaunch() + { + EditorApplication.update -= checkLaunch; + if (ShowAboutOnLoad) + AboutWindow.Open(); + } + + void OnUpdate() + { + + // check if a deleted Curvy object defines a new object to select + if (EditorApplication.isPlayingOrWillChangePlaymode) + CurvySpline._newSelectionInstanceIDINTERNAL = 0; + + if (CurvySpline._newSelectionInstanceIDINTERNAL != 0) + { + Object o = EditorUtility.InstanceIDToObject(CurvySpline._newSelectionInstanceIDINTERNAL); + if (o != null && o is Component) + DTSelection.SetGameObjects((Component)o); + CurvySpline._newSelectionInstanceIDINTERNAL = 0; + } + } + + void OnUndoRedo() + { + List splines = DTSelection.GetAllAs(); + List cps = DTSelection.GetAllAs(); + foreach (CurvySplineSegment cp in cps) + { + CurvySpline curvySpline = cp.transform.parent + ? cp.transform.parent.GetComponent() + : cp.Spline; + if (curvySpline && !splines.Contains(curvySpline)) + splines.Add(curvySpline); + } + + foreach (CurvySpline spl in splines) + { + spl.SyncSplineFromHierarchy(); + //spl.SetDirtyAll(SplineDirtyingType.Everything, true); is already done in spl.SyncSplineFromHierarchy(); + spl.Refresh(); + } + } + + + + public override void ResetPreferences() + { + //reset only settings that are settable through the Preferences window + + base.ResetPreferences(); + CurvyGlobalManager.DefaultInterpolation = CurvyInterpolation.CatmullRom; + CurvyGlobalManager.DefaultGizmoColor = CurvyGlobalManager.DefaultDefaultGizmoColor; + CurvyGlobalManager.DefaultGizmoSelectionColor = CurvyGlobalManager.DefaultDefaultGizmoSelectionColor; + CurvyGlobalManager.GizmoControlPointSize = 0.15f; + CurvyGlobalManager.GizmoOrientationLength = 1f; + CurvyGlobalManager.GizmoOrientationColor = CurvyGlobalManager.DefaultGizmoOrientationColor; + CurvyGlobalManager.SceneViewResolution = 0.5f; + CurvyGlobalManager.HideManager = false; + CurvyGlobalManager.SplineLayer = 0; + CurvyGlobalManager.SaveGeneratorOutputs = true; + + CustomizationRootPath = "Packages/Curvy Customization"; + SnapValuePrecision = true; + UseTiny2DHandles = false; + AutoFadeLabels = true; + ShowGlobalToolbar = true; + EnableMetrics = true; + EnableAnnouncements = true; + ShowHints = true; + + ToolbarMode = DTToolbarMode.Full; + ToolbarOrientation = DTToolbarOrientation.Left; + + DT._UseSnapValuePrecision = SnapValuePrecision; + DTToolbarItem._StatusBar.Visible = ShowHints; + } + + public override void LoadPreferences() + { + if (GetEditorPrefs("Version", "PreDT") == "PreDT") + { + DeletePreDTSettings(); + SavePreferences(); + } + base.LoadPreferences(); + CurvyGlobalManager.DefaultInterpolation = GetEditorPrefs("DefaultInterpolation", CurvyGlobalManager.DefaultInterpolation); + CurvyGlobalManager.DefaultGizmoColor = GetEditorPrefs("GizmoColor", CurvyGlobalManager.DefaultGizmoColor); + CurvyGlobalManager.DefaultGizmoSelectionColor = GetEditorPrefs("GizmoSelectionColor", CurvyGlobalManager.DefaultGizmoSelectionColor); + CurvyGlobalManager.GizmoControlPointSize = GetEditorPrefs("GizmoControlPointSize", CurvyGlobalManager.GizmoControlPointSize); + CurvyGlobalManager.GizmoOrientationLength = GetEditorPrefs("GizmoOrientationLength", CurvyGlobalManager.GizmoOrientationLength); + CurvyGlobalManager.GizmoOrientationColor = GetEditorPrefs("GizmoOrientationColor", CurvyGlobalManager.GizmoOrientationColor); + CurvyGlobalManager.Gizmos = GetEditorPrefs("Gizmos", CurvyGlobalManager.Gizmos); + CurvyGlobalManager.SceneViewResolution = Mathf.Clamp01(GetEditorPrefs("SceneViewResolution", CurvyGlobalManager.SceneViewResolution)); + CurvyGlobalManager.HideManager = GetEditorPrefs("HideManager", CurvyGlobalManager.HideManager); + CurvyGlobalManager.SplineLayer = GetEditorPrefs("SplineLayer", CurvyGlobalManager.SplineLayer); + CurvyGlobalManager.SaveGeneratorOutputs = GetEditorPrefs("SaveGeneratorOutputs", CurvyGlobalManager.SaveGeneratorOutputs); + + mCustomizationRootPath = GetEditorPrefs("CustomizationRootPath", mCustomizationRootPath); + SnapValuePrecision = GetEditorPrefs("SnapValuePrecision", true); + UseTiny2DHandles = GetEditorPrefs("UseTiny2DHandles", UseTiny2DHandles); + AutoFadeLabels = GetEditorPrefs("AutoFadeLabels", AutoFadeLabels); + ShowGlobalToolbar = GetEditorPrefs("ShowGlobalToolbar", ShowGlobalToolbar); + EnableMetrics = GetEditorPrefs("EnableMetrics", true); + EnableAnnouncements = GetEditorPrefs("EnableAnnouncements", true); + ShowHints = GetEditorPrefs("ShowHints", ShowHints); + + CurvyGlobalManager.SaveRuntimeSettings(); + + mCGAutoModuleDetails = GetEditorPrefs("CGAutoModuleDetails", mCGAutoModuleDetails); + mCGSynchronizeSelection = GetEditorPrefs("CGSynchronizeSelection", mCGSynchronizeSelection); + mCGShowHelp = GetEditorPrefs("CGShowHelp", mCGShowHelp); + mCGGraphSnapping = GetEditorPrefs("CGGraphSnapping", mCGGraphSnapping); + mBezierMode = GetEditorPrefs("BezierMode", mBezierMode); + mAdvBezierMode = GetEditorPrefs("AdvBezierMode", mAdvBezierMode); + mShowAboutOnLoad = GetEditorPrefs("ShowAboutOnLoad", mShowAboutOnLoad); + + DT._UseSnapValuePrecision = SnapValuePrecision; + DTToolbarItem._StatusBar.Visible = ShowHints; + } + + public override void SavePreferences() + { + base.SavePreferences(); + SetEditorPrefs("DefaultInterpolation", CurvyGlobalManager.DefaultInterpolation); + SetEditorPrefs("GizmoColor", CurvyGlobalManager.DefaultGizmoColor); + SetEditorPrefs("GizmoSelectionColor", CurvyGlobalManager.DefaultGizmoSelectionColor); + SetEditorPrefs("GizmoControlPointSize", CurvyGlobalManager.GizmoControlPointSize); + SetEditorPrefs("GizmoOrientationLength", CurvyGlobalManager.GizmoOrientationLength); + SetEditorPrefs("GizmoOrientationColor", CurvyGlobalManager.GizmoOrientationColor); + SetEditorPrefs("Gizmos", CurvyGlobalManager.Gizmos); + SetEditorPrefs("SnapValuePrecision", SnapValuePrecision); + SetEditorPrefs("EnableAnnouncements", EnableAnnouncements); + SetEditorPrefs("EnableMetrics", EnableMetrics); + SetEditorPrefs("SceneViewResolution", CurvyGlobalManager.SceneViewResolution); + SetEditorPrefs("HideManager", CurvyGlobalManager.HideManager); + SetEditorPrefs("UseTiny2DHandles", UseTiny2DHandles); + SetEditorPrefs("AutoFadeLabels", AutoFadeLabels); + SetEditorPrefs("ShowGlobalToolbar", ShowGlobalToolbar); + SetEditorPrefs("ShowHints", ShowHints); + SetEditorPrefs("SplineLayer", CurvyGlobalManager.SplineLayer); + SetEditorPrefs("SaveGeneratorOutputs", CurvyGlobalManager.SaveGeneratorOutputs); + SetEditorPrefs("CustomizationRootPath", mCustomizationRootPath); + + CurvyGlobalManager.SaveRuntimeSettings(); + DT._UseSnapValuePrecision = SnapValuePrecision; + DTToolbarItem._StatusBar.Visible = ShowHints; + } + + protected override void UpgradePreferences(string oldVersion) + { + base.UpgradePreferences(oldVersion); + // Ensure that About Window will be shown after upgrade + DeleteEditorPrefs("ShowAboutOnLoad"); + if (oldVersion == "2.0.0") + { + if (GetEditorPrefs("GizmoOrientationLength", CurvyGlobalManager.GizmoOrientationLength) == 4) + DeleteEditorPrefs("GizmoOrientationLength"); + } + + } + + void DeletePreDTSettings() + { + DTLog.Log("[Curvy] Removing old preferences"); + EditorPrefs.DeleteKey("Curvy_GizmoColor"); + EditorPrefs.DeleteKey("Curvy_GizmoSelectionColor"); + EditorPrefs.DeleteKey("Curvy_ControlPointSize"); + EditorPrefs.DeleteKey("Curvy_OrientationLength"); + EditorPrefs.DeleteKey("Curvy_Gizmos"); + EditorPrefs.DeleteKey("Curvy_ToolbarLabels"); + EditorPrefs.DeleteKey("Curvy_ToolbarOrientation"); + EditorPrefs.DeleteKey("Curvy_ShowShapeWizardUndoWarning"); + EditorPrefs.DeleteKey("Curvy_KeyBindings"); + } + + #region Settings window + + /// + /// The name of the settings entry of Curvy + /// + const string SettingsEntryName = "Curvy"; + +#if UNITY_2018_3_OR_NEWER + /// + /// The class used by Unity 2018.3 and newer to provide Curvy's preferences window + /// + public class CurvySettingsProvider : SettingsProvider + { + + public CurvySettingsProvider(SettingsScope scopes, IEnumerable keywords = null) + : base(GetPreferencesPath(), scopes, keywords) + { } + + public override void OnGUI(string searchContext) + { + PreferencesGUI(); + } + + /// + /// The settings path for Curvy's Settings + /// + public static string GetPreferencesPath() + { + return "Preferences/" + SettingsEntryName; + } + } + + [SettingsProvider] + static SettingsProvider MyNewPrefCode() + { + return new CurvySettingsProvider(SettingsScope.User); + } + +#else + [PreferenceItem(SettingsEntryName)] +#endif + public static void PreferencesGUI() + { + scroll = EditorGUILayout.BeginScrollView(scroll); + CurvyGlobalManager.DefaultInterpolation = (CurvyInterpolation)EditorGUILayout.EnumPopup("Default Spline Type", CurvyGlobalManager.DefaultInterpolation); + CurvyGlobalManager.SplineLayer = EditorGUILayout.LayerField(new GUIContent("Default Spline Layer", "Layer to use for splines and Control Points"), CurvyGlobalManager.SplineLayer); + + CurvyGlobalManager.SaveGeneratorOutputs = EditorGUILayout.Toggle(new GUIContent("Save Generator Outputs", "Whether the output of Curvy Generators should be saved in the scene file.\nDisable this option to reduce the size of scene files. This might increase the saving time for complex scenes.\nThis option applies only on generators that are enabled and have Auto Refresh set to true"), CurvyGlobalManager.SaveGeneratorOutputs); + + Instance.SnapValuePrecision = EditorGUILayout.Toggle(new GUIContent("Snap Value Precision", "Round inspector values"), Instance.SnapValuePrecision); + + CurvyGlobalManager.HideManager = EditorGUILayout.Toggle(new GUIContent("Hide _CurvyGlobal_", "Hide the global manager in Hierarchy?"), CurvyGlobalManager.HideManager); + + Instance.EnableAnnouncements = EditorGUILayout.Toggle(new GUIContent("Enable Announcements", "Display announcements from Curvy's developers"), Instance.EnableAnnouncements); + + Instance.EnableMetrics = EditorGUILayout.Toggle(new GUIContent("Enable Metrics", "Send metrics to Curvy's developers. This includes data such as the Unity version, Curvy version, etc... Keeping this enabled helps us a lot maintaining Curvy"), Instance.EnableMetrics); + + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.TextField(new GUIContent("Customization Root Path", "Base Path for custom Curvy extensions"), Instance.CustomizationRootPath); + if (GUILayout.Button(new GUIContent("<", "Select"), GUILayout.ExpandWidth(false))) + { + string path = EditorUtility.OpenFolderPanel("Customization Root Path", Application.dataPath, ""); + if (!string.IsNullOrEmpty(path)) + Instance.CustomizationRootPath = path.Replace(Application.dataPath + "/", ""); + } + EditorGUILayout.EndHorizontal(); + } + CurvyGlobalManager.SceneViewResolution = EditorGUILayout.Slider(new GUIContent("SceneView Resolution", "Lower values results in faster SceneView drawing"), CurvyGlobalManager.SceneViewResolution, 0, 1); + + foldouts[0] = EditorGUILayout.Foldout(foldouts[0], "Gizmo", CurvyStyles.Foldout); + if (foldouts[0]) + { + CurvyGlobalManager.DefaultGizmoColor = EditorGUILayout.ColorField("Spline color", CurvyGlobalManager.DefaultGizmoColor); + CurvyGlobalManager.DefaultGizmoSelectionColor = EditorGUILayout.ColorField("Spline Selection color", CurvyGlobalManager.DefaultGizmoSelectionColor); + CurvyGlobalManager.GizmoControlPointSize = EditorGUILayout.FloatField("Control Point Size", CurvyGlobalManager.GizmoControlPointSize); + CurvyGlobalManager.GizmoOrientationLength = EditorGUILayout.FloatField(new GUIContent("Orientation Length", "Orientation gizmo size"), CurvyGlobalManager.GizmoOrientationLength); + CurvyGlobalManager.GizmoOrientationColor = EditorGUILayout.ColorField(new GUIContent("Orientation Color", "Orientation gizmo color"), CurvyGlobalManager.GizmoOrientationColor); + Instance.UseTiny2DHandles = EditorGUILayout.Toggle(new GUIContent("Use Tiny 2D Handles", "If enabled and the spline has Restrict To 2D enabled, dots are shown instead of the default move handles"), Instance.UseTiny2DHandles); + Instance.AutoFadeLabels = EditorGUILayout.Toggle(new GUIContent("Auto Fade Labels", "Should the spline's text gizmos fade if the spline is too small on the screen"), Instance.AutoFadeLabels); + } + + foldouts[1] = EditorGUILayout.Foldout(foldouts[1], "UI", CurvyStyles.Foldout); + if (foldouts[1]) + { + Instance.ShowGlobalToolbar = EditorGUILayout.Toggle(new GUIContent("Show Global Toolbar", "Always show Curvy Toolbar"), Instance.ShowGlobalToolbar); + Instance.ToolbarMode = (DTToolbarMode)EditorGUILayout.EnumPopup(new GUIContent("Toolbar Labels", "Defines Toolbar Display Mode"), Instance.ToolbarMode); + Instance.ToolbarOrientation = (DTToolbarOrientation)EditorGUILayout.EnumPopup(new GUIContent("Toolbar Orientation", "Defines Toolbar Position"), Instance.ToolbarOrientation); + Instance.ShowHints = EditorGUILayout.Toggle(new GUIContent("Show Hints", "Show hints, at the bottom of scene view, about the usage of some Curvy editor tools"), Instance.ShowHints); + } + + foldouts[2] = EditorGUILayout.Foldout(foldouts[2], "Shortcuts", CurvyStyles.Foldout); + if (foldouts[2]) + { + List keys = Instance.GetProjectBindings(); + foreach (EditorKeyBinding binding in keys) + { + if (binding.OnPreferencesGUI()) // save changed bindings + { + Instance.SetEditorPrefs(binding.Name, binding.ToPrefsString()); + } + GUILayout.Space(2); + GUILayout.Box("", GUILayout.Height(1), GUILayout.ExpandWidth(true)); + GUILayout.Space(2); + } + } + if (GUILayout.Button("Reset to defaults")) + { + Instance.ResetPreferences(); + + List keys = Instance.GetProjectBindings(); + foreach (EditorKeyBinding binding in keys) + Instance.DeleteEditorPrefs(binding.Name); + } + + EditorGUILayout.EndScrollView(); + + if (GUI.changed) + { + Instance.SavePreferences(); + DT.ReInitialize(false); + } + + } + + #endregion + } + + /// + /// Class for loading image resources + /// + public class CurvyResource : DTResource + { + static CurvyResource _Instance; + public static CurvyResource Instance + { + get + { + if (_Instance == null) + _Instance = new CurvyResource(); + return _Instance; + } + } + + public CurvyResource() + { + ResourceDLL = FindResourceDLL("CurvyEditorIcons"); + ResourceNamespace = "";//Assets.Curvy.Editor.Resources."; + } + + private const string fallbackPackedString = "missing,16,16"; + + public static Texture2D Load(string packedString) + { + Texture2D tex = Instance.LoadPacked(packedString); + if (tex == null) + { + DTLog.LogError("Loading texture from packed string failed: " + packedString); + return Instance.LoadPacked(fallbackPackedString); + } + + return tex; + } + + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyProject.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyProject.cs.meta new file mode 100644 index 00000000..7f0b1afa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyProject.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6827729ab53799b47807d90abc775dbe +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPropertyDrawers.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPropertyDrawers.cs new file mode 100644 index 00000000..67de0eeb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPropertyDrawers.cs @@ -0,0 +1,220 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using UnityEditor; +using System.Reflection; +using System; +using System.Collections.Generic; +using FluffyUnderware.CurvyEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.CurvyEditor.Generator; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor +{ + + #region ### CG related ### + + + //[CustomPropertyDrawer(typeof(CGSpot))] + public class CGSpotPropertyDrawer : PropertyDrawer + { + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + // property.f + } + } + + [CustomPropertyDrawer(typeof(CGResourceCollectionManagerAttribute))] + public class CGResourceCollectionManagerPropertyDrawer : DTPropertyDrawer + { + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + Rect mControlRect = position; + CGResourceManagerAttribute A = (CGResourceManagerAttribute)attribute; + ICGResourceCollection lst = this.GetPropertySourceField(property); + + label = EditorGUI.BeginProperty(position, label, property); + + if (lst != null) + { + if (lst.Count > 0) + label.text += string.Format("[{0}]", lst.Count); + EditorGUI.PrefixLabel(mControlRect, label); + mControlRect.x = (A.ReadOnly) ? mControlRect.xMax - 60 : mControlRect.xMax - 82; + mControlRect.width = 60; + + if (GUI.Button(mControlRect, new GUIContent("Select", CurvyStyles.SelectTexture, "Select"))) + DTSelection.SetGameObjects(lst.ItemsArray); + } + } + } + + [CustomPropertyDrawer(typeof(CGResourceManagerAttribute), true)] + public class CGResourceManagerPropertyDrawer : DTPropertyDrawer + { + + CGResourceEditor ResourceEditor; + + + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + Rect mControlRect = position; + label = EditorGUI.BeginProperty(position, label, property); + CGResourceManagerAttribute A = (CGResourceManagerAttribute)attribute; + CGModule module = (CGModule)property.serializedObject.targetObject; + Component res = (Component)property.objectReferenceValue; + if (res) + { + Transform parent = res.transform.parent; + bool managed = (parent != null && parent.transform == module.transform); + if (managed) + { + EditorGUI.PrefixLabel(mControlRect, label); + mControlRect.x = (A.ReadOnly) ? mControlRect.xMax - 60 : mControlRect.xMax - 82; + mControlRect.width = 60; + if (GUI.Button(mControlRect, new GUIContent("Select", CurvyStyles.SelectTexture, "Select"), CurvyStyles.SmallButton)) + Selection.activeObject = property.objectReferenceValue; + if (!A.ReadOnly) + { + mControlRect.x += mControlRect.width + 2; + mControlRect.width = 20; + if (GUI.Button(mControlRect, new GUIContent(CurvyStyles.DeleteSmallTexture, "Delete resource"), CurvyStyles.SmallButton)) + { + if (EditorUtility.DisplayDialog("Delete resource", "This will permanently delete the resource! This operation cannot be undone. Proceed?", "Yes", "No")) + { + if (DTUtility.DoesPrefabStatusAllowDeletion(res.gameObject, out string errorMessage)) + { + module.DeleteManagedResource(A.ResourceName, res); + property.objectReferenceValue = null; + ResourceEditor = null; + } + else + { + EditorUtility.DisplayDialog($"Cannot delete Game Object '{res.name}'", errorMessage, "Ok"); + } + } + } + } + + if (property.objectReferenceValue != null) + { + //if (!ResourceEditor) + ResourceEditor = CGResourceEditorHandler.GetEditor(A.ResourceName, res); + + if (ResourceEditor && ResourceEditor.OnGUI()) + { + // TODO: Refresh using new value not always working! + module.Invoke("OnValidate", 0); + module.Dirty = true; + module.Generator.Invoke("Update", 1f); + } + } + } + else + { + mControlRect.width -= 20; + EditorGUI.PropertyField(mControlRect, property, label); + mControlRect.x += mControlRect.width + 2; + mControlRect.width = 20; + if (GUI.Button(mControlRect, new GUIContent(CurvyStyles.ClearSmallTexture, "Unset"))) + { + property.objectReferenceValue = null; + ResourceEditor = null; + } + + + } + } + else + { + mControlRect.width -= 20; + EditorGUI.PropertyField(mControlRect, property, label); + mControlRect.x = mControlRect.xMax + 2; + mControlRect.width = 20; + if (GUI.Button(mControlRect, new GUIContent(CurvyStyles.AddSmallTexture, "Add Managed"))) + { + // Call AddResource to create and name the resource + property.objectReferenceValue = module.AddManagedResource(A.ResourceName); + } + } + + + EditorGUI.EndProperty(); + } + + + } + + [CustomPropertyDrawer(typeof(CGDataReferenceSelectorAttribute))] + public class CGDataReferenceSelectorPropertyDrawer : DTPropertyDrawer + { + SerializedProperty CurrentProp; + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return (GetPropertySourceField(property).HasValue) ? base.GetPropertyHeight(property, label) : base.GetPropertyHeight(property, label) * 2; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + CGDataReferenceSelectorAttribute attrib = (CGDataReferenceSelectorAttribute)attribute; + CurrentProp = property; + CGDataReference field = GetPropertySourceField(property); + + EditorGUI.PrefixLabel(position, label); + + position.x += EditorGUIUtility.labelWidth; + position.width -= EditorGUIUtility.labelWidth; + + Rect r = new Rect(position); + if (field.Module != null) + r.width -= 30; + + string btnLabel = (field.Module) ? string.Format("{0}.{1}", field.Module.ModuleName, field.SlotName) : "None"; + string btnTT = (field.Module && field.Module.Generator) ? string.Format("{0}.{1}.{2}", field.Module.Generator.name, field.Module.ModuleName, field.SlotName) : "Click to choose"; + if (GUI.Button(r, new GUIContent(btnLabel, btnTT))) + { + CGEditorUtility.ShowOutputSlotsMenu(OnMenu, attrib.DataType); + } + if (field.Module != null) + { + r.width = 30; + r.x = position.xMax - 30; + if (GUI.Button(r, new GUIContent(CurvyStyles.SelectTexture, "Select"))) + EditorGUIUtility.PingObject(field.Module); + } + else + { + EditorGUILayout.HelpBox(string.Format("Missing source of type {0}", attrib.DataType.Name), MessageType.Error); + } + + } + + void OnMenu(object userData) + { + CGModuleOutputSlot slot = userData as CGModuleOutputSlot; + CGDataReference field = GetPropertySourceField(CurrentProp); + if (slot == null) + field.Clear(); + else + field.setINTERNAL(slot.Module, slot.Info.Name); + + CurrentProp.serializedObject.ApplyModifiedProperties(); + } + } + #endregion +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPropertyDrawers.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPropertyDrawers.cs.meta new file mode 100644 index 00000000..74cb45a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyPropertyDrawers.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f92c1064c99953f48bee8ba7373405a0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyShapeEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyShapeEditor.cs new file mode 100644 index 00000000..b9224ec0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyShapeEditor.cs @@ -0,0 +1,73 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor +{ + [CustomEditor(typeof(CurvyShape),true)] + public class CurvyShapeEditor : CurvyEditorBase + { + + int mSelection; + public bool ShowOnly2DShapes=false; + public bool ShowPersistent; + + protected override void OnEnable() + { + base.OnEnable(); + } + + protected override void OnReadNodes() + { + + DTFieldNode node; + if (Node.FindNodeAt("m_Plane", out node)) + node.SortOrder = 0; + } + + bool ShowShapeSelector() + { + EditorGUI.BeginChangeCheck(); + string[] menuNames = CurvyShape.GetShapesMenuNames(Target.GetType(), out mSelection, ShowOnly2DShapes).ToArray(); + + mSelection = EditorGUILayout.Popup("Shape Type",mSelection, menuNames); + if (EditorGUI.EndChangeCheck()) + { + Target.Replace(menuNames[mSelection]); + GUIUtility.ExitGUI(); + return true; + } + else return false; + } + + /// + /// Shows inspector for embedding into other GUI code. + /// + /// True if the shape script was changed + public bool OnEmbeddedGUI() + { + bool changed=ShowShapeSelector(); + base.OnInspectorGUI(); + return changed; + } + + + public override void OnInspectorGUI() + { + // TODO: CONDITIONAL + //HideFields("Persistent"); + ShowShapeSelector(); + base.OnInspectorGUI(); + //HideFields(); + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyShapeEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyShapeEditor.cs.meta new file mode 100644 index 00000000..f8553618 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyShapeEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61903b8dd726e2c4db1cea2f22789984 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineAlignWizard.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineAlignWizard.cs new file mode 100644 index 00000000..12e50849 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineAlignWizard.cs @@ -0,0 +1,201 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.Curvy; + +namespace FluffyUnderware.CurvyEditor +{ + public class CurvySplineAlignWizard : EditorWindow + { + CurvySpline Spline; + float StartOffset = 0; + float EndOffset = 0; + float Step; + bool UseWorldUnits = false; + bool SetPosition = true; + bool SetOrientation = true; + int OrientationType = 0; + + int selcount; + + Vector3[] pos = new Vector3[0]; + Vector3[] up = new Vector3[0]; + Vector3[] tan = new Vector3[0]; + + static public void Create() + { + CurvySplineAlignWizard win = GetWindow(true, "Align Transforms to spline", true); + win.Init(Selection.activeGameObject.GetComponent()); + win.maxSize = new Vector2(400, 205); + win.minSize = win.maxSize; + Selection.activeTransform = null; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= win.Preview; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + += win.Preview; + } + + void OnDestroy() + { + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= Preview; + } + + void OnFocus() + { + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= Preview; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + += Preview; + } + + void OnSelectionChange() + { + if (Selection.activeGameObject) + { + CurvySpline spl = Selection.activeGameObject.GetComponent(); + if (spl) + Init(spl); + } + Repaint(); + } + + void Init(CurvySpline spline) + { + Spline = spline; + } + + void OnGUI() + { + selcount = (Selection.transforms != null) ? Selection.transforms.Length : 0; + + GUILayout.Label("Spline '" + Spline.name + "': Length=" + string.Format("{0:0.00}", new object[] { Spline.Length }) + " / Selected: " + selcount.ToString() + " transforms"); + GUILayout.Label("Select Transforms and hit Apply!", EditorStyles.boldLabel); + + StartOffset = EditorGUILayout.FloatField("Offset: Start", StartOffset); + EndOffset = EditorGUILayout.FloatField("Offset: End", EndOffset); + EditorGUILayout.BeginHorizontal(); + Step = EditorGUILayout.FloatField("Step", Step); + if (GUILayout.Button("Auto")) + SetAutoStep(); + EditorGUILayout.EndHorizontal(); + UseWorldUnits = EditorGUILayout.Toggle("Use World Units", UseWorldUnits); + + SetPosition = EditorGUILayout.Toggle("Set Position", SetPosition); + SetOrientation = EditorGUILayout.Toggle("Set Orientation", SetOrientation); + if (SetOrientation) + { + EditorGUILayout.BeginHorizontal(); + OrientationType = GUILayout.SelectionGrid(OrientationType, new GUIContent[] { new GUIContent("Up-Vector", "Rotate to match Up-Vectors"), new GUIContent("Tangent", "Rotate to match Tangent") }, 2); + EditorGUILayout.EndHorizontal(); + } + if (GUILayout.Button("Apply")) + DoAlign(); + GUI.enabled = true; + Calculate(); + if (SceneView.lastActiveSceneView) + SceneView.lastActiveSceneView.Repaint(); + } + + void SetAutoStep() + { + if (selcount == 0) return; + float len = (UseWorldUnits) ? Spline.Length - StartOffset - EndOffset : 1 - StartOffset - EndOffset; + if (selcount > 1) + Step = len / (selcount - 1); + else + Step = len / (selcount - 1); + } + + void Calculate() + { + if (selcount == 0) return; + pos = new Vector3[selcount]; + up = new Vector3[selcount]; + tan = new Vector3[selcount]; + + for (int i = 0; i < selcount; i++) + { + //OPTIM use InterpolateAndGetTangent + pos[i] = (UseWorldUnits) ? Spline.InterpolateByDistance(StartOffset + Step * i) : Spline.Interpolate(StartOffset + Step * i); + up[i] = (UseWorldUnits) ? Spline.GetOrientationUpFast(Spline.DistanceToTF(StartOffset + Step * i)) : Spline.GetOrientationUpFast(StartOffset + Step * i); + tan[i] = (UseWorldUnits) ? Spline.GetTangentByDistance(StartOffset + Step * i) : Spline.GetTangent(StartOffset + Step * i); + } + } + + void DoAlign() + { + if (selcount == 0) return; + List trans = new List(Selection.transforms); + trans.Sort((a, b) => string.Compare(a.name, b.name)); + + Undo.RecordObjects(trans.ToArray(), "Align To Spline"); + + for (int i = 0; i < selcount; i++) + { + if (SetPosition) + trans[i].position = pos[i]; + if (SetOrientation) + { + switch (OrientationType) + { + case 0: + trans[i].rotation = Quaternion.LookRotation(tan[i], up[i]); + break; + case 1: + trans[i].rotation = Quaternion.LookRotation(up[i], tan[i]); + break; + } + } + } + } + + + void Preview(SceneView sceneView) + { + Handles.color = Color.blue; + for (int i = 0; i < pos.Length; i++) + { + Vector3 rv = (OrientationType == 0) ? up[i] : tan[i]; +#if UNITY_5_6_OR_NEWER + Handles.ArrowHandleCap(0, pos[i], (rv != Vector3.zero) ? Quaternion.LookRotation(rv) : Quaternion.identity, 2, EventType.Repaint); +#else + Handles.ArrowCap(0, pos[i], (rv != Vector3.zero) ? Quaternion.LookRotation(rv) : Quaternion.identity, 2); +#endif + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineAlignWizard.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineAlignWizard.cs.meta new file mode 100644 index 00000000..25af9463 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineAlignWizard.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31a0ac75cca5dd74980eadede000d609 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineEditor.cs new file mode 100644 index 00000000..dcf04eda --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineEditor.cs @@ -0,0 +1,308 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor +{ + [CustomEditor(typeof(CurvySpline)), CanEditMultipleObjects] + public class CurvySplineEditor : CurvyEditorBase + { + + + + SerializedProperty tT; + SerializedProperty tC; + SerializedProperty tB; + + private static readonly GUIStyle GuiStyle = new GUIStyle(); + + [DrawGizmo(GizmoType.Active | GizmoType.NonSelected | GizmoType.InSelectionHierarchy)] + static void DrawTextGizmos(CurvySpline spline, GizmoType context) + { + + bool drawLabels = CurvyGlobalManager.ShowLabelsGizmo && spline.ShowGizmos; + bool drawRelativeDistance = CurvyGlobalManager.ShowRelativeDistancesGizmo && spline.ShowGizmos; + bool drawTF = CurvyGlobalManager.ShowTFsGizmo && spline.ShowGizmos; + + if ((drawTF || drawRelativeDistance || drawLabels) == false) + return; + + if (spline.Dirty) + return; + + Bounds splineBounds = spline.Bounds; + Camera camera = Camera.current; + + float alpha; + { + if (CurvyProject.Instance.AutoFadeLabels) + { + Matrix4x4 m = spline.transform.localToWorldMatrix; + Vector2 min = new Vector2(float.MaxValue, float.MaxValue); + Vector2 max = new Vector2(float.MinValue, float.MinValue); + int height = Screen.height; + + for (int index = 0; index < spline.Count; index++) + { + CurvySplineSegment curvySplineSegment = spline[index]; + Vector2 segmentMin = new Vector2(float.MaxValue, float.MaxValue); + Vector2 segmentMax = new Vector2(float.MinValue, float.MinValue); + for (var i = 0; i < curvySplineSegment.Approximation.Length; i++) + { + // World space + Vector3 p = m.MultiplyPoint3x4(curvySplineSegment.Approximation[i]); + // GUI space + p = camera.WorldToScreenPoint(p, Camera.MonoOrStereoscopicEye.Mono); + p.y = height - p.y; + + segmentMin.x = Mathf.Min(segmentMin.x, p.x); + segmentMin.y = Mathf.Min(segmentMin.y, p.y); + segmentMax.x = Mathf.Max(segmentMax.x, p.x); + segmentMax.y = Mathf.Max(segmentMax.y, p.y); + } + + min.x = Mathf.Min(min.x, segmentMin.x); + min.y = Mathf.Min(min.y, segmentMin.y); + max.x = Mathf.Max(max.x, segmentMax.x); + max.y = Mathf.Max(max.y, segmentMax.y); + } + + Rect screenBounds = Rect.MinMaxRect(min.x, min.y, max.x, max.y); + float maxBoundLength = Mathf.Max(screenBounds.width / Screen.width, screenBounds.height / Screen.height); + alpha = Mathf.Clamp01((maxBoundLength - 0.02f) / (0.07f - 0.02f)); + } + else + alpha = 1; + } + + Color color = spline.GizmoColor * 1.3f; + + bool isSplineClosed = spline.Closed; + float handleSizeMultiplier = 0.08f; + Quaternion cameraRotation = Camera.current.transform.rotation; + + lock (GuiStyle) + { + + GuiStyle.fontSize = 11; + GuiStyle.alignment = TextAnchor.MiddleCenter; + + if (drawTF && alpha != 0) + { + GuiStyle.normal.textColor = Handles.color = new Color(color.r * 0.85f, color.g * 0.85f, color.b * 0.85f + 0.15f, alpha); + + //first point and last point for closed splines + { + Vector3 worldPoint = spline.Interpolate(0, Space.World); + float handleSize = HandleUtility.GetHandleSize(worldPoint); + DrawPointHandle(worldPoint, handleSize * handleSizeMultiplier, cameraRotation); +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(worldPoint, $"TF : {(spline.Closed ? "0 / 1" : "0")}", +#pragma warning restore CS0618 + OrientationAxisEnum.Right, handleSize, GuiStyle); + } + + for (int i = 1; i <= (isSplineClosed ? 9 : 10); i++) + { + float tf = (float)i / 10; + Vector3 worldPoint = spline.Interpolate(tf, Space.World); + float handleSize = HandleUtility.GetHandleSize(worldPoint); + DrawPointHandle(worldPoint, handleSize * handleSizeMultiplier, cameraRotation); +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(worldPoint, $"TF : {tf}", OrientationAxisEnum.Right, handleSize, GuiStyle); +#pragma warning restore CS0618 + } + } + + if (drawRelativeDistance && alpha != 0) + { + GuiStyle.normal.textColor = Handles.color = new Color(color.r * 0.85f, color.g * 0.85f + 0.15f, color.b * 0.85f, alpha); + + //first point and last point for closed splines + { + Vector3 worldPoint = spline.InterpolateByDistance(0, Space.World); + float handleSize = HandleUtility.GetHandleSize(worldPoint); + DrawPointHandle(worldPoint, handleSize * handleSizeMultiplier, cameraRotation); +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(worldPoint, $"RD : {(spline.Closed ? "0 / 1" : "0")}", OrientationAxisEnum.Left, handleSize, GuiStyle); +#pragma warning restore CS0618 + } + + for (int i = 1; i <= (isSplineClosed ? 9 : 10); i++) + { + float relativeDistance = (float)i / 10; + Vector3 worldPoint = spline.InterpolateByDistance(spline.Length * relativeDistance, Space.World); + float handleSize = HandleUtility.GetHandleSize(worldPoint); + DrawPointHandle(worldPoint, handleSize * handleSizeMultiplier, cameraRotation); +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(worldPoint, $"RD : {relativeDistance}", OrientationAxisEnum.Left, handleSize, GuiStyle); +#pragma warning restore CS0618 + } + } + + if (drawLabels) + { + GuiStyle.normal.textColor = color; +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(splineBounds.center, spline.name, OrientationAxisEnum.Down, null, GuiStyle); +#pragma warning restore CS0618 + + if (alpha != 0) + { + GuiStyle.normal.textColor = new Color(color.r * 0.85f + 0.15f, color.g * 0.85f, color.b * 0.85f, alpha); + foreach (CurvySplineSegment cp in spline.ControlPointsList) +#pragma warning disable CS0618 + CurvyGizmo.PointLabel(cp.transform.position, cp.name, OrientationAxisEnum.Up, null, GuiStyle); +#pragma warning restore CS0618 + } + } + } + } + + private static void DrawPointHandle(Vector3 worldPoint, float handleSize, Quaternion cameraRotation) + { + Vector3 axis1 = cameraRotation * Vector3.right; + Vector3 axis2 = cameraRotation * Vector3.up; + Handles.DrawLine(worldPoint + axis1 * handleSize, worldPoint + axis1 * -handleSize +#if UNITY_2020_2_OR_NEWER + , 1.5f +#endif +); + Handles.DrawLine(worldPoint + axis2 * handleSize, worldPoint + axis2 * -handleSize +#if UNITY_2020_2_OR_NEWER + , 1.5f +#endif + ); + + //Handles.DrawWireDisc(worldPoint, cameraRotation * Vector3.forward, handleSize); + } + + [DrawGizmo(GizmoType.Active | GizmoType.NonSelected | GizmoType.InSelectionHierarchy)] + static void DrawBSplineGizmo(CurvySpline spline, GizmoType context) + { + if (spline.Interpolation == CurvyInterpolation.BSpline) + { + Handles.color = spline.GizmoColor * 0.9f; + foreach (CurvySplineSegment cp in spline.ControlPointsList) + if (spline.IsControlPointASegment(cp)) + Handles.DrawDottedLine(cp.transform.position, spline.GetNextControlPoint(cp).transform.position, 4); + } + } + + protected override void OnEnable() + { + base.OnEnable(); + + tT = serializedObject.FindProperty("m_Tension"); + tC = serializedObject.FindProperty("m_Continuity"); + tB = serializedObject.FindProperty("m_Bias"); + } + + protected override void OnSceneGUI() + { + base.OnSceneGUI(); + + // Bounds + bool targetIsNotNull = Target != null; + if (targetIsNotNull && Target.IsInitialized && CurvyGlobalManager.ShowBoundsGizmo) + { + DTHandles.PushHandlesColor(new Color(0.3f, 0, 0)); + DTHandles.WireCubeCap(Target.Bounds.center, Target.Bounds.size); + DTHandles.PopHandlesColor(); + } + + // Snap Transform + if (targetIsNotNull && DT._UseSnapValuePrecision) + { + Target.transform.localPosition = DTMath.SnapPrecision(Target.transform.localPosition, 3); + Target.transform.localEulerAngles = DTMath.SnapPrecision(Target.transform.localEulerAngles, 3); + } + + + + } + + + + void TCBOptionsGUI() + { + if (Target.Interpolation == CurvyInterpolation.TCB) + { + EditorGUILayout.BeginHorizontal(); + if (GUILayout.Button(new GUIContent("Set Catmul", "Set TCB to match Catmul Rom"))) + { + tT.floatValue = 0; tC.floatValue = 0; tB.floatValue = 0; + } + if (GUILayout.Button(new GUIContent("Set Cubic", "Set TCB to match Simple Cubic"))) + { + tT.floatValue = -1; tC.floatValue = 0; tB.floatValue = 0; + } + if (GUILayout.Button(new GUIContent("Set Linear", "Set TCB to match Linear"))) + { + tT.floatValue = 0; tC.floatValue = -1; tB.floatValue = 0; + } + EditorGUILayout.EndHorizontal(); + } + } + + void ShowGizmoGUI() + { + EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(CurvySpline.ShowGizmos))); + } + void CheckGizmoColor() + { + if (Target.GizmoColor.a.Approximately(0f)) + EditorGUILayout.HelpBox("Color is transparent (alpha value set to 0).", MessageType.Warning); + } + void CheckGizmoSelectionColor() + { + if (Target.GizmoSelectionColor.a.Approximately(0f)) + EditorGUILayout.HelpBox("Active Color is transparent (alpha value set to 0).", MessageType.Warning); + } + + void CBCheck2DPlanar() + { + if (Target.RestrictTo2D && Target.IsPlanar(Target.Restricted2DPlane) == false) + { + EditorGUILayout.HelpBox("The spline isn't restricted to the selected plane. Click the button below to correct this.", MessageType.Warning); + if (GUILayout.Button("Make planar")) + Target.MakePlanar(Target.Restricted2DPlane); + } + } + + protected override void OnCustomInspectorGUI() + { + base.OnCustomInspectorGUI(); + GUILayout.Space(5); + if (Target.ControlPointsList.Count == 0) + EditorGUILayout.HelpBox("To add Control Points to your curve, please use the Toolbar in the SceneView window", MessageType.Warning); + if (Target.IsInitialized == false) + EditorGUILayout.HelpBox("Spline is not initialized", MessageType.Info); + else if (Target.Dirty) + EditorGUILayout.HelpBox("Spline is dirty", MessageType.Info); + else + EditorGUILayout.HelpBox("Control Points: " + Target.ControlPointCount.ToString() + + "\nSegments: " + Target.Count.ToString() + + "\nLength: " + Target.Length.ToString() + + "\nCache Points: " + Target.CacheSize.ToString() + , MessageType.Info); + + } + + + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineEditor.cs.meta new file mode 100644 index 00000000..b0c662f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d791e8a79d284f4cb5b575bdbb0616e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineSegmentEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineSegmentEditor.cs new file mode 100644 index 00000000..5a2495b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineSegmentEditor.cs @@ -0,0 +1,462 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.CurvyEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor.Extensions; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.CurvyEditor.UI; +using System.Linq; +using UnityEditorInternal; +using FluffyUnderware.DevTools; +using Object = UnityEngine.Object; + +namespace FluffyUnderware.CurvyEditor +{ + [CustomEditor(typeof(CurvySplineSegment)), CanEditMultipleObjects] + public class CurvySplineSegmentEditor : CurvyEditorBase + { + public static float SmoothingOffset = 0.3f; + + SerializedProperty tT0; + SerializedProperty tB0; + SerializedProperty tC0; + SerializedProperty tT1; + SerializedProperty tB1; + SerializedProperty tC1; + SerializedProperty tOT; + SerializedProperty tOB; + SerializedProperty tOC; + + + Quaternion mBezierRot; + + EditorKeyBinding hkToggleBezierAutoHandles; + + CurvyConnectionEditor mConnectionEditor; + + [DrawGizmo(GizmoType.Active | GizmoType.NonSelected | GizmoType.InSelectionHierarchy)] + private static void DrawOrientationAnchorGizmo(CurvySplineSegment controlPoint, GizmoType context) + { + CurvySpline spline = controlPoint.Spline; + if (CurvyGlobalManager.ShowOrientationAnchorsGizmo && spline.ShowGizmos && spline.IsControlPointAnOrientationAnchor(controlPoint)) + { + Handles.color = spline.GizmoColor * 1.1f; + Camera camera = Camera.current; + Vector3 xAxis = -camera.transform.right; + Vector3 yAxis = -camera.transform.up; + Vector3 zAxis = -camera.transform.forward; + + Vector3 cpPosition = controlPoint.transform.position; + float handleSize = HandleUtility.GetHandleSize(cpPosition); + + float outerRadius = handleSize * 0.12f; + float innerRadius = outerRadius * 0.7f; + + Vector3 anchorPosition = controlPoint.transform.position + yAxis * handleSize * 0.3f; + + //englobing circle + Handles.DrawWireDisc(anchorPosition, zAxis, outerRadius); + + Vector3 neckPosition = anchorPosition - yAxis * innerRadius * 0.7f; + //head + float headSize = outerRadius * 0.1f; + Handles.DrawSolidDisc(neckPosition - headSize * yAxis, zAxis, headSize); + + //trunk + Handles.DrawLine(neckPosition, anchorPosition + yAxis * innerRadius); + + //arms + Vector3 armsVerticalPosition = anchorPosition - yAxis * innerRadius * 0.25f; + float armsLength = innerRadius * 0.6f; + Handles.DrawLine(armsVerticalPosition - xAxis * armsLength, armsVerticalPosition + xAxis * armsLength); + + //feet + float arcStartAngle = Mathf.Deg2Rad * -80f; + Handles.DrawWireArc(anchorPosition, zAxis, xAxis * Mathf.Sin(arcStartAngle) + yAxis * Mathf.Cos(arcStartAngle), 160, innerRadius); + } + } + + protected override void OnEnable() + { + base.OnEnable(); + hkToggleBezierAutoHandles = CurvyProject.Instance.RegisterKeyBinding(new EditorKeyBinding("Bezier: Toggle AutoHandles", "", KeyCode.H)); + + tT0 = serializedObject.FindProperty("m_StartTension"); + tC0 = serializedObject.FindProperty("m_StartContinuity"); + tB0 = serializedObject.FindProperty("m_StartBias"); + tT1 = serializedObject.FindProperty("m_EndTension"); + tC1 = serializedObject.FindProperty("m_EndContinuity"); + tB1 = serializedObject.FindProperty("m_EndBias"); + tOT = serializedObject.FindProperty("m_OverrideGlobalTension"); + tOC = serializedObject.FindProperty("m_OverrideGlobalContinuity"); + tOB = serializedObject.FindProperty("m_OverrideGlobalBias"); + + EditorApplication.hierarchyWindowItemOnGUI -= OnHierarchyWindowItemOnGUI; + EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyWindowItemOnGUI; + + mBezierRot = Quaternion.identity; + } + + + + protected override void OnDisable() + { + base.OnDisable(); + Editor.DestroyImmediate(mConnectionEditor); + EditorApplication.hierarchyWindowItemOnGUI -= OnHierarchyWindowItemOnGUI; + // just in case + Tools.hidden = false; + } + + protected override void OnReadNodes() + { + if (!mConnectionEditor) + { + // ensure all selected CPs join a single connection. Otherwise don't show Connections Inspector + if (!serializedObject.FindProperty("m_Connection").hasMultipleDifferentValues && Target.Connection != null) + { + mConnectionEditor = (CurvyConnectionEditor)Editor.CreateEditor(Target.Connection, typeof(CurvyConnectionEditor)); + DTGroupNode sec = Node.AddSection("Connection", ConnectionGUI); + if (sec) + { + sec.SortOrder = 1; + sec.HelpURL = CurvySpline.DOCLINK + "curvyconnection"; + } + } + } + } + + void checkHotkeys() + { + if (Target && Target.Spline && Target.Spline.Interpolation == CurvyInterpolation.Bezier && hkToggleBezierAutoHandles.IsTriggered(Event.current)) + DTSelection.GetAllAs().ForEach((CurvySplineSegment seg) => { seg.AutoHandles = !seg.AutoHandles; }); + } + + protected override void OnSceneGUI() + { + base.OnSceneGUI(); + + // Bounds + if (CurvyGlobalManager.ShowBoundsGizmo) + { + DTHandles.PushHandlesColor(Color.gray); + DTHandles.WireCubeCap(Target.Bounds.center, Target.Bounds.size); + DTHandles.PopHandlesColor(); + } + checkHotkeys(); + if (Target.Spline && Target.Spline.RestrictTo2D && Tools.current == Tool.Move && !SceneView.currentDrawingSceneView.in2DMode) + { + Tools.hidden = true; + Vector3 handlePos = (Tools.handlePosition != Target.transform.position) ? DTSelection.GetPosition() : Tools.handlePosition; + Vector3 delta; + EditorGUI.BeginChangeCheck(); + + + if (CurvyProject.Instance.UseTiny2DHandles) + delta = DTHandles.TinyHandle2D(GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), handlePos, Target.Spline.transform.rotation, 1) - handlePos; + else + delta = DTHandles.PositionHandle2D(GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), handlePos, Target.Spline.transform.rotation, 1, (int)Target.Spline.Restricted2DPlane) - handlePos; + + if (EditorGUI.EndChangeCheck()) + { + foreach (Transform t in Selection.transforms) + { + Undo.ClearUndo(t); + Undo.RecordObject(t, "Move"); + t.position += delta; + } + } + } + else + Tools.hidden = false; + + + // Bezier-Handles + if (Target.Spline && Target.Spline.Interpolation == CurvyInterpolation.Bezier && !Target.AutoHandles) + { + float positionHandleSize = .6f; + float cubeSize = CurvyGlobalManager.GizmoControlPointSize * 0.6f; + + bool hasSynchronizedHandles; + { + CurvyBezierModeEnum mode = CurvyProject.Instance.BezierMode; + bool syncDirections = (mode & CurvyBezierModeEnum.Direction) == CurvyBezierModeEnum.Direction; + bool syncLengths = (mode & CurvyBezierModeEnum.Length) == CurvyBezierModeEnum.Length; + bool syncConnectedCPs = (mode & CurvyBezierModeEnum.Connections) == CurvyBezierModeEnum.Connections; + + hasSynchronizedHandles = + syncConnectedCPs + && (syncDirections || syncLengths) + && Target.Connection + && Target.Connection.ControlPointsList.Any(cp => cp != Target); + } + + #region --- Bezier Rotation Handling --- + if (Tools.current == Tool.Rotate) + { + Event e = Event.current; + if (e.shift && DTHandles.MouseOverSceneView) + { + Tools.hidden = true; + DTToolbarItem._StatusBar.Set("BezierRotate"); + // This looks good, but then diff down below isn't working like intended: + //mBezierRot = Quaternion.LookRotation(Vector3.Cross(Target.HandleIn, Target.GetOrientationUpFast(0)), Target.GetOrientationUpFast(0)); + Quaternion newRot = Handles.RotationHandle(mBezierRot, Target.transform.position); + if (newRot != mBezierRot) + { + Quaternion diff = Quaternion.Inverse(mBezierRot) * newRot; + mBezierRot = newRot; + CurvyBezierModeEnum mode = CurvyProject.Instance.BezierMode; + + //Undo handling + { + string undoingOperationLabel = "Rotate Handles"; + Undo.RecordObject(Target, undoingOperationLabel); + if (hasSynchronizedHandles) + Undo.RecordObjects( + Target.Connection.ControlPointsList.Where(cp => cp != Target).Select(cp => (Object)cp).ToArray() + , undoingOperationLabel); + } + + Target.SetBezierHandleIn(diff * Target.HandleIn, Space.Self, mode); + Target.SetBezierHandleOut(diff * Target.HandleOut, Space.Self, mode); + EditorUtility.SetDirty(Target); + } + + } + else + { + DTToolbarItem._StatusBar.Set("Hold [Shift] to rotate Handles", "BezierRotate"); + Tools.hidden = false; + } + } + else + DTToolbarItem._StatusBar.Set("BezierRotate"); + #endregion + + #region --- Bezier Movement Handling --- + //Belongs to Constraint Length: + //Vector3 handleOut = Target.HandleOutPosition; + //Vector3 handleIn = Target.HandleInPosition; + + EditorGUI.BeginChangeCheck(); + Vector3 pOut; + Vector3 pIn; + bool chgOut = false; + bool chgIn = false; + if (Target.Spline.RestrictTo2D) + { + + Quaternion r = (Tools.pivotRotation == PivotRotation.Global) ? Target.Spline.transform.localRotation : Target.Spline.transform.rotation; + Handles.color = Color.yellow; + pIn = Target.HandleInPosition; + pIn = DTHandles.TinyHandle2D(GUIUtility.GetControlID(FocusType.Passive), pIn, r, cubeSize, Handles.CubeHandleCap); + + if (!CurvyProject.Instance.UseTiny2DHandles) + pIn = DTHandles.PositionHandle2D(GUIUtility.GetControlID(FocusType.Passive), pIn, r, positionHandleSize, (int)Target.Spline.Restricted2DPlane); + chgIn = Target.HandleInPosition != pIn; + Handles.color = Color.green; + pOut = Target.HandleOutPosition; + pOut = DTHandles.TinyHandle2D(GUIUtility.GetControlID(FocusType.Passive), pOut, r, cubeSize, Handles.CubeHandleCap); + + if (!CurvyProject.Instance.UseTiny2DHandles) + pOut = DTHandles.PositionHandle2D(GUIUtility.GetControlID(FocusType.Passive), pOut, r, positionHandleSize, (int)Target.Spline.Restricted2DPlane); + + chgOut = Target.HandleOutPosition != pOut; + + } + else + { + Color handlesGizmoAdditionalColor = Target.Spline.GizmoSelectionColor * 0.4f; + + pIn = DTHandles.PositionHandle( + GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), + GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), + GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), + Target.HandleInPosition, Tools.handleRotation, positionHandleSize, + 0.2f, handlesGizmoAdditionalColor); + chgIn = Target.HandleInPosition != pIn; + DTHandles.PushHandlesColor(Color.yellow); + Handles.CubeHandleCap(0, pIn, Quaternion.identity, HandleUtility.GetHandleSize(pIn) * cubeSize, EventType.Repaint); + DTHandles.PopHandlesColor(); + + pOut = DTHandles.PositionHandle( + GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), + GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), + GUIUtility.GetControlID(GetHashCode(), FocusType.Passive), + Target.HandleOutPosition, Tools.handleRotation, positionHandleSize, + 0.2f, handlesGizmoAdditionalColor); + chgOut = Target.HandleOutPosition != pOut; + DTHandles.PushHandlesColor(Color.green); + Handles.CubeHandleCap(0, pOut, Quaternion.identity, HandleUtility.GetHandleSize(pOut) * cubeSize, EventType.Repaint); + + DTHandles.PopHandlesColor(); + } + + Handles.color = Color.yellow; + Handles.DrawLine(pIn, Target.transform.position); + Handles.color = Color.green; + Handles.DrawLine(pOut, Target.transform.position); + + + if (chgOut || chgIn) + { + //Undo handling + { + const string undoingOperationLabel = "Move Handle"; + Undo.RecordObject(Target, undoingOperationLabel); + if (hasSynchronizedHandles) + Undo.RecordObjects( + Target.Connection.ControlPointsList.Where(cp => cp != Target).Select(cp => (Object)cp).ToArray() + , undoingOperationLabel); + } + + if (chgOut) + { + Target.SetBezierHandleOut(pOut, Space.World, CurvyProject.Instance.BezierMode); + Target.HandleOut = DTMath.SnapPrecision(Target.HandleOut, 3); + } + else + { + Target.SetBezierHandleIn(pIn, Space.World, CurvyProject.Instance.BezierMode); + Target.HandleIn = DTMath.SnapPrecision(Target.HandleIn, 3); + } + } + + if (EditorGUI.EndChangeCheck()) + { + EditorUtility.SetDirty(Target); + Target.Spline.SetDirty(Target, SplineDirtyingType.Everything); + /* + var lcons = CurvyProject.Instance.FindItem(); + if (lcons.On && Target.Spline.Length > lcons.MaxSplineLength) + { + Target.HandleOutPosition = handleOut; + Target.HandleInPosition = handleIn; + Target.SetDirty(); + } + */ + } + #endregion + + + } + if (mConnectionEditor) + mConnectionEditor.OnSceneGUI(); + // Snap Transform + if (Target && DT._UseSnapValuePrecision) + { + Target.transform.localPosition = DTMath.SnapPrecision(Target.transform.localPosition, 3); + Target.transform.localEulerAngles = DTMath.SnapPrecision(Target.transform.localEulerAngles, 3); + //Target.TTransform.FromTransform(Target.transform); + } + } + + void OnHierarchyWindowItemOnGUI(int instanceid, Rect selectionrect) + { + GameObject obj = EditorUtility.InstanceIDToObject(instanceid) as GameObject; + if (obj && obj == Selection.activeObject) + checkHotkeys(); + } + + + void TCBOptionsGUI() + { + if (Target.Spline && Target.Spline.Interpolation == CurvyInterpolation.TCB) + { + if (tOT.boolValue || tOC.boolValue || tOB.boolValue) + { + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("Set Catmul")) + { + tT0.floatValue = 0; tC0.floatValue = 0; tB0.floatValue = 0; + tT1.floatValue = 0; tC1.floatValue = 0; tB1.floatValue = 0; + } + if (GUILayout.Button("Set Cubic")) + { + tT0.floatValue = -1; tC0.floatValue = 0; tB0.floatValue = 0; + tT1.floatValue = -1; tC1.floatValue = 0; tB1.floatValue = 0; + } + if (GUILayout.Button("Set Linear")) + { + tT0.floatValue = 0; tC0.floatValue = -1; tB0.floatValue = 0; + tT1.floatValue = 0; tC1.floatValue = -1; tB1.floatValue = 0; + } + EditorGUILayout.EndHorizontal(); + } + } + } + + void ConnectionGUI(DTInspectorNode node) + { + if (mConnectionEditor != null && Target.Connection != null) + { + EditorGUILayout.BeginHorizontal(); + Target.Connection.name = EditorGUILayout.TextField("Name", Target.Connection.name); + if (GUILayout.Button(new GUIContent("Select", "Select the Connection GameObject"))) + DTSelection.SetGameObjects(Target.Connection); + EditorGUILayout.EndHorizontal(); + mConnectionEditor.OnInspectorGUI(); + + } + } + + protected override void OnCustomInspectorGUI() + { + + GUILayout.Space(5); + + CurvySpline spline = Target.Spline; + + if (spline && spline.IsInitialized && spline.Dirty == false) + { + EditorGUILayout.HelpBox( + "Control Point Distance: " + Target.Distance + + "\nSpline Length: " + spline.Length + + "\nControl Point Relative Distance: " + (Target.Distance / spline.Length) + " (= Distance / Length)" + + "\nControl Point TF: " + Target.TF + + "\nSegment Length: " + Target.Length + + "\nSegment Cache Points: " + Target.CacheSize, MessageType.Info); + } + else + EditorGUILayout.HelpBox("No parent spline or parent spline not ready", MessageType.Info); + + checkHotkeys(); + } + + + public override void OnInspectorGUI() + { + if (mConnectionEditor && mConnectionEditor.Target == null)//This happens when deleting a connection from the CurvySplineSegment inspector, and then re-adding a connection while still showing the same inspector + mConnectionEditor = null; + + if (Target && Target.Connection && mConnectionEditor == null) + ReadNodes(); + base.OnInspectorGUI(); + } + + void CBBakeOrientation() + { + if (Target && !Target.AutoBakeOrientation && Target.Spline && Target.ApproximationUp.Length > 0 + && GUILayout.Button("Bake Orientation to Transform")) + { +#if UNITY_EDITOR + Undo.RecordObject(Target.transform, "Bake Orientation"); +#endif + Target.BakeOrientationToTransform(); + } + GUI.enabled = true; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineSegmentEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineSegmentEditor.cs.meta new file mode 100644 index 00000000..447d6d17 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvySplineSegmentEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c238a26e5ac20834c8a9281b887c4922 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyStyles.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyStyles.cs new file mode 100644 index 00000000..d16bfa18 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyStyles.cs @@ -0,0 +1,1235 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Text; +using FluffyUnderware.CurvyEditor; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevToolsEditor.Extensions; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevToolsEditor; + +namespace FluffyUnderware.CurvyEditor +{ + public static class CurvyStyles + { + public static GUIStyle GizmoText + { + get + { + if (gizmoText == null) + { + gizmoText = new GUIStyle(); + gizmoText.fixedHeight = 15; + gizmoText.alignment = TextAnchor.MiddleCenter; + //gizmoText.fixedWidth = label.Length * 10; + //gizmoText.padding = new RectOffset(0,0,0,0); + //gizmoText.margin = new RectOffset(0,0,0,0); + //gizmoText.border = new RectOffset(0,0,0,0); + //gizmoText.overflow = new RectOffset(0,0,0,0); + //gizmoText.contentOffset = Vector2.zero; + Texture2D backgroundTexture = new Texture2D(1, 1); + backgroundTexture.SetPixel(0, 0, new Color(1, 1, 1, 0.3f)); + backgroundTexture.Apply(); + backgroundTexture.hideFlags = HideFlags.DontSave; + gizmoText.normal.background = backgroundTexture; + } + return gizmoText; + } + } + static GUIStyle gizmoText; + + public static GUIStyle ControllerCustomEventStyle + { + get + { + if (controllerCustomEventStyle == null) + { + controllerCustomEventStyle = new GUIStyle(); + controllerCustomEventStyle.fixedHeight = 15; + controllerCustomEventStyle.alignment = TextAnchor.MiddleCenter; + //gizmoText.fixedWidth = label.Length * 10; + //gizmoText.padding = new RectOffset(0,0,0,0); + //gizmoText.margin = new RectOffset(0,0,0,0); + //gizmoText.border = new RectOffset(0,0,0,0); + //gizmoText.overflow = new RectOffset(0,0,0,0); + //gizmoText.contentOffset = Vector2.zero; + Texture2D backgroundTexture = new Texture2D(1, 1); + backgroundTexture.SetPixel(0, 0, new Color(1, 1, 1, 0.3f)); + backgroundTexture.Apply(); + backgroundTexture.hideFlags = HideFlags.DontSave; + controllerCustomEventStyle.normal.background = backgroundTexture; + } + return controllerCustomEventStyle; + } + } + + static GUIStyle controllerCustomEventStyle; + + #region ### Buttons ### + public static GUIStyle BorderlessButton + { + get + { + if (mBorderlessButton == null) + { + mBorderlessButton = new GUIStyle(GUI.skin.label); + mBorderlessButton.padding = new RectOffset(-1, 3, -1, -1); + mBorderlessButton.imagePosition = ImagePosition.ImageOnly; + } + return mBorderlessButton; + } + } + static GUIStyle mBorderlessButton; + + public static GUIStyle SmallButton + { + get + { + if (mSmallButton == null) + { + mSmallButton = new GUIStyle(EditorStyles.miniButton); + mSmallButton.margin = new RectOffset(0, 0, 0, 0); + mSmallButton.padding = new RectOffset(1, 1, -1, -1); + //mSmallButton.imagePosition = ImagePosition.ImageOnly; + } + return mSmallButton; + } + } + static GUIStyle mSmallButton; + + public static GUIStyle ImageButton + { + get + { + if (mImageButton == null) + { + mImageButton = new GUIStyle(GUI.skin.button); + mImageButton.padding = new RectOffset(-1, -1, -1, -1); + mImageButton.imagePosition = ImagePosition.ImageOnly; + } + return mImageButton; + } + } + static GUIStyle mImageButton; + + #endregion + + #region ### Misc ### + + public static GUIStyle Foldout + { + get + { + if (mFoldout == null) + { + mFoldout = new GUIStyle(EditorStyles.foldout); + mFoldout.fontStyle = FontStyle.Bold; + mFoldout.margin.top += 2; + mFoldout.margin.bottom += 4; + + } + return mFoldout; + } + } + static GUIStyle mFoldout; + + public static GUIStyle HelpBox + { + get + { + if (mHelpBox == null) + { + mHelpBox = new GUIStyle(GUI.skin.GetStyle("HelpBox")); + mHelpBox.richText = true; + } + return mHelpBox; + } + } + static GUIStyle mHelpBox; + + public static GUIStyle Toolbar + { + get + { + if (mToolbar == null) + { + mToolbar = new GUIStyle(EditorStyles.toolbar); + mToolbar.fixedHeight = 0; + mToolbar.padding = new RectOffset(6, 6, 4, 4); + } + return mToolbar; + } + } + public static GUIStyle mToolbar; + + public static GUIStyle RoundRectangle + { + get + { + if (mRoundRectangle == null) + { + mRoundRectangle = new GUIStyle(); + mRoundRectangle.normal.background = CurvyResource.Load("roundrectangle,16,16"); + mRoundRectangle.border = new RectOffset(6, 6, 6, 6); + mRoundRectangle.overflow = new RectOffset(1, 0, 0, 1); + } + return mRoundRectangle; + } + } + static GUIStyle mRoundRectangle; + + public static GUIStyle ToolbarItem + { + get + { + if (mToolbarItem == null) + { + mToolbarItem = new GUIStyle(GUI.skin.button); + mToolbarItem.alignment = TextAnchor.MiddleLeft; + mToolbarItem.padding.top = 4; + mToolbarItem.padding.bottom = 2; + } + return mToolbarItem; + } + } + static GUIStyle mToolbarItem; + + #endregion + + #region ### CG Colors ### + + public static Color IOnRequestProcessingTitleColor + { + get + { + if (EditorGUIUtility.isProSkin) return new Color(0.2f, 0.7f, 0.2f); + else return new Color(0.1f, 0.5f, 0.1f); + } + } + + public static Color IOnRequestProcessingSlotColor + { + get + { + if (EditorGUIUtility.isProSkin) return new Color(0.2f, 0.7f, 0.2f); + else return new Color(0.1f, 0.5f, 0.1f); + } + } + + #endregion + + #region ### CG Module Window ### + public static int ModuleWindowTitleHeight = 26; + + public static GUIStyle ModuleWindow + { + get + { + if (mModuleWindow == null) + { + mModuleWindow = new GUIStyle(GUI.skin.window); + mModuleWindow.normal.background = TexModuleWindow; + mModuleWindow.onNormal.background = TexModuleWindow1; + mModuleWindow.border = new RectOffset(10, 12, 24, 13); + mModuleWindow.padding = new RectOffset(0, 0, 24, 6); + mModuleWindow.contentOffset = new Vector2(0, -18); + if (DTEditorUtility.UsesNewEditorUI) +#pragma warning disable 162 + mModuleWindow.overflow = new RectOffset(10, 11, 8, 11); + else + mModuleWindow.overflow = new RectOffset(2, 5, 1, 3); +#pragma warning restore 162 + mModuleWindow.richText = true; + } + return mModuleWindow; + } + } + static GUIStyle mModuleWindow; + + public static GUIStyle ModuleWindowSlotBackground + { + get + { + if (mModuleWindowSlotBackground == null) + { + mModuleWindowSlotBackground = new GUIStyle(GUI.skin.box); + mModuleWindowSlotBackground.padding = new RectOffset(1, 1, 1, 1); + mModuleWindowSlotBackground.margin = new RectOffset(1, 1, 0, 0); + } + return mModuleWindowSlotBackground; + } + } + static GUIStyle mModuleWindowSlotBackground; + + public static GUIStyle ModuleWindowBackground + { + get + { + if (mModuleWindowBackground == null) + { + mModuleWindowBackground = new GUIStyle(GUI.skin.box); + mModuleWindowBackground.padding = new RectOffset(1, 1, 1, 1); + mModuleWindowBackground.margin = new RectOffset(1, 1, 5, 0); + + } + return mModuleWindowBackground; + } + } + static GUIStyle mModuleWindowBackground; + + + public static Texture2D HelpTexture + { + get + { + if (mHelpTexture == null) + // mHelpTexture=(Texture2D)EditorGUIUtility.Load("icons/_Help.png"); + // mHelpTexture = CurvyResource.Load("help12,12,12"); + mHelpTexture = CurvyResource.Load(GetTextureFilename("help12", 12, 12)); + return mHelpTexture; + } + } + static Texture2D mHelpTexture; + + public static Texture2D EditTexture + { + get + { + if (mEditTexture == null) + // mEditTexture = CurvyResource.Load("editsmall,12,12"); + mEditTexture = CurvyResource.Load(GetTextureFilename("editsmall", 12, 12)); + return mEditTexture; + } + } + static Texture2D mEditTexture; + + + public static GUIStyle GlowBox + { + get + { + if (mGlowBox == null) + { + mGlowBox = new GUIStyle(); + mGlowBox.normal.background = CurvyResource.Load("glowbox,26,26"); + mGlowBox.border = new RectOffset(11, 11, 11, 11); + mGlowBox.overflow = new RectOffset(1, 0, 0, 1); + } + return mGlowBox; + } + } + static GUIStyle mGlowBox; + + + public static GUIStyle ShowDetailsButton + { + get + { + if (showDetailsButton == null) + { + showDetailsButton = new GUIStyle(EditorStyles.toolbarButton); + showDetailsButton.margin.left = 2; + showDetailsButton.margin.right = 1; + } + return showDetailsButton; + } + } + static GUIStyle showDetailsButton; + + #endregion + + #region ### CG Slots ### + + public static GUIStyle Slot + { + get + { + if (mSlot == null) + { + mSlot = new GUIStyle(); + mSlot.normal.background = EditorGUIUtility.whiteTexture; + mSlot.fixedHeight = 17; + mSlot.fixedWidth = 17; + mSlot.normal.textColor = new Color(0, 0, 0, 0.6f); + mSlot.alignment = TextAnchor.MiddleCenter; + mSlot.contentOffset = new Vector2(-1f, -1f); + } + return mSlot; + } + } + static GUIStyle mSlot; + + public static GUIStyle GetSlotLabelStyle(CGModuleSlot slot) + { + GUIStyle st = new GUIStyle(); + st.fixedHeight = 18; + // Linked Slots => Bold + // OnRequestProcessing => Green + // Optional => Italic + st.fontStyle = (slot.IsLinked) ? FontStyle.Bold : FontStyle.Normal; + st.normal.textColor = new Color(1, 1, 1, 0.6f).SkinAwareColor(); + + CGModuleInputSlot inputSlot = (slot as CGModuleInputSlot); + + if (inputSlot) + { + InputSlotInfo myInfo = inputSlot.InputInfo; + if (myInfo.Optional) + { + st.fontStyle = (st.fontStyle == FontStyle.Bold) ? st.fontStyle = FontStyle.BoldAndItalic : FontStyle.Italic; + } + if (inputSlot.Module is IOnRequestProcessing || myInfo.RequestDataOnly) + st.normal.textColor = IOnRequestProcessingSlotColor.SkinAwareColor(); + st.alignment = TextAnchor.MiddleLeft; + st.margin.left = 2; + } + else + { + if (slot.Module is IOnRequestProcessing) + st.normal.textColor = IOnRequestProcessingSlotColor.SkinAwareColor(); + st.alignment = TextAnchor.MiddleRight; + st.margin.right = 2; + + } + + st.padding.bottom = 3; + + return st; + } + + + + #endregion + + #region ### Textures ### + + public static string GetTextureFilename(string name, int width, int height, string darkskinPostfix = "_dark", string ligthskinPostfix = "_light") + { + StringBuilder sb = new StringBuilder(); + sb.Append(name); + sb.Append(EditorGUIUtility.isProSkin ? darkskinPostfix : ligthskinPostfix); + sb.Append(","); + sb.Append(width); + sb.Append(","); + sb.Append(height); + + string filename = sb.ToString(); + return filename; + } + + public static Texture2D TexModuleWindow + { + get + { + if (mTexModuleWindow == null) + { + mTexModuleWindow = CurvyResource.Load((EditorGUIUtility.isProSkin) ? "cgwindowdark,64,64" : "cgwindowlight,64,64"); + //mTexModuleWindow.hideFlags = HideFlags.DontSave; + } + return mTexModuleWindow; + } + } + static Texture2D mTexModuleWindow; + + public static Texture2D TexModuleWindow1 + { + get + { + if (mTexModuleWindow1 == null) + { + mTexModuleWindow1 = CurvyResource.Load((EditorGUIUtility.isProSkin) ? "cgwindowdark1,64,64" : "cgwindowlight1,64,64"); + //mTexModuleWindow1.hideFlags = HideFlags.DontSave; + } + return mTexModuleWindow1; + } + } + static Texture2D mTexModuleWindow1; + + public static Texture2D TexGridSnap + { + get + { + if (mTexGridSnap == null) + { + mTexGridSnap = CurvyResource.Load(GetTextureFilename("cggridstep", 16, 16)); + //mTexGridSnap.hideFlags = HideFlags.DontSave; + } + return mTexGridSnap; + } + } + static Texture2D mTexGridSnap; + + public static Texture2D TexPlay + { + get + { + if (mTexPlay == null) + { + mTexPlay = CurvyResource.Load("play,24,24"); + //mTexPlay.hideFlags=HideFlags.DontSave; + } + return mTexPlay; + } + } + static Texture2D mTexPlay; + + public static Texture2D TexStop + { + get + { + if (mTexStop == null) + { + mTexStop = CurvyResource.Load("stop,24,24"); + //mTexStop.hideFlags=HideFlags.DontSave; + } + return mTexStop; + } + } + static Texture2D mTexStop; + + public static Texture2D TexLogoBig + { + get + { + if (mTexLogoBig == null) + { + // mTexLogoBig = CurvyResource.Load( (EditorGUIUtility.isProSkin) ? "curvylogo_light,436,160" : "curvylogo_dark,436,160"); + mTexLogoBig = CurvyResource.Load(GetTextureFilename("curvylogo", 436, 160)); + //mTexLogoBig.hideFlags = HideFlags.DontSave; + } + return mTexLogoBig; + } + } + static Texture2D mTexLogoBig; + + public static Texture2D TexLogoSmall + { + get + { + if (mTexLogoSmall == null) + { + mTexLogoSmall = CurvyResource.Load(GetTextureFilename("curvylogo_small", 178, 124)); + } + return mTexLogoSmall; + } + } + static Texture2D mTexLogoSmall; + + public static Texture2D TexConnection + { + get + { + if (mTexConnection == null) + { + // mTexConnection = CurvyResource.Load("connection,24,24"); + mTexConnection = CurvyResource.Load(GetTextureFilename("connection", 24, 24)); + //mTexConnection.hideFlags = HideFlags.DontSave; + } + return mTexConnection; + } + } + static Texture2D mTexConnection; + + public static Texture2D TexConnectionPos + { + get + { + if (mTexConnectionPos == null) + { + // mTexConnectionPos = CurvyResource.Load("connectionpos,24,24"); + mTexConnectionPos = CurvyResource.Load(GetTextureFilename("connectionpos", 24, 24)); + //mTexConnectionPos.hideFlags = HideFlags.DontSave; + } + return mTexConnectionPos; + } + } + static Texture2D mTexConnectionPos; + + public static Texture2D TexConnectionRot + { + get + { + if (mTexConnectionRot == null) + { + // mTexConnectionRot = CurvyResource.Load("connectionrot,24,24"); + mTexConnectionRot = CurvyResource.Load(GetTextureFilename("connectionrot", 24, 24)); + //mTexConnectionRot.hideFlags = HideFlags.DontSave; + } + return mTexConnectionRot; + } + } + static Texture2D mTexConnectionRot; + + public static Texture2D TexConnectionFull + { + get + { + if (mTexConnectionFull == null) + { + // mTexConnectionFull = CurvyResource.Load("connectionfull,24,24"); + mTexConnectionFull = CurvyResource.Load(GetTextureFilename("connectionfull", 24, 24)); + //mTexConnectionFull.hideFlags = HideFlags.DontSave; + } + return mTexConnectionFull; + } + } + static Texture2D mTexConnectionFull; + + public static Texture2D HierarchyConnectionTexture + { + get + { + if (mHierarchyConnectionTexture == null) + { + mHierarchyConnectionTexture = CurvyResource.Load("connectionsmall,12,12"); + // mHierarchyConnectionTexture = CurvyResource.Load (GetTextureFilename ("connectionsmall", 12, 12)); + //mHierarchyConnectionTexture.hideFlags = HideFlags.DontSave; + } + return mHierarchyConnectionTexture; + } + } + static Texture2D mHierarchyConnectionTexture; + + public static Texture2D RndSeedTexture + { + get + { + if (mRndSeedTexture == null) + { + mRndSeedTexture = CurvyResource.Load("rndseed,12,12"); + // mRndSeedTexture = CurvyResource.Load (GetTextureFilename ("rndseed", 12, 12)); + // mRndSeedTexture.hideFlags = HideFlags.DontSave; + } + return mRndSeedTexture; + } + } + static Texture2D mRndSeedTexture; + + public static Texture2D DeleteTexture + { + get + { + if (mDeleteTexture == null) + { + // mDeleteTexture = CurvyResource.Load("delete16,16,16"); + mDeleteTexture = CurvyResource.Load(GetTextureFilename("delete16", 16, 16)); + //mDeleteTexture.hideFlags = HideFlags.DontSave; + } + return mDeleteTexture; + } + } + static Texture2D mDeleteTexture; + + public static Texture2D DeleteBTexture + { + get + { + if (deleteBTexture == null) + { + // mDeleteTexture = CurvyResource.Load("delete16,16,16"); + deleteBTexture = CurvyResource.Load(GetTextureFilename("deleteB16", 16, 16)); + //mDeleteTexture.hideFlags = HideFlags.DontSave; + } + return deleteBTexture; + } + } + static Texture2D deleteBTexture; + + public static Texture2D SaveResourcesTexture + { + get + { + if (saveResourcesTexture == null) + { + saveResourcesTexture = CurvyResource.Load(GetTextureFilename("save_resources", 16, 16)); + } + return saveResourcesTexture; + } + } + static Texture2D saveResourcesTexture; + + public static Texture2D RefreshTexture + { + get + { + if (mRefreshTexture == null) + { + // mRefreshTexture = CurvyResource.Load("reload,16,16"); + mRefreshTexture = CurvyResource.Load(GetTextureFilename("reload", 16, 16)); + //mRefreshTexture.hideFlags = HideFlags.DontSave; + } + return mRefreshTexture; + } + } + static Texture2D mRefreshTexture; + + public static Texture2D ReorderTexture + { + get + { + if (mReorderTexture == null) + { + mReorderTexture = CurvyResource.Load(GetTextureFilename("reorder", 16, 16)); + } + return mReorderTexture; + } + } + static Texture2D mReorderTexture; + + public static Texture2D CGAutoFoldTexture + { + get + { + if (mCGAutoFoldTexture == null) + { + // mCGAutoFoldTexture = CurvyResource.Load("autofold,16,16"); + mCGAutoFoldTexture = CurvyResource.Load(GetTextureFilename("autofold", 16, 16)); + //mCGAutoFoldTexture.hideFlags = HideFlags.DontSave; + } + return mCGAutoFoldTexture; + } + } + static Texture2D mCGAutoFoldTexture; + + public static Texture2D AddTemplateTexture + { + get + { + if (mAddTemplateTexture == null) + { + // mAddTemplateTexture = CurvyResource.Load("addCGTemplate,16,16"); + mAddTemplateTexture = CurvyResource.Load(GetTextureFilename("addCGTemplate", 16, 16)); + //mAddTemplateTexture.hideFlags = HideFlags.DontSave; + } + return mAddTemplateTexture; + } + } + static Texture2D mAddTemplateTexture; + + public static Texture2D DebugTexture + { + get + { + if (mDebugTexture == null) + { + // mDebugTexture = CurvyResource.Load("debug,16,16"); + mDebugTexture = CurvyResource.Load(GetTextureFilename("debug", 16, 16)); + //mDebugTexture.hideFlags = HideFlags.DontSave; + } + return mDebugTexture; + } + } + static Texture2D mDebugTexture; + + public static Texture2D DebugSceneViewTexture + { + get + { + return (EditorGUIUtility.isProSkin) ? + EditorGUIUtility.IconContent("d_UnityEditor.SceneView").image as Texture2D : + EditorGUIUtility.IconContent("UnityEditor.SceneView").image as Texture2D; + } + } + + public static Texture2D LineTexture + { + get + { + if (mLineTexture == null) + { + mLineTexture = new Texture2D(1, 2); + Color c = Color.white;//.SkinAwareColor(); + Color ca = new Color(c.r, c.g, c.b, 0); + mLineTexture.SetPixels(new Color[] { ca, c }); + //mLineTexture.hideFlags = HideFlags.DontSave; + mLineTexture.Apply(); + } + return mLineTexture; + } + } + static Texture2D mLineTexture; + + public static Texture2D RequestLineTexture + { + get + { + if (mRequestLineTexture == null) + { + mRequestLineTexture = new Texture2D(2, 2); + Color c = Color.white; + Color ca = new Color(c.r, c.g, c.b, 0); + mRequestLineTexture.SetPixels(new Color[] { ca, Color.black, c, Color.black }); + //mRequestLineTexture.hideFlags = HideFlags.DontSave; + mRequestLineTexture.Apply(); + } + return mRequestLineTexture; + } + } + static Texture2D mRequestLineTexture; + + public static Texture2D InspectorTexture + { + get + { + return EditorGUIUtility.IconContent("d_UnityEditor.InspectorWindow").image as Texture2D; + } + } + + public static Texture2D ExpandTexture + { + get + { + if (mExpandTexture == null) + { + // mExpandTexture = CurvyResource.Load("expand16,16,16"); + mExpandTexture = CurvyResource.Load(GetTextureFilename("expand16", 16, 16)); + //mExpandTexture.hideFlags = HideFlags.DontSave; + } + return mExpandTexture; + } + } + static Texture2D mExpandTexture; + + public static Texture2D SynchronizeTexture + { + get + { + if (mSynchronizeTexture == null) + { + // mSynchronizeTexture = CurvyResource.Load("synchronize,16,16"); + mSynchronizeTexture = CurvyResource.Load(GetTextureFilename("synchronize", 16, 16)); + //mSynchronizeTexture.hideFlags = HideFlags.DontSave; + } + return mSynchronizeTexture; + } + } + static Texture2D mSynchronizeTexture; + + public static Texture2D CollapseTexture + { + get + { + if (mCollapseTexture == null) + { + // mCollapseTexture = CurvyResource.Load("collapse16,16,16"); + mCollapseTexture = CurvyResource.Load(GetTextureFilename("collapse16", 16, 16)); + //mCollapseTexture.hideFlags = HideFlags.DontSave; + } + return mCollapseTexture; + } + } + static Texture2D mCollapseTexture; + + public static Texture2D OpenGraphTexture + { + get + { + if (mOpenGraphTexture == null) + { + // mOpenGraphTexture = CurvyResource.Load("opengraph,24,24"); + mOpenGraphTexture = CurvyResource.Load(GetTextureFilename("opengraph", 24, 24)); + //mOpenGraphTexture.hideFlags = HideFlags.DontSave; + } + return mOpenGraphTexture; + } + } + static Texture2D mOpenGraphTexture; + + public static Texture2D DeleteSmallTexture + { + get + { + if (mDeleteSmallTexture == null) + { + // mDeleteSmallTexture = CurvyResource.Load ("deletesmall,12,12"); + mDeleteSmallTexture = CurvyResource.Load(GetTextureFilename("deletesmall", 12, 12)); + //mDeleteSmallTexture.hideFlags = HideFlags.DontSave; + } + return mDeleteSmallTexture; + } + } + static Texture2D mDeleteSmallTexture; + + public static Texture2D ClearSmallTexture + { + get + { + if (mClearSmallTexture == null) + { + // mClearSmallTexture = CurvyResource.Load ("clearsmall,12,12"); + mClearSmallTexture = CurvyResource.Load(GetTextureFilename("clearsmall", 12, 12)); + //mClearSmallTexture.hideFlags = HideFlags.DontSave; + } + return mClearSmallTexture; + } + } + static Texture2D mClearSmallTexture; + + public static Texture2D SelectTexture + { + get + { + if (mSelectTexture == null) + { + // mSelectTexture = CurvyResource.Load("selectsmall,12,12"); + mSelectTexture = CurvyResource.Load(GetTextureFilename("selectsmall", 12, 12)); + //mSelectTexture.hideFlags = HideFlags.DontSave; + } + return mSelectTexture; + } + } + static Texture2D mSelectTexture; + + public static Texture2D AddSmallTexture + { + get + { + if (mAddSmallTexture == null) + { + // mAddSmallTexture = CurvyResource.Load("addsmall,12,12"); + mAddSmallTexture = CurvyResource.Load(GetTextureFilename("addsmall", 12, 12)); + // mAddSmallTexture.hideFlags = HideFlags.DontSave; + } + return mAddSmallTexture; + } + } + static Texture2D mAddSmallTexture; + + #region --- Toolbar Icons --- + + + + public static Texture2D IconPrefs + { + get + { + if (mIconPrefs == null) + { + mIconPrefs = CurvyResource.Load("prefs,24,24"); + mIconPrefs.hideFlags = HideFlags.DontSave; + } + return mIconPrefs; + } + } + static Texture2D mIconPrefs; + + public static Texture2D IconAbout + { + get + { + if (mIconAbout == null) + { + mIconAbout = CurvyResource.Load("about,24,24"); + mIconAbout.hideFlags = HideFlags.DontSave; + } + return mIconAbout; + } + } + static Texture2D mIconAbout; + + public static Texture2D IconAsmdef + { + get + { + if (mIconAsmdef == null) + { + mIconAsmdef = CurvyResource.Load("asmdef,24,24"); + mIconAsmdef.hideFlags = HideFlags.DontSave; + } + return mIconAsmdef; + } + } + static Texture2D mIconAsmdef; + + public static Texture2D IconHelp + { + get + { + if (mIconHelp == null) + { + mIconHelp = CurvyResource.Load("help,24,24"); + mIconHelp.hideFlags = HideFlags.DontSave; + } + return mIconHelp; + } + } + static Texture2D mIconHelp; + + public static Texture2D IconWWW + { + get + { + if (mIconWWW == null) + { + mIconWWW = CurvyResource.Load("web,24,24"); + mIconWWW.hideFlags = HideFlags.DontSave; + } + return mIconWWW; + } + } + static Texture2D mIconWWW; + + public static Texture2D IconBugReporter + { + get + { + if (mIconBugReporter == null) + { + mIconBugReporter = CurvyResource.Load("bugreport,24,24"); + mIconBugReporter.hideFlags = HideFlags.DontSave; + } + return mIconBugReporter; + } + } + static Texture2D mIconBugReporter; + + public static Texture2D IconNewShape + { + get + { + if (mIconNewShape == null) + { + mIconNewShape = CurvyResource.Load("shapewizard,24,24"); + mIconNewShape.hideFlags = HideFlags.DontSave; + } + return mIconNewShape; + } + } + static Texture2D mIconNewShape; + + public static Texture2D IconNewGroup + { + get + { + if (mIconNewGroup == null) + { + mIconNewGroup = CurvyResource.Load("group,24,24"); + mIconNewGroup.hideFlags = HideFlags.DontSave; + } + return mIconNewGroup; + } + } + static Texture2D mIconNewGroup; + + public static Texture2D IconNewCG + { + get + { + if (mIconNewCG == null) + { + mIconNewCG = CurvyResource.Load(GetTextureFilename("opengraph", 24, 24)); + mIconNewCG.hideFlags = HideFlags.DontSave; + } + return mIconNewCG; + } + } + static Texture2D mIconNewCG; + + + public static Texture2D IconCP + { + get + { + if (mIconCP == null) + { + mIconCP = CurvyResource.Load("singlecp,24,24"); + mIconCP.hideFlags = HideFlags.DontSave; + } + return mIconCP; + } + } + static Texture2D mIconCP; + + public static Texture2D IconCPOff + { + get + { + if (mIconCPOff == null) + { + mIconCPOff = CurvyResource.Load("singlecp_off,24,24"); + mIconCPOff.hideFlags = HideFlags.DontSave; + } + return mIconCPOff; + } + } + static Texture2D mIconCPOff; + + public static Texture2D IconRaycast + { + get + { + if (mIconRaycast == null) + { + mIconRaycast = CurvyResource.Load("raycast,24,24"); + mIconRaycast.hideFlags = HideFlags.DontSave; + } + return mIconRaycast; + } + } + static Texture2D mIconRaycast; + + public static Texture2D IconRaycastOff + { + get + { + if (mIconRaycastOff == null) + { + mIconRaycastOff = CurvyResource.Load("raycast_off,24,24"); + mIconRaycastOff.hideFlags = HideFlags.DontSave; + } + return mIconRaycastOff; + } + } + static Texture2D mIconRaycastOff; + + public static Texture2D IconSubdivide + { + get + { + if (mIconSubdivide == null) + { + mIconSubdivide = CurvyResource.Load("subdivide,24,24"); + mIconSubdivide.hideFlags = HideFlags.DontSave; + } + return mIconSubdivide; + } + } + static Texture2D mIconSubdivide; + + public static Texture2D IconSimplify + { + get + { + if (mIconSimplify == null) + { + mIconSimplify = CurvyResource.Load("simplify,24,24"); + mIconSimplify.hideFlags = HideFlags.DontSave; + } + return mIconSimplify; + } + } + static Texture2D mIconSimplify; + + public static Texture2D IconEqualize + { + get + { + if (mIconEqualize == null) + { + mIconEqualize = CurvyResource.Load("equalize,24,24"); + mIconEqualize.hideFlags = HideFlags.DontSave; + } + return mIconEqualize; + } + } + static Texture2D mIconEqualize; + + public static Texture2D IconMeshExport + { + get + { + if (mIconMeshExport == null) + { + mIconMeshExport = CurvyResource.Load("exportmesh,24,24"); + mIconMeshExport.hideFlags = HideFlags.DontSave; + } + return mIconMeshExport; + } + } + static Texture2D mIconMeshExport; + + public static Texture2D IconSyncFromHierarchy + { + get + { + if (mIconSyncFromHierarchy == null) + { + mIconSyncFromHierarchy = CurvyResource.Load("syncfromhierarchy,24,24"); + mIconSyncFromHierarchy.hideFlags = HideFlags.DontSave; + } + return mIconSyncFromHierarchy; + } + } + static Texture2D mIconSyncFromHierarchy; + + public static Texture2D IconSelectContainingConnections + { + get + { + if (mIconSelectContainingConnections == null) + { + mIconSelectContainingConnections = CurvyResource.Load("containingcon,24,24"); + mIconSelectContainingConnections.hideFlags = HideFlags.DontSave; + } + return mIconSelectContainingConnections; + } + } + static Texture2D mIconSelectContainingConnections; + + public static Texture2D IconAxisXY + { + get + { + if (mIconAxisXY == null) + { + mIconAxisXY = CurvyResource.Load("axisxy,24,24"); + mIconAxisXY.hideFlags = HideFlags.DontSave; + } + return mIconAxisXY; + } + } + static Texture2D mIconAxisXY; + + public static Texture2D IconAxisXZ + { + get + { + if (mIconAxisXZ == null) + { + mIconAxisXZ = CurvyResource.Load("axisxz,24,24"); + mIconAxisXZ.hideFlags = HideFlags.DontSave; + } + return mIconAxisXZ; + } + } + static Texture2D mIconAxisXZ; + + public static Texture2D IconAxisYZ + { + get + { + if (mIconAxisYZ == null) + { + mIconAxisYZ = CurvyResource.Load("axisyz,24,24"); + mIconAxisYZ.hideFlags = HideFlags.DontSave; + } + return mIconAxisYZ; + } + } + static Texture2D mIconAxisYZ; + + public static Texture2D IconView + { + get + { + if (iconView == null) + { + iconView = CurvyResource.Load("view,24,24"); + iconView.hideFlags = HideFlags.DontSave; + } + return iconView; + } + } + static Texture2D iconView; + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyStyles.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyStyles.cs.meta new file mode 100644 index 00000000..31425963 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyStyles.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e66ce90e46fc2b144b0e3b7a8c1b7d88 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyToolbar.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyToolbar.cs new file mode 100644 index 00000000..b48e9220 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyToolbar.cs @@ -0,0 +1,1736 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevToolsEditor; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools.Extensions; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.Curvy.Shapes; +using FluffyUnderware.Curvy.Generator; +using System.Linq; +using FluffyUnderware.Curvy.Controllers; +using FluffyUnderware.CurvyEditor.Generator; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; +using Object = UnityEngine.Object; + +namespace FluffyUnderware.CurvyEditor.UI +{ + [ToolbarItem(10, "Curvy", "Options", "Curvy Options", "curvyicon_dark,24,24", "curvyicon_light,24,24")] + public class TBOptions : DTToolbarToggleButton + { + + public override string StatusBarInfo { get { return "Open Curvy Options menu"; } } + + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + SetElementSize(ref r, 32, 32); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconPrefs, "Preferences"))) + { +#if UNITY_2018_3_OR_NEWER + DT.OpenPreferencesWindow(CurvyProject.CurvySettingsProvider.GetPreferencesPath()); +#else + DT.OpenPreferencesWindow(); +#endif + On = false; + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconAsmdef, "Generate Assembly Definitions"))) + { + CurvyEditorUtility.GenerateAssemblyDefinitions(); + On = false; + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconHelp, "Online Manual"))) + { + AboutWindow.OpenDocs(); + On = false; + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconWWW, "Curvy Website"))) + { + AboutWindow.OpenWeb(); + On = false; + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconBugReporter, "Report Bug"))) + { + CurvyEditorUtility.SendBugReport(); + On = false; + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconAbout, "About Curvy"))) + AboutWindow.Open(); + + + + } + + public override void OnSelectionChange() + { + Visible = CurvyProject.Instance.ShowGlobalToolbar || DTSelection.HasComponent(true); + } + + } + + [ToolbarItem(12, "Curvy", "View", "View Settings", "viewsettings,24,24")] + public class TBViewSetttings : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Set Curvy Scene View Visiblity"; } } + + + + public override void OnSelectionChange() + { + Visible = CurvyProject.Instance.ShowGlobalToolbar || DTSelection.HasComponent(true); + } + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + bool b; + bool v; + + Background(r, 134, 230); + SetElementSize(ref r, 134, 19); + + EditorGUI.BeginChangeCheck(); + b = (CurvyGlobalManager.Gizmos == CurvySplineGizmos.None); + b = GUI.Toggle(r, b, "None"); + if (b) + CurvyGlobalManager.Gizmos = CurvySplineGizmos.None; + // Curve + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowCurveGizmo; + v = GUI.Toggle(r, b, "Curve"); + if (b != v) + CurvyGlobalManager.ShowCurveGizmo = v; + // Connection + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowConnectionsGizmo; + v = GUI.Toggle(r, b, "Connections"); + if (b != v) + CurvyGlobalManager.ShowConnectionsGizmo = v; + // Orientation Anchor + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowOrientationAnchorsGizmo; + v = GUI.Toggle(r, b, "Orientation Anchors"); + if (b != v) + CurvyGlobalManager.ShowOrientationAnchorsGizmo = v; + // Approximation + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowApproximationGizmo; + v = GUI.Toggle(r, b, "Approximations"); + if (b != v) + CurvyGlobalManager.ShowApproximationGizmo = v; + // Orientation + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowOrientationGizmo; + v = GUI.Toggle(r, b, "Orientation"); + if (b != v) + CurvyGlobalManager.ShowOrientationGizmo = v; + // Tangents + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowTangentsGizmo; + v = GUI.Toggle(r, b, "Tangents"); + if (b != v) + CurvyGlobalManager.ShowTangentsGizmo = v; + // TF + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowTFsGizmo; + v = GUI.Toggle(r, b, "TF"); + if (b != v) + CurvyGlobalManager.ShowTFsGizmo = v; + // Distance + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowRelativeDistancesGizmo; + v = GUI.Toggle(r, b, "Relative Distances"); + if (b != v) + CurvyGlobalManager.ShowRelativeDistancesGizmo = v; + // UserValues + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowMetadataGizmo; + v = GUI.Toggle(r, b, "Metadata"); + if (b != v) + CurvyGlobalManager.ShowMetadataGizmo = v; + // Labels + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowLabelsGizmo; + v = GUI.Toggle(r, b, "Labels"); + if (b != v) + CurvyGlobalManager.ShowLabelsGizmo = v; + // Bounds + AdvanceBelow(ref r); + b = CurvyGlobalManager.ShowBoundsGizmo; + v = GUI.Toggle(r, b, "Bounds"); + if (b != v) + CurvyGlobalManager.ShowBoundsGizmo = v; + + if (EditorGUI.EndChangeCheck()) + CurvyProject.Instance.SavePreferences(); + } + + } + + [ToolbarItem(30, "Curvy", "Create", "Create", "add,24,24")] + public class TBNewMenu : DTToolbarToggleButton + { + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + SetElementSize(ref r, 32, 32); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconNewShape, "Shape"))) + { + CurvyMenu.CreateCurvySpline(new MenuCommand(Selection.activeGameObject)); + Project.FindItem().OnClick(); + + On = false; + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconNewCG, "Generator"))) + { + CurvyGenerator cg = new GameObject("Curvy Generator", typeof(CurvyGenerator)).GetComponent(); + CurvyMenu.ApplyIncrementalNameToGenerator(cg); + Undo.RegisterCreatedObjectUndo(cg.gameObject, "Create Generator"); + if (cg) + { + GameObject parent = DTSelection.GetGameObject(false); + if (parent != null) + { + Undo.SetTransformParent(cg.transform, parent.transform, "Create Generator"); + cg.transform.localPosition = Vector3.zero; + cg.transform.localRotation = Quaternion.identity; + cg.transform.localScale = Vector3.one; + } + // if a spline is selected, create an Input module + if (DTSelection.HasComponent()) + { + InputSplinePath mod = cg.AddModule(); + mod.Spline = DTSelection.GetAs(); + } + DTSelection.SetGameObjects(cg); + CGGraph.Open(cg); + } + On = false; + } + } + + public override void OnSelectionChange() + { + Visible = CurvyProject.Instance.ShowGlobalToolbar || DTSelection.HasComponent(true); + } + + } + + [ToolbarItem(32, "Curvy", "Draw Spline", "Draw Splines", "draw,24,24")] + public class TBDrawControlPoints : DTToolbarToggleButton + { + private enum RayCastPlane + { + Undefinded, + LocalXY, + GlobalXY, + LocalYZ, + GlobalYZ, + LocalXZ, + GlobalXZ, + ViewPlane + } + + private RayCastPlane rayCastPlane = RayCastPlane.LocalXZ; + + public override string StatusBarInfo { get { return "Create Splines and Control Points"; } } + + enum ModeEnum + { + None = 0, + Add = 1, + Pick = 2, + + } + + ModeEnum Mode = ModeEnum.None; + + CurvySplineSegment selectedCP; + CurvySpline selectedSpline; + + public TBDrawControlPoints() + { + KeyBindings.Add(new EditorKeyBinding("Toggle Draw Mode", "", KeyCode.Space)); + } + + + + public override void HandleEvents(Event e) + { + base.HandleEvents(e); + if (On && DTHandles.MouseOverSceneView) + { + Mode = ModeEnum.None; + if (e.control && !e.alt) // Prevent that Panning (CTRL+ALT+LMB) creates CP'S + { + Mode = ModeEnum.Add; + if (e.shift) + Mode |= ModeEnum.Pick; + } + + if (e.type == EventType.MouseDown) + { + if (Mode.HasFlag(ModeEnum.Add)) + { + addCP(e.mousePosition, Mode.HasFlag(ModeEnum.Pick), e.button == 1); + DTGUI.UseEvent(GetHashCode(), e); + } + + } + if (Mode.HasFlag(ModeEnum.Add)) + { + string bLmbBAddControlPointBRmbBAddSmartConnect = + "[LMB] on empty space: Add Control Point\n" + + "[LMB] on first Control Point: Close/Open the spline\n" + + "[RMB] on empty space: Add & Connect to new spline\n" + + "[RMB] on segment: Add & Connect to existing spline"; + + if (Mode.HasFlag(ModeEnum.Pick)) + { + //[LMB On first Control Point] Close/Open the spline + _StatusBar.Set(bLmbBAddControlPointBRmbBAddSmartConnect, "DrawMode"); + } + else + _StatusBar.Set($"{bLmbBAddControlPointBRmbBAddSmartConnect}\n[Shift] Raycast", "DrawMode"); + } + else + _StatusBar.Set("Hold [Ctrl] to add Control Points", "DrawMode"); + } + else + _StatusBar.Clear("DrawMode"); + } + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + + bool raycastAgainstGeometry = Mode.HasFlag(ModeEnum.Pick); + + SetElementSize(ref r, 32, 32); + + if (raycastAgainstGeometry) + { + + } + else if (SceneView.currentDrawingSceneView.in2DMode) + { + rayCastPlane = RayCastPlane.GlobalXY; + } + else if (selectedSpline != null && selectedSpline.RestrictTo2D) + { + switch (selectedSpline.Restricted2DPlane) + { + case CurvyPlane.XY: + rayCastPlane = RayCastPlane.LocalXY; + break; + case CurvyPlane.XZ: + rayCastPlane = RayCastPlane.LocalXZ; + break; + case CurvyPlane.YZ: + rayCastPlane = RayCastPlane.LocalYZ; + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + else + { + if (GUI.Toggle(r, + rayCastPlane == RayCastPlane.ViewPlane, + new GUIContent(CurvyStyles.IconView, "Use view plane"), GUI.skin.button)) + rayCastPlane = RayCastPlane.ViewPlane; + Advance(ref r); + + if (GUI.Toggle(r, + rayCastPlane == RayCastPlane.GlobalXY || rayCastPlane == RayCastPlane.LocalXY, + new GUIContent(CurvyStyles.IconAxisXY, "Use XY plane"), GUI.skin.button)) + rayCastPlane = Tools.pivotRotation == PivotRotation.Local ? RayCastPlane.LocalXY : RayCastPlane.GlobalXY; + Advance(ref r); + + if (GUI.Toggle(r, + rayCastPlane == RayCastPlane.GlobalXZ || rayCastPlane == RayCastPlane.LocalXZ, + new GUIContent(CurvyStyles.IconAxisXZ, "Use XZ plane"), GUI.skin.button)) + rayCastPlane = Tools.pivotRotation == PivotRotation.Local ? RayCastPlane.LocalXZ : RayCastPlane.GlobalXZ; + Advance(ref r); + + if (GUI.Toggle(r, + rayCastPlane == RayCastPlane.GlobalYZ || rayCastPlane == RayCastPlane.LocalYZ, + new GUIContent(CurvyStyles.IconAxisYZ, "Use YZ plane"), GUI.skin.button)) + rayCastPlane = Tools.pivotRotation == PivotRotation.Local ? RayCastPlane.LocalYZ : RayCastPlane.GlobalYZ; + Advance(ref r); + } + + SetElementSize(ref r, 24, 24); + r.y += 4; + GUI.DrawTexture(r, Mode.HasFlag(ModeEnum.Add) ? CurvyStyles.IconCP : CurvyStyles.IconCPOff); + + Advance(ref r); + GUI.DrawTexture(r, raycastAgainstGeometry ? CurvyStyles.IconRaycast : CurvyStyles.IconRaycastOff); + } + + bool pickScenePoint(Vector2 mousePos, bool castAgainstGeometry, CurvySpline referenceSpline, CurvySplineSegment referenceCP, out Vector3 pickedPoint) + { + Ray mouseRay = HandleUtility.GUIPointToWorldRay(mousePos); + Vector3 referencePosition = ((referenceCP != null) ? referenceCP.transform : referenceSpline.transform).position; + + pickedPoint = Vector3.zero; + bool didPickAPoint = false; + + if (castAgainstGeometry && Physics.Raycast(mouseRay, out RaycastHit hit)) + { + pickedPoint = hit.point; + didPickAPoint = true; + } + else + { + Plane plane; + switch (rayCastPlane) + { + case RayCastPlane.LocalXY: + plane = new Plane(referenceSpline.transform.forward, referencePosition); + break; + case RayCastPlane.GlobalXY: + plane = new Plane(Vector3.forward, referencePosition); + break; + case RayCastPlane.LocalYZ: + plane = new Plane(referenceSpline.transform.right, referencePosition); + break; + case RayCastPlane.GlobalYZ: + plane = new Plane(Vector3.right, referencePosition); + break; + case RayCastPlane.LocalXZ: + plane = new Plane(referenceSpline.transform.up, referencePosition); + break; + case RayCastPlane.GlobalXZ: + plane = new Plane(Vector3.up, referencePosition); + break; + case RayCastPlane.ViewPlane: + plane = new Plane(SceneView.currentDrawingSceneView.camera.transform.forward, referencePosition); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + + float hitDistance; + if (plane.Raycast(mouseRay, out hitDistance)) + { + pickedPoint = mouseRay.GetPoint(hitDistance); + didPickAPoint = true; + } + //fallback: this can happen if you select xy plane but scene view is orthogonal and set to yz. Meaning that all rays are parallel to xy plane. We use the same logic than in RayCastPlane.ViewPlane as a fallback + else if (new Plane(SceneView.currentDrawingSceneView.camera.transform.forward, referencePosition).Raycast(mouseRay, out hitDistance)) + { + pickedPoint = mouseRay.GetPoint(hitDistance); + didPickAPoint = true; + } + } + + if (didPickAPoint == false) + DTLog.LogWarning("[Curvy] Draw Splines tool: could not pick a valid position. Please raise a bug report."); + + return didPickAPoint; + } + + void addCP(Vector2 cursor, bool castRay, bool connectNew) + { + const string undoingOperationLabel = "Add ControlPoint"; + + Func insertControlPoint = + (spline, current, worldPos) => + { + CurvySplineSegment seg = spline.InsertAfter(current, worldPos, false, Space.World); + Undo.RegisterCreatedObjectUndo(seg.gameObject, undoingOperationLabel); + return seg; + }; + + + if (selectedSpline) //selecp the last cp if none selected + { + if (!selectedCP && selectedSpline.ControlPointCount > 0) + selectedCP = selectedSpline.ControlPointsList[selectedSpline.ControlPointCount - 1]; + } + else //create a spline if none selected + { + selectedSpline = CurvySpline.Create(); + + //Restricted2DPlane + switch (rayCastPlane) + { + case RayCastPlane.ViewPlane: + case RayCastPlane.LocalXY: + case RayCastPlane.GlobalXY: + selectedSpline.Restricted2DPlane = CurvyPlane.XY; + break; + case RayCastPlane.LocalYZ: + case RayCastPlane.GlobalYZ: + selectedSpline.Restricted2DPlane = CurvyPlane.YZ; + break; + case RayCastPlane.LocalXZ: + case RayCastPlane.GlobalXZ: + selectedSpline.Restricted2DPlane = CurvyPlane.XZ; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + CurvyMenu.ApplyIncrementalNameToSpline(selectedSpline); + + Undo.RegisterCreatedObjectUndo(selectedSpline.gameObject, undoingOperationLabel); + + Transform parent = DTSelection.GetAs(); + selectedSpline.transform.SetParent(parent); + if (parent == null) + selectedSpline.transform.position = HandleUtility.GUIPointToWorldRay(cursor).GetPoint(10); + } + + // Pick a point to add the CP at + Vector3 pickedPoint; + if (!pickScenePoint(cursor, castRay, selectedSpline, selectedCP, out pickedPoint)) + return; + + CurvySplineSegment pickedControlPoint; + { + GameObject pickedGameObject = HandleUtility.PickGameObject(cursor, false); + pickedControlPoint = pickedGameObject ? pickedGameObject.GetComponent() : null; + } + + CurvySplineSegment newCP; + // Connect by creating a new spline with 2 CP, the first "over" selectedCP, the second at the desired new position + // OR connect to existing CP + if (connectNew && selectedCP) + { + CurvySplineSegment cpToConnect;//To connect with the selected cp + + // if mouse is over an existing CP, connect to this (if possible) + // if we picked a target cp, it may be a pick on it's segment, so check distance to CP + if (pickedControlPoint) + { + Plane plane = new Plane(SceneView.currentDrawingSceneView.camera.transform.forward, pickedControlPoint.transform.position); + Ray ray = HandleUtility.GUIPointToWorldRay(cursor); + float dist; + if (plane.Raycast(ray, out dist)) + { + //Setting connectedCp + { + Vector3 hit = ray.GetPoint(dist); + if ((hit - pickedControlPoint.transform.position).magnitude <= HandleUtility.GetHandleSize(hit) * CurvyGlobalManager.GizmoControlPointSize) + { + cpToConnect = pickedControlPoint; + } + else + { + if (pickedControlPoint.Spline.Dirty) + pickedControlPoint.Spline.Refresh(); + + Vector3 position = pickedControlPoint.Interpolate(pickedControlPoint.GetNearestPointF(hit, Space.World), Space.World); + cpToConnect = insertControlPoint(pickedControlPoint.Spline, pickedControlPoint, position); + } + } + newCP = insertControlPoint(selectedSpline, selectedCP, cpToConnect.transform.position); + selectedCP = newCP; + } + else + newCP = cpToConnect = null; + } + else + newCP = cpToConnect = null; + + if (!cpToConnect) + { + CurvySpline newSpline = CurvySpline.Create(selectedSpline); + CurvyMenu.ApplyIncrementalNameToSpline(newSpline); + + Undo.RegisterCreatedObjectUndo(newSpline.gameObject, undoingOperationLabel); + + newSpline.Closed = false; + cpToConnect = insertControlPoint(newSpline, null, selectedCP.transform.position); + newCP = insertControlPoint(newSpline, cpToConnect, pickedPoint); + selectedSpline = newSpline; + } + + { +#if CURVY_SANITY_CHECKS + Assert.IsFalse((selectedCP.Connection != cpToConnect.Connection) && (selectedCP.Connection != null && cpToConnect.Connection != null), "Both Control Points should not have different non null connections"); +#endif + CurvySplineSegment connectionSourceCp; + CurvySplineSegment connectionDestinationCp; + if (selectedCP.Connection != null) + { + connectionSourceCp = selectedCP; + connectionDestinationCp = cpToConnect; + } + else + { + if (cpToConnect.Connection == null) + { + CurvyConnection.Create(cpToConnect, selectedCP); + + cpToConnect.Connection.SetSynchronisationPositionAndRotation(cpToConnect.transform.position, cpToConnect.transform.rotation); + cpToConnect.ConnectionSyncPosition = true; + cpToConnect.ConnectionSyncRotation = true; + cpToConnect.FollowUpHeading = ConnectionHeadingEnum.Auto; + } + + connectionSourceCp = cpToConnect; + connectionDestinationCp = selectedCP; + } + + CurvyConnection connection = connectionSourceCp.Connection; + Undo.RecordObject(connection, undoingOperationLabel); + if (connection.ControlPointsList.Contains(connectionDestinationCp) == false) + connection.AddControlPoints(connectionDestinationCp); + connectionDestinationCp.ConnectionSyncPosition = connectionSourceCp.ConnectionSyncPosition; + connectionDestinationCp.ConnectionSyncRotation = connectionSourceCp.ConnectionSyncRotation; + connectionDestinationCp.FollowUpHeading = ConnectionHeadingEnum.Auto; + connection.SetSynchronisationPositionAndRotation(connection.transform.position, connection.transform.rotation); + } + } + else + { + if (selectedSpline.Count >= 1 && pickedControlPoint == selectedSpline.FirstSegment) + { + Undo.RecordObject(selectedSpline, undoingOperationLabel); + selectedSpline.Closed = !selectedSpline.Closed; + newCP = selectedSpline.Closed ? selectedSpline.LastSegment : selectedSpline.LastVisibleControlPoint; + } + else + newCP = insertControlPoint(selectedSpline, selectedCP, pickedPoint); + } + + DTSelection.SetGameObjects(newCP); + } + + public override void OnSelectionChange() + { + Visible = CurvyProject.Instance.ShowGlobalToolbar || DTSelection.HasComponent(true); + // Ensure we have a spline and a CP. If a spline is selected, choose the last CP + selectedCP = DTSelection.GetAs(); + selectedSpline = (selectedCP) ? selectedCP.Spline : DTSelection.GetAs(); + + } + } + + [ToolbarItem(35, "Curvy", "Import/Export", "Import or export splines", "importexport_dark,24,24", "importexport_light,24,24")] + public class TBImportExport : DTToolbarButton + { + + public TBImportExport() + { + KeyBindings.Add(new EditorKeyBinding("Import/Export", "")); + } + + public override void OnClick() + { + ImportExportWizard.Open(); + } + + public override void OnSelectionChange() + { + Visible = CurvyProject.Instance.ShowGlobalToolbar; + } + } + + [ToolbarItem(100, "Curvy", "Select Parent", "", "selectparent,24,24")] + public class TBSelectParent : DTToolbarButton + { + public override string StatusBarInfo { get { return "Select parent spline(s)"; } } + + public TBSelectParent() + { + KeyBindings.Add(new EditorKeyBinding("Select Parent", "", KeyCode.Backslash)); + } + + public override void OnClick() + { + base.OnClick(); + List cps = DTSelection.GetAllAs(); + List parents = new List(); + foreach (CurvySplineSegment cp in cps) + if (cp.Spline && !parents.Contains(cp.Spline)) + parents.Add(cp.Spline); + + DTSelection.SetGameObjects(parents.ToArray()); + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent(true); + } + } + + [ToolbarItem(101, "Curvy", "Select Children", "", "selectchilds,24,24")] + public class TBSelectAllChildren : DTToolbarButton + { + public override string StatusBarInfo { get { return "Select Control Points"; } } + + public TBSelectAllChildren() + { + KeyBindings.Add(new EditorKeyBinding("Select Children", "", KeyCode.Backslash, true)); + } + + public override void OnClick() + { + base.OnClick(); + List splines = DTSelection.GetAllAs(); + List cps = DTSelection.GetAllAs(); + foreach (CurvySplineSegment cp in cps) + if (cp.Spline && !splines.Contains(cp.Spline)) + splines.Add(cp.Spline); + List res = new List(); + foreach (CurvySpline spl in splines) + res.AddRange(spl.ControlPointsList); + + DTSelection.SetGameObjects(res.ToArray()); + } + + public override void OnSelectionChange() + { + base.OnSelectionChange(); + Visible = DTSelection.HasComponent(true); + } + + + } + + [ToolbarItem(105, "Curvy", "Previous", "Select Previous", "prev,24,24")] + public class TBCPPrevious : DTToolbarButton + { + public override string StatusBarInfo { get { return "Select previous Control Point"; } } + + public TBCPPrevious() + { + KeyBindings.Add(new EditorKeyBinding("Select Previous", "", KeyCode.Tab, true)); + } + + public override void OnClick() + { + base.OnClick(); + CurvySplineSegment cp = DTSelection.GetAs(); + if (cp && cp.Spline) + DTSelection.SetGameObjects(cp.Spline.ControlPointsList[(int)Mathf.Repeat(cp.Spline.GetControlPointIndex(cp) - 1, cp.Spline.ControlPointCount)]); + else + { + CurvySpline spl = DTSelection.GetAs(); + if (spl && spl.ControlPointCount > 0) + DTSelection.SetGameObjects(spl.ControlPointsList[spl.ControlPointCount - 1]); + } + + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent() || DTSelection.HasComponent(); + } + } + + [ToolbarItem(106, "Curvy", "Next", "Select Next", "next,24,24")] + public class TBCPNext : DTToolbarButton + { + public override string StatusBarInfo { get { return "Select next Control Point"; } } + + public TBCPNext() + { + KeyBindings.Add(new EditorKeyBinding("Select Next", "", KeyCode.Tab)); + } + + public override void OnClick() + { + base.OnClick(); + CurvySplineSegment cp = DTSelection.GetAs(false); + if (cp && cp.Spline) + DTSelection.SetGameObjects(cp.Spline.ControlPointsList[(int)Mathf.Repeat(cp.Spline.GetControlPointIndex(cp) + 1, cp.Spline.ControlPointCount)]); + else + { + CurvySpline spl = DTSelection.GetAs(); + if (spl && spl.ControlPointCount > 0) + DTSelection.SetGameObjects(spl.ControlPointsList[0]); + } + + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent() || DTSelection.HasComponent(); + } + } + + [ToolbarItem(120, "Curvy", "Next connected", "Toggle between connected CP", "nextcon,24,24")] + public class TBCPNextConnected : DTToolbarButton + { + public override string StatusBarInfo { get { return "Select next Control Point being part of this connection"; } } + + public TBCPNextConnected() + { + KeyBindings.Add(new EditorKeyBinding("Toggle Connection", "", KeyCode.C)); + } + + public override void OnClick() + { + base.OnClick(); + CurvySplineSegment cp = DTSelection.GetAs(); + if (cp) + { + int idx = (int)Mathf.Repeat(cp.Connection.ControlPointsList.IndexOf(cp) + 1, cp.Connection.ControlPointsList.Count); + DTSelection.SetGameObjects(cp.Connection.ControlPointsList[idx]); + } + + } + + public override void OnSelectionChange() + { + CurvySplineSegment cp = DTSelection.GetAs(); + Visible = (cp != null && cp.Connection != null && cp.Connection.ControlPointsList.Count > 1); + } + + + } + + [ToolbarItem(140, "Curvy", "Sync Direction", "Synchronise direction of Bezier handles", "beziersyncdir,24,24")] + public class TBCPBezierModeDirection : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Mirror Bezier Handles Direction"; } } + + public TBCPBezierModeDirection() + { + KeyBindings.Add(new EditorKeyBinding("Bezier: Sync Dir", "Sync Handles Direction", KeyCode.B)); + } + + public override bool On + { + get + { + return ((CurvyProject)Project).BezierMode.HasFlag(CurvyBezierModeEnum.Direction); + } + set + { + ((CurvyProject)Project).BezierMode = ((CurvyProject)Project).BezierMode.Set(CurvyBezierModeEnum.Direction, value); + } + } + + + public override void OnOtherItemClicked(DTToolbarItem other) { } // IMPORTANT! + + + public override void OnSelectionChange() + { + base.OnSelectionChange(); + CurvySplineSegment cp = DTSelection.GetAs(); + Visible = (cp && cp.Spline && cp.Spline.Interpolation == CurvyInterpolation.Bezier); + } + } + + [ToolbarItem(141, "Curvy", "Sync Length", "Synchronise length of Bezier handles", "beziersynclen,24,24")] + public class TBCPBezierModeLength : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Mirror Bezier Handles Size"; } } + + public TBCPBezierModeLength() + { + KeyBindings.Add(new EditorKeyBinding("Bezier: Sync Len", "Sync Handles Length", KeyCode.N)); + } + + public override bool On + { + get + { + return ((CurvyProject)Project).BezierMode.HasFlag(CurvyBezierModeEnum.Length); + } + set + { + ((CurvyProject)Project).BezierMode = ((CurvyProject)Project).BezierMode.Set(CurvyBezierModeEnum.Length, value); + } + } + + public override void OnOtherItemClicked(DTToolbarItem other) { } // IMPORTANT! + + public override void OnSelectionChange() + { + base.OnSelectionChange(); + CurvySplineSegment cp = DTSelection.GetAs(); + Visible = (cp && cp.Spline && cp.Spline.Interpolation == CurvyInterpolation.Bezier); + } + } + + [ToolbarItem(142, "Curvy", "Sync Connection", "Synchronise Bezier handles in a Connection", "beziersynccon,24,24")] + public class TBCPBezierModeConnections : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Apply 'Sync Handles Length' and 'Sync Handles Direction' on connected Control Points as well"; } } + + public TBCPBezierModeConnections() + { + KeyBindings.Add(new EditorKeyBinding("Bezier: Sync Con", "Sync connected CP' handles", KeyCode.M)); + } + + public override bool On + { + get + { + return ((CurvyProject)Project).BezierMode.HasFlag(CurvyBezierModeEnum.Connections); + } + set + { + ((CurvyProject)Project).BezierMode = ((CurvyProject)Project).BezierMode.Set(CurvyBezierModeEnum.Connections, value); + } + } + + public override void OnOtherItemClicked(DTToolbarItem other) { } // IMPORTANT! + + public override void OnSelectionChange() + { + base.OnSelectionChange(); + CurvySplineSegment cp = DTSelection.GetAs(); + Visible = (cp && cp.Spline && cp.Spline.Interpolation == CurvyInterpolation.Bezier); + } + } + + [ToolbarItem(160, "Curvy", "Shift", "Shift on curve", "shiftcp,24,24")] + public class TBCPShift : DTToolbarToggleButton + { + CurvySplineSegment selCP; + + float mMin; + float mMax; + float mShift; + + public override string StatusBarInfo + { + get + { + return "Shifts the Control Point toward the previous or next Control Point"; + } + } + + Vector3 getLocalPos() + { + CurvySpline curvySpline = selCP.Spline; + Vector3 result; + if (mShift >= 0) + { + if (curvySpline.IsControlPointASegment(selCP)) + result = selCP.Interpolate(mShift); + else + { + CurvySplineSegment previousSegment = curvySpline.GetPreviousSegment(selCP); + result = previousSegment ? previousSegment.Interpolate(1) : selCP.transform.localPosition; + } + } + else + { + CurvySplineSegment previousSegment = curvySpline.GetPreviousSegment(selCP); + result = previousSegment ? previousSegment.Interpolate(1 + mShift) : selCP.transform.localPosition; + } + + return result; + } + + public override void OnSceneGUI() + { + if (On && selCP && selCP.Spline) + { + Vector3 pos = selCP.Spline.transform.TransformPoint(getLocalPos()); + DTHandles.PushHandlesColor(CurvyGlobalManager.DefaultGizmoSelectionColor); +#if UNITY_5_6_OR_NEWER + Handles.SphereHandleCap(0, pos, Quaternion.identity, HandleUtility.GetHandleSize(pos) * CurvyGlobalManager.GizmoControlPointSize, EventType.Repaint); +#else + Handles.SphereCap(0, pos, Quaternion.identity, HandleUtility.GetHandleSize(pos)*CurvyGlobalManager.GizmoControlPointSize); +#endif + DTHandles.PopHandlesColor(); + } + } + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + + Background(r, 80, 32); + SetElementSize(ref r, 80, 32); + + + //Slider + r.y += 8; + mShift = GUI.HorizontalSlider(r, mShift, mMin, mMax); + + //Ok button + Advance(ref r); + r.width = 32; + r.y -= 8; + if (GUI.Button(r, "Ok")) + { + Undo.RecordObject(selCP.transform, "Shift Control Point"); + selCP.SetLocalPosition(getLocalPos()); + mShift = 0; + On = false; + } + } + + + + public override void OnSelectionChange() + { + base.OnSelectionChange(); + selCP = DTSelection.GetAs(false); + Visible = selCP != null && selCP.Spline && selCP.Spline.IsControlPointVisible(selCP); + if (Visible) + { + CurvySpline curvySpline = selCP.Spline; + mMin = curvySpline.GetPreviousSegment(selCP) ? -0.9f : 0; + mMax = curvySpline.IsControlPointASegment(selCP) ? 0.9f : 0; + mShift = 0; + } + } + } + + [ToolbarItem(161, "Curvy", "Set 1.", "Set as first Control Point", "setfirstcp,24,24")] + public class TBCPSetFirst : DTToolbarButton + { + public override string StatusBarInfo { get { return "Make this Control Point the first of the spline"; } } + + public TBCPSetFirst() + { + KeyBindings.Add(new EditorKeyBinding("Set 1. CP", "")); + } + + public override void OnClick() + { + base.OnClick(); + CurvySplineSegment cp = DTSelection.GetAs(); + if (cp && cp.Spline) + { + Undo.RegisterFullObjectHierarchyUndo(cp.Spline, "Set first CP"); + cp.Spline.SetFirstControlPoint(cp); + } + } + + public override void OnSelectionChange() + { + base.OnSelectionChange(); + CurvySplineSegment cp = DTSelection.GetAs(); + Visible = (cp != null); + Enabled = Visible && cp.Spline && cp.Spline.GetControlPointIndex(cp) > 0; + } + } + + [ToolbarItem(162, "Curvy", "Join", "Join Splines", "join,24,24")] + public class TBCPJoin : DTToolbarButton + { + public override string StatusBarInfo + { + get + { + return mInfo; + } + } + + string mInfo; + + public TBCPJoin() + { + KeyBindings.Add(new EditorKeyBinding("Join Spline", "Join two splines")); + } + + + public override void OnClick() + { + base.OnClick(); + CurvySpline source = DTSelection.GetAs(); + CurvySplineSegment destCP = DTSelection.GetAs(); + int selIdx = destCP.Spline.GetControlPointIndex(destCP) + source.ControlPointCount + 1; + source.JoinWith(destCP); + DTSelection.SetGameObjects(destCP.Spline.ControlPointsList[Mathf.Min(destCP.Spline.ControlPointCount - 1, selIdx)]); + } + + public override void OnSelectionChange() + { + CurvySpline source = DTSelection.GetAs(); + CurvySplineSegment destCP = DTSelection.GetAs(); + Visible = source && destCP && destCP.Spline && source != destCP.Spline; + mInfo = (Visible) ? string.Format("Insert all Control Points of {0} after {1}", source.name, destCP.ToString()) : ""; + } + + + } + + [ToolbarItem(163, "Curvy", "Split", "Split spline at selection", "split,24,24")] + public class TBCPSplit : DTToolbarButton + { + public override string StatusBarInfo { get { return "Split current Spline and make this Control Point the first of a new spline"; } } + + public TBCPSplit() + { + KeyBindings.Add(new EditorKeyBinding("Split Spline", "Split spline at selection")); + } + + public override void OnClick() + { + base.OnClick(); + CurvySplineSegment cp = DTSelection.GetAs(); + DTSelection.SetGameObjects(cp.Spline.Split(cp)); + } + + public override void OnSelectionChange() + { + CurvySplineSegment cp = DTSelection.GetAs(); + Visible = cp && cp.Spline && cp.Spline.IsControlPointASegment(cp) && (cp.Spline.FirstSegment != cp); + } + } + + [ToolbarItem(165, "Curvy", "Connect", "Create a connection", "connectionpos_dark,24,24", "connectionpos_light,24,24")] + public class TBCPConnect : DTToolbarButton + { + public override string StatusBarInfo { get { return "Add a connection"; } } + + public TBCPConnect() + { + KeyBindings.Add(new EditorKeyBinding("Connect", "Create connection")); + } + + public override void OnClick() + { + List selected = DTSelection.GetAllAs(); + CurvySplineSegment[] unconnected = (from cp in selected + where !cp.Connection + select cp).ToArray(); + + if (unconnected.Length > 0) + { + CurvyConnection con = (from cp in selected + where cp.Connection != null + select cp.Connection).FirstOrDefault(); + + if (con == null) + { + con = CurvyConnection.Create(unconnected); // Undo inside + //con.AddControlPoints(unconnected); // Undo inside + //con.AutoSetFollowUp(); + } + else + con.AddControlPoints(unconnected); // Undo inside + } + /* + if (unconnected.Length == 2) + { + var source = unconnected[1]; + var dest = unconnected[0]; + source.ConnectTo(dest, (source.transform.position == dest.transform.position), false); + } + else + { + if (con == null) + { + con = CurvyConnection.Create(); // Undo inside + } + con.AddControlPoints(unconnected); // Undo inside + } + */ + foreach (CurvySplineSegment cp in unconnected) + EditorUtility.SetDirty(cp); + + CurvyProject.Instance.ScanConnections(); + + //EditorApplication.RepaintHierarchyWindow(); + } + + public override void OnSelectionChange() + { + List selected = DTSelection.GetAllAs(); + List unconnected = (from cp in selected + where !cp.Connection + select cp).ToList(); + + Visible = (unconnected.Count > 0); + /* + (unconnected.Count==1 || + unconnected.Count>2 || + (selected.Count == 2 && selected[0].CanConnectTo(selected[1]))); + */ + } + } + /* + [ToolbarItem(180, "Curvy", "Limit Len", "Constraint max. Spline length", "constraintlength,24,24")] + public class TBCPLengthConstraint : DTToolbarToggleButton + { + public float MaxSplineLength; + CurvySpline Spline; + + public TBCPLengthConstraint() + { + KeyBindings.Add(new EditorKeyBinding("Constraint Length", "Spline: Constraint Length")); + } + Vector3[] storedPosPrev = new Vector3[0]; + Vector3[] storedPos = new Vector3[0]; + + + void StorePos() + { + storedPosPrev = storedPos; + storedPos = new Vector3[Selection.transforms.Length]; + for (int i = 0; i < storedPos.Length; i++) + storedPos[i] = Selection.transforms[i].position; + } + void RestorePos() + { + Debug.Log("Restore"); + for (int i = 0; i < storedPosPrev.Length; i++) + Selection.transforms[i].position = storedPosPrev[i]; + } + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + SetElementSize(ref r, 84, 22); + Background(r, 84, 22); + r.width = 60; + MaxSplineLength = EditorGUI.FloatField(r, MaxSplineLength); + r.x += 62; + r.width = 22; + if (GUI.Button(r, "<")) + { + var cp = DTSelection.GetAs(); + if (cp) + MaxSplineLength = cp.Spline.Length; + } + } + + public override void OnSelectionChange() + { + var cp = DTSelection.GetAs(); + Visible = cp != null; + Spline = (cp) ? cp.Spline : null; + } + + public override void OnSceneGUI() + { + base.OnSceneGUI(); + + if (On && Spline) + { + if (Spline.Length > MaxSplineLength) + { + RestorePos(); + Spline.SetDirtyAll(); + Spline.Refresh(); + } + else + StorePos(); + } + + } + } + */ + [ToolbarItem(190, "Curvy", "Camera Project", "Project camera", "camproject,24,24")] + public class TBCPCameraProject : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Raycast and move Control Points"; } } + + List mCPSelection; + + public TBCPCameraProject() + { + } + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + SetElementSize(ref r, 32, 32); + + if (GUI.Button(r, "OK")) + { + foreach (CurvySplineSegment cp in mCPSelection) + { + RaycastHit hit; + if (Physics.Raycast(new Ray(cp.transform.position, SceneView.currentDrawingSceneView.camera.transform.forward), out hit)) + { + Undo.RecordObject(cp.transform, "Project Control Points"); + cp.transform.position = hit.point; + } + } + + On = false; + } + } + + public override void OnSceneGUI() + { + base.OnSceneGUI(); + if (On && SceneView.currentDrawingSceneView != null) + { + DTHandles.PushHandlesColor(Color.red); + foreach (CurvySplineSegment cp in mCPSelection) + { + RaycastHit hit; + if (Physics.Raycast(new Ray(cp.transform.position, SceneView.currentDrawingSceneView.camera.transform.forward), out hit)) + { + Handles.DrawDottedLine(cp.transform.position, hit.point, 2); +#if UNITY_5_6_OR_NEWER + Handles.SphereHandleCap(0, hit.point, Quaternion.identity, HandleUtility.GetHandleSize(hit.point) * 0.1f, EventType.Repaint); +#else + Handles.SphereCap(0, hit.point, Quaternion.identity, HandleUtility.GetHandleSize(hit.point)*0.1f); +#endif + } + } + DTHandles.PopHandlesColor(); + } + } + + public override void OnSelectionChange() + { + mCPSelection = DTSelection.GetAllAs(); + Visible = mCPSelection.Count > 0; + if (!Visible) + On = false; + } + + public override void HandleEvents(Event e) + { + base.HandleEvents(e); + if (On) + _StatusBar.Set("Click OK to apply the preview changes", "CameraProject"); + else + _StatusBar.Clear("CameraProject"); + } + } + + [ToolbarItem(200, "Curvy", "CPTools", "Control Point Tools", "tools,24,24")] + public class TBCPTools : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Open Control Point Tools menu"; } } + + public class SplineRange + { + public CurvySpline Spline; + public CurvySplineSegment Low; + public CurvySplineSegment High; + + public bool CanSubdivide + { + get { return Low && High && (High.Spline.GetControlPointIndex(High) - Low.Spline.GetControlPointIndex(Low) > 0); } + } + + public bool CanSimplify + { + get { return Low && High && (High.Spline.GetControlPointIndex(High) - Low.Spline.GetControlPointIndex(Low) > 1); } + } + + public SplineRange(CurvySpline spline) + { + Spline = spline; + Low = null; + High = null; + } + + public void AddCP(CurvySplineSegment cp) + { + if (Low == null || Low.Spline.GetControlPointIndex(Low) > cp.Spline.GetControlPointIndex(cp)) + Low = cp; + if (High == null || High.Spline.GetControlPointIndex(High) < cp.Spline.GetControlPointIndex(cp)) + High = cp; + } + } + + List mCPSelection; + Dictionary mSplineRanges = new Dictionary(); + + public bool CanSubdivide + { + get + { + foreach (SplineRange sr in mSplineRanges.Values) + if (sr.CanSubdivide) + return true; + return false; + } + } + + public bool CanSimplify + { + get + { + foreach (SplineRange sr in mSplineRanges.Values) + if (sr.CanSimplify) + return true; + return false; + } + } + + + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + SetElementSize(ref r, 32, 32); + GUI.enabled = CanSubdivide; + if (GUI.Button(r, new GUIContent(CurvyStyles.IconSubdivide, "Subdivide"))) + Subdivide(); + Advance(ref r); + + GUI.enabled = CanSimplify; + if (GUI.Button(r, new GUIContent(CurvyStyles.IconSimplify, "Simplify"))) + Simplify(); + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconEqualize, "Equalize"))) + Equalize(); + GUI.enabled = true; + } + + public override void OnSelectionChange() + { + mCPSelection = DTSelection.GetAllAs().Where(cp => cp.Spline != null).ToList(); + getRange(); + Visible = mCPSelection.Count > 1; + if (!Visible) + On = false; + } + + void Subdivide() + { + foreach (SplineRange sr in mSplineRanges.Values) + if (sr.CanSubdivide) + sr.Spline.Subdivide(sr.Low, sr.High); + } + + void Simplify() + { + foreach (SplineRange sr in mSplineRanges.Values) + if (sr.CanSimplify) + sr.Spline.Simplify(sr.Low, sr.High); + } + + void Equalize() + { + foreach (SplineRange sr in mSplineRanges.Values) + if (sr.CanSimplify) + sr.Spline.Equalize(sr.Low, sr.High); + } + + void getRange() + { + mSplineRanges.Clear(); + foreach (CurvySplineSegment cp in mCPSelection) + { + SplineRange sr; + if (!mSplineRanges.TryGetValue(cp.Spline, out sr)) + { + sr = new SplineRange(cp.Spline); + mSplineRanges.Add(cp.Spline, sr); + } + + sr.AddCP(cp); + } + } + } + + [ToolbarItem(120, "Curvy", "Set Pivot", "", "centerpivot,24,24")] + public class TBSplineSetPivot : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Set center/pivot point"; } } + + float pivotX; + float pivotY; + float pivotZ; + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent(true); + } + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + + Background(r, 182, 187); + SetElementSize(ref r, 180, 185); + + EditorGUIUtility.labelWidth = 20; + GUILayout.BeginArea(new Rect(r)); + + GUILayout.Label("X/Y", EditorStyles.boldLabel); + for (int y = -1; y <= 1; y++) + { + GUILayout.BeginHorizontal(); + for (int x = -1; x <= 1; x++) + { + DTGUI.PushBackgroundColor((x == pivotX && y == pivotY) ? Color.red : GUI.backgroundColor); + if (GUILayout.Button("", GUILayout.Width(20))) + { + pivotX = x; + pivotY = y; + } + + DTGUI.PopBackgroundColor(); + } + + if (y == -1) + { + GUILayout.Space(20); + pivotX = EditorGUILayout.FloatField("X", pivotX); + } + else if (y == 0) + { + GUILayout.Space(20); + pivotY = EditorGUILayout.FloatField("Y", pivotY); + } + + GUILayout.EndVertical(); + } + + GUILayout.Label("Z/Y", EditorStyles.boldLabel); + for (int y = -1; y <= 1; y++) + { + GUILayout.BeginHorizontal(); + for (int z = -1; z <= 1; z++) + { + DTGUI.PushBackgroundColor((y == pivotY && z == pivotZ) ? Color.red : GUI.backgroundColor); + if (GUILayout.Button("", GUILayout.Width(20))) + { + pivotY = y; + pivotZ = z; + } + + DTGUI.PopBackgroundColor(); + } + + if (y == -1) + { + GUILayout.Space(20); + pivotZ = EditorGUILayout.FloatField("Z", pivotZ); + } + else if (y == 0) + { + GUILayout.Space(20); + pivotY = EditorGUILayout.FloatField("Y", pivotY); + } + + GUILayout.EndVertical(); + } + + if (GUILayout.Button("Apply")) + { + SetPivot(); + On = false; + } + GUILayout.EndArea(); + } + + public override void OnSceneGUI() + { + if (On) + { + List splines = DTSelection.GetAllAs(); + foreach (CurvySpline spl in splines) + { + + Vector3 p = spl.SetPivot(pivotX, pivotY, pivotZ, true); + DTHandles.PushHandlesColor(new Color(0.3f, 0, 0)); + DTHandles.BoundsCap(spl.Bounds); + Handles.SphereHandleCap(0, p, Quaternion.identity, HandleUtility.GetHandleSize(p) * .1f, EventType.Repaint); + DTHandles.PopHandlesColor(); + } + } + } + + + + void SetPivot() + { + List splines = DTSelection.GetAllAs(); + foreach (CurvySpline spl in splines) + spl.SetPivot(pivotX, pivotY, pivotZ); + } + + } + + [ToolbarItem(122, "Curvy", "Flip", "Flip spline direction", "flip,24,24")] + public class TBSplineFlip : DTToolbarButton + { + public override string StatusBarInfo { get { return "Invert all Control Points, making the spline direction flip"; } } + + public TBSplineFlip() + { + KeyBindings.Add(new EditorKeyBinding("Flip", "Flip spline direction")); + } + + public override void OnClick() + { + List splines = DTSelection.GetAllAs(); + foreach (CurvySpline spline in splines) + { + spline.Flip(); + } + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent(true); + } + } + + [ToolbarItem(124, "Curvy", "Normalize", "Normalize scale", "normalize,24,24")] + public class TBSplineNormalize : DTToolbarButton + { + public override string StatusBarInfo { get { return "Apply transform scale to Control Points and reset scale to 1"; } } + + public TBSplineNormalize() + { + KeyBindings.Add(new EditorKeyBinding("Normalize", "Normalize spline")); + } + + public override void OnClick() + { + List splines = DTSelection.GetAllAs(); + foreach (CurvySpline spline in splines) + { + spline.Normalize(); + } + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent(true); + } + } + + [ToolbarItem(124, "Curvy", "Shape", "Apply a shape", "shapewizard,24,24")] + public class TBSplineSetShape : DTToolbarToggleButton + { + public override string StatusBarInfo { get { return "Apply a shape. WARNING: THIS CAN'T BE UNDONE!"; } } + + Vector2 scroll; + float winHeight = 120; + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + CurvySpline spline; + CurvyShape shape = DTSelection.GetAs(); + if (shape == null && (spline = DTSelection.GetAs())) + { + shape = spline.gameObject.AddComponent(); + shape.Dirty = true; + shape.Refresh(); + } + + if (shape != null) + { + CurvyShapeEditor ShapeEditor = Editor.CreateEditor(shape, typeof(CurvyShapeEditor)) as CurvyShapeEditor; + if (ShapeEditor != null) + { + FocusedItem = this; + ShapeEditor.ShowOnly2DShapes = false; + ShapeEditor.ShowPersistent = true; + + Background(r, 300, winHeight); + SetElementSize(ref r, 300, winHeight); + + GUILayout.BeginArea(r); + scroll = GUILayout.BeginScrollView(scroll, GUILayout.Height(winHeight - 25)); + + ShapeEditor.OnEmbeddedGUI(); + + GUILayout.EndScrollView(); + GUILayout.EndArea(); + + r.y += winHeight - 20; + r.height = 20; + + if (GUI.Button(r, "Close")) + { + On = false; + } + + Editor.DestroyImmediate(ShapeEditor); + } + } + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent(); + scroll = Vector2.zero; + } + } + + [ToolbarItem(200, "Curvy", "Tools", "Spline Tools", "tools,24,24")] + public class TBSplineTools : DTToolbarToggleButton + { + + public override string StatusBarInfo { get { return "Open Spline Tools menu"; } } + + + public override void RenderClientArea(Rect r) + { + base.RenderClientArea(r); + SetElementSize(ref r, 32, 32); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconMeshExport, "Spline to Mesh"))) + { + CurvySplineExportWizard.Create(); + On = false; + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconSyncFromHierarchy, "Sync from Hierarchy"))) + { + List sel = DTSelection.GetAllAs(); + foreach (CurvySpline spl in sel) + { + spl.SyncSplineFromHierarchy(); + spl.ApplyControlPointsNames(); + spl.Refresh(); + On = false; + } + } + Advance(ref r); + if (GUI.Button(r, new GUIContent(CurvyStyles.IconSelectContainingConnections, "Select connections connecting only CPs within the selected spline(s)"))) + { + List sel = DTSelection.GetAllAs(); + DTSelection.SetGameObjects(CurvyGlobalManager.Instance.GetContainingConnections(sel.ToArray())); + } + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent(true); + } + } + + [ToolbarItem(190, "Curvy", "Edit", "Open CG Editor", "opengraph_dark,24,24", "opengraph_light,24,24")] + public class TBPCGOpenGraph : DTToolbarButton + { + public override string StatusBarInfo { get { return "Open Curvy Generator Editor"; } } + + public override void OnClick() + { + base.OnClick(); + CurvyGenerator pcg = DTSelection.GetAs(); + if (pcg) + FluffyUnderware.CurvyEditor.Generator.CGGraph.Open(pcg); + + } + + public override void OnSelectionChange() + { + Visible = DTSelection.HasComponent(); + } + } + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyToolbar.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyToolbar.cs.meta new file mode 100644 index 00000000..e30ebc79 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyToolbar.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9754d38a59ed87e4e8f29f32d66c699c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyUISplineEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyUISplineEditor.cs new file mode 100644 index 00000000..df4d9d87 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyUISplineEditor.cs @@ -0,0 +1,20 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor +{ + [CustomEditor(typeof(CurvyUISpline)), CanEditMultipleObjects] + public class CurvyUISplineEditor : CurvySplineEditor { } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyUISplineEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyUISplineEditor.cs.meta new file mode 100644 index 00000000..a5c1d3e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/CurvyUISplineEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5644cbd38589c924bbec85a9b6e94296 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/GLCurvyRendererEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/GLCurvyRendererEditor.cs new file mode 100644 index 00000000..ea7d48fd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/GLCurvyRendererEditor.cs @@ -0,0 +1,107 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.Curvy.Components; +using UnityEditor; +using FluffyUnderware.Curvy; +using UnityEditorInternal; +using System.Collections.Generic; + +namespace FluffyUnderware.CurvyEditor.Components +{ + [CustomEditor(typeof(CurvyGLRenderer))] + public class GLCurvyRendererEditor : DTEditor + { + bool ShowWarning; + + protected override void OnEnable() + { + base.OnEnable(); + ShowWarning = Target.GetComponent() == null; + } + + protected override void SetupArrayEx(DTFieldNode node, DevTools.ArrayExAttribute attribute) + { + node.ArrayEx.elementHeight = 23; + node.ArrayEx.drawElementCallback = drawSlot; + } + + + void drawSlot(Rect rect, int index, bool isActive, bool isFocused) + { + GLSlotData slot = Target.Splines[index]; + Rect r=new Rect(rect); + r.height = 19; + r.width = rect.width - 60; + r.y += 2; + slot.Spline = EditorGUI.ObjectField(r,slot.Spline, typeof(CurvySpline),true) as CurvySpline; + r.x += r.width+2; + r.width = 50; + slot.LineColor = EditorGUI.ColorField(r, slot.LineColor); + + // Separator + if (index > 0) + { + DTHandles.PushHandlesColor(new Color(0.1f, 0.1f, 0.1f)); + Handles.DrawLine(new Vector2(rect.xMin - 5, rect.yMin), new Vector2(rect.xMax + 4, rect.yMin)); + DTHandles.PopHandlesColor(); + } + } + + List getDragAndDropSplines() + { + List res = new List(); + if (DragAndDrop.objectReferences.Length > 0) + { + foreach (Object o in DragAndDrop.objectReferences) + { + if (o is GameObject) + { + CurvySpline spl = ((GameObject)o).GetComponent(); + if (spl) + res.Add(spl); + } + } + } + return res; + } + + public override void OnInspectorGUI() + { + if (ShowWarning) + { + EditorGUILayout.HelpBox("This component needs a GameObject with a camera component present!", MessageType.Error); + return; + } + GUILayout.Box(new GUIContent("Drag & Drop Splines here!"), EditorStyles.miniButton, GUILayout.Height(32)); + Rect r = GUILayoutUtility.GetLastRect(); + + base.OnInspectorGUI(); + + Event ev = Event.current; + switch (ev.type) + { + case EventType.DragUpdated: + if (r.Contains(ev.mousePosition)) + { + DragAndDrop.visualMode = (getDragAndDropSplines().Count > 0) ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.Rejected; + } + break; + case EventType.DragPerform: + List splinesToAdd = getDragAndDropSplines(); + Undo.RecordObject(Target, "Add Spline to list"); + foreach (CurvySpline spl in splinesToAdd) + Target.Splines.Add(new GLSlotData(){Spline=spl}); + break; + } + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/GLCurvyRendererEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/GLCurvyRendererEditor.cs.meta new file mode 100644 index 00000000..43fcc1ca --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/GLCurvyRendererEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 87651198517c52f488f2ce77fa2a87cc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network.meta new file mode 100644 index 00000000..053486f5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c725a3c2d1156b141ab9fe0861b482d0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementWindow.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementWindow.cs new file mode 100644 index 00000000..9533fc51 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementWindow.cs @@ -0,0 +1,105 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.CurvyEditor.Network +{ + /// + /// Window used to display announcements sent by Curvy's announcements' server + /// + public class AnnouncementWindow : EditorWindow + { + private string content; + private Vector2 scrollViewPosition = new Vector2(0, 0); + + /// + /// Opens an announcement window + /// + public static AnnouncementWindow Open(string title, string content, Vector2 positionShift) + { + AnnouncementWindow window; +#if UNITY_2019_2_OR_NEWER + window = CreateWindow(title); +#else + window = GetWindow(title); +#endif + window.content = content; + + Rect announcementWindowPosition; + { + announcementWindowPosition = window.position; + announcementWindowPosition.x = 100; + announcementWindowPosition.y = 50; + announcementWindowPosition.width = 650; + announcementWindowPosition.height = 280f; + announcementWindowPosition.x += positionShift.x; + announcementWindowPosition.y += positionShift.y; + } + window.position = announcementWindowPosition; + + window.minSize = new Vector2(announcementWindowPosition.width, announcementWindowPosition.height); + + return window; + } + + void OnGUI() + { + GUIStyle labelStyle = new GUIStyle(EditorStyles.label); + labelStyle.alignment = TextAnchor.UpperLeft; + labelStyle.fontSize = 22; + labelStyle.richText = true; + + GUILayout.BeginVertical(); + + GUILayout.Space(20); + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + GUILayout.Label(new GUIContent(CurvyStyles.TexLogoSmall)); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + + GUILayout.Space(20); + + GUILayout.BeginHorizontal(); + GUILayout.Space(20); + GUILayout.FlexibleSpace(); + GUILayout.Label(titleContent.text, labelStyle); + GUILayout.FlexibleSpace(); + GUILayout.Space(20); + GUILayout.EndHorizontal(); + + GUILayout.Space(30); + + labelStyle.wordWrap = true; + labelStyle.fontSize = 14; + + scrollViewPosition = GUILayout.BeginScrollView(scrollViewPosition); + GUILayout.BeginHorizontal(); + GUILayout.Space(20); + GUILayout.FlexibleSpace(); + GUILayout.Label(content, labelStyle); + float mainTextHeight = GUILayoutUtility.GetLastRect().height; + GUILayout.FlexibleSpace(); + GUILayout.Space(20); + GUILayout.EndHorizontal(); + GUILayout.EndScrollView(); + + GUILayout.EndVertical(); + + float recommendedHeight = 230f + mainTextHeight; + if (recommendedHeight > position.height && Event.current.type == EventType.Repaint) + { + float limitedRecommendedHeight = Mathf.Min(recommendedHeight, 600f); + position.Set(position.x, position.y, position.width, limitedRecommendedHeight); + minSize = new Vector2(position.width, limitedRecommendedHeight); + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementWindow.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementWindow.cs.meta new file mode 100644 index 00000000..8fb81fff --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3a7d0835f56139489a740ad8d5d5cb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementsFetcher.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementsFetcher.cs new file mode 100644 index 00000000..228eba29 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementsFetcher.cs @@ -0,0 +1,154 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +//#define CURVY_SHOW_ALL_ANNOUNCEMENTS + +using System; +using System.Linq; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine; +using UnityEditor; +using UnityEngine.Networking; + +namespace FluffyUnderware.CurvyEditor.Network +{ + /// + /// Fetches announcements from server and display them if not previously displayed + /// + [InitializeOnLoad] + class AnnouncementsFetcher + { + [Serializable] + class Announcement + { +#pragma warning disable 0649 + public string Id; + public string Title; + public string Content; +#pragma warning restore 0649 + } + + private UnityWebRequest WebRequest { get; set; } + + static AnnouncementsFetcher() + { + if (CurvyProject.Instance.EnableAnnouncements == false) + return; + + const string preferenceName = "LastFetchedAnnouncementDate"; + int lastFetchedAnnouncementDate = CurvyProject.Instance.GetEditorPrefs(preferenceName, 17522856);// is the number of hours in the DateTime equivalent to the 1th of January 2000 + int utcNowHours = (int)(DateTime.UtcNow.Ticks / (10000L * 1000L * 3600L)); + int deltaHours = utcNowHours - lastFetchedAnnouncementDate; +#if CURVY_SHOW_ALL_ANNOUNCEMENTS == false + if (deltaHours > 24) +#endif + { + new AnnouncementsFetcher().Fetch(); + CurvyProject.Instance.SetEditorPrefs(preferenceName, utcNowHours); + } +#if CURVY_DEBUG + else + Debug.Log("Ignored news fetching: " + deltaHours); +#endif + } + + private void Fetch() + { + string url = "https://announcements.curvyeditor.com/?version=" + CurvySpline.VERSION; + +#if CURVY_DEBUG + Debug.Log(url); +#endif + + WebRequest = UnityWebRequest.Get(url); + WebRequest.SendWebRequest(); + EditorApplication.update += CheckWebRequest; + } + + void CheckWebRequest() + { + if (WebRequest.isDone) + { + EditorApplication.update -= CheckWebRequest; +#if UNITY_2020_2_OR_NEWER + if (WebRequest.result != UnityWebRequest.Result.ConnectionError + && WebRequest.result != UnityWebRequest.Result.ProtocolError) +#elif UNITY_2017_1_OR_NEWER + if (WebRequest.isNetworkError == false + && WebRequest.isHttpError == false) +#else + if (WebRequest.isError == false) +#endif + { + string downloadHandlerText = WebRequest.downloadHandler.text; + WebRequest.Dispose(); +#if CURVY_DEBUG + Debug.Log("Received: " + downloadHandlerText); +#endif + if (String.IsNullOrEmpty(downloadHandlerText) == false) + ProcessAnnouncements(downloadHandlerText); + } + else + { + WebRequest.Dispose(); +#if CURVY_DEBUG + Debug.LogError("Error: " + WebRequest.error); +#endif + } + } + } + + private static void ProcessAnnouncements(string responseText) + { + const string preferenceName = "ProcessedAnnouncements"; + try + { + SerializableArray announcements = JsonUtility.FromJson>(responseText); + string[] shownAnnouncements = CurvyProject.Instance.GetEditorPrefs(preferenceName); + var reversedAnnouncements = announcements.Array.Reverse();//Reversed so that the first announcement's window is shown first + int newsIndex = 0; + foreach (Announcement announcement in reversedAnnouncements) + { +#if CURVY_SHOW_ALL_ANNOUNCEMENTS == false + if (shownAnnouncements.Contains(announcement.Id) == false) +#endif + { + AnnouncementWindow.Open(announcement.Title, announcement.Content, new Vector2(newsIndex * 20, newsIndex * 20)); + DTLog.Log(String.Format("[Curvy] Announcement: {0}: {1}", announcement.Title, announcement.Content)); + newsIndex++; + CurvyProject.Instance.SetEditorPrefs(preferenceName, shownAnnouncements.Add(announcement.Id)); + + //Due to unity API limitations, the AnnouncementWindow.Open method can not display multiple windows. So we break after displaying only one window. Next time announcements are fetched, the remaining announcements will be displayed +#if UNITY_2019_1_OR_NEWER == false + break; +#endif + } +#if CURVY_DEBUG + else + Debug.Log("Already shown announcement " + announcement.Id); + +#endif + } + } + +#if CURVY_DEBUG + catch (ArgumentException e)// exception can be thrown by JsonUtility.FromJson + { + Debug.LogException(e); + } +#else + catch (ArgumentException)// exception can be thrown by JsonUtility.FromJson + { + } +#endif + + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementsFetcher.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementsFetcher.cs.meta new file mode 100644 index 00000000..f31e7aa6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/AnnouncementsFetcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea4054ab90f68be449240e4ee9a0b03e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/Metrics.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/Metrics.cs new file mode 100644 index 00000000..53a55aa8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/Metrics.cs @@ -0,0 +1,120 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Linq; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools.Extensions; +using UnityEditor; +using UnityEngine; +using UnityEngine.Networking; + +namespace FluffyUnderware.CurvyEditor.Network +{ + /// + /// Sends metrics to Curvy's server about version usage of Curvy, Unity and Scripting + /// + [InitializeOnLoad] + class Metrics + { + private UnityWebRequest WebRequest { get; set; } + + private static string CurvyVersion + { + get { return CurvySpline.VERSION; } + } + + private static string UnityVersion + { + get { return Application.unityVersion; } + } + + private static string ScriptingRuntimeVersion + { + get + { + string scriptingRuntimeVersion; +#if UNITY_2019_3_OR_NEWER + scriptingRuntimeVersion = "Latest"; +#elif UNITY_2017_1_OR_NEWER + scriptingRuntimeVersion = EditorApplication.scriptingRuntimeVersion.ToString(); +#else + scriptingRuntimeVersion = "Legacy"; +#endif + return scriptingRuntimeVersion; + } + } + + static Metrics() + { + if (CurvyProject.Instance.EnableMetrics == false) + return; + + const string preferenceName = "TrackedVersions"; + string[] trackedVersions = CurvyProject.Instance.GetEditorPrefs(preferenceName); + string version_id = String.Format("{0}_{1}_{2}", CurvyVersion, UnityVersion, ScriptingRuntimeVersion); + if (trackedVersions.Contains(version_id) == false) + { + new Metrics().Send(trackedVersions.Any() == false); + CurvyProject.Instance.SetEditorPrefs(preferenceName, trackedVersions.Add(version_id)); + } + } + + /// + /// Sends metrics to Curvy's server about version usage of Curvy, Unity and Scripting + /// + void Send(bool isFirstTime) + { + string url = "https://analytics.curvyeditor.com/piwik.php?" + + "idsite=1" + + "&rec=1" + + "&apiv=1" + + "&rand=" + new System.Random().Next(0, 1000000).ToString("000000") + + "&dimension1=" + CurvyVersion + + "&dimension2=" + UnityVersion + + "&dimension3=" + ScriptingRuntimeVersion + + "&dimension4=" + isFirstTime + + "&_id=" + SystemInfo.deviceUniqueIdentifier.Substring(0, 16) + + "&action_name=Curvy_Splines"; + + + +#if CURVY_DEBUG + Debug.Log(url); +#endif + WebRequest = UnityWebRequest.Get(url); + WebRequest.SendWebRequest(); + EditorApplication.update += CheckWebRequest; + } + + void CheckWebRequest() + { + if (WebRequest.isDone) + { + EditorApplication.update -= CheckWebRequest; + +#if CURVY_DEBUG +#if UNITY_2017_1_OR_NEWER + if (WebRequest.isNetworkError || WebRequest.isHttpError) +#else + if (WebRequest.isError) +#endif + { + Debug.LogError("Error: " + WebRequest.error); + } + else + { + Debug.Log("Received: " + WebRequest.downloadHandler.text); + } +#endif + + WebRequest.Dispose(); + + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/Metrics.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/Metrics.cs.meta new file mode 100644 index 00000000..1b19c4c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Network/Metrics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf54dece49395bd4f98a89a96730ad1f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools.meta new file mode 100644 index 00000000..c125f46a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b44251805cd46748b159e85a494a005 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools/ArrayPoolsSettingsEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools/ArrayPoolsSettingsEditor.cs new file mode 100644 index 00000000..6b0e9bfb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools/ArrayPoolsSettingsEditor.cs @@ -0,0 +1,102 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using UnityEditor; +using UnityEngine; + +namespace FluffyUnderware.DevToolsEditor +{ + [CustomEditor(typeof(ArrayPoolsSettings))] + public class ArrayPoolsSettingsEditor : Editor + { + private ArrayPoolUsageData CGSpotUsageData; + private ArrayPoolUsageData Int32UsageData; + private ArrayPoolUsageData SingleUsageData; + private ArrayPoolUsageData Vector2UsageData; + private ArrayPoolUsageData Vector3UsageData; + private ArrayPoolUsageData Vector4UsageData; + + + private SerializedProperty vector2Capacity; + private SerializedProperty vector3Capacity; + private SerializedProperty vector4Capacity; + private SerializedProperty intCapacity; + private SerializedProperty floatCapacity; + private SerializedProperty cgSpotCapacity; + private SerializedProperty logAllocations; + + void OnEnable() + { + vector2Capacity = serializedObject.FindProperty("vector2Capacity"); + vector3Capacity = serializedObject.FindProperty("vector3Capacity"); + vector4Capacity = serializedObject.FindProperty("vector4Capacity"); + intCapacity = serializedObject.FindProperty("intCapacity"); + floatCapacity = serializedObject.FindProperty("floatCapacity"); + cgSpotCapacity = serializedObject.FindProperty("cgSpotCapacity"); + logAllocations = serializedObject.FindProperty("logAllocations"); + } + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + //bool needRepaint = Vector2UsageData != ArrayPools.Vector2.UsageData + // || Vector3UsageData != ArrayPools.Vector3.UsageData + // || Vector4UsageData != ArrayPools.Vector4.UsageData + // || Int32UsageData != ArrayPools.Int32.UsageData + // || SingleUsageData != ArrayPools.Single.UsageData + // || CGSpotUsageData != ArrayPools.CGSpot.UsageData; + + EditorGUILayout.PropertyField(vector2Capacity); + DisplayUsageData(nameof(Vector2), Vector2UsageData = ArrayPools.Vector2.UsageData); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(vector3Capacity); + DisplayUsageData(nameof(Vector3), Vector3UsageData = ArrayPools.Vector3.UsageData); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(vector4Capacity); + DisplayUsageData(nameof(Vector4), Vector4UsageData = ArrayPools.Vector4.UsageData); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(intCapacity); + DisplayUsageData("int", Int32UsageData = ArrayPools.Int32.UsageData); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(floatCapacity); + DisplayUsageData("float", SingleUsageData = ArrayPools.Single.UsageData); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(cgSpotCapacity); + DisplayUsageData(nameof(CGSpot), CGSpotUsageData = ArrayPools.CGSpot.UsageData); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(logAllocations); + + serializedObject.ApplyModifiedProperties(); + + //This was done to avoid repainting when nothing changed, but it doesn't seem to work when pools' usage changes in edit mode + //if (needRepaint) + Repaint(); + } + + private static void DisplayUsageData(string name, ArrayPoolUsageData usageData) + { + EditorGUILayout.LabelField("Available data:"); + + EditorGUI.ProgressBar( + EditorGUILayout.GetControlRect(false, GUILayout.Height(20)), + usageData.ElementsCount / (float)usageData.ElementsCapacity, + $"Elements: {usageData.ElementsCount:0,0} / {usageData.ElementsCapacity:0,0}\tArrays: {usageData.ArraysCount}"); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools/ArrayPoolsSettingsEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools/ArrayPoolsSettingsEditor.cs.meta new file mode 100644 index 00000000..d7655018 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Pools/ArrayPoolsSettingsEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51f1a803398f82843a5dc227536fbba7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards.meta new file mode 100644 index 00000000..73f5e24d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8eae5aa84dd41b84e932d329c79020f6 +folderAsset: yes +timeCreated: 1438940099 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/CurvySplineExportWizard.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/CurvySplineExportWizard.cs new file mode 100644 index 00000000..eb31439c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/CurvySplineExportWizard.cs @@ -0,0 +1,454 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Utils; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy.Pools; +using FluffyUnderware.DevToolsEditor; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy.ThirdParty.LibTessDotNet; + +namespace FluffyUnderware.CurvyEditor +{ + /// + /// Wizard to export one or more splines to a mesh + /// + public class CurvySplineExportWizard : EditorWindow + { + const int CLOSEDSHAPE = 0; + const int VERTEXLINE = 1; + const string Title = "Spline to Mesh"; + + // SOURCES + public List Curves = new List(); + public WindingRule Winding = WindingRule.EvenOdd; + public string TriangulationMessage = string.Empty; + + bool refreshNow = true; + public int Mode; + public Material Mat; + public Vector2 UVOffset = Vector2.zero; + public Vector2 UVTiling = Vector2.one; + + public bool UV2; + public string MeshName = "CurvyMeshExport"; + + public CurvySplineGizmos GizmoState; + + public GameObject previewGO; + public MeshFilter previewMeshFilter; + public MeshRenderer previewMeshRenderer; + + public Vector2 scroll; + + HashSet splines = new HashSet(); + + Mesh previewMesh + { + get + { + return previewMeshFilter.sharedMesh; + } + set + { + previewMeshFilter.sharedMesh = value; + } + } + + static public void Create() + { + CurvySplineExportWizard win = GetWindow(true, Title, true); + win.Init(Selection.activeGameObject.GetComponent()); + win.minSize = new Vector2(500, 390); + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= win.Preview; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + += win.Preview; + } + + void OnEnable() + { + nSplines = new DTGroupNode("Splines") { HelpURL = CurvySpline.DOCLINK + "exportwizard" }; + nTexture = new DTGroupNode("Texture"); + nExport = new DTGroupNode("Export"); + + GizmoState = CurvyGlobalManager.Gizmos; + CurvyGlobalManager.Gizmos = CurvySplineGizmos.Curve; + + + + if (!previewGO) + { + previewGO = new GameObject("ExportPreview"); + previewGO.hideFlags = HideFlags.HideAndDontSave; + previewMeshRenderer = previewGO.AddComponent(); + previewMeshFilter = previewGO.AddComponent(); + if (!Mat) + { + Mat = CurvyUtility.GetDefaultMaterial(); + } + previewMeshRenderer.material = Mat; + } + } + + void OnDisable() + { + CurvyGlobalManager.Gizmos = GizmoState; + } + + void OnDestroy() + { + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= Preview; + foreach (SplinePolyLine crv in Curves) + UnhookSpline(crv.Spline); + Curves.Clear(); + SceneView.RepaintAll(); + GameObject.DestroyImmediate(previewGO); + } + + void OnFocus() + { + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= Preview; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + += Preview; + } + + void Init(CurvySpline spline) + { + Curves.Add(new SplinePolyLine(spline)); + HookSpline(spline); + } + + + Mesh clonePreviewMesh() + { + Mesh msh = new Mesh(); + + Vector3[] previewMeshVertices = previewMesh.vertices; + msh.vertices = previewMeshVertices; + + int[] previewMeshTriangles = previewMesh.triangles; + msh.triangles = previewMeshTriangles; + + Vector2[] previewMeshUV = previewMesh.uv; + msh.uv = previewMeshUV; + + Vector2[] previewMeshUV2 = previewMesh.uv2; + msh.uv2 = previewMeshUV2; + + msh.RecalculateNormals(); + msh.RecalculateBounds(); + + ArrayPools.Vector3.Free(previewMeshVertices); + ArrayPools.Int32.Free(previewMeshTriangles); + ArrayPools.Vector2.Free(previewMeshUV); + ArrayPools.Vector2.Free(previewMeshUV2); + return msh; + } + + void OnSourceRefresh(CurvySplineEventArgs e) + { + refreshNow = true; + } + + void HookSpline(CurvySpline spline) + { + if (!spline) return; + spline.OnRefresh.AddListenerOnce(OnSourceRefresh); + splines.Add(spline); + } + + void UnhookSpline(CurvySpline spline) + { + if (!spline) return; + spline.OnRefresh.RemoveListener(OnSourceRefresh); + splines.Remove(spline); + } + + IDTInspectorNodeRenderer GUIRenderer = new DTInspectorNodeDefaultRenderer(); + private DTGroupNode nSplines; + private DTGroupNode nTexture; + private DTGroupNode nExport; + bool mNeedRepaint; + + void OnGUI() + { + + DTInspectorNode.IsInsideInspector = false; + if (Curves.Count == 0) + return; + + + Mode = GUILayout.SelectionGrid(Mode, new GUIContent[] + { + new GUIContent("Closed Shape","Export a closed shape with triangles"), + new GUIContent("Vertex Line","Export a vertex line") + }, 2); + + + + if (!string.IsNullOrEmpty(TriangulationMessage) && !TriangulationMessage.Contains("Angle must be >0")) + EditorGUILayout.HelpBox(TriangulationMessage, MessageType.Error); + + scroll = EditorGUILayout.BeginScrollView(scroll); + + // OUTLINE + GUIRenderer.RenderSectionHeader(nSplines); + if (nSplines.ContentVisible) + { + Winding = (WindingRule)EditorGUILayout.EnumPopup("Winding", Winding, GUILayout.Width(285)); + GUILayout.BeginHorizontal(); + GUILayout.Label(new GUIContent("Spline", "Note: Curves from a SplineGroup needs to be connected!"), EditorStyles.boldLabel, GUILayout.Width(140)); + GUILayout.Label("Vertex Generation", EditorStyles.boldLabel, GUILayout.Width(160)); + GUILayout.Label("Orientation", EditorStyles.boldLabel); + GUILayout.EndHorizontal(); + CurveGUI(Curves[0]); + if (Mode == CLOSEDSHAPE) + { + + for (int i = 1; i < Curves.Count; i++) + { + CurveGUI(Curves[i]); + } + if (GUILayout.Button(CurvyStyles.AddSmallTexture, GUILayout.ExpandWidth(false))) + Curves.Add(new SplinePolyLine(null)); + } + } + + mNeedRepaint = mNeedRepaint || nSplines.NeedRepaint; + GUIRenderer.RenderSectionFooter(nSplines); + + // TEXTURING + GUIRenderer.RenderSectionHeader(nTexture); + if (nTexture.ContentVisible) + { + Mat = (Material)EditorGUILayout.ObjectField("Material", Mat, typeof(Material), true, GUILayout.Width(285)); + UVTiling = EditorGUILayout.Vector2Field("Tiling", UVTiling, GUILayout.Width(285)); + UVOffset = EditorGUILayout.Vector2Field("Offset", UVOffset, GUILayout.Width(285)); + + } + GUIRenderer.RenderSectionFooter(nTexture); + mNeedRepaint = mNeedRepaint || nTexture.NeedRepaint; + // EXPORT + GUIRenderer.RenderSectionHeader(nExport); + if (nExport.ContentVisible) + { + MeshName = EditorGUILayout.TextField("Mesh Name", MeshName, GUILayout.Width(285)); + UV2 = EditorGUILayout.Toggle("Add UV2", UV2); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button("Save as Asset")) + { + string path = EditorUtility.SaveFilePanelInProject("Save Mesh", MeshName + ".asset", "asset", "Choose a file location"); + if (!string.IsNullOrEmpty(path)) + { + Mesh msh = clonePreviewMesh(); + if (msh) + { + msh.name = MeshName; + AssetDatabase.DeleteAsset(path); + AssetDatabase.CreateAsset(msh, path); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + DTLog.Log("[Curvy] Export: Mesh Asset saved!"); + } + } + } + + if (GUILayout.Button("Create GameObject")) + { + Mesh msh = clonePreviewMesh(); + if (msh) + { + msh.name = MeshName; + GameObject go = new GameObject(MeshName, typeof(MeshRenderer), typeof(MeshFilter)); + go.GetComponent().sharedMesh = msh; + go.GetComponent().sharedMaterial = Mat; + Selection.activeGameObject = go; + DTLog.Log("[Curvy] Export: GameObject created!"); + } + else + DTLog.LogWarning("[Curvy] Export: Unable to triangulate spline!"); + + } + GUILayout.EndHorizontal(); + + } + GUIRenderer.RenderSectionFooter(nExport); + mNeedRepaint = mNeedRepaint || nExport.NeedRepaint; + EditorGUILayout.EndScrollView(); + refreshNow = refreshNow || GUI.changed; + if (mNeedRepaint) + { + Repaint(); + mNeedRepaint = false; + } + } + + void CurveGUI(SplinePolyLine curve) + { + GUILayout.BeginHorizontal(); + CurvySpline o = curve.Spline; + curve.Spline = (CurvySpline)EditorGUILayout.ObjectField(curve.Spline, typeof(CurvySpline), true, GUILayout.Width(140)); + + if (o != curve.Spline) + { + UnhookSpline(o); + } + HookSpline(curve.Spline); + + curve.VertexMode = (SplinePolyLine.VertexCalculation)EditorGUILayout.EnumPopup(curve.VertexMode, GUILayout.Width(140)); + GUILayout.Space(20); + curve.Orientation = (ContourOrientation)EditorGUILayout.EnumPopup(curve.Orientation); + if (GUILayout.Button(new GUIContent(CurvyStyles.DeleteSmallTexture, "Remove"), GUILayout.ExpandWidth(false))) + { + if (curve.Spline) + UnhookSpline(curve.Spline); + Curves.Remove(curve); + refreshNow = true; + GUIUtility.ExitGUI(); + } + switch (curve.VertexMode) + { + case SplinePolyLine.VertexCalculation.ByAngle: + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + GUILayout.Space(150); + float lw = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = 40; + curve.Angle = Mathf.Max(0, EditorGUILayout.FloatField("Angle", curve.Angle, GUILayout.Width(140))); + EditorGUIUtility.labelWidth = 60; + GUILayout.Space(20); + curve.Distance = EditorGUILayout.FloatField("Min. Dist.", curve.Distance, GUILayout.Width(150)); + EditorGUIUtility.labelWidth = lw; + if (curve.Angle == 0) + { + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + GUILayout.Space(140); + EditorGUILayout.HelpBox("Angle must be >0", MessageType.Error); + } + break; + } + GUILayout.EndHorizontal(); + + + + } + + void Update() + { + if (Curves.Count == 0) + { + Close(); + return; + } + + refreshNow = refreshNow || splines.Any(splineBase => splineBase.GlobalCoordinatesChangedThisFrame); + + if (refreshNow) + { + previewMeshRenderer.sharedMaterial = Mat; + refreshNow = false; + Spline2Mesh s2m = new Spline2Mesh(); + foreach (SplinePolyLine c in Curves) + if (c.Spline != null) + s2m.Lines.Add(c); + + s2m.Winding = Winding; + s2m.VertexLineOnly = (Mode == VERTEXLINE); + + s2m.UVOffset = UVOffset; + s2m.UVTiling = UVTiling; + s2m.UV2 = UV2; + s2m.MeshName = MeshName; + Mesh m; + s2m.Apply(out m); + previewMesh = m; + + TriangulationMessage = s2m.Error; + string sTitle; + if (previewMesh) + { + if (previewMesh.triangles.Length > 0) + sTitle = string.Format("{2} ({0} Vertices, {1} Triangles)", previewMeshFilter.sharedMesh.vertexCount, previewMeshFilter.sharedMesh.triangles.Length / 3, Title); + else + sTitle = string.Format("{1} ({0} Vertices)", previewMeshFilter.sharedMesh.vertexCount, Title); + } + else + sTitle = Title; + +#if UNITY_5_0 || UNITY_4_6 + title=sTitle; +#else + titleContent = new GUIContent(sTitle); +#endif + SceneView.RepaintAll(); + } + } + + void Preview(SceneView sceneView) + { + + if (!previewMesh) + return; + + Vector3[] vts = previewMesh.vertices; + int[] tris = new int[0]; + if (Mode != VERTEXLINE) + tris = previewMesh.triangles; + Handles.color = Color.green; + Handles.matrix = Matrix4x4.TRS(new Vector3(0, 0, 0), Quaternion.identity, Vector3.one); + for (int i = 0; i < tris.Length; i += 3) + Handles.DrawPolyLine(vts[tris[i]], vts[tris[i + 1]], vts[tris[i + 2]], vts[tris[i]]); + + Handles.color = Color.gray; + for (int i = 0; i < vts.Length; i++) + { +#if UNITY_5_6_OR_NEWER + Handles.CubeHandleCap(0, vts[i], Quaternion.identity, HandleUtility.GetHandleSize(vts[i]) * 0.07f, EventType.Repaint); +#else + Handles.CubeCap(0, vts[i], Quaternion.identity, HandleUtility.GetHandleSize(vts[i]) * 0.07f); +#endif + } + ArrayPools.Vector3.Free(vts); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/CurvySplineExportWizard.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/CurvySplineExportWizard.cs.meta new file mode 100644 index 00000000..2f5ae7a2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/CurvySplineExportWizard.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 12840e845e696084abe192ed5b6c47b0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ImportExportWizard.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ImportExportWizard.cs new file mode 100644 index 00000000..97135861 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ImportExportWizard.cs @@ -0,0 +1,291 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.ImportExport; +using FluffyUnderware.DevToolsEditor; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; + +namespace FluffyUnderware.CurvyEditor +{ + /// + /// A window that allows exporting and importing splines as Json files + /// + public class ImportExportWizard : EditorWindow + { + /// + /// Json version of the imported or exported splines + /// + private string serializedText = string.Empty; + + /// + /// serializedText copy that iqs used in the UI display. Truncated if too long to avoid Unity error. + /// + private string displayedSerializedText = string.Empty; + /// + /// Defines if which coordinates should be read/written + /// + private CurvySerializationSpace coordinateSpace = CurvySerializationSpace.Global; + + private FileFormat fileFormat = FileFormat.JSON; + + private Vector2 scrollingPosition; + + private IDTInspectorNodeRenderer GUIRenderer; + private DTGroupNode configurationGroup; + private DTGroupNode actionsGroup; + private DTGroupNode advancedActionsGroup; + + static public void Open() + { + ImportExportWizard win = GetWindow(true, "Import/Export splines"); + win.minSize = new Vector2(350, 340); + } + + private void OnDisable() + { + DTSelection.OnSelectionChange -= Repaint; + } + + private void OnEnable() + { + const string docLinkId = "import_export"; + + GUIRenderer = new DTInspectorNodeDefaultRenderer(); + + configurationGroup = new DTGroupNode("Configuration") { HelpURL = CurvySpline.DOCLINK + docLinkId }; + actionsGroup = new DTGroupNode("Actions") { HelpURL = CurvySpline.DOCLINK + docLinkId }; + advancedActionsGroup = new DTGroupNode("Advanced Actions") { HelpURL = CurvySpline.DOCLINK + docLinkId }; + + DTSelection.OnSelectionChange += Repaint; + } + + private void OnGUI() + { + List selectedSplines = Selection.GetFiltered(typeof(CurvySpline), SelectionMode.ExcludePrefab).Where(o => o != null).Select(o => (CurvySpline)o).ToList(); + + //actions + bool export = false; + bool import = false; + bool readFromSelection = false; + bool writeToSelection = false; + bool readFromFile = false; + bool writeToFile = false; + string editedString = null; + + //Display window and read user commands + { + GUI.skin.label.wordWrap = true; + GUILayout.Label("This window allows you to import/export splines from/to JSON text."); + + DTInspectorNode.IsInsideInspector = false; + + //Configuration + GUIRenderer.RenderSectionHeader(configurationGroup); + if (configurationGroup.ContentVisible) + { + coordinateSpace = (CurvySerializationSpace)EditorGUILayout.EnumPopup("Coordinate space to use", coordinateSpace, GUILayout.Width(280)); + + var oldFileFormat = fileFormat; + + fileFormat = (FileFormat)EditorGUILayout.EnumPopup("Format", fileFormat, GUILayout.Width(280)); + + if (fileFormat != oldFileFormat) + OnFileFormatChanged(); + + } + GUIRenderer.RenderSectionFooter(configurationGroup); + + + //Actions + GUIRenderer.RenderSectionHeader(actionsGroup); + if (actionsGroup.ContentVisible) + { + switch (fileFormat) + { + case FileFormat.JSON: + GUI.enabled = selectedSplines.Count > 0; + export = GUILayout.Button("Export selected spline(s)"); + + GUI.enabled = true; + import = GUILayout.Button("Import"); + break; + case FileFormat.SVG: + GUI.enabled = true; + import = GUILayout.Button("Import"); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + } + GUIRenderer.RenderSectionFooter(actionsGroup); + + + //Advanced actions + GUIRenderer.RenderSectionHeader(advancedActionsGroup); + if (advancedActionsGroup.ContentVisible) + { + + switch (fileFormat) + { + case FileFormat.JSON: + GUI.enabled = selectedSplines.Count > 0; + readFromSelection = GUILayout.Button("Read selected spline(s)"); + + GUI.enabled = true; + readFromFile = GUILayout.Button("Read from file"); + + GUI.enabled = string.IsNullOrEmpty(serializedText) == false; + writeToSelection = GUILayout.Button("Write new spline(s)"); + + writeToFile = GUILayout.Button("Write to file"); + break; + case FileFormat.SVG: + GUI.enabled = true; + readFromFile = GUILayout.Button("Read from file"); + + GUI.enabled = string.IsNullOrEmpty(serializedText) == false; + writeToSelection = GUILayout.Button("Write new spline(s)"); + + writeToFile = GUILayout.Button("Write to file"); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + GUI.enabled = true; + scrollingPosition = EditorGUILayout.BeginScrollView(scrollingPosition, GUILayout.MaxHeight(position.height - 100)); + EditorGUI.BeginChangeCheck(); + string modifiedString = EditorGUILayout.TextArea(displayedSerializedText, EditorStyles.textArea, GUILayout.ExpandHeight(true)); + if (GUI.changed) + editedString = modifiedString; + EditorGUI.EndChangeCheck(); + EditorGUILayout.EndScrollView(); + } + GUIRenderer.RenderSectionFooter(advancedActionsGroup); + GUILayout.Space(5); + + if (configurationGroup.NeedRepaint || actionsGroup.NeedRepaint || advancedActionsGroup.NeedRepaint) + Repaint(); + + if (readFromFile || readFromSelection) + GUI.FocusControl(null); //Keeping the focus prevents the textfield from refreshing + } + + if (export) + { + readFromSelection = true; + writeToFile = true; + } + + if (import) + { + readFromFile = true; + writeToSelection = true; + } + + ProcessCommands(selectedSplines, readFromSelection, readFromFile, editedString, writeToSelection, writeToFile); + } + + + private void OnFileFormatChanged() + { + serializedText = string.Empty; + displayedSerializedText = string.Empty; + scrollingPosition = Vector2.zero; + } + + + private void ProcessCommands([NotNull] List selectedSplines, bool readFromSelection, bool readFromFile, [CanBeNull] string editedString, bool writeToSelection, bool writeToFile) + { + string fileExtension = fileFormat.ToString().ToLowerInvariant(); + + if (readFromSelection || readFromFile || editedString != null) + { + if (readFromSelection || readFromFile) + { + string raw; + { + if (readFromSelection) + { + if (selectedSplines.Count > 0) + switch (fileFormat) + { + case FileFormat.JSON: + raw = SplineJsonConverter.SplinesToJson(selectedSplines, coordinateSpace); + break; + default: + throw new ArgumentOutOfRangeException(); + } + else + throw new InvalidOperationException("Serialize Button should not be clickable when something other than splines is selected"); + } + else + { + string fileToLoadFullName = EditorUtility.OpenFilePanel("Select file to load", Application.dataPath, fileExtension); + if (String.IsNullOrEmpty(fileToLoadFullName))//Happens when user cancel the file selecting window + raw = displayedSerializedText; + else + raw = File.ReadAllText(fileToLoadFullName); + } + } + + serializedText = raw; + } + else + serializedText = editedString; + + displayedSerializedText = serializedText; + } + + if (writeToSelection && string.IsNullOrEmpty(serializedText) == false) + { + CurvySpline[] splines; + switch (fileFormat) + { + case FileFormat.JSON: + splines = SplineJsonConverter.JsonToSplines(serializedText, coordinateSpace); + break; + case FileFormat.SVG: + splines = SplineSvgConverter.SvgToSplines(serializedText, coordinateSpace); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + foreach (CurvySpline spline in splines) + { + Undo.RegisterCreatedObjectUndo(spline.gameObject, "Deserialize"); + spline.transform.SetParent(Selection.activeTransform, coordinateSpace == CurvySerializationSpace.Global); + } + } + else if (writeToFile) + { + string file = EditorUtility.SaveFilePanel( + "Save to...", + Application.dataPath, + String.Format( + "Splines_{0}.{1}", + DateTime.Now.ToString("yyyy-MMMM-dd HH_mm"), + fileExtension), + fileExtension); + if (!string.IsNullOrEmpty(file)) + { + File.WriteAllText(file, serializedText); + AssetDatabase.Refresh(); + } + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ImportExportWizard.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ImportExportWizard.cs.meta new file mode 100644 index 00000000..79497428 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ImportExportWizard.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5db77d2b5ae492649a8d4d7750fb10fe +timeCreated: 1461006529 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ModuleWizard.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ModuleWizard.cs new file mode 100644 index 00000000..654f3ad5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ModuleWizard.cs @@ -0,0 +1,163 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.IO; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + public class ModuleWizard : EditorWindow + { + + string mModuleClassName = string.Empty; + string mModuleMenuName = string.Empty; + string mModuleName = string.Empty; + string mModuleDescription = string.Empty; + + string mModuleScriptPath = CurvyProject.Instance.CustomizationRootPath + CurvyProject.RELPATH_CGMODULEWIZARDSCRIPTS; + string mModuleEditorScriptPath = CurvyProject.Instance.CustomizationRootPath + CurvyProject.RELPATH_CGMODULEWIZARDEDITORSCRIPTS; + + bool mNeedFocus = true; + + string ScriptTemplate + { + get + { + return CurvyEditorUtility.GetPackagePathAbsolute("ClassTemplates/CGModuleTemplate.txt"); + } + + } + string EditorScriptTemplate + { + get + { + return CurvyEditorUtility.GetPackagePathAbsolute("ClassTemplates/CGModuleEditorTemplate.txt"); + } + } + + string ModuleFileName + { + get + { + return Application.dataPath+"/"+mModuleScriptPath.TrimEnd('/','\\') + "/" + mModuleClassName + ".cs"; + } + } + + string ModuleEditorFileName + { + get + { + return Application.dataPath + "/" + mModuleEditorScriptPath.TrimEnd('/', '\\') + "/" + mModuleClassName + "Editor.cs"; + } + } + + public static void Open() + { + ModuleWizard win=EditorWindow.GetWindow(true, "Create CG Module"); + win.minSize = new Vector2(500, 120); + + } + + void OnGUI() + { + EditorGUI.BeginChangeCheck(); + GUI.SetNextControlName("ClassName"); + mModuleClassName = EditorGUILayout.TextField(new GUIContent("Class Name","C# class name"), mModuleClassName); + + + if (EditorGUI.EndChangeCheck()) + { + mModuleName = ObjectNames.NicifyVariableName(mModuleClassName); + mModuleMenuName = "Custom/" + mModuleName; + } + mModuleName = EditorGUILayout.TextField(new GUIContent("Module Name","The default module instance name"), mModuleName); + mModuleMenuName = EditorGUILayout.TextField(new GUIContent("Menu Name","Name to show in the CG menu"), mModuleMenuName); + + EditorGUILayout.PrefixLabel("Description"); + mModuleDescription = EditorGUILayout.TextArea(mModuleDescription); + + GUI.enabled = !string.IsNullOrEmpty(mModuleScriptPath) && + !string.IsNullOrEmpty(mModuleEditorScriptPath) && + !string.IsNullOrEmpty(mModuleClassName) && + !string.IsNullOrEmpty(mModuleMenuName) && + !string.IsNullOrEmpty(mModuleName); + if (GUILayout.Button("Create")) + CreateModule(); + + GUI.enabled = true; + + if (mNeedFocus) + { + EditorGUI.FocusTextInControl("ClassName"); + mNeedFocus = false; + } + + } + + void CreateModule() + { + if (!File.Exists(ScriptTemplate)){ + DTLog.LogError("[Curvy] Missing Module Template file '"+ScriptTemplate+"'!"); + return; + } + if (!File.Exists(EditorScriptTemplate)) + { + DTLog.LogError("[Curvy] Missing Module Template file '" + EditorScriptTemplate + "'!"); + return; + } + + // Script + string template = File.ReadAllText(ScriptTemplate); + if (!string.IsNullOrEmpty(template)) + { + Directory.CreateDirectory(Path.GetDirectoryName(ModuleFileName)); + StreamWriter stream = File.CreateText(ModuleFileName); + stream.Write(replaceVars(template)); + stream.Close(); + + } + else + { + DTLog.LogError("[Curvy] Unable to load template file"); + return; + } + // Editor Script + template = File.ReadAllText(EditorScriptTemplate); + if (!string.IsNullOrEmpty(template)) + { + Directory.CreateDirectory(Path.GetDirectoryName(ModuleEditorFileName)); + StreamWriter stream = File.CreateText(ModuleEditorFileName); + stream.Write(replaceVars(template)); + stream.Close(); + } + else + { + DTLog.LogError("[Curvy] Unable to load editor template file"); + return; + } + AssetDatabase.Refresh(); + Close(); + EditorUtility.DisplayDialog("CG Module Wizard", "Scripts successfully created!", "OK"); + + Selection.objects = new Object[2] + { + AssetDatabase.LoadMainAssetAtPath(ModuleFileName.Replace(Application.dataPath,"Assets")), + AssetDatabase.LoadMainAssetAtPath(ModuleEditorFileName.Replace(Application.dataPath,"Assets")) + }; + } + + string replaceVars(string template) + { + return template.Replace("%MENUNAME%", mModuleMenuName) + .Replace("%MODULENAME%", mModuleName) + .Replace("%DESCRIPTION%", mModuleDescription) + .Replace("%CLASSNAME%", mModuleClassName); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ModuleWizard.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ModuleWizard.cs.meta new file mode 100644 index 00000000..7a912e5f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ModuleWizard.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d8030feb811c6a4c89e6f6d8c60b4c7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ShapeWizard.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ShapeWizard.cs new file mode 100644 index 00000000..afee2404 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ShapeWizard.cs @@ -0,0 +1,124 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.IO; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.CurvyEditor +{ + public class ShapeWizard : EditorWindow + { + + string mShapeClassName = "CS"; + string mShapeMenuName = "Custom/"; + bool mShapeIs2D = true; + bool mNeedFocus=true; + + string mShapeParent = "CurvyShape"; + + string mShapeScriptPath = CurvyProject.Instance.CustomizationRootPath + CurvyProject.RELPATH_SHAPEWIZARDSCRIPTS; + + string ScriptTemplate + { + get + { + return CurvyEditorUtility.GetPackagePathAbsolute("ClassTemplates/ShapeTemplate.txt"); + } + } + + string ShapeFileName + { + get + { + return Application.dataPath + "/" + mShapeScriptPath.TrimEnd('/', '\\') + "/" + mShapeClassName + ".cs"; + } + } + + + public static void Open() + { + ShapeWizard win = EditorWindow.GetWindow(true, "Create Shape"); + win.minSize = new Vector2(500, 60); + } + + void OnGUI() + { + EditorGUI.BeginChangeCheck(); + GUI.SetNextControlName("ClassName"); + mShapeClassName = EditorGUILayout.TextField("Class Name", mShapeClassName); + + if (EditorGUI.EndChangeCheck()) + { + mShapeMenuName = "Custom/"+ObjectNames.NicifyVariableName(mShapeClassName.TrimStart("CS")); + } + + mShapeMenuName = EditorGUILayout.TextField("Menu Name", mShapeMenuName); + mShapeIs2D = EditorGUILayout.Toggle("Is 2D", mShapeIs2D); + + GUI.enabled = !string.IsNullOrEmpty(mShapeScriptPath) && + !string.IsNullOrEmpty(mShapeClassName) && + !string.IsNullOrEmpty(mShapeMenuName); + if (GUILayout.Button("Create")) + { + CreateShape(); + } + GUI.enabled = true; + + + if (mNeedFocus) + { + EditorGUI.FocusTextInControl("ClassName"); + mNeedFocus = false; + } + + } + + void CreateShape() + { + if (!File.Exists(ScriptTemplate)) + { + DTLog.LogError("[Curvy] Missing Shape Template file '" + ScriptTemplate + "'!"); + return; + } + + mShapeParent = (mShapeIs2D) ? "CurvyShape2D" : "CurvyShape"; + + // Script + string template = File.ReadAllText(ScriptTemplate); + if (!string.IsNullOrEmpty(template)) + { + Directory.CreateDirectory(Path.GetDirectoryName(ShapeFileName)); + StreamWriter stream = File.CreateText(ShapeFileName); + stream.Write(replaceVars(template)); + stream.Close(); + + } + else + { + DTLog.LogError("[Curvy] Unable to load template file"); + return; + } + + AssetDatabase.Refresh(); + Close(); + EditorUtility.DisplayDialog("Shape Script Wizard", "Script successfully created!", "OK"); + Selection.activeObject = AssetDatabase.LoadMainAssetAtPath("Assets/"+mShapeScriptPath + "/" + mShapeClassName + ".cs"); + } + + string replaceVars(string template) + { + return template.Replace("%MENUNAME%", mShapeMenuName) + .Replace("%CLASSNAME%", mShapeClassName) + .Replace("%PARENT%",mShapeParent) + .Replace("%IS2D%",mShapeIs2D.ToString().ToLower()); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ShapeWizard.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ShapeWizard.cs.meta new file mode 100644 index 00000000..949b57b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/ShapeWizard.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e5b35d5b423028e43b3216a28619b644 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/TemplateWizard.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/TemplateWizard.cs new file mode 100644 index 00000000..742ba105 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/TemplateWizard.cs @@ -0,0 +1,76 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.CurvyEditor; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.CurvyEditor.Generator; + +namespace FluffyUnderware.CurvyEditor.Generator +{ + public class TemplateWizard : EditorWindow + { + string mName; + List mModules; + private CanvasUI canvasUI; + + public static void Open(List modules, CanvasUI canvasUI) + { + if (modules == null || modules.Count == 0) + return; + TemplateWizard win = EditorWindow.GetWindow(true, "Save Template"); + win.minSize = new Vector2(300, 90); + win.maxSize = win.minSize; + win.mName = ""; + win.mModules = modules; + win.canvasUI = canvasUI; + } + + void OnGUI() + { + EditorGUILayout.HelpBox("Only Managed Resources will be saved!", MessageType.Warning); + GUI.SetNextControlName("TPLWIZ_txtName"); + mName = EditorGUILayout.TextField("Template Menu Name", mName).TrimStart('/'); + + + + EditorGUILayout.BeginHorizontal(); + GUI.enabled = (!string.IsNullOrEmpty(mName)); + if (GUILayout.Button("Save")) + { + Save(); + Close(); + } + GUI.enabled = true; + if (GUILayout.Button("Cancel")) + Close(); + EditorGUILayout.EndHorizontal(); + + if (GUI.GetNameOfFocusedControl() == "") + EditorGUI.FocusTextInControl("TPLWIZ_txtName"); + } + + void Save() + { + string absFolder = Application.dataPath + "/" + CurvyProject.Instance.CustomizationRootPath + CurvyProject.RELPATH_CGTEMPLATES; + string file = absFolder + "/" + mName + ".prefab"; + if (!System.IO.File.Exists(file) || EditorUtility.DisplayDialog("Replace File?", "The file already exists! Replace it?", "Yes", "No")) + { + if (CGEditorUtility.CreateTemplate(mModules, file)) + { + EditorUtility.DisplayDialog("Save Generator Template", "Template successfully saved!", "Ok"); + if (canvasUI != null) + canvasUI.ReloadTemplates(); + } + } + + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/TemplateWizard.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/TemplateWizard.cs.meta new file mode 100644 index 00000000..be5c404a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Editor/Wizards/TemplateWizard.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 296620d129d476c4cbbbf16821c2a5ce +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ReadMe.txt b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ReadMe.txt new file mode 100644 index 00000000..92b8edfb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ReadMe.txt @@ -0,0 +1,972 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +GETTING STARTED +=============== +Visit https://curvyeditor.com to access documentation, tutorials and references + +EXAMPLE SCENES +============== +Checkout the example scenes at "Plugins/ToolBuddy/Assets/Curvy Examples/Scenes"! + +NEED FURTHER HELP +================= +Visit our support forum at https://forum.curvyeditor.com + +VERSION HISTORY +=============== + +Note: Starting from version 3.0.0, Curvy is using the versioning standard “Semantic Versioning 2.0.0”. More about it here: https://semver.org/ + +Warning: At each Curvy update, please delete the old Curvy folders before installing the new version + +8.2.1 + [FIXED] Console error when showing a Spline Controller's inspector under specific Unity versions + +8.2.0 + [NEW] Added warnings in InputMesh and GameObjectToMesh modules when meshes are not readable + [FIXED] Deform Mesh module: Errors when used with a mesh with no tangents + [FIXED] Deform Mesh module: runtime errors in builds lacking the Diffuse material + [FIXED] IL2CPP builds: Error when unloading/switching scenes containing Array Pools + [FIXED] IL2CPP builds: runtime error + [FIXED] Example scenes: Error message in scene 51, and setup problem in scene 50 + [API/NEW] Spline input modules: Added SetRange and ClearRange methods + +8.1.0 + [NEW] Curvy Spline Segment: added the CP's Relative Distance to the info box + [NEW] Create Mesh module: added a 3rd export button, to export meshes to both the scene and assets. + This is useful when you want to make a prefab out of the exported to scene gameobject + [CHANGED] Made prefabs containing scripts from Curvy Splines openable in Play Mode + [CHANGED] Position gizmo for Bezier handles is now slightly different than Unity's position gizmo + This is to make it easier to distinguish the position gizmo of a Control Point from its handles' + [CHANGED] Volume Spots module: the minimal allowed depth for objects was changed from 0.01 to 0.001 + This is to allow for placement of smaller objects + [OPTIM] Reduced various initialization times, as well as entering Play Mode and reload times + This is especially visible in projects with a big number of scripts + [FIXED] Building for iOS platform leads to errors + [FIXED] Under Unity 2022.1 beta, an error message is sometimes displayed at project reloading + +8.0.2 + [OPTIM] Minor optimization of the Deform Mesh module + [FIXED] Control point's gizmo labels are not positioned properly under certain Unity versions + This bug is due to a regression in Unity that has been fixed lately. Curvy had a workaround to that regression. This update disables the workaround for the latest Unity versions that don't need the workaround. It is recommended to use both Curvy 8.0.2 or higher, and Unity 2021.2.12f1 or higher. + More about the issue here: https://issuetracker.unity3d.com/issues/handles-dot-label-does-not-appear-in-the-supposed-place + +8.0.1 + [NEW] Added a warning when a spline's gizmo color is transparent + [FIXED] Spline's gizmo colors are sometimes automatically set to a transparent color + [CHANGED] Create Mesh module: GroupMeshes is now hidden if Combine is set to false + Before this change, the GroupMeshes parameter was visible even when its value was not used + +8.0.0 + TL;DR Deform Mesh and other new CG modules, Spline Controller's On Position Reached events, SVG import, B-Splines, Spline To Edge Collider 2D, major optimizations, a LOT of fixes and an easier workflow + + General + [NEW] Added a Curvy Spline To Edge Collider 2D script + [NEW] Added an Array Pools Settings script + Curvy Splines now use pools of arrays as a mean to reduce CPU time. These pools have a default capacity. Automatically, an instance of Array Pools Settings is added to the _CurvyGlobal_ object. It allows you to define the capacity of the pools, and shows you their current usage. Set the Capacity to 0 to not use the pools at all + [CHANGED] Changed the folders structure. Now everything is in a Plugins/ToolBuddy folder. As recommended for every update, please delete the old Curvy folders before installing the new version + [CHANGED] Improved various UIs, including the Curvy Generator: improved ease of use, added tooltips, added warning messages when relevant, etc... + [CHANGED] Various documentation enhancements + [OPTIM] Optimized various features, both in edit mode and play mode. The optimizations are related to both CPU time and memory usage. The biggest of these optimizations greatly improves scenarios involving frequent updates of Curvy Generator, such as real-time mesh generation + [FIXED] Toolbar not displaying when setting the Unity Editor language to a language other than English + [FIXED] Truncated text in some buttons due to new UI + [API/CHANGED] SerializableArray has changed namespace from FluffyUnderware.CurvyEditor to FluffyUnderware.Curvy.Utils + + Splines + General + [NEW] Support for B-Splines + [NEW] Restrict To 2D can now restrict the spline in any of the main 3 planes. You can select the plane via a new setting, Restricted 2D Plane + [NEW] Nearest Spline Point: a script to get the nearest point on a spline + [CHANGED] Splines created via the editor have now a numbered suffix added to their name + [CHANGED] When adding a Control Point to a spline, its local rotation is set to zero, instead of its global rotation as it was the case + [CHANGED] Spline segments have now a maximal cache size of 1.000.000 points + [FIXED] Curvy Spline inspector showing a false warning about a spline not being restricted to a 2D plane + [FIXED] Sometimes splines refresh every frame even when there are no changes to process + [FIXED] "Set center/pivot point" tool in the toolbar does not update when a spline switches from being 3D to restricted to 2D + [API/NEW] Added CurvySpline.GetNearestPoint + [API/NEW] Added CurvyUtility.SplineToMesh + [API/NEW] Added CurvyUtility.GetNearestPointIndex + [API/NEW] CurvySpline.Clear has now an optional parameter to define if the spline clearing should be undoable in the editor or not + [API/NEW] Added new methods to get the spline's cached data. Those methods use pooled arrays: GetPositionsCache, GetTangentsCache and GetNormalsCache + [API/CHANGED] Start and OnEnable now invoke the OnRefresh event always if the spline has Control Points, and never if the spline is empty + [API/CHANGED] Refresh now invokes the OnRefresh event only if there were actual modifications processed by the Refresh method + Scene view UI + [NEW] Added an Orientation Anchors gizmo + [NEW] Added a Relative Distances gizmo + [NEW] Added a TF gizmo + [NEW] Draw Splines tool: Added a new drawing plane, the view plane + [NEW] Draw Splines tool: CTRL+clicking on the first Control Point of a spline closes it/opens it + [CHANGED] Connection gizmos are now a separate setting from the Curve gizmo. They can now be activated separately + [CHANGED] Control Points' Label gizmos are now displayed even when the CP is not selected + Shapes + [CHANGED] Pie's roundness is now by default 1 when shape is reset + [FIXED] Shapes are not refreshed when their component are reset via the inspector + [FIXED] Pie's normals are incorrect + [FIXED] Rectangle's normals are incorrect when increasing the cache density + [FIXED] Shapes not having the proper normals when setting planes other than the default one + Splines Import/Export window + [NEW] Added support for SVG import + [CHANGED] The local/global selector now applies also on the spline's coordinates, not only the Control Points' + [CHANGED] File selector now displays only the relevant file formats + [FIXED] Synchronize TCB is ignored when importing/exporting a spline + [FIXED] Error when exiting the file selector without choosing a file + [API/NEW] Exposed methods converting between splines and JSON in SplineJsonConverter + + Controllers + [NEW] Spline Controller: Added new type of events, "On Position Reached" events, allowing for events to be triggered at any position on the spline + [CHANGED] Position Mode's default value changed from Relative to Absolute + [CHANGED] When Move Mode is set to Absolute, Position slider is now greyed when no source for the controller is set + [FIXED] Errors when UITextSplineController has spaces in its input text + [FIXED] Spline Controller: Wrong documentation link for the Connections Handling section + [FIXED] Rarely, an exception is thrown when using a spline controller + [FIXED/API] SplineController.SwitchTo leads to errors when called with a duration value of 0 + + Curvy Generator + General + [NEW] New module: Deform Mesh. Deforms a given mesh along a path + [NEW] New module: Input Transform Spots. Sets a spot that is tied with a Game Object's transform + [NEW] New module: GameObject To Mesh. Converts GameObjects to Volume Meshes + [NEW] Create GameObject module: Added a new setting: "Apply Layer On Children" + [CHANGED] Create Mesh module: a 32 bit index format is now used if the mesh has too many vertices, allowing to create meshes with more than 65535 vertices + [CHANGED] Create Mesh module: The default mesh collider's cooking options now includes Use Fast Midphase for the relevant Unity versions + [CHANGED] Create Mesh module: The AddNormals and AddTangents enums are replaced with boolean parameters + [CHANGED] Volume Mesh module: Removed Material ID from the UI since it was not used. The used material id is the material group's index (displayed as the tab's title) + [CHANGED] Input Spline Shape module: created shapes no more have their gizmos hidden by default + [CHANGED] Curvy Generators' instances now have incremental names + [CHANGED] Shape Extrusion Module: the following settings are not available anymore, and are assumed to be always true: Hard Edges, Materials and Extended UV + The reason behind this change is to lift the legitimate confusion some users had: until now, to use one of those settings in a shape extrusion, you had to both activate the setting in the module and activate the equivalent setting in the "Meta CG Options" meta data of the relevant Control Point. Now you only need to activate the setting in the meta data + [OPTIM] Create Mesh module: When creating multiple meshes with mesh colliders, the colliders are baked in parallel + Warning: as a limitation from Unity, the parallel baking will be ignored if you set the cooking options to any value different than the default value. For more details: https://forum.unity.com/threads/physics-bakemesh-question.741257/#post-4999400 + [FIXED] The Auto Refresh feature stops working properly if you switch scenes without destroying the Curvy Generator + [FIXED] CG's ordering of its modules in the hierarchy sometimes is not consistent + [FIXED] Create Mesh module: When setting Combine to true, an exception is thrown when using spots with a mesh that has no materials + [FIXED] Create Mesh module: An exception is thrown when inputting a spot with an invalid index (referencing a non existing VMesh input) + [FIXED] Create Mesh module: when combining two meshes, one with tangent and one without, the Add Tangents parameter is ignored + [FIXED] Create Mesh module: when AddNormals and AddTangents are set to No, the normals and tangents are still included in mesh, and have invalid values + [FIXED] Create GameObject and Create Mesh modules: Resources counter and selector sometimes do not work properly + [FIXED] Volume Spots modules created via API can under some circumstances get their value reset + [FIXED] Volume Mesh module: Material settings are not undoable + [FIXED] In Play Mode, deleting the input splines of the Input Spline modules, if done through the module's UI, lead to incomplete deletion of said splines + [FIXED] Input Spline modules: Sometimes an error is logged when rasterizing a spline too densely + [FIXED] Input Spots module: trying to add an input after deleting all existing ones generates errors + [FIXED] Input Spots module: Errors when dragging a Game Object over the module + [Fixed] Input Game Objects: when an entry has no game object assigned, the module outputs a null game object instead of just ignoring it + [FIXED] Rasterize Path module: The Range and Length parameters behave as if an open spline is closed, and vice versa + To restore the previous behaviour if your project depends on it, set the Use Bugged Range setting to true + [FIXED] Shape Extrusion module sometimes extrudes a faulty mesh when it uses a different range than 0-1 and the associated Input Spline module uses a Start CP different than the first CP + [FIXED] Shape Extrusion module: When path range loops, and when using the Optimized setting, Advanced Scaling does not work on the path part that is beyond the looping point + [FIXED] Input Mesh module showing a mesh as having a UV2 channel when it hasn't + [FIXED] Variable Mix Shapes module sometimes not updating when the associated path changes slightly + [FIXED] TRS Path module: If applied on a closed path, any extruded mesh using said path is not aligned at its looping point + [FIXED] Editor lags when refreshing a generator in projects that have a lot of assets + [FIXED] Dropping a spline in the generator window sometimes does not create an input module + [API/NEW] Added CGVolume.Scales + [API/NEW] CGVMesh.GetSortedVertexIndices + [API/CHANGED] CGVMesh.ToMesh now has two optional parameters defining whether the normals and tangents should be copied or not + [API/CHANGED] Made mandatory the previously optional includeOnRequestProcessing parameter of the CurvyGenerator.GetModules methods. It being optional and having a default value set to false made it confusing for its users + [API/CHANGED] The BuildRasterizedPath.From setter now handles the edge value of 1 similarly to BuildShapeExtrusion.From + [API/FIXED] The following methods ignore the modules that implement the IOnRequestProcessing interface: CurvyGenerator.GetModuleOutputSlot(int, string) and CurvyGenerator.GetModuleOutputSlot(string, string) + [API/FIXED] Conform Path and Path Relative Translation modules: the output path's Length and F are not updated + [API/FIXED] The CGSpots(CGSpots source) constructor does not copy the source spots, but copies just the reference + [API/FIXED] Pushing then popping an instance of CGMeshResource in the same frame can lead to some of its components to be deleted + Exporting Game Objects/Meshes + [NEW] Added a Save Output To Scene button in the toolbar. This will copy to outside the generator all the generated meshes and game objects + [NEW] Added a Clear Outputs button in the toolbar. This will delete all the generated meshes and game objects in a single click + [NEW] Create GameObject module: Added a Save To Scene button + [CHANGED] Create GameObject and Create Mesh modules: Now exported game objects are always under a parent game object, even if there is only one exported game object + [CHANGED] Create GameObject and Create Mesh modules: When multiple objects are exported, their parent GameObject is now named " Exported Resources" instead of "" + Prefabs + [CHANGED] Prefabs: Better handling of forbidden prefab related operations + Some operations, like deleting a game object, are not allowed in a prefab instance due to Unity's New Prefab System. When Curvy Generator was asked to delete an object part of a prefab instance, it showed an error message in the console. Now, it will behave as follows: + - If the object to delete is automatically generated, like an output mesh, and thus can be regenerated by refreshing the Curvy Generator, any operation that leads to its automatic deletion will also delete it from the prefab asset + - For the other cases, like deleting a module from a graph window, a popup will ask the user to first delete the associated object from the prefab asset + [FIXED] Create GameObject module: Errors when using input GameObjects that are prefab assets + [FIXED] Create GameObject and Create Mesh modules: Objects are sometimes duplicated when exiting play mode if the module is part of a prefab + Graph View + [NEW] Support for the following hotkeys for modules manipulation: + Ctrl+D duplicate selected module + Ctrl+A select all modules + Ctrl+C copy selected module + Ctrl+X cut selected module (module is deleted when pasting the cut module) + Ctrl+V past module + [NEW] Support for drag and drop of Game Objects, shapes and meshes in the generator view + [CHANGED] Dropping a link on a module no more selects and focuses the view on said module + [CHANGED] Module focus is now on the top of the module instead of its bottom. This makes working with big modules, such as Volume Spots, easier + [CHANGED] A right click on a module now also selects it + [CHANGED] Dragging a module now selects it + [FIXED] CG's graph sometimes scrolls in weird directions when dragging a module + [FIXED] Couldn't deselect a selected module under some circumstances + [FIXED] Couldn't do a rectangle drag under some circumstances + [FIXED] When clicking on a module's title to drag the module, sometimes a link is dragged instead + [FIXED] CG's graph keeps scrolling by itself + [FIXED] CG's graph's preview link keeps being displayed even after the user stopped dragging it + [FIXED] When a selected module is deleted from outside the generator, the latter keeps highlighting the module's contour as if still existing + [FIXED] Clicking on an empty space does not deselect the selected link + [FIXED] When a link is under a module, selecting the module can select the link, and sometimes delinking it + [FIXED] Scrolling bars glitch when trying to drag the view beyond the graph's borders + [FIXED] Selecting modules via selection rectangle does not select the module's Game Object + [FIXED] Finishing canvas dragging while the mouse is on a module selects the module + [FIXED] When deselecting a module by clicking on an empty spot on the graph, the deselection takes a delay to be applied if the mouse is not moving + [FIXED] Canvas drag stops when hitting any keyboard key + [API/FIXED] CanvasState.MouseOverLink is giving wrong results + UV and UV2 + General + [NEW] Create Mesh module: When combining multiple Volume Meshes, you now have the option to recompute UV2 for the combined mesh. This can give better results than computing UV2 for each Volume Mesh individually. That option is called Unwrap UV2 + [NEW] Volume Mesh module: Added a new setting, Unscale U, that allows for the U coordinates to be independent from the scaling + [CHANGED] Create Mesh module: Replaced "Add UV2" with Volume Mesh module's "Generate UV2". Now both UV and UV2 are generated by the Volume Mesh module + [CHANGED] Volume Mesh module: the Keep Aspect setting now has three possible values: Off, Scale U or Scale V + [FIXED] Volume Mesh module: UV2 calculation is wrong when using the Split setting + For backward compatibility reasons, the pre Curvy 8 behaviour is still available through the Split UV2 setting, in the Backward Compatibility section + [FIXED] Volume Mesh module: UV2 incorrectly computed when UV is swapped or negatively scaled + [FIXED] Volume Mesh module: Tangents are invalid when UVs are missing, swapped or scaled negatively + [FIXED] Spline To Mesh window: Wrong UV2 values + [FIXED] Build Volume Caps module: Wrong UV2 values + [FIXED] Volume Caps module: The Keep Aspect enum does not work properly + Meta CG Options + [CHANGED] Now shows only the settings that are relevant (that will be used in that specific context) + [CHANGED] "Explicit U" and "Set U from neighbours" are now possible for CPs with a change of Material ID + [FIXED] When there is a change of Material ID at a specific CP, its "UV Edge" is overridden to true + For those relaying on that old behaviour, you will have to set "UV Edge" to true for all the CPs with a change of Material ID. You can find a code snippet that does that here: https://forum.curvyeditor.com/thread-1294.html + [FIXED] On the first CP of an open spline, in some cases First U is ignored when setting Explicit U (second U is used instead) + [FIXED] On the first CP of an open spline, First U and second U can be displayed even if the CP is not a UV Edge or has Explicit U + [FIXED] Exception is sometimes thrown when last CP of a spline has an Explicit U value + [FIXED] ArgumentOutOfRangeException when computing UV under some circumstances + [FIXED] When setting two points CPs to the same explicit U, the second CP will have an invalid U value under some circumstances + [FIXED] When setting an explicit U value to any CP other than the last one of an open spline, the automatically generated U value of the last CP is wrong + [FIXED] Invalid UV coordinates in some cases when using two different materials on closed splines + [FIXED] Shape Extrusion module: UV coordinates of an extruded shape are wrong if you activate Hard Edges and Extended UV options while not providing any value for those options + [API/CHANGED] MetaCGOptions.HasDifferentMaterial does not create anymore a MetaCGOptions instance at the previous CP if such instance does not exist + Data disposal (API only) + In connection with the array pools addition explained earlier, instances of CGData and their inheriting classes need to be disposed. This allows for the arrays they use to be returned to the pools + [API/NEW] Added OutputSlotInfo.DisposableData: Whether the data outputted through this slot can be disposed when it is replaced by a newer outputted data + [API/NEW] Added an override for the GetData methods from the CGModuleInputSlot. That override has an out boolean parameter, isDataDisposable. That parameter tell the data consumer if the data should be disposed after being used or not + + Preferences window + [NEW] New setting: Save Generator Outputs + [NEW] New setting: Show Hints + [NEW] New setting: Enable Announcements + [NEW] New setting: Enable Metrics + [NEW] New setting: Auto Fade Labels + [CHANGED] When resetting preferences, Use Tiny 2D Handles is now set to true + [CHANGED] Changed the default value of Spline Selection Color to a color that is more visible on dark backgrounds. To set back the previous color, please set the color's RGB 0-1 values to red:0.15, green:0.35 and blue:0.68 + [FIXED] Resetting preferences does not reset the "Hide _CurvyGlobal_" and "Snap Value Precision" preferences + +7.1.8 + [FIXED] The URL of the Upgrade button is leading to an obsolete package + +7.1.7 + [NEW] Added an Upgrade to Curvy 8.0.0 button, which leads to https://assetstore.unity.com/packages/slug/212532 + Make sure you are logged in the Asset Store when accessing that page + +7.1.6 + [FIXED] Curvy shows a compiler warning when used with Unity 2021.2 + +7.1.5 + Curvy Generator + [CHANGE] Now the order of execution of CG modules is deterministic + [FIXED] CG's ordering of its modules in the hierarchy sometimes is not consistent + [FIXED] Input Mesh module showing a mesh as having a UV2 channel when it hasn't + Controllers + [FIXED] Errors when UITextSplineController has spaces in its input text + [FIXED] Wrong documentation link for the Connections Handling section in the Spline Controller's inspector + [FIXED/API] SplineController.SwitchTo leads to errors when called with a duration value of 0 + Splines + [FIXED] Sometimes splines refresh every frame even when there are no changes to process + [FIXED] Inspector showing a warning when it shouldn't, about a spline not being restricted to a 2D plane + Others + [FIXED] Toolbar not displaying when setting the Unity Editor language to a language other than English + [FIXED] Text is truncated in some buttons + [FIXED] Rectangle's normals are incorrect when increasing the cache density + [FIXED] "Set center/pivot point" tool in the toolbar does not update when a spline switches from being a 3D to one restricted to 2D + +7.1.4 + Curvy Generator + [CHANGE] Spline Input modules: Now when the StartCP or EndCP is automatically set to null because its value is invalid, an error message is displayed in the console to notify the user about the value override and the reason behind it + [OPTIM] TRS modules and the Relative Translation module: less CPU consumption + [FIXED] Shape Extrusion and Path Rasterization modules: When the Range parameter loops, and if using the Optimized option, the Advanced Scaling does not work on the path's part that is beyond the looping point + [FIXED] TRS modules: Using a TRS module on a closed path makes the extruded mesh using it not align at its looping point + Shapes + [FIXED] Sometimes, after selecting a spline, the Shape creation and edition buttons need to be clicked twice to work + [FIXED] The Shape Wizard's background is not drawn properly when the Curvy toolbar is placed at the bottom side or right side of the screen + [FIXED] Creating a Shape through the Shape Wizard when having another shape selected leads to creating an empty shape + [API/CHANGE] Made CurvyShape.Persistent obsolete + Others + [NEW] Added the Asteroid Belt Youtube tutorial scene as example scene 28 + [CHANGE] Replaced example scene 24 with the Conform To Terrain Youtube tutorial scene + [CHANGE] Added a background to the Shift tool's UI for more visibility + [CHANGE] Replace a Connection Synchronization icon for the dark theme UI for more visibility + [CHANGE] Minor improvements in UI and documentation + [FIXED] A compiler warning appears when using Unity 2020.2 or above + Sorry about this one, the fix was accidentally not included in 7.1.3. + +7.1.3 + [FIXED] Compiler warnings appear when using Unity 2020.2 or above + +7.1.2 + [FIXED] Curvy Generator: module's background does not have the right size on Unity 2019.3 and newer + +7.1.1 + [FIXED] Compiler error when using Unity 2019.1 + +7.1.0 + Unity editor's Undo + [CHANGE] Made the Make Planar operation undoable + [CHANGE] Made the Connection inspector's operations undoable + [FIXED] Undoing Bézier handles modification does not reflect on connected control points when Bézier handles are set to be synchronized + [FIXED] Undoing the creation of control points via the "Add & Smart Connect" tool (CTRL + right click when creating splines) sometimes is not done properly or even leads to errors + [FIXED] Undoing the removal of a connected control point does not restore the connection + [FIXED] Undoing the removal of a connected control point stops its spline from refreshing when said control point is moved + [FIXED] When undoing shape modifications done via the shape wizard, the shape can become weird looking + [FIXED] Deleting a Control Point, if undone, will restore the CP at the wrong position in the spline's hierarchy + [API/NEW] Added CurvySpline.Delete(CurvySplineSegment controlPoint, bool skipRefreshingAndEvents, bool isUndoableDelete) + Connections + [CHANGE] "Add and smart connect" tool: Now all the added CPs have their heading set to automatic + [FIXED] "Add and smart connect" tool: Adding a CP to an existing connection, having some CPs synchronized and others not, can lead to all the connection's CPs to synchronize their transform + [FIXED] A console error is displayed when the Simplify tool removes a connected control point + [FIXED] When rotating a Bézier spline's control point while holding the Shift button, the rotated handles synchronize with the connected control points even if the handles synchronization option is not activated + [FIXED] In some situations, Follow-Up's value is not taken into consideration if the connection's inspector is not displayed + [FIXED] Follow-Up: Automatic heading direction is sometimes not resolved properly. + The "Automatic" heading direction will now be resolved to "To spline's end" instead of "Nowhere" when no obvious value is found. It gives better result most of the time + [FIXED] Duplicating a connected spline will create a spline that seems connected while it isn't + [API/NEW] Added CurvyConnection.Disconnect(bool destroyEmptyConnection) + [API/NEW] Added CurvySplineSegment's CanFollowUpHeadToEnd and CanFollowUpHeadToStart + [API/CHANGE] Made CurvyConnection.ResetConnectionRelatedData obsolete + [API/FIXED] CurvyConnection.RemoveControlPoint does not unset the removed CP as a Follow-Up for the still connected CPs + Others + [NEW] Added a button in the about window to display the publisher's page on the asset store + [NEW] The following metrics are now send to Curvy's server at each import of a new Curvy version: Curvy version, Unity version, Scripting version. + The collected metrics will help making decisions when it comes to maintaining Curvy's old code, and using Unity's version specific features. The send data is anonymous + [CHANGE] Made the "Generate Assembly Definition" button's icon compatible with the dark ("Professional") editor theme + [FIXED] Wrong UV2 calculation when UV scale is in between 0 and 1 + [FIXED] When Restrict To 2D is true, and the spline is not planar, the Make Planar button is sometimes not displayed + [FIXED] Errors when the project uses the Code Analysis package + [FIXED] Runtime instantiated controller throws null reference exceptions when one of its events is called + [FIXED] Error messages sometimes showing in the example scenes using trains + [FIXED] When resolution is too low, mesh extrusion sometimes creates an unnecessary point at the end of a spline when rasterizing it + [API/CHANGE] CurvyMetadataBase class now requires a CurvySplineSegment component, to avoid misuse + [API/CHANGE] CurvySpline: Equalize, MakePlanar and Normalize now Refresh the spline after modifying it. This is done to harmonize the behaviour with other similar methods + [API/FIXED] CurvySpline.ToLocalDirection does not return the expected result + [API/FIXED] CurvySpline.IsControlPointASegment returns true for all PCs of a closed spline, even if said spline has only one CP + This bug lead to erroneous values for the following properties: FirstVisibleControlPoint, FirstSegment, LastVisibleControlPoint and LastSegment + [API/FIXED] CurvySpline's GetNextControlPointIndex and GetPreviousControlPointIndex returning 0 instead of -1 when called on a CP that is the only CP of a closed spline + +7.0.0 + [FIXED] Added CPs through the Add & Smart Connect tool are not all undoable + [FIXED] Creating a CP through the Add & Smart Connect tool sometimes leads to a misplaced CP + [API/CHANGE] Removed obsolete methods + [API/CHANGE] Added a space parameter to define in which space a vector is (local or global) for all CurvySpline's and CurvySplineSegment's methods that have a vector as an input or output + +6.4.1 + [FIXED] The Spot GameObjects template sets Items # to an invalid value of -1 + +6.4.0 + Curvy Generator + Volume Spots + [NEW] You can now set the scale of the spots + [NEW] You can now set the translation in all directions, and in either the relative or absolute frame + [CHANGED] Modified the module's inspector to make it easier to use and understand. Some parameters changed name in the process + [CHANGED] Use Volume is now set to true by default + [CHANGED] Use Volume is no more automatically set to false when input is not a volume (in which case its value is ignored) or the module is reset + [FIXED] When using Rotation Scatter, the rotation value changes depending on whether Height is set to a fixed value or a random value + [FIXED] Rotation Scatter is not applied on all objects + [FIXED] Changing the Seed parameter has no effect on the randomly generated values + [NEW] Added a Use Bugged RNG option in the General tab. Use it to ignore the fixes listed above if your project depends on the bugged behaviour + [FIXED] When Space Before or Space After has a too small negative values (i.e too big absolute value), Unity freezes + [FIXED] Setting the Space Before, Space After, or Position Offset as random values will modify the randomly generated rotations and height + [FIXED] A group's Space Before and Space After are considered even if the group is not placed because of Keep Together + [FIXED] When a repeating group with Keep Together set to true is not placed because of a lack of space, the following group is positioned as if the first group was placed + [FIXED] When a group has Keep Together set to false, and there is no room to fit all group's items, the placed items are out of order + [FIXED] When a group, that is not part of the repeatable groups, has items that are not randomly selected, those items are placed at the wrong position + [Fixed] When in a group some items are randomly selected, some items are placed too far from where they should be + [FIXED] Console shows errors when a Volume Spots has no group in it + Shape Extrusion + [FIXED] Invalid mesh produced if resolution is too low + Create Mesh + [NEW] Added Capsule as an option for collider types + [NEW] Exposed Rigidbody.IsTrigger + [FIX] Save to scene creates object at the wrong position when generator is not a position (0,0,0) + Others + [CHANGE] UI tweaks in Volume Spots, Shape Extrusion, Input GameObjects and Input Mesh modules + [CHANGE] Updated the built-in templates: + Shape Extrusion now have an input spline already assigned + Spot Templates now have an input volume already linked, and Use Volume set to true + [API/FIX] CGModuleInputSlot.LinkTo allows to link multiple outputs to the same input even if said input accepts only one link + Curvy Spline + [OPTIM] Splines take less CPU time in their per frame checks + [OPTIM] Spline's interpolation and update were further optimized. This will impact most spline's operations + [FIXED] Computation of TCB and CatmullRom splines when having a follow up was wrong + [FIXED] In some rare cases, the gizmo is displayed one frame late + A consequence of this fix is that the OnDrawGizmosSelected and OnDrawGizmos methods can call the spline's Refresh method. Keep this in mind when profiling + [API/NEW] Added GetFollowUpHeadingControlPoint + [API/CHANGE] Calling SetFollowUp with an invalid parameter will now show an error message + [API/CHANGE] CalculateSamplingPointsPerUnit now always return non zero values + Others + [NEW] Added a Generate Assembly Definitions button in the toolbar, under Curvy Options + This solution replaces the previously included *.asmdef.disabled files. + [NEW] Added a Review button and a Custom Development button to the About window + [CHANGE] Curvy Line Renderer: Added warning when Spline is not assigned + [CHANGE] Removed from the components list the ones that are not meant to be instantiated directly + [FIXED] Some component's help button do not lead to a valid documentation page + [API/CHANGE] CurvyConnection.AddControlPoints now shows an error message when it ignores a Control Point that has already a connection + [API/CHANGE] Set components that are never directly instantiated by Curvy as abstract classes + [API/CHANGE] Calling a teleport method on a stopped controller displays an error message + +6.3.1 + [FIXED] Compilation failure when using the provided asmdef files + +6.3.0 + Controllers + [OPTIM] Optimized Spline Controller + [FIXED] Path and Volume controllers are stuck at spline's end when using PingPong clamping while Move Mode is set to Relative + [FIXED] Controller can't be positioned at the end of an open spline when Clamping is equal to Loop + [FIXED] In some situations, controllers get stuck at Control Points + Others + [OPTIM] Optimized some low level Curvy Spline methods + [CHANGE] Inspector of the Curvy Spline Segment now shows the TF too + [CHANGE] Reduced size of example assets, and tweaked some example scenes + [API/NEW] New overrides of TfToSegment and DistanceToSegment + +6.2.0 + Curvy Generator + [FIXED] CreateGameObject: When entering play mode, The GameObject's scale seems to be multiplied by the scale value twice + [FIXED] BuildVolumeSpots: The rotation of the input GameObject influences the number and positions of the spots when it shouldn't + [FIXED] Mesh error when using a RoundedShape in an extrusion with a Roundness of 0 + [FIXED] Error messages about dirty modules displayed when it should not + [FIXED] Errors when creating a generator in an unsaved scene and then creating a new scene + A consequence of this fix is that a Curvy Generator component will move up in the list of its related gameobject's components + [FIXED/CHANGED] Various UI fixes and tweaks, most of them for all Unity versions, few of them exclusive to the new Unity's UI (2019.3 and above) + Others + [OPTIM] Various optimizations having impact on the following: + - Spline gizmo display + - Spline Controller + - Spline update and data fetch + - The Create GameObject CG module + [FIXED] By default, the update method of scripts is called less frequently in Edit Mode. Having a Controller or a Curvy Generator in a scene and VSync enabled on 2017.2 and beyond stops that behaviour, which increases power consumption + For people wanting to keep the previous behaviour, a "Force Frequent Updates" toggle was added in the "Advanced Settings" of those two scripts + [FIXED] If a connected spline is disabled, and if the user switches scene ingame, the connection object throws an error + [API] Marked some Curvy Spline methods as obsolete + +6.1.0 + Curvy Generator + [FIXED] Generators break when having other generators as children + [FIXED] The Auto Refresh parameters where ignored when modifying an input spline that is not a child of an input module. + [FIXED] Volume Caps module: end cap not using the right volume scaling + Others + [FIXED] Controllers: Offset feature still applies even when it should not i.e. when the Orientation mode is set to None. + [FIXED] The UI is broken in some places when using new UI system introduced by Unity 2019.3 + [FIXED] When using Unity 2019.3, you can't assign a dynamic event handler to events inherited from parent class + [FIXED] When using Unity 2019.3, warnings are displayed when opening some example scenes + [FIXED] In rare cases, singletons can be duplicated + [API/CHANGE] Controllers have now some previously private members exposed to inheriting classes. This is to make it easier to make custom controllers. + +6.0.1 + [OPTIM] Reduced cost of drawing a spline's gizmos + [FIXED] The Create GameObject CG module, when instantiating a prefab, breaks the link between the instantiated objects and their prefab + +6.0.0 + Curvy Generator + [NEW] Variable Mix Shapes module: Interpolates between two shapes in a way that varies along the shape extrusion. This module is used in the example scene 27. + [OPTIM] Modules that are out of the view are now culled + [OPTIM] Optimized shapes interpolation + [CHANGE] Shape Extrusion module: The shape used in the extrusion can now vary along the extrusion. To do so, you should link as a shape input a module that provides a varying shape. This is the case of the Variable Mix Shapes module. + [CHANGE] Made TRS modules larger to show more digits + [CHANGE] Better error messages when something goes wrong with resources creation + [FIXED] Mix Shapes module: Normals interpolation in not correctly computed + [FIXED] Null reference exceptions happen when having as inputs splines with no Control Points + [FIXED] Mix Shapes and Mix Paths modules: The mixing slider did not considered the mixed paths/shapes in the same order consistently. The order was sometimes inverted depending on the complexity of said paths/shapes + [FIXED] When a scene has input spline path or input spline shape module, renaming objects from the hierarchy or though the F2 shortcut does not work + [FIXED] Null references when feeding the output path of BuildRasterizedPath or the output volume of BuildShapeExtrusion to the input of a module that takes a CGPath as an input + [FIXED] Volume Spots module: Null reference exception when using random distribution on items all of them of weight 0 + [FIXED] Create Mesh module: Null reference exception when unloading a scene having a Create Mesh module which mesh was removed by hand through the inspector + [API/NEW] New types used by shape extrusions with variable shapes: CGDataRequestShapeRasterization, ShapeOutputSlotInfo and SlotInfo.SlotArrayType + [API/CHANGE] ModifierMixShapes.InterpolateShape has now an optional ignoreWarnings parameter + Control Point's Metadata + [CHANGE] Displays warnings when a Control Point has multiple instances of the same Metadata type + [FIXED] MetaData gets duplicated + [API/CHANGE] Started refactoring Metadata API. Obsolete MetaData API will be removed in version 7.0.0. More details here: https://forum.curvyeditor.com/thread-706.html + Others + [OPTIM] Various minor optimizations + [CHANGE] Corrected scene 24's name + [FIXED] CurvyUISpline's documentation link leads to the wrong page + [FIXED] UITextSplineController have wrong position when its canvas is scaled + [FIXED] CurvyLineRenderer not updating when attached to an object that is not a CurvSpline + [FIXED] CurvyLineRenderer not updating when a spline moves + [FIXED] The View Examples button in the About Curvy Window does not find the example scenes + [FIXED] Shapes resetting themselves (and loosing all modifications done outside the Shapes menu) when Curvy reload its assemblies + [API/NEW] Added an InterpolateAndGetTangentFast method to CurvySpline and CurvySplineSegment + [API/CHANGE] Removed various obsolete members + +5.2.2 + [FIXED] Curvy Generator: In some cases when using multiple material groups, properties of some material groups get overridden by the properties of other material groups + [FIXED] In some complex Curvy Generators, some modules don't get updated when needed + [FIXED] Normal computation is wrong in TRSShape + [API/NEW] Added method SamplePointsMaterialGroup.Clone + +5.2.1 + [FIXED] Build error when using Unity 2019 + +5.2.0 + Curvy Generator + [NEW] Added a new module: Debug Rasterized Path + [NEW] Input Spline Path and Input Shape Path modules: Added a "Use Global Space" option + [CHANGE] CG module's reset now resets the listeners too + [CHANGE] Modified the error message shown when failing to destroy a resource that is part of a prefab to make it more helpful + [CHANGE] Debug modules now show a warning if the generator's debug mode is not active + [CHANGE] DebugVolume now displays the path's normals too + [OPTIM] Optimized the CG resources creation and destruction process + [FIXED] In edit mode, automatic refresh is not respecting the set "Refresh Delay Editor" value + [FIXED] Resetting some CG modules does not reset all their properties + [FIXED] Newly created Templates not showing on the templates list until you close and reopen the CG window + [FIXED] Reordering CG modules in Play mode displays an error + [FIXED] TRS Mesh module not applying the TRS matrix as it should + [FIXED] Operations on meshes' transforms do not update the meshes' normals and tangents correctly + [FIXED] Shape Extrusion module: The Cross's "Shift" option doesn't work properly when its value is set to "By Orientation" + Create Mesh CG module + [FIXED] Exported meshes (to asset files) keep being updated even after the export operation + [FIXED] Removing an exported mesh removes the mesh from the Curvy generator too + Example scene 51_InfiniteTrack + [FIXED] The generated track has discontinuities between its sections + [FIXED] The track is material rendered weirdly + Others + [NEW] Added an example scene to showcase the usage of the Conform Path CG module + [API/NEW] Added a OnGlobalCoordinatesChanged delegate to CurvySpline + +5.1.1 + [FIXED] Projects don't build when using Unity 2017.2 or newer + +5.1.0 + Curvy Connection + [CHANGE] Reworked the inspector + [CHANGE] Gizmo labels now have the same color than the icon + [FIXED] Inspector is not displayed inside the Curvy Spline Segment inspector when deleting then re-adding a connection + [FIXED] When having some of the control points synchronized, and some not, moving a not synchronized control point make the synchronized ones move too. + [FIXED] When using Synchronization presets, the synchronized position/rotation is not the one of the connection's game object as it should be, but one of the synchronized control points + [FIXED] Gizmo labels are not drawn at the right position under some circumstances + [FIXED] Updating the synchronization options from the inspector don't apply them right away, but until one of the synchronized transforms is modified + [FIXED] Synchronization options not working properly when moving multiple connected control points at once + [FIXED] Gizmos are sometime drawn using the wrong color + Curvy Generator + [OPTIM] Various optimizations related to Shape Extrusion and Input Spline modules + [API/FIXED] CGShape.Bounds is not filled by SplineInputModuleBase when rasterization mode is equal to GDataRequestRasterization.ModeEnum.Even + [API/CHANGE] Made CGShape.Bounds obsolete + [FIXED] Shape Extrusion CG module: when Optimize is true, in certain conditions the following computations give wrong results: advanced scaling, volume splitting, UV coordinates + Controllers + [CHANGE] "Update In" is now taken into consideration even when in Edit Mode. Note: Since in Edit Mode there no fixed updates, setting "Update In" to "Fixed Update" will be equivalent to setting it to "Late Update" while in Edit Mode + [FIXED] Controllers not updating frequently enough while in Edit Mode. + Others + [FIXED] When using Unity 2018.3, opening Curvy preferences from the toolbar does not work + [CHANGE] Made Curvy Global Manager execute before anything Curvy + [FIXED] You can end up with multiple Curvy Global Managers when opening multiple scenes at once + +5.0.0 + Import/Export splines: + [FIXED] Deserializing JSON files with missing fields do not assign the correct default values + [FIXED] An error is logged when closing the file selection window without selecting a file + Curvy Preferences window: + [FIXED] The "Reset to defaults" button int the does not reset all the preferences + [FIXED] A warning appears when building Curvy asking to use Unity's new [SettingsProvider] attribute + Curvy Generator: + [NEW] Added new CG module PathRelativeTranslation. It translates a Path relatively to it's direction, instead of relatively to the world as does the TRS Path module + [CHANGE] Volume Spots CG module: Extended the valid range of Position Offset's values to [-1,1]. Now all the volume can be covered + [CHANGE] The "Delete Resource" button now results in an undoable action. The confirmation message was updated to reflect this change. + [FIXED] Volume Spots CG module: crash when bounds are too small + [FIXED] Shape Extrusion CG module: resetting the module do not reset its scaling multiplier curves + [FIXED] TRS Path not transforming the Normals correctly + [FIXED] When using Unity 2018.3, showing debug information of a CG module stopped it from drawing + [FIXED] When using Unity 2018.3, error messages are logged when unloading scenes containing "Input Spline Path" or "Input Spline Shape" CG modules + [API/NEW] Shape Extrusion CG module: Exposed the scale multiplier curves + [API/CHANGE] Removed obsolete CGData.TimeStamp + [API/CHANGE] CGSplineResourceLoader.Destroy and CGShapeResourceLoader.Destroy do not register undoing actions anymore. This is to be coherent with other classes implementing ICGResourceLoader + Controllers: + [NEW] When setting "Orientation Mode" to None, the new "Lock Rotation" option allows you to enforce the rotation to stay the same. It is active by default, to keep the same behaviour than previous versions + [CHANGE] Spline controller: Added better error messages, especially when dealing with splines having segments of length 0 + Others: + [OPTIM] Various minor optimizations, mostly in Curvy Generator + +4.1.1 + [FIXED] Subdivision of a Bézier spline does not update the Bézier handles to keep the original spline's shape + [FIXED] In Unity 2018.3, Curvy Generators that are an instance of a prefab don't show properly in the inspector + +4.1.0 + UI Text Spline Controller + [NEW] Added a new property, named "Static Orientation", to make the text keep it's orientation regardless of the spline it follows + [FIXED] Inspector displays unused properties + Curvy Generator + [NEW] Create Mesh CG module: Exposed GameObject.tag in the "General" tab + [NEW] Create Mesh CG module: Exposed MeshCollider.cookingOptions in the "Collider" tab + [CHANGE] A slightly better modules reordering algorithm + [FIXED] Saving a scene just after reordering modules does not save the modules positions + Others: + [OPTIM] Some splines related operations are faster thanks to C# 7.2, available when using Unity 2018.3 or above with .Net 4.x scripting runtime + [FIXED] Incompatibility issues with Unity 2018.3 beta + +4.0.1 + [FIXED] UI icons not showing in projects using .Net 3.5 + +4.0.0 + Create Mesh CG module + [CHANGE] Combining meshes now always produce continuous meshes + [CHANGE] Enhanced the warnings when combining big meshes + [OPTIM] Memory and CPU savings, especially when combining (merging) meshes and/or generating a Mesh Collider + [FIXED] Null reference exception when combining big meshes + Volume Spots CG module + [NEW] Added warnings when the module is misconfigured + [CHANGE] The Use Volume option is now hidden when irrelevant + [CHANGE] The first available item is always added when creating groups + [CHANGE] When using objects with no bounds (like point lights), the module will assume a depth of 1 Unity unit for those objects + [FIXED] Various bugs and crashes happening in some situations where the module has null or empty input bounds and/or groups + [FIXED] Invalid spots computation when using objects with no bounds (like point lights) mixed with objects with bounds + [FIXED] Object's bounds computation sometimes not considering the colliders + Others: + [FIXED] Normalize tool failed to normalize properly some Bezier splines + [FIXED] Curvy Line Renderer not working properly when attached to an object that is not a spline + [FIXED] Removed obsolete warnings when compiling Curvy + [FIXED] In example scene 04_PaintSpline, the painted path is not positioned correctly + [API/CHANGE] Made CGData.Timestamp obsolete + [API/CHANGE] Removed the deprecated method VolumeController.ConvertObsoleteCrossPosition + [API/FIXED] CGBounds copy constructor do not copy the source name + +3.0.0 + Starting from this version, Curvy is using the versioning standard "Semantic Versioning 2.0.0". More about it here: https://semver.org/ + In a nutshell, and given a version number MAJOR.MINOR.PATCH: + - An increase in MAJOR is done when there are non backwards-compatible changes. + - An increase in MINOR is done when there are backwards-compatible changes that adds new features/API member, or modifies existing ones. + - An increase in PATCH is done when there are backwards-compatible bug fixes. + Whenever a number is increased, the numbers to its right are set to 0. + + Curvy Generator: + [NEW] Added a Reorder Modules" in the Curvy Generator toolbar. This will automatically sort the position of modules to make the graph easily readable + [CHANGE] Mix Shapes and Mix Paths CG modules show warning when mixing inputs with incompatible unmixable properties + [FIXED] Error when validating Input Spline Path or Input Spline Shape CG modules when they have a null source + [FIXED] UI warnings in some CG modules are never cleared, even when the reason for the warning is fixed + [FIXED] Mix Shapes CG module not working for shapes of different points counts + [FIXED] Mix Shapes and Mix Paths CG modules giving wrong normals, directions, length, F array and bounds + [FIXED] Create Mesh CG module can't generate a flat mesh collider + [API/FIXED] Mix Shapes and Mix Paths CG modules produce CGShape and CGPath objects with most field set to default value + [API/FIXED] CGShape and CGPath interpolation methods sometime returns non normalized vectors + + Others: + [CHANGE] Removed features previously marked as deprecated + [OPTIM] Dynamic orientation computation optimized. Up to 20% performance increase + [FIXED] For splines long enough with control points close enough, a Spline Controller could fail to handle connections and/or send events for some control points + [FIXED] Control Points created using pooling get potentially a different orientation from ones created without pooling + [FIXED] Compiling Curvy shows a compilation warning + [API/CHANGE] Corrected the typo in CurvySpline.GetSegementIndex method + [API/CHANGE] Removed deprecated API members + [API/CHANGE] Merged CurvySplineBase with CurvySpline + +2.3.0 + Controllers: + All controllers: + [NEW] Added an OnInitialized Unity event + [NEW] Controller's position can now be animated via Unity's Animation window, or any other animation tool + [DEPRECATED] The "Animate" option is removed. Use Unity's Animation window or any other animation tool instead + [DEPRECATED] "Adapt On Change" is removed, but it's behaviour is still there. Controllers will now always "adapt" (keeping their relative or absolute position, depending on the Position Mode value) when there source changes. + [DEPRECATED] The Space parameter is no more used. The controller now works correctly without the need to set the correct Space value. + [CHANGE] Direction is no more set from the sign of the Speed, but through a new value, Direction + [CHANGE] When orientation's source has a value of "None", any rotation previously applied by the controller will be reverted + [CHANGE] When orientation's source has a value of "None", Target and Ignore Direction are no more displayed in the inspector + [CHANGE] When OrientationMode is set to None, controller now uses the object's rotation on initialization instead of keeping the last assigned rotation + [FIXED] Wrong controller orientation when Target has a value of Backward + [FIXED] When orientation's source has a value of "Tangent", the orientation of the spline is ignored + [FIXED] Position is using Move Mode instead of Position Mode + [FIXED] Wrong controller's position for 0 length splines + [FIXED] Damping causes infinite rotations when the controller is parented to a rotated object, and has "Self" as a Space value + [FIXED] Very high values of OffsetRadius sometimes lead to the controller stopping + [FIXED] Offset compensation is always a frame late + [FIXED] Offset compensation is is computed based on world speed even when move mode is set to "Relative" + [FIXED] When OrientationMode is set to "None", the controller in some cases compensates the offset even when no offset is applied + [API/NEW] TeleportBy and TeleportTo methods + [API/CHANGE] Stop method now always rewinds the controller to its position it had when starting playing + [API/CHANGE] Some properties are no more virtual + [API/CHANGE] Moved all controllers related code inside the FluffyUnderware.Curvy.Controllers namespace + [API/FIXED] UserAfterUpdate not being called like its documentation states + [API/FIXED] Wrap method does not take Offset into consideration + [API/FIXED] Apply method does not take Offset into consideration + Spline Controller: + [NEW] Added options in the inspector to define the controller's behaviour when reaching a Connection: continue on the current spline, use the Follow-Up, ... + [FIXED] Adding a listener to a SplineController's event is ignored if that event had no listener when the controller is initialized + [FIXED] Spline Controller not working properly with Catmull-Rom splines having Auto End Tangents to false + [FIXED] Switching splines ignores Offset + [FIXED] Switching splines ignores Damping + [FIXED] Switch duration is ignored when On Switch event is listened to + [FIXED] Controller has wrong position when following a moved spline while having "Self" as a Space + [FIXED] When spline and spline controller are parented to a rotated object, rotation of the controller is wrong when having "World" as a Space + [FIXED] When spline and spline controller are parented to a moved object, controller switching between splines has wrong position when having "World" as a Space + [API/NEW] Added FinishCurrentSwitch and CancelCurrentSwitch methods + [API/CHANGE] SwitchTo method now raises an error if called on a stopped controller + [API/CHANGE] CurvySplineMoveEventArgs fields are now read only. To modify a controller movement, modify the controller properties instead of CurvySplineMoveEventArgs fields + [API/CHANGE] CurvySplineMoveEventArgs: sender is now always a SplineController + UI Text Spline controller: + [FIXED] Invalid position when having "World" as a Space + Path and Volume Controllers + [FIXED] "Adapt On Change" option has no effect + Curvy Splines: + [OPTIM] Real time splines modification takes tens of percents less CPU + [CHANGE] Transforming a spline into a shape will remove all its connections + [CHANGE] GetTangentFast now uses slerp instead of lerp to interpolate between cached tangents + [FIXED] Connection inspector forbids setting some Heading values when control point is connected to a closed spline's first control point + [FIXED] Slowdowns due to some connected control points synchronizing unnecessarily their transforms every frame + [FIXED] Events are triggered before the spline is refreshed + [FIXED] OnAfterControlPointChanges event was sometimes send with a null Spline property + [FIXED] OnAfterControlPointAdd and OnAfterControlPointChanges events where sometimes called with the wrong value of CurvyControlPointEventArgs.Mode + [API/NEW] InsertBefore and InsertAfter methods's overrides that set the created control point's position + [API/NEW] CurvySpline.GlobalCoordinatesChangedThisFrame + [API/CHANGE] CurvySpline.DistanceToTF will now return 0 (instead of 1) when spline's length is 0 + [API/CHANGE] InsertBefore, InsertAfter and Delete methods now have an optional parameter to make them not call the Refresh method, and not trigger events + [API/CHANGE] Start now calls Refresh, which means OnRefresh event can be send in Start method + [API/CHANGE] Adding and deleting control points events are no more cancellable + [API/CHANGE/FIXED] Made methods that add or removes control points from splines coherent between themselves in the following ways: + They now all call Refresh at their end + OnAfterControlPointChanges will always send a CurvySplineEvent + Methods that add or remove multiple control points will now always send only one event of each relevant type + [API/FIXED] TFToDistance and DistanceToTF behave differently when handling the TF and Distance of the last Control Point of a spline + [API/FIXED] CurvySpline.GetTangentFast returns non normalized vectors + [API/FIXED] DistanceToSegment returns different result that TFToSegment for the same segment + Misc: + [NEW] Added support for compiler symbol: CURVY_SANITY_CHECKS. It activates various sanity checks in Curvy's code. Very useful to debug your code when using the Curvy API. This symbol is not set by default. For performance reasons, please do not set this symbol when building your release binary. + [CHANGE] Set script execution order for some script: CurvyConection < CurvySplineSegment < CurvySpline < CurvyController + [CHANGE] CurvySplineExportWizard do not support CurvySplineGroups anymore (but still supports multiple CurvySplines) + [CHANGE] Moved files to the Plugins folder + [FIXED] Draw splines tool: undoing the creation of a connected Control Point gives console errors + [FIXED] Draw Splines tool: the "Add & Smart Connect" action generates splines that have incorrect shapes + [FIXED] CG options handled incorrectly when extruding a mesh using a Cross with non null Start PC and End CP + [FIXED] Namespace conflict with Oculus example project + [FIXED] ThreadPoolWorker does not use all available cores in some cases. + +2.2.4.2 + [OPTIM] Huge optimizations related to splines modification. Real time splines modification can take up to an order of magnitude less time + [OPTIM] Reduced multi threading computational and memory overheads + [OPTIM] Optimized splines interpolation + [CHANGE] Made splines initialize earlier, in Start instead of the first Update/FixedUpdate/LateUpdate + [CHANGE] Resetting a Control Point will now keep it's connections + [CHANGE] Connection inspector: to no allow invalid Heading settings + [CHANGE] Curvy Spline Segment inspector: OrientationAnchor is no more visible when it's value is irrelevant + [CHANGE] Made materials in example scenes compatible with Unity 2018 (dropping of Substance based ones) + [CHANGE] Transformation from text to number of user provided values now uses the invariant culture instead of the culture on the user's machine. More about invariant culture here: https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture%28v=vs.110%29.aspx + [FIXED] Exceptions thrown when updating splines with "Use Threading" and "Bake Orientation" in one of the control points set to true + [FIXED] Occasional exceptions thrown when undoing some operations + [FIXED] In Meta CG Options' inspector, setting First U from neighbors lead to thrown exceptions or invalid values + [FIXED] Spline Controller does not work when setting its spline from code + [FIXED] Changing spline controller's speed through the SetFromString does not work + [FIXED] Controller's orientation can be wrong when TimeScale is set to 0 or when unpausing the game + [FIXED] If a Control Point is used as a Follow-Up, moving it sometimes does not update the connected spline + [FIXED] Control points that have already a next or previous Control point are allowed to have Follow-Ups + [FIXED] A spline does not get updated when its first Control Point has a Follow-Up that moves + [FIXED] Changing a spline's Auto End Tangents do not refresh following up spline + [FIXED] Connection between control points at the end or start of a spline prevent those control points to become invisible when Auto End Tangents is set to false + [FIXED] Connection persists after deletion + [FIXED] Connections still existing even if all the connected control points are removed + [FIXED] When changing Auto End Tangents from false to true, the Orientation Anchor value of the second control point is always overridden to true + [FIXED] Selecting an orphan control point from a loaded scene leads to null references + [FIXED] Spline does not get updated when one of its children Control Points is moved elsewhere via the Hierarchy window + [FIXED] First tangent of a segment is sometimes not up to date + [FIXED] When switching from Orientation Static or Dynamic to None, orientation for some control points is not recomputed + [FIXED] The orientation of the last segment's cached points is sometimes not up to date + [FIXED] A spline's Length can have a negative value when removing all control points + [FIXED] A spline keeps a non zero value for Cache Size and Segments count even after removing all control points + [FIXED] Sometimes, when enabling a disabled spline, the control points hierarchy is not reflecting the actual splines' control points + [FIXED] Changing the number of points in a Spiral (in the Shape wizard) sometimes make the spiral "entangled" + [FIXED] "Max Points Per Unit" is not correctly imported when using the splines import/export tool + [FIXED] Resetting a CurvySpline component will set invalid value to its "Max Points Per Unit" + [API/CHANGE] CurvySpline.Create now returns an initialized splines + [API/CHANGE] Now all CurvySplineSegments have approximation arrays of a length of CacheSize + 1 + [API/CHANGE] Made CurvySplineBase abstract + [API/CHANGE] CurvySplineSegment's ControlPointIndex can no longer be set. It is now handled by CurvySpline + [API/CHANGE] Made components stripping systematic when pushing CurvySplineSegments to pools + [API/FIXED] IsLastSegment returns true even if Control Point was not a segment + [API/FIXED] When using Follow-Ups, GetPreviousControlPoint returns a Control Point that is not a segment even when segmentsOnly is true + [API/FIXED] Poolable objects do not get their OnBeforePush method called before being pushed into a pool + [API/FIXED] Setters of CurvySpline.MaxPointsPerUnit, CurvySplineGroup.Splines and BuildShapeExtrusion.CrossShiftValue did not update these values correctly + Changes since 2.2.4.1 + [FIXED] StartCP and EndCP in InputSplinePath and InputSplineShape modules are set automatically to null. + +2.2.3 +Reminder: at each Curvy update, please delete the old Curvy folders before installing the new version. + [NEW] Assembly definitions support + Curvy was restructured and modified to support Unity's assembly definitions. This feature is disabled by default in this release. To enable it, search in Curvy installed folders for files with ".asmdef.disabled" extension, and rename the extension to ".asmdef". + [NEW] CG module slots can be renamed without breaking the generator's data + [CHANGE] Spline sampling parameters were modified: + - The global "Max Cache PPU" is now obsolete and replaced with a per spline "Max Max Points Per Unit" + - The "Min Distance" parameter of the Curvy Generators is now obsolete + For more details please go here https://forum.curvyeditor.com/thread-526.html + [CHANGE] Fixed an example script's namespace + [CHANGE] Added relevant dlls generated by asmdefs to link.xml + [CHANGE] 0 is no more a valid value for the Resolution parameter in "Rasterize Path" and "Shape Extrusion" CG modules + [CHANGE] Modified some CG module slots names to reflect the need for a rasterized path, in opposition to a non rasterized one. + [FIXED] Some CurvyUISpline properties do not get reset properly when resetting the component + [FIXED] Spline's level of detail is different between the editor and the build. + [FIXED] Extruded shapes become two dimensional if small enough + [FIXED] The "Use Cache" parameter in the spline input CG modules is ignored when linked to "Shape Extrusion" or "Rasterize Path" CG modules having "Optimize" set to true. + [FIXED] The rasterization resolution in the "Rasterize Path" CG module is modified if the module's Length parameter is modified. + [FIXED] Extruded mesh jitters when modifying its path spline's length + [FIXED] Wrong name of Rasterize Path in the CG modules list + [FIXED, except when building against .NET Core] Curvy doesn't detect custom CG modules and Shapes from other assemblies. + [FIXED] The Curvy generator templates list is broken in .Net 4.6 + [FIXED] In the CG graph, the suggested list of modules to connect with the current module contains modules you can't connect to + [FIXED] Spline to Mesh tool generated spline at the wrong position + [FIXED] Pools get duplicated if the pooled object's class is in a different assembly from the pool + [FIXED] Multiple pools of the same component crash the game + [FIXED] Obsolete messages from Unity 2017.3 and newer + [FIXED] WebGL application crashes when using a spline having Use Threading set to true + Example scenes: + [CHANGE] Set assets serialization mode to Text + [CHANGE] Reduced Ressource images size + [CHANGE] Various tweaks and enhancements + [FIXED] Example scenes do not render properly on WebGL and Mobile + +2.2.2 + Spline to Mesh: + [CHANGE] Renamed the "Mesh Export" tool to "Spline to Mesh" to avoid confusion. + [CHANGE] Spline to Mesh does no more require the input spline to be on the X/Y plane + [FIXED] Spline to Mesh does not open in recent Unity version + [FIXED] Spline to Mesh produces wrong values in UV2.y + + Spline Import/Export wizard: + [NEW] Added link to documentation in the spline Import/Export wizard + [CHANGE] Spline Import/Export wizard modified to make it more straight forward to use + [CHANGE] Modified the field names in the exported spline JSON format, to make it similar to the spline field names in the inspector + [FIXED] Spline Import/Export wizard does not open in recent Unity versions + [FIXED] "String too long" error when displaying long text in the spline Import/Export wizard TextMeshGenerator Cutting off characters + + Others: + [Change] Replaced the usage of the obsolete UnityEditor.EditorApplication.playmodeStateChanged method with UnityEditor.EditorApplication.playModeStateChanged and UnityEditor.EditorApplication.pauseStateChanged for Unity 2017.2 and above + [FIXED] WebGL builds fail + [FIXED] Builds that use code stripping fail on Unity 2017.1 and older + [FIXED] When synchronizing connected spline handles, moving a handle can invert the others + +2.2.1 + [CHANGE] Modified the UI of the CG module "Create Mesh" to avoid confusion regarding the "Make Static" option: + - "Make Static" is now not editable in play mode, since its Unity equivalent (GameObject.IsStatic) is an editor only property. + - When "Make Static" is true, the other options are not editable while in play mode. This is to reflect the behaviour of the "Create Mesh" module, which is to not update the mesh while under those conditions, to avoid overriding the optimizations Unity do to static game objects' meshs. + [FIXED] When combining multiple Volumes having different values for the "Generate UV" setting, the created mesh has invalid UVs + [FIXED] "Mesh.normals is out of bounds" error when Generating a mesh that has Caps while using the Combine option + [FIXED] Convex property, in CG module Create Mesh, not applied on generated mesh collider + [FIXED] Negative SwirlTurns are ignored + [FIXED] Orientation interpolated the wrong way (Lerping instead of SLerping) + [FIXED] Cross's "Reverse Normal" in "Shape Extrusion" module is ignored when a "Volume Hollow" is set + [FIXED] Crash on IOS when using code stripping on Unity 2017.2 and above. + [Optimization] Various optimizations, the most important ones are related to "Shape Extrusion"'s normals computations and Orientation computation + [API] Added a new GetNearestPointTF overload that also returns the nearestSegment and the nearestSegmentF + [API] Made CrossReverseNormals, HollowInset and HollowReverseNormals properties public in BuildShapeExtrusion + +2.2.0 + [NEW] Addressed Unity 2017.3 incompatibilities + [NEW] Added a RendererEnabled option to the CreateMesh CG module. Useful if you generate a mesh for collider purposes only. + [FIXED] Error when using pooling with Unity 2017.2 and above + [FIXED] Incompatibility with UWP10 build + [FIXED] SceneSwitcher.cs causing issues with the global namespace of Scene Switcher being occupied by the PS4's SDK + [FIXED] Curvy crashing when compiled with the -checked compiler option + [FIXED] TRSShape CG module not updating properly the shape's normals + [FIXED] ReverseNormals not reversing normals in some cases + Note: You might have ticked "Reverse Normals" in some of your Curvy Generators, but didn't notice it because of the bug. Now that the bug is fixed, those accidental "Reverse Normals" will get activated. + [FIXED] Split meshes not having the correct normals + [CHANGE] Replaced website, documentation and forum URLs with the new ones. + [Optimization] Various optimizations, the most important ones are related to mesh generation (UVs, normals and tangents computation) + +2.1.3 + [FIXED] TimeScale affects controller movement when Animate is off + [FIXED] Reverse spline movement going wrong under some rare conditions + +2.1.2 + [NEW] Added CreatePathLineRenderer CG module + [NEW] Addressed Unity 5.5 incompatibilities + [FIXED] SplineController.AdaptOnChange failing under some conditions + [FIXED] Selecting a spline while the Shape wizard is open immediately changes it's shape + [FIXED] ModifierMixShapes module not generating normals + [CHANGE] Changed 20_CGPath example to showcase CreatePathLineRenderer module + +2.1.1 + [NEW] Added CurvySplineBase.GetApproximationPoints + [NEW] Added Offsetting and offset speed compensation to CurvyController + [FIXED] ImportExport toolbar button ignoring ShowGlobalToolbar option + [FIXED] Assigning CGDataReference to VolumeController.Volume and PathController.Path fails at runtime + [CHANGE] OrientationModeEnum and OrientationAxisEnum moved from CurvyController to FluffyUnderware.Curvy namespace + [CHANGE] ImportExport Wizard now cuts text and logs a warning if larger then allowed by Unity's TextArea + +2.1.0 + [NEW] More options for the Mesh Triangulation wizard + [NEW] Improved Spline2Mesh and SplinePolyLine classes for better triangulator support + [NEW] BuildVolumeCaps performance heavily improved + [NEW] Added preference option to hide _CurvyGlobal_ GameObject + [NEW] Import/Export API & wizard for JSON serialization of Splines and Control Points (Catmull-Rom & Bezier) + [NEW] Added 22_CGClonePrefabs example scene + [NEW] Windows Store compatibility (Universal 8.1, Universal 10) + [FIXED] BuildVolumeMesh.KeepAspect not working properly + [FIXED] CreateMesh.SaveToScene() not working properly + [FIXED] NRE when using CreateMesh module's Mesh export option + [FIXED] Spline layer always resets to default spline layer + [FIXED] CurvySpline.TFToSegmentIndex returning wrong values + [FIXED] SceneSwitcher helper script raise errors at some occasions + [CHANGE] Setting CurvyController.Speed will only change movement direction if it had a value of 0 before + [CHANGE] Dropped poly2tri in favor of LibTessDotNet for triangulation tasks + [CHANGE] Removed all legacy components from Curvy 1.X + [CHANGE] New Control Points now use the spline's layer + +2.0.5 + [NEW] Added CurvyGenerator.FindModule() + [NEW] Added InputSplineShape.SetManagedShape() + [NEW] Added 51_InfiniteTrack example scene + [NEW] Added CurvyController.Pause() + [NEW] Added CurvyController.Apply() + [NEW] Added CurvyController.OnAnimationEnd event + [NEW] Added option to select Connection GameObject to Control Point inspector + [FIXED] UV2 calculation not working properly + [FIXED] CurvyController.IsInitialized becoming true too early + [FIXED] Controller Damping not working properly when moving backwards + [FIXED] Control Point pool keeps invalid objects after scene load + [FIXED] _CurvyGlobal_ frequently causes errors in editor when switching scenes + [FIXED] Curve Gizmo drawing allocating memory unnecessarily + [FIXED] SplineController allocates memory at some occasions + [FIXED] CurvyDefaultEventHandler.UseFollowUp causing Stack Overflow/Unity crashing + [FIXED] _CurvyGlobal_ GameObject disappearing by DontDestroyOnLoad bug introduced by Unity 5.3 + [CHANGE] UITextSplineController resets state when you disable it + [CHANGE] CurvyGenerator.OnRefresh() now returns the first changed module in CGEventArgs.Module + [CHANGE] Renamed CurvyControlPointEventArgs.AddMode to ModeEnum, changed content to "AddBefore","AddAfter","Delete","None" + +2.0.4 + [FIXED] Added full Unity 5.3 compatibility + +2.0.3 + [NEW] Added Pooling example scene + [NEW] Added CurvyGLRenderer.Add() and CurvyGLRenderer.Delete() + [FIXED] CG graph not refreshing properly + [FIXED] CG module window background rendering transparent under Unity 5.2 at some occasions + [FIXED] Precise Movement over connections causing position warps + [FIXED] Fixed Curvy values resetting to default editor settings on upgrade + [FIXED] Control Points not pooled when deleting spline + [FIXED] Pushing Control Points to pool at runtime causing error + [FIXED] Bezier orientation not updated at all occasions + [FIXED] MetaCGOptions: Explicit U unable to influence faces on both sides of hard edges + [FIXED] Changed UITextSplineController to use VertexHelper.Dispose() instead of VertexHelper.Clear() + [FIXED] CurvySplineSegment.ConnectTo() fails at some occasions + +2.0.2 + [NEW] Added range option to InputSplinePath / InputSplineShape modules + [NEW] CG editor improvements + [NEW] Added more Collider options to CreateMesh module + [NEW] Added Renderer options to CreateMesh module + [NEW] Added CurvySpline.IsPlanar(CurvyPlane) and CurvySpline.MakePlanar(CurvyPlane) + [NEW] Added CurvyController.DampingDirection and CurvyController.DampingUp + [FIXED] Shift ControlPoint Toolbar action fails with some Control Points + [FIXED] IOS deployment code stripping (link.xml) + [FIXED] Controller Inspector leaking textures + [FIXED] Controllers refreshing when Speed==0 + [FIXED] VolumeController not using individual faces at all occasions + [FIXED] Unity 5.2.1p1 silently introduced breaking changes in IMeshModifier + [CHANGE] CurvyController.OrientationDamping now obsolete! + +2.0.1 + [NEW] CG path rasterization now has a dedicated angle threshold + [NEW] Added CurvyController.ApplyTransformPosition() and CurvyController.ApplyTransformRotation() + [FIXED] CG not refreshing as intended in the editor + [FIXED] CG not refreshing when changing used splines + [FIXED] Controllers resets when changing inspector while playing + A few minor fixes and improvements + +2.0.0 Initial Curvy 2 release \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ReadMe.txt.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ReadMe.txt.meta new file mode 100644 index 00000000..4b4ea923 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/ReadMe.txt.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 874b4acdab412944eb2999ef377045f3 +TextScriptImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources.meta new file mode 100644 index 00000000..9080d1ba --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 2a25a990d8d3f04488fcab39e29db8a0 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterial.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterial.mat new file mode 100644 index 00000000..404fcdd0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterial.mat @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: CurvyDefaultMaterial + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: b6c4c94dff2d4494ba5dfb50d94fef4a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Shininess + second: .078125 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _EmissionScaleUI + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 0} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .5, g: .5, b: .5, a: 1} + data: + first: + name: _EmissionColorUI + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterial.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterial.mat.meta new file mode 100644 index 00000000..c6ed92a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterial.mat.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: e13301a1a6a473546b463d25260a7083 +NativeFormatImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterialCross.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterialCross.mat new file mode 100644 index 00000000..fe1868fd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterialCross.mat @@ -0,0 +1,154 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: CurvyDefaultMaterialCross + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: a6ba8bdcf19e22e4ca9026af2ace2c29, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Shininess + second: .078125 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _EmissionScaleUI + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 0} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .5, g: .5, b: .5, a: 1} + data: + first: + name: _EmissionColorUI + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterialCross.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterialCross.mat.meta new file mode 100644 index 00000000..6700cb8e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultMaterialCross.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 406ee6ffffb6a604dbc7576cdee8123b +timeCreated: 1442359728 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultPhysicMaterial.physicMaterial b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultPhysicMaterial.physicMaterial new file mode 100644 index 00000000..72eea878 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultPhysicMaterial.physicMaterial @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: CurvyDefaultPhysicMaterial + dynamicFriction: .600000024 + staticFriction: .600000024 + bounciness: 0 + frictionCombine: 0 + bounceCombine: 0 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultPhysicMaterial.physicMaterial.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultPhysicMaterial.physicMaterial.meta new file mode 100644 index 00000000..0c6478bb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyDefaultPhysicMaterial.physicMaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18e82d72ffbfa004d8fadda064c8e4cc +timeCreated: 1442572707 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGrid.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGrid.mat new file mode 100644 index 00000000..b9e7ff49 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGrid.mat @@ -0,0 +1,146 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: CurvyUVGrid + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: e0abdeb60492ec9489b336bca896af40, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _EmissionScaleUI + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 0} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _EmissionColorUI + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGrid.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGrid.mat.meta new file mode 100644 index 00000000..4b95f31e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGrid.mat.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: a7b80bb583c53d44a91f66d1e2eb52f6 +NativeFormatImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGridDark.mat b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGridDark.mat new file mode 100644 index 00000000..d98e8715 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGridDark.mat @@ -0,0 +1,146 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: CurvyUVGridDark + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 82199c62bae5fb645bd610c62576ecbc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _EmissionScaleUI + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 0} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _EmissionColorUI + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGridDark.mat.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGridDark.mat.meta new file mode 100644 index 00000000..c709ab76 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/CurvyUVGridDark.mat.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 3abd2cfee47b7b9448abf6b3ae2446f6 +NativeFormatImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor.meta new file mode 100644 index 00000000..e2531ff9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 12966040fbf7d064e9ce5a16da9131bf +folderAsset: yes +timeCreated: 1519584447 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor/CurvyEditorIcons.dll b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor/CurvyEditorIcons.dll new file mode 100644 index 00000000..888cf506 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor/CurvyEditorIcons.dll differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor/CurvyEditorIcons.dll.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor/CurvyEditorIcons.dll.meta new file mode 100644 index 00000000..fad56a18 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/Editor/CurvyEditorIcons.dll.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 0849df288b4af7f4286d5ce2c98afa05 +timeCreated: 1611504144 +licenseType: Store +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvcross_default.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvcross_default.png new file mode 100644 index 00000000..1b0653cd Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvcross_default.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvcross_default.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvcross_default.png.meta new file mode 100644 index 00000000..22af58cd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvcross_default.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: a6ba8bdcf19e22e4ca9026af2ace2c29 +timeCreated: 1442359719 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid.png new file mode 100644 index 00000000..2cb1e162 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid.png.meta new file mode 100644 index 00000000..dcbb8895 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: b6c4c94dff2d4494ba5dfb50d94fef4a +timeCreated: 1438948267 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid0.jpg b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid0.jpg new file mode 100644 index 00000000..a148c51c Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid0.jpg differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid0.jpg.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid0.jpg.meta new file mode 100644 index 00000000..c6dba2a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid0.jpg.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: a5164a52b66f15c40bf1647de8b43cf7 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid1.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid1.png new file mode 100644 index 00000000..c7f4d9d2 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid1.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid1.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid1.png.meta new file mode 100644 index 00000000..ddd3b80d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid1.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: e0abdeb60492ec9489b336bca896af40 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid2.png b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid2.png new file mode 100644 index 00000000..46062810 Binary files /dev/null and b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid2.png differ diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid2.png.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid2.png.meta new file mode 100644 index 00000000..7bd657af --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Resources/uvgrid2.png.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 82199c62bae5fb645bd610c62576ecbc +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts.meta new file mode 100644 index 00000000..18cf51e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: cd1ec6d44795d5347b14f7599f5277e5 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules.meta new file mode 100644 index 00000000..df857bda --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: b7fae7aa2727adc4fa76843df374bc74 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base.meta new file mode 100644 index 00000000..4fe7f0c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 3832c52dee32d974fa6b5dee6ea8a76f +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/SplineInputModuleBase.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/SplineInputModuleBase.cs new file mode 100644 index 00000000..7e6edfec --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/SplineInputModuleBase.cs @@ -0,0 +1,1054 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Pools; +using FluffyUnderware.Curvy.Utils; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Base class for spline input modules + /// + public abstract class SplineInputModuleBase : CGModule + { + #region ### Serialized Fields ### + /// + /// Makes this module use the cached approximations of the spline's positions and tangents + /// + [Tab("General")] + [SerializeField] + [Tooltip("Makes this module use the cached approximations of the spline's positions and tangents")] + private bool m_UseCache; + [Tooltip("Whether to use local or global coordinates of the input's control points.\r\nUsing the global space when the input's transform is updating every frame will lead to the generator refreshing too frequently")] + [SerializeField] + private bool m_UseGlobalSpace; + + /*! \cond PRIVATE */ + + [Tab("Range")] + [SerializeField] + protected CurvySplineSegment m_StartCP; + [FieldCondition(nameof(m_StartCP), null, true, Action = ActionAttribute.ActionEnum.Enable)] + [SerializeField] + protected CurvySplineSegment m_EndCP; + + /*! \endcond */ + #endregion + + #region ### Public Properties ### + + /// + /// Makes this module use the cached approximations of the spline's positions and tangents + /// + public bool UseCache + { + get { return m_UseCache; } + set + { + if (m_UseCache != value) + m_UseCache = value; + Dirty = true; + } + } + + /// + /// If not null, the input spline will not be considered fully, but only the range between and . + /// + /// Valid values of and are such as those CPs are part of , and is prior to in that spline + public CurvySplineSegment StartCP + { + get { return m_StartCP; } + set + { + if (m_StartCP != value) + { + m_StartCP = value; + ValidateStartAndEndCps(); + } + Dirty = true; + } + } + + /// + /// If not null, the input spline will not be considered fully, but only the range between and . + /// + /// Valid values of and are such as those CPs are part of , and is prior to in that spline + public CurvySplineSegment EndCP + { + get { return m_EndCP; } + set + { + if (m_EndCP != value) + { + m_EndCP = value; + ValidateStartAndEndCps(); + } + Dirty = true; + } + } + + /// + /// Whether to use local or global coordinates of the input's control points. + /// Using the global space will dirty the module whenever the spline's transform is updated + /// + public bool UseGlobalSpace + { + get { return m_UseGlobalSpace; } + set + { + m_UseGlobalSpace = value; + Dirty = true; + } + } + + public override bool IsConfigured + { + get + { + return base.IsConfigured && InputSpline != null; + } + } + + public override bool IsInitialized + { + get + { + return base.IsInitialized && (InputSpline == null || InputSpline.IsInitialized); + } + } + + public bool PathIsClosed + { + get { return IsConfigured && getPathClosed(InputSpline); } + } + + #endregion + + #region Public mehtods + + /// + /// Set the input range, defined by and + /// + public void SetRange(CurvySplineSegment rangeStart, CurvySplineSegment rangeEnd) + { + m_StartCP = rangeStart; + m_EndCP = rangeEnd; + ValidateStartAndEndCps(); + Dirty = true; + } + + /// + /// Clear the input range, defined by and + /// + public void ClearRange() + { + SetRange(null, null); + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + OnSplineAssigned(); + } + + + protected override void OnDisable() + { + base.OnDisable(); + if (InputSpline) + { + InputSpline.OnRefresh.RemoveListener(OnSplineRefreshed); + InputSpline.OnGlobalCoordinatesChanged -= OnInputSplineCoordinatesChanged; + } + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + if (isActiveAndEnabled) + ValidateStartAndEndCps(); + OnSplineAssigned(); + Dirty = true; + } +#endif + + public override void Reset() + { + base.Reset(); + InputSpline = null; + UseCache = false; + StartCP = null; + EndCP = null; + UseGlobalSpace = false; + } + + /*! \endcond */ + #endregion + + /// + /// Checks that StartCP and EndCp values are correct, and fix them if they are not. + /// + private void OnSplineRefreshed(CurvySplineEventArgs e) + { + if (!enabled || !gameObject.activeInHierarchy) + return; + if (InputSpline == e.Spline) + ForceRefresh(); + else + e.Spline.OnRefresh.RemoveListener(OnSplineRefreshed); + } + + private void OnInputSplineCoordinatesChanged(CurvySpline sender) + { + if (!enabled || !gameObject.activeInHierarchy) + return; + if (InputSpline == sender) + { + if (UseGlobalSpace) + ForceRefresh(); + } + else + InputSpline.OnGlobalCoordinatesChanged -= OnInputSplineCoordinatesChanged; + } + + private void ForceRefresh() + { + Dirty = true; +#if UNITY_EDITOR + // The Update order makes the spline and CP update happen before the generator, so from first look, no need to force the generator update, it should happen naturally. But unfortunately things are not that simple :( + // So the explanation is that the whole chain of actions that lead to this method being called starts with the change of the transform of a CP. For some reason (I am sure about this for 90%) the transform change's is acknowledged in the spline's (or CP's) Update while in Play mode, but only in editorUpdate when in Edit mode. And editorUpdate gets called after all the Updates (including the generator's update), so to make sure the generator is up to date after the spline's update we have to force it's update when not in Play mode + if (!Application.isPlaying) + Generator.TryAutoRefresh(); +#endif + } + + private bool getPathClosed(CurvySpline spline) + { + if (!spline || !spline.Closed) + return false; + return EndCP == null; + } + + #region GetSplineData + + protected CGData GetSplineData(CurvySpline spline, bool fullPath /*is spline a path*/, CGDataRequestRasterization raster, CGDataRequestMetaCGOptions options) + { + if (spline == null || spline.Count == 0) + return null; + + // calc start & end point (distance) + float pathLength = StartCP && EndCP ? EndCP.Distance - StartCP.Distance : spline.Length; + float startDist; + float endDist; + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(raster.Start >= 0); + Assert.IsTrue(raster.Start <= 1); +#endif + startDist = pathLength * raster.Start; + if (StartCP) + startDist = (startDist + StartCP.Distance) % spline.Length; +#if CURVY_SANITY_CHECKS + Assert.IsTrue(startDist >= 0); + Assert.IsTrue(startDist <= spline.Length); + + Assert.IsTrue(raster.RasterizedRelativeLength >= 0); + Assert.IsTrue(raster.RasterizedRelativeLength <= 1); +#endif + endDist = startDist + pathLength * raster.RasterizedRelativeLength; + + } + + float stepDist; + { + float samplingPointsPerUnit = CurvySpline.CalculateSamplingPointsPerUnit( + raster.Resolution, + spline.MaxPointsPerUnit); + + float sampledDistance = (endDist - startDist); + stepDist = Mathf.Min( + sampledDistance / (pathLength * raster.RasterizedRelativeLength * samplingPointsPerUnit), + //To ensure that rasterized shapes have at least 3 vertices to generate valid meshes + sampledDistance / 3f); + } + + CGShape data; + { + data = (fullPath) ? new CGPath() : new CGShape(); + data.Length = endDist - startDist; + data.SourceIsManaged = IsManagedResource(spline); + data.Closed = spline.Closed; + data.Seamless = spline.Closed && raster.RasterizedRelativeLength == 1; + } + + + if (data.Length == 0) + return data; + + // Scan input spline and fetch a list of control points that provide special options (Hard Edge, MaterialID etc...) + int materialID; + float maxStep; + List controlPointsOptions; + { + if (options) + { + controlPointsOptions = CGUtility.GetControlPointsWithOptions(options, + spline, + startDist, + endDist, + raster.Mode == CGDataRequestRasterization.ModeEnum.Optimized, + out materialID, + out maxStep); + } + else + { + controlPointsOptions = new List(); + materialID = 0; + maxStep = float.MaxValue; + } + } + + // initialize with start TF + float tf = spline.DistanceToTF(startDist); + float startTF = tf; + float endTF = (endDist > spline.Length && spline.Closed) ? spline.DistanceToTF(endDist - spline.Length) + 1 : spline.DistanceToTF(endDist); + float currentDistance = startDist; + + // Setup vars + SubArrayList positions, tangents, normals; + SubArrayList sourceFs, relativeFs; + { + int initialArraysLength; + switch (raster.Mode) + { + case CGDataRequestRasterization.ModeEnum.Even: + initialArraysLength = Mathf.Max(20, Mathf.CeilToInt(1.1f * (endDist - startDist) / stepDist)); + break; + case CGDataRequestRasterization.ModeEnum.Optimized: + initialArraysLength = Mathf.Max(20, Mathf.CeilToInt(0.2f * (endDist - startDist) / stepDist)); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + positions = new SubArrayList(initialArraysLength, ArrayPools.Vector3); + relativeFs = new SubArrayList(initialArraysLength, ArrayPools.Single); + sourceFs = new SubArrayList(initialArraysLength, ArrayPools.Single); + tangents = new SubArrayList(fullPath ? initialArraysLength : 0, ArrayPools.Vector3); + normals = new SubArrayList(fullPath ? initialArraysLength : 0, ArrayPools.Vector3); + } + + List duplicatePoints = new List(); + List extendedUVData = new List(); + bool duplicatePoint = false;//TODO BUG? why is duplicatePoint not used before assigning it in the ModeEnum.Optimized case? + // we have at least one Material Group + SamplePointsMaterialGroup materialGroup = new SamplePointsMaterialGroup(materialID); + // and at least one patch within that group + SamplePointsPatch patch = new SamplePointsPatch(0); + CurvyClamping clampMode = (data.Closed) ? CurvyClamping.Loop : CurvyClamping.Clamp; + int dead = 2000000; + + //BUG? there is a lot of code that is quite the same, but not completly, between the two following cases. I sens potential bugs here + //OPTIM in the following, a lot of spline methods have a call to TFToSegment inside them. Instead of letting each one of these methods call TFToSegment, call it once and give it to all the methods + switch (raster.Mode) + { + case CGDataRequestRasterization.ModeEnum.Even: + #region --- Even --- + { + // we advance the spline using a fixed distance + while (currentDistance <= endDist && --dead > 0) + { + tf = spline.DistanceToTF(spline.ClampDistance(currentDistance, clampMode)); + + float currentF; + { + currentF = (currentDistance - startDist) / data.Length;//curDist / endDist; + if (Mathf.Approximately(1, currentF)) + currentF = 1; + } + + //Position, tangent and up + Vector3 currentPosition; + Vector3 currentTangent; + Vector3 currentUp; + { + float localF; + CurvySplineSegment segment = spline.TFToSegment(tf, out localF, CurvyClamping.Clamp); + if (fullPath) // add path values + { + if (UseCache) + segment.InterpolateAndGetTangentFast(localF, out currentPosition, out currentTangent); + else + segment.InterpolateAndGetTangent(localF, out currentPosition, out currentTangent); + + //OPTIM get orientation at the same time you get position and tangent + currentUp = segment.GetOrientationUpFast(localF); + } + else + { + currentPosition = (UseCache) ? segment.InterpolateFast(localF) : segment.Interpolate(localF); + currentTangent = Vector3.zero; + currentUp = Vector3.zero; + } + } + + AddPoint(currentDistance / spline.Length, + currentF, + fullPath, + currentPosition, + currentTangent, + currentUp, + ref sourceFs, + ref relativeFs, + ref positions, + ref tangents, + ref normals); + + if (duplicatePoint) // HardEdge, IncludeCP, MaterialID changes etc. need an extra vertex + { + AddPoint(currentDistance / spline.Length, + currentF, + fullPath, + currentPosition, + currentTangent, + currentUp, + ref sourceFs, + ref relativeFs, + ref positions, + ref tangents, + ref normals); + duplicatePoint = false; + } + + // Advance + currentDistance += stepDist; + + // Check next Sample Point's options. If the next point would be past a CP with options + if (controlPointsOptions.Count > 0 && currentDistance >= controlPointsOptions[0].Distance) + { + ControlPointOption cpOptions = controlPointsOptions[0]; + + ProcessControlPointOptions(cpOptions, positions.Count, data.MaterialGroups, extendedUVData, duplicatePoints, ref materialGroup, ref patch, out currentDistance, out duplicatePoint); + + // and remove the CP from the options + controlPointsOptions.RemoveAt(0); + } + + // Ensure last sample point position is at the desired end distance + if (currentDistance > endDist && currentF < 1) // next loop curF will be 1 + currentDistance = endDist; + } + if (dead <= 0) + Debug.LogError("[Curvy] He's dead, Jim! Deadloop in SplineInputModuleBase.GetSplineData (Even)! Please send a bug report."); + // store the last open patch + patch.End = positions.Count - 1; + materialGroup.Patches.Add(patch); + // ExplicitU on last Vertex? + //if (optionsSegs.Count > 0 && optionsSegs[0].UVShift) + // extendedUVData.Add(new SamplePointUData(pos.Count - 1, optionsSegs[0].UVEdge, optionsSegs[0].FirstU, optionsSegs[0].SecondU)); + // if path is closed and no hard edges involved, we need to smooth first normal + if (data.Closed) + duplicatePoints.Add(new DuplicateSamplePoint(positions.Count - 1, 0, spline[0].GetMetadata(true).CorrectedHardEdge)); + + FillData(data, + materialGroup, + sourceFs, + relativeFs, + fullPath, + positions, + tangents, + normals, + UseGlobalSpace, + spline.transform, + Generator.transform); + + } + #endregion + break; + case CGDataRequestRasterization.ModeEnum.Optimized: + #region --- Optimized --- + { + float stepSizeTF = stepDist / spline.Length; + float maxAngle = raster.AngleThreshold; + + Vector3 currentPosition; + Vector3 currentTangent; + { + if (UseCache) + spline.InterpolateAndGetTangentFast(tf, out currentPosition, out currentTangent); + else + spline.InterpolateAndGetTangent(tf, out currentPosition, out currentTangent); + } + + while (tf < endTF && dead-- > 0) + { + AddPoint(currentDistance / spline.Length, + (currentDistance - startDist) / data.Length, + fullPath, + currentPosition, + currentTangent, + spline.GetOrientationUpFast(tf % 1), + ref sourceFs, + ref relativeFs, + ref positions, + ref tangents, + ref normals); + // Advance + float stopAt = (controlPointsOptions.Count > 0) ? controlPointsOptions[0].TF : endTF; + + bool atStopPoint = MoveByAngleExt(spline, + UseCache, + ref tf, + maxStep, + maxAngle, + out currentPosition, + out currentTangent, + stopAt, + data.Closed, + stepSizeTF); + + currentDistance = spline.TFToDistance(tf, clampMode); + if (currentDistance < startDist) + currentDistance += spline.Length; + + if (Mathf.Approximately(tf, endTF) || tf > endTF) + { + currentDistance = endDist; + endTF = (data.Closed) ? DTMath.Repeat(endTF, 1) : Mathf.Clamp01(endTF); + if (fullPath) + { + if (UseCache) + spline.InterpolateAndGetTangentFast(endTF, out currentPosition, out currentTangent); + else + spline.InterpolateAndGetTangent(endTF, out currentPosition, out currentTangent); + } + else + currentPosition = (UseCache) ? spline.InterpolateFast(endTF) : spline.Interpolate(endTF); + + AddPoint(currentDistance / spline.Length, + (currentDistance - startDist) / data.Length, + fullPath, + currentPosition, + currentTangent, + spline.GetOrientationUpFast(endTF), + ref sourceFs, + ref relativeFs, + ref positions, + ref tangents, + ref normals); + break; + } + if (atStopPoint) + { + if (controlPointsOptions.Count > 0) + { + ControlPointOption cpOptions = controlPointsOptions[0]; + ProcessControlPointOptions(cpOptions, positions.Count, data.MaterialGroups, extendedUVData, + duplicatePoints, ref materialGroup, ref patch, out currentDistance, out duplicatePoint); + // and remove the CP from the options + controlPointsOptions.RemoveAt(0); + + maxStep = (cpOptions.MaxStepDistance); + if (duplicatePoint) + AddPoint(currentDistance / spline.Length, + (currentDistance - startDist) / data.Length, + fullPath, + currentPosition, + currentTangent, + spline.GetOrientationUpFast(tf), + ref sourceFs, + ref relativeFs, + ref positions, + ref tangents, + ref normals); + + } + else + { + AddPoint(currentDistance / spline.Length, + (currentDistance - startDist) / data.Length, + fullPath, + currentPosition, + currentTangent, + spline.GetOrientationUpFast(tf), + ref sourceFs, + ref relativeFs, + ref positions, + ref tangents, + ref normals); + break; + } + } + + } + if (dead <= 0) + Debug.LogError("[Curvy] He's dead, Jim! Deadloop in SplineInputModuleBase.GetSplineData (Optimized)! Please send a bug report."); + // store the last open patch + patch.End = positions.Count - 1; + materialGroup.Patches.Add(patch); + // ExplicitU on last Vertex? + if (controlPointsOptions.Count > 0 && controlPointsOptions[0].UVShift) + extendedUVData.Add(new SamplePointUData(positions.Count - 1, controlPointsOptions[0])); + + // if path is closed and no hard edges involved, we need to smooth first normal + if (data.Closed) + duplicatePoints.Add(new DuplicateSamplePoint(positions.Count - 1, 0, spline[0].GetMetadata(true).CorrectedHardEdge)); + + FillData(data, + materialGroup, + sourceFs, + relativeFs, + fullPath, + positions, + tangents, + normals, + UseGlobalSpace, + spline.transform, + Generator.transform); + } + #endregion + break; + } + + data.CustomValues = ArrayPools.Single.Clone(data.RelativeDistances); + data.DuplicatePoints = duplicatePoints; + + if (!fullPath) + { + data.RecalculateNormals(); + if (extendedUVData.Count > 0) + { + CalculateExtendedUV(spline, startTF, endTF, extendedUVData, data); + if (spline.Closed) + UIMessages.Add("Extended UV features (UV Edge, Explicit U) are used in the Meta CG Options of a closed spline. Those features are supported only for open splines"); + } + } + + return data; + } + + private static void ProcessControlPointOptions(ControlPointOption options, + int positionsCount, + List shapeMaterialGroups, + List extendedUVData, + List duplicatePoints, + ref SamplePointsMaterialGroup currentMaterialGroup, + ref SamplePointsPatch currentPatch, + out float currentDistance, + out bool duplicatePoint) + { + if (options.UVEdge || options.UVShift) + extendedUVData.Add(new SamplePointUData(positionsCount, options)); + + // clamp point at CP and maybe duplicate the next sample point + currentDistance = options.Distance; + duplicatePoint = options.HardEdge || options.MaterialID != currentMaterialGroup.MaterialID || options.UVEdge; + // end the current patch... + if (duplicatePoint) + { + duplicatePoints.Add(new DuplicateSamplePoint(positionsCount, positionsCount + 1, options.HardEdge)); + + currentPatch.End = positionsCount; + currentMaterialGroup.Patches.Add(currentPatch); + // if MaterialID changes, we start a new MaterialGroup + if (currentMaterialGroup.MaterialID != options.MaterialID) + { + shapeMaterialGroups.Add(currentMaterialGroup); + currentMaterialGroup = new SamplePointsMaterialGroup(options.MaterialID); + } + + // in any case we start a new patch + currentPatch = new SamplePointsPatch(positionsCount + 1); + // Extended UV + if (options.UVEdge || options.UVShift) + extendedUVData.Add(new SamplePointUData(positionsCount + 1, options)); + } + } + + private static void FillData(CGShape dataToFill, + SamplePointsMaterialGroup materialGroup, + SubArrayList sourceFs, + SubArrayList relativeFs, + bool isFullPath, + SubArrayList positions, + SubArrayList tangents, + SubArrayList normals, + bool considerSplineTransform, + Transform splineTransform, + Transform generatorTransform) + { + if (considerSplineTransform) + { + //OPTIM do not do the transform if the spline and generator transforms are the same + Vector3[] positionsArray = positions.Array; + for (int i = 0; i < positions.Count; i++) + positionsArray[i] = generatorTransform.InverseTransformPoint(splineTransform.TransformPoint(positionsArray[i])); + + if (isFullPath) + { + Vector3[] normalsArray = normals.Array; + Vector3[] tangentsArray = tangents.Array; + for (int i = 0; i < tangents.Count; i++) + tangentsArray[i] = generatorTransform.InverseTransformDirection(splineTransform.TransformDirection(tangentsArray[i])); + for (int i = 0; i < normals.Count; i++) + normalsArray[i] = generatorTransform.InverseTransformDirection(splineTransform.TransformDirection(normalsArray[i])); + } + } + + //OPTIM find a way to have the inputs already as arrays, instead of calling ToArray on them + dataToFill.MaterialGroups.Add(materialGroup); + + dataToFill.SourceRelativeDistances = sourceFs.ToSubArray(); + dataToFill.RelativeDistances = relativeFs.ToSubArray(); + dataToFill.Positions = positions.ToSubArray(); + + if (isFullPath) + { + ((CGPath)dataToFill).Directions = tangents.ToSubArray(); + dataToFill.Normals = normals.ToSubArray(); + } + } + + static private void AddPoint(float sourceF, + float relativeF, + bool isFullPath, + Vector3 position, + Vector3 tangent, + Vector3 up, + ref SubArrayList sourceFList, + ref SubArrayList relativeFList, + ref SubArrayList positionList, + ref SubArrayList tangentList, + ref SubArrayList upList) + { + sourceF = sourceF.Approximately(1f) ? 1f : (sourceF % 1); + +#if CURVY_SANITY_CHECKS + if (relativeF < 0 || relativeF > 1) + DTLog.LogError("[Curvy] Invalid point's relativeF value " + relativeF); + + if (sourceF < 0 || sourceF > 1) + DTLog.LogError("[Curvy] Invalid point's sourceF value " + sourceF); +#endif + sourceFList.Add(sourceF); + positionList.Add(position); + relativeFList.Add(relativeF); + if (isFullPath) + { + tangentList.Add(tangent); + upList.Add(up); + } + } + + + private static bool MoveByAngleExt(CurvySpline spline, + bool useCache, + ref float tf, + float maxDistance, + float maxAngle, + out Vector3 pos, + out Vector3 tan, + float stopTF, + bool loop, + float stepDist) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(maxAngle >= 0); + Assert.IsTrue(spline.Count != 0); +#endif + + if (!loop) + tf = Mathf.Clamp01(tf); + float tn = (loop) ? tf % 1 : tf; + float localF; + CurvySplineSegment segment; + + segment = spline.TFToSegment(tn, out localF, CurvyClamping.Clamp); + if (useCache) + segment.InterpolateAndGetTangentFast(localF, out pos, out tan); + else + segment.InterpolateAndGetTangent(localF, out pos, out tan); + Vector3 lastPos = pos; + Vector3 lastTan = tan; + + float movedDistance = 0; + float angleAccumulator = 0; + + if (stopTF < tf && loop) + stopTF++; + + bool earlyExitConditionMet = false; + while (tf < stopTF && earlyExitConditionMet == false) + { + tf = Mathf.Min(stopTF, tf + stepDist); + tn = (loop) ? tf % 1 : tf; + + segment = spline.TFToSegment(tn, out localF, CurvyClamping.Clamp); + if (useCache) + segment.InterpolateAndGetTangentFast(localF, out pos, out tan); + else + segment.InterpolateAndGetTangent(localF, out pos, out tan); + + Vector3 movement; + { + //Optimized way of substracting lastPos from pos. Optimization works with Mono platforms + movement.x = pos.x - lastPos.x; + movement.y = pos.y - lastPos.y; + movement.z = pos.z - lastPos.z; + } + movedDistance += movement.magnitude; + + float tangentsAngle = Vector3.Angle(lastTan, tan); + angleAccumulator += tangentsAngle; + + // Check if conditions are met + if (movedDistance >= maxDistance // max distance reached + || angleAccumulator >= maxAngle // max angle reached + || (tangentsAngle == 0 && angleAccumulator > 0))// current step is linear while the whole movement is not. + earlyExitConditionMet = true; + else + { + lastPos = pos; + lastTan = tan; + } + } + + return Mathf.Approximately(tf, stopTF); + } + + #region CalculateExtendedUV + + private static void CalculateExtendedUV(CurvySpline spline, float startTF, float endTF, List ext, CGShape data) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(ext.Count > 0); + Assert.IsTrue(startTF.IsBetween0And1()); + if (spline.Closed) + DTLog.LogWarning($"[Curvy] Extended UV is supported only on open splines. Spline name: {spline.name}"); +#endif + + // we have a list of data, either UV Edge (double then) or Explicit + // unlike easy mode, U is bound to Shape's SourceRelativeDistances, not RelativeDistances! + + // for the first vertex, find the reference CP and calculate starting U (first vertex never has matching Udata, even if it's over a reference CP!!!) + { + CurvySplineSegment previousReferenceCP, nextReferenceCP; + MetaCGOptions previousReferenceCPOptions, nextReferenceCPOptions; + { + previousReferenceCPOptions = findPreviousReferenceCPOptions(spline, startTF, out previousReferenceCP); + nextReferenceCPOptions = findNextReferenceCPOptions(spline, startTF, out nextReferenceCP); + } + + // we now know the U range the first vertex is in, so let's calculate it's actual U value + // get the distance delta within that range + float frag; + { + float nextReferenceCPDistance; + if (spline.FirstVisibleControlPoint == nextReferenceCP) + { + // Special case: nextReferenceCP is first CP (implies closed spline) + nextReferenceCPDistance = spline.Length; +#if CURVY_SANITY_CHECKS + Assert.IsTrue(spline.Closed); +#endif + } + else + nextReferenceCPDistance = nextReferenceCP.Distance; + + frag = ((data.SourceRelativeDistances.Array[0] * spline.Length) - previousReferenceCP.Distance) / (nextReferenceCPDistance - previousReferenceCP.Distance); + } + + + float firstU = Mathf.LerpUnclamped(previousReferenceCPOptions.GetDefinedFirstU(0), nextReferenceCPOptions.GetDefinedFirstU(0), frag); + + float secondU = previousReferenceCPOptions.GetDefinedSecondU(0); + + ext.Insert(0, + new SamplePointUData(0, + (startTF == 0 && previousReferenceCPOptions.CorrectedUVEdge), + (startTF == 0 && previousReferenceCPOptions.CorrectedUVEdge), + firstU, + secondU)); + } + + // Do the same for the last vertex, find the reference CP and calculate starting U (first vertex never has matching Udata, even if it's over a reference CP!!!) + if (ext[ext.Count - 1].Vertex < data.Count - 1) + { + CurvySplineSegment previousReferenceCP, nextReferenceCP; + MetaCGOptions previousReferenceCPOptions, nextReferenceCPOptions; + { + previousReferenceCPOptions = findPreviousReferenceCPOptions(spline, endTF, out previousReferenceCP); + nextReferenceCPOptions = findNextReferenceCPOptions(spline, endTF, out nextReferenceCP); + } + + float nextReferenceCPU; + // Special case: nextReferenceCP is first CP (implies closed spline) + float frag; + if (spline.FirstVisibleControlPoint == nextReferenceCP) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(spline.Closed); +#endif + frag = ((data.SourceRelativeDistances.Array[data.Count - 1] * spline.Length) - previousReferenceCP.Distance) / (spline.Length - previousReferenceCP.Distance); + // either take the ending U from 2nd U of first CP or raise last U to next int + if (nextReferenceCPOptions.CorrectedUVEdge) + nextReferenceCPU = nextReferenceCPOptions.FirstU; + else if (ext.Count > 1) + nextReferenceCPU = Mathf.FloorToInt((ext[ext.Count - 1].UVEdge) ? ext[ext.Count - 1].SecondU : ext[ext.Count - 1].FirstU) + 1; + else + nextReferenceCPU = 1; + } + else + { + frag = ((data.SourceRelativeDistances.Array[data.Count - 1] * spline.Length) - previousReferenceCP.Distance) / (nextReferenceCP.Distance - previousReferenceCP.Distance); + nextReferenceCPU = nextReferenceCPOptions.GetDefinedFirstU(1); + } + + ext.Add(new SamplePointUData(data.Count - 1, + false, + false, + Mathf.LerpUnclamped(previousReferenceCPOptions.GetDefinedSecondU(0), nextReferenceCPU, frag), + 0)); + } + + float startF = 0; + float lowerBoundU = (ext[0].UVEdge) ? ext[0].SecondU : ext[0].FirstU; + float upperBoundU = ext[1].FirstU; + float length = data.RelativeDistances.Array[ext[1].Vertex] - data.RelativeDistances.Array[ext[0].Vertex]; + int current = 1; + for (int vertexIndex = 0; vertexIndex < data.Count - 1; vertexIndex++) + { + float curF = (data.RelativeDistances.Array[vertexIndex] - startF) / length; + data.CustomValues.Array[vertexIndex] = (upperBoundU - lowerBoundU) * curF + lowerBoundU; + + if (ext[current].Vertex == vertexIndex + //reached last iteration, so no need to update data that will not get used, especially that + //the update leads to exceptions in certain cases, where upperBoundU = ext[current + 1].FirstU accesses + //the "ext" array with out of bound index. This happens with open spline of 4 CPs, all having + //Hard Edge, and only the last one having Explicit U set + && vertexIndex + 1 < data.Count - 1) + { + float nextDistance = data.RelativeDistances.Array[ext[current + 1].Vertex]; + float currentDistance = data.RelativeDistances.Array[ext[current].Vertex]; + bool isDuplicatedVertex = nextDistance.Approximately(currentDistance); + + if (isDuplicatedVertex) + { + lowerBoundU = (ext[current].UVEdge) ? ext[current].SecondU : ext[current].FirstU; + current++; + //update distances + currentDistance = nextDistance; + nextDistance = data.RelativeDistances.Array[ext[current + 1].Vertex]; + } + else + lowerBoundU = ext[current].FirstU; + + upperBoundU = ext[current + 1].FirstU; + length = nextDistance - currentDistance; + startF = data.RelativeDistances.Array[vertexIndex]; + current++; + } + } + data.CustomValues.Array[data.Count - 1] = ext[ext.Count - 1].FirstU; + } + + private static MetaCGOptions findPreviousReferenceCPOptions(CurvySpline spline, float tf, out CurvySplineSegment cp) + { + MetaCGOptions options; + cp = spline.TFToSegment(tf); + do + { + options = cp.GetMetadata(true); + if (spline.FirstVisibleControlPoint == cp) + return options; + cp = spline.GetPreviousSegment(cp); + } + while (cp && !options.CorrectedUVEdge && !options.ExplicitU); + return options; + } + + private static MetaCGOptions findNextReferenceCPOptions(CurvySpline spline, float tf, out CurvySplineSegment cp) + { + MetaCGOptions options; + float localF; + cp = spline.TFToSegment(tf, out localF); + + do + { + cp = spline.GetNextControlPoint(cp); + options = cp.GetMetadata(true); + if (!spline.Closed && spline.LastVisibleControlPoint == cp) + return options; + } + while (!options.CorrectedUVEdge && !options.ExplicitU && !(spline.FirstSegment == cp)); + return options; + } + #endregion + + #endregion + + #region Protected members + + protected abstract CurvySpline InputSpline + { + get; + set; + } + + protected virtual void OnSplineAssigned() + { + if (InputSpline) + { + InputSpline.OnRefresh.AddListenerOnce(OnSplineRefreshed); + InputSpline.OnGlobalCoordinatesChanged += OnInputSplineCoordinatesChanged; + } + } + + protected void ValidateStartAndEndCps() + { + if (InputSpline == null) + return; + + if (m_StartCP && m_StartCP.Spline != InputSpline) + { + DTLog.LogError(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Curvy] Input module {0}: StartCP is not part of the input spline ({1})", name, InputSpline.name)); + m_StartCP = null; + } + + if (m_EndCP && m_EndCP.Spline != InputSpline) + { + DTLog.LogError(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Curvy] Input module {0}: EndCP is not part of the input spline ({1})", name, InputSpline.name)); + m_EndCP = null; + } + + if (InputSpline.IsInitialized && m_EndCP != null && m_StartCP != null + && InputSpline.GetControlPointIndex(m_EndCP) <= InputSpline.GetControlPointIndex(m_StartCP)) + { + DTLog.LogError(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Curvy] Input module {0}: EndCP has an index ({1}) less or equal than StartCP ({2})", name, InputSpline.GetControlPointIndex(m_EndCP), InputSpline.GetControlPointIndex(m_StartCP))); + m_EndCP = null; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/SplineInputModuleBase.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/SplineInputModuleBase.cs.meta new file mode 100644 index 00000000..4d8cc6f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/SplineInputModuleBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8f3587212d475f45852a2fea648e4c6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/TRSModuleBase.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/TRSModuleBase.cs new file mode 100644 index 00000000..92ae1308 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/TRSModuleBase.cs @@ -0,0 +1,130 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Base class for TRS Modules + /// + public abstract class TRSModuleBase : CGModule + { + + #region ### Serialized Fields ### + + [SerializeField] + [VectorEx] + private Vector3 m_Transpose; + [SerializeField] + [VectorEx] + private Vector3 m_Rotation; + [SerializeField] + [VectorEx] + private Vector3 m_Scale = Vector3.one; + + #endregion + + #region ### Public Properties ### + + public Vector3 Transpose + { + get { return m_Transpose; } + set + { + if (m_Transpose != value) + m_Transpose = value; + Dirty = true; + } + } + + public Vector3 Rotation + { + get { return m_Rotation; } + set + { + if (m_Rotation != value) + m_Rotation = value; + Dirty = true; + } + } + + public Vector3 Scale + { + get { return m_Scale; } + set + { + if (m_Scale != value) + m_Scale = value; + Dirty = true; + } + } + + public Matrix4x4 Matrix + { + get { return Matrix4x4.TRS(Transpose, Quaternion.Euler(Rotation), Scale); } + } + + #endregion + + #region ### Private Fields & Properties ### + #endregion + + protected Matrix4x4 ApplyTrsOnShape(CGShape shape) + { + Matrix4x4 mat = Matrix; + Matrix4x4 scaleLessMatrix = Matrix4x4.TRS(Transpose, Quaternion.Euler(Rotation), Vector3.one); + for (int i = 0; i < shape.Count; i++) + { + shape.Positions.Array[i] = mat.MultiplyPoint3x4(shape.Positions.Array[i]); + shape.Normals.Array[i] = scaleLessMatrix.MultiplyVector(shape.Normals.Array[i]); + } + + if (Scale != Vector3.one) + shape.Recalculate(); + + return scaleLessMatrix; + } + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + Properties.LabelWidth = 50; + } + + public override void Reset() + { + base.Reset(); + Transpose = Vector3.zero; + Rotation = Vector3.zero; + Scale = Vector3.one; + } +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Transpose = m_Transpose; + Rotation = m_Rotation; + Scale = m_Scale; + } +#endif + + /*! \endcond */ + #endregion + + + + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/TRSModuleBase.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/TRSModuleBase.cs.meta new file mode 100644 index 00000000..0d258102 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Base/TRSModuleBase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 65257de41cf532441ab1b94533a88ea6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildRasterizedPath.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildRasterizedPath.cs new file mode 100644 index 00000000..351c324d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildRasterizedPath.cs @@ -0,0 +1,264 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Build/Rasterize Path", ModuleName = "Rasterize Path", Description = "Rasterizes a virtual path")] + [HelpURL(CurvySpline.DOCLINK + "cgbuildrasterizedpath")] + public class BuildRasterizedPath : CGModule, IPathProvider + { + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path", RequestDataOnly = true)] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + [HideInInspector] + [OutputSlotInfo(typeof(CGPath), Name = "Path", DisplayName = "Rasterized Path")] + public CGModuleOutputSlot OutPath = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [FloatRegion(UseSlider = true, RegionOptionsPropertyName = nameof(RangeOptions), Precision = 4)] + [SerializeField] + private FloatRegion m_Range = FloatRegion.ZeroOne; + [SerializeField, RangeEx(1, 100, "Resolution", "Defines how densely the path spline's sampling points are. When the value is 100, the number of sampling points per world distance unit is equal to the spline's Max Points Per Unit")] + private int m_Resolution = 50; + [SerializeField] private bool m_Optimize; + [FieldCondition(nameof(m_Optimize), true)] + [SerializeField, RangeEx(0.1f, 120)] + private float m_AngleTreshold = 10; + + [SerializeField] + [Section("Backward Compatibility", false)] + [Tooltip("Curvy versions prior to 8.0.0 had a bug in the computation of the rasterization range for closed splines. Enable this value to keep that bugged behaviour if your project depends on it")] + private bool useBuggedRange; + #endregion + + #region ### Public Properties ### + + //TODO DESIGN this code should be unified with BuildShapeExtrusion's + + public float From + { + get { return m_Range.From; } + set + { + float v = DTMath.Repeat(value, 1); + if (m_Range.From != v) + m_Range.From = v; + + Dirty = true; + } + } + + public float To + { + get { return m_Range.To; } + set + { + float v = Mathf.Max(From, value); + if (ClampPath) + v = Mathf.Repeat(value, 1); + if (m_Range.To != v) + m_Range.To = v; + + Dirty = true; + } + } + + public float Length + { + get + { + return (ClampPath) ? m_Range.To - m_Range.From : m_Range.To; + } + set + { + float v = (ClampPath) ? value - m_Range.To : value; + if (m_Range.To != v) + m_Range.To = v; + Dirty = true; + } + } + + /// + /// Defines how densely the path spline's sampling points are. When the value is 100, the number of sampling points per world distance unit is equal to the spline's MaxPointsPerUnit + /// + public int Resolution + { + get { return m_Resolution; } + set + { + int v = Mathf.Clamp(value, 1, 100); + if (m_Resolution != v) + m_Resolution = v; + Dirty = true; + } + } + + public bool Optimize + { + get { return m_Optimize; } + set + { + if (m_Optimize != value) + m_Optimize = value; + Dirty = true; + } + } + + public float AngleThreshold + { + get { return m_AngleTreshold; } + set + { + float v = Mathf.Clamp(value, 0.1f, 120); + if (m_AngleTreshold != v) + m_AngleTreshold = v; + Dirty = true; + } + } + + public CGPath Path + { + get + { + return OutPath.GetData(); + } + } + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InPath.SourceSlot().PathProvider.PathIsClosed : true; + } + } + + /// + /// Curvy versions prior to 8.0.0 had a bug in the computation of the rasterization range for closed splines. Enable this value to keep that bugged behaviour if your project depends on it + /// + public bool UseBuggedRange + { + get { return useBuggedRange; } + set + { + if (useBuggedRange != value) + { + useBuggedRange = value; + Dirty = true; + } + } + } + + #endregion + + #region ### Private Fields & Properties ### + + private bool ClampPath { get { return UseBuggedRange ? PathIsClosed : !PathIsClosed; } } + + private RegionOptions RangeOptions + { + get + { + + if (!PathIsClosed) + { + return RegionOptions.MinMax(0, 1); + } + else + { + return new RegionOptions() + { + LabelFrom = "Start", + ClampFrom = DTValueClamping.Min, + FromMin = 0, + LabelTo = "Length", + ClampTo = DTValueClamping.Range, + ToMin = 0, + ToMax = 1 + }; + } + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + Properties.LabelWidth = 112; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + //From = m_Range.From; + //To = m_Range.To; + Resolution = m_Resolution; + Optimize = m_Optimize; + } +#endif + + public override void Reset() + { + base.Reset(); + m_Range = FloatRegion.ZeroOne; + Resolution = 50; + AngleThreshold = 10; + OutPath.ClearData(); + Optimize = false; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + if (Length == 0) + { + Reset(); + } + else + { + List req = new List(); + req.Add(new CGDataRequestRasterization( + From, Length, Resolution, + AngleThreshold, (Optimize) ? CGDataRequestRasterization.ModeEnum.Optimized : CGDataRequestRasterization.ModeEnum.Even)); + CGPath path = InPath.GetData(out bool isDisposable, req.ToArray()); +#if CURVY_SANITY_CHECKS + // I forgot why I added this assertion, but I trust my past self + Assert.IsTrue(path == null || isDisposable); +#endif + OutPath.SetData(path); + } + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + + /*! \endcond */ + #endregion + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildRasterizedPath.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildRasterizedPath.cs.meta new file mode 100644 index 00000000..d506fa4b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildRasterizedPath.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4dd47aa60d1b454886133ad3297289c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildShapeExtrusion.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildShapeExtrusion.cs new file mode 100644 index 00000000..56a5f911 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildShapeExtrusion.cs @@ -0,0 +1,1025 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools.Extensions; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Build/Shape Extrusion", ModuleName = "Shape Extrusion", Description = "Simple Shape Extrusion")] + [HelpURL(CurvySpline.DOCLINK + "cgbuildshapeextrusion")] + public class BuildShapeExtrusion : CGModule, IPathProvider + { + #region ### Enums ### + + public enum ScaleModeEnum + { + Simple, + Advanced + } + + public enum CrossShiftModeEnum + { + /// + /// The start of the Shape is used + /// + None, + /// + /// The starting point is shifted to the collision point of the Path's orientation with the cross shape + /// + ByOrientation,//TODO rename to ByPathOrientation? + /// + /// The starting point is shifted by a user defined value + /// + Custom + } + + #endregion + + [HideInInspector] + [InputSlotInfo(typeof(CGPath), RequestDataOnly = true)] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGShape), Array = true, ArrayType = SlotInfo.SlotArrayType.Hidden, RequestDataOnly = true)] + public CGModuleInputSlot InCross = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGVolume))] + public CGModuleOutputSlot OutVolume = new CGModuleOutputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGVolume))] + public CGModuleOutputSlot OutVolumeHollow = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + #region TAB: Path + [Tab("Path")] + [FloatRegion(UseSlider = true, RegionOptionsPropertyName = nameof(RangeOptions), Precision = 4)] + [SerializeField] + private FloatRegion m_Range = FloatRegion.ZeroOne; + [SerializeField, RangeEx(1, 100, "Resolution", "Defines how densely the path spline's sampling points are. When the value is 100, the number of sampling points per world distance unit is equal to the spline's Max Points Per Unit")] + private int m_Resolution = 50; + [SerializeField] private bool m_Optimize = true; + [FieldCondition(nameof(m_Optimize), true)] + [SerializeField, RangeEx(0.1f, 120, Tooltip = "Max angle")] + private float m_AngleThreshold = 10; + + #endregion + + #region TAB: Cross + [Tab("Cross")] + [FieldAction("CBEditCrossButton", Position = ActionAttribute.ActionPositionEnum.Above)] + [FloatRegion(UseSlider = true, RegionOptionsPropertyName = nameof(CrossRangeOptions), Precision = 4)] + [SerializeField] + private FloatRegion m_CrossRange = FloatRegion.ZeroOne; + [SerializeField, RangeEx(1, 100, "Resolution", Tooltip = "Defines how densely the cross spline's sampling points are. When the value is 100, the number of sampling points per world distance unit is equal to the spline's Max Points Per Unit")] + private int m_CrossResolution = 50; + [SerializeField, Label("Optimize")] private bool m_CrossOptimize = true; + [FieldCondition(nameof(m_CrossOptimize), true)] + [SerializeField, RangeEx(0.1f, 120, "Angle Threshold", Tooltip = "Max angle")] + private float m_CrossAngleThreshold = 10; + + //[Header("Options")] + [SerializeField, Label("Include CPs")] + [Tooltip("If enabled, vertices are guaranteed to be created for all the Cross shape's Control Points.")] + private bool m_CrossIncludeControlpoints; + + [SerializeField, Label("Hard Edges"), HideInInspector] + [Obsolete("This option is now always assumed to be true")] + private bool m_CrossHardEdges; + + [SerializeField, Label("Materials"), HideInInspector] + [Obsolete("This option is now always assumed to be true")] + private bool m_CrossMaterials; + + [SerializeField, Label("Extended UV"), HideInInspector] + [Obsolete("This option is now always assumed to be true")] + private bool m_CrossExtendedUV; + + [SerializeField, Label("Shift", Tooltip = "Defines a shift to be applied on the output volume's cross.\r\nThis shift is used when interpolating values (position, normal, ...) along the volume's surface.")] + private CrossShiftModeEnum m_CrossShiftMode = CrossShiftModeEnum.ByOrientation; + [SerializeField] + [RangeEx(0, 1, "Value", "Shift By", Slider = true)] + [FieldCondition(nameof(m_CrossShiftMode), CrossShiftModeEnum.Custom)] + private float m_CrossShiftValue; + [Label("Reverse Normal", "Reverse Vertex Normals?")] + [SerializeField] + private bool m_CrossReverseNormals; + #endregion + + #region TAB: Scale + + [Tab("Scale")] + [Label("Mode")] + [SerializeField] + private ScaleModeEnum m_ScaleMode = ScaleModeEnum.Simple; + + [FieldCondition(nameof(m_ScaleMode), ScaleModeEnum.Advanced)] + [Label("Reference")] + [SerializeField] + private CGReferenceMode m_ScaleReference = CGReferenceMode.Self; + + [FieldCondition(nameof(m_ScaleMode), ScaleModeEnum.Advanced)] + [Label("Offset")] + [SerializeField] + private float m_ScaleOffset; + + [SerializeField, Label("Uniform Scaling", Tooltip = "The same scaling value is applied on all dimensions")] + private bool m_ScaleUniform = true; + + [SerializeField] private float m_ScaleX = 1; + + [SerializeField] + [FieldCondition(nameof(m_ScaleUniform), false)] + private float m_ScaleY = 1; + + [SerializeField] + [FieldCondition(nameof(m_ScaleMode), ScaleModeEnum.Advanced)] + [AnimationCurveEx("Multiplier X")] + [Tooltip("Defines scale multiplier depending on the Relative Distance (between 0 and 1) of a point on the path")] + private AnimationCurve m_ScaleCurveX = AnimationCurve.Linear(0, 1, 1, 1); + [SerializeField] + [FieldCondition(nameof(m_ScaleUniform), false, false, ConditionalAttribute.OperatorEnum.AND, "m_ScaleMode", ScaleModeEnum.Advanced, false)] + [AnimationCurveEx("Multiplier Y")] + [Tooltip("Defines scale multiplier depending on the Relative Distance (between 0 and 1) of a point on the path")] + private AnimationCurve m_ScaleCurveY = AnimationCurve.Linear(0, 1, 1, 1); + + #endregion + + #region TAB: Hollow + [Tab("Hollow")] + [RangeEx(0, 1, Slider = true, Label = "Inset")] + [SerializeField] + private float m_HollowInset; + [Label("Reverse Normal", "Reverse Vertex Normals?")] + [SerializeField] + private bool m_HollowReverseNormals; + #endregion + + + #endregion + + #region ### Public Properties ### + + #region TAB: Path + + //TODO DESIGN this code should be unified with BuildRasterizedPath's + + public float From + { + get { return m_Range.From; } + set + { + float v = Mathf.Repeat(value, 1); + if (m_Range.From != v) + m_Range.From = v; + + Dirty = true; + } + } + + public float To + { + get { return m_Range.To; } + set + { + float v = Mathf.Max(From, value); + if (ClampPath) + v = DTMath.Repeat(value, 1); + if (m_Range.To != v) + m_Range.To = v; + + Dirty = true; + } + } + + public float Length + { + get + { + return (ClampPath) ? m_Range.To - m_Range.From : m_Range.To; + } + set + { + float v = (ClampPath) ? value - m_Range.To : value; + if (m_Range.To != v) + m_Range.To = v; + Dirty = true; + } + } + + /// + /// Defines how densely the path spline's sampling points are. When the value is 100, the number of sampling points per world distance unit is equal to the spline's MaxPointsPerUnit + /// + public int Resolution + { + get { return m_Resolution; } + set + { + int v = Mathf.Clamp(value, 1, 100); + if (m_Resolution != v) + m_Resolution = v; + Dirty = true; + } + } + + public bool Optimize + { + get { return m_Optimize; } + set + { + if (m_Optimize != value) + m_Optimize = value; + Dirty = true; + } + } + + public float AngleThreshold + { + get { return m_AngleThreshold; } + set + { + float v = Mathf.Clamp(value, 0.1f, 120); + if (m_AngleThreshold != v) + m_AngleThreshold = v; + Dirty = true; + } + } + + + #endregion + #region TAB: Cross + public float CrossFrom + { + get { return m_CrossRange.From; } + set + { + float v = Mathf.Repeat(value, 1); + if (m_CrossRange.From != v) + m_CrossRange.From = v; + + Dirty = true; + } + } + + public float CrossTo + { + get { return m_CrossRange.To; } + set + { + float v = Mathf.Max(CrossFrom, value); + if (ClampCross) + v = DTMath.Repeat(value, 1); + if (m_CrossRange.To != v) + m_CrossRange.To = v; + + Dirty = true; + } + } + + public float CrossLength + { + get + { + return (ClampCross) ? m_CrossRange.To - m_CrossRange.From : m_CrossRange.To; + } + set + { + float v = (ClampCross) ? value - m_CrossRange.To : value; + if (m_CrossRange.To != v) + m_CrossRange.To = v; + Dirty = true; + } + } + + /// + /// Defines how densely the cross spline's sampling points are. When the value is 100, the number of sampling points per world distance unit is equal to the spline's MaxPointsPerUnit + /// + public int CrossResolution + { + get { return m_CrossResolution; } + set + { + int v = Mathf.Clamp(value, 1, 100); + if (m_CrossResolution != v) + m_CrossResolution = v; + Dirty = true; + } + } + + public bool CrossOptimize + { + get { return m_CrossOptimize; } + set + { + if (m_CrossOptimize != value) + m_CrossOptimize = value; + Dirty = true; + } + } + + public float CrossAngleThreshold + { + get { return m_CrossAngleThreshold; } + set + { + float v = Mathf.Clamp(value, 0.1f, 120); + if (m_CrossAngleThreshold != v) + m_CrossAngleThreshold = v; + Dirty = true; + } + } + + + public bool CrossIncludeControlPoints + { + get { return m_CrossIncludeControlpoints; } + set + { + if (m_CrossIncludeControlpoints != value) + m_CrossIncludeControlpoints = value; + Dirty = true; + } + } + + [Obsolete("This option is now always assumed to be true")] + public bool CrossHardEdges + { + get { return m_CrossHardEdges; } + set + { + if (m_CrossHardEdges != value) + m_CrossHardEdges = value; + Dirty = true; + } + } + + [Obsolete("This option is now always assumed to be true")] + public bool CrossMaterials + { + get { return m_CrossMaterials; } + set + { + if (m_CrossMaterials != value) + m_CrossMaterials = value; + Dirty = true; + } + } + + [Obsolete("This option is now always assumed to be true")] + public bool CrossExtendedUV + { + get { return m_CrossExtendedUV; } + set + { + if (m_CrossExtendedUV != value) + m_CrossExtendedUV = value; + Dirty = true; + } + } + + /// + /// Defines how the value is defined. + /// + public CrossShiftModeEnum CrossShiftMode + { + get { return m_CrossShiftMode; } + set + { + if (m_CrossShiftMode != value) + m_CrossShiftMode = value; + Dirty = true; + } + } + + public float CrossShiftValue + { + get { return m_CrossShiftValue; } + set + { + float v = Mathf.Repeat(value, 1); + if (m_CrossShiftValue != v) + m_CrossShiftValue = v; + Dirty = true; + } + } + + public bool CrossReverseNormals + { + get { return m_CrossReverseNormals; } + set + { + if (m_CrossReverseNormals != value) + m_CrossReverseNormals = value; + Dirty = true; + } + } + + + #endregion + #region TAB: Scale + + public ScaleModeEnum ScaleMode + { + get { return m_ScaleMode; } + set + { + if (m_ScaleMode != value) + m_ScaleMode = value; + Dirty = true; + } + } + + public CGReferenceMode ScaleReference + { + get { return m_ScaleReference; } + set + { + if (m_ScaleReference != value) + m_ScaleReference = value; + Dirty = true; + } + } + + public bool ScaleUniform + { + get { return m_ScaleUniform; } + set + { + if (m_ScaleUniform != value) + m_ScaleUniform = value; + Dirty = true; + } + } + + public float ScaleOffset + { + get { return m_ScaleOffset; } + set + { + if (m_ScaleOffset != value) + m_ScaleOffset = value; + Dirty = true; + } + } + + public float ScaleX + { + get { return m_ScaleX; } + set + { + if (m_ScaleX != value) + m_ScaleX = value; + Dirty = true; + } + } + + public float ScaleY + { + get { return m_ScaleY; } + set + { + if (m_ScaleY != value) + m_ScaleY = value; + Dirty = true; + } + } + + /// + /// When using == ScaleModeEnum.Advanced, this curve defines a scale multiplier relatively to the Relative Distance of a point on the path. + /// You will need to set this module's Dirty to true yourself if you modify the AnimationCurve without setting a new one + /// + public AnimationCurve ScaleMultiplierX + { + get { return m_ScaleCurveX; } + set + { + if (m_ScaleCurveX != value) + m_ScaleCurveX = value; + Dirty = true; + } + } + + /// + /// When using == ScaleModeEnum.Advanced, this curve defines a scale multiplier relatively to the Relative Distance of a point on the path. + /// You will need to set this module's Dirty to true yourself if you modify the AnimationCurve without setting a new one + /// + public AnimationCurve ScaleMultiplierY + { + get { return m_ScaleCurveY; } + set + { + if (m_ScaleCurveY != value) + m_ScaleCurveY = value; + Dirty = true; + } + } + + #endregion + #region TAB: Hollow + + public float HollowInset + { + get { return m_HollowInset; } + set + { + float v = Mathf.Clamp01(value); + if (m_HollowInset != v) + m_HollowInset = v; + Dirty = true; + } + } + + public bool HollowReverseNormals + { + get { return m_HollowReverseNormals; } + set + { + if (m_HollowReverseNormals != value) + m_HollowReverseNormals = value; + Dirty = true; + } + } + + #endregion + + public int PathSamples + { + get; + private set; + } + + public int CrossSamples + { + get; + private set; + } + + public int CrossGroups { get; private set; } + + public IExternalInput Cross + { + get + { + return (IsConfigured) ? InCross.SourceSlot().ExternalInput : null; + } + } + + public Vector3 CrossPosition { get; protected set; } + + public Quaternion CrossRotation { get; protected set; } + + public bool PathIsClosed + { + get { return InPath.SourceSlot().PathProvider.PathIsClosed; } + } + + #endregion + + #region ### Private Fields & Properties ### + + private bool ClampPath { get { return (InPath.IsLinked) ? !InPath.SourceSlot().PathProvider.PathIsClosed : true; } } + private bool ClampCross { get { return (InCross.IsLinked) ? !InCross.SourceSlot().PathProvider.PathIsClosed : true; } } + + private RegionOptions RangeOptions + { + get + { + + if (ClampPath) + { + return RegionOptions.MinMax(0, 1); + } + else + { + return new RegionOptions() + { + LabelFrom = "Start", + ClampFrom = DTValueClamping.Min, + FromMin = 0, + LabelTo = "Length", + ClampTo = DTValueClamping.Range, + ToMin = 0, + ToMax = 1 + }; + } + } + } + + private RegionOptions CrossRangeOptions + { + get + { + + if (ClampCross) + { + return RegionOptions.MinMax(0, 1); + } + else + { + return new RegionOptions() + { + LabelFrom = "Start", + ClampFrom = DTValueClamping.Min, + FromMin = 0, + LabelTo = "Length", + ClampTo = DTValueClamping.Range, + ToMin = 0, + ToMax = 1 + }; + } + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 270; + Properties.LabelWidth = 100; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + //TODO OPTIM each one of the following properties setting will set Dirty to true, and trigger a lot of work. You can avoid that by Dirty to true only once per OnValidate call + Resolution = m_Resolution; + Optimize = m_Optimize; + + CrossResolution = m_CrossResolution; + CrossOptimize = m_CrossOptimize; + + CrossIncludeControlPoints = m_CrossIncludeControlpoints; +#pragma warning disable 618 + CrossHardEdges = m_CrossHardEdges; +#pragma warning restore 618 + ScaleMode = m_ScaleMode; + ScaleReference = m_ScaleReference; + ScaleUniform = m_ScaleUniform; + ScaleOffset = m_ScaleOffset; + ScaleX = m_ScaleX; + ScaleY = m_ScaleY; + ScaleMultiplierX = m_ScaleCurveX; + ScaleMultiplierY = m_ScaleCurveY; + } +#endif + + public override void Reset() + { + base.Reset(); + From = 0; + To = 1; + Resolution = 50; + AngleThreshold = 10; + Optimize = true; + CrossFrom = 0; + CrossTo = 1; + CrossResolution = 50; + CrossAngleThreshold = 10; + CrossOptimize = true; + CrossIncludeControlPoints = false; +#pragma warning disable 618 + CrossHardEdges = false; +#pragma warning restore 618 +#pragma warning disable 618 + CrossMaterials = false; +#pragma warning restore 618 + CrossShiftMode = CrossShiftModeEnum.ByOrientation; + ScaleMode = ScaleModeEnum.Simple; + ScaleUniform = true; + ScaleX = 1; + ScaleY = 1; + ScaleMultiplierX = AnimationCurve.Linear(0, 1, 1, 1); + ScaleMultiplierY = AnimationCurve.Linear(0, 1, 1, 1); + HollowInset = 0; +#pragma warning disable 618 + CrossExtendedUV = false; +#pragma warning restore 618 + CrossReverseNormals = false; + HollowReverseNormals = false; + ScaleReference = CGReferenceMode.Self; + ScaleOffset = 0; + } + + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + if (Length == 0) + { + OutVolume.SetData(null); + OutVolumeHollow.SetData(null); + } + else + { + //OPTIM make it an array + List req = new List(); + + CGPath path; + bool isPathDisposable; + { + req.Add(new CGDataRequestRasterization( + this.From, this.Length, + Resolution, + AngleThreshold, Optimize ? CGDataRequestRasterization.ModeEnum.Optimized : CGDataRequestRasterization.ModeEnum.Even)); + path = InPath.GetData(out isPathDisposable, req.ToArray()); + req.Clear(); + } + + List crosses; + bool isCrossesDisposable; + { + CGDataRequestRasterization rasterizationRequest; + { + bool useVariableShape = InCross.LinkedSlots.Count == 1 && InCross.LinkedSlots[0].Info is ShapeOutputSlotInfo && (InCross.LinkedSlots[0].Info as ShapeOutputSlotInfo).OutputsVariableShape; + + if (useVariableShape && path) + rasterizationRequest = new CGDataRequestShapeRasterization(path.RelativeDistances, + this.CrossFrom, this.CrossLength, + CrossResolution, + CrossAngleThreshold, CrossOptimize ? CGDataRequestRasterization.ModeEnum.Optimized : CGDataRequestRasterization.ModeEnum.Even); + else + rasterizationRequest = new CGDataRequestRasterization( + this.CrossFrom, this.CrossLength, + CrossResolution, + CrossAngleThreshold, CrossOptimize ? CGDataRequestRasterization.ModeEnum.Optimized : CGDataRequestRasterization.ModeEnum.Even); + } + + req.Add(rasterizationRequest); + +#pragma warning disable 618 + req.Add(new CGDataRequestMetaCGOptions(CrossHardEdges, CrossMaterials, CrossIncludeControlPoints, CrossExtendedUV)); +#pragma warning restore 618 + + crosses = InCross.GetAllData(out isCrossesDisposable, req.ToArray()); + } + + + bool isPathInvalid = !path || path.Count == 0; + + bool areCrossesInvalid; + { + List distinctCrossCounts = crosses.Select(c => c == null ? 0 : c.Count).Distinct().ToList(); + if (distinctCrossCounts.Count() != 1 || distinctCrossCounts.First() == 0) + { + areCrossesInvalid = true; + UIMessages.Add("Shape Extrusion: All input Crosses are expected to have the same non zero number of sample points."); + } + else + areCrossesInvalid = false; + } + + if (isPathInvalid || areCrossesInvalid) + { + OutVolume.ClearData(); + OutVolumeHollow.ClearData(); + return; + } + + CGShape initialCross = crosses[0]; + +#if UNITY_EDITOR + //TODO move these warnings, and modify them, inside the raterizing modules themselves. Because the way it is done now, if there is a module between the InputSplineShape module and the current module, the warning will not happen + + //TODO add warnings to the "Rasterize Path" module similar to those below + //Warning messages + { + for (int index = 0; index < InPath.LinkedSlots.Count; index++) + { + CGModuleSlot linkedSlot = InPath.LinkedSlots[index]; + if (linkedSlot.Module is InputSplinePath) + { + InputSplinePath inputSplineModule = linkedSlot.Module as InputSplinePath; + if (inputSplineModule + && inputSplineModule.UseCache + && path.Count > inputSplineModule.Spline.CacheSize * 1.30f + && path.Count > inputSplineModule.Spline.CacheSize + 30) + UIMessages.Add(String.Format(System.Globalization.CultureInfo.InvariantCulture, "The Cache Density of \"{0}\" might be too small for this module's Path Resolution. To get a more detailed extruded volume, you might need to increase Cache Density, or set the input module's Use Cache to false", inputSplineModule.Spline.gameObject.name)); + } + } + + for (int index = 0; index < InCross.LinkedSlots.Count; index++) + { + CGModuleSlot linkedSlot = InCross.LinkedSlots[index]; + if (linkedSlot.Module is InputSplineShape) + { + InputSplineShape inputSplineModule = linkedSlot.Module as InputSplineShape; + if (inputSplineModule + && inputSplineModule.UseCache + && initialCross.Count > inputSplineModule.Shape.CacheSize * 1.30f + && initialCross.Count > inputSplineModule.Shape.CacheSize + 30) + UIMessages.Add(String.Format(System.Globalization.CultureInfo.InvariantCulture, "The Cache Density of \"{0}\" might be too small for this module's Cross Resolution. To get a more detailed extruded volume, you might need to increase Cache Density, or set the input module's Use Cache to false", inputSplineModule.Shape.gameObject.name)); + } + } + } +#endif + CGVolume vol = CGVolume.Get(OutVolume.GetData(), path, initialCross); + CGVolume volHollow = OutVolumeHollow.IsLinked ? CGVolume.Get(OutVolumeHollow.GetData(), path, initialCross) : null; + bool hasHollowVolume = volHollow; + PathSamples = path.Count; + CrossSamples = initialCross.Count; + CrossGroups = initialCross.MaterialGroups.Count; + CrossPosition = vol.Positions.Array[0]; + CrossRotation = Quaternion.LookRotation(vol.Directions.Array[0], vol.Normals.Array[0]); + + Vector3 baseScale = ScaleUniform ? new Vector3(ScaleX, ScaleX, 1) : new Vector3(ScaleX, ScaleY, 1); + Vector3 scl = baseScale; + int vtIdx = 0; + + SubArray scaleRelativeDistancesArray = ScaleReference == CGReferenceMode.Source ? path.SourceRelativeDistances : path.RelativeDistances; + Vector2[] scalesArray = vol.Scales.Array; + + float crossNormalMul = CrossReverseNormals ? -1 : 1; + float hollowNormalMul = HollowReverseNormals ? -1 : 1; + + bool hasSingleCross = crosses.Count == 1; + + int samplesCount = path.Count; + for (int sample = 0; sample < samplesCount; sample++) + { + CGShape currentCross; + if (hasSingleCross) + currentCross = initialCross; + else + { + int crossIndex = Mathf.RoundToInt((crosses.Count - 1) * path.RelativeDistances.Array[sample]); +#if CURVY_SANITY_CHECKS + Assert.IsTrue(path.RelativeDistances.Array[sample] >= 0); + Assert.IsTrue(path.RelativeDistances.Array[sample] <= 1); + Assert.IsTrue(crossIndex >= 0); + Assert.IsTrue(crossIndex < crosses.Count); +#endif + currentCross = crosses[crossIndex]; + } + + SubArray crossPositions = currentCross.Positions; + SubArray crossNormals = currentCross.Normals; + + Quaternion pathRotation = Quaternion.LookRotation(path.Directions.Array[sample], path.Normals.Array[sample]); + + //Numbers used in the quaternion multiplication formula + float forumlaNumber4; + float forumlaNumber5; + float forumlaNumber6; + float forumlaNumber7; + float forumlaNumber8; + float forumlaNumber9; + float forumlaNumber10; + float forumlaNumber11; + float forumlaNumber12; + { + float num1 = pathRotation.x * 2f; + float num2 = pathRotation.y * 2f; + float num3 = pathRotation.z * 2f; + forumlaNumber4 = pathRotation.x * num1; + forumlaNumber5 = pathRotation.y * num2; + forumlaNumber6 = pathRotation.z * num3; + forumlaNumber7 = pathRotation.x * num2; + forumlaNumber8 = pathRotation.x * num3; + forumlaNumber9 = pathRotation.y * num3; + forumlaNumber10 = pathRotation.w * num1; + forumlaNumber11 = pathRotation.w * num2; + forumlaNumber12 = pathRotation.w * num3; + } + + getScaleInternal(scaleRelativeDistancesArray.Array[sample], baseScale, ref scl); + Matrix4x4 mat = Matrix4x4.TRS(path.Positions.Array[sample], pathRotation, scl); + Matrix4x4 matHollow = hasHollowVolume + ? Matrix4x4.TRS(path.Positions.Array[sample], pathRotation, scl * (1 - HollowInset)) + : default(Matrix4x4); + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(scl.z.Approximately(1f)); +#endif + scalesArray[sample].x = scl.x; + scalesArray[sample].y = scl.y; + + int currentCrossCount = currentCross.Count; + for (int c = 0; c < currentCrossCount; c++) + { + vol.Vertices.Array[vtIdx] = mat.MultiplyPoint3x4(crossPositions.Array[c]); + + Vector3 crossNormal = crossNormals.Array[c]; + + // inlined version of Vector3 rotatedCrossNormal = pathRotation * crossNormal; + float rotatedCrossNormalX = (1.0f - (forumlaNumber5 + forumlaNumber6)) * crossNormal.x + (forumlaNumber7 - forumlaNumber12) * crossNormal.y + (forumlaNumber8 + forumlaNumber11) * crossNormal.z; + float rotatedCrossNormalY = (forumlaNumber7 + forumlaNumber12) * crossNormal.x + (1.0f - (forumlaNumber4 + forumlaNumber6)) * crossNormal.y + (forumlaNumber9 - forumlaNumber10) * crossNormal.z; + float rotatedCrossNormalZ = (forumlaNumber8 - forumlaNumber11) * crossNormal.x + (forumlaNumber9 + forumlaNumber10) * crossNormal.y + (1.0f - (forumlaNumber4 + forumlaNumber5)) * crossNormal.z; + + vol.VertexNormals.Array[vtIdx].x = rotatedCrossNormalX * crossNormalMul; + vol.VertexNormals.Array[vtIdx].y = rotatedCrossNormalY * crossNormalMul; + vol.VertexNormals.Array[vtIdx].z = rotatedCrossNormalZ * crossNormalMul; + + if (hasHollowVolume) + { + volHollow.Vertices.Array[vtIdx] = matHollow.MultiplyPoint3x4(crossPositions.Array[c]); + volHollow.VertexNormals.Array[vtIdx].x = rotatedCrossNormalX * hollowNormalMul; + volHollow.VertexNormals.Array[vtIdx].y = rotatedCrossNormalY * hollowNormalMul; + volHollow.VertexNormals.Array[vtIdx].z = rotatedCrossNormalZ * hollowNormalMul; + } + + vtIdx++; + } + } + + switch (CrossShiftMode) + { + case CrossShiftModeEnum.ByOrientation: + vol.CrossFShift = 0; + // shift CrossF to match Path Orientation + Vector2 hit; + float frag; + for (int i = 0; i < initialCross.Count - 1; i++) + if (DTMath.RayLineSegmentIntersection(vol.Positions.Array[0], vol.Normals.Array[0], vol.Vertices.Array[i], vol.Vertices.Array[i + 1], out hit, out frag)) + { + vol.CrossFShift = DTMath.SnapPrecision(vol.CrossRelativeDistances.Array[i] + (vol.CrossRelativeDistances.Array[i + 1] - vol.CrossRelativeDistances.Array[i]) * frag, 2); + break; + } + + break; + case CrossShiftModeEnum.Custom: + vol.CrossFShift = CrossShiftValue; + break; + case CrossShiftModeEnum.None: + vol.CrossFShift = 0; + break; + default: + throw new ArgumentOutOfRangeException("CrossShiftMode"); + } + + if (volHollow != null) + volHollow.CrossFShift = vol.CrossFShift; + + OutVolume.SetData(vol); + OutVolumeHollow.SetData(volHollow); + + if (isPathDisposable) + { + path.Dispose(); + } + + if (isCrossesDisposable) + { + crosses.ForEach(c => c.Dispose()); + } + } + } + + public Vector3 GetScale(float relativeDistance) + { + Vector3 baseScale = (ScaleUniform) ? new Vector3(ScaleX, ScaleX, 1) : new Vector3(ScaleX, ScaleY, 1); + Vector3 res = Vector3.zero; + getScaleInternal(relativeDistance, baseScale, ref res); + return res; + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + private void getScaleInternal(float relativeDistance, Vector3 baseScale, ref Vector3 scale) + { + if (ScaleMode == ScaleModeEnum.Advanced) + { + float scf = DTMath.Repeat(relativeDistance - ScaleOffset, 1); + float scx = baseScale.x * ScaleMultiplierX.Evaluate(scf); + scale.Set(scx, + (m_ScaleUniform) ? scx : baseScale.y * ScaleMultiplierY.Evaluate(scf), + 1); + } + else + scale = baseScale; + + } + + /*! \endcond */ + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildShapeExtrusion.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildShapeExtrusion.cs.meta new file mode 100644 index 00000000..9c301e6e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildShapeExtrusion.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40872b673c65afa41a034045c5bcda65 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeCaps.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeCaps.cs new file mode 100644 index 00000000..eeebc8df --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeCaps.cs @@ -0,0 +1,574 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using UnityEngine; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy.Utils; +using UnityEngine.Serialization; +using FluffyUnderware.Curvy.ThirdParty.LibTessDotNet; +using ToolBuddy.Pooling.Collections; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Build/Volume Caps", ModuleName = "Volume Caps", Description = "Build volume caps")] + [HelpURL(CurvySpline.DOCLINK + "cgbuildvolumecaps")] + public class BuildVolumeCaps : CGModule + { + + [HideInInspector] + [InputSlotInfo(typeof(CGVolume))] + public CGModuleInputSlot InVolume = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGVolume), Optional = true, Array = true)] + public CGModuleInputSlot InVolumeHoles = new CGModuleInputSlot(); + + // change this to fit your requirements + [HideInInspector] + [OutputSlotInfo(typeof(CGVMesh), Array = true)] + public CGModuleOutputSlot OutVMesh = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [Tab("General")] + [SerializeField] + private CGYesNoAuto m_StartCap = CGYesNoAuto.Auto; + [SerializeField] private CGYesNoAuto m_EndCap = CGYesNoAuto.Auto; + [SerializeField, FormerlySerializedAs("m_ReverseNormals")] + private bool m_ReverseTriOrder; + [SerializeField] private bool m_GenerateUV = true; + [SerializeField] private bool m_GenerateUV2 = true; + + [Tab("Start Cap")] + [Inline] + [SerializeField] + private CGMaterialSettings m_StartMaterialSettings = new CGMaterialSettings(); + [Label("Material")] + [SerializeField] + private Material m_StartMaterial; + [Tab("End Cap")] + [SerializeField] + private bool m_CloneStartCap = true; + [AsGroup(Invisible = true)] + [GroupCondition(nameof(m_CloneStartCap), false)] + [SerializeField] + private CGMaterialSettings m_EndMaterialSettings = new CGMaterialSettings(); + [Group("Default/End Cap")] + [Label("Material")] + [FieldCondition(nameof(m_CloneStartCap), false)] + [SerializeField] + private Material m_EndMaterial; + + #endregion + + #region ### Public Properties ### + + public bool GenerateUV + { + get { return m_GenerateUV; } + set + { + if (m_GenerateUV != value) + m_GenerateUV = value; + Dirty = true; + } + } + public bool GenerateUV2 + { + get { return m_GenerateUV2; } + set + { + if (m_GenerateUV2 != value) + m_GenerateUV2 = value; + Dirty = true; + } + } + + public bool ReverseTriOrder + { + get { return m_ReverseTriOrder; } + set + { + if (m_ReverseTriOrder != value) + m_ReverseTriOrder = value; + Dirty = true; + } + } + + public CGYesNoAuto StartCap + { + get { return m_StartCap; } + set + { + if (m_StartCap != value) + m_StartCap = value; + Dirty = true; + } + } + + public Material StartMaterial + { + get { return m_StartMaterial; } + set + { + if (m_StartMaterial != value) + m_StartMaterial = value; + Dirty = true; + } + } + + public CGMaterialSettings StartMaterialSettings + { + get { return m_StartMaterialSettings; } + } + + public CGYesNoAuto EndCap + { + get { return m_EndCap; } + set + { + if (m_EndCap != value) + m_EndCap = value; + Dirty = true; + } + } + + public bool CloneStartCap + { + get { return m_CloneStartCap; } + set + { + if (m_CloneStartCap != value) + m_CloneStartCap = value; + Dirty = true; + } + } + + public CGMaterialSettings EndMaterialSettings + { + get { return m_EndMaterialSettings; } + } + + public Material EndMaterial + { + get { return m_EndMaterial; } + set + { + if (m_EndMaterial != value) + m_EndMaterial = value; + Dirty = true; + } + } + + #endregion + + #region ### Private Fields & Properties ### + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void Awake() + { + base.Awake(); + + if (StartMaterial == null) + StartMaterial = CurvyUtility.GetDefaultMaterial(); + if (EndMaterial == null) + EndMaterial = CurvyUtility.GetDefaultMaterial(); + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + GenerateUV = m_GenerateUV; + GenerateUV2 = m_GenerateUV2; + ReverseTriOrder = m_ReverseTriOrder; + StartCap = m_StartCap; + EndCap = m_EndCap; + } +#endif + + public override void Reset() + { + base.Reset(); + StartCap = CGYesNoAuto.Auto; + EndCap = CGYesNoAuto.Auto; + ReverseTriOrder = false; + GenerateUV = true; + GenerateUV2 = true; + m_StartMaterialSettings = new CGMaterialSettings(); + m_EndMaterialSettings = new CGMaterialSettings(); + StartMaterial = CurvyUtility.GetDefaultMaterial(); + EndMaterial = CurvyUtility.GetDefaultMaterial(); + CloneStartCap = true; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + CGVolume vol = InVolume.GetData(out bool isVolumeDisposable); + List holes = InVolumeHoles.GetAllData(out bool isHolesDisposable); + + if (vol) + { + bool genStart = (StartCap == CGYesNoAuto.Yes || (StartCap == CGYesNoAuto.Auto && !vol.Seamless)); + bool genEnd = (EndCap == CGYesNoAuto.Yes || (EndCap == CGYesNoAuto.Auto && !vol.Seamless)); + + if (!genStart && !genEnd) + { + OutVMesh.SetData(null); + return; + } + + CGVMesh vmesh = new CGVMesh(); + SubArray vtStart = ArrayPools.Vector3.Allocate(0); + + vmesh.AddSubMesh(new CGVSubMesh()); + CGVSubMesh submesh = vmesh.SubMeshes[0]; + + if (genStart) + { + #region --- Start Cap --- + + Tess tess = new Tess(); + tess.UsePooling = true; + tess.AddContour(make2DSegment(vol, 0)); + + for (int h = 0; h < holes.Count; h++) + { + if (holes[h].Count < 3) + { + OutVMesh.SetData(null); + UIMessages.Add("Hole Cross has less than 3 Vertices: Can't create Caps!"); + return; + } + tess.AddContour(make2DSegment(holes[h], 0)); + } + tess.Tessellate(WindingRule.EvenOdd, ElementType.Polygons, 3); + ArrayPools.Vector3.Free(vtStart); + vtStart = UnityLibTessUtility.ContourVerticesToPositions(tess.Vertices); + Bounds b; + int capIndex = 0; + vmesh.Vertices = applyMatrix(vtStart, getMatrix(vol, capIndex, true), out b); + //normals + { + SubArray normals = ArrayPools.Vector3.Allocate(vmesh.Vertices.Count); + { + Vector3 capNormal = -vol.Directions.Array[capIndex]; + for (int i = 0; i < normals.Count; i++) + normals.Array[i] = capNormal; + } + + vmesh.NormalsList = normals; + } + + submesh.Material = StartMaterial; + submesh.TrianglesList = tess.ElementsArray.Value; + if (ReverseTriOrder) + flipTris(submesh.TrianglesList, 0, submesh.TrianglesList.Count); + if (GenerateUV) + { + vmesh.UVs = ArrayPools.Vector2.Allocate(vtStart.Count); + applyUV(vtStart, vmesh.UVs, 0, vtStart.Count, StartMaterialSettings, b); + } + + if (GenerateUV2) + { + vmesh.UV2s = ArrayPools.Vector2.Allocate(vtStart.Count); + applyUV2(vtStart, vmesh.UV2s, 0, vtStart.Count, b); + } + #endregion + } + + if (genEnd) + { + #region --- End Cap --- + + Tess tess = new Tess(); + tess.UsePooling = true; + tess.AddContour(make2DSegment(vol, vol.Count - 1)); + + for (int h = 0; h < holes.Count; h++) + { + if (holes[h].Count < 3) + { + OutVMesh.SetData(null); + UIMessages.Add("Hole Cross has <3 Vertices: Can't create Caps!"); + return; + } + tess.AddContour(make2DSegment(holes[h], holes[h].Count - 1)); + } + tess.Tessellate(WindingRule.EvenOdd, ElementType.Polygons, 3); + + SubArray vtEnd = UnityLibTessUtility.ContourVerticesToPositions(tess.Vertices); + Bounds b; + int preEndCapVertexLength = vmesh.Vertices.Count; + int capIndex = vol.Count - 1; + SubArray subVertices = applyMatrix( + vtEnd, + getMatrix(vol, capIndex, true), out b); + + SubArray newVertices; + { + newVertices = ArrayPools.Vector3.Allocate(vmesh.Vertices.Count + subVertices.Count); + Array.Copy(vmesh.Vertices.Array, 0, newVertices.Array, 0, vmesh.Vertices.Count); + Array.Copy(subVertices.Array, 0, newVertices.Array, vmesh.Vertices.Count, subVertices.Count); + } + + vmesh.Vertices = newVertices; + + ArrayPools.Vector3.Free(subVertices); + + //normals + { + SubArray normals = ArrayPools.Vector3.Allocate(preEndCapVertexLength); + { + Vector3 capNormal = vol.Directions.Array[capIndex]; + for (int i = 0; i < normals.Count; i++) + normals.Array[i] = capNormal; + } + + SubArray newNormals; + { + newNormals = ArrayPools.Vector3.Allocate(vmesh.NormalsList.Count + normals.Count); + Array.Copy(vmesh.NormalsList.Array, 0, newNormals.Array, 0, vmesh.NormalsList.Count); + Array.Copy(normals.Array, 0, newNormals.Array, vmesh.NormalsList.Count, normals.Count); + } + vmesh.NormalsList = newNormals; + + ArrayPools.Vector3.Free(normals); + } + SubArray tris = tess.ElementsArray.Value; + if (!ReverseTriOrder) + flipTris(tris, 0, tris.Count); + for (int i = 0; i < tris.Count; i++) + tris.Array[i] += preEndCapVertexLength; + if (!CloneStartCap && StartMaterial != EndMaterial) + { + vmesh.AddSubMesh(new CGVSubMesh(tris, EndMaterial)); + } + else + { + submesh.Material = StartMaterial; + + SubArray newTrianglesList; + { + newTrianglesList = ArrayPools.Int32.Allocate(submesh.TrianglesList.Count + tris.Count); + Array.Copy(submesh.TrianglesList.Array, 0, newTrianglesList.Array, 0, submesh.TrianglesList.Count); + Array.Copy(tris.Array, 0, newTrianglesList.Array, submesh.TrianglesList.Count, tris.Count); + } + submesh.TrianglesList = newTrianglesList; + } + + if (GenerateUV) + { + SubArray newUVs = ArrayPools.Vector2.Allocate(vmesh.UVs.Count + vtEnd.Count); + Array.Copy(vmesh.UVs.Array, 0, newUVs.Array, 0, vmesh.UVs.Count); + vmesh.UVs = newUVs; + + applyUV(vtEnd, vmesh.UVs, vtStart.Count, vtEnd.Count, (CloneStartCap) ? StartMaterialSettings : EndMaterialSettings, b); + } + + if (GenerateUV2) + { + SubArray newUV2s = ArrayPools.Vector2.Allocate(vmesh.UV2s.Count + vtEnd.Count); + Array.Copy(vmesh.UV2s.Array, 0, newUV2s.Array, 0, vmesh.UV2s.Count); + vmesh.UV2s = newUV2s; + applyUV2(vtEnd, vmesh.UV2s, vtStart.Count, vtEnd.Count, b); + } + + ArrayPools.Vector3.Free(vtEnd); + + #endregion + } + + ArrayPools.Vector3.Free(vtStart); + + OutVMesh.SetData(vmesh); + } + + if (isVolumeDisposable) + vol.Dispose(); + + if (isHolesDisposable) + holes.ForEach(h => h.Dispose()); + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + private static Matrix4x4 getMatrix(CGVolume vol, int index, bool inverse) + { + if (inverse) + { + Quaternion Q = Quaternion.LookRotation(vol.Directions.Array[index], vol.Normals.Array[index]); + return Matrix4x4.TRS(vol.Positions.Array[index], Q, Vector3.one); + } + else + { + Quaternion Q = Quaternion.Inverse(Quaternion.LookRotation(vol.Directions.Array[index], vol.Normals.Array[index])); + return Matrix4x4.TRS(-(Q * vol.Positions.Array[index]), Q, Vector3.one); + } + } + + + private static void flipTris(SubArray indices, int start, int end) + { + int tmp; + for (int i = start; i < end; i += 3) + { + tmp = indices.Array[i]; + indices.Array[i] = indices.Array[i + 2]; + indices.Array[i + 2] = tmp; + } + } + + private static SubArray applyMatrix(SubArray vt, Matrix4x4 matrix, out Bounds bounds) + { + SubArray res = ArrayPools.Vector3.Allocate(vt.Count); + float lx = float.MaxValue; + float ly = float.MaxValue; + float hx = float.MinValue; + float hy = float.MinValue; + + for (int i = 0; i < vt.Count; i++) + { + lx = Mathf.Min(vt.Array[i].x, lx); + ly = Mathf.Min(vt.Array[i].y, ly); + hx = Mathf.Max(vt.Array[i].x, hx); + hy = Mathf.Max(vt.Array[i].y, hy); + res.Array[i] = matrix.MultiplyPoint3x4(vt.Array[i]); + } + Vector3 sz = new Vector3(Mathf.Abs(hx - lx), Mathf.Abs(hy - ly)); + bounds = new Bounds(new Vector3(lx + sz.x / 2, ly + sz.y / 2, 0), sz); + return res; + } + + + + /// + /// trs vertices to eliminate Z and eliminate duplicates + /// + private static ContourVertex[] make2DSegment(CGVolume vol, int segmentIndex) + { + Matrix4x4 m = getMatrix(vol, segmentIndex, false); + int vertexIndex = vol.GetSegmentIndex(segmentIndex); + + ContourVertex[] res = new ContourVertex[vol.CrossSize]; + for (int i = 0; i < vol.CrossSize; i++) + res[i] = m.MultiplyPoint3x4(vol.Vertices.Array[vertexIndex + i]).ContourVertex(); + + return res; + } + + // Attention: p needs to be 2D (X/Y-Plane) + private static void applyUV(SubArray vts, SubArray uvArray, int index, int count, CGMaterialSettings mat, Bounds bounds) + { + float u, v; + float w = bounds.size.x; + float h = bounds.size.y; + + float mx = bounds.min.x; + float my = bounds.min.y; + + float fx = mat.UVScale.x; + float fy = mat.UVScale.y; + + switch (mat.KeepAspect) + { + case CGKeepAspectMode.ScaleU: + float sw = w * mat.UVScale.y; + float sh = h * mat.UVScale.x; + fx *= sw / sh; + break; + case CGKeepAspectMode.ScaleV: + float sw1 = w * mat.UVScale.y; + float sh1 = h * mat.UVScale.x; + fy *= sh1 / sw1; + break; + } + + bool swapUv = mat.SwapUV; + + if (mat.UVRotation != 0) + { + float uvRotRad = (mat.UVRotation) * Mathf.Deg2Rad; + float sn = Mathf.Sin(uvRotRad); + float cs = Mathf.Cos(uvRotRad); + float ox, oy; + float fx2 = fx * 0.5f; + float fy2 = fy * 0.5f; + for (int i = 0; i < count; i++) + { + u = (vts.Array[i].x - mx) / w * fx; + v = (vts.Array[i].y - my) / h * fy; + ox = u - fx2; + oy = v - fy2; + u = (cs * ox - sn * oy + fx2) + mat.UVOffset.x; + v = (sn * ox + cs * oy + fy2) + mat.UVOffset.y; + + int uvArrayIndex = i + index; + Vector2 uv; + uv.x = swapUv ? v : u; + uv.y = swapUv ? u : v; + uvArray.Array[uvArrayIndex] = uv; + + } + } + else + { + for (int i = 0; i < count; i++) + { + u = mat.UVOffset.x + (vts.Array[i].x - mx) / w * fx; + v = mat.UVOffset.y + (vts.Array[i].y - my) / h * fy; + int uvArrayIndex = i + index; + Vector2 uv; + uv.x = swapUv ? v : u; + uv.y = swapUv ? u : v; + uvArray.Array[uvArrayIndex] = uv; + } + } + } + + private static void applyUV2(SubArray vertice, SubArray uv2Array, int index, int count, Bounds bounds) + { + + float inverseW = 1 / bounds.size.x; + float inverseH = 1 / bounds.size.y; + + float mx = bounds.min.x; + float my = bounds.min.y; + + for (int i = 0; i < count; i++) + { + Vector2 uv; + uv.x = (vertice.Array[i].x - mx) * inverseW; + uv.y = (vertice.Array[i].y - my) * inverseH; + uv2Array.Array[i + index] = uv; + } + } + + + /*! \endcond */ + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeCaps.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeCaps.cs.meta new file mode 100644 index 00000000..a75609c6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeCaps.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 81201693d1fd6b04ebb00aa8dd268476 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeMesh.cs new file mode 100644 index 00000000..14e0ae75 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeMesh.cs @@ -0,0 +1,594 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy.Utils; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; +using UnityEngine.Serialization; + + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Build/Volume Mesh", ModuleName = "Volume Mesh", Description = "Build a volume mesh")] + [HelpURL(CurvySpline.DOCLINK + "cgbuildvolumemesh")] + public class BuildVolumeMesh : CGModule + { + + + [HideInInspector] + [InputSlotInfo(typeof(CGVolume))] + public CGModuleInputSlot InVolume = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGVMesh), Array = true)] + public CGModuleOutputSlot OutVMesh = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [Tab("General")] + + [FieldAction("CBAddMaterial")] + [SerializeField, FormerlySerializedAs("m_ReverseNormals")] + private bool m_ReverseTriOrder; + + [Section("Default/General/UV")] + + [SerializeField] + private bool m_GenerateUV = true; + + [SerializeField] + [Tooltip("When set to true, and if the input Shape Extrusion module is set to apply scaling, the U coordinate of the generated mesh will be modified to compensate that scaling.\nOnly the X component of the scaling is taken into consideration.\nThe unscaling works best on volumes with flat shapes.")] + [FieldCondition(nameof(m_GenerateUV), true)] + private bool unscaleU = false; + + [SerializeField] + [FieldCondition(nameof(unscaleU), true, false, ConditionalAttribute.OperatorEnum.AND, nameof(m_GenerateUV), true, false)] + [Tooltip("When unscaling the U coordinate, this field defines what is the scaling origin.\n0.5 gives usually the best results, but you might need to set it to a different value, usually between 0 and 1")] + private float unscalingOrigin = 0.5f; + + [SerializeField] private bool m_GenerateUV2 = true; + + [Section("Default/General/Split")] + + [Tooltip("Split the mesh into submeshes")] + [SerializeField] + private bool m_Split; + + [Positive(MinValue = 1)] + [FieldCondition(nameof(m_Split), true)] + [SerializeField] + private float m_SplitLength = 100; + + [Group("Default/General/Backward Compatibility", Expanded = false)] + [Tooltip("Is ignored when Split or Generate UV2 is false.\nIf enabled, UV2s of a split mesh will be computed as in Curvy versions prior to 8.0.0, which had a bug: all the split submeshes used the full range of UV2 coordinates, instead of keeping the same UV2s from the unsplit mesh.")] + [FieldCondition(nameof(IsSplitUV2Togglable), true, false, ActionAttribute.ActionEnum.Enable)] + [SerializeField] + private bool splitUV2 = false; + + // SubMesh-Settings + + [SerializeField, HideInInspector] private List m_MaterialSettings = new List(); + + [SerializeField, HideInInspector] private Material[] m_Material = new Material[0]; + + #endregion + + #region ### Public Properties ### + + public bool GenerateUV + { + get { return m_GenerateUV; } + set + { + if (m_GenerateUV != value) + m_GenerateUV = value; + Dirty = true; + } + } + + public bool GenerateUV2 + { + get { return m_GenerateUV2; } + set + { + if (m_GenerateUV2 != value) + m_GenerateUV2 = value; + Dirty = true; + } + } + + /// + /// When set to true, and if the input Shape Extrusion module is set to apply scaling, the U coordinate of the generated mesh will be modified to compensate that scaling. + /// Only the X component of the scaling is taken into consideration. + /// The unscaling works best on volumes with flat shapes. + /// + public bool UnscaleU + { + get { return unscaleU; } + set + { + if (unscaleU != value) + unscaleU = value; + Dirty = true; + } + } + + /// + /// When unscaling the U coordinate, this field defines what is the scaling origin. + /// 0.5 gives usually the best results, but you might need to set it to a different value, usually between 0 and 1 + /// + public float UnscalingOrigin + { + get { return unscalingOrigin; } + set + { + if (unscalingOrigin != value) + unscalingOrigin = value; + Dirty = true; + } + } + + public bool ReverseTriOrder + { + get { return m_ReverseTriOrder; } + set + { + if (m_ReverseTriOrder != value) + m_ReverseTriOrder = value; + Dirty = true; + } + } + + /// + /// Split the mesh into submeshes + /// + public bool Split + { + get { return m_Split; } + set + { + if (m_Split != value) + m_Split = value; + Dirty = true; + } + } + + public float SplitLength + { + get { return m_SplitLength; } + set + { + float v = Mathf.Max(1, value); + if (m_SplitLength != v) + m_SplitLength = v; + Dirty = true; + } + } + + /// + /// For backward compatibility only. + /// Is ignored when Split or Generate UV2 is false. + /// If enabled, UV2s of a split mesh will be computed as in Curvy versions prior to 8.0.0, which had a bug: all the split submeshes used the full range of UV2 coordinates, instead of keeping the same UV2s from the unsplit mesh. + /// + public bool SplitUV2 + { + get { return splitUV2; } + set + { + if (splitUV2 != value) + splitUV2 = value; + Dirty = true; + } + } + + public List MaterialSetttings + { + get { return m_MaterialSettings; } + } + + public int MaterialCount + { + get { return m_MaterialSettings.Count; } + } + + #endregion + + #region ### Private Fields & Properties ### + + private List groupsByMatID; + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void Awake() + { + base.Awake(); + if (MaterialCount == 0) + AddMaterial(); + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + GenerateUV = m_GenerateUV; + GenerateUV2 = m_GenerateUV2; + UnscaleU = unscaleU; + UnscalingOrigin = unscalingOrigin; + SplitUV2 = splitUV2; + ReverseTriOrder = m_ReverseTriOrder; + } +#endif + + public override void Reset() + { + base.Reset(); + GenerateUV = true; + GenerateUV2 = true; + UnscaleU = false; + UnscalingOrigin = 0.5f; + Split = false; + SplitLength = 100; + SplitUV2 = false; + ReverseTriOrder = false; + m_MaterialSettings = new List(new CGMaterialSettingsEx[1] { new CGMaterialSettingsEx() }); + m_Material = new Material[1] { CurvyUtility.GetDefaultMaterial() }; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + CGVolume vol = InVolume.GetData(out bool isDisposable); + + if (vol && vol.Count > 0 && vol.CrossSize > 0 && vol.CrossMaterialGroups.Count > 0) + { + List volSets = new List(); + if (Split) + { + + float dist; + float lastdist = 0; + int lastIndex = 0; + for (int sample = 0; sample < vol.Count; sample++) + { + /*OPTIM F here, contrary to splines, is proportional to distance. So instead of working with distances, which means a call to vol.FToDistance at each iteration, just work with Fs + After some tests, this optimization is really not important for now. Maybe in the future, when other parts will be optimized, it would be worth doing + */ + dist = vol.FToDistance(vol.RelativeDistances.Array[sample]); + if (dist - lastdist >= SplitLength) + { + volSets.Add(new IntRegion(lastIndex, sample)); + lastdist = dist; + lastIndex = sample; + } + } + if (lastIndex < vol.Count - 1) + volSets.Add(new IntRegion(lastIndex, vol.Count - 1)); + + } + else + volSets.Add(new IntRegion(0, vol.Count - 1)); + + CGVMesh[] data = OutVMesh.GetAllData(); + System.Array.Resize(ref data, volSets.Count); + + prepare(vol); + for (int sub = 0; sub < volSets.Count; sub++) + { + data[sub] = CGVMesh.Get(data[sub], vol, volSets[sub], GenerateUV, GenerateUV2, ReverseTriOrder); + build(data[sub], vol, volSets[sub]); + } + + OutVMesh.SetData(data); + } + else + OutVMesh.SetData(null); + + if (isDisposable) + vol.Dispose(); + + } + + public int AddMaterial() + { + m_MaterialSettings.Add(new CGMaterialSettingsEx()); + m_Material = m_Material.Add(CurvyUtility.GetDefaultMaterial()); + Dirty = true; + return MaterialCount; + } + + public void RemoveMaterial(int index) + { + if (!validateMaterialIndex(index)) + return; + m_MaterialSettings.RemoveAt(index); + m_Material = m_Material.RemoveAt(index); + Dirty = true; + } + + public void SetMaterial(int index, Material mat) + { + if (!validateMaterialIndex(index) || mat == m_Material[index]) + return; + if (m_Material[index] != mat) + { +#if UNITY_EDITOR + UnityEditor.Undo.RegisterCompleteObjectUndo(this, "Set Material"); +#endif + m_Material[index] = mat; + Dirty = true; + } + } + + public Material GetMaterial(int index) + { + if (!validateMaterialIndex(index)) + return null; + return m_Material[index]; + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + private void prepare(CGVolume vol) + { + // We have groups (different MaterialID) of patches (e.g. by Hard Edges). + // Create Collection of groups sharing the same material ID + groupsByMatID = getMaterialIDGroups(vol); + } + + private void build(CGVMesh vmesh, CGVolume vol, IntRegion subset) + { + + // Because each Material ID forms a submesh + // Do we need to calculate localU? + +#if CURVY_SANITY_CHECKS + UnityEngine.Assertions.Assert.IsTrue(GenerateUV == false || vmesh.UVs.Count == vmesh.Vertices.Count); + UnityEngine.Assertions.Assert.IsTrue(GenerateUV2 == false || vmesh.UV2s.Count == vmesh.Vertices.Count); +#endif + + // Prepare Submeshes + prepareSubMeshes(vmesh, groupsByMatID, subset.Length, ref m_Material); + //prepareSubMeshes(vmesh, groupsByMatID, vol.Count - 1, ref m_Material); + + SamplePointsMaterialGroupCollection col; + SamplePointsMaterialGroup grp; + + int vtIdx = 0; + var triIdx = ArrayPools.Int32.Allocate(groupsByMatID.Count); // triIdx for each submesh + // for all sample segments (except the last) along the path, create Triangles to the next segment + for (int sample = subset.From; sample < subset.To; sample++) + { + // for each submesh (collection) + for (int subMeshIdx = 0; subMeshIdx < groupsByMatID.Count; subMeshIdx++) + { + col = groupsByMatID[subMeshIdx]; + // create UV and triangles for all groups in submesh + for (int g = 0; g < col.Count; g++) + { + grp = col[g]; + if (GenerateUV) + createMaterialGroupUV(vmesh, vol, grp, col.MaterialID, col.AspectCorrectionV, col.AspectCorrectionU, sample, vtIdx); + + if (GenerateUV2) + createMaterialGroupUV2(vmesh, vol, grp, sample, vtIdx); + for (int p = 0; p < grp.Patches.Count; p++) + createPatchTriangles(vmesh.SubMeshes[subMeshIdx].TrianglesList.Array, ref triIdx.Array[subMeshIdx], vtIdx + grp.Patches[p].Start, grp.Patches[p].Count, vol.CrossSize, ReverseTriOrder); + } + } + vtIdx += vol.CrossSize; + } + + // UV && UV2 for last path segment + // for each submesh (collection) + for (int subMeshIdx = 0; subMeshIdx < groupsByMatID.Count; subMeshIdx++) + { + col = groupsByMatID[subMeshIdx]; + // create triangles + for (int g = 0; g < col.Count; g++) + { + grp = col[g]; + if (GenerateUV) + createMaterialGroupUV(vmesh, vol, grp, col.MaterialID, col.AspectCorrectionV, col.AspectCorrectionU, subset.To, vtIdx); + + if (GenerateUV2) + createMaterialGroupUV2(vmesh, vol, grp, subset.To, vtIdx); + + } + } + + ArrayPools.Int32.Free(triIdx); + + //normalize UV2's V coordinate + if (Split && GenerateUV2 && SplitUV2) + { + var uv2sArray = vmesh.UV2s.Array; + + float minV = uv2sArray[0].y; + float maxV = uv2sArray[vmesh.UV2s.Count - 1].y; + +#if CURVY_SANITY_CHECKS_PRIVATE + { + //Checks the assumption used in finding max an min V values + float minVTest = float.MaxValue; + float maxVTest = 0; + for (int i = 0; i < vmesh.UV2s.Count; i++) + { + minVTest = Mathf.Min(minVTest, uv2sArray[i].y); + maxVTest = Mathf.Max(maxVTest, uv2sArray[i].y); + } + Assert.IsTrue(maxVTest.Approximately(maxV)); + Assert.IsTrue(minVTest.Approximately(minV)); + } +#endif + + float vCorrection = 1f / (maxV - minV); + for (int i = 0; i < vmesh.UV2s.Count; i++) + uv2sArray[i].y = (uv2sArray[i].y - minV) * vCorrection; + } + } + + private static void prepareSubMeshes(CGVMesh vmesh, List groupsBySubMeshes, int extrusions, ref Material[] materials) + { + vmesh.SetSubMeshCount(groupsBySubMeshes.Count); + for (int g = 0; g < groupsBySubMeshes.Count; g++) + { + CGVSubMesh sm = vmesh.SubMeshes[g]; + vmesh.SubMeshes[g] = CGVSubMesh.Get(sm, groupsBySubMeshes[g].TriangleCount * extrusions * 3, materials[Mathf.Min(groupsBySubMeshes[g].MaterialID, materials.Length - 1)]); + } + } + + // OPTIMIZE: Store array of U values and just copy them + private void createMaterialGroupUV(CGVMesh vmesh, CGVolume volume, SamplePointsMaterialGroup materialGroup, int matIndex, float aspectCorrectionV, float aspectCorrectionU, int sample, int baseVertex) + { + CGMaterialSettingsEx mat = m_MaterialSettings[matIndex]; + int hi = materialGroup.EndVertex; + bool swapUV = mat.SwapUV; + Vector2[] uvsArray = vmesh.UVs.Array; + float[] crossCustomValues = volume.CrossCustomValues.Array; + + float uMultiplier; + { + uMultiplier = mat.UVScale.x * aspectCorrectionU; + if (UnscaleU) + uMultiplier *= volume.Scales.Array[sample].x; + } + + float v = mat.UVOffset.y + volume.RelativeDistances.Array[sample] * mat.UVScale.y * aspectCorrectionV; + + for (int c = materialGroup.StartVertex; c <= hi; c++) + { + float u = UnscaleU + ? mat.UVOffset.x + unscalingOrigin + (crossCustomValues[c] - unscalingOrigin) * uMultiplier + : mat.UVOffset.x + crossCustomValues[c] * uMultiplier; + uvsArray[baseVertex + c].x = swapUV ? v : u; + uvsArray[baseVertex + c].y = swapUV ? u : v; + } + } + + private void createMaterialGroupUV2(CGVMesh vmesh, CGVolume volume, SamplePointsMaterialGroup materialGroup, int sample, int baseVertex) + { + int hi = materialGroup.EndVertex; + Vector2[] uv2sArray = vmesh.UV2s.Array; + for (int c = materialGroup.StartVertex; c <= hi; c++) + { + uv2sArray[baseVertex + c].x = volume.CrossRelativeDistances.Array[c]; + uv2sArray[baseVertex + c].y = volume.RelativeDistances.Array[sample]; + } + } + + /// + /// Creates triangles for a cross section + /// + /// the triangle array + /// current tri index + /// base vertex index of this cross section (i.e. the first vertex) + /// + /// number of vertices per cross section + /// whether triangles should flip (i.e. a reversed triangle order should be used) + /// size of the cross group (i.e. number of sample points to connect) + /// + private static void createPatchTriangles(int[] triangles, ref int triIdx, int curVTIndex, int patchSize, int crossSize, bool reverse) + { + int rv0 = (reverse) ? 1 : 0; // flipping +0 and +1 when reversing + int rv1 = 1 - rv0; + int nextCrossVT = curVTIndex + crossSize; + for (int vt = 0; vt < patchSize; vt++) + { + triangles[triIdx + rv0] = curVTIndex + vt; + triangles[triIdx + rv1] = nextCrossVT + vt; + triangles[triIdx + 2] = curVTIndex + vt + 1; + triangles[triIdx + rv0 + 3] = curVTIndex + vt + 1; + triangles[triIdx + rv1 + 3] = nextCrossVT + vt; + triangles[triIdx + 5] = nextCrossVT + vt + 1; + triIdx += 6; + } + } + + /// + /// Create collections of groups sharing same Material ID. Also ensures collection's MaterialID is valid! + /// + /// + /// + private List getMaterialIDGroups(CGVolume volume) + { + + Dictionary matCollections = new Dictionary(); + + SamplePointsMaterialGroupCollection col; + + for (int g = 0; g < volume.CrossMaterialGroups.Count; g++) + { + int materialID; + if (volume.CrossMaterialGroups[g].MaterialID <= MaterialCount - 1) + materialID = volume.CrossMaterialGroups[g].MaterialID; + else + { + UIMessages.Add($"Input Volume is using material id {volume.CrossMaterialGroups[g].MaterialID}, which has no associate Material in this module. Use the 'Add Material Group'"); + materialID = MaterialCount - 1; + } + + if (!matCollections.TryGetValue(materialID, out col)) + { + col = new SamplePointsMaterialGroupCollection(); + col.MaterialID = materialID; + matCollections.Add(materialID, col); + } + col.Add(volume.CrossMaterialGroups[g]); + } + + List res = new List(); + + foreach (SamplePointsMaterialGroupCollection item in matCollections.Values) + { + item.CalculateAspectCorrection(volume, MaterialSetttings[item.MaterialID]); + res.Add(item); + } + return res; + + } + + private bool validateMaterialIndex(int index) + { + if (index < 0 || index >= m_MaterialSettings.Count) + { + Debug.LogError("TriangulateTube: Invalid Material Index!"); + return false; + } + return true; + } + + private bool IsSplitUV2Togglable => Split && GenerateUV2; + + + /*! \endcond */ + #endregion + + + + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeMesh.cs.meta new file mode 100644 index 00000000..8ee126fd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeMesh.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 379291f9fb9edce4d9c19b219feb999b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeSpots.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeSpots.cs new file mode 100644 index 00000000..61016985 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeSpots.cs @@ -0,0 +1,1102 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.Curvy.Utils; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; +using Random = UnityEngine.Random; + + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Build/Volume Spots", ModuleName = "Volume Spots", Description = "Generate spots along a path/volume", UsesRandom = true)] + [HelpURL(CurvySpline.DOCLINK + "cgvolumespots")] + public class BuildVolumeSpots : CGModule, ISerializationCallbackReceiver + { + public BuildVolumeSpots() + { + Version = "1"; + } + + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path/Volume", DisplayName = "Volume/Rasterized Path")] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGBounds), Array = true)] + public CGModuleInputSlot InBounds = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGSpots))] + public CGModuleOutputSlot OutSpots = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [SerializeField, HideInInspector] +#pragma warning disable 414 + private bool m_WasUpgraded; +#pragma warning restore 414 + + [Tab("General")] + + [Section("Default/General/Volume Path")] + [FloatRegion(RegionOptionsPropertyName = nameof(RangeOptions), Precision = 4)] + [SerializeField] + private FloatRegion m_Range = FloatRegion.ZeroOne; + + [Section("Default/General/Volume Cross")] + [Tooltip("When the source is a Volume, you can choose if you want to use it's path or the volume")] + [FieldCondition(nameof(isInputAVolume), false, true)] + [SerializeField] + [Label("Use Volume's Surface")] + private bool m_UseVolume = true; + [SerializeField] + [RangeEx(-1, 1)] + [Tooltip("Shifts the Cross origin value by constant value")] + private float m_CrossBase; + [SerializeField] + [Label("Cross Base Variation")] + [Tooltip("Shifts the Cross origin value by a value that varies along the Volume's length. The Curve's X axis has values between 0 (start of the Range) and 1 (its end)")] + private AnimationCurve m_CrossCurve = AnimationCurve.Linear(0, 0, 1, 0); + + [Section("Default/General/Advanced Settings", false)] + [Tooltip("Check to run a dry run without actually creating spots")] + [SerializeField] + private bool m_Simulate; + + [SerializeField] + [Tooltip("Until version 6.3.1, this module had a bug in the computation of the randomized values. Enable this value to keep that bugged behaviour if your project depends on it")] + private bool m_UseBuggedRNG; + + [Tab("Groups")] + [ArrayEx(Space = 10)] + [SerializeField] + private List m_Groups = new List(); + + [IntRegion(UseSlider = false, RegionOptionsPropertyName = nameof(RepeatingGroupsOptions), Options = AttributeOptionsFlags.Compact)] + [SerializeField] + [Tooltip("The range of groups that will be placed repetitively along the volume. Groups that are not in this range will be placed only once")] + private IntRegion m_RepeatingGroups; + [SerializeField] private CurvyRepeatingOrderEnum m_RepeatingOrder = CurvyRepeatingOrderEnum.Row; + + [SerializeField] + [FieldCondition(nameof(ShowFitEnd), true)] + [Label("Fits The End")] + [Tooltip("If checked, the last non repeating group is placed exactly at the end of the volume used for spots. If not, the last group is placed at the first available spot, which might leave some space between it and the end of the volume")] + private bool m_FitEnd; + + #endregion + + #region ### Public Properties ### + + #region - General Tab - + + public FloatRegion Range + { + get { return m_Range; } + set + { + if (m_Range != value) + m_Range = value; + Dirty = true; + } + } + + /// + /// If the source is a Volume you can choose if you want to use it's path or the volume + /// + public bool UseVolume + { + get { return m_UseVolume; } + set + { + if (m_UseVolume != value) + m_UseVolume = value; + Dirty = true; + } + } + + /// + /// Set to true to dry run without actually creating spots + /// + public bool Simulate + { + get { return m_Simulate; } + set + { + if (m_Simulate != value) + m_Simulate = value; + Dirty = true; + } + } + + /// + /// Until version 6.3.1, this module had a bug in the computation of the randomized values. Set this to true to keep that bugged behaviour if your project depends on it + /// + public bool UseBuggedRng + { + get { return m_UseBuggedRNG; } + set + { + if (m_UseBuggedRNG != value) + m_UseBuggedRNG = value; + Dirty = true; + } + } + + /// + /// Shifts the Cross origin value by a constant value + /// + public float CrossBase + { + get { return m_CrossBase; } + set + { + float v = Mathf.Repeat(value, 1); + if (m_CrossBase != v) + m_CrossBase = v; + Dirty = true; + } + } + + /// + /// Shifts the Cross origin value by a value that varies along the Volume's length. The Curve's X axis has values between 0 (start of the ) and 1 (its end) + /// + public AnimationCurve CrossCurve + { + get { return m_CrossCurve; } + set + { + if (m_CrossCurve != value) + m_CrossCurve = value; + Dirty = true; + } + } + + + #endregion + + public List Groups + { + get { return m_Groups; } + set + { + if (m_Groups != value) + m_Groups = value; + } + } + + public CurvyRepeatingOrderEnum RepeatingOrder + { + get { return m_RepeatingOrder; } + set + { + if (m_RepeatingOrder != value) + m_RepeatingOrder = value; + Dirty = true; + } + } + + /// + /// First index of the range of groups that will be placed repetitively along the volume. Groups that are not in this range will be placed only once + /// + public int FirstRepeating + { + get { return m_RepeatingGroups.From; } + set + { + int v = Mathf.Clamp(value, 0, Mathf.Max(0, GroupCount - 1)); + if (m_RepeatingGroups.From != v) + m_RepeatingGroups.From = v; + + Dirty = true; + } + } + + /// + /// Last index of the range of groups that will be placed repetitively along the volume. Groups that are not in this range will be placed only once + /// + public int LastRepeating + { + get { return m_RepeatingGroups.To; } + set + { + int v = Mathf.Clamp(value, FirstRepeating, Mathf.Max(0, GroupCount - 1)); + if (m_RepeatingGroups.To != v) + m_RepeatingGroups.To = v; + Dirty = true; + } + } + + /// + /// If true, the last non repeating group is placed exactly at the end of the volume used for spots. If not, the last group is placed at the first available spot, which might leave some space between it and the end of the volume + /// + public bool FitEnd + { + get { return m_FitEnd; } + set + { + if (m_FitEnd != value) + m_FitEnd = value; + Dirty = true; + } + } + + + public int GroupCount { get { return Groups.Count; } } + + public GUIContent[] BoundsNames + { + get + { + if (mBounds == null) + return new GUIContent[0]; + GUIContent[] v = new GUIContent[mBounds.Count]; + for (int i = 0; i < mBounds.Count; i++) + v[i] = new GUIContent(string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}:{1}", i.ToString(System.Globalization.CultureInfo.InvariantCulture), mBounds[i].Name)); + return v; + } + } + + public int[] BoundsIndices + { + get + { + if (mBounds == null) + return new int[0]; + int[] v = new int[mBounds.Count]; + for (int i = 0; i < mBounds.Count; i++) + v[i] = i; + return v; + } + } + + public int Count { get; private set; } + + public CGSpots SimulatedSpots;//TODO Understand the namming behind this variable, and rename it if needed + + + #endregion + + #region ### Private Fields & Properties ### + + /// + /// holds data that will be used to place groups at a later time + /// + private sealed class EndGroupData : IDisposable + { + internal CGBoundsGroup BoundsGroup { get; private set; } + internal SubArray ItemIndices { get; private set; } + internal float GroupDepth { get; } + internal CGBounds[] ItemBounds { get; } + internal float SpaceBefore { get; } + internal float SpaceAfter { get; } + + internal EndGroupData(CGBoundsGroup boundsGroup, SubArray itemIndices, float groupDepth, CGBounds[] itemBounds, float spaceBefore, float spaceAfter) + { + BoundsGroup = boundsGroup; + ItemIndices = itemIndices; + GroupDepth = groupDepth; + ItemBounds = itemBounds; + SpaceBefore = spaceBefore; + SpaceAfter = spaceAfter; + } + + #region Dispose pattern + + private bool disposed = false; + + private bool Dispose(bool disposing) + { + if (disposed) + { + DTLog.LogWarning("[Curvy] Attempt to dispose an EndGroupData twice. Please raise a bug report."); + return false; + } + + ArrayPools.Int32.Free(ItemIndices); + + disposed = true; + return true; + } + + /// + /// Disposes an instance that is no more used, allowing it to free its resources immediately. + /// Dispose is called automatically when an instance is d + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + ~EndGroupData() + { + Dispose(false); + } + + #endregion + } + + private WeightedRandom mGroupBag; + private List mBounds; + private bool isBoundsDisposable; + private bool isInputAVolume; + + //do not remove, used by attributes. Edit: really? Can't find any code using this + private int lastGroupIndex { get { return Mathf.Max(0, GroupCount - 1); } } + + private RegionOptions RangeOptions + { + get + { + return RegionOptions.MinMax(0, 1); + } + } + + private RegionOptions RepeatingGroupsOptions + { + get + { + return RegionOptions.MinMax(0, Mathf.Max(0, GroupCount - 1)); + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 350; + //Properties.LabelWidth = 80; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + RepeatingOrder = m_RepeatingOrder; + } +#endif + + public override void Reset() + { + base.Reset(); + m_Range = FloatRegion.ZeroOne; + UseVolume = true; + Simulate = false; + CrossBase = 0; + CrossCurve = AnimationCurve.Linear(0, 0, 1, 0); + RepeatingOrder = CurvyRepeatingOrderEnum.Row; + FirstRepeating = 0; + LastRepeating = 0; + FitEnd = false; + + Groups.Clear(); + AddGroup("Group"); + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void OnStateChange() + { + base.OnStateChange(); + if (!IsConfigured) + Clear(); + } + + public void Clear() + { + Count = 0; + SimulatedSpots = new CGSpots(); + OutSpots.SetData(SimulatedSpots); + } + + public override void Refresh() + { + base.Refresh(); + + if (mBounds != null && isBoundsDisposable) + mBounds.ForEach(b => b.Dispose()); + mBounds = InBounds.GetAllData(out isBoundsDisposable); + + const float MinimumAllowedBoundDepth = 0.001f; + + bool isModuleMisconfigured = false; + { + if (mBounds.Count == 0) + { + isModuleMisconfigured = true; + UIMessages.Add("The input bounds list is empty. Add some to enable spots generation."); + } + + if (Groups.Count == 0) + { + isModuleMisconfigured = true; + UIMessages.Add("No group created. Create a group in the Groups tab to enable spots generation"); + } + + for (int i = 0; i < mBounds.Count; i++) + { + CGBounds cgBounds = mBounds[i];//TODO DESIGN BUG? elements of the mBounds array can be null. Should this scenario be made impossible (as with any CGData arrays passed between modules) or is this ok, in which case this code should handle null. I got null while implementing a new module that did not return its data properly, so no know issue in release code so far + if (cgBounds is CGGameObject && ((CGGameObject)cgBounds).Object == null) + { + isModuleMisconfigured = true; + UIMessages.Add(String.Format("Input object of index {0} has no Game Object attached to it. Correct this to enable spots generation.", i)); + } + //Correcting invalid bounds + else if (cgBounds.Depth <= MinimumAllowedBoundDepth) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(cgBounds.Bounds.size.z <= 0); +#endif + CGBounds correctedBounds = new CGBounds(cgBounds); + + UIMessages.Add(String.Format("Input object \"{0}\" has bounds with a depth of {1}. The minimal accepted depth is {2}. The depth value was overriden.", correctedBounds.Name, cgBounds.Depth, MinimumAllowedBoundDepth)); + + correctedBounds.Bounds = new Bounds(cgBounds.Bounds.center, new Vector3(cgBounds.Bounds.size.x, cgBounds.Bounds.size.y, MinimumAllowedBoundDepth)); + mBounds[i] = correctedBounds; + } + } + + foreach (CGBoundsGroup cgBoundsGroup in Groups) + { + if (cgBoundsGroup.ItemCount == 0) + { + isModuleMisconfigured = true; + UIMessages.Add(String.Format("Group \"{0}\" has 0 item in it. Add some to enable spots generation.", cgBoundsGroup.Name)); + } + else foreach (CGBoundsGroupItem cgBoundsGroupItem in cgBoundsGroup.Items) + { + int itemIndex = cgBoundsGroupItem.Index; + if (itemIndex < 0 || itemIndex >= mBounds.Count)//This might happen when changing the module inputs + { + isModuleMisconfigured = true; + UIMessages.Add(String.Format("Group \"{0}\" has a reference to an nonexistent item of index {1}. Correct the reference to enable spots generation.", cgBoundsGroup.Name, itemIndex)); + break; + } + + } + } + } + + CGPath path = InPath.GetData(out bool isdiDisposable); + isInputAVolume = path is CGVolume; + SubArrayList spots = new SubArrayList(100, ArrayPools.CGSpot); + + Dictionary> itemsBagDictionary = Prepare(); + + if (path && isModuleMisconfigured == false) + { + const int MaxSpotsCount = 10000; + bool reachedMaxSpotsCount = false; + + float endDistance = path.FToDistance(m_Range.To); + float startDistance = path.FToDistance(m_Range.Low); + float currentDistance = startDistance; + + // Place groups that are before the repeating items range + for (int g = 0; g < FirstRepeating; g++) + { + int groupIndex = g; + bool failedAddingAllItems; + + reachedMaxSpotsCount = AddGroupItems(path, groupIndex, ref spots, endDistance - currentDistance, startDistance, ref currentDistance, out failedAddingAllItems, itemsBagDictionary, MaxSpotsCount); + if (reachedMaxSpotsCount) + break; + } + + List nonRepeatingEndGroups; + // Compute data needed to place groups that are after the repeating range. They will be actually placed a the end of this method + bool hasNonRepeatingEndGroups = GroupCount - LastRepeating - 1 > 0; + if (reachedMaxSpotsCount == false && hasNonRepeatingEndGroups) + { + nonRepeatingEndGroups = new List(); + for (int g = LastRepeating + 1; g < GroupCount; g++) + { + CGBoundsGroup cgBoundsGroup = Groups[g]; +#if CURVY_SANITY_CHECKS + Assert.IsTrue(cgBoundsGroup.ItemCount > 0); +#endif + SubArray itemIndices = GetGroupItemIndices(cgBoundsGroup, itemsBagDictionary[cgBoundsGroup]); + + float spaceBefore = UseBuggedRng ? cgBoundsGroup.SpaceBefore.Next : GetRegionNextValue(cgBoundsGroup.SpaceBefore); + float spaceAfter = UseBuggedRng ? cgBoundsGroup.SpaceAfter.Next : GetRegionNextValue(cgBoundsGroup.SpaceAfter); + + CGBounds[] itemBounds; + float groupDepth = GetGroupDepth(itemIndices, spaceBefore, spaceAfter, out itemBounds); + + nonRepeatingEndGroups.Add(new EndGroupData(cgBoundsGroup, itemIndices, groupDepth, itemBounds, spaceBefore, spaceAfter)); + } + } + else + nonRepeatingEndGroups = null; + + float repeatGroupsEndDistance; + { + repeatGroupsEndDistance = endDistance; + if (hasNonRepeatingEndGroups) + foreach (EndGroupData endGroupData in nonRepeatingEndGroups) + { + float availableSpace = repeatGroupsEndDistance - currentDistance; + + // the multiplication is to ensure a margin, otherwise float imprecision create issue + //The issue being that when FitEnd is true, we start spawning the end group starting from repeatGroupsEndDistance which is supposed to be enough to fit all end groups, but sometimes the last item of the end group has no place to be fit in + float possibleRepeatGroupsEndDistance = repeatGroupsEndDistance - endGroupData.GroupDepth * 1.00001f; + + //the group can fit + if (endGroupData.GroupDepth <= availableSpace) + { + repeatGroupsEndDistance = possibleRepeatGroupsEndDistance; + continue; + } + + //the whole group can't be fit + if (endGroupData.BoundsGroup.KeepTogether) + //group will not be spawned because it can't fit, so we ignore it + continue; + + //Can we fit at least one item? + if (false == endGroupData.ItemBounds.Any(i => + i.Depth + endGroupData.SpaceBefore + endGroupData.SpaceAfter <= availableSpace)) + continue; + + repeatGroupsEndDistance = possibleRepeatGroupsEndDistance; + } + } + + // Place groups that are in the repeating items range + if (RepeatingOrder == CurvyRepeatingOrderEnum.Row) + { + int g = FirstRepeating; + bool failedAddingAllItems = false; + while (reachedMaxSpotsCount == false && failedAddingAllItems == false && repeatGroupsEndDistance > currentDistance) + { + int groupIndex = g++; + if (g > LastRepeating) + g = FirstRepeating; + + reachedMaxSpotsCount = AddGroupItems(path, groupIndex, ref spots, repeatGroupsEndDistance - currentDistance, startDistance, ref currentDistance, out failedAddingAllItems, itemsBagDictionary, MaxSpotsCount); + if (reachedMaxSpotsCount) + break; + } + } + else + { + bool failedAddingAllItems = false; + while (reachedMaxSpotsCount == false && failedAddingAllItems == false && repeatGroupsEndDistance > currentDistance) + { + int groupIndex = mGroupBag.Next(); + + reachedMaxSpotsCount = AddGroupItems(path, groupIndex, ref spots, repeatGroupsEndDistance - currentDistance, startDistance, ref currentDistance, out failedAddingAllItems, itemsBagDictionary, MaxSpotsCount); + if (reachedMaxSpotsCount) + break; + } + } + + // Now we actually Place groups that are after the repeating items range + if (reachedMaxSpotsCount == false && hasNonRepeatingEndGroups) + { + if (FitEnd) + //BUG in the case where repeatGroupsEndDistance is smaller than currentDistance, FitEnd will have no effect. To fix that, you will need to compute a new repeatGroupsEndDistance that is bigger than currentDistance, that will consider not all end groups, but only the ones that can fit + currentDistance = Mathf.Max(currentDistance, repeatGroupsEndDistance); + + foreach (EndGroupData endGroupData in nonRepeatingEndGroups) + { + bool failedAddingAllItems; + AddGroupItems(path, endGroupData.BoundsGroup, ref spots, endDistance - currentDistance, startDistance, ref currentDistance, out failedAddingAllItems, endGroupData.ItemIndices, endGroupData.GroupDepth, endGroupData.ItemBounds, endGroupData.SpaceBefore, endGroupData.SpaceAfter); + + if (spots.Count >= MaxSpotsCount) + { + reachedMaxSpotsCount = true; + break; + } + } + } + + if (reachedMaxSpotsCount) + { + string errorMessage = String.Format("Number of generated spots reached the maximal allowed number, which is {0}. Spots generation was stopped. Try to reduce the number of spots needed by using bigger Bounds as inputs and/or setting bigger space between two spots.", MaxSpotsCount); + UIMessages.Add(errorMessage); + DTLog.LogError("[Curvy] Volume spots: " + errorMessage); + } + + if (nonRepeatingEndGroups != null) + { + foreach (var endGroup in nonRepeatingEndGroups) + endGroup.Dispose(); + nonRepeatingEndGroups = null; + } + } + + Count = spots.Count; + + SimulatedSpots = new CGSpots(spots.ToSubArray()); + if (Simulate) + OutSpots.SetData(new CGSpots()); + else + OutSpots.SetData(SimulatedSpots); + + if (isdiDisposable) + path.Dispose(); + } + + public CGBoundsGroup AddGroup(string name) + { + //TODO unify this code with the one in BuildVolumeSpotEditor.SetupArrayEx() + + CGBoundsGroup grp = new CGBoundsGroup(name); + grp.Items.Add(new CGBoundsGroupItem()); + Groups.Add(grp); + Dirty = true; + return grp; + } + + public void RemoveGroup(CGBoundsGroup group) + { + Groups.Remove(group); + Dirty = true; + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + private static SubArray GetGroupItemIndices(CGBoundsGroup boundsGroup, WeightedRandom groupItemBag) + { + var result = ArrayPools.Int32.Allocate(boundsGroup.ItemCount, false); + for (int i = 0; i < boundsGroup.ItemCount; i++) + { + int itemId = + boundsGroup.RandomizeItems && i >= boundsGroup.FirstRepeating && i <= boundsGroup.LastRepeating + ? groupItemBag.Next() + : i; + + result.Array[i] = boundsGroup.Items[itemId].Index; + } + + return result; + } + + private float GetGroupDepth(SubArray groupItemIndices, float spaceBefore, float spaceAfter, out CGBounds[] itemsBounds) + { + itemsBounds = new CGBounds[groupItemIndices.Count]; + float groupDepth = spaceBefore + spaceAfter; + { + for (int i = 0; i < groupItemIndices.Count; i++) + { + CGBounds itemBounds = mBounds[groupItemIndices.Array[i]]; + itemsBounds[i] = itemBounds; + groupDepth += itemBounds.Depth; +#if CURVY_SANITY_CHECKS + Assert.IsTrue(itemBounds.Depth > 0); +#endif + } + } + return groupDepth; + } + + + private bool AddGroupItems(CGPath path, int groupIndex, ref SubArrayList spots, float remainingLength, float startDistance, ref float currentDistance, out bool failedAddingAllItems, Dictionary> itemsBagDictionary, int MaxSpotsCount) + { + CGBoundsGroup cgBoundsGroup = Groups[groupIndex]; + WeightedRandom groupItemBag = itemsBagDictionary[cgBoundsGroup]; + + SubArray itemIndices = GetGroupItemIndices(cgBoundsGroup, groupItemBag); + + float spaceBefore = UseBuggedRng ? cgBoundsGroup.SpaceBefore.Next : GetRegionNextValue(cgBoundsGroup.SpaceBefore); + float spaceAfter = UseBuggedRng ? cgBoundsGroup.SpaceAfter.Next : GetRegionNextValue(cgBoundsGroup.SpaceAfter); + + CGBounds[] itemBounds; + float groupDepth = GetGroupDepth(itemIndices, spaceBefore, spaceAfter, out itemBounds); + + AddGroupItems(path, cgBoundsGroup, ref spots, remainingLength, startDistance, + ref currentDistance, out failedAddingAllItems, itemIndices, groupDepth, itemBounds, spaceBefore, spaceAfter); + ArrayPools.Int32.Free(itemIndices); + + return spots.Count >= MaxSpotsCount; + } + + private void AddGroupItems(CGPath path, CGBoundsGroup group, ref SubArrayList spots, float remainingLength, float startDistance, ref float currentDistance, out bool failedAddingAllItems, SubArray itemIndices, float groupDepth, CGBounds[] itemBounds, float spaceBefore, float spaceAfter) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(group.ItemCount > 0); +#endif + if (remainingLength >= groupDepth || group.KeepTogether == false) + { + failedAddingAllItems = false; + for (int index = 0; index < itemIndices.Count; index++) + { + float distanceAtIterationStart = currentDistance; + + int itemId = itemIndices.Array[index]; + CGBounds currentBounds = itemBounds[index]; + + bool canAddItem; + if (index == 0) + { + canAddItem = remainingLength > spaceBefore + currentBounds.Depth; + if (canAddItem) + currentDistance += spaceBefore; + } + else if (index == itemIndices.Count - 1) + canAddItem = remainingLength > spaceAfter + currentBounds.Depth; + else + canAddItem = remainingLength > currentBounds.Depth; + + if (canAddItem == false) + { + failedAddingAllItems = true; + break; + } + + spots.Add(GetSpot(path, itemId, group, currentBounds, currentDistance, startDistance)); + + if (index == itemIndices.Count - 1) + currentDistance += currentBounds.Depth + spaceAfter; + else + currentDistance += currentBounds.Depth; + + remainingLength -= currentDistance - distanceAtIterationStart; + } + } + else + failedAddingAllItems = true; + } + + private CGSpot GetSpot(CGPath path, int itemID, CGBoundsGroup boundsGroup, CGBounds bounds, float currentDistance, float startDistance) + { + float pathRelativeDistance = path.DistanceToF(currentDistance + bounds.Depth / 2); + + float pathLength = path.Length * m_Range.Length; + float globalF = (currentDistance - startDistance) / pathLength; + float crossF; + { + float rawCrossF = UseBuggedRng ? boundsGroup.CrossBase.Next : GetRegionNextValue(boundsGroup.CrossBase); + if (boundsGroup.IgnoreModuleCrossBase == false) + rawCrossF += CrossBase + m_CrossCurve.Evaluate(globalF); + + //Warning, crossF can be beyond the range -0.5f;0.5f + crossF = DTMath.MapValue(-0.5f, 0.5f, rawCrossF, -1f, 1f); + } + + Vector3 interpolatedPosition; + Vector3 tangent; + Vector3 up; + CGVolume volume = path as CGVolume; + bool useVolume = UseVolume && volume; + switch (boundsGroup.RotationMode) + { + case CGBoundsGroup.RotationModeEnum.Full: + { + if (useVolume) + volume.InterpolateVolume(pathRelativeDistance, crossF, out interpolatedPosition, out tangent, out up); + else + { + path.Interpolate(pathRelativeDistance, out interpolatedPosition, out tangent, out up); + if (crossF != 0) + up = Quaternion.AngleAxis(crossF * -360, tangent) * up; + } + } + break; + case CGBoundsGroup.RotationModeEnum.Direction: + case CGBoundsGroup.RotationModeEnum.Horizontal: + { + if (useVolume) + volume.InterpolateVolume(pathRelativeDistance, crossF, out interpolatedPosition, out tangent, out _); + else + path.Interpolate(pathRelativeDistance, out interpolatedPosition, out tangent, out _); + + up = Vector3.up; + if (boundsGroup.RotationMode == CGBoundsGroup.RotationModeEnum.Horizontal) + tangent.y = 0; + } + break; + case CGBoundsGroup.RotationModeEnum.Independent: + { + if (useVolume) + interpolatedPosition = volume.InterpolateVolumePosition(pathRelativeDistance, crossF); + else + interpolatedPosition = path.InterpolatePosition(pathRelativeDistance); + up = Vector3.up; + tangent = Vector3.forward; + } + break; + default: + throw new ArgumentOutOfRangeException(); + } + + + Vector3 translation; + Quaternion rotation; + Vector3 scale; + if (UseBuggedRng) + GetTRS630(boundsGroup, tangent, up, out rotation, out translation, out scale); + else + GetTRS(boundsGroup, tangent, up, out rotation, out translation, out scale); + + return new CGSpot(itemID, interpolatedPosition.Addition(boundsGroup.RelativeTranslation ? rotation * translation : translation), rotation, scale); + } + + private static float GetRegionNextValue(FloatRegion floatRegion) + { + float result; + if (floatRegion.SimpleValue) + { + result = floatRegion.From; + //So that at the end of the if statement, whatever the value of SimpleValue is, the RNG has the same state. + //Otherwise, the next FloatRegion's randomly generated value will be different depending on this FloatRegion's SimpleValue + Random.Range(0f, 1f); + } + else + result = Random.Range(floatRegion.From, floatRegion.To); + + return result; + } + + private void GetTRS(CGBoundsGroup boundsGroup, Vector3 tangent, Vector3 up, out Quaternion rotation, + out Vector3 translation, out Vector3 scale) + { + //rotation + { + Vector3 eulerVector; + { + eulerVector.x = GetRegionNextValue(boundsGroup.RotationX); + eulerVector.y = GetRegionNextValue(boundsGroup.RotationY); + eulerVector.z = GetRegionNextValue(boundsGroup.RotationZ); + } + rotation = Quaternion.LookRotation(tangent, up) * Quaternion.Euler(eulerVector); + } + + //translation + { + translation.x = GetRegionNextValue(boundsGroup.TranslationX); + translation.y = GetRegionNextValue(boundsGroup.TranslationY); + translation.z = GetRegionNextValue(boundsGroup.TranslationZ); + } + + //Scale + { + scale.x = GetRegionNextValue(boundsGroup.ScaleX); + + if (boundsGroup.UniformScaling) + { + scale.y = scale.z = scale.x; + + //So that at the end of the if statement, whatever the value of UniformScaling is, the RNG has the same state. + //Otherwise, the next FloatRegion's randomly generated value will be different depending on UniformScaling + Random.Range(0f, 1f); + Random.Range(0f, 1f); + } + else + { + scale.y = GetRegionNextValue(boundsGroup.ScaleY); + scale.z = GetRegionNextValue(boundsGroup.ScaleZ); + } + } + } + + private void GetTRS630(CGBoundsGroup boundsGroup, Vector3 tangent, Vector3 up, out Quaternion rotation, + out Vector3 translation, out Vector3 scale) + { +#pragma warning disable 618 + + Vector3 boundsGroupRotationScatter = new Vector3( + boundsGroup.RotationX.SimpleValue ? 0 : ((boundsGroup.RotationX.High - boundsGroup.RotationX.Low) * 0.5f), + boundsGroup.RotationY.SimpleValue ? 0 : ((boundsGroup.RotationY.High - boundsGroup.RotationY.Low) * 0.5f), + boundsGroup.RotationZ.SimpleValue ? 0 : ((boundsGroup.RotationZ.High - boundsGroup.RotationZ.Low) * 0.5f)); + Vector3 boundsGroupRotationOffset = new Vector3( + boundsGroup.RotationX.SimpleValue ? boundsGroup.RotationX.From : ((boundsGroup.RotationX.From + boundsGroup.RotationX.To) * 0.5f), + boundsGroup.RotationY.SimpleValue ? boundsGroup.RotationY.From : ((boundsGroup.RotationY.From + boundsGroup.RotationY.To) * 0.5f), + boundsGroup.RotationZ.SimpleValue ? boundsGroup.RotationZ.From : ((boundsGroup.RotationZ.From + boundsGroup.RotationZ.To) * 0.5f)); + rotation = Quaternion.LookRotation(tangent, up) * + Quaternion.Euler( + boundsGroupRotationOffset.x + boundsGroupRotationScatter.x * Random.Range(-1, 1), + boundsGroupRotationOffset.y + boundsGroupRotationScatter.y * Random.Range(-1, 1), + boundsGroupRotationOffset.z + boundsGroupRotationScatter.z * Random.Range(-1, 1)); +#pragma warning restore 618 + + //The calls to Next can lead to calls to Random. To keep the random generations independent, the seed is saved and restored before each call to Next. This isn't done for all the calls to keep the same behaviour as in 6.3.0 + Random.State postRotationSeed; //OPTIM assign this variable only if reading it is needed, i.e we need to call Random.Range on one of boundsGroup members + { + FloatRegion positionX = boundsGroup.TranslationX; + FloatRegion positionY = boundsGroup.TranslationY; + FloatRegion positionZ = boundsGroup.TranslationZ; + + if (positionY.SimpleValue) + translation.y = positionY.From; + else + translation.y = Random.Range(positionY.From, positionY.To); + + postRotationSeed = Random.state; + + if (positionX.SimpleValue) + translation.x = positionX.From; + else + { + translation.x = Random.Range(positionX.From, positionX.To); + Random.state = postRotationSeed; + } + + if (positionZ.SimpleValue) + translation.z = positionZ.From; + else + { + translation.z = Random.Range(positionZ.From, positionZ.To); + Random.state = postRotationSeed; + } + } + + //Scale + { + FloatRegion scaleX = boundsGroup.ScaleX; + + if (scaleX.SimpleValue) + scale.x = scaleX.From; + else + { + scale.x = Random.Range(scaleX.From, scaleX.To); + Random.state = postRotationSeed; + } + + if (boundsGroup.UniformScaling) + scale.y = scale.z = scale.x; + else + { + FloatRegion scaleY = boundsGroup.ScaleY; + FloatRegion scaleZ = boundsGroup.ScaleZ; + + if (scaleY.SimpleValue) + scale.y = scaleY.From; + else + { + scale.y = Random.Range(scaleY.From, scaleY.To); + Random.state = postRotationSeed; + } + + if (scaleZ.SimpleValue) + scale.z = scaleZ.From; + else + { + scale.z = Random.Range(scaleZ.From, scaleZ.To); + Random.state = postRotationSeed; + } + } + } + } + + private Dictionary> Prepare() + { + Dictionary> itemsBagDictionary = new Dictionary>(); + m_RepeatingGroups.MakePositive(); + m_RepeatingGroups.Clamp(0, GroupCount - 1); + // Groups + mGroupBag = new WeightedRandom(0, UseBuggedRng ? 0 : Random.Range(0, Int32.MaxValue)); + if (RepeatingOrder == CurvyRepeatingOrderEnum.Random) + { + List cgWeightedItems = Groups.Cast().ToList(); + CGBoundsGroup.FillItemBag(mGroupBag, cgWeightedItems, FirstRepeating, LastRepeating); + } + + // Prepare Groups & ItemBags + for (int g = 0; g < Groups.Count; g++) + { + CGBoundsGroup boundsGroup = Groups[g]; + boundsGroup.RepeatingItems.MakePositive(); + boundsGroup.RepeatingItems.Clamp(0, boundsGroup.ItemCount - 1); + WeightedRandom itemsBag; + { + //We save and restore the random state to avoid that the number of groups would modify the randomly generated numbers inside the groups + Random.State previousState = Random.state; + itemsBag = new WeightedRandom(0, UseBuggedRng ? 0 : Random.Range(0, Int32.MaxValue)); + Random.state = previousState; + } + itemsBagDictionary[boundsGroup] = itemsBag; + if (boundsGroup.Items.Count != 0 && boundsGroup.RandomizeItems) + { + List cgWeightedItems = boundsGroup.Items.Cast().ToList(); + CGBoundsGroup.FillItemBag(itemsBag, cgWeightedItems, boundsGroup.FirstRepeating, + boundsGroup.LastRepeating); + } + } + + return itemsBagDictionary; + } + + //Used in field condition + private bool ShowFitEnd + { + get + { + return LastRepeating != Groups.Count - 1; + } + } + + + /*! \endcond */ + #endregion + + #region ISerializationCallbackReceiver + /*! \cond PRIVATE */ + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public void OnBeforeSerialize() + { + + } + + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public void OnAfterDeserialize() + { + if (String.IsNullOrEmpty(Version)) + { + Version = "1"; + m_WasUpgraded = true; + + for (int index = 0; index < Groups.Count; index++) + { + CGBoundsGroup cgBoundsGroup = Groups[index]; + cgBoundsGroup.RelativeTranslation = true; + cgBoundsGroup.TranslationX = new FloatRegion(0f); + cgBoundsGroup.TranslationY = new FloatRegion(0f); + cgBoundsGroup.TranslationZ = new FloatRegion(0f); + cgBoundsGroup.RotationX = new FloatRegion(0f); + cgBoundsGroup.RotationY = new FloatRegion(0f); + cgBoundsGroup.RotationZ = new FloatRegion(0f); + cgBoundsGroup.UniformScaling = true; + cgBoundsGroup.ScaleX = new FloatRegion(1f); + cgBoundsGroup.ScaleY = new FloatRegion(1f); + cgBoundsGroup.ScaleZ = new FloatRegion(1f); +#pragma warning disable 618 + cgBoundsGroup.ConvertObsoleteData(); +#pragma warning restore 618 + } + } + } + /*! \endcond */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeSpots.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeSpots.cs.meta new file mode 100644 index 00000000..ccf60558 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/BuildVolumeSpots.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca7e92a8a4be4584da4f4e7d14a02b16 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ConformPath.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ConformPath.cs new file mode 100644 index 00000000..a7e2a0ef --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ConformPath.cs @@ -0,0 +1,290 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Modifier/Conform Path", ModuleName = "Conform Path", Description = "Projects a path")] + [HelpURL(CurvySpline.DOCLINK + "cgconformpath")] +#pragma warning disable 618 + public class ConformPath : CGModule, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path", ModifiesData = true)] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGPath))] + public CGModuleOutputSlot OutPath = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [SerializeField] + [VectorEx] + [Tooltip("The direction to raycast in ")] + private Vector3 m_Direction = new Vector3(0, -1, 0); + [SerializeField] + [Tooltip("The maximum raycast distance")] + private float m_MaxDistance = 100; + [SerializeField] + [Tooltip("Defines an offset shift along the raycast direction")] + private float m_Offset; + [SerializeField] + [Tooltip("If enabled, the entire path is moved to the nearest possible distance. If disabled, each path point is moved individually")] + private bool m_Warp; + [SerializeField] + [Tooltip("The layers to raycast against")] + private LayerMask m_LayerMask; + + #endregion + + #region ### Public Properties ### + + /// + /// The direction to raycast in + /// + public Vector3 Direction + { + get + { + return m_Direction; + } + set + { + if (m_Direction != value) + m_Direction = value; + Dirty = true; + } + } + + /// + /// The maximum raycast distance + /// + public float MaxDistance + { + get { return m_MaxDistance; } + set + { + if (m_MaxDistance != value) + m_MaxDistance = value; + Dirty = true; + } + } + + /// + /// Defines an offset shift along the raycast direction + /// + public float Offset + { + get { return m_Offset; } + set + { + if (m_Offset != value) + m_Offset = value; + Dirty = true; + } + } + + /// + /// If enabled, the entire path is moved to the nearest possible distance. If disabled, each path point is moved individually + /// + public bool Warp + { + get { return m_Warp; } + set + { + if (m_Warp != value) + m_Warp = value; + Dirty = true; + } + } + + /// + /// The layers to raycast against + /// + public LayerMask LayerMask + { + get { return m_LayerMask; } + set + { + if (m_LayerMask != value) + m_LayerMask = value; + Dirty = true; + } + } + + #endregion + + #region ### Private Fields & Properties ### + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + //Properties.MinWidth = 250; + Properties.LabelWidth = 80; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Direction = m_Direction; + MaxDistance = m_MaxDistance; + Offset = m_Offset; + LayerMask = m_LayerMask; + } +#endif + + public override void Reset() + { + base.Reset(); + Direction = new Vector3(0, -1, 0); + MaxDistance = 100; + Offset = 0; + Warp = false; + LayerMask = 0; + } + + + /*! \endcond */ + #endregion + + #region ### IOnRequestProcessing ### + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InPath.SourceSlot().PathProvider.PathIsClosed : false; + } + } + + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGDataRequestRasterization raster = GetRequestParameter(ref requests); + if (!raster) + return null; + + if (LayerMask == 0)//0 is Nothing + UIMessages.Add("Please set a Layer Mask different than Nothing."); + + CGPath path = InPath.GetData(out bool isDisposable, requests); +#if CURVY_SANITY_CHECKS + // I forgot why I added this assertion, but I trust my past self + Assert.IsTrue(path == null || isDisposable); +#endif + Conform(path, Generator.transform, LayerMask, Direction, Offset, MaxDistance, Warp); + + return new CGData[1] { path }; + } + + /// + /// Conforms a path by projecting it on top of objects (with a collider) of a specific layer + /// + /// + /// + /// + /// + /// + /// + /// If true, the projected path will keep its shape + public static void Conform(CGPath path, Transform pathTransform, LayerMask layers, Vector3 projectionDirection, float offset, float rayLength, bool warp) + { +#pragma warning disable 618 + Conform(pathTransform, path, layers, projectionDirection, offset, rayLength, warp); +#pragma warning restore 618 + } + + /// + /// Conforms a path by projecting it on top of objects (with a collider) of a specific layer + /// + /// + /// + /// + /// + /// + /// + /// If true, the projected path will keep its shape + /// The same path as the input parameter 'path' + [Obsolete("Use the other override")] + public static CGPath Conform(Transform pathTransform, CGPath path, LayerMask layers, Vector3 projectionDirection, float offset, float rayLength, bool warp) + { + if (path == null) + return null; + + int pathCount = path.Count; + if (projectionDirection != Vector3.zero && rayLength > 0 && pathCount > 0) + { + RaycastHit raycastHit; + + if (warp) + { + float minDist = float.MaxValue; + + for (int i = 0; i < pathCount; i++) + if (Physics.Raycast(pathTransform.TransformPoint(path.Positions.Array[i]), projectionDirection, out raycastHit, rayLength, layers)) + if (raycastHit.distance < minDist) + minDist = raycastHit.distance; + if (minDist != float.MaxValue) + { + Vector3 positionTranslation = projectionDirection * (minDist + offset); + for (int i = 0; i < path.Count; i++) + path.Positions.Array[i] += positionTranslation; + } + } + else + { + + + for (int i = 0; i < pathCount; i++) + if (Physics.Raycast(pathTransform.TransformPoint(path.Positions.Array[i]), projectionDirection, out raycastHit, rayLength, layers)) + path.Positions.Array[i] += projectionDirection * (raycastHit.distance + offset); + } + + path.Recalculate(); + + /* //TODO a lot to fix before being able to execute the commented code + + //preferably should compute the directions as in SplineInputModuleBase (based on spline, and not on approximations positions) + //Does not compute Directions[0] + + //needs the soft edges list + //need for RecalculateNormals to use the same logic as in SplineInputModuleBase (current logic handles only 2D shapes) + //recomputing orientations without the information of the CPs' rotations, which is available only at spline input module level, gives different result. Here is the comment I wrote at the time: //En gros, recalculer les normals sans les infos d'orientation des cps, qui n-est available seulement dans l'Input Spline Path module, crée des orientations bizarres. Ca a l'air de marcher, à moitié, que pour Input Spline Shape + + path.RecalculateNormals(new List()); + */ + + } + return path; + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + + /*! \endcond */ + #endregion + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ConformPath.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ConformPath.cs.meta new file mode 100644 index 00000000..aa5db050 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ConformPath.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 013f55592f4a5d4408ed23aed18bdece +timeCreated: 1433940954 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateGameObject.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateGameObject.cs new file mode 100644 index 00000000..b1ba33af --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateGameObject.cs @@ -0,0 +1,249 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Create/GameObject", ModuleName = "Create GameObject")] + [HelpURL(CurvySpline.DOCLINK + "cgcreategameobject")] + public class CreateGameObject : ResourceExportingModule + { + [HideInInspector] + [InputSlotInfo(typeof(CGGameObject), Array = true, Name = "GameObject")] + public CGModuleInputSlot InGameObjectArray = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGSpots), Name = "Spots")] + public CGModuleInputSlot InSpots = new CGModuleInputSlot(); + + [SerializeField, CGResourceCollectionManager("GameObject", ShowCount = true)] + private CGGameObjectResourceCollection m_Resources = new CGGameObjectResourceCollection(); + + #region ### Serialized Fields ### + + [Tab("General")] + [SerializeField] + private bool m_MakeStatic; + + [SerializeField] + [Layer] + private int m_Layer; + + [Tooltip("Whether Layer should be applied only on the root of a created game object, or it should be applied on its whole hierarchy")] + [SerializeField] + private bool applyLayerOnChildren; + + #endregion + + #region ### Public Properties ### + + public int Layer + { + get { return m_Layer; } + set + { + int v = Mathf.Clamp(value, 0, 32); + if (m_Layer != v) + m_Layer = v; + Dirty = true; + } + } + + /// + /// Whether the layer defined in should be applied only on the root of a created game object, or it should be applied on its whole hierarchy + /// + public bool ApplyLayerOnChildren + { + get { return applyLayerOnChildren; } + set + { + if (applyLayerOnChildren != value) + applyLayerOnChildren = value; + Dirty = true; + } + } + public bool MakeStatic + { + get { return m_MakeStatic; } + set + { + if (m_MakeStatic != value) + m_MakeStatic = value; + Dirty = true; + } + } + + public CGGameObjectResourceCollection GameObjects + { + get { return m_Resources; } + } + + public int GameObjectCount + { + get { return GameObjects.Count; } + } + + #endregion + + #region ### Private Fields & Properties ### + /// + /// Key is the created game objects' transforms. Value is the associated pool name. Is filled in the Refresh method. + /// + private Dictionary usedPoolsDictionary = new Dictionary(); + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Dirty = true; + } +#endif + + public override void Reset() + { + base.Reset(); + MakeStatic = false; + Layer = 0; + ApplyLayerOnChildren = false; + } + + protected override void OnDestroy() + { + if (!Generator.Destroying) + DeleteAllPrefabPools(); + base.OnDestroy(); + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override bool DeleteAllOutputManagedResources() + { + bool result = base.DeleteAllOutputManagedResources(); + + //delete all children + int childCount = transform.childCount; + result |= childCount > 0; + + Transform[] destructionTargets = new Transform[childCount]; + for (int i = 0; i < childCount; i++) + destructionTargets[i] = transform.GetChild(i); + + //it might seem a good idea to not use destructionTargets, and just iterate through all children and delete them, but the deletion code can, depending on different on edit/play mode and prefab status, either delete instantly the object, delete it at the end of the frame, or not delete it at all, leading to the iteration logic having to handle all of those cases in deciding what should be the iteration index. I prefer to play it safe, and use the destructionTargets list + foreach (Transform child in destructionTargets) + { + if (usedPoolsDictionary.TryGetValue(child, out string poolName)) + DeleteManagedResource("GameObject", child, poolName, false); + else + DeleteManagedResource("GameObject", child, string.Empty, true); + } + + GameObjects.Items.Clear(); + GameObjects.PoolNames.Clear(); + usedPoolsDictionary.Clear(); + + return result; + } + + [Obsolete("Use DeleteAllOutputManagedResources instead")] + public void Clear() + { + DeleteAllOutputManagedResources(); + } + + public override void Refresh() + { + base.Refresh(); + + TryDeleteChildrenFromAssociatedPrefab(); + DeleteAllOutputManagedResources(); + + List VGO = InGameObjectArray.GetAllData(out bool isGOsDisposable); + CGSpots Spots = InSpots.GetData(out bool isSpotsDisposable); + + List existingPools = GetAllPrefabPools(); + HashSet usedPools = new HashSet(); + + GameObjects.Items.Clear(); + GameObjects.PoolNames.Clear(); + usedPoolsDictionary.Clear(); + + if (VGO.Count > 0 && Spots.Count > 0) + { + CGSpot spot; + for (int s = 0; s < Spots.Count; s++) + { + spot = Spots.Spots.Array[s]; + int id = spot.Index; + if (id >= 0 && id < VGO.Count && VGO[id].Object != null) + { + CGGameObject inputCGGameObject = VGO[id]; + + string poolIdent = GetPrefabPool(inputCGGameObject.Object).Identifier; + usedPools.Add(poolIdent); + Transform res = (Transform)AddManagedResource("GameObject", poolIdent, s); + res.gameObject.isStatic = MakeStatic; + res.gameObject.layer = Layer; + if (ApplyLayerOnChildren) + { + //Optim: GetComponentsInChildren does an allocation to make the array, which GetChild doesn't need. So an alternative would be to make a recursive method that goes through all children an apply an action on them. For now, I will just stick with the simplest implementation + Transform[] descendants = res.gameObject.GetComponentsInChildren(true); + foreach (Transform descendantTransform in descendants) + descendantTransform.gameObject.layer = Layer; + } + res.localPosition = spot.Position; + res.localRotation = spot.Rotation; + res.localScale = new Vector3(inputCGGameObject.Object.transform.localScale.x * spot.Scale.x * inputCGGameObject.Scale.x, inputCGGameObject.Object.transform.localScale.y * spot.Scale.y * inputCGGameObject.Scale.y, inputCGGameObject.Object.transform.localScale.z * spot.Scale.z * inputCGGameObject.Scale.z); + + if (inputCGGameObject.Translate != Vector3.zero) + res.Translate(inputCGGameObject.Translate); + if (inputCGGameObject.Rotate != Vector3.zero) + res.Rotate(inputCGGameObject.Rotate); + + GameObjects.Items.Add(res); + GameObjects.PoolNames.Add(poolIdent); + + usedPoolsDictionary[res] = poolIdent; + } + } + } + + // Remove unused pools + foreach (IPool pool in existingPools) + { + if (!usedPools.Contains(pool.Identifier)) + Generator.PoolManager.DeletePool(pool); + } + + if (isGOsDisposable) + VGO.ForEach(d => d.Dispose()); + if (isSpotsDisposable) + Spots.Dispose(); + + } + + #endregion + + protected override GameObject SaveResourceToScene(Component managedResource, Transform newParent) + { + GameObject duplicateGameObject = managedResource.gameObject.DuplicateGameObject(newParent); + duplicateGameObject.name = managedResource.name; + return duplicateGameObject; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateGameObject.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateGameObject.cs.meta new file mode 100644 index 00000000..52e5701d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateGameObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 89a49fda31b97d84787924dbf8bd2a94 +timeCreated: 1441105931 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateMesh.cs new file mode 100644 index 00000000..011efa19 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateMesh.cs @@ -0,0 +1,1136 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Pools; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using JetBrains.Annotations; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; +using UnityEngine.Rendering; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Create/Mesh", ModuleName = "Create Mesh")] + [HelpURL(CurvySpline.DOCLINK + "cgcreatemesh")] + public class CreateMesh : ResourceExportingModule, ISerializationCallbackReceiver + { + /// + /// The default value of Tag of created objects + /// + private const string DefaultTag = "Untagged"; + + + [HideInInspector] + [InputSlotInfo(typeof(CGVMesh), Array = true, Name = "VMesh")] + public CGModuleInputSlot InVMeshArray = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGSpots), Array = true, Name = "Spots", Optional = true)] + public CGModuleInputSlot InSpots = new CGModuleInputSlot(); + + /// + /// The created meshes at the last update (call to Refresh). This list is not maintained outside of module updates, so if a user manually deletes one of the created meshes, its entry in this list will still be there, but with a null value (since deleted objects are equal to null in Unity's world) + /// + [SerializeField, CGResourceCollectionManager("Mesh", ShowCount = true)] + private CGMeshResourceCollection m_MeshResources = new CGMeshResourceCollection(); + + #region ### Serialized Fields ### + + [Tab("General")] + + [Tooltip("Merge meshes")] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + [SerializeField] + private bool m_Combine; + + [SerializeField] + [Tooltip("Warning: this operation is Editor only (not available in builds) and CPU intensive.\nWhen combining multiple meshes, the UV2s are by default kept as is. Use this option to recompute them by uwrapping the combined mesh.")] + [FieldCondition(nameof(m_Combine), true, Action = ConditionalAttribute.ActionEnum.Show)] + private bool unwrapUV2; + + [Tooltip("When Combine is true, combine meshes sharing the same index\nIs used only if Spots are provided")] +#if UNITY_EDITOR + [FieldCondition(nameof(m_Combine), true, false, Action = ConditionalAttribute.ActionEnum.Show)] + [FieldCondition(nameof(canUpdate), true, false, ConditionalAttribute.OperatorEnum.AND, nameof(canGroupMeshes), true, false, Action = ConditionalAttribute.ActionEnum.Enable)] +#endif + [SerializeField] + private bool m_GroupMeshes = true; + + [SerializeField] + [Tooltip("If true, the generated mesh will have normals")] + private bool includeNormals = true; + + [SerializeField] + [Tooltip("If true, the generated mesh will have tangents")] + private bool includeTangents = false; + + [SerializeField, HideInInspector] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private CGYesNoAuto m_AddNormals = CGYesNoAuto.Auto; + + [SerializeField, HideInInspector] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private CGYesNoAuto m_AddTangents = CGYesNoAuto.No; + + [SerializeField, HideInInspector] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private bool m_AddUV2 = true; + + [SerializeField] + [Tooltip("If enabled, meshes will have the Static flag set, and will not be updated in Play Mode")] + [FieldCondition(nameof(canModifyStaticFlag), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private bool m_MakeStatic; + + [SerializeField] + [Tooltip("The Layer of the created game object")] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + [Layer] + private int m_Layer; + + [SerializeField] + [Tooltip("The Tag of the created game object")] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + [Tag] + private string m_Tag = DefaultTag; + + [Tab("Renderer")] + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private bool m_RendererEnabled = true; + + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private ShadowCastingMode m_CastShadows = ShadowCastingMode.On; + + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private bool m_ReceiveShadows = true; + + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private LightProbeUsage m_LightProbeUsage = LightProbeUsage.BlendProbes; + + [HideInInspector] + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private bool m_UseLightProbes = true; + + + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private ReflectionProbeUsage m_ReflectionProbes = ReflectionProbeUsage.BlendProbes; + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private Transform m_AnchorOverride; + + [Tab("Collider")] + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private CGColliderEnum m_Collider = CGColliderEnum.Mesh; + + [FieldCondition(nameof(m_Collider), CGColliderEnum.Mesh)] + [SerializeField] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private bool m_Convex; + + [SerializeField] + [FieldCondition(nameof(EnableIsTrigger), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private bool m_IsTrigger; + +#if UNITY_2017_3_OR_NEWER + [Tooltip("Options used to enable or disable certain features in Collider mesh cooking. See Unity's MeshCollider.cookingOptions for more details")] + [FieldCondition(nameof(m_Collider), CGColliderEnum.Mesh)] + [SerializeField] + [EnumFlag] + [FieldCondition(nameof(canUpdate), true, Action = ConditionalAttribute.ActionEnum.Enable)] + private MeshColliderCookingOptions m_CookingOptions = CGMeshResource.EverMeshColliderCookingOptions; +#endif + +#if UNITY_EDITOR + [FieldCondition(nameof(canUpdate), true, false, ConditionalAttribute.OperatorEnum.AND, "m_Collider", CGColliderEnum.None, true, Action = ConditionalAttribute.ActionEnum.Enable)] +#endif + [Label("Auto Update")] + [SerializeField] + private bool m_AutoUpdateColliders = true; + +#if UNITY_EDITOR + [FieldCondition(nameof(canUpdate), true, false, ConditionalAttribute.OperatorEnum.AND, "m_Collider", CGColliderEnum.None, true, Action = ConditionalAttribute.ActionEnum.Enable)] +#endif + [SerializeField] + private PhysicsMaterial m_Material; + + #endregion + + #region ### Public Properties ### + + #region --- General --- + public bool Combine + { + get { return m_Combine; } + set + { + if (m_Combine != value) + m_Combine = value; + Dirty = true; + } + } + + /// + /// Warning: this operation is Editor only (not available in builds) and CPU intensive + /// When combining multiple meshes, the UV2s are by default kept as is. Use this option to recompute them by uwrapping the combined mesh. + /// + public bool UnwrapUV2 + { + get + { +#if UNITY_EDITOR == false + DTLog.Log("[Curvy] UV2 Unwrapping is not available outside of the editor"); +#endif + return unwrapUV2; + } + set + { +#if UNITY_EDITOR == false + DTLog.Log("[Curvy] UV2 Unwrapping is not available outside of the editor"); +#endif + if (unwrapUV2 != value) + { + unwrapUV2 = value; + Dirty = true; + } + } + } + + /// + /// When Combine is true, combine meshes sharing the same index + /// + /// Is used only if is not empty + public bool GroupMeshes + { + get { return m_GroupMeshes; } + set + { + if (m_GroupMeshes != value) + m_GroupMeshes = value; + Dirty = true; + } + } + + /// + /// If true, the generated mesh will have normals + /// + public bool IncludeNormals + { + get { return includeNormals; } + set + { + if (includeNormals != value) + includeNormals = value; + Dirty = true; + } + } + + /// + /// If true, the generated mesh will have tangents + /// + public bool IncludeTangents + { + get { return includeTangents; } + set + { + if (includeTangents != value) + includeTangents = value; + Dirty = true; + } + } + + [Obsolete("Use IncludeNormals instead")] + public CGYesNoAuto AddNormals + { + get { return m_AddNormals; } + set + { + if (m_AddNormals != value) + m_AddNormals = value; + Dirty = true; + } + } + + [Obsolete("Use IncludeTangents instead")] + public CGYesNoAuto AddTangents + { + get { return m_AddTangents; } + set + { + if (m_AddTangents != value) + m_AddTangents = value; + Dirty = true; + } + } + + [Obsolete("UV2 is now always added")] + public bool AddUV2 + { + get { return m_AddUV2; } + set + { + if (m_AddUV2 != value) + m_AddUV2 = value; + Dirty = true; + } + } + + + public int Layer + { + get { return m_Layer; } + set + { + int v = Mathf.Clamp(value, 0, 32); + if (m_Layer != v) + m_Layer = v; + Dirty = true; + } + } + + public string Tag + { + get { return m_Tag; } + set + { + if (m_Tag != value)//TODO get rid of value comparison in all properties, or at least add the Dirty = true line inside the if + m_Tag = value; + Dirty = true; + } + } + + public bool MakeStatic + { + get { return m_MakeStatic; } + set + { + if (m_MakeStatic != value) + m_MakeStatic = value; + Dirty = true; + } + } + #endregion + + #region --- Renderer --- + public bool RendererEnabled + { + get { return m_RendererEnabled; } + set + { + if (m_RendererEnabled != value) + m_RendererEnabled = value; + Dirty = true; + } + } + + public ShadowCastingMode CastShadows + { + get { return m_CastShadows; } + set + { + if (m_CastShadows != value) + m_CastShadows = value; + Dirty = true; + } + } + + public bool ReceiveShadows + { + get { return m_ReceiveShadows; } + set + { + if (m_ReceiveShadows != value) + m_ReceiveShadows = value; + Dirty = true; + } + } + + public bool UseLightProbes + { + get { return m_UseLightProbes; } + set + { + if (m_UseLightProbes != value) + m_UseLightProbes = value; + Dirty = true; + } + } + + public LightProbeUsage LightProbeUsage + { + get { return m_LightProbeUsage; } + set + { + if (m_LightProbeUsage != value) + m_LightProbeUsage = value; + Dirty = true; + } + } + + + public ReflectionProbeUsage ReflectionProbes + { + get { return m_ReflectionProbes; } + set + { + if (m_ReflectionProbes != value) + m_ReflectionProbes = value; + Dirty = true; + } + } + + public Transform AnchorOverride + { + get { return m_AnchorOverride; } + set + { + if (m_AnchorOverride != value) + m_AnchorOverride = value; + Dirty = true; + } + } + + #endregion + + #region --- Collider --- + + public CGColliderEnum Collider + { + get { return m_Collider; } + set + { + if (m_Collider != value) + m_Collider = value; + Dirty = true; + } + } + + public bool AutoUpdateColliders + { + get { return m_AutoUpdateColliders; } + set + { + if (m_AutoUpdateColliders != value) + m_AutoUpdateColliders = value; + Dirty = true; + } + } + + public bool Convex + { + get { return m_Convex; } + set + { + if (m_Convex != value) + m_Convex = value; + Dirty = true; + } + } + + /// + /// Is the created collider a trigger + /// + public bool IsTrigger + { + get { return m_IsTrigger; } + set + { + if (m_IsTrigger != value) + m_IsTrigger = value; + Dirty = true; + } + } + +#if UNITY_2017_3_OR_NEWER + /// + /// Options used to enable or disable certain features in Collider mesh cooking. See Unity's MeshCollider.cookingOptions for more details + /// + public MeshColliderCookingOptions CookingOptions + { + get { return m_CookingOptions; } + set + { + if (m_CookingOptions != value) + m_CookingOptions = value; + Dirty = true; + } + } +#endif + + public PhysicsMaterial Material + { + get { return m_Material; } + set + { + if (m_Material != value) + m_Material = value; + Dirty = true; + } + } + + #endregion + + /// + /// The created meshes at the last update (call to Refresh). This list is not maintained outside of module updates, so if a user manually deletes one of the created meshes, its entry in this list will still be there, but with a null value (since deleted objects are equal to null in Unity's world) + /// + public CGMeshResourceCollection Meshes + { + get { return m_MeshResources; } + } + + /// + /// Count of + /// + public int MeshCount + { + get { return Meshes.Count; } + } + + public int VertexCount { get; private set; } + + #endregion + + #region ### Private Fields & Properties ### + + private ThreadPoolWorker parallelMeshBaker = new ThreadPoolWorker(); + private CGSpotComparer cgSpotComparer = new CGSpotComparer(); + + + private bool canGroupMeshes + { + get + { + return (InSpots.IsLinked); + } + } + + private bool canModifyStaticFlag + { + get + { +#if UNITY_EDITOR + return Application.isPlaying == false; +#else + return false; +#endif + } + } + + private bool canUpdate + { + get + { + return !Application.isPlaying || !MakeStatic; + } + } + + //Do not remove, used in FieldCondition in this file + private bool EnableIsTrigger + { + get + { + return canUpdate && (m_Collider != CGColliderEnum.Mesh || m_Convex); + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + IncludeNormals = includeNormals; + IncludeTangents = includeTangents; +#pragma warning disable 618 + AddNormals = m_AddNormals; + AddTangents = m_AddTangents; +#pragma warning restore 618 + Collider = m_Collider; + Dirty = true; + } +#endif + + public override void Reset() + { + base.Reset(); + Combine = false; + UnwrapUV2 = false; + GroupMeshes = true; + IncludeNormals = true; + IncludeTangents = false; +#pragma warning disable 618 + AddNormals = CGYesNoAuto.Auto; + AddTangents = CGYesNoAuto.No; +#pragma warning restore 618 + MakeStatic = false; + Material = null; + Layer = 0; + Tag = DefaultTag; + CastShadows = ShadowCastingMode.On; + RendererEnabled = true; + ReceiveShadows = true; + UseLightProbes = true; + LightProbeUsage = LightProbeUsage.BlendProbes; + ReflectionProbes = ReflectionProbeUsage.BlendProbes; + AnchorOverride = null; + Collider = CGColliderEnum.Mesh; + AutoUpdateColliders = true; + Convex = false; + IsTrigger = false; +#pragma warning disable 618 + AddUV2 = true; +#pragma warning restore 618 +#if UNITY_2017_3_OR_NEWER + CookingOptions = CGMeshResource.EverMeshColliderCookingOptions; +#endif + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public CreateMesh() + { + Version = "1"; + } + + public override bool DeleteAllOutputManagedResources() + { + bool result = base.DeleteAllOutputManagedResources(); + + //delete all children + int childCount = transform.childCount; + //the following line is not prefect, since a module can have children that are not mesh resources, but I believe it is ok to assume so, worst case scenario in rare occasions there will be extra work done from the code that uses the "result" value. Best case scenario you are keeping the behaviour consistent with CreateGameObject module + result |= childCount > 0; + + List meshResources = new List(childCount); + List nonMeshResourceChildren = new List(); + + for (int i = 0; i < childCount; i++) + { + Transform child = transform.GetChild(i); + if (child.TryGetComponent(out CGMeshResource resource)) + meshResources.Add(resource); + else + nonMeshResourceChildren.Add(child); + } + + //it might seem a good idea to not use meshResources, and just iterate through all children and delete them, but the deletion code can, depending on different on edit/play mode and prefab status, either delete instantly the object, delete it at the end of the frame, or not delete it at all, leading to the iteration logic having to handle all of those cases in deciding what should be the iteration index. I prefer to play it safe, and use the destructionTargets list + foreach (CGMeshResource resource in meshResources) + DeleteManagedResource("Mesh", resource); + + //we delete children that are not mesh resources to stay consistent with CreteGameObject module, that deletes all chidlren, and consistent with TryDeleteChildrenFromAssociatedPrefab. Such inconsistency with TryDeleteChildrenFromAssociatedPrefab might lead to that method loading the prefab asset at every update, since it will always detect the non mesh resource child, which will never be deleted by the this method. + foreach (Transform child in nonMeshResourceChildren) + child.gameObject.Destroy(false, true); + + VertexCount = 0; + Meshes.Items.Clear(); + + return result; + } + + [Obsolete("Use DeleteAllOutputManagedResources instead")] + public void Clear() + { + DeleteAllOutputManagedResources(); + } + + public override void Refresh() + { + base.Refresh(); + if (canUpdate) + { + TryDeleteChildrenFromAssociatedPrefab(); + DeleteAllOutputManagedResources(); + + List VMeshes = InVMeshArray.GetAllData(out bool isVMeshesDisposable); + List Spots = InSpots.GetAllData(out bool isSpotsDisposable); + + SubArray? flattenedSpotsArray = ToOneDimensionalArray(Spots, out bool isCopy); + int vMeshesCount = VMeshes.Count; + + VertexCount = 0; + Meshes.Items.Clear(); + + if (vMeshesCount > 0 && (!InSpots.IsLinked || (flattenedSpotsArray != null && flattenedSpotsArray.Value.Count > 0))) + { + if (flattenedSpotsArray != null && flattenedSpotsArray.Value.Count > 0) + { + SubArray subArray = flattenedSpotsArray.Value; + for (int i = 0; i < subArray.Count; i++) + { + CGSpot spot = subArray.Array[i]; + if (spot.Index >= vMeshesCount) + { + int correctedIndex = vMeshesCount - 1; + UIMessages.Add($"Spot index {spot.Index} references an non existing VMesh. There is/are only {vMeshesCount} valid input VMesh(es). An index of {correctedIndex} was used instead"); + subArray.Array[i] = new CGSpot(correctedIndex, spot.Position, spot.Rotation, spot.Scale); + } + } + CreateSpotMeshes(VMeshes, flattenedSpotsArray.Value, Combine, isCopy, Meshes.Items); + } + else + CreateMeshes(VMeshes, Combine, Meshes.Items); + } + // Cleanup + if (isCopy) + ArrayPools.CGSpot.Free(flattenedSpotsArray.Value); + + if (isVMeshesDisposable) + { + VMeshes.ForEach(d => d.Dispose()); + } + + if (isSpotsDisposable) + { + Spots.ForEach(d => d.Dispose()); + } + + // Update Colliders? + if (AutoUpdateColliders) + UpdateColliders(); + } + else + UIMessages.Add("In Play Mode, and when Make Static is enabled, mesh generation is stopped to avoid overriding the optimizations Unity do to static game objects'meshs."); + } + + public void UpdateColliders() + { + List meshResources = Meshes.Items; + bool success = true; + + //Parallel mesh baking if needed + if (Collider == CGColliderEnum.Mesh && meshResources.Count > 1)//do not bake if no mesh collider asked + { + SubArray meshIds = ArrayPools.Int32.Allocate(meshResources.Count, false); + for (var i = 0; i < meshResources.Count; i++) + { + if (meshResources[i] == null) + meshIds.Array[i] = 0; //meshIds is allocated without being cleared, so set to 0 to avoid using the meshId from a previous call + + meshIds.Array[i] = meshResources[i].Filter.sharedMesh.GetInstanceID(); + } + + parallelMeshBaker.ParallelFor(BakeMesh, meshIds.Array, meshIds.Count); + ArrayPools.Int32.Free(meshIds); + } + + for (int r = 0; r < meshResources.Count; r++) + { + if (meshResources[r] == null) + continue; +#if UNITY_2017_3_OR_NEWER + if (!meshResources[r].UpdateCollider(Collider, Convex, IsTrigger, Material, CookingOptions)) +#else + if (!meshResources[r].UpdateCollider(Collider, Convex, IsTrigger, Material)) +#endif + success = false; + } + if (!success) + UIMessages.Add("Error setting collider!"); + } + + #region ISerializationCallbackReceiver implementation + + public void OnBeforeSerialize() + { + + } + + public void OnAfterDeserialize() + { + if (String.IsNullOrEmpty(Version)) + { + Version = "1"; +#pragma warning disable 618 + IncludeNormals = AddNormals != CGYesNoAuto.No; + IncludeTangents = AddTangents != CGYesNoAuto.No; +#pragma warning restore 618 + } + } + + #endregion + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + private void BakeMesh(int meshId, int elementIndex, int elementsCount) + { + Physics.BakeMesh(meshId, Convex); + } + + private void CreateMeshes(List vMeshes, bool combine, [NotNull] List createdMeshes) + { + if (combine && vMeshes.Count > 1) + { + CGVMesh curVMesh = new CGVMesh(); + curVMesh.MergeVMeshes(vMeshes, 0, vMeshes.Count - 1); + WriteVMeshToMesh(curVMesh, createdMeshes); + } + else + for (int index = 0; index < vMeshes.Count; index++) + WriteVMeshToMesh(vMeshes[index], createdMeshes); + } + + private void CreateSpotMeshes(List vMeshes, SubArray spots, bool combine, bool spotsIsACopy, [NotNull] List createdMeshes) + { + int vmCount = vMeshes.Count; + CGSpot spot; + + bool allocateNewSpotsArray = combine && GroupMeshes && spotsIsACopy == false; + + if (allocateNewSpotsArray) + spots = ArrayPools.CGSpot.Clone(spots); + + if (combine) + { + if (GroupMeshes) + System.Array.Sort(spots.Array, 0, spots.Count, cgSpotComparer); + + spot = spots.Array[0]; + CGVMesh curVMesh = new CGVMesh(vMeshes[spot.Index]); + if (spot.Position != Vector3.zero || spot.Rotation != Quaternion.identity || spot.Scale != Vector3.one) + curVMesh.TRS(spot.Matrix); + for (int s = 1; s < spots.Count; s++) + { + spot = spots.Array[s]; + // Filter spot.index not in vMeshes[] + if (spot.Index > -1 && spot.Index < vmCount) + { + if (GroupMeshes && spot.Index != spots.Array[s - 1].Index) + { // write curVMesh + WriteVMeshToMesh(curVMesh, createdMeshes); + curVMesh.Dispose(); + curVMesh = new CGVMesh(vMeshes[spot.Index]); + if (!spot.Matrix.isIdentity) + curVMesh.TRS(spot.Matrix); + } + else + { + // Add new vMesh to curVMesh + //OPTIM use MergeVMeshes to merge everything at once + curVMesh.MergeVMesh(vMeshes[spot.Index], spot.Matrix); + } + } + } + WriteVMeshToMesh(curVMesh, createdMeshes); + curVMesh.Dispose(); + } + else + { + for (int s = 0; s < spots.Count; s++) + { + spot = spots.Array[s]; + // Filter spot.index not in vMeshes[] + if (spot.Index > -1 && spot.Index < vmCount) + { + CGMeshResource res = WriteVMeshToMesh(vMeshes[spot.Index], createdMeshes); + // Don't touch vertices, TRS Resource instead + if (spot.Position != Vector3.zero || spot.Rotation != Quaternion.identity || spot.Scale != Vector3.one) + spot.ToTransform(res.Filter.transform); + } + } + } + + if (allocateNewSpotsArray) + ArrayPools.CGSpot.Free(spots); + } + + /// + /// create a mesh resource and copy vmesh data to the mesh! + /// + /// + /// + private CGMeshResource WriteVMeshToMesh(CGVMesh vmesh, List cgMeshResources) + { + CGMeshResource res = GetNewMesh(cgMeshResources.Count); + cgMeshResources.Add(res); + + if (canModifyStaticFlag) + res.Filter.gameObject.isStatic = false; + Mesh mesh = res.Prepare(); + res.gameObject.layer = Layer; + res.gameObject.tag = Tag; + vmesh.ToMesh(ref mesh, IncludeNormals, IncludeTangents); + VertexCount += vmesh.Count; + + if (IncludeNormals && (vmesh.HasNormals == false || vmesh.HasPartialNormals)) + mesh.RecalculateNormals(); + if (IncludeTangents && (vmesh.HasTangents == false || vmesh.HasPartialTangents)) + mesh.RecalculateTangents(); + + if (Combine && UnwrapUV2 && (vmesh.HasUV2)) +#if UNITY_EDITOR + UnityEditor.Unwrapping.GenerateSecondaryUVSet(mesh); +#else + DTLog.Log("[Curvy] UV2 Unwrapping is not available outside of the editor"); +#endif + +#if CURVY_SANITY_CHECKS_PRIVATE + if (IncludeNormals) + { + Vector3[] meshNormals = mesh.normals; + for (var i = 0; i < meshNormals.Length; i++) + { + if (meshNormals[i] == Vector3.zero) + { + Assert.IsTrue(false); + } + } + } + + if (includeTangents) + { + Vector4[] meshTangents = mesh.tangents; + for (var i = 0; i < meshTangents.Length; i++) + { + if (meshTangents[i] == Vector4.zero) + { + Assert.IsTrue(false); + } + } + } +#endif + + // Reset Transform + res.Filter.transform.localPosition = Vector3.zero; + res.Filter.transform.localRotation = Quaternion.identity; + res.Filter.transform.localScale = Vector3.one; + if (canModifyStaticFlag) + res.Filter.gameObject.isStatic = MakeStatic; + res.Renderer.sharedMaterials = vmesh.GetMaterials(); + + + return res; + } + + /// + /// gets a new mesh resource and increase mCurrentMeshCount + /// + private CGMeshResource GetNewMesh(int currentMeshCount) + { + // Reuse existing resources + CGMeshResource r = ((CGMeshResource)AddManagedResource("Mesh", "", currentMeshCount)); + + // Renderer settings + r.Renderer.shadowCastingMode = CastShadows; + r.Renderer.enabled = RendererEnabled; + r.Renderer.receiveShadows = ReceiveShadows; + r.Renderer.lightProbeUsage = LightProbeUsage; + r.Renderer.reflectionProbeUsage = ReflectionProbes; + + r.Renderer.probeAnchor = AnchorOverride; + + if (!r.ColliderMatches(Collider)) + r.RemoveCollider(); + + return r; + } + + + private static SubArray? ToOneDimensionalArray(List spotsList, out bool arrayIsCopy) + { + SubArray? output; + switch (spotsList.Count) + { + case 1: + if (spotsList[0] != null) + { + output = new SubArray(spotsList[0].Spots.Array, spotsList[0].Spots.Count); + arrayIsCopy = false; + } + else + { + output = null; + arrayIsCopy = false; + } + break; + case 0: + output = null; + arrayIsCopy = false; + break; + default: + { + output = ArrayPools.CGSpot.Allocate(spotsList.Where(s => s != null).Sum(s => s.Count)); + arrayIsCopy = true; + + CGSpot[] array = output.Value.Array; + int destinationIndex = 0; + foreach (CGSpots cgSpots in spotsList) + { + if (cgSpots == null) + continue; + Array.Copy(cgSpots.Spots.Array, 0, array, destinationIndex, cgSpots.Spots.Count); + destinationIndex += cgSpots.Spots.Count; + } + } + + break; + } + + return output; + } + + /*! \endcond */ + + #endregion + + #region Resources saving + + /// + /// Saves the created meshes to asset files + /// + /// Will open a file selector to select where to save the files + public void SaveToAsset() + { +#if UNITY_EDITOR + string assetPathBase = InquireAssetPath(); + if (string.IsNullOrEmpty(assetPathBase)) + return; + + List managedResources; + GetManagedResources(out managedResources, out _); + for (int i = 0; i < managedResources.Count; i++) + { + Mesh instantiatedMesh = Instantiate(managedResources[i].GetComponent().sharedMesh); + string assetPath = ResourceFilesSavingState.GetAssetFullName(assetPathBase, i, managedResources.Count); + SaveMeshToAsset(instantiatedMesh, assetPath); + } + + UnityEditor.AssetDatabase.Refresh(); +#else + throw new InvalidOperationException("Operation available only in editor"); +#endif + } + + /// + /// Saves a copy of the generated mesh(es) as Asset(s), then creates a GameObject, outside of the generator, referencing those mesh assets. This way the created GameObject can be made part of a prefab without issues + /// + /// Will open a file selector to select where to save the files + public void SaveToSceneAndAsset() + { +#if UNITY_EDITOR + string assetPathBase = InquireAssetPath(); + if (string.IsNullOrEmpty(assetPathBase)) + return; + + try + { + GetManagedResources(out List managedResources, out _); + resourceFilesSavingState = new ResourceFilesSavingState(assetPathBase, 0, managedResources.Count); + + SaveToScene(); + UnityEditor.AssetDatabase.Refresh(); + } + finally + { + resourceFilesSavingState = null; + } +#else + throw new InvalidOperationException("Operation available only in editor"); +#endif + } + + protected override GameObject SaveResourceToScene(Component managedResource, Transform newParent) + { + MeshFilter meshFilter = managedResource.GetComponent(); + Mesh instantiatedMesh = Instantiate(meshFilter.sharedMesh); + + GameObject duplicateGameObject = managedResource.gameObject.DuplicateGameObject(newParent); + duplicateGameObject.name = managedResource.name; + duplicateGameObject.GetComponent().Destroy(false, true); + duplicateGameObject.GetComponent().sharedMesh = instantiatedMesh; +#if UNITY_EDITOR + if (resourceFilesSavingState != null) + { + string assetName = resourceFilesSavingState.GetAssetFullName(); + SaveMeshToAsset(instantiatedMesh, assetName); + resourceFilesSavingState.IncrementResourceIndex(); + } +#endif + return duplicateGameObject; + } + +#if UNITY_EDITOR + + /// + /// This state is used when saving both to the scene and the assets. The way this operation was implemented makes it a scene saving that saves to te assets folder too based on the state of this class's instance + /// + private class ResourceFilesSavingState + { + private string AssetsBasePath { get; } + private int ResourceIndex { get; set; } + private int ResourcesCount { get; } + + public ResourceFilesSavingState(string assetsBasePath, int resourceIndex, int resourcesCount) + { + this.AssetsBasePath = assetsBasePath; + this.ResourceIndex = resourceIndex; + this.ResourcesCount = resourcesCount; + } + public ResourceFilesSavingState() + { + } + + public void IncrementResourceIndex() + { + ResourceIndex++; + } + + public string GetAssetFullName() + { + return GetAssetFullName(AssetsBasePath, ResourceIndex, ResourcesCount); + } + + public static string GetAssetFullName(string assetsBasePath, int resourceIndex, int resourcesCount) + { + return resourcesCount > 1 + ? $"{assetsBasePath}-{resourceIndex:D3}.asset" + : $"{assetsBasePath}.asset"; + } + + } + + private ResourceFilesSavingState resourceFilesSavingState; + + private static void SaveMeshToAsset(Mesh meshInstance, string assetPath) + { + UnityEditor.AssetDatabase.DeleteAsset(assetPath); + UnityEditor.AssetDatabase.CreateAsset(meshInstance, assetPath); + } + + private string InquireAssetPath() + { + return UnityEditor.EditorUtility.SaveFilePanelInProject("Save Assets", ModuleName, "mesh", "Save Mesh(es) as").Replace(".mesh", ""); + } +#endif + } + + #endregion + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateMesh.cs.meta new file mode 100644 index 00000000..716c65c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreateMesh.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c6892ca2de7dc0741889c5dcd62ef9cc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreatePathLineRenderer.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreatePathLineRenderer.cs new file mode 100644 index 00000000..0ce96450 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreatePathLineRenderer.cs @@ -0,0 +1,110 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Linq; +using FluffyUnderware.Curvy.Pools; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy.Utils; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Create/Path Line Renderer", ModuleName = "Create Path Line Renderer", Description = "Feeds a Line Renderer with a Path")] + [HelpURL(CurvySpline.DOCLINK + "cgcreatepathlinerenderer")] + public class CreatePathLineRenderer : CGModule + { + + [HideInInspector] + [InputSlotInfo(typeof(CGPath), DisplayName = "Rasterized Path")] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + #region ### Serialized Fields ### + + public LineRenderer LineRenderer + { + get + { + if (mLineRenderer == null) + mLineRenderer = GetComponent(); + return mLineRenderer; + } + } + + #endregion + + private LineRenderer mLineRenderer; + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + protected override void Awake() + { + base.Awake(); + createLR(); + } + /*! \endcond */ + #endregion + + #region ### Module Overrides ### + + public override void Refresh() + { + base.Refresh(); + CGPath path = InPath.GetData(out bool isDisposable); +#if UNITY_5_6_OR_NEWER + if (path != null) + { + LineRenderer.positionCount = path.Positions.Count; + LineRenderer.SetPositions(path.Positions.Array); + } + else + LineRenderer.positionCount = 0; +#else + if (path != null) + { + LineRenderer.numPositions = path.Position.Length; + for (int v = 0; v < path.Position.Length; v++) + LineRenderer.SetPosition(v, path.Position[v]); + } + else + LineRenderer.numPositions = 0; +#endif + if(isDisposable) + path.Dispose(); + + } + + // Called when a module's state changes (Link added/removed, Active toggles etc..) + //public override void OnStateChange() + //{ + // base.OnStateChange(); + //} + + // Called after a module was copied to a template + //public override void OnTemplateCreated() + //{ + // base.OnTemplateCreated(); + //} + + + #endregion + + private void createLR() + { + if (LineRenderer == null) + { + mLineRenderer = gameObject.AddComponent(); + mLineRenderer.useWorldSpace = false; +#if UNITY_5_6_OR_NEWER + mLineRenderer.textureMode = LineTextureMode.Tile; +#endif + mLineRenderer.sharedMaterial = CurvyUtility.GetDefaultMaterial(); + } + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreatePathLineRenderer.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreatePathLineRenderer.cs.meta new file mode 100644 index 00000000..5719a4ef --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/CreatePathLineRenderer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 359139391bbb6514fb37f1b3fb94879c +timeCreated: 1479208691 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugRasterizedPath.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugRasterizedPath.cs new file mode 100644 index 00000000..9e5c7557 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugRasterizedPath.cs @@ -0,0 +1,46 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + /// + /// Shows the tangents and orientation of a path + /// + [ModuleInfo("Debug/Rasterized Path", ModuleName = "Debug Rasterized Path", Description = "Shows the tangents and orientation of a rasterized path")] + [HelpURL(CurvySpline.DOCLINK + "cgdebugrasterizedpath")] + public class DebugRasterizedPath : CGModule + { + + [HideInInspector] + [InputSlotInfo(typeof(CGPath), DisplayName = "Rasterized Path")] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + /// + /// Display the normal at each one of the path's points + /// + [Tooltip("Display the normal at each one of the path's points")] + public bool ShowNormals = true; + /// + /// Display the orientation at each one of the path's points + /// + [Tooltip("Display the orientation at each one of the path's points")] + public bool ShowOrientation = true; + + #region ### Module Overrides ### + + + public override void Reset() + { + base.Reset(); + ShowNormals = ShowOrientation = true; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugRasterizedPath.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugRasterizedPath.cs.meta new file mode 100644 index 00000000..5698014c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugRasterizedPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2099f374214cd943a9b522e8887c453 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVMesh.cs new file mode 100644 index 00000000..3632c2e8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVMesh.cs @@ -0,0 +1,66 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Debug/VMesh", ModuleName = "Debug VMesh")] + [HelpURL(CurvySpline.DOCLINK + "cgdebugvmesh")] + public class DebugVMesh : CGModule + { + [HideInInspector] + [InputSlotInfo(typeof(CGVMesh), Name = "VMesh")] + public CGModuleInputSlot InData = new CGModuleInputSlot(); + + #region ### Serialized Fields ### + + [Tab("General")] + public bool ShowVertices; + public bool ShowVertexID; + public bool ShowUV; + + #endregion + + #region ### Public Properties ### + #endregion + + #region ### Private Fields & Properties ### + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + public override void Reset() + { + base.Reset(); + ShowVertices = false; + ShowVertexID = false; + ShowUV = false; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + + /*! \endcond */ + #endregion + + + + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVMesh.cs.meta new file mode 100644 index 00000000..9083269f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVMesh.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 057c96da40c092343886bcef75fde4c4 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVolume.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVolume.cs new file mode 100644 index 00000000..e23b68b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVolume.cs @@ -0,0 +1,94 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Debug/Volume", ModuleName = "Debug Volume")] + [HelpURL(CurvySpline.DOCLINK + "cgdebugvolume")] + public class DebugVolume : CGModule + { + [HideInInspector] + [InputSlotInfo(typeof(CGVolume), Name = "Volume")] + public CGModuleInputSlot InData = new CGModuleInputSlot(); + + #region ### Serialized Fields ### + + [Tab("General")] + public bool ShowPathSamples = true; + public bool ShowCrossSamples = true; + [FieldCondition(nameof(ShowCrossSamples), true)] + [IntRegion(RegionIsOptional = true)] + public IntRegion LimitCross = new IntRegion(0, 0); + public bool ShowNormals = false; + public bool ShowIndex = false; + public bool ShowMap = false; + public Color PathColor = Color.white; + public Color VolumeColor = Color.gray; + public Color NormalColor = Color.yellow; + [Tab("Interpolate")] + public bool Interpolate; + [RangeEx(-1, 1, "Path")] + public float InterpolatePathF; + [RangeEx(-1, 1, "Cross")] + public float InterpolateCrossF; + #endregion + + #region ### Public Properties ### + #endregion + + #region ### Private Fields & Properties ### + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Dirty = true; + } + + public override void Reset() + { + base.Reset(); + ShowPathSamples = true; + ShowCrossSamples = true; + LimitCross = new IntRegion(0, 0); + ShowNormals = false; + ShowIndex = false; + ShowMap = false; + PathColor = Color.white; + VolumeColor = Color.gray; + NormalColor = Color.yellow; + Interpolate = false; + InterpolatePathF = 0; + InterpolateCrossF = 0; + } +#endif + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + + /*! \endcond */ + #endregion + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVolume.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVolume.cs.meta new file mode 100644 index 00000000..f30ef99f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DebugVolume.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3ffa9a202f99b745a2a3d9a2619ffb3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DeformMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DeformMesh.cs new file mode 100644 index 00000000..6eff1b6c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DeformMesh.cs @@ -0,0 +1,577 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy.Pools; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using JetBrains.Annotations; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + /// + /// Deforms a mesh following a path + /// + [ModuleInfo("Modifier/Deform Mesh", ModuleName = "Deform Mesh", Description = "Deform a mesh following a path")] + [HelpURL(CurvySpline.DOCLINK + "cgdeformmesh")] + public class DeformMesh : CGModule + { + [HideInInspector] + [InputSlotInfo(typeof(CGVMesh), Array = true, Name = "VMesh")] + public CGModuleInputSlot InVMeshes = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path", DisplayName = "Volume/Rasterized Path")] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGSpots), Array = true, Name = "Spots", Optional = true)] + public CGModuleInputSlot InSpots = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGVMesh), Name = "VMesh", Array = true)] + public CGModuleOutputSlot OutVMeshes = new CGModuleOutputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGSpots), Array = true, Name = "Spots")] + public CGModuleOutputSlot OutSpots = new CGModuleOutputSlot(); + + [SerializeField] + [Tooltip("Stretch the meshes to make them fit the end of the path")] + private bool stretchToEnd; + + private ThreadPoolWorker threadWorker = new ThreadPoolWorker(); + + /// + /// Stretch the meshes to make them fit the end of the path + /// + public bool StretchToEnd + { + get => stretchToEnd; + set + { + if (stretchToEnd != value) + { + stretchToEnd = value; + Dirty = true; + } + } + } + + #region ### Module Overrides ### + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Dirty = true; + } +#endif + + public override void Reset() + { + base.Reset(); + StretchToEnd = false; + } + + public override void Refresh() + { + base.Refresh(); + + CGPath path = InPath.GetData(out bool isPathDisposable); + List inputMeshes = InVMeshes.GetAllData(out bool isMeshesDisposable); + + CGData[] outVMeshesData; + CGSpots outSpotsData; + if (inputMeshes.Count != 0) + { + List inputSpots = InSpots.GetAllData(out bool isSpotsDisposable); + SubArray? inputSpotsArray = ToOneDimensionalArray(inputSpots, out bool isCopy); + bool thereAreSpots = inputSpotsArray.HasValue && inputSpotsArray.Value.Count != 0; + + if (thereAreSpots) + { + int spotsCount = inputSpotsArray.Value.Count; + CGSpot[] spotsArray = inputSpotsArray.Value.Array; + + //inputs verification + bool areSpotsValid = true; + for (int i = 0; i < spotsCount; i++) + { + int meshIndex = spotsArray[i].Index; + if (meshIndex < 0 || meshIndex >= inputMeshes.Count) + { + UIMessages.Add($"Spot #{i} has an invalid Index value of '{meshIndex}'. An index can't be greater or equal to the number of input Meshes, which is '{inputMeshes.Count}'"); + areSpotsValid = false; + break; + } + } + + //the actual processing + if (areSpotsValid) + { + CGVMesh[] outputMeshes = new CGVMesh[spotsCount]; + SubArray outputSpots = ArrayPools.CGSpot.Allocate(spotsCount); + + DeformMeshes(inputMeshes, inputSpotsArray.Value, outputSpots, outputMeshes, path, StretchToEnd, threadWorker); + + outVMeshesData = outputMeshes; + outSpotsData = new CGSpots(outputSpots); + } + else + { + outVMeshesData = Array.Empty(); + outSpotsData = new CGSpots(); + } + } + else + { + outVMeshesData = Array.Empty(); + outSpotsData = new CGSpots(); + } + + if (isCopy) + ArrayPools.CGSpot.Free(inputSpotsArray.Value); + + if (isSpotsDisposable) + inputSpots.ForEach(s => s.Dispose()); + } + else + { + outVMeshesData = Array.Empty(); + outSpotsData = new CGSpots(); + } + + OutVMeshes.SetData(outVMeshesData); + OutSpots.SetData(outSpotsData); + + if (isPathDisposable) + path.Dispose(); + + if (isMeshesDisposable) + inputMeshes.ForEach(m => m.Dispose()); + } + #endregion + + /// + /// Deforms multiple s following a path + /// + /// The list of meshes the of refer to + /// The s defining the transform and mesh to use as inputs + /// Should have the same as + /// Should have the same as + /// A path defining how the meshes should be deformed + /// see + /// An instance of to run the mesh deformation on + public static void DeformMeshes([NotNull] List inputMeshes, SubArray inputSpots, SubArray outputSpots, [NotNull] CGVMesh[] outputMeshes, [NotNull] CGPath path, bool stretchToEnd, ThreadPoolWorker threadPoolWorker) + { + if (inputMeshes == null) throw new ArgumentNullException(nameof(inputMeshes)); + if (outputMeshes == null) throw new ArgumentNullException(nameof(outputMeshes)); + if (path == null) throw new ArgumentNullException(nameof(path)); + if (inputSpots.Count == 0) throw new ArgumentException("input spots should have at least one element", nameof(inputSpots)); + if (inputMeshes.Count == 0) throw new ArgumentException("input meshes should have at least one element", nameof(inputMeshes)); + + CGSpot[] spotsArray = inputSpots.Array; + int spotsCount = inputSpots.Count; + +#if CURVY_SANITY_CHECKS + for (int i = 0; i < spotsCount; i++) + { + int meshIndex = spotsArray[i].Index; + + Assert.IsTrue(meshIndex >= 0); + Assert.IsTrue(meshIndex < inputMeshes.Count); + } +#endif + + //prepare output meshes + for (int i = 0; i < spotsCount; i++) + { + CGVMesh inputMesh = inputMeshes[spotsArray[i].Index]; + + CGVMesh outputMesh = new CGVMesh(inputMesh.Count, inputMesh.HasUV, inputMesh.HasUV2, inputMesh.HasNormals, inputMesh.HasTangents); + + if (inputMesh.HasUV) + Array.Copy(inputMesh.UVs.Array, 0, + outputMesh.UVs.Array, 0, inputMesh.UVs.Count); + + if (inputMesh.HasUV2) + Array.Copy(inputMesh.UV2s.Array, 0, + outputMesh.UV2s.Array, 0, inputMesh.UV2s.Count); + + outputMesh.SubMeshes = new CGVSubMesh[inputMesh.SubMeshes.Length]; + for (int j = 0; j < inputMesh.SubMeshes.Length; j++) + outputMesh.SubMeshes[j] = new CGVSubMesh(inputMesh.SubMeshes[j]); + + outputMeshes[i] = outputMesh; + } + + //if StretchToEnd, prepare stretching data + float smallestVertexDistance; + float stretchingAdditionalDistanceRatio; //How much additional distance should be applied per unit of distance + if (stretchToEnd) + { + //smallestVertexDistance + { + CGSpot firstSpot = spotsArray[0]; + float firstSpotDistance = GetSpotDistance(path, firstSpot.Position, path.Positions.Array, path.Count - 1, path.RelativeDistances.Array, path.Length); + + CGVMesh firstMesh = inputMeshes[firstSpot.Index]; + if (firstMesh.Count == 0) + { + smallestVertexDistance = 0; + } + else + { + SubArray firstMeshSortedVertexIndices = firstMesh.GetCachedSortedVertexIndices(); + smallestVertexDistance = firstSpotDistance + + firstMesh.Vertices.Array[firstMeshSortedVertexIndices.Array[0]].z; + } + + } + + float largestVertexDistance; + { + CGSpot lastSpot = spotsArray[spotsCount - 1]; + float lastSpotDistance = GetSpotDistance(path, lastSpot.Position, path.Positions.Array, path.Count - 1, path.RelativeDistances.Array, path.Length); + + CGVMesh lastMesh = inputMeshes[lastSpot.Index]; + if (lastMesh.Count == 0) + { + largestVertexDistance = 0; + } + else + { + SubArray lastMeshSortedVertexIndices = lastMesh.GetCachedSortedVertexIndices(); + largestVertexDistance = lastSpotDistance + + lastMesh.Vertices.Array[lastMeshSortedVertexIndices.Array[lastMesh.Vertices.Count - 1]].z; + } + } + + float deltaDistances = (largestVertexDistance - smallestVertexDistance); +#if CURVY_SANITY_CHECKS + Assert.IsTrue(deltaDistances >= 0); +#endif + stretchingAdditionalDistanceRatio = deltaDistances > 0 ? (path.Length - largestVertexDistance) / deltaDistances : 0; + } + else + { + smallestVertexDistance = stretchingAdditionalDistanceRatio = Single.NaN; + } + + //OPTIM Replace this action with one that is created at instance creation. This action had to take all the parameters needed, this way you avoid the compiler automatically creating a class for the captured parameters, which will be automatically instantiated at each call + + //the action that does the mesh deformation for a specific spot + Action action = (spot, spotIndex, elementsCount) => + { + //path + int pathPointsCount = path.Count; + Vector3[] pathDirections = path.Directions.Array; + Vector3[] pathNormals = path.Normals.Array; + float[] pathRelativeDistances = path.RelativeDistances.Array; + Vector3[] pathPoints = path.Positions.Array; + + //input mesh + CGVMesh inputMesh = inputMeshes[spot.Index]; + Vector3[] inputMeshVertices = inputMesh.Vertices.Array; + Vector3[] inputMeshNormals = inputMesh.NormalsList.Array; + Vector4[] inputMeshTangents = inputMesh.TangentsList.Array; + int verticesCount = inputMesh.Vertices.Count; + int normalsCount = inputMesh.NormalsList.Count; + int tangentsCount = inputMesh.TangentsList.Count; + int[] sortedInputVertexIndices = inputMesh.GetCachedSortedVertexIndices().Array; + + + //output mesh + CGVMesh outputMesh = outputMeshes[spotIndex]; + Vector3[] outputMeshVertices = outputMesh.Vertices.Array; + Vector3[] outputMeshNormals = outputMesh.NormalsList.Array; + Vector4[] outputMeshTangents = outputMesh.TangentsList.Array; + + outputMesh.Name = inputMesh.Name; + + int maxIndex = pathPointsCount - 1; + float pathLength = path.Length; + float inversePathLength = 1 / pathLength; + + Vector3 spotPosition = spot.Position; + Vector3 spotScale = spot.Scale; + float spotZScale = spot.Scale.z; + float inverseSpotXScale = 1 / spot.Scale.x; + float inverseSpotYScale = 1 / spot.Scale.y; + float inverseSpotZScale = 1 / spot.Scale.z; + float spotPositionX = spotPosition.x; + float spotPositionY = spotPosition.y; + float spotPositionZ = spotPosition.z; + + float spotDistance = GetSpotDistance(path, spotPosition, pathPoints, maxIndex, pathRelativeDistances, pathLength); + + //update index to make the create mesh module use the right mesh from the meshes array + outputSpots.Array[spotIndex] = new CGSpot(spotIndex, spotPosition, Quaternion.identity, spotScale); + + float previousZ = float.NaN; + Vector3 previousPositionOnPathMeshSpace = Vector3.zero; + //The following numbers are computed at each rotation multiplication. I compute them only once and store them + float previousDeltaRotationMultiplication_precomputedNumber_4 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_5 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_6 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_7 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_8 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_9 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_10 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_11 = float.NaN; + float previousDeltaRotationMultiplication_precomputedNumber_12 = float.NaN; + + for (int coupleIndex = 0; coupleIndex < verticesCount; coupleIndex++) + { + int sortedVertexIndex = sortedInputVertexIndices[coupleIndex]; + Vector3 vertexPosition = inputMeshVertices[sortedVertexIndex]; + + Vector2 vertexPositionDelta; + { + vertexPositionDelta.x = vertexPosition.x; + vertexPositionDelta.y = vertexPosition.y; + } + + Vector3 positionOnPathMeshSpace; + //The following numbers are computed at each rotation multiplication. I compute them only once and store them + float formulaNumber_4; + float formulaNumber_5; + float formulaNumber_6; + float formulaNumber_7; + float formulaNumber_8; + float formulaNumber_9; + float formulaNumber_10; + float formulaNumber_11; + float formulaNumber_12; + + float currentZ = vertexPosition.z; + if (coupleIndex > 0 && previousZ == currentZ) + { + positionOnPathMeshSpace = previousPositionOnPathMeshSpace; + + formulaNumber_4 = previousDeltaRotationMultiplication_precomputedNumber_4; + formulaNumber_5 = previousDeltaRotationMultiplication_precomputedNumber_5; + formulaNumber_6 = previousDeltaRotationMultiplication_precomputedNumber_6; + formulaNumber_7 = previousDeltaRotationMultiplication_precomputedNumber_7; + formulaNumber_8 = previousDeltaRotationMultiplication_precomputedNumber_8; + formulaNumber_9 = previousDeltaRotationMultiplication_precomputedNumber_9; + formulaNumber_10 = previousDeltaRotationMultiplication_precomputedNumber_10; + formulaNumber_11 = previousDeltaRotationMultiplication_precomputedNumber_11; + formulaNumber_12 = previousDeltaRotationMultiplication_precomputedNumber_12; + } + else + { + int vertexFIndex; + float vertexFFragment; + { + float vertexF; + { + float vertexDistance = spotDistance + vertexPosition.z * spotZScale; + if (stretchToEnd) + { + vertexDistance += (vertexDistance - smallestVertexDistance) * stretchingAdditionalDistanceRatio; + } + + //inlined version of path.DistanceToF() + vertexF = vertexDistance * inversePathLength; + + if (path.Seamless) + { + while (vertexF < 0) + vertexF++; + while (vertexF > 1) + vertexF--; + } + else + { + if (vertexF < 0) + vertexF = 0; + else if (vertexF > 1) + vertexF = 1; + } + } + + //Inlined version of path.GetFIndex + { + vertexFIndex = CurvyUtility.InterpolationSearch(pathRelativeDistances, pathPointsCount, vertexF); + + if (vertexFIndex == maxIndex) + { + vertexFIndex -= 1; + vertexFFragment = 1; + } + else + vertexFFragment = (vertexF - pathRelativeDistances[vertexFIndex]) / (pathRelativeDistances[vertexFIndex + 1] - pathRelativeDistances[vertexFIndex]); + } + } + + { + int nextIndex = Math.Min(vertexFIndex + 1, maxIndex); + + Vector3 positionOnPath = Vector3.LerpUnclamped(pathPoints[vertexFIndex], pathPoints[nextIndex], vertexFFragment); + + positionOnPathMeshSpace.x = (positionOnPath.x - spotPositionX) * inverseSpotXScale; + positionOnPathMeshSpace.y = (positionOnPath.y - spotPositionY) * inverseSpotYScale; + positionOnPathMeshSpace.z = (positionOnPath.z - spotPositionZ) * inverseSpotZScale; + + Quaternion indexRotation = Quaternion.LookRotation(pathDirections[vertexFIndex], pathNormals[vertexFIndex]); + Quaternion nextIndexRotation = Quaternion.LookRotation(pathDirections[nextIndex], pathNormals[nextIndex]); + Quaternion deltaRotation = (Quaternion.LerpUnclamped(indexRotation, nextIndexRotation, vertexFFragment)); + + float formulaNumber_1 = deltaRotation.x * 2f; + float formulaNumber_2 = deltaRotation.y * 2f; + float formulaNumber_3 = deltaRotation.z * 2f; + formulaNumber_4 = deltaRotation.x * formulaNumber_1; + formulaNumber_5 = deltaRotation.y * formulaNumber_2; + formulaNumber_6 = deltaRotation.z * formulaNumber_3; + formulaNumber_7 = deltaRotation.x * formulaNumber_2; + formulaNumber_8 = deltaRotation.x * formulaNumber_3; + formulaNumber_9 = deltaRotation.y * formulaNumber_3; + formulaNumber_10 = deltaRotation.w * formulaNumber_1; + formulaNumber_11 = deltaRotation.w * formulaNumber_2; + formulaNumber_12 = deltaRotation.w * formulaNumber_3; + + } + + previousZ = currentZ; + previousPositionOnPathMeshSpace = positionOnPathMeshSpace; + previousDeltaRotationMultiplication_precomputedNumber_4 = formulaNumber_4; + previousDeltaRotationMultiplication_precomputedNumber_5 = formulaNumber_5; + previousDeltaRotationMultiplication_precomputedNumber_6 = formulaNumber_6; + previousDeltaRotationMultiplication_precomputedNumber_7 = formulaNumber_7; + previousDeltaRotationMultiplication_precomputedNumber_8 = formulaNumber_8; + previousDeltaRotationMultiplication_precomputedNumber_9 = formulaNumber_9; + previousDeltaRotationMultiplication_precomputedNumber_10 = formulaNumber_10; + previousDeltaRotationMultiplication_precomputedNumber_11 = formulaNumber_11; + previousDeltaRotationMultiplication_precomputedNumber_12 = formulaNumber_12; + + } + + //Optimized version of outputMeshVertex[vertexShitIndex] = (deltaRotation * vertexPositionDelta) + (positionOnPathMeshSpace); + { + Vector3 outputVertex; + { + outputVertex.x = positionOnPathMeshSpace.x + + (1.0f - (formulaNumber_5 + formulaNumber_6)) * vertexPositionDelta.x + + (formulaNumber_7 - formulaNumber_12) * vertexPositionDelta.y; + //deleted the following because vertexPositionDelta.z is zero: + (formulaNumber_8 + formulaNumber_11) * vertexPositionDelta.z; + outputVertex.y = positionOnPathMeshSpace.y + + (formulaNumber_7 + formulaNumber_12) * vertexPositionDelta.x + + (1.0f - (formulaNumber_4 + formulaNumber_6)) * vertexPositionDelta.y; + //deleted the following because vertexPositionDelta.z is zero: + (formulaNumber_9 - formulaNumber_10) * vertexPositionDelta.z; + outputVertex.z = positionOnPathMeshSpace.z + + (formulaNumber_8 - formulaNumber_11) * vertexPositionDelta.x + + (formulaNumber_9 + formulaNumber_10) * vertexPositionDelta.y; + //deleted the following because vertexPositionDelta.z is zero: + (1.0f - (formulaNumber_4 + formulaNumber_5)) * vertexPositionDelta.z; + } + + outputMeshVertices[sortedVertexIndex] = outputVertex; + } + + if (normalsCount > sortedVertexIndex) + { + //Optimized version of outputMeshNormal[vertexShitIndex] = deltaRotation * inputMeshNormal[vertexShitIndex]; + Vector3 outputNormal; + { + Vector3 inputNormal = inputMeshNormals[sortedVertexIndex]; + + outputNormal.x = (1.0f - (formulaNumber_5 + formulaNumber_6)) * inputNormal.x + (formulaNumber_7 - formulaNumber_12) * inputNormal.y + (formulaNumber_8 + formulaNumber_11) * inputNormal.z; + outputNormal.y = (formulaNumber_7 + formulaNumber_12) * inputNormal.x + (1.0f - (formulaNumber_4 + formulaNumber_6)) * inputNormal.y + (formulaNumber_9 - formulaNumber_10) * inputNormal.z; + outputNormal.z = (formulaNumber_8 - formulaNumber_11) * inputNormal.x + (formulaNumber_9 + formulaNumber_10) * inputNormal.y + (1.0f - (formulaNumber_4 + formulaNumber_5)) * inputNormal.z; + } + + outputMeshNormals[sortedVertexIndex] = outputNormal; + } + + + if (tangentsCount > sortedVertexIndex) + { + //Optimized version of outputMeshTangents[vertexShitIndex] = deltaRotation * inputMeshTangents[vertexShitIndex]; + Vector4 outputMeshTangent; + { + + Vector4 inputTangent = inputMeshTangents[sortedVertexIndex]; + + outputMeshTangent.x = (1.0f - (formulaNumber_5 + formulaNumber_6)) * inputTangent.x + (formulaNumber_7 - formulaNumber_12) * inputTangent.y + (formulaNumber_8 + formulaNumber_11) * inputTangent.z; + outputMeshTangent.y = (formulaNumber_7 + formulaNumber_12) * inputTangent.x + (1.0f - (formulaNumber_4 + formulaNumber_6)) * inputTangent.y + (formulaNumber_9 - formulaNumber_10) * inputTangent.z; + outputMeshTangent.z = (formulaNumber_8 - formulaNumber_11) * inputTangent.x + (formulaNumber_9 + formulaNumber_10) * inputTangent.y + (1.0f - (formulaNumber_4 + formulaNumber_5)) * inputTangent.z; + outputMeshTangent.w = inputTangent.w; + } + outputMeshTangents[sortedVertexIndex] = outputMeshTangent; + } + } + }; + + threadPoolWorker.ParallelFor(action, spotsArray, spotsCount); + } + + private static float GetSpotDistance(CGPath path, Vector3 spotPosition, Vector3[] pathPoints, int maxIndex, float[] pathRelativeDistances, float pathLength) + { + float spotDistance; + { + int spotRelativeDistanceIndex; + CurvyUtility.GetNearestPointIndex(spotPosition, pathPoints, path.Positions.Count, out spotRelativeDistanceIndex, out float fragment); + int nextIndex = Math.Min(spotRelativeDistanceIndex + 1, maxIndex); + spotDistance = Mathf.LerpUnclamped(pathRelativeDistances[spotRelativeDistanceIndex], pathRelativeDistances[nextIndex], fragment) * pathLength; + } + return spotDistance; + } + + private static SubArray? ToOneDimensionalArray(List spotsList, out bool arrayIsCopy) + { + SubArray? output; + switch (spotsList.Count) + { + case 1: + if (spotsList[0] != null) + { + output = new SubArray(spotsList[0].Spots.Array, spotsList[0].Spots.Count); + arrayIsCopy = false; + } + else + { + output = null; + arrayIsCopy = false; + } + break; + case 0: + output = null; + arrayIsCopy = false; + break; + default: + { + output = ArrayPools.CGSpot.Allocate(spotsList.Where(s => s != null).Sum(s => s.Count)); + arrayIsCopy = true; + + CGSpot[] array = output.Value.Array; + int destinationIndex = 0; + foreach (CGSpots cgSpots in spotsList) + { + if (cgSpots == null) + continue; + Array.Copy(cgSpots.Spots.Array, 0, array, destinationIndex, cgSpots.Spots.Count); + destinationIndex += cgSpots.Spots.Count; + } + } + + break; + } + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(arrayIsCopy == false || output.HasValue); +#endif + + return output; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DeformMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DeformMesh.cs.meta new file mode 100644 index 00000000..57ebe006 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/DeformMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 484a3e33b7b7161448fd889c96322e73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/GameObjectToMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/GameObjectToMesh.cs new file mode 100644 index 00000000..dde61757 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/GameObjectToMesh.cs @@ -0,0 +1,244 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Rendering; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + /// + /// Creates s from the meshes of GameObjects + /// + [ModuleInfo("Convert/GameObject To Mesh", ModuleName = "GameObject To Mesh", Description = "Converts GameObjects to Volume Meshes")] + [HelpURL(CurvySpline.DOCLINK + "cggameobject2mesh")] + public class GameObjectToMesh : CGModule + { + /// + /// Input Game Objects + /// + [HideInInspector] + [InputSlotInfo(typeof(CGGameObject), Array = true)] + public CGModuleInputSlot InGameObjects = new CGModuleInputSlot(); + + /// + /// Output Volume Meshes + /// + [HideInInspector] + [OutputSlotInfo(typeof(CGVMesh), Array = true)] + public CGModuleOutputSlot OutVMesh = new CGModuleOutputSlot(); + + + #region ### Serialized Fields ### + [SerializeField] + [Tooltip("Whether to include or not the meshes from the input Game Objects' children")] + private bool useChildrenMeshes; + + [SerializeField] + [Tooltip("Forces the output mesh to be centered")] + private bool centerMesh; + + #endregion + + + /// + /// Whether to include or not the meshes from the input Game Objects' children + /// + public bool UseChildrenMeshes + { + get => useChildrenMeshes; + set + { + if (value != useChildrenMeshes) + { + useChildrenMeshes = value; + Dirty = true; + } + } + } + + /// + /// Forces the output mesh to be centered + /// + public bool CenterMesh + { + get => centerMesh; + set + { + if (value != centerMesh) + { + centerMesh = value; + Dirty = true; + } + } + } + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Dirty = true; + } +#endif + + public override void Reset() + { + base.Reset(); + UseChildrenMeshes = false; + CenterMesh = false; + } + + /*! \endcond */ + #endregion + + public override void Refresh() + { + base.Refresh(); + + if (!OutVMesh.IsLinked) + return; + + List gameObjects = InGameObjects.GetAllData(out bool isDataDisposable); + CGVMesh[] data = new CGVMesh[gameObjects.Count]; + int total = 0; + + foreach (CGGameObject cgGameObject in gameObjects) + { + GameObject inputGameObject = cgGameObject.Object; + + if (inputGameObject == null) + continue; + + Mesh mesh; + Material[] materials; + if (UseChildrenMeshes) + { + mesh = CombineMeshFilters(inputGameObject.GetComponentsInChildren(false), + out List materialsList, + inputGameObject.transform.worldToLocalMatrix, + UIMessages); + + materials = materialsList.ToArray(); + } + else + { + MeshFilter meshFilter = inputGameObject.GetComponent(); + + if (meshFilter == null) + { + UIMessages.Add($"GameObject '{inputGameObject.name}' has no Mesh Filter associated to it. If you want to use Mesh Filters in its children, set the 'Use Children Mesh' parameter to true"); + continue; + } + + mesh = meshFilter.sharedMesh; + + //materials; + { + MeshRenderer meshRenderer = meshFilter.gameObject.GetComponent(); + if (meshRenderer == null) + { + UIMessages.Add($"GameObject '{inputGameObject.name}' has a Mesh Filter but no Mesh Renderer associated to it. No material will be assigned to this mesh"); + materials = new Material[0]; + } + else + materials = meshRenderer.sharedMaterials; + } + } + Matrix4x4 trsMatrix = cgGameObject.Matrix; + if (centerMesh) + trsMatrix *= Matrix4x4.Translate(-mesh.bounds.center); + + if (mesh.isReadable == false) + { + UIMessages.Add($"GameObject '{inputGameObject.name}' has a mesh '{mesh.name}' that is not readable. Please set the 'Read/Write Enabled' parameter to true in the mesh model import settings"); + } + + data[total++] = new CGVMesh(mesh, materials, trsMatrix); + } + + System.Array.Resize(ref data, total); + OutVMesh.SetData(data); + + if (isDataDisposable) + { + foreach (CGGameObject cgGameObject in gameObjects) + cgGameObject.Dispose(); + } + } + + /// + /// Takes multiple s and return a mesh containing all their meshes, each one of them being assigned to a subMesh id. + /// + /// mesh filters from which the meshes to combine will be taken + /// The materials for all the subMeshes.Those materials are taken from s associated with the input s. If none, the material wiL be set to null + /// The TRS matrix of the origin point + /// An array in which error messages will be added. Can be null + /// + public static Mesh CombineMeshFilters(MeshFilter[] meshFilters, out List materials, Matrix4x4 originTrs + , [CanBeNull] List errorMessages) + { + List combiners = new List(meshFilters.Length); + materials = new List(meshFilters.Length); + List tempMaterialsList = new List(1); + + int vertexTotalCount = 0; + int vertexTotalCount_submeshDuplicate = 0; + + Mesh combinedMesh = new Mesh(); + + foreach (MeshFilter meshFilter in meshFilters) + { + Mesh mesh = meshFilter.sharedMesh; + + if (mesh.isReadable == false) + { + errorMessages?.Add($"Mesh '{mesh.name}' is not readable. Please set the 'Read/Write Enabled' parameter to true in the mesh model import settings."); + } + + for (int i = 0; i < mesh.subMeshCount; i++) + { + combiners.Add(new CombineInstance + { + transform = originTrs * meshFilter.transform.localToWorldMatrix, + mesh = mesh, + subMeshIndex = i + }); + vertexTotalCount_submeshDuplicate += mesh.vertexCount; + } + vertexTotalCount += mesh.vertexCount; + + + MeshRenderer meshRenderer = meshFilter.gameObject.GetComponent(); + if (meshRenderer == null) + { + errorMessages?.Add($"GameObject '{meshFilter.gameObject.name}' has a Mesh Filter but no Mesh Renderer associated to it. No material will be assigned to this mesh"); + for (int k = 0; k < mesh.subMeshCount; k++) + materials.Add(null); + } + else + { + meshRenderer.GetSharedMaterials(tempMaterialsList); + materials.AddRange(tempMaterialsList); + } + } + + //it seems there is a bug in CombineMeshes where it counts the vertex count for each submesh as equal to the whole mesh (in some circumstances, happened to me only at scene opening, go figure). So before the call to CombineMeshes, I set indexFormat accordingly, then after the call I set it to according to the real value of vertexTotalCount + combinedMesh.indexFormat = vertexTotalCount_submeshDuplicate >= UInt16.MaxValue ? IndexFormat.UInt32 : IndexFormat.UInt16; + combinedMesh.CombineMeshes(combiners.ToArray(), false); + IndexFormat realIndexFormat = vertexTotalCount >= UInt16.MaxValue ? IndexFormat.UInt32 : IndexFormat.UInt16; + if (combinedMesh.indexFormat != realIndexFormat) + combinedMesh.indexFormat = realIndexFormat; + + return combinedMesh; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/GameObjectToMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/GameObjectToMesh.cs.meta new file mode 100644 index 00000000..fee0a7e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/GameObjectToMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7773b5e28f4f8ca48a528baec6332880 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputGameObject.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputGameObject.cs new file mode 100644 index 00000000..603bd6cc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputGameObject.cs @@ -0,0 +1,114 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using System.Collections.Generic; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Input/GameObjects", ModuleName = "Input GameObjects", Description = "")] + [HelpURL(CurvySpline.DOCLINK + "cginputgameobject")] + public class InputGameObject : CGModule + { + + [HideInInspector] + [OutputSlotInfo(typeof(CGGameObject), Array = true)] + public CGModuleOutputSlot OutGameObject = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [ArrayEx] + [SerializeField] + private List m_GameObjects = new List(); + + #endregion + + #region ### Public Properties ### + + public List GameObjects + { + get { return m_GameObjects; } + } + + public bool SupportsIPE + { + get { return false; } + } + + #endregion + + #region ### Private Fields & Properties ### + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Dirty = true; + } +#endif + + public override void Reset() + { + base.Reset(); + GameObjects.Clear(); + Dirty = true; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + //OutVMesh + if (OutGameObject.IsLinked) + { + CGGameObject[] data = new CGGameObject[GameObjects.Count]; + int total = 0; + for (int i = 0; i < GameObjects.Count; i++) + { + if (GameObjects[i].Object != null) + data[total++] = new CGGameObject(GameObjects[i]); + } + System.Array.Resize(ref data, total); + OutGameObject.SetData(data); + } + +#if UNITY_EDITOR + if (GameObjects.Exists(g => g.Object == null)) + UIMessages.Add("Missing Game Object input"); +#endif + } + + public override void OnTemplateCreated() + { + base.OnTemplateCreated(); + GameObjects.Clear(); + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + + /*! \endcond */ + #endregion + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputGameObject.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputGameObject.cs.meta new file mode 100644 index 00000000..74395505 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputGameObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a8c91f1c72cdd8f4b99ab43636b1db6b +timeCreated: 1440678509 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputMesh.cs new file mode 100644 index 00000000..ba53ca6d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputMesh.cs @@ -0,0 +1,123 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using System.Collections.Generic; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Input/Meshes", ModuleName = "Input Meshes", Description = "Create VMeshes")] + [HelpURL(CurvySpline.DOCLINK + "cginputmesh")] + public class InputMesh : CGModule, IExternalInput + { + + [HideInInspector] + [OutputSlotInfo(typeof(CGVMesh), Array = true)] + public CGModuleOutputSlot OutVMesh = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [SerializeField] + [ArrayEx] + private List m_Meshes = new List(new CGMeshProperties[] { new CGMeshProperties() }); + + #endregion + + #region ### Public Properties ### + + public List Meshes + { + get { return m_Meshes; } + } + + public bool SupportsIPE + { + get { return false; } + } + + #endregion + + #region ### Private Fields & Properties ### + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + foreach (CGMeshProperties m in Meshes) + m.OnValidate(); + Dirty = true; + } +#endif + public override void Reset() + { + base.Reset(); + Meshes.Clear(); + Dirty = true; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + //OutVMesh + if (OutVMesh.IsLinked) + { + CGVMesh[] data = new CGVMesh[Meshes.Count]; + int total = 0; + for (int i = 0; i < Meshes.Count; i++) + { + Mesh mesh = Meshes[i].Mesh; + if (mesh) + { + if (mesh.isReadable == false) + { + UIMessages.Add($"Input mesh '{mesh.name}' is not readable. Please set the 'Read/Write Enabled' parameter to true in the mesh model import settings"); + } + data[total++] = new CGVMesh(Meshes[i]); + } + } + System.Array.Resize(ref data, total); + OutVMesh.SetData(data); + } + +#if UNITY_EDITOR + if (Meshes.Exists(m => m.Mesh == null)) + UIMessages.Add("Missing Mesh input"); +#endif + } + + + + public override void OnTemplateCreated() + { + base.OnTemplateCreated(); + Meshes.Clear(); + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + + /*! \endcond */ + #endregion + + + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputMesh.cs.meta new file mode 100644 index 00000000..d6902344 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputMesh.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4dcd8018d6d8ecf4f876101d6e13a763 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplinePath.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplinePath.cs new file mode 100644 index 00000000..82287770 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplinePath.cs @@ -0,0 +1,110 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.DevTools; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Input/Spline Path", ModuleName = "Input Spline Path", Description = "Spline Path")] + [HelpURL(CurvySpline.DOCLINK + "cginputsplinepath")] +#pragma warning disable 618 + public class InputSplinePath : SplineInputModuleBase, IExternalInput, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [OutputSlotInfo(typeof(CGPath))] + public CGModuleOutputSlot Path = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [Tab("General", Sort = 0)] + [SerializeField] + [CGResourceManager("Spline")] + [FieldCondition(nameof(m_Spline), null, false, ActionAttribute.ActionEnum.ShowWarning, "Missing Spline input")] + private CurvySpline m_Spline; + + #endregion + + #region ### Public Properties ### + + public CurvySpline Spline + { + get { return m_Spline; } + set + { + if (m_Spline != value) + { + m_Spline = value; + OnSplineAssigned(); + ValidateStartAndEndCps(); + } + Dirty = true; + } + } + + public bool SupportsIPE { get { return false; } } + + #endregion + + #region ### IOnRequestModule ### + + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGDataRequestRasterization raster = GetRequestParameter(ref requests); + CGDataRequestMetaCGOptions options = GetRequestParameter(ref requests); + if (options) + UIMessages.Add("Meta CG Options are not supported for Path rasterization. They are supported only for Shape rasterization."); + + /*TODO the logic related to the whole OnSlotDataRequest and the CGModuleInputSlot.GetData(params CGDataRequestParameter[] requests) is flawed, and here are the issues I see: + Some modules need a CGDataRequestParameter[] as a parameter to properly work. This module is one of them. As you can see bellow, if such requeset array is null or empty, the method returns null. This raises some issues: + - the code doesn't guide a person that wants to create a new module to help him know if he needs to send a CGDataRequestParameter[] to it's input slots or not. + - the code silently returns null if the necessary data if the required CGDataRequestParameter[] is not there + - slots who need CGDataRequestParameter[] and those who don't, even if they output the same CGData, can't connect to the same modules. For example, BuildVolumeSpots needs a rasterized CGPath (one that doesn't need CGDataRequestParameter[]) as an input, while BuildVolumeMesh nees a non rasterized CGPath as an input. So two different behaviors, but the same needed data. The user experience is confusing when he needs to connect such splines. For now there are different colors for slots names in those modules, but this isn't very clear to the user, and the code deciding which color to use use different conditions that the one deciding which modules can connect. So a change in one fo them needs always to be mirrored with a change in the othe one. This is very error prone. + So the logic for connecting mdules should be hardly tied with the logic of sending the CGDataRequestParameter[] params, and the logic of UI display. This needs some work that I hope will be done sometime soon. + */ + if (!raster || raster.RasterizedRelativeLength == 0) + return null; + + CGData data = GetSplineData(Spline, true, raster, options); + + return new CGData[1] { data }; + } + + #endregion + + #region ### Public Methods ### + + //BUG? why is this absent from InputSplineShape? + public override void OnTemplateCreated() + { + base.OnTemplateCreated(); + if (Spline && !IsManagedResource(Spline)) + { + Spline = null; + } + } + + #endregion + + #region ### Protected members ### + + protected override CurvySpline InputSpline + { + get { return Spline; } + set { Spline = value; } + + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplinePath.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplinePath.cs.meta new file mode 100644 index 00000000..93506404 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplinePath.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1c5cbffa9299884494795e0d5c9e852 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplineShape.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplineShape.cs new file mode 100644 index 00000000..1069800b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplineShape.cs @@ -0,0 +1,132 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Shapes; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + + [ModuleInfo("Input/Spline Shape", ModuleName = "Input Spline Shape", Description = "Spline Shape")] + [HelpURL(CurvySpline.DOCLINK + "cginputsplineshape")] +#pragma warning disable 618 + public class InputSplineShape : SplineInputModuleBase, IExternalInput, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [OutputSlotInfo(typeof(CGShape))] + public CGModuleOutputSlot OutShape = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [Tab("General", Sort = 0)] + [SerializeField, CGResourceManager("Shape")] + [FieldCondition(nameof(m_Shape), null, false, ActionAttribute.ActionEnum.ShowWarning, "Missing Shape input")] + private CurvySpline m_Shape; + + #endregion + + #region ### Public Properties ### + + public CurvySpline Shape + { + get { return m_Shape; } + set + { + if (m_Shape != value) + { + m_Shape = value; + OnSplineAssigned(); + ValidateStartAndEndCps(); + } + Dirty = true; + } + } + + public bool SupportsIPE { get { return FreeForm; } } + public bool FreeForm + { + get + { + return (Shape != null && Shape.GetComponent() == null); + } + set + { + if (Shape != null) + { + CurvyShape sh = Shape.GetComponent(); + if (value && sh != null) + sh.Delete(); + else if (!value && sh == null) + Shape.gameObject.AddComponent(); + } + + } + } + + #endregion + + + #region ### IOnRequestPath ### + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGDataRequestRasterization raster = GetRequestParameter(ref requests); + CGDataRequestMetaCGOptions options = GetRequestParameter(ref requests); + + if (!raster || raster.RasterizedRelativeLength == 0) + return null; + CGData data = GetSplineData(Shape, false, raster, options); + + return new CGData[1] { data }; + + } + + #endregion + + #region ### Public Methods ### + + public T SetManagedShape() where T : CurvyShape2D + { + if (!Shape) + Shape = (CurvySpline)AddManagedResource("Shape"); + + CurvyShape sh = Shape.GetComponent(); + + if (sh != null) + sh.Delete(); + return Shape.gameObject.AddComponent(); + } + + public void RemoveManagedShape() + { + if (Shape) + DeleteManagedResource("Shape", Shape); + } + + #endregion + + #region ### Protected members ### + + protected override CurvySpline InputSpline + { + get { return Shape; } + set { Shape = value; } + } + + protected override void OnSplineAssigned() + { + base.OnSplineAssigned(); + if (Shape) + Shape.RestrictTo2D = true; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplineShape.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplineShape.cs.meta new file mode 100644 index 00000000..16f07450 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSplineShape.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e981787696c73b041a1adb21ea65264a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSpots.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSpots.cs new file mode 100644 index 00000000..ad251445 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSpots.cs @@ -0,0 +1,98 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Input/Spots", ModuleName = "Input Spots", Description = "Defines an array of placement spots")] + [HelpURL(CurvySpline.DOCLINK + "cginputspots")] + public class InputSpots : CGModule + { + + [HideInInspector] + [OutputSlotInfo(typeof(CGSpots))] + public CGModuleOutputSlot OutSpots = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [ArrayEx] + [SerializeField] + private List m_Spots = new List(); + + #endregion + + #region ### Public Properties ### + + public List Spots + { + get { return m_Spots; } + set + { + if (m_Spots != value) + m_Spots = value; + Dirty = true; + } + } + + #endregion + + #region ### Private Fields & Properties ### + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + } +#endif + + public override void Reset() + { + base.Reset(); + Spots.Clear(); + Dirty = true; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + + if (OutSpots.IsLinked) + { + OutSpots.SetData(new CGSpots(Spots)); + } + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + + /*! \endcond */ + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSpots.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSpots.cs.meta new file mode 100644 index 00000000..d4250bc6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputSpots.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2fc8ee21afb5ef4e9ce554d0df97530 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputTransformSpots.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputTransformSpots.cs new file mode 100644 index 00000000..a5a11517 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputTransformSpots.cs @@ -0,0 +1,201 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.DevTools; +#if UNITY_EDITOR +using UnityEditor; +#endif + + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Input/Transform Spots", ModuleName = "Input Transform Spots", Description = "Defines an array of placement spots taken from existing Transforms")] + [HelpURL(CurvySpline.DOCLINK + "cginputtransformspots")] + public class InputTransformSpots : CGModule + { + [HideInInspector] + [OutputSlotInfo(typeof(CGSpots))] + public CGModuleOutputSlot OutSpots = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [ArrayEx] + [SerializeField] + private List transformSpots = new List(); + + #endregion + + #region ### Public Properties ### + + /// + /// The input + /// + public List TransformSpots + { + get { return transformSpots; } + set + { + if (transformSpots != value) + transformSpots = value; + Dirty = true; + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; +#if UNITY_EDITOR + EditorApplication.update += EditorUpdate; +#endif + } + + protected override void OnDisable() + { + base.OnDisable(); +#if UNITY_EDITOR + EditorApplication.update -= EditorUpdate; +#endif + } + + public override void Reset() + { + base.Reset(); + TransformSpots.Clear(); + Dirty = true; + } + + private void Update() + { + if (Dirty == false && OutSpots.Data != null && OutSpots.Data.Length != 0) + { + foreach (var keyValuePair in outputToInputDictionary) + { + CGSpot cgSpot = keyValuePair.Key; + TransformSpot transformSpot = keyValuePair.Value; + if (cgSpot.Position != transformSpot.Transform.position) + { + Dirty = true; + return; + } + } + } + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + + if (OutSpots.IsLinked) + { + outputToInputDictionary.Clear(); + + List spots = TransformSpots.Where(s => s.Transform != null).Select(s => + { + CGSpot cgSpot = new CGSpot(s.Index, s.Transform.position, s.Transform.rotation, s.Transform.lossyScale); + outputToInputDictionary[cgSpot] = s; + return cgSpot; + }).ToList(); + + OutSpots.SetData(new CGSpots(spots)); + } + +#if UNITY_EDITOR + if (TransformSpots.Exists(s => s.Transform == null)) + UIMessages.Add("Missing Transform input"); +#endif + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + private readonly Dictionary outputToInputDictionary = new Dictionary(); + +#if UNITY_EDITOR + private void EditorUpdate() + { + if (Application.isPlaying == false) + Update(); + } + +#endif + /*! \endcond */ + #endregion + + /// + /// Similar to , but instead of having a constant position/rotation/scale, it is taken from a Transform + /// + [System.Serializable] + public struct TransformSpot : IEquatable + { + [SerializeField] +#pragma warning disable 649 //field is modified through InputTransformSpotsEditor, through Unity's serialization API + private int index; +#pragma warning restore 649 + + [SerializeField] +#pragma warning disable 649 //field is modified through InputTransformSpotsEditor, through Unity's serialization API + private Transform transform; +#pragma warning restore 649 + + /// + /// The index of the object to place + /// + public int Index => index; + + /// + /// The Transform from which the spot's position/rotation/scale should be taken + /// + public Transform Transform => transform; + + public bool Equals(TransformSpot other) + { + return index == other.index && Equals(transform, other.transform); + } + + public override bool Equals(object obj) + { + return obj is TransformSpot other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + return (index * 397) ^ (transform != null ? transform.GetHashCode() : 0); + } + } + + public static bool operator ==(TransformSpot left, TransformSpot right) + { + return left.Equals(right); + } + + public static bool operator !=(TransformSpot left, TransformSpot right) + { + return !left.Equals(right); + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputTransformSpots.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputTransformSpots.cs.meta new file mode 100644 index 00000000..5119bd96 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/InputTransformSpots.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1765478dede28e4c87d689860b74212 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixPaths.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixPaths.cs new file mode 100644 index 00000000..07d9520c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixPaths.cs @@ -0,0 +1,183 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.DevTools; +using JetBrains.Annotations; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Modifier/Mix Paths", ModuleName = "Mix Paths", Description = "Interpolates between two paths")] + [HelpURL(CurvySpline.DOCLINK + "cgmixpaths")] +#pragma warning disable 618 + public class ModifierMixPaths : CGModule, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path A")] + public CGModuleInputSlot InPathA = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path B")] + public CGModuleInputSlot InPathB = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGPath))] + public CGModuleOutputSlot OutPath = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [SerializeField, RangeEx(-1, 1, Tooltip = "Mix between the paths. Values between -1 for Path A and 1 for Path B")] + private float m_Mix; + + #endregion + + #region ### Public Properties ### + + /// + /// Defines how the result is interpolated. Values between -1 for Path A and 1 for Path B + /// + public float Mix + { + get { return m_Mix; } + set + { + if (m_Mix != value) + m_Mix = value; + Dirty = true; + } + } + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InPathA.SourceSlot().PathProvider.PathIsClosed && + InPathB.SourceSlot().PathProvider.PathIsClosed : false; + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + Properties.LabelWidth = 50; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Mix = m_Mix; + } +#endif + public override void Reset() + { + base.Reset(); + Mix = 0; + } + + /*! \endcond */ + #endregion + + #region ### IOnRequestProcessing ### + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + + CGDataRequestRasterization raster = GetRequestParameter(ref requests); + if (!raster) + return null; + + CGPath DataA = InPathA.GetData(out bool isADisposable, requests); + CGPath DataB = InPathB.GetData(out bool isBDisposable, requests); + + CGPath data = MixPath(DataA, DataB, Mix, UIMessages); + + if (isADisposable) + DataA.Dispose(); + if (isBDisposable) + DataB.Dispose(); + + return new CGData[1] { data }; + } + #endregion + + #region ### Public Static Methods ### + + /// + /// Returns the mixed path + /// + /// + /// + /// A value between -1 and 1. -1 will select the path with the most points. 1 will select the other + /// Is filled with warnings raised by the mixing logic + /// The mixed path + public static CGPath MixPath(CGPath pathA, CGPath pathB, float mix, [NotNull] List warningsContainer) + { + if (pathA == null) + return pathB; + + if (pathB == null) + return pathA; + + int pathVertexCount = Mathf.Max(pathA.Count, pathB.Count); + + CGPath data = new CGPath(); + ModifierMixShapes.InterpolateShape(data, pathA, pathB, mix, warningsContainer); + + float interpolationTime = (mix + 1) * 0.5f; + Assert.IsTrue(interpolationTime >= 0); + Assert.IsTrue(interpolationTime <= 1); + + //BUG: Directions should be recomputed based on positions, and not interpolated. This is already done in the Recalculate() method called inside InterpolateShape() (line above), but Recalculate has a bug that makes it not compute Direction[0], so I kept the code bellow to recompute directions. + //OPTIM avoid double computation of directions + SubArray directions = ArrayPools.Vector3.Allocate(pathVertexCount); + if (pathA.Count == pathVertexCount) + for (int i = 0; i < pathVertexCount; i++) + { + Vector3 bDirection; + { + float frag; + int idx = pathB.GetFIndex(pathA.RelativeDistances.Array[i], out frag); + bDirection = Vector3.SlerpUnclamped(pathB.Directions.Array[idx], pathB.Directions.Array[idx + 1], frag); + } + + directions.Array[i] = Vector3.SlerpUnclamped(pathA.Directions.Array[i], bDirection, interpolationTime); + + } + else + for (int i = 0; i < pathVertexCount; i++) + { + Vector3 aDirection; + { + float frag; + int idx = pathA.GetFIndex(pathB.RelativeDistances.Array[i], out frag); + aDirection = Vector3.SlerpUnclamped(pathA.Directions.Array[idx], pathA.Directions.Array[idx + 1], frag); + } + + directions.Array[i] = Vector3.SlerpUnclamped(aDirection, pathB.Directions.Array[i], interpolationTime); + } + + data.Directions = directions; + return data; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixPaths.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixPaths.cs.meta new file mode 100644 index 00000000..008fc173 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixPaths.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5b25376c289be4147bed2f4e7a7ec677 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixShapes.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixShapes.cs new file mode 100644 index 00000000..35a24f3a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixShapes.cs @@ -0,0 +1,250 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.DevTools; +using JetBrains.Annotations; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Modifier/Mix Shapes", ModuleName = "Mix Shapes", Description = "Interpolates between two shapes")] + [HelpURL(CurvySpline.DOCLINK + "cgmixshapes")] +#pragma warning disable 618 + public class ModifierMixShapes : CGModule, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [InputSlotInfo(typeof(CGShape), Name = "Shape A")] + public CGModuleInputSlot InShapeA = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGShape), Name = "Shape B")] + public CGModuleInputSlot InShapeB = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGShape))] + public CGModuleOutputSlot OutShape = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + + [SerializeField, RangeEx(-1, 1, Tooltip = "Mix between the shapes. Values between -1 for Shape A and 1 for Shape B")] + private float m_Mix; + + #endregion + + #region ### Public Properties ### + + /// + /// Defines how the result is interpolated. Values between -1 for Shape A and 1 for Shape B + /// + public float Mix + { + get { return m_Mix; } + set + { + if (m_Mix != value) + m_Mix = value; + Dirty = true; + } + } + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InShapeA.SourceSlot().PathProvider.PathIsClosed && + InShapeB.SourceSlot().PathProvider.PathIsClosed : false; + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + Properties.LabelWidth = 50; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Mix = m_Mix; + } +#endif + + public override void Reset() + { + base.Reset(); + Mix = 0; + } + + /*! \endcond */ + #endregion + + #region ### IOnRequestProcessing ### + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGDataRequestRasterization raster = GetRequestParameter(ref requests); + if (!raster) + return null; + + CGShape DataA = InShapeA.GetData(out bool isADisposable, requests); + CGShape DataB = InShapeB.GetData(out bool isBDisposable, requests); + CGShape data = MixShapes(DataA, DataB, Mix, UIMessages); + + if(isADisposable) + DataA.Dispose(); + if(isBDisposable) + DataB.Dispose(); + + return new CGData[1] { data }; + } + + #endregion + + #region ### Public Methods ### + + /// + /// Returns the mixed shape + /// + /// + /// + /// A value between -1 and 1. -1 will select the shape with the most points. 1 will select the other + /// Is filled with warnings raised by the mixing logic + /// If true, warningsContainer will not be filled with warnings + /// The mixed shape + public static CGShape MixShapes(CGShape shapeA, CGShape shapeB, float mix, [NotNull] List warningsContainer, bool ignoreWarnings = false) + { + if (shapeA == null) + return shapeB; + + if (shapeB == null) + return shapeA; + + CGShape data = new CGShape(); + InterpolateShape(data, shapeA, shapeB, mix, warningsContainer, ignoreWarnings); + return data; + } + + /// + /// Returns the mixed shape + /// + /// A shape which will be filled with the data of the mixed shape + /// A value between -1 and 1. -1 will select shape A. 1 will select shape B + /// One of the two interpolated shapes + /// One of the two interpolated shapes + /// Is filled with warnings raised by the mixing logic + /// If true, warningsContainer will not be filled with warnings + /// The mixed shape + public static void InterpolateShape([NotNull] CGShape resultShape, CGShape shapeA, CGShape shapeB, float mix, [NotNull] List warningsContainer, bool ignoreWarnings = false) + { + float interpolationTime = (mix + 1) * 0.5f; +#if CURVY_SANITY_CHECKS + Assert.IsTrue(interpolationTime >= 0); + Assert.IsTrue(interpolationTime <= 1); +#endif + int shapeVertexCount = Mathf.Max(shapeA.Count, shapeB.Count); + CGShape shapeWithMostVertices = shapeA.Count == shapeVertexCount + ? shapeA + : shapeB; + + SubArray positions = ArrayPools.Vector3.Allocate(shapeVertexCount); + SubArray normals = ArrayPools.Vector3.Allocate(shapeVertexCount); + + var shapeBPositionsList = shapeB.Positions.Array; + var shapeAPositionsList = shapeA.Positions.Array; + Vector3[] positionsArray = positions.Array; + var shapeANormalsList = shapeA.Normals.Array; + var shapeBNormalsList = shapeB.Normals.Array; + + if (shapeWithMostVertices == shapeA) + for (int i = 0; i < shapeVertexCount; i++) + { + float frag; + int idx = shapeB.GetFIndex(shapeA.RelativeDistances.Array[i], out frag); + + Vector3 bPosition; + { + bPosition.x = shapeBPositionsList[idx].x + (shapeBPositionsList[idx + 1].x - shapeBPositionsList[idx].x) * frag; + bPosition.y = shapeBPositionsList[idx].y + (shapeBPositionsList[idx + 1].y - shapeBPositionsList[idx].y) * frag; + bPosition.z = shapeBPositionsList[idx].z + (shapeBPositionsList[idx + 1].z - shapeBPositionsList[idx].z) * frag; + } + + positionsArray[i].x = shapeAPositionsList[i].x + (bPosition.x - shapeAPositionsList[i].x) * interpolationTime; + positionsArray[i].y = shapeAPositionsList[i].y + (bPosition.y - shapeAPositionsList[i].y) * interpolationTime; + positionsArray[i].z = shapeAPositionsList[i].z + (bPosition.z - shapeAPositionsList[i].z) * interpolationTime; + + + Vector3 bNormal = Vector3.SlerpUnclamped(shapeBNormalsList[idx], shapeBNormalsList[idx + 1], frag); + normals.Array[i] = Vector3.SlerpUnclamped(shapeANormalsList[i], bNormal, interpolationTime); + } + else + for (int i = 0; i < shapeVertexCount; i++) + { + float frag; + int idx = shapeA.GetFIndex(shapeB.RelativeDistances.Array[i], out frag); + + Vector3 aPosition; + { + aPosition.x = shapeAPositionsList[idx].x + (shapeAPositionsList[idx + 1].x - shapeAPositionsList[idx].x) * frag; + aPosition.y = shapeAPositionsList[idx].y + (shapeAPositionsList[idx + 1].y - shapeAPositionsList[idx].y) * frag; + aPosition.z = shapeAPositionsList[idx].z + (shapeAPositionsList[idx + 1].z - shapeAPositionsList[idx].z) * frag; + } + + positionsArray[i].x = aPosition.x + (shapeBPositionsList[i].x - aPosition.x) * interpolationTime; + positionsArray[i].y = aPosition.y + (shapeBPositionsList[i].y - aPosition.y) * interpolationTime; + positionsArray[i].z = aPosition.z + (shapeBPositionsList[i].z - aPosition.z) * interpolationTime; + + Vector3 aNormal = Vector3.SlerpUnclamped(shapeANormalsList[idx], shapeANormalsList[idx + 1], frag); + normals.Array[i] = Vector3.SlerpUnclamped(aNormal, shapeBNormalsList[i], interpolationTime); + } + + resultShape.Positions = positions; + + resultShape.RelativeDistances = ArrayPools.Single.Allocate(shapeVertexCount); + // sets Length and F + resultShape.Recalculate(); + + /*TODO BUG the following 4 properties are tied to the shape geometry, and should be recomputed based on the mixed mesh's geometry instead of using an approximate result. + This will be specially visible when shape A and shape B have very different values of those properties, such as one of them having different material groups while the other having only one. + 3 of the 4 properties use shapeWithMostVertices. The issue with this is that shapeWithMostVertices can switch between the shape A and shape B depending on the shape's rasterization properties. To test/reproduce, set a square and circle as shapes, and set their rasterization to Optimize = true and Angle Threshold = 120. In those conditions, the square has more vertices. Then set the threshold to 10. In those conditions the circle has more vertices + */ + + resultShape.Normals = normals; + resultShape.CustomValues = ArrayPools.Single.Clone(shapeWithMostVertices.CustomValues); + resultShape.SourceRelativeDistances = ArrayPools.Single.Clone(shapeWithMostVertices.SourceRelativeDistances); + resultShape.MaterialGroups = shapeWithMostVertices.MaterialGroups.Select(g => g.Clone()).ToList(); + + if (ignoreWarnings == false) + { + if (shapeA.Closed != shapeB.Closed) + warningsContainer.Add("Mixing inputs with different Closed values is not supported"); + if (shapeA.Seamless != shapeB.Seamless) + warningsContainer.Add("Mixing inputs with different Seamless values is not supported"); + if (shapeA.SourceIsManaged != shapeB.SourceIsManaged) + warningsContainer.Add("Mixing inputs with different SourceIsManaged values is not supported"); + } + resultShape.Closed = shapeA.Closed; + resultShape.Seamless = shapeA.Seamless; + resultShape.SourceIsManaged = shapeA.SourceIsManaged; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixShapes.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixShapes.cs.meta new file mode 100644 index 00000000..a414064f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierMixShapes.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9aaee9b270c0704a913452b9479f14b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierPathRelativeTranslation.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierPathRelativeTranslation.cs new file mode 100644 index 00000000..d6a3444e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierPathRelativeTranslation.cs @@ -0,0 +1,138 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + /// + /// Translates a path relatively to it's direction, instead of relatively to the world as does the TRS Path module. + /// + [ModuleInfo("Modifier/Path Relative Translation", ModuleName = "Path Relative Translation", Description = "Translates a path relatively to it's direction, instead of relatively to the world as does the TRS Path module.")] + [HelpURL(CurvySpline.DOCLINK + "cgpathrelativetranslation")] +#pragma warning disable 618 + public class ModifierPathRelativeTranslation : CGModule, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path A", ModifiesData = true)] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGPath))] + public CGModuleOutputSlot OutPath = new CGModuleOutputSlot(); + + + #region ### Serialized Fields ### + + /// + /// The translation amount + /// + [SerializeField] + [Tooltip("The translation amount")] + private float lateralTranslation; + #endregion + + #region ### Public Properties ### + + /// + /// The translation amount + /// + public float LateralTranslation + { + get { return lateralTranslation; } + set + { + if (lateralTranslation != value) + { + lateralTranslation = value; + Dirty = true; + } + } + } + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InPath.SourceSlot().PathProvider.PathIsClosed : false; + } + } + + #endregion + + #region ### IOnRequestProcessing ### + + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGData[] result; + if (requestedSlot == OutPath) + { + CGPath data = InPath.GetData(out bool isDisposable, requests); +#if CURVY_SANITY_CHECKS + // I forgot why I added this assertion, but I trust my past self + Assert.IsTrue(data == null || isDisposable); +#endif + if (data) + { + Vector3[] positions = data.Positions.Array; + + for (int i = 0; i < data.Count; i++) + { + Vector3 translation = Vector3.Cross(data.Normals.Array[i], data.Directions.Array[i]) * lateralTranslation; + positions[i].x = positions[i].x + translation.x; + positions[i].y = positions[i].y + translation.y; + positions[i].z = positions[i].z + translation.z; + } + + data.Recalculate(); + } + + //TODO after fixing Directions computation in ConformPath, do the same here + + result = new CGData[1] { data }; + } + else + result = null; + + return result; + } + + #endregion + + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + Properties.LabelWidth = 165; + } + + public override void Reset() + { + base.Reset(); + LateralTranslation = 0; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + LateralTranslation = lateralTranslation; + Dirty = true; + } +#endif + + /*! \endcond */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierPathRelativeTranslation.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierPathRelativeTranslation.cs.meta new file mode 100644 index 00000000..be2f674a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierPathRelativeTranslation.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 52d51ba992d55654699202ddc813ee25 +timeCreated: 1542637007 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSMesh.cs new file mode 100644 index 00000000..dadebc31 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSMesh.cs @@ -0,0 +1,56 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections.Generic; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Modifier/TRS Mesh", ModuleName = "TRS Mesh", Description = "Transform,Rotate,Scale a VMesh")] + [HelpURL(CurvySpline.DOCLINK + "cgtrsmesh")] + public class ModifierTRSMesh : TRSModuleBase + { + [HideInInspector] + [InputSlotInfo(typeof(CGVMesh), Array = true, ModifiesData = true)] + public CGModuleInputSlot InVMesh = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGVMesh), Array = true)] + public CGModuleOutputSlot OutVMesh = new CGModuleOutputSlot(); + + + + #region ### Public Methods ### + + public override void Refresh() + { + base.Refresh(); + if (OutVMesh.IsLinked) + { + List vMesh = InVMesh.GetAllData(out bool isDisposable); + Matrix4x4 mat = Matrix; + for (int i = 0; i < vMesh.Count; i++) + vMesh[i].TRS(mat); +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isDisposable); +#endif + OutVMesh.SetData(vMesh); + } + + } + + #endregion + + + + + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSMesh.cs.meta new file mode 100644 index 00000000..d8bbf91a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSMesh.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 88fffc7e9dfb6294185e9c3289854b61 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSPath.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSPath.cs new file mode 100644 index 00000000..db9ff7af --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSPath.cs @@ -0,0 +1,78 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Modifier/TRS Path", ModuleName = "TRS Path", Description = "Transform,Rotate,Scale a Path")] + [HelpURL(CurvySpline.DOCLINK + "cgtrspath")] +#pragma warning disable 618 + public class ModifierTRSPath : TRSModuleBase, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [InputSlotInfo(typeof(CGPath), Name = "Path A", ModifiesData = true)] + public CGModuleInputSlot InPath = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGPath))] + public CGModuleOutputSlot OutPath = new CGModuleOutputSlot(); + + + + #region ### Public Properties ### + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InPath.SourceSlot().PathProvider.PathIsClosed : false; + } + } + + #endregion + + + #region ### IOnRequestProcessing ### + + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGData[] result; + if (requestedSlot == OutPath) + { + CGPath data = InPath.GetData(out bool isDisposable, requests); +#if CURVY_SANITY_CHECKS + // I forgot why I added this assertion, but I trust my past self + Assert.IsTrue(data == null || isDisposable); +#endif + + if (data) + { + var scaleLessMatrix = ApplyTrsOnShape(data); + for (int i = 0; i < data.Count; i++) + data.Directions.Array[i] = scaleLessMatrix.MultiplyVector(data.Directions.Array[i]); + } + result = new CGData[1] { data }; + } + else + result = null; + + return result; + } + } + + #endregion + + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSPath.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSPath.cs.meta new file mode 100644 index 00000000..632783a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSPath.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34604050e8b02cd4ab1b388c022ab2d2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSShape.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSShape.cs new file mode 100644 index 00000000..e1ba5599 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSShape.cs @@ -0,0 +1,71 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Modifier/TRS Shape", ModuleName = "TRS Shape", Description = "Transform,Rotate,Scale a Shape")] + [HelpURL(CurvySpline.DOCLINK + "cgtrsshape")] +#pragma warning disable 618 + public class ModifierTRSShape : TRSModuleBase, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [InputSlotInfo(typeof(CGShape), Name = "Shape A", ModifiesData = true)] + public CGModuleInputSlot InShape = new CGModuleInputSlot(); + + [HideInInspector] + [OutputSlotInfo(typeof(CGShape))] + public CGModuleOutputSlot OutShape = new CGModuleOutputSlot(); + + #region ### Public Properties ### + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InShape.SourceSlot().PathProvider.PathIsClosed : false; + } + } + + #endregion + + #region ### IOnRequestProcessing ### + + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGData[] result; + if (requestedSlot == OutShape) + { + CGShape data = InShape.GetData(out bool isDisposable, requests); +#if CURVY_SANITY_CHECKS + // I forgot why I added this assertion, but I trust my past self + Assert.IsTrue(data == null || isDisposable); +#endif + if (data) + ApplyTrsOnShape(data); + result = new CGData[1] { data }; + } + else + result = null; + + return result; + } + + #endregion + + + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSShape.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSShape.cs.meta new file mode 100644 index 00000000..65f128e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierTRSShape.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9aa16a61208287d44abaa805bc050e9c +timeCreated: 1438610244 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierVariableMixShapes.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierVariableMixShapes.cs new file mode 100644 index 00000000..e47b88b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierVariableMixShapes.cs @@ -0,0 +1,126 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Modifier/Variable Mix Shapes", ModuleName = "Variable Mix Shapes", Description = "Interpolates between two shapes in a way that varies along the shape extrusion")] + [HelpURL(CurvySpline.DOCLINK + "cgvariablemixshapes")] +#pragma warning disable 618 + public class ModifierVariableMixShapes : CGModule, IOnRequestProcessing, IPathProvider +#pragma warning restore 618 + { + [HideInInspector] + [InputSlotInfo(typeof(CGShape), Name = "Shape A")] + public CGModuleInputSlot InShapeA = new CGModuleInputSlot(); + + [HideInInspector] + [InputSlotInfo(typeof(CGShape), Name = "Shape B")] + public CGModuleInputSlot InShapeB = new CGModuleInputSlot(); + + [HideInInspector] + [ShapeOutputSlotInfo(OutputsVariableShape = true, Array = true, ArrayType = SlotInfo.SlotArrayType.Hidden)] + public CGModuleOutputSlot OutShape = new CGModuleOutputSlot(); + + #region ### Serialized Fields ### + [Label("Mix Curve", "Mix between the shapes. Values (Y axis) between -1 for Shape A and 1 for Shape B. Times (X axis) between 0 for extrusion start and 1 for extrusion end")] + [SerializeField] + private AnimationCurve m_MixCurve = AnimationCurve.Linear(0, -1, 1, 1); + #endregion + #region ### Public Properties ### + + public bool PathIsClosed + { + get + { + return (IsConfigured) ? InShapeA.SourceSlot().PathProvider.PathIsClosed && + InShapeB.SourceSlot().PathProvider.PathIsClosed : false; + } + } + + /// + /// Defines how the result is interpolated. Values (Y axis) between -1 for Shape A and 1 for Shape B. Times (X axis) between 0 for extrusion start and 1 for extrusion end + /// + public AnimationCurve MixCurve + { + get { return m_MixCurve; } + set + { + m_MixCurve = value; + Dirty = true; + } + } + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Dirty = true; + } +#endif + + public override void Reset() + { + base.Reset(); + m_MixCurve = AnimationCurve.Linear(0, -1, 1, 1); + } + + /*! \endcond */ + #endregion + + #region ### IOnRequestProcessing ### + public CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests) + { + CGDataRequestShapeRasterization raster = GetRequestParameter(ref requests); + if (!raster) + return null; + + int pathFLength = raster.RelativeDistances.Count; + + CGData[] result = new CGData[pathFLength]; + +#if UNITY_EDITOR + bool warnedAboutInterpolation = false; +#endif + for (int crossIndex = 0; crossIndex < pathFLength; crossIndex++) + { + float mix = MixCurve.Evaluate(raster.RelativeDistances.Array[crossIndex]); +#if UNITY_EDITOR + if ((mix < -1 || mix > 1) && warnedAboutInterpolation == false) + { + warnedAboutInterpolation = true; + UIMessages.Add(String.Format("Mix Curve should have values between -1 and 1. Found a value of {0} at time {1}", mix, raster.RelativeDistances.Array[crossIndex])); + } +#endif + CGShape shapeA = InShapeA.GetData(out bool isADisposable, requests); + CGShape shapeB = InShapeB.GetData(out bool isBDisposable, requests); + + result[crossIndex] = ModifierMixShapes.MixShapes( + shapeA, shapeB, mix, + UIMessages, crossIndex != 0); + + if (isADisposable) + shapeA.Dispose(); + + if (isBDisposable) + shapeB.Dispose(); + } + + return result; + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierVariableMixShapes.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierVariableMixShapes.cs.meta new file mode 100644 index 00000000..20343367 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ModifierVariableMixShapes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9f9ee6c17ecbcf429b7eaa26063afd1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Note.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Note.cs new file mode 100644 index 00000000..2027b2aa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Note.cs @@ -0,0 +1,58 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + [ModuleInfo("Note", ModuleName="Note", Description = "Creates a note")] + [HelpURL(CurvySpline.DOCLINK + "cgnote")] + public class Note : CGModule, INoProcessing + { + + [SerializeField, TextArea(3, 10)] private string m_Note; + + public string NoteText + { + get { return m_Note; } + set + { + if (m_Note != value) + m_Note = value; + } + } + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected override void OnEnable() + { + base.OnEnable(); + Properties.MinWidth = 250; + Properties.LabelWidth = 50; + } + + public override void Reset() + { + base.Reset(); + m_Note = null; + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + NoteText = m_Note; + } +#endif + + /*! \endcond */ + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Note.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Note.cs.meta new file mode 100644 index 00000000..b5d5dd5b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/Note.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8b0cfe04ef5e5d4aaf9ff8c26cabecb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ResourceExportingModule.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ResourceExportingModule.cs new file mode 100644 index 00000000..039b4737 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ResourceExportingModule.cs @@ -0,0 +1,51 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.Curvy.Generator.Modules +{ + /// + /// A CGModule that creates managed resources that can be exported + /// + public abstract class ResourceExportingModule : CGModule + { + /// + /// Save the created resource(s) to the scene + /// + /// the parent transform to which the saved resource(s) GameObject(s) will be attached. If null, saved resource(s) GameObject(s) will be at the hierarchy's root + /// The created GameObject + public GameObject SaveToScene(Transform parent = null) + { + List managedResources; + List names; + GetManagedResources(out managedResources, out names); + if (managedResources.Count == 0) + return null; + + GameObject result = new GameObject($"{ModuleName} Exported Resources"); + result.transform.parent = parent; + for (int i = 0; i < managedResources.Count; i++) + SaveResourceToScene(managedResources[i], result.transform); + + result.transform.position = this.transform.position; + result.transform.rotation = this.transform.rotation; + result.transform.localScale = this.transform.localScale; + return result; + } + + /// + /// Save a specific resource to the scene as a GameObject + /// + /// The saved GameObject + protected abstract GameObject SaveResourceToScene(Component managedResource, Transform newParent); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ResourceExportingModule.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ResourceExportingModule.cs.meta new file mode 100644 index 00000000..99725ee3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG Modules/ResourceExportingModule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97658263086c0474cbff9ecccdf3ec25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG.meta new file mode 100644 index 00000000..2933313d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: d76119d1d53036a4ca07d75ae8d8b0c8 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGBoundsGroup.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGBoundsGroup.cs new file mode 100644 index 00000000..66e18893 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGBoundsGroup.cs @@ -0,0 +1,487 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.DevTools; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Helper class used by VolumeSpots and others + /// + [System.Serializable] + public class CGBoundsGroup : CGWeightedItem + { + /// + /// How the rotation axes are defined related to the Volume's data + /// + public enum RotationModeEnum + { + /// + /// Use Volume's direction and orientation + /// + Full, + /// + /// Use Volume's direction only + /// + Direction, + /// + /// Use Volume's direction only after projecting it on XZ plane + /// + Horizontal, + /// + /// Do not use Volume's data + /// + Independent + } + + #region ### Serialized Fields ### + [SerializeField] private string m_Name; + [SerializeField] + [Tooltip("When checked, the group will only be placed when all the group's items can be placed in the space left")] + private bool m_KeepTogether; + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_SpaceBefore = new FloatRegion() { SimpleValue = true }; + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_SpaceAfter = new FloatRegion() { SimpleValue = true }; + [SerializeField] + //BUG Tooltip and FloatRegion are not compatible [Tooltip("Shifts the Cross origin for this group by a value in the defined range")] + [FloatRegion(RegionIsOptional = true, RegionOptionsPropertyName = nameof(PositionRangeOptions), UseSlider = true, Precision = 3)] + private FloatRegion m_CrossBase = new FloatRegion(0); + [SerializeField] + [Tooltip("If ticked, the Cross origin for this group will not take into consideration the Cross parameters in the General tab")] + private bool m_IgnoreModuleCrossBase = false; + + [SerializeField] + [Tooltip("When enabled, items will be selected randomly")] + private bool m_RandomizeItems; + + [IntRegion(UseSlider = false, RegionOptionsPropertyName = nameof(RepeatingGroupsOptions), Options = AttributeOptionsFlags.Compact)] + [SerializeField] + [Tooltip("The randomized items are the the ones that have their indices inside this range")] + private IntRegion m_RepeatingItems; + + //Translation + [SerializeField] + [Tooltip("If unchecked, translation will be done in the global/world space")] + private bool m_RelativeTranslation = true; + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_TranslationX = new FloatRegion(0); + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_TranslationY = new FloatRegion(0); + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_TranslationZ = new FloatRegion(0); + + //Rotation + [SerializeField] + [Tooltip("How the rotation axes are defined related to the Volume's data\r\n - Full : Use Volume's direction and orientation\r\n - Direction : Use Volume's direction only\r\n - Horizontal : Use Volume's direction only after projecting it on XZ plane\r\n - Independent : Do not use Volume's data")] + private RotationModeEnum m_RotationMode = RotationModeEnum.Full; + + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_RotationX = new FloatRegion(0); + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_RotationY = new FloatRegion(0); + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_RotationZ = new FloatRegion(0); + + //Scale + [SerializeField] + [Tooltip("Whether the scaling is applied equally on all dimensions")] + private bool m_UniformScaling = true; + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_ScaleX = new FloatRegion(1); + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_ScaleY = new FloatRegion(1); + [SerializeField] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_ScaleZ = new FloatRegion(1); + + [SerializeField] private List m_Items = new List(); + + #endregion + + #region ### Public Members ### + + public string Name + { + get { return m_Name; } + set + { + if (m_Name != value) + m_Name = value; + } + } + + /// + /// When true, the group will only be placed when all items can be placed in the space left. + /// + public bool KeepTogether + { + get { return m_KeepTogether; } + set + { + if (m_KeepTogether != value) + m_KeepTogether = value; + } + } + + public FloatRegion SpaceBefore + { + get { return m_SpaceBefore; } + set + { + if (m_SpaceBefore != value) + m_SpaceBefore = value; + } + } + + public FloatRegion SpaceAfter + { + get { return m_SpaceAfter; } + set + { + if (m_SpaceAfter != value) + m_SpaceAfter = value; + } + } + + /// + /// When enabled, items in groups will be selected randomly. + /// + /// + public bool RandomizeItems + { + get { return m_RandomizeItems; } + set + { + if (m_RandomizeItems != value) + m_RandomizeItems = value; + } + } + + /// + /// When is set to true, the randomized items are the the ones that have their indices inside the RepeatingItems range + /// + public IntRegion RepeatingItems + { + get { return m_RepeatingItems; } + set + { + if (m_RepeatingItems != value) + m_RepeatingItems = value; + } + } + + /// + /// Shifts the Cross origin for this group by a value in the defined range + /// + public FloatRegion CrossBase + { + get { return m_CrossBase; } + set + { + if (m_CrossBase != value) + m_CrossBase = value; + } + } + + /// + /// If true, the Cross origin for this group will not take into consideration the Cross parameters of the BuildVolumeSpots class/> + /// + public bool IgnoreModuleCrossBase + { + get { return m_IgnoreModuleCrossBase; } + set + { + if (m_IgnoreModuleCrossBase != value) + m_IgnoreModuleCrossBase = value; + } + } + + /// + /// How the rotation axes are defined related to the Volume's data + /// + public RotationModeEnum RotationMode + { + get { return m_RotationMode; } + set + { + if (m_RotationMode != value) + m_RotationMode = value; + } + } + + public FloatRegion RotationX + { + get { return m_RotationX; } + set + { + if (m_RotationX != value) + m_RotationX = value; + } + } + public FloatRegion RotationY + { + get { return m_RotationY; } + set + { + if (m_RotationY != value) + m_RotationY = value; + } + } + public FloatRegion RotationZ + { + get { return m_RotationZ; } + set + { + if (m_RotationZ != value) + m_RotationZ = value; + } + } + + /// + /// When true, the scaling vector is (ScaleX, ScaleX, ScaleX) instead of (ScaleX, ScaleY, ScaleZ) + /// + public bool UniformScaling + { + get { return m_UniformScaling; } + set + { + if (m_UniformScaling != value) + m_UniformScaling = value; + } + } + public FloatRegion ScaleX + { + get { return m_ScaleX; } + set + { + if (m_ScaleX != value) + m_ScaleX = value; + } + } + public FloatRegion ScaleY + { + get { return m_ScaleY; } + set + { + if (m_ScaleY != value) + m_ScaleY = value; + } + } + public FloatRegion ScaleZ + { + get { return m_ScaleZ; } + set + { + if (m_ScaleZ != value) + m_ScaleZ = value; + } + } + /// + /// When true, the translation of an item is done in the relative frame defined by the tangent and orientation (up vector) of the volume at the item's position + /// + public bool RelativeTranslation + { + get { return m_RelativeTranslation; } + set + { + if (m_RelativeTranslation != value) + m_RelativeTranslation = value; + } + } + public FloatRegion TranslationX + { + get { return m_TranslationX; } + set + { + if (m_TranslationX != value) + m_TranslationX = value; + } + } + public FloatRegion TranslationY + { + get { return m_TranslationY; } + set + { + if (m_TranslationY != value) + m_TranslationY = value; + } + } + public FloatRegion TranslationZ + { + get { return m_TranslationZ; } + set + { + if (m_TranslationZ != value) + m_TranslationZ = value; + } + } + + public List Items + { + get { return m_Items; } + } + + /// + /// First index of the range + /// + public int FirstRepeating + { + get { return m_RepeatingItems.From; } + set + { + int v = Mathf.Clamp(value, 0, Mathf.Max(0, ItemCount - 1)); + if (m_RepeatingItems.From != v) + m_RepeatingItems.From = v; + } + } + + /// + /// Last index of the range + /// + public int LastRepeating + { + get { return m_RepeatingItems.To; } + set + { + int v = Mathf.Clamp(value, FirstRepeating, Mathf.Max(0, ItemCount - 1)); + if (m_RepeatingItems.To != v) + m_RepeatingItems.To = v; + } + } + + public int ItemCount + { + get { return Items.Count; } + } + + public CGBoundsGroup(string name) + { + Name = name; + } + + /// + /// Fill an item bag with items based on their weights + /// + public static void FillItemBag(WeightedRandom bag, IEnumerable itemsWeights, int firstItem, int lastItem) + { + for (int g = firstItem; g <= lastItem; g++) + bag.Add(g, (int)(itemsWeights.ElementAt(g).Weight * 10)); + + if (bag.Size == 0) + bag.Add(firstItem, 1); + } + + #endregion + + #region Non Public Members + + private RegionOptions RepeatingGroupsOptions + { + get + { + return RegionOptions.MinMax(0, Mathf.Max(0, ItemCount - 1)); + } + } + + private RegionOptions PositionRangeOptions + { + get + { + return RegionOptions.MinMax(-1f, 1f); + } + } + #endregion + + #region Obsolete code kept for retrocompatibility + [Obsolete("Enum no more used by Curvy. This enum is kept for retro compatibility reasons")] + private enum DistributionModeEnum + { + Parent, + Self + } + +#pragma warning disable 649 + [SerializeField, HideInInspector] + [Obsolete("Use IgnoreModuleCrossBase instead. This field is kept for retro compatibility reasons")] + private DistributionModeEnum m_DistributionMode; + + [SerializeField, HideInInspector] + [Obsolete("Use CrossBase instead. This field is kept for retro compatibility reasons")] + [FloatRegion(RegionIsOptional = true, RegionOptionsPropertyName = nameof(PositionRangeOptions), UseSlider = true, Precision = 3)] + private FloatRegion m_PositionOffset = new FloatRegion(0); + + [SerializeField, HideInInspector] + [Obsolete("Use TranslationY instead, while setting RelativeTranslation to true. This field is kept for retro compatibility reasons")] + [FloatRegion(RegionIsOptional = true, Options = AttributeOptionsFlags.Compact)] + private FloatRegion m_Height = new FloatRegion(0); + + [SerializeField, HideInInspector] + [Obsolete("Use RandomizeItems instead. This field is kept for retro compatibility reasons")] + private CurvyRepeatingOrderEnum m_RepeatingOrder = CurvyRepeatingOrderEnum.Row; + + [SerializeField, HideInInspector] + [Obsolete("Use RotationX, RotationY and RotationZ instead. This field is kept for retro compatibility reasons")] + [VectorEx] + private Vector3 m_RotationOffset; + + [SerializeField, HideInInspector] + [Obsolete("Use RotationX, RotationY and RotationZ instead. This field is kept for retro compatibility reasons")] + [VectorEx] + private Vector3 m_RotationScatter; +#pragma warning restore 649 + + /// + /// Converts the obsolete data to the new format + /// + [Obsolete("Method will get removed once the obsolete data will get removed")] + public void ConvertObsoleteData() + { + RandomizeItems = m_RepeatingOrder == CurvyRepeatingOrderEnum.Random; + IgnoreModuleCrossBase = m_DistributionMode == DistributionModeEnum.Self; + CrossBase = m_PositionOffset; + if (m_Height.From != 0f || (m_Height.SimpleValue == false && m_Height.To != 0f)) + { + TranslationY = m_Height; + RelativeTranslation = true; + } + + { + float from = m_RotationOffset.x - m_RotationScatter.x; + float to = m_RotationOffset.x + m_RotationScatter.x; + RotationX = from == to ? new FloatRegion(from) : new FloatRegion(from, to); + } + + { + float from = m_RotationOffset.y - m_RotationScatter.y; + float to = m_RotationOffset.y + m_RotationScatter.y; + RotationY = from == to ? new FloatRegion(from) : new FloatRegion(from, to); + } + + { + float from = m_RotationOffset.z - m_RotationScatter.z; + float to = m_RotationOffset.z + m_RotationScatter.z; + RotationZ = from == to ? new FloatRegion(from) : new FloatRegion(from, to); + } + } + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGBoundsGroup.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGBoundsGroup.cs.meta new file mode 100644 index 00000000..91fb4921 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGBoundsGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75d63101243298e4e90c40319e35d557 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGClasses.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGClasses.cs new file mode 100644 index 00000000..896784c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGClasses.cs @@ -0,0 +1,977 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator +{ + #region ### CGModule related ### + + /// + /// Yes,No,Auto Enum + /// + public enum CGYesNoAuto + { + Yes, + No, + Auto + } + + /// + /// Source,Self Enum + /// + public enum CGReferenceMode + { + Source, + Self + } + + /// + /// Aspect Mode correction modes enum + /// + public enum CGKeepAspectMode + { + /// + /// No Aspect correction is applied + /// + Off, + /// + /// U is scaled to keep texel size proportional + /// + ScaleU, + /// + /// V is scaled to keep texel size proportional + /// + ScaleV + } + + public enum CGColliderEnum + { + None, + Mesh, + Box, + Sphere, + Capsule + } + + /// + /// Spots are used to place objects (like meshes or Game Objects) A spot is defined by spacial coordinates (similar to Transform) and the index of the object to place + /// + [System.Serializable] + public struct CGSpot : IEquatable + { + [SerializeField] + [Label("Index")] + private int m_Index; + [SerializeField] + [VectorEx("Position", Options = AttributeOptionsFlags.Compact, Precision = 4)] + private Vector3 m_Position; + [SerializeField] + [VectorEx("Rotation", Options = AttributeOptionsFlags.Compact, Precision = 4)] + private Quaternion m_Rotation; + [SerializeField] + [VectorEx("Scale", Options = AttributeOptionsFlags.Compact, Precision = 4)] + private Vector3 m_Scale; + + /// + /// The index of the object to place + /// + public int Index + { + get { return m_Index; } + } + + /// + /// Gets or sets the position + /// + public Vector3 Position + { + get { return m_Position; } + set + { + if (m_Position != value) + m_Position = value; + } + } + + /// + /// Gets or sets the rotation + /// + public Quaternion Rotation + { + get { return m_Rotation; } + set + { + if (m_Rotation != value) + m_Rotation = value; + } + } + + /// + /// Gets or sets the scale + /// + public Vector3 Scale + { + get { return m_Scale; } + set + { + if (m_Scale != value) + m_Scale = value; + } + } + + /// + /// Gets a TRS matrix using Position, Rotation, Scale + /// + public Matrix4x4 Matrix + { + get { return Matrix4x4.TRS(m_Position, m_Rotation, m_Scale); } + } + + public CGSpot(int index) : this(index, Vector3.zero, Quaternion.identity, Vector3.one) { } + + public CGSpot(int index, Vector3 position, Quaternion rotation, Vector3 scale) + { + m_Index = index; + m_Position = position; + m_Rotation = rotation; + m_Scale = scale; + } + + /// + /// Sets a transform to match Position, Rotation, Scale in local space + /// + /// + public void ToTransform(Transform transform) + { + transform.localPosition = Position; + transform.localRotation = Rotation; + transform.localScale = Scale; + } + + public bool Equals(CGSpot other) + { + return m_Index == other.m_Index && m_Position.Equals(other.m_Position) && m_Rotation.Equals(other.m_Rotation) && m_Scale.Equals(other.m_Scale); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + return false; + return obj is CGSpot && Equals((CGSpot)obj); + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = m_Index; + hashCode = (hashCode * 397) ^ m_Position.GetHashCode(); + hashCode = (hashCode * 397) ^ m_Rotation.GetHashCode(); + hashCode = (hashCode * 397) ^ m_Scale.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(CGSpot left, CGSpot right) + { + return left.Equals(right); + } + + public static bool operator !=(CGSpot left, CGSpot right) + { + return !left.Equals(right); + } + } + + /// + /// An that compares instances of based on their + /// + public class CGSpotComparer : IComparer + { + public int Compare(object x, object y) + { + return ((CGSpot)x).Index.CompareTo(((CGSpot)y).Index); + } + } + + /// + /// Helper class used by various Curvy Generator modules + /// + [System.Serializable] + public class CGMaterialSettings + { + public bool SwapUV = false; + [Tooltip("Options to keep texel size proportional")] + public CGKeepAspectMode KeepAspect = CGKeepAspectMode.Off; + public float UVRotation = 0; + public Vector2 UVOffset = Vector2.zero; + public Vector2 UVScale = Vector2.one; + } + + /// + /// Helper class used by various Curvy Generator modules + /// + [System.Serializable] + //Design: get rid of CGMaterialSettingsEx, use CGMaterialSettings instead + public class CGMaterialSettingsEx : CGMaterialSettings + { + [Obsolete("This field is not used anymore, will get remove in a future update")] + public int MaterialID = 0; + } + + /// + /// Helper class used by InputMesh module + /// + [System.Serializable] + public class CGMeshProperties + { + [SerializeField] private Mesh m_Mesh; + [SerializeField] private Material[] m_Material = new Material[0]; + [SerializeField] + [VectorEx] + private Vector3 m_Translation; + [SerializeField] + [VectorEx] + private Vector3 m_Rotation; + [SerializeField] + [VectorEx] + private Vector3 m_Scale = Vector3.one; + + + public Mesh Mesh + { + get { return m_Mesh; } + set + { + if (m_Mesh != value) + m_Mesh = value; + if (m_Mesh && m_Mesh.subMeshCount != m_Material.Length) + System.Array.Resize(ref m_Material, m_Mesh.subMeshCount); + } + } + public Material[] Material + { + get { return m_Material; } + set + { + if (m_Material != value) + m_Material = value; + } + } + + public Vector3 Translation + { + get { return m_Translation; } + set + { + if (m_Translation != value) + m_Translation = value; + } + } + + public Vector3 Rotation + { + get { return m_Rotation; } + set + { + if (m_Rotation != value) + m_Rotation = value; + } + } + + public Vector3 Scale + { + get { return m_Scale; } + set + { + if (m_Scale != value) + m_Scale = value; + } + } + + public Matrix4x4 Matrix + { + get { return Matrix4x4.TRS(Translation, Quaternion.Euler(Rotation), Scale); } + } + + public CGMeshProperties() { } + + public CGMeshProperties(Mesh mesh) + { + Mesh = mesh; + Material = (mesh != null) ? new Material[mesh.subMeshCount] : new Material[0]; + } +#if UNITY_EDITOR + public void OnValidate() + { + Mesh = m_Mesh; + Material = m_Material; + } +#endif + } + + /// + /// Helper class used by InputGameObject module + /// + [System.Serializable] + public class CGGameObjectProperties + { + [SerializeField] private GameObject m_Object; + [SerializeField] + [VectorEx] + private Vector3 m_Translation; + [SerializeField] + [VectorEx] + private Vector3 m_Rotation; + [SerializeField] + [VectorEx] + private Vector3 m_Scale = Vector3.one; + + public GameObject Object + { + get { return m_Object; } + set + { + if (m_Object != value) + m_Object = value; + } + } + + public Vector3 Translation + { + get { return m_Translation; } + set + { + if (m_Translation != value) + m_Translation = value; + } + } + + public Vector3 Rotation + { + get { return m_Rotation; } + set + { + if (m_Rotation != value) + m_Rotation = value; + } + } + + public Vector3 Scale + { + get { return m_Scale; } + set + { + if (m_Scale != value) + m_Scale = value; + } + } + + public Matrix4x4 Matrix + { + get { return Matrix4x4.TRS(Translation, Quaternion.Euler(Rotation), Scale); } + } + + public CGGameObjectProperties() { } + + public CGGameObjectProperties(GameObject gameObject) + { + Object = gameObject; + } + } + + /// + /// An item that has a weight associated to it + /// + [Serializable] + public class CGWeightedItem + { + [RangeEx(0, 1, Slider = true, Precision = 1)] + [SerializeField] + private float m_Weight = 0.5f; + + public float Weight + { + get { return m_Weight; } + set + { + float v = Mathf.Clamp01(value); + if (m_Weight != v) + m_Weight = v; + } + } + } + + /// + /// Helper class used by VolumeSpots and others + /// + [System.Serializable] + public class CGBoundsGroupItem : CGWeightedItem + { + public int Index; + } + + #endregion + + #region ### Spline rasterization related ### + + /// + /// Rasterization helper + /// + public struct ControlPointOption : IEquatable + { + public float TF; + public float Distance; + public bool Include; + public int MaterialID; + public bool HardEdge; + public float MaxStepDistance; + public bool UVEdge; + /// + /// Also known as ExplicitU + /// + public bool UVShift; + public float FirstU; + public float SecondU; + + + public ControlPointOption(float tf, float dist, bool includeAnyways, int materialID, bool hardEdge, float maxStepDistance, bool uvEdge, bool uvShift, float firstU, float secondU) + { + TF = tf; + Distance = dist; + Include = includeAnyways; + MaterialID = materialID; + HardEdge = hardEdge; + if (maxStepDistance == 0) + MaxStepDistance = float.MaxValue; + else + MaxStepDistance = maxStepDistance; + UVEdge = uvEdge; + UVShift = uvShift; + FirstU = firstU; + SecondU = secondU; + } + + public bool Equals(ControlPointOption other) + { + return TF.Equals(other.TF) && Distance.Equals(other.Distance) && Include == other.Include && MaterialID == other.MaterialID && HardEdge == other.HardEdge && MaxStepDistance.Equals(other.MaxStepDistance) && UVEdge == other.UVEdge && UVShift == other.UVShift && FirstU.Equals(other.FirstU) && SecondU.Equals(other.SecondU); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + return false; + return obj is ControlPointOption && Equals((ControlPointOption)obj); + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = TF.GetHashCode(); + hashCode = (hashCode * 397) ^ Distance.GetHashCode(); + hashCode = (hashCode * 397) ^ Include.GetHashCode(); + hashCode = (hashCode * 397) ^ MaterialID; + hashCode = (hashCode * 397) ^ HardEdge.GetHashCode(); + hashCode = (hashCode * 397) ^ MaxStepDistance.GetHashCode(); + hashCode = (hashCode * 397) ^ UVEdge.GetHashCode(); + hashCode = (hashCode * 397) ^ UVShift.GetHashCode(); + hashCode = (hashCode * 397) ^ FirstU.GetHashCode(); + hashCode = (hashCode * 397) ^ SecondU.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(ControlPointOption left, ControlPointOption right) + { + return left.Equals(right); + } + + public static bool operator !=(ControlPointOption left, ControlPointOption right) + { + return !left.Equals(right); + } + } + + /// + /// A patch of vertices to be connected by triangles (i.e. same Material and no hard edges within a patch) + /// + /// The index values refer to rasterized points of CGShape + public struct SamplePointsPatch : IEquatable + { + /// + /// First Sample Point Index of the patch + /// + public int Start; + /// + /// Number of Sample Points of the patch + /// + public int Count; + + /// + /// Last Sample Point Index of the patch + /// + public int End + { + get { return Start + Count; } + set + { + Count = Mathf.Max(0, value - Start); + } + } + + public int TriangleCount + { + get + { + return Count * 2; + } + } + + + public SamplePointsPatch(int start) + { + Start = start; + Count = 0; + } + + public override string ToString() + { + return string.Format(System.Globalization.CultureInfo.InvariantCulture, "Size={0} ({1}-{2}, {3} Tris)", Count, Start, End, TriangleCount); + } + + public bool Equals(SamplePointsPatch other) + { + return Start == other.Start && Count == other.Count; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + return false; + return obj is SamplePointsPatch && Equals((SamplePointsPatch)obj); + } + + public override int GetHashCode() + { + unchecked + { + return (Start * 397) ^ Count; + } + } + + public static bool operator ==(SamplePointsPatch left, SamplePointsPatch right) + { + return left.Equals(right); + } + + public static bool operator !=(SamplePointsPatch left, SamplePointsPatch right) + { + return !left.Equals(right); + } + } + + /// + /// A section of one or more patches, all sharing the same MaterialID + /// + public class SamplePointsMaterialGroup + { + public int MaterialID; + + public List Patches; + + public int TriangleCount + { + get + { + int cnt = 0; + for (int p = 0; p < Patches.Count; p++) + cnt += Patches[p].TriangleCount; + return cnt; + } + } + + public int StartVertex + { + get + { + return Patches[0].Start; + } + } + + public int EndVertex + { + get + { + return Patches[Patches.Count - 1].End; + } + } + + public int VertexCount + { + get + { + return EndVertex - StartVertex + 1; + } + } + + public SamplePointsMaterialGroup(int materialID) : this(materialID, new List()) + { + } + + public SamplePointsMaterialGroup(int materialID, List patches) + { + MaterialID = materialID; + Patches = patches; + } + + public void GetLengths(CGVolume volume, out float worldLength, out float uLength) + { + worldLength = 0; + for (int v = StartVertex; v < EndVertex; v++) + worldLength += (volume.Vertices.Array[v + 1] - volume.Vertices.Array[v]).magnitude; + uLength = volume.CrossCustomValues.Array[EndVertex] - volume.CrossCustomValues.Array[StartVertex]; + } + + /// + /// Returns a clone of the current instance. + /// + public SamplePointsMaterialGroup Clone() + { + return new SamplePointsMaterialGroup(MaterialID, new List(Patches)); + } + } + + /// + /// Data about duplicated points, meaning a couple of points sharing the same position. Such duplicated points are used to store different normals or different U coordinates at the same position + /// + public readonly struct DuplicateSamplePoint : IEquatable + { + /// + /// The index of the first point + /// + public int StartIndex { get; } + /// + /// The index of the second point + /// + public int EndIndex { get; } + /// + /// When true, both points don't share the same normal + /// + public bool IsHardEdge { get; } + + public DuplicateSamplePoint(int startIndex, int endIndex, bool isHardEdge) + { + StartIndex = startIndex; + EndIndex = endIndex; + IsHardEdge = isHardEdge; + } + + public bool Equals(DuplicateSamplePoint other) + { + return StartIndex == other.StartIndex && EndIndex == other.EndIndex && IsHardEdge == other.IsHardEdge; + } + + public override bool Equals(object obj) + { + return obj is DuplicateSamplePoint other && Equals(other); + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = StartIndex; + hashCode = (hashCode * 397) ^ EndIndex; + hashCode = (hashCode * 397) ^ IsHardEdge.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(DuplicateSamplePoint left, DuplicateSamplePoint right) + { + return left.Equals(right); + } + + public static bool operator !=(DuplicateSamplePoint left, DuplicateSamplePoint right) + { + return !left.Equals(right); + } + + public override string ToString() + { + return $"{nameof(StartIndex)}: {StartIndex}, {nameof(EndIndex)}: {EndIndex}, {nameof(IsHardEdge)}: {IsHardEdge}"; + } + } + + + public struct SamplePointUData : IEquatable + { + public int Vertex; + public bool UVEdge; + public bool HardEdge; + public float FirstU; + public float SecondU; + + [Obsolete("Use other constructors")] + public SamplePointUData(int vertexIndex, bool uvEdge, float firstU, float secondU) : this(vertexIndex, uvEdge, false, firstU, secondU) + { + } + + public SamplePointUData(int vertexIndex, bool uvEdge, bool hardEdge, float firstU, float secondU) + { + Vertex = vertexIndex; + UVEdge = uvEdge; + HardEdge = hardEdge; + FirstU = firstU; + SecondU = secondU; + } + + public SamplePointUData(int vertexIndex, ControlPointOption controlPointsOption) : this( + vertexIndex, + controlPointsOption.UVEdge, + controlPointsOption.HardEdge, + controlPointsOption.FirstU, + controlPointsOption.SecondU + ) + { + } + + + public override string ToString() + { + return string.Format(System.Globalization.CultureInfo.InvariantCulture, "SamplePointUData (Vertex={0}, UVEdge={1}, HardEdge={4}, FirstU={2}, SecondU={3}", Vertex, UVEdge, FirstU, SecondU, HardEdge); + } + + public bool Equals(SamplePointUData other) + { + return Vertex == other.Vertex && UVEdge == other.UVEdge && HardEdge == other.HardEdge && FirstU.Equals(other.FirstU) && SecondU.Equals(other.SecondU); + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + return false; + return obj is SamplePointUData && Equals((SamplePointUData)obj); + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = Vertex; + hashCode = (hashCode * 397) ^ UVEdge.GetHashCode(); + hashCode = (hashCode * 397) ^ HardEdge.GetHashCode(); + hashCode = (hashCode * 397) ^ FirstU.GetHashCode(); + hashCode = (hashCode * 397) ^ SecondU.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(SamplePointUData left, SamplePointUData right) + { + return left.Equals(right); + } + + public static bool operator !=(SamplePointUData left, SamplePointUData right) + { + return !left.Equals(right); + } + } + + #endregion + + + /// + /// List of Material Groups + /// + public class SamplePointsMaterialGroupCollection : List + { + public int TriangleCount + { + get + { + int cnt = 0; + for (int g = 0; g < this.Count; g++) + cnt += this[g].TriangleCount; + return cnt; + } + } + + public int MaterialID; + + [Obsolete("Use AspectCorrectionV instead")] + public float AspectCorrection + { + get => AspectCorrectionV; + set => AspectCorrectionV = value; + } + + /// + /// A multiplication applied on the U coordinate as part of the aspect correction + /// + public float AspectCorrectionU = 1; + + /// + /// A multiplication applied on the V coordinate as part of the aspect correction + /// + public float AspectCorrectionV = 1; + + public SamplePointsMaterialGroupCollection() : base() { } + public SamplePointsMaterialGroupCollection(int capacity) : base(capacity) { } + public SamplePointsMaterialGroupCollection(IEnumerable collection) : base(collection) { } + + public void CalculateAspectCorrection(CGVolume volume, CGMaterialSettingsEx matSettings) + { + switch (matSettings.KeepAspect) + { + case CGKeepAspectMode.Off: + AspectCorrectionV = 1; + AspectCorrectionU = 1; + break; + case CGKeepAspectMode.ScaleU: + case CGKeepAspectMode.ScaleV: + { + float crossLength = 0; + float uLength = 0; + for (int g = 0; g < Count; g++) + { + float length, u; + this[g].GetLengths(volume, out length, out u); + crossLength += length; + uLength += u; + } + + if (matSettings.KeepAspect == CGKeepAspectMode.ScaleU) + { + AspectCorrectionV = 1; + AspectCorrectionU = crossLength / volume.Length; + } + else + { + AspectCorrectionV = volume.Length * uLength / crossLength; + AspectCorrectionU = 1; + } + } + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + } + + /// + /// Class referencing a particular module's output slot + /// + /// When using, be sure to add the to the field + [System.Serializable] + public class CGDataReference + { + [SerializeField] private CGModule m_Module; + [SerializeField] private string m_SlotName; + + private CGModuleOutputSlot mSlot; + + public CGData[] Data + { + get + { + return (Slot != null) ? Slot.Data : new CGData[0]; + } + } + + public CGModuleOutputSlot Slot + { + get + { + if ((mSlot == null || mSlot.Module != m_Module || mSlot.Info == null || mSlot.Info.Name != m_SlotName) && m_Module != null && m_Module.Generator != null && m_Module.Generator.IsInitialized && !string.IsNullOrEmpty(m_SlotName)) + { + mSlot = m_Module.GetOutputSlot(m_SlotName); + } + return mSlot; + } + } + + public bool HasValue + { + get + { + CGModuleOutputSlot cgModuleOutputSlot = Slot; + return (cgModuleOutputSlot != null) && cgModuleOutputSlot.Data.Length > 0; + } + } + + public bool IsEmpty + { + get { return string.IsNullOrEmpty(SlotName); } + } + + public CGModule Module + { + get { return m_Module; } + } + public string SlotName + { + get { return m_SlotName; } + } + + public CGDataReference() + { + } + + public CGDataReference(CGModule module, string slotName) + { + setINTERNAL(module, slotName); + } + + public CGDataReference(CurvyGenerator generator, string moduleName, string slotName) + { + setINTERNAL(generator, moduleName, slotName); + } + + public void Clear() + { + setINTERNAL(null, string.Empty); + } + + public T GetData() where T : CGData + { + return (Data.Length == 0) ? null : Data[0] as T; + } + + public T[] GetAllData() where T : CGData + { + return Data as T[]; + } + + #region ### Privates & Internals ### + /*! \cond PRIVATE */ + + public void setINTERNAL(CGModule module, string slotName) + { + m_Module = module; + m_SlotName = slotName; + mSlot = null; + } + + public void setINTERNAL(CurvyGenerator generator, string moduleName, string slotName) + { + m_Module = generator.GetModule(moduleName, false); + m_SlotName = slotName; + mSlot = null; + } + + /*! \endcond */ + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGClasses.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGClasses.cs.meta new file mode 100644 index 00000000..9de04069 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGClasses.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a2040f930733ca34783e346013036c51 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGData.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGData.cs new file mode 100644 index 00000000..0846f893 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGData.cs @@ -0,0 +1,2611 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools.Extensions; +using System; +using System.Linq; +using System.Text; +using System.Reflection; +using System.Runtime.CompilerServices; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.DevTools; +using JetBrains.Annotations; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; +using UnityEngine.Rendering; + +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif + + + + +namespace FluffyUnderware.Curvy.Generator +{ + //TODO replace all the misuse of the F concept here, where it should really be RelativeDistance + + /// + /// Additional properties for CGData based classes + /// + [AttributeUsage(AttributeTargets.Class)] + public sealed class CGDataInfoAttribute : Attribute + { + public readonly Color Color; + + public CGDataInfoAttribute(Color color) + { + Color = color; + } + + public CGDataInfoAttribute(float r, float g, float b, float a = 1) + { + Color = new Color(r, g, b, a); + } + + public CGDataInfoAttribute(string htmlColor) + { + Color = htmlColor.ColorFromHtml(); + } + } + + /// + /// Data Base class + /// + public class CGData : IDisposable + { + #region Dispose pattern + + private bool disposed = false; + + protected virtual bool Dispose(bool disposing) + { + if (disposed) + { + DTLog.LogWarning("[Curvy] Attempt to dispose a CGData twice. Please raise a bug report."); + return false; + } + + disposed = true; + return true; + } + + /// + /// Disposes an instance that is no more used, allowing it to free its resources immediately. + /// Dispose is called automatically when an instance is d + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + ~CGData() + { + Dispose(false); + } + + #endregion + + public string Name; + + public virtual int Count + { + get { return 0; } + } + + public static implicit operator bool(CGData a) + { + return !ReferenceEquals(a, null); + } + + public virtual T Clone() where T : CGData + { + return new CGData() as T; + } + + /// + /// Searches FMapArray and returns the index that covers the fValue as well as the percentage between index and index+1 + /// + /// array of sorted values ranging from 0..1 + /// a value 0..1 + /// fragment between the resulting and the next index (0..1) + /// the index where fValue lies in + protected int getGenericFIndex(SubArray FMapArray, float fValue, out float frag) + { + //WARNING this method is inlined in DeformMesh, if you modify something here modify it there too + int index = CurvyUtility.InterpolationSearch(FMapArray.Array, FMapArray.Count, fValue); + + if (index == FMapArray.Count - 1) + { + index -= 1; + frag = 1; + } + else + frag = (fValue - FMapArray.Array[index]) / (FMapArray.Array[index + 1] - FMapArray.Array[index]); + + return index; + } + } + + /// + /// Rasterized Shape Data (Polyline) + /// + [CGDataInfo(0.73f, 0.87f, 0.98f)] + public class CGShape : CGData + { + /// + /// The relative distance of each point. + /// A relative distance is a value between 0 and 1 representing how far the point is in a shape. + /// A value of 0 means the start of the shape, and a value of 1 means the end of it. + /// It is defined as (the point's distance from the shape's start) / (the total length of the shape) + /// This is unrelated to the notion of or F of a spline. + /// Unfortunately, it is abusively called F in big parts of the the Curvy Generator related code, sorry for the confusion. + /// + /// Setting a new will the current instance + public SubArray RelativeDistances + { + get => relativeDistances; + set + { + ArrayPools.Single.Free(relativeDistances); + relativeDistances = value; + } + } + + /// + /// The relative distance of each point relative to the source shape. + /// A relative distance is a value between 0 and 1 representing how far the point is in a shape. + /// A value of 0 means the start of the shape, and a value of 1 means the end of it. + /// It is defined as (the point's distance from the shape's start) / (the total length of the shape) + /// Contrary to which is computed based on the actual shape, SourceRelativeDistances is computed based on the source shape. + /// For example, if a Shape A is defined as the second quarter of a Shape B, A's first point will have a relative distance of 0, but a source relative distance of 0.25. A's last point will have a relative distance of 1, but a source relative distance of 0.5 + /// This is unrelated to the notion of or F of a spline. + /// Unfortunately, it is abusively called F in big parts of the the Curvy Generator related code, sorry for the confusion. + /// + /// Setting a new will the current instance + public SubArray SourceRelativeDistances + { + get => sourceRelativeDistances; + set + { + ArrayPools.Single.Free(sourceRelativeDistances); + sourceRelativeDistances = value; + } + } + + /// + /// Positions of the path's points, in the path's local space + /// + /// Setting a new will the current instance + public SubArray Positions + { + get => positions; + set + { + ArrayPools.Vector3.Free(positions); + positions = value; + } + } + + /// + /// Normals of the path's points, in the path's local space + /// + /// Setting a new will the current instance + public SubArray Normals + { + get => normals; + set + { + ArrayPools.Vector3.Free(normals); + normals = value; + } + } + + /// + /// Arbitrary mapped value to each point, usually U coordinate + /// + /// Setting a new will the current instance + public SubArray CustomValues + { + get => customValues; + set + { + ArrayPools.Single.Free(customValues); + customValues = value; + } + } + + /// + /// The list of the shape's + /// + public List DuplicatePoints { get; set; } + + #region Obsolete + + /// + /// The relative distance of each point. + /// A relative distance is a value between 0 and 1 representing how far the point is in a shape. + /// A value of 0 means the start of the shape, and a value of 1 means the end of it. + /// It is defined as (the point's distance from the shape's start) / (the total length of the shape) + /// This is unrelated to the notion of or F of a spline. + /// Unfortunately, it is abusively called F in big parts of the the Curvy Generator related code, sorry for the confusion. + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use RelativeDistances instead")] + public float[] F + { + get => RelativeDistances.CopyToArray(ArrayPools.Single); + set => RelativeDistances = new SubArray(value); + } + + /// + /// The relative distance of each point relative to the source shape. + /// A relative distance is a value between 0 and 1 representing how far the point is in a shape. + /// A value of 0 means the start of the shape, and a value of 1 means the end of it. + /// It is defined as (the point's distance from the shape's start) / (the total length of the shape) + /// Contrary to which is computed based on the actual shape, SourceRelativeDistances is computed based on the source shape. + /// For example, if a Shape A is defined as the second quarter of a Shape B, A's first point will have a relative distance of 0, but a source relative distance of 0.25. A's last point will have a relative distance of 1, but a source relative distance of 0.5 + /// This is unrelated to the notion of or F of a spline. + /// Unfortunately, it is abusively called F in big parts of the the Curvy Generator related code, sorry for the confusion. + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use SourceRelativeDistances instead")] + public float[] SourceF + { + get => SourceRelativeDistances.CopyToArray(ArrayPools.Single); + set => SourceRelativeDistances = new SubArray(value); + } + + /// + /// Positions of the path's points, in the path's local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use Positions instead")] + public Vector3[] Position + { + get => Positions.CopyToArray(ArrayPools.Vector3); + set => Positions = new SubArray(value); + } + + /// + /// Normals of the path's points, in the path's local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use Normals instead")] + public Vector3[] Normal + { + get => Normals.CopyToArray(ArrayPools.Vector3); + set => Normals = new SubArray(value); + } + + /// + /// Arbitrary mapped value to each point, usually U coordinate + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use CustomValues instead")] + public float[] Map + { + get => CustomValues.CopyToArray(ArrayPools.Single); + set => CustomValues = new SubArray(value); + } + + #endregion + + /// + /// Groups/Patches + /// + public List MaterialGroups; + /// + /// Whether the source is managed or not + /// + /// This could be used to determine if values needs to be transformed into generator space or not + public bool SourceIsManaged; + /// + /// Whether the base spline is closed or not + /// + public bool Closed; + /// + /// Whether the Shape/Path is seamless, i.e. Closed==true and the whole length is covered + /// + public bool Seamless; + /// + /// Length in world units + /// + public float Length; + + /// + /// Gets the number of sample points + /// + public override int Count + { + get { return relativeDistances.Count; } + } + + #region ### Private fields ### + + //TODO Debug time checks that F arrays contain values between 0 and 1 + private SubArray relativeDistances; + //OPTIM can the storage of this array be avoided by storing only SourceF and the start and end Distance, and infer F values only when needed? + //OPTIM can we just assign SourceF to F when start and end distances are equal to respectively 0 and 1? (which is the case most of the time) + private SubArray sourceRelativeDistances; + private SubArray positions; + private SubArray normals; + /*TODO Map is defined in CGShape but: + 1- filling it inside an instance of CGPath (which inherits from CGShape) is useless, since Map is used only by CGVolume when it takes it from a CGShape, and not a CGPath. So an optimization would be to not fill Map for instances not consumed by CGVolume + 2- I hope that storing it might be not needed, and calculating it only when needed might be possible + */ + private SubArray customValues; + + // Caching + //TODO DESIGN OPTIM are these still needed, now that GetFIndex was greatly optimized? + private float mCacheLastF = float.MaxValue; + private int mCacheLastIndex; + private float mCacheLastFrag; + + #endregion + + public CGShape() : base() + { + sourceRelativeDistances = ArrayPools.Single.Allocate(0); + relativeDistances = ArrayPools.Single.Allocate(0); + positions = ArrayPools.Vector3.Allocate(0); + normals = ArrayPools.Vector3.Allocate(0); + customValues = ArrayPools.Single.Allocate(0); + DuplicatePoints = new List(); + MaterialGroups = new List(); + } + + public CGShape(CGShape source) : base() + { + positions = ArrayPools.Vector3.Clone(source.positions); + normals = ArrayPools.Vector3.Clone(source.normals); + customValues = ArrayPools.Single.Clone(source.customValues); + DuplicatePoints = new List(source.DuplicatePoints); + relativeDistances = ArrayPools.Single.Clone(source.relativeDistances); + sourceRelativeDistances = ArrayPools.Single.Clone(source.sourceRelativeDistances); + MaterialGroups = new List(source.MaterialGroups.Count); + foreach (SamplePointsMaterialGroup materialGroup in source.MaterialGroups) + MaterialGroups.Add(materialGroup.Clone()); + Closed = source.Closed; + Seamless = source.Seamless; + Length = source.Length; + SourceIsManaged = source.SourceIsManaged; + } + + protected override bool Dispose(bool disposing) + { + bool result = base.Dispose(disposing); + if (result) + { + ArrayPools.Single.Free(sourceRelativeDistances); + ArrayPools.Single.Free(relativeDistances); + ArrayPools.Vector3.Free(positions); + ArrayPools.Vector3.Free(normals); + ArrayPools.Single.Free(customValues); + } + + return result; + } + + public override T Clone() + { + return new CGShape(this) as T; + } + + public static void Copy(CGShape dest, CGShape source) + { + ArrayPools.Vector3.Resize(ref dest.positions, source.positions.Count); + Array.Copy(source.positions.Array, 0, dest.positions.Array, 0, source.positions.Count); + ArrayPools.Vector3.Resize(ref dest.normals, source.normals.Count); + Array.Copy(source.normals.Array, 0, dest.normals.Array, 0, source.normals.Count); + ArrayPools.Single.Resize(ref dest.customValues, source.customValues.Count); + Array.Copy(source.customValues.Array, 0, dest.customValues.Array, 0, source.customValues.Count); + ArrayPools.Single.Resize(ref dest.relativeDistances, source.relativeDistances.Count); + Array.Copy(source.relativeDistances.Array, 0, dest.relativeDistances.Array, 0, source.relativeDistances.Count); + ArrayPools.Single.Resize(ref dest.sourceRelativeDistances, source.sourceRelativeDistances.Count); + Array.Copy(source.sourceRelativeDistances.Array, 0, dest.sourceRelativeDistances.Array, 0, source.sourceRelativeDistances.Count); + dest.DuplicatePoints.Clear(); + dest.DuplicatePoints.AddRange(source.DuplicatePoints); + dest.MaterialGroups = source.MaterialGroups.Select(g => g.Clone()).ToList(); + dest.Closed = source.Closed; + dest.Seamless = source.Seamless; + dest.Length = source.Length; + } + + //TODO documentation and whatnot + public void Copy(CGShape source) { Copy(this, source); } + + /// + /// Converts absolute (World Units) to relative (F) distance + /// + /// distance in world units + /// Relative distance (0..1) + public float DistanceToF(float distance) + { + return Mathf.Clamp(distance, 0, Length) / Length; + } + + /// + /// Converts relative (F) to absolute distance (World Units) + /// + /// relative distance (0..1) + /// Distance in World Units + public float FToDistance(float f) + { + return Mathf.Clamp01(f) * Length; + } + + /// + /// Gets the index of a certain F + /// + /// F (0..1) + /// fragment between the resulting and the next index (0..1) + /// the resulting index + public int GetFIndex(float f, out float frag) + { +#if CURVY_SANITY_CHECKS_PRIVATE + Assert.IsTrue(f >= 0); + if (f > 1) + Debug.LogWarning(f); +#endif + if (mCacheLastF != f) + { + mCacheLastF = f; + //OPTIM make sure f is a ratio, then remove the following line + float fValue = f == 1 ? f : f % 1; + mCacheLastIndex = getGenericFIndex(relativeDistances, fValue, out mCacheLastFrag); + } + frag = mCacheLastFrag; + + return mCacheLastIndex; + } + + /* + /// + /// Gets the index of a certain SourceF + /// + /// F (0..1) + /// fragment between the resulting and the next index (0..1) + /// the resulting index + public int GetSourceFIndex(float sourceF, out float frag) + { + if (mCacheLastSourceF != sourceF) + { + mCacheLastSourceF = sourceF; + + mCacheLastSourceIndex = getGenericFIndex(ref F, sourceF, out mCacheLastSourceFrag); + } + frag = mCacheLastSourceFrag; + return mCacheLastSourceIndex; + } + */ + /// + /// Interpolates Position by F + /// + /// 0..1 + /// the interpolated position + public Vector3 InterpolatePosition(float f) + { + float frag; + int idx = GetFIndex(f, out frag); + return OptimizedOperators.LerpUnclamped(positions.Array[idx], positions.Array[idx + 1], frag); + } + + /// + /// Interpolates Normal by F + /// + /// 0..1 + /// the interpolated normal + public Vector3 InterpolateUp(float f) + { + float frag; + int idx = GetFIndex(f, out frag); + return Vector3.SlerpUnclamped(normals.Array[idx], normals.Array[idx + 1], frag); + } + + /// + /// Interpolates Position and Normal by F + /// + /// 0..1 + /// + /// a.k.a normal + public void Interpolate(float f, out Vector3 position, out Vector3 up) + { + float frag; + int idx = GetFIndex(f, out frag); + position = OptimizedOperators.LerpUnclamped(positions.Array[idx], positions.Array[idx + 1], frag); + up = Vector3.SlerpUnclamped(normals.Array[idx], normals.Array[idx + 1], frag); + } + + public void Move(ref float f, ref int direction, float speed, CurvyClamping clamping) + { + f = CurvyUtility.ClampTF(f + speed * direction, ref direction, clamping); + } + + public void MoveBy(ref float f, ref int direction, float speedDist, CurvyClamping clamping) + { + float dist = CurvyUtility.ClampDistance(FToDistance(f) + speedDist * direction, ref direction, clamping, Length); + f = DistanceToF(dist); + } + + /// + /// Recalculate Length and RelativeDistances (by measuring a polyline built from all Position points) + /// + /// Call this after TRS'ing a shape + public virtual void Recalculate() + { + Length = 0; + SubArray dist = ArrayPools.Single.Allocate(Count); + + for (int i = 1; i < Count; i++) + { + dist.Array[i] = dist.Array[i - 1] + (positions.Array[i].Subtraction(positions.Array[i - 1])).magnitude; + + } + + if (Count > 0) + { + Length = dist.Array[Count - 1]; + if (Length > 0) + { + + relativeDistances.Array[0] = 0; + float oneOnLength = 1 / Length; + for (int i = 1; i < Count - 1; i++) + relativeDistances.Array[i] = dist.Array[i] * oneOnLength; + relativeDistances.Array[Count - 1] = 1; + } + else + { + ArrayPools.Single.ResizeAndClear(ref relativeDistances, Count); + } + } + + ArrayPools.Single.Free(dist); + + //for (int i = 1; i < Count; i++) + // Direction[i] = (Position[i] - Position[i - 1]).normalized; + } + + [Obsolete("Use another overload of RecalculateNormals instead")] + public void RecalculateNormals(List softEdges) + { + //TODO this implementation works properly with 2D shapes, but creates invalid results with 3D paths. This is ok for now because the code calls it only on shapes, but it is a ticking bomb + //TODO document the method after fixing it + if (normals.Count != positions.Count) + { + ArrayPools.Vector3.Resize(ref normals, positions.Count); + } + + for (int mg = 0; mg < MaterialGroups.Count; mg++) + { + for (int p = 0; p < MaterialGroups[mg].Patches.Count; p++) + { + SamplePointsPatch patch = MaterialGroups[mg].Patches[p]; + Vector3 t; + for (int vt = 0; vt < patch.Count; vt++) + { + int x = patch.Start + vt; + t = (positions.Array[x + 1] - positions.Array[x]).normalized; + normals.Array[x] = new Vector3(-t.y, t.x, 0); +#if CURVY_SANITY_CHECKS_PRIVATE + if (normals.Array[x].magnitude.Approximately(1f) == false) + Debug.LogError($"Normal is not normalized, length was {normals.Array[x].magnitude}");//happens if shape is not in the XY plane +#endif + } + t = (positions.Array[patch.End] - positions.Array[patch.End - 1]).normalized; + normals.Array[patch.End] = new Vector3(-t.y, t.x, 0); +#if CURVY_SANITY_CHECKS_PRIVATE + if (normals.Array[patch.End].magnitude.Approximately(1f) == false) + Debug.LogError("Normal is not normalized");//happens if shape is not in the XY plane +#endif + } + } + + // Handle soft edges + for (int i = 0; i < softEdges.Count; i++) + { + int previous = softEdges.ToArray()[i] - 1; + if (previous < 0) + previous = positions.Count - 1; + + int beforePrevious = previous - 1; + if (beforePrevious < 0) + beforePrevious = positions.Count - 1; + + int next = softEdges.ToArray()[i] + 1; + if (next == positions.Count) + next = 0; + + normals.Array[softEdges.ToArray()[i]] = Vector3.Slerp(normals.Array[beforePrevious], normals.Array[next], 0.5f); + normals.Array[previous] = normals.Array[softEdges.ToArray()[i]]; + } + } + + /// + /// Recalculate the shape's based on the spline the shape was rasterized from + /// + public void RecalculateNormals([NotNull] CurvySpline spline) + { +#if CURVY_SANITY_CHECKS + Assert.IsFalse(spline.Orientation == CurvyOrientation.None); +#endif + if (normals.Count != positions.Count) + { + ArrayPools.Vector3.Resize(ref normals, positions.Count); + } + + Vector3[] normalsArray = normals.Array; + float[] floats = SourceRelativeDistances.Array; + + for (int mg = 0; mg < MaterialGroups.Count; mg++) + { + for (int p = 0; p < MaterialGroups[mg].Patches.Count; p++) + { + SamplePointsPatch patch = MaterialGroups[mg].Patches[p]; + for (int vt = 0; vt < patch.Count; vt++) + { + int x = patch.Start + vt; + normalsArray[x] = spline.GetOrientationUpFast(spline.DistanceToTF(spline.Length * floats[x]), Space.Self); +#if CURVY_SANITY_CHECKS_PRIVATE + if (normalsArray[x].magnitude.Approximately(1f) == false) + Debug.LogError($"Normal is not normalized, length was {normalsArray[x].magnitude}");//happens if shape is not in the XY plane +#endif + } + + normalsArray[patch.End] = spline.GetOrientationUpFast(spline.DistanceToTF(spline.Length * floats[patch.End]), Space.Self); +#if CURVY_SANITY_CHECKS_PRIVATE + if (normalsArray[patch.End].magnitude.Approximately(1f) == false) + Debug.LogError("Normal is not normalized");//happens if shape is not in the XY plane +#endif + } + } + + // Handle soft edges + foreach (DuplicateSamplePoint duplicateSamplePoint in DuplicatePoints) + { + if (duplicateSamplePoint.IsHardEdge) + { + int index = duplicateSamplePoint.StartIndex; + normalsArray[index] = normalsArray[Math.Max(0, index - 1)]; + } + } + } + + /// + /// Recalculate the shape's based on shape's rasterized + /// + public void RecalculateNormals() + { + //TODO this implementation works properly with 2D shapes, but creates invalid results with 3D paths. This is ok for now because the code calls it only on shapes, but it is a ticking bomb + //TODO document the method after fixing it + if (normals.Count != positions.Count) + { + ArrayPools.Vector3.Resize(ref normals, positions.Count); + } + + Vector3[] positionsArray = positions.Array; + Vector3[] normalsArray = normals.Array; + + for (int mg = 0; mg < MaterialGroups.Count; mg++) + { + for (int p = 0; p < MaterialGroups[mg].Patches.Count; p++) + { + SamplePointsPatch patch = MaterialGroups[mg].Patches[p]; + Vector3 t; + int x; + for (int vt = 0; vt < patch.Count; vt++) + { + x = patch.Start + vt; + t = (positionsArray[x + 1] - positionsArray[x]).normalized; + //todo handle case where t = 0 + normalsArray[x] = new Vector3(-t.y, t.x, 0); +#if CURVY_SANITY_CHECKS_PRIVATE + if (normalsArray[x].magnitude.Approximately(1f) == false) + Debug.LogError($"Normal is not normalized, length was {normalsArray[x].magnitude}");//happens if shape is not in the XY plane or if length is 0 +#endif + } + t = (positionsArray[patch.End] - positionsArray[patch.End - 1]).normalized; + normalsArray[patch.End] = new Vector3(-t.y, t.x, 0); +#if CURVY_SANITY_CHECKS_PRIVATE + if (normalsArray[patch.End].magnitude.Approximately(1f) == false) + Debug.LogError("Normal is not normalized");//happens if shape is not in the XY plane +#endif + } + } + + // Handle soft edges + foreach (DuplicateSamplePoint duplicateSamplePoint in DuplicatePoints) + { + if (duplicateSamplePoint.IsHardEdge == false) + { + int previous = duplicateSamplePoint.EndIndex - 1; + if (previous < 0) + previous = positions.Count - 1; + + int beforePrevious = previous - 1; + if (beforePrevious < 0) + beforePrevious = positions.Count - 1; + + int next = duplicateSamplePoint.EndIndex + 1; + if (next == positions.Count) + next = 0; + + normalsArray[duplicateSamplePoint.EndIndex] = Vector3.Slerp(normalsArray[beforePrevious], normalsArray[next], 0.5f); + normalsArray[previous] = normalsArray[duplicateSamplePoint.EndIndex]; + + } + } + } + } + + /// + /// Path Data (Shape + Direction (Spline Tangents) + Orientation/Up) + /// + [CGDataInfo(0.13f, 0.59f, 0.95f)] + public class CGPath : CGShape + { + /// + /// Tangents of the path's points, in the path's local space + /// + /// Setting a new will the current instance + public SubArray Directions + { + get => directions; + set + { + ArrayPools.Vector3.Free(directions); + directions = value; + } + } + + /// + /// Tangents of the path's points, in the path's local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use Directions instead")] + public Vector3[] Direction + { + get => Directions.CopyToArray(ArrayPools.Vector3); + set => Directions = new SubArray(value); + } + + private SubArray directions; + + public CGPath() : base() + { + directions = ArrayPools.Vector3.Allocate(0); + } + public CGPath(CGPath source) : base(source) + { + directions = ArrayPools.Vector3.Clone(source.directions); + } + + protected override bool Dispose(bool disposing) + { + bool result = base.Dispose(disposing); + if (result) + ArrayPools.Vector3.Free(directions); + return result; + } + + public override T Clone() + { + return new CGPath(this) as T; + } + + public static void Copy(CGPath dest, CGPath source) + { + CGShape.Copy(dest, source); + ArrayPools.Vector3.Resize(ref dest.directions, source.directions.Count); + Array.Copy(source.directions.Array, 0, dest.directions.Array, 0, source.directions.Count); + } + + /// + /// Interpolates Position, Direction and Normal by F + /// + /// 0..1 + /// + /// a.k.a tangent + /// a.k.a normal + public void Interpolate(float f, out Vector3 position, out Vector3 direction, out Vector3 up) + { + float frag; + int idx = GetFIndex(f, out frag); + position = OptimizedOperators.LerpUnclamped(Positions.Array[idx], Positions.Array[idx + 1], frag); + direction = Vector3.SlerpUnclamped(directions.Array[idx], directions.Array[idx + 1], frag); + up = Vector3.SlerpUnclamped(Normals.Array[idx], Normals.Array[idx + 1], frag); + } + + [Obsolete("Method is no more used by Curvy and will get removed. Copy its content if you still need it")] + public void Interpolate(float f, float angleF, out Vector3 pos, out Vector3 dir, out Vector3 up) + { + Interpolate(f, out pos, out dir, out up); + if (angleF != 0) + { + Quaternion R = Quaternion.AngleAxis(angleF * -360, dir); + up = R * up; + } + } + + /// + /// Interpolates Direction by F + /// + /// 0..1 + public Vector3 InterpolateDirection(float f) + { + float frag; + int idx = GetFIndex(f, out frag); + return Vector3.SlerpUnclamped(directions.Array[idx], directions.Array[idx + 1], frag); + } + } + + /// + /// Volume Data (Path + Vertex, VertexNormal, Cross) + /// + [CGDataInfo(0.08f, 0.4f, 0.75f)] + public class CGVolume : CGPath + { + /// + /// Positions of the points, in the local space + /// + /// Setting a new will the current instance + public SubArray Vertices + { + get => vertices; + set + { + ArrayPools.Vector3.Free(vertices); + vertices = value; + } + } + + /// + /// Notmals of the points, in the local space + /// + /// Setting a new will the current instance + public SubArray VertexNormals + { + get => vertexNormals; + set + { + ArrayPools.Vector3.Free(vertexNormals); + vertexNormals = value; + } + } + + /// + /// The of the used in the extrusion of this volume + /// + /// Setting a new will the current instance + public SubArray CrossRelativeDistances + { + get => crossRelativeDistances; + set + { + ArrayPools.Single.Free(crossRelativeDistances); + crossRelativeDistances = value; + } + } + + /// + /// The of the used in the extrusion of this volume + /// + /// Setting a new will the current instance + public SubArray CrossCustomValues + { + get => crossCustomValues; + set + { + ArrayPools.Single.Free(crossCustomValues); + crossCustomValues = value; + } + } + + /// + /// The 2D scale of the mesh at each sample point of the volume's path + /// + public SubArray Scales + { + get => scales; + set + { + ArrayPools.Vector2.Free(scales); + scales = value; + } + } + + #region Obsolete + + /// + /// Positions of the points, in the local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use Vertices instead")] + public Vector3[] Vertex + { + get => Vertices.CopyToArray(ArrayPools.Vector3); + set => Vertices = new SubArray(value); + } + + /// + /// Normals of the points, in the local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use VertexNormals instead")] + public Vector3[] VertexNormal + { + get => VertexNormals.CopyToArray(ArrayPools.Vector3); + set => VertexNormals = new SubArray(value); + } + + /// + /// The of the used in the extrusion of this volume + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use CrossRelativeDistances instead")] + public float[] CrossF + { + get => CrossRelativeDistances.CopyToArray(ArrayPools.Single); + set => CrossRelativeDistances = new SubArray(value); + } + + /// + /// The of the used in the extrusion of this volume + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use CrossCustomValues instead")] + public float[] CrossMap + { + get => CrossCustomValues.CopyToArray(ArrayPools.Single); + set => CrossCustomValues = new SubArray(value); + } + + #endregion + + /// + /// Length of a given cross segment. Will be calculated on demand only! + /// + [Obsolete("Do not use this. Use the GetCrossLength method instead")] + public float[] SegmentLength + { + get + { + if (_segmentLength == null) + _segmentLength = new float[Count]; + return _segmentLength; + } + set => _segmentLength = value; + } + + /// + /// Gets the number of cross shape's sample points + /// + public int CrossSize { get { return crossRelativeDistances.Count; } } + /// + /// Whether the Cross base spline is closed or not + /// + public bool CrossClosed;//TODO make obsolete then remove this, it is not needed by Curvy + /// + /// Whether the Cross shape covers the whole length of the base spline + /// + public bool CrossSeamless; + /// + /// A shift of the value that is applied when using the interpolation methods on the volume, like + /// + public float CrossFShift; + + public SamplePointsMaterialGroupCollection CrossMaterialGroups; + + public int VertexCount { get { return vertices.Count; } } + + #region private fields + + private SubArray vertices; + private SubArray vertexNormals; + private SubArray crossRelativeDistances; + private SubArray crossCustomValues; + private SubArray scales; + [Obsolete("Do not use this. Use the GetCrossLength method instead")] + private float[] _segmentLength; + + #endregion + + #region ### Constructors ### + + [Obsolete("Use one of the other constructors")] + public CGVolume() : base() { } + + public CGVolume(int samplePoints, CGShape crossShape) : base() + { + crossRelativeDistances = ArrayPools.Single.Clone(crossShape.RelativeDistances); + crossCustomValues = ArrayPools.Single.Clone(crossShape.CustomValues); + scales = ArrayPools.Vector2.Allocate(samplePoints); + CrossClosed = crossShape.Closed; + CrossSeamless = crossShape.Seamless; + CrossMaterialGroups = new SamplePointsMaterialGroupCollection(crossShape.MaterialGroups); + vertices = ArrayPools.Vector3.Allocate(CrossSize * samplePoints); + vertexNormals = ArrayPools.Vector3.Allocate(vertices.Count); + } + + public CGVolume(CGPath path, CGShape crossShape) + : base(path) + { + crossRelativeDistances = ArrayPools.Single.Clone(crossShape.RelativeDistances); + crossCustomValues = ArrayPools.Single.Clone(crossShape.CustomValues); + scales = ArrayPools.Vector2.Allocate(Count); + CrossClosed = crossShape.Closed; + CrossSeamless = crossShape.Seamless; + CrossMaterialGroups = new SamplePointsMaterialGroupCollection(crossShape.MaterialGroups); + vertices = ArrayPools.Vector3.Allocate(CrossSize * Count); + vertexNormals = ArrayPools.Vector3.Allocate(vertices.Count); + } + + public CGVolume(CGVolume source) + : base(source) + { + vertices = ArrayPools.Vector3.Clone(source.vertices); + vertexNormals = ArrayPools.Vector3.Clone(source.vertexNormals); + crossRelativeDistances = ArrayPools.Single.Clone(source.crossRelativeDistances); + crossCustomValues = ArrayPools.Single.Clone(source.crossCustomValues); + scales = ArrayPools.Vector2.Clone(source.scales); + CrossClosed = source.Closed; + CrossSeamless = source.CrossSeamless; + CrossFShift = source.CrossFShift; + CrossMaterialGroups = new SamplePointsMaterialGroupCollection(source.CrossMaterialGroups); + } + + #endregion + + protected override bool Dispose(bool disposing) + { + bool result = base.Dispose(disposing); + if (result) + { + ArrayPools.Vector3.Free(vertices); + ArrayPools.Vector3.Free(vertexNormals); + ArrayPools.Single.Free(crossRelativeDistances); + ArrayPools.Single.Free(crossCustomValues); + ArrayPools.Vector2.Free(scales); +#pragma warning disable 618 + if (SegmentLength != null) + ArrayPools.Single.Free(SegmentLength); +#pragma warning restore 618 + } + + return result; + } + + /// + /// Returns a CGVolume made from the given CGPath and CGShape + /// + /// If not null, the returned instance will be the one but with its fields updated. If null, a new instance will be created + /// The path used in the creation of the volume + /// The shape used in the creation of the volume + /// + public static CGVolume Get(CGVolume data, CGPath path, CGShape crossShape) + { + if (data == null) + return new CGVolume(path, crossShape); + + Copy(data, path); + +#pragma warning disable 618 + if (data._segmentLength != null) + data.SegmentLength = new float[data.Count]; +#pragma warning restore 618 + + // Volume + ArrayPools.Single.Resize(ref data.crossRelativeDistances, crossShape.RelativeDistances.Count, false); + Array.Copy(crossShape.RelativeDistances.Array, 0, data.crossRelativeDistances.Array, 0, crossShape.RelativeDistances.Count); + + ArrayPools.Single.Resize(ref data.crossCustomValues, crossShape.CustomValues.Count, false); + Array.Copy(crossShape.CustomValues.Array, 0, data.crossCustomValues.Array, 0, crossShape.CustomValues.Count); + + ArrayPools.Vector2.Resize(ref data.scales, path.Count, false); + + data.CrossClosed = crossShape.Closed; + data.CrossSeamless = crossShape.Seamless; + data.CrossMaterialGroups = new SamplePointsMaterialGroupCollection(crossShape.MaterialGroups); + ArrayPools.Vector3.Resize(ref data.vertices, data.CrossSize * data.Positions.Count, false); + ArrayPools.Vector3.Resize(ref data.vertexNormals, data.vertices.Count, false); + return data; + } + + + public override T Clone() + { + return new CGVolume(this) as T; + } + + + + public void InterpolateVolume(float f, float crossF, out Vector3 pos, out Vector3 dir, out Vector3 up) + { + float frag; + float cfrag; + int v0Idx = GetVertexIndex(f, crossF, out frag, out cfrag); + + // (2)-(3) + // | \ | + // (0)-(1) + Vector3 xd, zd; + Vector3 v0 = vertices.Array[v0Idx]; + Vector3 v1 = vertices.Array[v0Idx + 1]; + Vector3 v2 = vertices.Array[v0Idx + CrossSize]; + + if (frag + cfrag > 1) + { + Vector3 v3 = vertices.Array[v0Idx + CrossSize + 1]; + xd = v3 - v2; + zd = v3 - v1; + pos = v2 - zd * (1 - frag) + xd * (cfrag); + } + else + { + xd = v1 - v0; + zd = v2 - v0; + pos = v0 + zd * frag + xd * cfrag; + } + + dir = zd.normalized; + up = Vector3.Cross(zd, xd); + } + + public Vector3 InterpolateVolumePosition(float f, float crossF) + { + float frag; + float cfrag; + int v0Idx = GetVertexIndex(f, crossF, out frag, out cfrag); + // (2)-(3) + // | \ | + // (0)-(1) + Vector3 xd, zd; + Vector3 v0 = vertices.Array[v0Idx]; + Vector3 v1 = vertices.Array[v0Idx + 1]; + Vector3 v2 = vertices.Array[v0Idx + CrossSize]; + + if (frag + cfrag > 1) + { + Vector3 v3 = vertices.Array[v0Idx + CrossSize + 1]; + xd = v3 - v2; + zd = v3 - v1; + return v2 - zd * (1 - frag) + xd * (cfrag); + } + else + { + xd = v1 - v0; + zd = v2 - v0; + return v0 + zd * frag + xd * cfrag; + } + } + + public Vector3 InterpolateVolumeDirection(float f, float crossF) + { + float frag; + float cfrag; + int v0Idx = GetVertexIndex(f, crossF, out frag, out cfrag); + + // (2)-(3) + // | \ | + // (0)-(1) + if (frag + cfrag > 1) + { + Vector3 v1 = vertices.Array[v0Idx + 1]; + Vector3 v3 = vertices.Array[v0Idx + CrossSize + 1]; + return (v3 - v1).normalized; + } + else + { + Vector3 v0 = vertices.Array[v0Idx]; + Vector3 v2 = vertices.Array[v0Idx + CrossSize]; + return (v2 - v0).normalized; + } + + } + + public Vector3 InterpolateVolumeUp(float f, float crossF) + { + float frag; + float cfrag; + int v0Idx = GetVertexIndex(f, crossF, out frag, out cfrag); + + // (2)-(3) + // | \ | + // (0)-(1) + Vector3 xd, zd; + + Vector3 v1 = vertices.Array[v0Idx + 1]; + Vector3 v2 = vertices.Array[v0Idx + CrossSize]; + + if (frag + cfrag > 1) + { + Vector3 v3 = vertices.Array[v0Idx + CrossSize + 1]; + xd = v3 - v2; + zd = v3 - v1; + } + else + { + Vector3 v0 = vertices.Array[v0Idx]; + xd = v1 - v0; + zd = v2 - v0; + } + return Vector3.Cross(zd, xd); + } + + public float GetCrossLength(float pathF) + { + int s0; + int s1; + float frag; +#pragma warning disable 618 + GetSegmentIndices(pathF, out s0, out s1, out frag); +#pragma warning restore 618 + +#pragma warning disable 618 + if (SegmentLength[s0] == 0) + SegmentLength[s0] = calcSegmentLength(s0); + if (SegmentLength[s1] == 0) + SegmentLength[s1] = calcSegmentLength(s1); + + return Mathf.LerpUnclamped(SegmentLength[s0], SegmentLength[s1], frag); +#pragma warning restore 618 + } + + + public float CrossFToDistance(float f, float crossF, CurvyClamping crossClamping = CurvyClamping.Clamp) + { + return GetCrossLength(f) * CurvyUtility.ClampTF(crossF, crossClamping); + } + + public float CrossDistanceToF(float f, float distance, CurvyClamping crossClamping = CurvyClamping.Clamp) + { + float cl = GetCrossLength(f); + return CurvyUtility.ClampDistance(distance, crossClamping, cl) / cl; + } + + /// + /// Get the indices of the two points on the path that are surrounding the point at pathF + /// + /// The relative distance of the input point on the path + /// Index of the path point just before the input point + /// Index of the path point just after the input point + /// The interpolation value between segment0Index and segment1Index, defining the exact position of the input point between those two points + [Obsolete("Method will get removed. Copy its content if you still need it")] + public void GetSegmentIndices(float pathF, out int segment0Index, out int segment1Index, out float frag) + { + segment0Index = GetFIndex(Mathf.Repeat(pathF, 1), out frag); + segment1Index = segment0Index + 1; + } + + public int GetSegmentIndex(int segment) + { + return segment * CrossSize; + } + + public int GetCrossFIndex(float crossF, out float frag) + { + float f = crossF + CrossFShift; + //OPTIM if f is always positive, replace repeat with %. Right now crossF can be negative + f = f == 1 ? f : Mathf.Repeat(f, 1); + int index = getGenericFIndex(crossRelativeDistances, f, out frag); + + return index; + } + + /// + /// Get the index of the first vertex belonging to the segment a certain F is part of + /// + /// position on the path (0..1) + /// remainder between the returned segment and the next segment + /// a vertex index + public int GetVertexIndex(float pathF, out float pathFrag) + { + int pIdx = GetFIndex(pathF, out pathFrag); + return pIdx * CrossSize; + } + + /// + /// Get the index of the first vertex of the edge a certain F and CrossF is part of + /// + /// position on the path (0..1) + /// position on the cross (0..1) + /// remainder between the segment and the next segment + /// remainder between the returned vertex and the next vertex + /// a vertex index + public int GetVertexIndex(float pathF, float crossF, out float pathFrag, out float crossFrag) + { + int pIdx = GetVertexIndex(pathF, out pathFrag); + int cIdx = GetCrossFIndex(crossF, out crossFrag); + return pIdx + cIdx; + } + + /// + /// Gets all vertices belonging to one or more extruded shape segments + /// + /// indices of segments in question + public Vector3[] GetSegmentVertices(params int[] segmentIndices) + { + SubArray verts = ArrayPools.Vector3.Allocate(CrossSize * segmentIndices.Length); + for (int i = 0; i < segmentIndices.Length; i++) + { + int sourceIndex = segmentIndices[i] * CrossSize; + int destinationIndex = i * CrossSize; + Array.Copy(vertices.Array, sourceIndex, verts.Array, destinationIndex, CrossSize); + } + + return verts.CopyToArray(ArrayPools.Vector3); + } + + + private float calcSegmentLength(int segmentIndex) + { + int vstart = segmentIndex * CrossSize; + int vend = vstart + CrossSize - 1; + float l = 0; + for (int i = vstart; i < vend; i++) + l += (vertices.Array[i + 1] - vertices.Array[i]).magnitude; + + return l; + } + + } + + /// + /// Bounds data class + /// + [CGDataInfo(1, 0.8f, 0.5f)] + public class CGBounds : CGData + { + protected Bounds? mBounds; + public Bounds Bounds + { + get + { + if (!mBounds.HasValue) + RecalculateBounds(); + return mBounds.Value; + } + set + { + if (mBounds != value) + mBounds = value; + } + } + + public float Depth + { + get + { + //OPTIM just do the delta between max z and min z, and get rid of bounds + return Bounds.size.z; + } + } + + public CGBounds() : base() { } + + public CGBounds(Bounds bounds) : base() + { + Bounds = bounds; + } + + public CGBounds(CGBounds source) + { + Name = source.Name; + if (source.mBounds.HasValue) //Do not copy bounds if they are not computed yet + Bounds = source.Bounds; + } + + + public virtual void RecalculateBounds() + { + Bounds = new Bounds(); + } + + public override T Clone() + { + return new CGBounds(this) as T; + } + + public static void Copy(CGBounds dest, CGBounds source) + { + if (source.mBounds.HasValue) //Do not copy bounds if they are not computed yet + dest.Bounds = source.Bounds; + } + } + + /// + /// SubMesh data (triangles, material) + /// + public class CGVSubMesh : CGData + { + /// + /// Vertex indices constituting the mesh's triangles + /// + /// Setting a new will the current instance + public SubArray TrianglesList + { + get => triangles; + set + { + ArrayPools.Int32.Free(triangles); + triangles = value; + } + } + + /// + /// Vertex indices constituting the mesh's triangles + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use TrianglesList instead")] + public int[] Triangles + { + get => TrianglesList.CopyToArray(ArrayPools.Int32); + set => TrianglesList = new SubArray(value); + } + + public Material Material; + private SubArray triangles; + + public override int Count + { + get + { + return triangles.Count; + } + } + + public CGVSubMesh(Material material = null) : base() + { + Material = material; + triangles = ArrayPools.Int32.Allocate(0); + } + + public CGVSubMesh(int[] triangles, Material material = null) : base() + { + Material = material; + this.triangles = new SubArray(triangles); + } + + public CGVSubMesh(SubArray triangles, Material material = null) : base() + { + Material = material; + this.triangles = triangles; + } + + public CGVSubMesh(int triangleCount, Material material = null) : base() + { + Material = material; + triangles = ArrayPools.Int32.Allocate(triangleCount); + } + + public CGVSubMesh(CGVSubMesh source) : base() + { + Material = source.Material; + triangles = ArrayPools.Int32.Clone(source.triangles); + } + + protected override bool Dispose(bool disposing) + { + bool result = base.Dispose(disposing); + if (result) + ArrayPools.Int32.Free(triangles); + return result; + } + + public override T Clone() + { + return new CGVSubMesh(this) as T; + } + + public static CGVSubMesh Get(CGVSubMesh data, int triangleCount, Material material = null) + { + + if (data == null) + return new CGVSubMesh(triangleCount, material); + + ArrayPools.Int32.Resize(ref data.triangles, triangleCount); + data.Material = material; + return data; + } + + public void ShiftIndices(int offset, int startIndex = 0) + { + for (int i = startIndex; i < triangles.Count; i++) + triangles.Array[i] += offset; + } + + public void Add(CGVSubMesh other, int shiftIndexOffset = 0) + { + int trianglesLength = triangles.Count; + int otherTriangleLength = other.triangles.Count; + + if (otherTriangleLength == 0) + return; + + ArrayPools.Int32.Resize(ref triangles, trianglesLength + otherTriangleLength); + + Array.Copy(other.triangles.Array, 0, triangles.Array, trianglesLength, otherTriangleLength); + + if (shiftIndexOffset != 0) + ShiftIndices(shiftIndexOffset, trianglesLength); + } + } + + /// + /// Mesh Data (Bounds + Vertex,UV,UV2,Normal,Tangents,SubMehes) + /// + [CGDataInfo(0.98f, 0.5f, 0)] + public class CGVMesh : CGBounds + { + +#if CONTRACTS_FULL + [ContractInvariantMethod] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "Required for code contracts.")] + private void ObjectInvariant() + { + Contract.Invariant(Vertex != null); + Contract.Invariant(UV != null); + Contract.Invariant(UV2 != null); + Contract.Invariant(Normal != null); + Contract.Invariant(Tangents != null); + Contract.Invariant(SubMeshes != null); + + Contract.Invariant(UV.Length == 0 || UV.Length == Vertex.Length); + Contract.Invariant(UV2.Length == 0 || UV2.Length == Vertex.Length); + Contract.Invariant(Normal.Length == 0 || Normal.Length == Vertex.Length); + Contract.Invariant(Tangents.Length == 0 || Tangents.Length == Vertex.Length); + } +#endif + + /// + /// Positions of the points, in the local space + /// + /// Setting a new will the current instance + /// If you modify the content of the returned array, make sure to call before calling + public SubArray Vertices + { + get => vertices; + set + { + ArrayPools.Vector3.Free(vertices); + vertices = value; + OnVerticesChanged(); + } + } + + /// + /// UVs of the points + /// + /// Setting a new will the current instance + public SubArray UVs + { + get => uvs; + set + { + ArrayPools.Vector2.Free(uvs); + uvs = value; + } + } + + /// + /// UV2s of the points + /// + /// Setting a new will the current instance + public SubArray UV2s + { + get => uv2s; + set + { + ArrayPools.Vector2.Free(uv2s); + uv2s = value; + } + } + + /// + /// Normals of the points, in the local space + /// + /// Setting a new will the current instance + public SubArray NormalsList + { + get => normals; + set + { + ArrayPools.Vector3.Free(normals); + normals = value; + } + } + + /// + /// Tangents of the points, in the local space + /// + /// Setting a new will the current instance + public SubArray TangentsList + { + get => tangents; + set + { + ArrayPools.Vector4.Free(tangents); + tangents = value; + } + } + + #region Obsolete + + /// + /// Positions of the points, in the local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use Vertices instead")] + public Vector3[] Vertex + { + get => Vertices.CopyToArray(ArrayPools.Vector3); + set => Vertices = new SubArray(value); + } + + /// + /// UVs of the points + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use UVs instead")] + public Vector2[] UV + { + get => UVs.CopyToArray(ArrayPools.Vector2); + set => UVs = new SubArray(value); + } + + /// + /// UV2s of the points + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use UV2s instead")] + public Vector2[] UV2 + { + get => UV2s.CopyToArray(ArrayPools.Vector2); + set => UV2s = new SubArray(value); + } + + + /// + /// Normals of the points, in the local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use NormalList instead")] + public Vector3[] Normals + { + get => NormalsList.CopyToArray(ArrayPools.Vector3); + set => NormalsList = new SubArray(value); + } + + /// + /// Tangents of the points, in the local space + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use TangentsList instead")] + public Vector4[] Tangents + { + get => TangentsList.CopyToArray(ArrayPools.Vector4); + set => TangentsList = new SubArray(value); + } + + + #endregion + public CGVSubMesh[] SubMeshes; + /// + /// Gets the number of vertices + /// + public override int Count + { + get + { + return vertices.Count; + } + } + + public bool HasUV { get { return uvs.Count > 0; } } + public bool HasUV2 { get { return uv2s.Count > 0; } } + /// + /// True if at least one vertex has a normal + /// + public bool HasNormals { get { return normals.Count > 0; } } + + /// + /// True if but not all vertices have normals + /// + public bool HasPartialNormals + { + get + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(hasPartialNormals == false || HasNormals); +#endif + return hasPartialNormals; + } + private set => hasPartialNormals = value; + } + + /// + /// True if at least one vertex has a tangent + /// + public bool HasTangents { get { return tangents.Count > 0; } } + + /// + /// True if but not all vertices have tangents + /// + public bool HasPartialTangents + { + get + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(hasPartialTangents == false || HasTangents); +#endif + return hasPartialTangents; + } + private set => hasPartialTangents = value; + } + + public int TriangleCount + { + get + { + int cnt = 0; + for (int i = 0; i < SubMeshes.Length; i++) + cnt += SubMeshes[i].TrianglesList.Count; + return cnt / 3; + } + } + + #region Private fields + + /// + /// An array of the index of vertices when sorted by Z coordinate, from smaller to bigger + /// + private SubArray? sortedVertexIndices; + /// + /// Lock used when generating + /// + private readonly object vertexIndicesLock = new object(); + + private SubArray vertices; + + private SubArray uvs; + + private SubArray uv2s; + + private SubArray normals; + + private SubArray tangents; + + private bool hasPartialNormals; + + private bool hasPartialTangents; + + #endregion + public CGVMesh() : this(0) { } + public CGVMesh(int vertexCount, bool addUV = false, bool addUV2 = false, bool addNormals = false, bool addTangents = false) : base() + { + vertices = ArrayPools.Vector3.Allocate(vertexCount); + uvs = addUV + ? ArrayPools.Vector2.Allocate(vertexCount) + : ArrayPools.Vector2.Allocate(0); + uv2s = addUV2 + ? ArrayPools.Vector2.Allocate(vertexCount) + : ArrayPools.Vector2.Allocate(0); + normals = addNormals + ? ArrayPools.Vector3.Allocate(vertexCount) + : ArrayPools.Vector3.Allocate(0); + tangents = addTangents + ? ArrayPools.Vector4.Allocate(vertexCount) + : ArrayPools.Vector4.Allocate(0); + hasPartialNormals = false; + hasPartialTangents = false; + SubMeshes = new CGVSubMesh[0]; + } + public CGVMesh(CGVolume volume) : this(volume.Vertices.Count) + { + Array.Copy(volume.Vertices.Array, 0, vertices.Array, 0, volume.Vertices.Count); + } + + public CGVMesh(CGVolume volume, IntRegion subset) + : this((subset.LengthPositive + 1) * volume.CrossSize, false, false, true) + { + int start = subset.Low * volume.CrossSize; + Array.Copy(volume.Vertices.Array, start, vertices.Array, 0, vertices.Count); + Array.Copy(volume.VertexNormals.Array, start, normals.Array, 0, normals.Count); + } + + public CGVMesh(CGVMesh source) : base(source) + { + vertices = ArrayPools.Vector3.Clone(source.vertices); + uvs = ArrayPools.Vector2.Clone(source.uvs); + uv2s = ArrayPools.Vector2.Clone(source.uv2s); + normals = ArrayPools.Vector3.Clone(source.normals); + tangents = ArrayPools.Vector4.Clone(source.tangents); + hasPartialNormals = source.HasPartialNormals; + hasPartialTangents = source.HasPartialTangents; + SubMeshes = new CGVSubMesh[source.SubMeshes.Length]; + for (int i = 0; i < source.SubMeshes.Length; i++) + SubMeshes[i] = new CGVSubMesh(source.SubMeshes[i]); + } + + public CGVMesh(CGMeshProperties meshProperties) : this(meshProperties.Mesh, meshProperties.Material, meshProperties.Matrix) { } + + public CGVMesh(Mesh source, Material[] materials, Matrix4x4 trsMatrix) : base() + { + Name = source.name; + vertices = new SubArray(source.vertices); + normals = new SubArray(source.normals); + tangents = new SubArray(source.tangents); + hasPartialNormals = false; + hasPartialTangents = false; + uvs = new SubArray(source.uv); + uv2s = new SubArray(source.uv2); + SubMeshes = new CGVSubMesh[source.subMeshCount]; + for (int s = 0; s < source.subMeshCount; s++) + SubMeshes[s] = new CGVSubMesh(source.GetTriangles(s), (materials.Length > s) ? materials[s] : null); + + Bounds = source.bounds; + + if (!trsMatrix.isIdentity) + TRS(trsMatrix); + + } + + protected override bool Dispose(bool disposing) + { + bool result = base.Dispose(disposing); + if (result) + { + if (sortedVertexIndices != null) + ArrayPools.Int32.Free(sortedVertexIndices.Value); + ArrayPools.Vector3.Free(vertices); + ArrayPools.Vector2.Free(uvs); + ArrayPools.Vector2.Free(uv2s); + ArrayPools.Vector3.Free(normals); + ArrayPools.Vector4.Free(tangents); + + //Do not dispose SubMeshes if the call is due to finalization, since submeshes are disposable by themselves. + if (disposing) + for (var i = 0; i < SubMeshes.Length; i++) + SubMeshes[i].Dispose(); + } + return result; + } + + public override T Clone() + { + return new CGVMesh(this) as T; + } + + [Obsolete("Member not used by Curvy, will get removed next major version. Use another overload of this method")] + public static CGVMesh Get(CGVMesh data, CGVolume source, bool addUV, bool reverseNormals) + { + return Get(data, source, new IntRegion(0, source.Count - 1), addUV, reverseNormals); + } + + [Obsolete("Member not used by Curvy, will get removed next major version. Use another overload of this method")] + public static CGVMesh Get(CGVMesh data, CGVolume source, IntRegion subset, bool addUV, bool reverseNormals) + { + return Get(data, source, subset, addUV, false, reverseNormals); + } + + public static CGVMesh Get(CGVMesh data, CGVolume source, IntRegion subset, bool addUV, bool addUV2, bool reverseNormals) + { + int start = subset.Low * source.CrossSize; + int size = (subset.LengthPositive + 1) * source.CrossSize; + + if (data == null) + data = new CGVMesh(size, addUV, addUV2, true); + else + { + if (data.vertices.Count != size) + ArrayPools.Vector3.Resize(ref data.vertices, size, false); + + if (data.normals.Count != size) + ArrayPools.Vector3.Resize(ref data.normals, size, false); + + int uvSize = (addUV) ? size : 0; + if (data.uvs.Count != uvSize) + ArrayPools.Vector2.ResizeAndClear(ref data.uvs, uvSize); + + int uv2Size = (addUV2) ? size : 0; + if (data.uv2s.Count != uv2Size) + ArrayPools.Vector2.ResizeAndClear(ref data.uv2s, uv2Size); + + //data.SubMeshes = new CGVSubMesh[0];//BUG? why is this commented? + + if (data.tangents.Count != 0) + ArrayPools.Vector4.Resize(ref data.tangents, 0); + data.HasPartialTangents = false; + } + + Array.Copy(source.Vertices.Array, start, data.vertices.Array, 0, size); + Array.Copy(source.VertexNormals.Array, start, data.normals.Array, 0, size); + data.hasPartialNormals = false; + + if (reverseNormals) + { + Vector3[] normalsArray = data.normals.Array; + + //OPTIM merge loop with normals copy + for (int n = 0; n < data.normals.Count; n++) + { + normalsArray[n].x = -normalsArray[n].x; + normalsArray[n].y = -normalsArray[n].y; + normalsArray[n].z = -normalsArray[n].z; + } + } + + data.OnVerticesChanged(); + + return data; + } + + + public void SetSubMeshCount(int count) + { + Array.Resize(ref SubMeshes, count); + } + + public void AddSubMesh(CGVSubMesh submesh = null) + { + SubMeshes = SubMeshes.Add(submesh); + } + + /// + /// Combine/Merge another VMesh into this + /// + /// + public void MergeVMesh(CGVMesh source) => MergeVMesh(source, Matrix4x4.identity); + + /// + /// Combine/Merge another VMesh into this, applying a matrix + /// + /// + /// + public void MergeVMesh(CGVMesh source, Matrix4x4 matrix) + { + //TODO Design: unify implementation with MergeVMeshes + int preMergeVertexCount = Count; + // Add base data + if (source.Count != 0) + { + int postMergeVertexCount = preMergeVertexCount + source.Count; + ArrayPools.Vector3.Resize(ref vertices, postMergeVertexCount); + if (matrix == Matrix4x4.identity) + Array.Copy(source.vertices.Array, 0, vertices.Array, preMergeVertexCount, source.Count); + else + for (int v = preMergeVertexCount; v < postMergeVertexCount; v++) + vertices.Array[v] = matrix.MultiplyPoint3x4(source.vertices.Array[v - preMergeVertexCount]); + + MergeUVsNormalsAndTangents(source, preMergeVertexCount); + + // Add Submeshes + for (int sm = 0; sm < source.SubMeshes.Length; sm++) + GetMaterialSubMesh(source.SubMeshes[sm].Material).Add(source.SubMeshes[sm], preMergeVertexCount); + + OnVerticesChanged(); + } + } + + /// + /// I need at some point in to use materials as keys of a dictionary, and keys cannot be null, while materials can. This is what I use to have a null material as a key + /// + private static readonly Material NullMaterialDictionaryKey = new Material(Shader.Find("Standard")); + + /// + /// Combine/Merge multiple CGVMeshes into this + /// + /// list of CGVMeshes + /// Index of the first element of the list to merge + /// Index of the last element of the list to merge + public void MergeVMeshes(List vMeshes, int startIndex, int endIndex) + { + Assert.IsTrue(endIndex < vMeshes.Count); + int totalVertexCount = 0; + bool hasNormals = false; + bool partialNormals = false; + bool hasTangents = false; + bool partialTangents = false; + bool hasUV = false; + bool hasUV2 = false; + Dictionary>> submeshesByMaterial = new Dictionary>>(); + Dictionary trianglesIndexPerMaterial = new Dictionary(); + + for (int i = startIndex; i <= endIndex; i++) + { + CGVMesh cgvMesh = vMeshes[i]; + totalVertexCount += cgvMesh.Count; + hasNormals |= cgvMesh.HasNormals; + partialNormals |= cgvMesh.HasNormals == false || cgvMesh.HasPartialNormals; + hasTangents |= cgvMesh.HasTangents; + partialTangents |= cgvMesh.HasTangents == false || cgvMesh.hasPartialTangents; + hasUV |= cgvMesh.HasUV; + hasUV2 |= cgvMesh.HasUV2; + + for (int sm = 0; sm < cgvMesh.SubMeshes.Length; sm++) + { + CGVSubMesh subMesh = cgvMesh.SubMeshes[sm]; + Material subMeshMaterial = subMesh.Material != null ? subMesh.Material : NullMaterialDictionaryKey; + if (submeshesByMaterial.ContainsKey(subMeshMaterial) == false) + { + submeshesByMaterial[subMeshMaterial] = new List>(1); + trianglesIndexPerMaterial[subMeshMaterial] = 0; + } + + submeshesByMaterial[subMeshMaterial].Add(subMesh.TrianglesList); + } + } + + ArrayPools.Vector3.Resize(ref vertices, totalVertexCount); + if (hasNormals) + ArrayPools.Vector3.Resize(ref normals, totalVertexCount); + hasPartialNormals = partialNormals; + + if (hasTangents) + ArrayPools.Vector4.Resize(ref tangents, totalVertexCount); + hasPartialTangents = partialTangents; + + if (hasUV) + ArrayPools.Vector2.Resize(ref uvs, totalVertexCount); + + if (hasUV2) + ArrayPools.Vector2.Resize(ref uv2s, totalVertexCount); + + foreach (KeyValuePair>> pair in submeshesByMaterial) + { + List> materialTriangleArrays = pair.Value; + + int totalTrianglesCount = 0; + for (int arraysIndex = 0; arraysIndex < pair.Value.Count; arraysIndex++) + totalTrianglesCount += materialTriangleArrays[arraysIndex].Count; + + AddSubMesh(new CGVSubMesh(totalTrianglesCount, pair.Key)); + } + + + int currentVertexCount = 0; + for (int i = startIndex; i <= endIndex; i++) + { + CGVMesh source = vMeshes[i]; + + Array.Copy(source.vertices.Array, 0, vertices.Array, currentVertexCount, source.vertices.Count); + if (hasNormals) + { + if (source.HasNormals) + Array.Copy(source.normals.Array, 0, normals.Array, currentVertexCount, source.normals.Count); + else + Array.Clear(normals.Array, currentVertexCount, source.vertices.Count); + } + + if (hasTangents) + { + if (source.HasTangents) + Array.Copy(source.tangents.Array, 0, tangents.Array, currentVertexCount, source.tangents.Count); + else + Array.Clear(tangents.Array, currentVertexCount, source.vertices.Count); + } + + if (hasUV) + { + if (source.HasUV) + Array.Copy(source.uvs.Array, 0, uvs.Array, currentVertexCount, source.uvs.Count); + else + Array.Clear(uvs.Array, currentVertexCount, source.vertices.Count); + } + + if (hasUV2) + { + if (source.HasUV2) + Array.Copy(source.uv2s.Array, 0, uv2s.Array, currentVertexCount, source.uv2s.Count); + else + Array.Clear(uv2s.Array, currentVertexCount, source.vertices.Count); + } + + // Add Submeshes + for (int subMeshIndex = 0; subMeshIndex < source.SubMeshes.Length; subMeshIndex++) + { + CGVSubMesh sourceSubMesh = source.SubMeshes[subMeshIndex]; + Material sourceMaterial = sourceSubMesh.Material != null ? sourceSubMesh.Material : NullMaterialDictionaryKey; + SubArray sourceTriangles = sourceSubMesh.TrianglesList; + int sourceTrianglesLength = sourceTriangles.Count; + + SubArray destinationTriangles = GetMaterialSubMesh(sourceMaterial).TrianglesList; + + int trianglesIndex = trianglesIndexPerMaterial[sourceMaterial]; + + if (sourceTrianglesLength != 0) + { + if (currentVertexCount == 0) + Array.Copy(sourceTriangles.Array, 0, destinationTriangles.Array, trianglesIndex, sourceTrianglesLength); + else + for (int j = 0; j < sourceTrianglesLength; j++) + destinationTriangles.Array[trianglesIndex + j] = sourceTriangles.Array[j] + currentVertexCount; + + trianglesIndexPerMaterial[sourceMaterial] = trianglesIndex + sourceTrianglesLength; + + } + } + currentVertexCount += source.vertices.Count; + } + + OnVerticesChanged(); + } + + private void MergeUVsNormalsAndTangents(CGVMesh source, int preMergeVertexCount) + { + int sourceLength = source.Count; + if (sourceLength == 0) + return; + + int postMergeVetexCount = preMergeVertexCount + sourceLength; + if (HasUV || source.HasUV) + { + SubArray newUVs = ArrayPools.Vector2.Allocate(postMergeVetexCount, false); + + if (HasUV) + Array.Copy(uvs.Array, 0, newUVs.Array, 0, preMergeVertexCount); + else + Array.Clear(newUVs.Array, 0, preMergeVertexCount); + + if (source.HasUV) + Array.Copy(source.uvs.Array, 0, newUVs.Array, preMergeVertexCount, sourceLength); + else + Array.Clear(newUVs.Array, preMergeVertexCount, sourceLength); + + UVs = newUVs; + + } + + if (HasUV2 || source.HasUV2) + { + SubArray newUV2s = ArrayPools.Vector2.Allocate(postMergeVetexCount, false); + + if (HasUV2) + Array.Copy(uv2s.Array, 0, newUV2s.Array, 0, preMergeVertexCount); + else + Array.Clear(newUV2s.Array, 0, preMergeVertexCount); + + if (source.HasUV2) + Array.Copy(source.uv2s.Array, 0, newUV2s.Array, preMergeVertexCount, sourceLength); + else + Array.Clear(newUV2s.Array, preMergeVertexCount, sourceLength); + + UV2s = newUV2s; + + } + + if (HasNormals || source.HasNormals) + { + HasPartialNormals = HasNormals ^ source.HasNormals; + + SubArray newNormals = ArrayPools.Vector3.Allocate(postMergeVetexCount, false); + + if (HasNormals) + Array.Copy(normals.Array, 0, newNormals.Array, 0, preMergeVertexCount); + else + Array.Clear(newNormals.Array, 0, preMergeVertexCount); + + if (source.HasNormals) + Array.Copy(source.normals.Array, 0, newNormals.Array, preMergeVertexCount, sourceLength); + else + Array.Clear(newNormals.Array, preMergeVertexCount, sourceLength); + + NormalsList = newNormals; + } + + if (HasTangents || source.HasTangents) + { + HasPartialTangents = HasTangents ^ source.HasTangents; + + SubArray newTangents = ArrayPools.Vector4.Allocate(postMergeVetexCount, false); + + if (HasTangents) + Array.Copy(tangents.Array, 0, newTangents.Array, 0, preMergeVertexCount); + else + Array.Clear(newTangents.Array, 0, preMergeVertexCount); + + if (source.HasTangents) + Array.Copy(source.tangents.Array, 0, newTangents.Array, preMergeVertexCount, sourceLength); + else + Array.Clear(newTangents.Array, preMergeVertexCount, sourceLength); + + TangentsList = newTangents; + } + } + + /// + /// Gets the submesh using a certain material + /// + /// the material the submesh should use + /// whether to create the submesh if no existing one matches + /// a submesh using the given material + public CGVSubMesh GetMaterialSubMesh(Material mat, bool createIfMissing = true) + { + // already having submesh with matching material? + for (int sm = 0; sm < SubMeshes.Length; sm++) + if (SubMeshes[sm].Material == mat) + return SubMeshes[sm]; + + // else create new + if (createIfMissing) + { + CGVSubMesh sm = new CGVSubMesh(mat); + AddSubMesh(sm); + return sm; + } + else + return null; + } + + /// + /// Creates a Mesh from the data + /// + public Mesh AsMesh() + { + Mesh msh = new Mesh(); + ToMesh(ref msh); + return msh; + } + + /// + /// Copies the data into an existing Mesh + /// + /// The mesh to copy the data from this CGVMesh into + /// should normals be copied or set to empty? + /// should tangents be copied or set to empty? + public void ToMesh(ref Mesh mesh, bool includeNormals = true, bool includeTangents = true) + { + mesh.indexFormat = Count >= UInt16.MaxValue ? IndexFormat.UInt32 : IndexFormat.UInt16; + + mesh.SetVertices(vertices.Array, 0, vertices.Count); + mesh.SetUVs(0, uvs.Array, 0, HasUV ? uvs.Count : 0); + mesh.SetUVs(1, uv2s.Array, 0, HasUV2 ? uv2s.Count : 0); + mesh.SetNormals(normals.Array, 0, (includeNormals && HasNormals) ? normals.Count : 0); + mesh.SetTangents(tangents.Array, 0, (includeTangents && HasTangents) ? tangents.Count : 0); + + mesh.subMeshCount = SubMeshes.Length; + for (int s = 0; s < SubMeshes.Length; s++) + { + SubArray subArray = SubMeshes[s].TrianglesList; + mesh.SetTriangles(subArray.Array, 0, subArray.Count, s); + } + } + + /// + /// Gets a list of all Materials used + /// + public Material[] GetMaterials() + { + List mats = new List(); + for (int s = 0; s < SubMeshes.Length; s++) + mats.Add(SubMeshes[s].Material); + return mats.ToArray(); + } + + public override void RecalculateBounds() + { + if (Count == 0) + { + mBounds = new Bounds(Vector3.zero, Vector3.zero); + } + else + { + int vertexCount = vertices.Count; + Vector3 min = vertices.Array[0], max = vertices.Array[0]; + for (int i = 1; i < vertexCount; i++) + { + Vector3 vertex = vertices.Array[i]; + + if (vertex.x < min.x) + min.x = vertex.x; + else if (vertex.x > max.x) + max.x = vertex.x; + + if (vertex.y < min.y) + min.y = vertex.y; + else if (vertex.y > max.y) + max.y = vertex.y; + + if (vertex.z < min.z) + min.z = vertex.z; + else if (vertex.z > max.z) + max.z = vertex.z; + } + + Bounds bounds = new Bounds(); + bounds.SetMinMax(min, max); + mBounds = bounds; + } + } + + [Obsolete("Method will get remove in next major update. Copy its content if you need it")] + public void RecalculateUV2() + { + ArrayPools.Vector2.Resize(ref uv2s, UVs.Count); + CGUtility.CalculateUV2(uvs.Array, uv2s.Array, uvs.Count); + } + + /// + /// Applies the translation, rotation and scale defined by the given matrix + /// + public void TRS(Matrix4x4 matrix) + { + int count = Count; + for (int vertexIndex = 0; vertexIndex < count; vertexIndex++) + vertices.Array[vertexIndex] = matrix.MultiplyPoint3x4(vertices.Array[vertexIndex]); + + count = normals.Count; + for (int vertexIndex = 0; vertexIndex < count; vertexIndex++) + normals.Array[vertexIndex] = matrix.MultiplyVector(normals.Array[vertexIndex]); + + count = tangents.Count; + for (int vertexIndex = 0; vertexIndex < count; vertexIndex++) + { + //Keep in mind that Tangents is a Vector4 array + Vector4 tangent4 = tangents.Array[vertexIndex]; + Vector3 tangent3; + tangent3.x = tangent4.x; + tangent3.y = tangent4.y; + tangent3.z = tangent4.z; + tangents.Array[vertexIndex] = matrix.MultiplyVector(tangent3); + } + + OnVerticesChanged(); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void OnVerticesChanged() + { + mBounds = null; + ClearCachedSortedVertexIndices(); + } + + /// + /// Gets an array of the index of vertices when sorted by Z coordinate, from smaller to bigger. + /// This array is cached. Curvy Splines does clear this cache if it modifies , but if you modify through its getter, you will have to clear the cached value by calling + /// + /// Is thread safe + public SubArray GetCachedSortedVertexIndices() + { + if (sortedVertexIndices == null) + { + lock (vertexIndicesLock) + { + if (sortedVertexIndices == null) + { + int verticesCount = vertices.Count; + + SubArray result = ArrayPools.Int32.Allocate(verticesCount); + SubArray verticesZ = ArrayPools.Single.Allocate(verticesCount); + for (int k = 0; k < verticesCount; k++) + { + result.Array[k] = k; + verticesZ.Array[k] = vertices.Array[k].z; + } + + Array.Sort(verticesZ.Array, result.Array, 0, verticesCount); + ArrayPools.Single.Free(verticesZ); + + sortedVertexIndices = result; + } + } + } + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(sortedVertexIndices.Value.Count == Vertices.Count); +#endif + return sortedVertexIndices.Value; + } + + /// + /// Clears the cached value computed by + /// + /// Is thread safe + private void ClearCachedSortedVertexIndices() + { + if (sortedVertexIndices != null) + lock (vertexIndicesLock) + { + if (sortedVertexIndices != null) + { + ArrayPools.Int32.Free(sortedVertexIndices.Value); + sortedVertexIndices = null; + } + } + } + } + + /// + /// GameObject data (Bounds + Object) + /// + [CGDataInfo("#FFF59D")] + public class CGGameObject : CGBounds + { + public GameObject Object; + public Vector3 Translate; + public Vector3 Rotate; + public Vector3 Scale = Vector3.one; + + public Matrix4x4 Matrix + { + get { return Matrix4x4.TRS(Translate, Quaternion.Euler(Rotate), Scale); } + } + + public CGGameObject() : base() { } + + public CGGameObject(CGGameObjectProperties properties) : this(properties.Object, properties.Translation, properties.Rotation, properties.Scale) { } + + public CGGameObject(GameObject obj) : this(obj, Vector3.zero, Vector3.zero, Vector3.one) { } + + public CGGameObject(GameObject obj, Vector3 translate, Vector3 rotate, Vector3 scale) + : base() + { + Object = obj; + Translate = translate; + Rotate = rotate; + Scale = scale; + if (Object) + Name = Object.name; + } + + public CGGameObject(CGGameObject source) : base(source) + { + Object = source.Object; + Translate = source.Translate; + Rotate = source.Rotate; + Scale = source.Scale; + } + + public override T Clone() + { + return new CGGameObject(this) as T; + } + + public override void RecalculateBounds() + { + if (Object == null) + { + mBounds = new Bounds(); + } + else + { + Renderer[] renderer = Object.GetComponentsInChildren(true); + Collider[] collider = Object.GetComponentsInChildren(true); + Bounds bounds; + if (renderer.Length > 0) + { + bounds = renderer[0].bounds; + for (int i = 1; i < renderer.Length; i++) + bounds.Encapsulate(renderer[i].bounds); + for (int i = 0; i < collider.Length; i++) + bounds.Encapsulate(collider[i].bounds); + } + else if (collider.Length > 0) + { + bounds = collider[0].bounds; + for (int i = 1; i < collider.Length; i++) + bounds.Encapsulate(collider[i].bounds); + } + else + bounds = new Bounds(); + + Vector3 rotationlessBoundsSize = (Quaternion.Inverse(Object.transform.localRotation) * bounds.size); + bounds.size = new Vector3( + rotationlessBoundsSize.x * Scale.x, + rotationlessBoundsSize.y * Scale.y, + rotationlessBoundsSize.z * Scale.z); + + mBounds = bounds; + } + } + } + + /// + /// A collection of + /// + [CGDataInfo(0.96f, 0.96f, 0.96f)] + public class CGSpots : CGData + { + //DESIGN what is the use of this class? Seems to me like a complicated way to represent an array + + /// + /// List of spots + /// + /// Setting a new will the current instance + + public SubArray Spots + { + get => spots; + set + { + ArrayPools.CGSpot.Free(spots); + spots = value; + } + } + + /// + /// List of spots + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use Spots instead")] + public CGSpot[] Points + { + get => Spots.CopyToArray(ArrayPools.CGSpot); + set => Spots = new SubArray(value); + } + + private SubArray spots; + + public override int Count + { + get + { + return spots.Count; + } + } + + public CGSpots() : base() + { + spots = ArrayPools.CGSpot.Allocate(0); + } + + public CGSpots(params CGSpot[] points) : base() + { + spots = new SubArray(points); + } + + public CGSpots(SubArray spots) : base() + { + this.spots = spots; + } + + public CGSpots(List spots) : base() + { + this.spots = ArrayPools.CGSpot.Allocate(spots.Count); + spots.CopyTo(0, this.spots.Array, 0, spots.Count); + } + + public CGSpots(params List[] spots) : base() + { + int c = 0; + for (int i = 0; i < spots.Length; i++) + c += spots[i].Count; + this.spots = ArrayPools.CGSpot.Allocate(c); + c = 0; + for (int i = 0; i < spots.Length; i++) + { + List cgSpots = spots[i]; + cgSpots.CopyTo(0, this.spots.Array, c, cgSpots.Count); + c += cgSpots.Count; + } + } + + public CGSpots(CGSpots source) : base() + { + spots = ArrayPools.CGSpot.Clone(source.spots); + } + protected override bool Dispose(bool disposing) + { + bool result = base.Dispose(disposing); + if (result) + ArrayPools.CGSpot.Free(spots); + return result; + } + + public override T Clone() + { + return new CGSpots(this) as T; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGData.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGData.cs.meta new file mode 100644 index 00000000..150658e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGData.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1e4fde665d7cfa546a1c391d055728ec +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGDataRequests.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGDataRequests.cs new file mode 100644 index 00000000..33752781 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGDataRequests.cs @@ -0,0 +1,265 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using UnityEngine; +using System.Linq; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Collections; +using ToolBuddy.Pooling.Pools; + +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif + + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Request Parameter base class + /// + public abstract class CGDataRequestParameter + { + public static implicit operator bool(CGDataRequestParameter a) + { + return !ReferenceEquals(a, null); + } + } + + /// + /// Additional Spline Request parameters + /// + public class CGDataRequestMetaCGOptions : CGDataRequestParameter + { + /// + /// Whether Hard Edges should produce extra samples + /// + /// This may result in extra samples at affected Control Points + [Obsolete("This option is now always assumed to be true")] + public bool CheckHardEdges; + /// + /// Whether MaterialID's should be stored + /// + /// This may result in extra samples at affected Control Points + [Obsolete("This option is now always assumed to be true")] + public bool CheckMaterialID; + /// + /// Whether all Control Points should be included + /// + public bool IncludeControlPoints; + /// + /// Whether UVEdge, ExplicitU and custom U settings should be included + /// + [Obsolete("This option is now always assumed to be true")] + public bool CheckExtendedUV; + + + public CGDataRequestMetaCGOptions(bool checkEdges, bool checkMaterials, bool includeCP, bool extendedUV) + { +#pragma warning disable 618 + CheckHardEdges = checkEdges; +#pragma warning restore 618 +#pragma warning disable 618 + CheckMaterialID = checkMaterials; +#pragma warning restore 618 + IncludeControlPoints = includeCP; +#pragma warning disable 618 + CheckExtendedUV = extendedUV; +#pragma warning restore 618 + } + + public override bool Equals(object obj) + { + CGDataRequestMetaCGOptions O = obj as CGDataRequestMetaCGOptions; + if (O == null) + return false; +#pragma warning disable 618 + return (CheckHardEdges == O.CheckHardEdges && CheckMaterialID == O.CheckMaterialID && IncludeControlPoints == O.IncludeControlPoints && CheckExtendedUV == O.CheckExtendedUV); +#pragma warning restore 618 + } + + public override int GetHashCode() + { +#pragma warning disable 618 + return new { A = CheckHardEdges, B = CheckMaterialID, C = IncludeControlPoints, D = CheckExtendedUV }.GetHashCode(); //OPTIM avoid array creation +#pragma warning restore 618 + } + + public override string ToString() + { +#pragma warning disable 618 + return $"{nameof(CheckHardEdges)}: {CheckHardEdges}, {nameof(CheckMaterialID)}: {CheckMaterialID}, {nameof(IncludeControlPoints)}: {IncludeControlPoints}, {nameof(CheckExtendedUV)}: {CheckExtendedUV}"; +#pragma warning restore 618 + } + } + + /// + /// Shape Rasterization Request parameters + /// + public class CGDataRequestShapeRasterization : CGDataRequestRasterization + { + /// + /// The array of the instance used for the shape extrusion that requests the current Shape rasterization + /// + /// Setting a new will the current instance + public SubArray RelativeDistances + { + get => relativeDistances; + set => relativeDistances = value; + } + + /// + /// The array of the instance used for the shape extrusion that requests the current Shape rasterization + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use RelativeDistances instead")] + public float[] PathF + { + get => RelativeDistances.CopyToArray(ArrayPools.Single); + set => RelativeDistances = new SubArray(value); + } + + private SubArray relativeDistances; + + public CGDataRequestShapeRasterization(SubArray relativeDistance, float start, float rasterizedRelativeLength, int resolution, float angle, ModeEnum mode = ModeEnum.Even) : base(start, rasterizedRelativeLength, resolution, angle, mode) + { + relativeDistances = ArrayPools.Single.Clone(relativeDistance); + } + + [Obsolete("Use another constructor instead")] + public CGDataRequestShapeRasterization(float[] pathF, float start, float rasterizedRelativeLength, int resolution, float angle, ModeEnum mode = ModeEnum.Even) : base(start, rasterizedRelativeLength, resolution, angle, mode) + { + relativeDistances = ArrayPools.Single.Clone(pathF); + } + + public override bool Equals(object obj) + { + CGDataRequestShapeRasterization other = obj as CGDataRequestShapeRasterization; + if (other == null) + return false; + + if (!base.Equals(obj) || other.relativeDistances.Count != relativeDistances.Count) + return false; + + for (var i = 0; i < relativeDistances.Count; i++) + { + if (other.relativeDistances.Array[i].Equals(relativeDistances.Array[i]) == false) + return false; + } + + return true; + } + + public override int GetHashCode() + { + unchecked + { + return (base.GetHashCode() * 397) ^ (relativeDistances != null + ? relativeDistances.GetHashCode() + : 0); + } + } + + public override string ToString() + { + return $"{base.ToString()}, {nameof(RelativeDistances)}: {relativeDistances}"; + } + } + + /// + /// Rasterization Request parameters + /// + public class CGDataRequestRasterization : CGDataRequestParameter + { +#if CONTRACTS_FULL + [ContractInvariantMethod] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "Required for code contracts.")] + private void ObjectInvariant() + { + Contract.Invariant(Start.IsRatio()); + Contract.Invariant(RasterizedRelativeLength.IsRatio()); + Contract.Invariant(Resolution > 0); + Contract.Invariant(Resolution <= 100); + Contract.Invariant(SplineAbsoluteLength.IsPositiveNumber()); + Contract.Invariant(AngleThreshold.IsIn0To180Range()); + } +#endif + + + public enum ModeEnum + { + /// + /// Distribute sample points evenly spread + /// + Even, + /// + /// Use Source' curvation to optimize the result + /// + Optimized + } + + /// + /// Relative Start Position (0..1) + /// + public float Start; + + /// + /// Relative Length. A value of 1 means the full spline length + /// + public float RasterizedRelativeLength; + + /// + /// Maximum number of samplepoints + /// + public int Resolution; + + /// + /// Angle resolution (0..100) for optimized mode + /// + public float AngleThreshold; + + /// + /// Rasterization mode + /// + public ModeEnum Mode; + + public CGDataRequestRasterization(float start, float rasterizedRelativeLength, int resolution, float angle, ModeEnum mode = ModeEnum.Even) + { +#if CONTRACTS_FULL + Contract.Requires(rasterizedRelativeLength.IsRatio()); +#endif + Start = Mathf.Repeat(start, 1); + RasterizedRelativeLength = Mathf.Clamp01(rasterizedRelativeLength); + Resolution = resolution; + AngleThreshold = angle; + Mode = mode; + } + + public CGDataRequestRasterization(CGDataRequestRasterization source) : this(source.Start, source.RasterizedRelativeLength, source.Resolution, source.AngleThreshold, source.Mode) + { + } + + public override bool Equals(object obj) + { + CGDataRequestRasterization O = obj as CGDataRequestRasterization; + if (O == null) + return false; + return (Start == O.Start && RasterizedRelativeLength == O.RasterizedRelativeLength && Resolution == O.Resolution && AngleThreshold == O.AngleThreshold && Mode == O.Mode); + } + + public override int GetHashCode() + { + return new { A = Start, B = RasterizedRelativeLength, C = Resolution, D = AngleThreshold, E = Mode }.GetHashCode(); //OPTIM avoid array creation + } + + public override string ToString() + { + return $"{nameof(Start)}: {Start}, {nameof(RasterizedRelativeLength)}: {RasterizedRelativeLength}, {nameof(Resolution)}: {Resolution}, {nameof(AngleThreshold)}: {AngleThreshold}, {nameof(Mode)}: {Mode}"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGDataRequests.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGDataRequests.cs.meta new file mode 100644 index 00000000..4e37fe39 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGDataRequests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 171ae25dd0efed1458b5b7581e352db0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGEvents.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGEvents.cs new file mode 100644 index 00000000..f18407e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGEvents.cs @@ -0,0 +1,65 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +namespace FluffyUnderware.Curvy +{ + /// + /// Curvy Generator related event + /// + [System.Serializable] + public class CurvyCGEvent : UnityEventEx { } + + /// + /// EventArgs for CurvyCGEvent events + /// + public class CurvyCGEventArgs : System.EventArgs + { + /// + /// the component raising the event + /// + public readonly MonoBehaviour Sender; + /// + /// The related CurvyGenerator + /// + public readonly CurvyGenerator Generator; + /// + /// The related CGModule + /// + public readonly CGModule Module; + + public CurvyCGEventArgs(CGModule module) + { + Sender = module; + Generator = module.Generator; + Module = module; + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(Sender != null); +#endif + } + + public CurvyCGEventArgs(CurvyGenerator generator, CGModule module) + { + Sender = generator; + Generator = generator; + Module = module; + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(Sender != null); +#endif + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGEvents.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGEvents.cs.meta new file mode 100644 index 00000000..379acd9e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGEvents.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 795eae83fdd52ee4697860cab17950d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGInterfaces.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGInterfaces.cs new file mode 100644 index 00000000..59d6c4ef --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGInterfaces.cs @@ -0,0 +1,67 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// For modules that don't process anything + /// + public interface INoProcessing + { + } + + /// + /// For modules that rely on external input (Splines, Meshes etc..) + /// + public interface IExternalInput + { + /// + /// Whether the module currently supports an IPE session + /// + bool SupportsIPE { get; } + } + + /// + /// For modules that process data on demand + /// + public interface IOnRequestProcessing + { + CGData[] OnSlotDataRequest(CGModuleInputSlot requestedBy, CGModuleOutputSlot requestedSlot, params CGDataRequestParameter[] requests); + } + + /// + /// For modules that output instances of + /// + public interface IPathProvider + { + bool PathIsClosed { get; } + } + + /// + /// Resource Loader Interface + /// + public interface ICGResourceLoader + { + Component Create(CGModule cgModule, string context); + void Destroy(CGModule cgModule, Component obj, string context, bool kill); + } + + /// + /// Resource Collection interface + /// + public interface ICGResourceCollection + { + int Count { get; } + Component[] ItemsArray { get; } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGInterfaces.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGInterfaces.cs.meta new file mode 100644 index 00000000..62d73568 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGInterfaces.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0db4b847e74dae148ad1ba0205adbd50 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGMeshResource.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGMeshResource.cs new file mode 100644 index 00000000..1ea27911 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGMeshResource.cs @@ -0,0 +1,235 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using System.Collections.Generic; +using Object = UnityEngine.Object; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Mesh Resource Component used by Curvy Generator + /// + [RequireComponent(typeof(MeshRenderer))] + [HelpURL(CurvySpline.DOCLINK + "cgmeshresource")] + public class CGMeshResource : DuplicateEditorMesh, IPoolable + { + /// + /// The value of the "Everything" entry in a 's inspector + /// + public const MeshColliderCookingOptions EverMeshColliderCookingOptions = + MeshColliderCookingOptions.EnableMeshCleaning| + MeshColliderCookingOptions.CookForFasterSimulation| +#if UNITY_2019_3_OR_NEWER + MeshColliderCookingOptions.UseFastMidphase| +#endif + MeshColliderCookingOptions.WeldColocatedVertices; + + private MeshRenderer mRenderer; + private Collider mCollider; + + public MeshRenderer Renderer + { + get + { + if (mRenderer == null) + mRenderer = GetComponent(); + return mRenderer; + } + } + + public Collider Collider + { + get + { + if (mCollider == null) + mCollider = GetComponent(); + return mCollider; + } + + } + + public Mesh Prepare() + { + return Filter.PrepareNewShared(); + } + + public bool ColliderMatches(CGColliderEnum type) + { + if (Collider == null && type == CGColliderEnum.None) + return true; + if (Collider is MeshCollider && type == CGColliderEnum.Mesh) + return true; + if (Collider is BoxCollider && type == CGColliderEnum.Box) + return true; + if (Collider is SphereCollider && type == CGColliderEnum.Sphere) + return true; + if (Collider is CapsuleCollider && type == CGColliderEnum.Capsule) + return true; + + return false; + } + + public void RemoveCollider() + { + if (Collider) + { + mCollider.Destroy(false, false); + mCollider = null; + } + } + + /// + /// Updates the collider if existing, and create a new one if not. + /// + /// The collider's type + /// Used only when mode is CGColliderEnum.Mesh + /// Is the collider a Trigger + /// The collider's material + /// Used only when mode is CGColliderEnum.Mesh + /// + public bool UpdateCollider(CGColliderEnum mode, bool convex, bool isTrigger, PhysicsMaterial material +#if UNITY_2017_3_OR_NEWER + , MeshColliderCookingOptions meshCookingOptions = EverMeshColliderCookingOptions +#endif + ) + { + if (Collider == null) + switch (mode) + { + case CGColliderEnum.Mesh: + mCollider = gameObject.AddComponent(); + break; + case CGColliderEnum.Box: + mCollider = gameObject.AddComponent(); + break; + case CGColliderEnum.Sphere: + mCollider = gameObject.AddComponent(); + break; + case CGColliderEnum.Capsule: + mCollider = gameObject.AddComponent(); + break; + case CGColliderEnum.None: + break; + default: + throw new ArgumentOutOfRangeException(); + } + + if (mode != CGColliderEnum.None) + { + switch (mode) + { + case CGColliderEnum.Mesh: + MeshCollider meshCollider = Collider as MeshCollider; + if (meshCollider != null) + { + meshCollider.sharedMesh = null; + meshCollider.convex = convex; + meshCollider.isTrigger = isTrigger; +#if UNITY_2017_3_OR_NEWER + meshCollider.cookingOptions = meshCookingOptions; +#endif + try + { + meshCollider.sharedMesh = Filter.sharedMesh; + } +#if CURVY_SANITY_CHECKS + catch (Exception e) + { + DTLog.LogException(e); +#else + catch + { +#endif + return false; + } + } + else + DTLog.LogError("[Curvy] Collider of wrong type"); + break; + case CGColliderEnum.Box: + BoxCollider boxCollider = Collider as BoxCollider; + if (boxCollider != null) + { + boxCollider.isTrigger = isTrigger; + boxCollider.center = Filter.sharedMesh.bounds.center; + boxCollider.size = Filter.sharedMesh.bounds.size; + } + else + DTLog.LogError("[Curvy] Collider of wrong type"); + break; + case CGColliderEnum.Sphere: + SphereCollider sphereCollider = Collider as SphereCollider; + if (sphereCollider != null) + { + sphereCollider.isTrigger = isTrigger; + sphereCollider.center = Filter.sharedMesh.bounds.center; + sphereCollider.radius = Filter.sharedMesh.bounds.extents.magnitude; + } + else + DTLog.LogError("[Curvy] Collider of wrong type"); + break; + case CGColliderEnum.Capsule: + CapsuleCollider capsuleCollider = Collider as CapsuleCollider; + if (capsuleCollider != null) + { + Bounds sharedMeshBounds = Filter.sharedMesh.bounds; + capsuleCollider.isTrigger = isTrigger; + capsuleCollider.center = sharedMeshBounds.center; + capsuleCollider.radius = new Vector2(sharedMeshBounds.extents.x, sharedMeshBounds.extents.y).magnitude; + capsuleCollider.height = sharedMeshBounds.size.z; + capsuleCollider.direction = 2;//Z + } + else + DTLog.LogError("[Curvy] Collider of wrong type"); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + Collider.material = material; + } + + return true; + } + + public void OnBeforePush() + { + } + + public void OnAfterPop() + { + } + } + + /// + /// Collection of Mesh Resources + /// + [System.Serializable] + public class CGMeshResourceCollection : ICGResourceCollection + { + public List Items = new List(); + + public int Count + { + get + { + return Items.Count; + } + } + + public Component[] ItemsArray + { + get { return Items.ToArray(); } + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGMeshResource.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGMeshResource.cs.meta new file mode 100644 index 00000000..4da14804 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGMeshResource.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bfd1baeec4f08064eb868f23f209ebc6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModule.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModule.cs new file mode 100644 index 00000000..10245523 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModule.cs @@ -0,0 +1,1108 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using System.Reflection; +using FluffyUnderware.DevTools.Extensions; + +using System.Collections; +using System.Globalization; +using FluffyUnderware.DevTools; +using Random = UnityEngine.Random; +#if UNITY_EDITOR +using UnityEditor; +using UnityEditor.AnimatedValues; +#endif + + + + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Curvy Generator module base class + /// + [ExecuteAlways] + public abstract class CGModule : DTVersionedMonoBehaviour + { + #region ### Events ### + + /*! \cond PRIVATE */ + + [Group("Events", Expanded = false, Sort = 1000)] + [SerializeField] + protected CurvyCGEvent m_OnBeforeRefresh = new CurvyCGEvent(); + [Group("Events")] + [SerializeField] + protected CurvyCGEvent m_OnRefresh = new CurvyCGEvent(); + + /*! \endcond */ + + public CurvyCGEvent OnBeforeRefresh + { + get { return m_OnBeforeRefresh; } + set + { + if (m_OnBeforeRefresh != value) + m_OnBeforeRefresh = value; + + } + + } + + public CurvyCGEvent OnRefresh + { + get { return m_OnRefresh; } + set + { + if (m_OnRefresh != value) + m_OnRefresh = value; + + } + + } + + protected CurvyCGEventArgs OnBeforeRefreshEvent(CurvyCGEventArgs e) + { + if (OnBeforeRefresh != null) + OnBeforeRefresh.Invoke(e); + return e; + } + + protected CurvyCGEventArgs OnRefreshEvent(CurvyCGEventArgs e) + { + if (OnRefresh != null) + OnRefresh.Invoke(e); + return e; + } + + #endregion + + #region ### Public Fields & Properties ### + + #region --- Fields --- + + [SerializeField, HideInInspector] private string m_ModuleName; + [SerializeField, HideInInspector] private bool m_Active = true; + + [Group("Seed Options", Expanded = false, Sort = 1001)] + [GroupCondition(nameof(usesRandom))] + [FieldAction("CBSeedOptions", ShowBelowProperty = true)] + [SerializeField] + private bool m_RandomizeSeed = false; + + [SerializeField, HideInInspector] private int m_Seed = unchecked((int)System.DateTime.Now.Ticks); + + #endregion + + + #region --- API Accessors --- + + public string ModuleName + { + get { return name; } + set + { + if (name != value) + { + name = value; + renameManagedResourcesINTERNAL(); + } + } + } + + public bool Active + { + get { return m_Active; } + set + { + if (m_Active != value) + { + m_Active = value; + Dirty = true; + Generator.sortModulesINTERNAL(); + } + } + } + + /// + /// If is set to false, Seed is used to initialize Unity's random numbers generator before refreshing the + /// If is set to true, a random seed will be used + /// current module + /// + public int Seed + { + get { return m_Seed; } + set + { + if (m_Seed != value) + m_Seed = value; + Dirty = true; + } + } + + /// + /// If is set to false, is used to initialize Unity's random numbers generator before refreshing the current module. + /// If set to true, a random seed will be used + /// + public bool RandomizeSeed + { + get { return m_RandomizeSeed; } + set + { + if (m_RandomizeSeed != value) + m_RandomizeSeed = value; + } + } + + #endregion + + + + [System.NonSerialized] + public List UIMessages = new List(); + + public CurvyGenerator Generator + { + get { return mGenerator; } + } + + private CurvyGenerator mGenerator; + + + + #endregion + + #region ### Graph Related ### + + + #region UniqueID + + [SerializeField, HideInInspector] private int m_UniqueID; + + public int UniqueID + { + get { return m_UniqueID; } + } + + // In order to reduce per frame allocations, we cache the string version + private string m_UniqueIDString = null; + private string UniqueIDString + { + get + { + if (m_UniqueIDString == null) + m_UniqueIDString = m_UniqueID.ToString(System.Globalization.CultureInfo.InvariantCulture); + return m_UniqueIDString; + } + } + + #endregion + + + /// + /// Whether this module has circular reference errors + /// + public bool CircularReferenceError { get; set; } + + /// + /// Helper for topology sorting + /// + //DESIGN inline this in doSortModules() + internal int SortAncestors; + + + [HideInInspector] + public CGModuleProperties Properties = new CGModuleProperties(); + [HideInInspector] + public List InputLinks = new List(); + [HideInInspector] + public List OutputLinks = new List(); + + // These will be filled by reflection in OnEnable() + public Dictionary InputByName { get; private set; } + public Dictionary OutputByName { get; private set; } + public List Input { get; private set; } + public List Output { get; private set; } + + public ModuleInfoAttribute Info + { + get + { + if (mInfo == null) + mInfo = getInfo(); + return mInfo; + } + } + + private ModuleInfoAttribute mInfo; + + //----- + + public bool Dirty + { + get { return mDirty; } + set + { + if (mDirty != value) + mDirty = value; + + + if (mDirty) + { + bool isConfigured = IsConfigured; + if (mLastIsConfiguredState != isConfigured) + mStateChangeDirty = true; + mLastIsConfiguredState = isConfigured; + if (Output != null) + { + for (int i = 0; i < Output.Count; i++) + { + if (Output[i].IsLinked) + { + List modules = Output[i].GetLinkedModules(); + for (int m = 0; m < modules.Count; m++) + //BUG? does the || modules[m].CircularReferenceError create infinite dirtying logique? + if (modules[m] != this || modules[m].CircularReferenceError) // prevent circular reference + modules[m].Dirty = true; + } + } + } + } + + if (this is IOnRequestProcessing || this is INoProcessing) + { + mDirty = false; + if (Output != null) + for (int i = 0; i < Output.Count; i++) + Output[i].LastRequestParameters = null; + } + + } + } + + private bool mDirty = true; + private bool mInitialized = false; + + private bool mStateChangeDirty; + private bool mLastIsConfiguredState; + + + #endregion + + #region ### Debugging ### +#if UNITY_EDITOR || CURVY_DEBUG + public System.DateTime DEBUG_LastUpdateTime; + public TimeMeasure DEBUG_ExecutionTime = new TimeMeasure(5); +#endif + + #endregion + + #region ### Unity Callbacks (Virtual) ### + + protected virtual void Awake() + { + mGenerator = RetrieveGenerator(); + } + + protected virtual void OnEnable() + { + if (mGenerator) + { + Initialize(); + Generator.sortModulesINTERNAL(); + } + } + + public void Initialize() + { + if (!mGenerator) + mGenerator = RetrieveGenerator(); + if (!mGenerator) + Invoke(nameof(Delete), 0); + else + { + mInfo = getInfo(); + + if (string.IsNullOrEmpty(ModuleName)) + if (string.IsNullOrEmpty(Info.ModuleName)) + ModuleName = Generator.getUniqueModuleNameINTERNAL(Info.MenuName.Substring(Info.MenuName.LastIndexOf("/", StringComparison.Ordinal) + 1)); + else + ModuleName = Generator.getUniqueModuleNameINTERNAL(Info.ModuleName); + + loadSlots(); + mInitialized = true; + } + } + + protected virtual void OnDisable() + { + } + + protected virtual void OnDestroy() + { + bool realDestroy = true; +#if UNITY_EDITOR + if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying) + realDestroy = false; +#endif + setTreeDirtyStateChange(); + List res; + List resNames; + // Resources + if (realDestroy) + { + if (GetManagedResources(out res, out resNames)) + { + for (int i = res.Count - 1; i >= 0; i--) + DeleteManagedResource(resNames[i], res[i], "", true); + } + } + + // Links + + List inSlots = GetInputSlots(); + foreach (CGModuleInputSlot slot in inSlots) + { + List linkedModules = slot.GetLinkedModules(); + foreach (CGModule module in linkedModules) + if (module != null) + module.ReInitializeLinkedSlots(); + } + + List outSlots = GetOutputSlots(); + foreach (CGModuleOutputSlot slot in outSlots) + { + List linkedModules = slot.GetLinkedModules(); + foreach (CGModule module in linkedModules) + if (module != null) + module.ReInitializeLinkedSlots(); + } + + if (Generator) + { + // Delete module + Generator.ModulesByID.Remove(UniqueID); + Generator.Modules.Remove(this); + Generator.sortModulesINTERNAL(); + } + mInitialized = false; + } + +#if UNITY_EDITOR + /*DESIGN:simplify the CGModules' OnValidate and properties by: + - Make properties set dirty only if the value has changed + - Set dirty to true in CGModule.OnValidate + - avoid calling SomeProperty = m_SomeProperty in the OnValidate of all CGModules. You have of course to handle any work done by SomeProperty, that is not dirtying, in the OnValidate of these modules.*/ + protected virtual void OnValidate() + { + } + + private void Update() + { + if (!Application.isPlaying) + renameManagedResourcesINTERNAL(); + } +#endif + private void OnDidApplyAnimationProperties() + { + Dirty = true; + } + + #endregion + + #region ### Virtual Methods & Properties ### + + /// + /// Gets whether the module is properly configured i.e. has everything to work like intended + /// + public virtual bool IsConfigured + { + get + { + if (!IsInitialized || CircularReferenceError || !Active) + return false; + + int validTotalLinks = 0; + for (int i = 0; i < Input.Count; i++) + { + InputSlotInfo myInfo = Input[i].InputInfo; + if (Input[i].IsLinked) + { + for (int link = 0; link < Input[i].Count; link++) + if (Input[i].SourceSlot(link) != null) + { + if (Input[i].SourceSlot(link).Module.IsConfigured) + validTotalLinks++; + else if (!myInfo.Optional) + return false; + } + } + else + if (myInfo == null || !myInfo.Optional) + return false; + } + + return validTotalLinks > 0 || Input.Count == 0; + } + } + + /// + /// Gets whether the module and all its dependencies are fully initialized + /// + public virtual bool IsInitialized { get { return mInitialized; } } + + /// + /// Add Module processing code in here + /// + public virtual void Refresh() + { + // Debug.Log(name + ".Refresh()"); + UIMessages.Clear(); + } + + public virtual void Reset() + { + ModuleName = string.IsNullOrEmpty(Info.ModuleName) ? GetType().Name : Info.ModuleName; + + //Remove all non-persisent (ie created from script) listeners from the events. Might help with garbage collection + if (OnBeforeRefresh != null) + OnBeforeRefresh.RemoveAllListeners(); + if (OnRefresh != null) + OnRefresh.RemoveAllListeners(); + + OnBeforeRefresh = new CurvyCGEvent(); + OnRefresh = new CurvyCGEvent(); + + DeleteAllOutputManagedResources(); + } + + public void ReInitializeLinkedSlots() + { + List ins = GetInputSlots(); + List ous = GetOutputSlots(); + for (int i = 0; i < ins.Count; i++) + ins[i].ReInitializeLinkedSlots(); + for (int i = 0; i < ous.Count; i++) + ous[i].ReInitializeLinkedSlots(); + } + + /// + /// Delete all the managed resources acting as an output. One example of this are the generated meshes by the module + /// + /// True if there were deleted resources + virtual public bool DeleteAllOutputManagedResources() + { + return false; + } + + /// + /// Called when a module's state changes (Link added/removed, Active toggles etc..) + /// + public virtual void OnStateChange() + { + // Debug.Log(name + ".OSC, configured="+IsConfigured); + Dirty = true; + + if (Output != null) + { + for (int i = 0; i < Output.Count; i++) + { + Output[i].ClearData(); + /* + if (Output[i].IsLinked) + { + var modules = Output[i].GetLinkedModules(); + for (int m = 0; m < modules.Count; m++) + if (modules[m] != this || modules[m].CircularReferenceError) // prevent circular reference + modules[m].CheckAndRaiseOnStateChangedINTERNAL(); + } + */ + } + } +#if UNITY_EDITOR + if (Input != null) + for (int i = 0; i < Input.Count; i++) + Input[i].LastDataCountINTERNAL = 0; +#endif + if (!IsConfigured) + DeleteAllOutputManagedResources(); + } + + /// + /// Called after a module was copied to a template + /// + /// Use this handle references that can't be templated etc... + public virtual void OnTemplateCreated() + { + DeleteAllOutputManagedResources(); + } + + #endregion + + #region ### Helpers ### + + /// + /// Gets a request parameter of a certain type + /// + /// Type derived from PCGDataRequestParameter + /// reference to the list of request parameters + /// the wanted request parameter or null + static protected T GetRequestParameter(ref CGDataRequestParameter[] requests) where T : CGDataRequestParameter + { + for (int i = 0; i < requests.Length; i++) + if (requests[i] is T) + return (T)requests[i]; + + return null; + } + + /// + /// Removes a certain request parameter from the requests array + /// + /// reference to the requests array + /// the request to remove + static protected void RemoveRequestParameter(ref CGDataRequestParameter[] requests, CGDataRequestParameter request) + { + for (int i = 0; i < requests.Length; i++) + if (requests[i] == request) + { + requests = requests.RemoveAt(i); + return; + } + + } + + #endregion + + #region ### Public Methods ### + + + public CGModuleLink GetOutputLink(CGModuleOutputSlot outSlot, CGModuleInputSlot inSlot) + { + return GetLink(OutputLinks, outSlot, inSlot); + } + + public List GetOutputLinks(CGModuleOutputSlot outSlot) + { + return GetLinks(OutputLinks, outSlot); + } + + public CGModuleLink GetInputLink(CGModuleInputSlot inSlot, CGModuleOutputSlot outSlot) + { + return GetLink(InputLinks, inSlot, outSlot); + } + + public List GetInputLinks(CGModuleInputSlot inSlot) + { + return GetLinks(InputLinks, inSlot); + } + + + public CGModule CopyTo(CurvyGenerator targetGenerator) + { + if (this == null) + throw new InvalidOperationException($"[Curvy] Trying to copy the already deleted module {this.name}"); + + CGModule newModule = this.DuplicateGameObject(targetGenerator.transform, false); + newModule.mGenerator = targetGenerator; + newModule.Initialize(); + newModule.ModuleName = ModuleName; + newModule.ModuleName = targetGenerator.getUniqueModuleNameINTERNAL(newModule.ModuleName); + newModule.SetUniqueIdINTERNAL(); + newModule.renameManagedResourcesINTERNAL(); + return newModule; + } + + public Component AddManagedResource(string resourceName, string context = "", int index = -1) + { + Component res = CGResourceHandler.CreateResource(this, resourceName, context); + if (res == null) + throw new InvalidOperationException(String.Format("[Curvy] Could not create managed resource of type '{0}'. In some cases this is due to not enough elements in a resources Pool", resourceName)); + res.name = GetResourceName( + context == "" ? resourceName : (resourceName + context), + index); + res.transform.SetParent(transform); + return res; + } + + + public void DeleteManagedResource(string resourceName, Component res, string context = "", bool dontUsePool = false) + { + if (res) + CGResourceHandler.DestroyResource(this, resourceName, res, context, dontUsePool); + } + + public bool IsManagedResource(Component res) + { + return (res && res.transform.parent == transform);//res.gameObject.GetComponentInParent() == Generator);RetrieveGenerator + } + + + public List GetAllPrefabPools() + { + return Generator.PoolManager.FindPools(UniqueIDString + "_"); + } + + public void DeleteAllPrefabPools() + { + Generator.PoolManager.DeletePools(UniqueIDString + "_"); + } + + public void Delete() + { + OnStateChange(); + gameObject.Destroy(true, true); + } + + public CGModuleInputSlot GetInputSlot(string name) + { + return (InputByName != null && InputByName.ContainsKey(name)) ? InputByName[name] : null; + } + + public List GetInputSlots(System.Type filterType = null) + { + if (filterType == null) + return new List(Input); + else + { + List res = new List(); + for (int i = 0; i < Output.Count; i++) +#if NETFX_CORE + if (Output[i].Info.DataTypes[0] == filterType || Output[i].Info.DataTypes[0].GetTypeInfo().IsSubclassOf(filterType)) +#else + if (Output[i].Info.DataTypes[0] == filterType || Output[i].Info.DataTypes[0].IsSubclassOf(filterType)) +#endif + res.Add(Input[i]); + + return res; + } + } + + public CGModuleOutputSlot GetOutputSlot(string name) + { + return (OutputByName != null && OutputByName.ContainsKey(name)) ? OutputByName[name] : null; + } + + public List GetOutputSlots(System.Type filterType = null) + { + if (filterType == null) + return new List(Output); + else + { + List res = new List(); + for (int i = 0; i < Output.Count; i++) +#if NETFX_CORE + if (Output[i].Info.DataTypes[0] == filterType || Output[i].Info.DataTypes[0].GetTypeInfo().IsSubclassOf(filterType)) +#else + if (Output[i].Info.DataTypes[0] == filterType || Output[i].Info.DataTypes[0].IsSubclassOf(filterType)) +#endif + res.Add(Output[i]); + + return res; + } + } + + public bool GetManagedResources(out List components, out List resourceNames) + { + components = new List(); + resourceNames = new List(); + FieldInfo[] fields = GetType().GetAllFields(false, true); + foreach (FieldInfo f in fields) + { + CGResourceManagerAttribute at = f.GetCustomAttribute(); + if (at != null) + { +#if NETFX_CORE + if (typeof(ICGResourceCollection).GetTypeInfo().IsAssignableFrom(f.FieldType.GetTypeInfo())) +#else + if (typeof(ICGResourceCollection).IsAssignableFrom(f.FieldType)) +#endif + { + ICGResourceCollection col = f.GetValue(this) as ICGResourceCollection; + if (col != null) + { + Component[] items = col.ItemsArray; + foreach (Component component in items) + { + //component can be null if for example the user delete from the hierarchy a CGMeshResource game object + if (component && component.transform.parent == transform) + { + components.Add(component); + resourceNames.Add(at.ResourceName); + } + } + } + } + else + { + Component component = f.GetValue(this) as Component; + if (component && component.transform.parent == transform) + { + components.Add(component); + resourceNames.Add(at.ResourceName); + } + } + } + } + + return (components.Count > 0); + } + + + + #endregion + + #region ### Privates, Protected and Internals ### + /*! \cond PRIVATE */ + /*! @name Internal Public + * Don't use them unless you know what you're doing! + */ + //@{ + + /* + public void CheckAndRaiseOnStateChangedINTERNAL() + { + + bool b = mLastIsConfiguredState; + Debug.Log(name + " check ="+b+":"+IsConfigured); + if (IsConfigured != b) + OnStateChange(); + + } + */ + + private readonly Dictionary> resourcesNameCache = new Dictionary>(); + + private string GetResourceName(string resourceName, int index) + { + string newName = null; + bool found; + if (found = resourcesNameCache.TryGetValue(resourceName, out var dictionary)) + found = dictionary.TryGetValue(index, out newName); + else + resourcesNameCache[resourceName] = new Dictionary(); + + if (found == false) + { + newName = index > -1 + ? string.Format(CultureInfo.InvariantCulture, "{0}_{1}_{2}{3:000}", ModuleName, UniqueIDString, resourceName, index) + : string.Format(CultureInfo.InvariantCulture, "{0}_{1}_{2}", ModuleName, UniqueIDString, resourceName); + resourcesNameCache[resourceName][index] = newName; + } + + return newName; + } + + protected void RenameResource(string resourceName, Component resource, int index = -1) + { + string newName = GetResourceName(resourceName, index); + //This check is necessary because when CurvyGenerator.ForceFrequentUpdates is true, this bug happens + //[FIXED] When a scene has input spline path or input spline shape module, renaming objects from the hierarchy or though the F2 shortcut does not work + if (resource.name != newName) + resource.name = newName; + } + + private static CGModuleLink GetLink(List lst, CGModuleSlot source, CGModuleSlot target) + { + for (int i = 0; i < lst.Count; i++) + if (lst[i].IsSame(source, target)) + return lst[i]; + return null; + } + + private static List GetLinks(List lst, CGModuleSlot source) + { + List res = new List(); + for (int i = 0; i < lst.Count; i++) + if (lst[i].IsFrom(source)) + res.Add(lst[i]); + return res; + } + + protected PrefabPool GetPrefabPool(GameObject prefab) + { + return Generator.PoolManager.GetPrefabPool(UniqueIDString + "_" + prefab.name, prefab); + } + + protected bool TryDeleteChildrenFromAssociatedPrefab() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + { + int childCount = transform.childCount; + for (int i = 0; i < childCount; i++) + { + Transform item = transform.GetChild(i); + if (DTUtility.DoesPrefabStatusAllowDeletion(item.gameObject, out _) == false) + { + Generator.DeleteAllOutputManagedResourcesFromAssociatedPrefab(); + return true; + } + } + } +#endif + return false; + } + + + public int SetUniqueIdINTERNAL() + { + m_UniqueID = ++Generator.m_LastModuleID; + m_UniqueIDString = null; //invalidate cache + return m_UniqueID; + } + + /// + /// Initializes SortAncestor with number of connected Input links + /// + //DESIGN inline this in doSortModules() + internal void initializeSort() + { + SortAncestors = 0; + CircularReferenceError = false; + //if (Active) + //{ + for (int i = 0; i < Input.Count; i++) + if (Input[i].IsLinked) + SortAncestors += Input[i].LinkedSlots.Count; + //} + } + /// + /// Decrement SortAncestor of linked modules and return a list of childs where SortAncestor==0 + /// + /// + //DESIGN inline this in doSortModules() + internal List decrementChilds() + { + List noAncestors = new List(); + for (int s = 0; s < Output.Count; s++) + for (int l = 0; l < Output[s].LinkedSlots.Count; l++) + { + if (--Output[s].LinkedSlots[l].Module.SortAncestors == 0) + noAncestors.Add(Output[s].LinkedSlots[l].Module); + } + + return noAncestors; + } + + internal void doRefresh() + { +#if UNITY_EDITOR || CURVY_DEBUG + DEBUG_LastUpdateTime = System.DateTime.Now; + DEBUG_ExecutionTime.Start(); +#endif + + if (RandomizeSeed) + Random.InitState(unchecked((int)System.DateTime.Now.Ticks)); + else + Random.InitState(Seed); + OnBeforeRefreshEvent(new CurvyCGEventArgs(this)); + Refresh(); + Random.InitState(unchecked((int)System.DateTime.Now.Ticks)); + +#if UNITY_EDITOR || CURVY_DEBUG + DEBUG_ExecutionTime.Stop(); +#endif + OnRefreshEvent(new CurvyCGEventArgs(this)); + + mDirty = false; + } + + internal ModuleInfoAttribute getInfo() + { +#if NETFX_CORE + object[] inf = (object[])GetType().GetTypeInfo().GetCustomAttributes(typeof(ModuleInfoAttribute), true); +#else + object[] inf = GetType().GetCustomAttributes(typeof(ModuleInfoAttribute), true); +#endif + return (inf.Length > 0) ? (ModuleInfoAttribute)inf[0] : null; + } + + private bool usesRandom() + { + return (Info != null && Info.UsesRandom); + } + + private void loadSlots() + { + // Get list of Slots + InputByName = new Dictionary(); + OutputByName = new Dictionary(); + Input = new List(); + Output = new List(); + FieldInfo[] fields = GetType().GetAllFields(); + //Debug.Log(name + ".loadSlots()"); + foreach (FieldInfo f in fields) + { + if (f.FieldType == typeof(CGModuleInputSlot)) + { + CGModuleInputSlot s = (CGModuleInputSlot)f.GetValue(this); + s.Module = this; + s.Info = getSlotInfo(f); + s.ReInitializeLinkedSlots(); + InputByName.Add(s.Info.Name, s); + Input.Add(s); + } + else if (f.FieldType == typeof(CGModuleOutputSlot)) + { + CGModuleOutputSlot s = (CGModuleOutputSlot)f.GetValue(this); + s.Module = this; + s.Info = getSlotInfo(f); + s.ReInitializeLinkedSlots(); + OutputByName.Add(s.Info.Name, s); + Output.Add(s); + } + } + } + + private SlotInfo getSlotInfo(FieldInfo f) + { + SlotInfo si = f.GetCustomAttribute(); + if (si != null) + { + if (string.IsNullOrEmpty(si.Name)) + si.Name = f.Name.TrimStart("In").TrimStart("Out"); + for (int x = 0; x < si.DataTypes.Length; x++) +#if NETFX_CORE + if (!si.DataTypes[x].GetTypeInfo().IsSubclassOf(typeof(CGData))) +#else + if (!si.DataTypes[x].IsSubclassOf(typeof(CGData))) +#endif + Debug.LogError(string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}, Slot '{1}': Data type needs to be subclass of CGData!", GetType().Name, si.DisplayName)); + return si; + } + Debug.LogError("The Slot '" + f.Name + "' of type '" + f.DeclaringType.Name + "' needs a SlotInfo attribute!"); + return null; + } + + private void setTreeDirtyStateChange() + { + mStateChangeDirty = true; + if (Output != null) + { + for (int i = 0; i < Output.Count; i++) + { + if (Output[i].IsLinked) + { + List modules = Output[i].GetLinkedModules(); + for (int m = 0; m < modules.Count; m++) + //BUG? does the || modules[m].CircularReferenceError create infinite dirtying logique? + if (modules[m] != this || modules[m].CircularReferenceError) // prevent circular reference + modules[m].setTreeDirtyStateChange(); + } + } + } + } + + private CurvyGenerator RetrieveGenerator() + { + //return GetComponentInParent(); + return transform.parent != null + ? transform.parent.GetComponent() + : null; + } + + public void checkOnStateChangedINTERNAL() + { + // Debug.Log(ModuleName+".Check: " + mStateChangeDirty); + if (mStateChangeDirty) + OnStateChange(); + mStateChangeDirty = false; + } + + + public void renameManagedResourcesINTERNAL() + { + FieldInfo[] fields = GetType().GetAllFields(false, true); + foreach (FieldInfo f in fields) + { + CGResourceManagerAttribute at = f.GetCustomAttribute(); + if (at != null) + { + Component cmp = f.GetValue(this) as Component; + if (cmp && cmp.transform.parent == this.transform) + RenameResource(at.ResourceName, cmp); + } + } + } + + + //@} + /*! \endcond */ + #endregion + + + } + + /// + /// Attribute defining basic module properties + /// + [System.AttributeUsage(System.AttributeTargets.Class)] + public sealed class ModuleInfoAttribute : System.Attribute, System.IComparable + { + /// + /// Menu-Name of the module (without '/') + /// + public readonly string MenuName; + /// + /// Default Module name + /// + public string ModuleName; + /// + /// Tooltip Info + /// + public string Description; + + /// + /// Whether the module uses Random, i.e. should show Seed options + /// + public bool UsesRandom; + + public ModuleInfoAttribute(string name) + { + MenuName = name; + } + + public int CompareTo(object obj) + { + return String.Compare(MenuName, ((ModuleInfoAttribute)obj).MenuName, StringComparison.Ordinal); + } + + + + //TODO code analysis (CA1036) says that Equal, !=, <, == and > should be defined since IComparable is implemented + } + + + /// + /// CGModule helper class + /// + [System.Serializable] + public class CGModuleProperties + { + public Rect Dimensions; +#if UNITY_EDITOR + public AnimBool Expanded; +#endif + public float MinWidth = 250; + public float LabelWidth; + public Color BackgroundColor = Color.black; + + public CGModuleProperties() + { +#if UNITY_EDITOR + Expanded = new AnimBool(true); + Expanded.speed = 3; +#endif + } + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModule.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModule.cs.meta new file mode 100644 index 00000000..7b4a51d8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModule.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3febf7cd67efdd24cabe9faf9224067e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleLink.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleLink.cs new file mode 100644 index 00000000..c81c4d0e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleLink.cs @@ -0,0 +1,100 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Class defining a linkage between two modules' slots + /// + [System.Serializable] + public class CGModuleLink + { + // Self + [SerializeField] private int m_ModuleID; + [SerializeField] private string m_SlotName; + // Other + [SerializeField] private int m_TargetModuleID; + [SerializeField] private string m_TargetSlotName; + + public int ModuleID { get { return m_ModuleID; } } + public string SlotName { get { return m_SlotName;} } + public int TargetModuleID { get { return m_TargetModuleID; } } + public string TargetSlotName { get { return m_TargetSlotName; } } + + + + public CGModuleLink(int sourceID, string sourceSlotName, int targetID, string targetSlotName) + { + m_ModuleID = sourceID; + m_SlotName = sourceSlotName; + m_TargetModuleID = targetID; + m_TargetSlotName = targetSlotName; + } + + public CGModuleLink(CGModuleSlot source, CGModuleSlot target) : this(source.Module.UniqueID,source.Name,target.Module.UniqueID,target.Name) {} + + public bool IsSame(CGModuleLink o) + { + return (ModuleID == o.ModuleID && + SlotName == o.SlotName && + TargetModuleID == o.TargetModuleID && + TargetSlotName == o.m_TargetSlotName); + } + + public bool IsSame(CGModuleSlot source, CGModuleSlot target) + { + return (ModuleID == source.Module.UniqueID && + SlotName == source.Name && + TargetModuleID == target.Module.UniqueID && + TargetSlotName == target.Name); + } + + public bool IsTo(CGModuleSlot s) + { + return (s.Module.UniqueID == TargetModuleID && s.Name == TargetSlotName); + } + + public bool IsFrom(CGModuleSlot s) + { + return (s.Module.UniqueID == ModuleID && s.Name == SlotName); + } + + public bool IsUsing(CGModule module) + { + return (ModuleID == module.UniqueID || TargetModuleID == module.UniqueID); + } + + public bool IsBetween(CGModuleSlot one, CGModuleSlot another) + { + return ((IsTo(one) && IsFrom(another)) || + (IsTo(another) && IsFrom(one))); + } + + public void SetModuleIDIINTERNAL(int moduleID, int targetModuleID) + { + m_ModuleID = moduleID; + m_TargetModuleID = targetModuleID; + } + + + public static implicit operator bool(CGModuleLink a) + { + return !object.ReferenceEquals(a, null); + } + + public override string ToString() + { + return string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}({1})->{2}({3})", SlotName, ModuleID, TargetSlotName, TargetModuleID); + } + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleLink.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleLink.cs.meta new file mode 100644 index 00000000..7952e683 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleLink.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a742dce02c15b8544a4337da3c04c78a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleSlot.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleSlot.cs new file mode 100644 index 00000000..62ee429b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleSlot.cs @@ -0,0 +1,738 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; +using System.Linq; +using System.Reflection; +using FluffyUnderware.DevTools; +using ToolBuddy.Pooling.Pools; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Class defining a module slot + /// + public class CGModuleSlot + { + /// + /// The Module this Slot belongs to + /// + public CGModule Module { get; internal set; } + /// + /// Gets the SlotInfo Attribute + /// + public SlotInfo Info { get; internal set; } + + /// + /// Origin of Link-Wire + /// + public Vector2 Origin { get; set; } + /// + /// Mouse-Hotzone + /// + public Rect DropZone { get; set; } + + /// + /// Whether the link is wired or not + /// + public bool IsLinked { get { return LinkedSlots != null && LinkedSlots.Count > 0; } } + /// + /// Whether the link is wired and all connected modules are configured + /// + public bool IsLinkedAndConfigured + { + get + { + if (!IsLinked) + return false; + for (int i = 0; i < LinkedSlots.Count; i++) + if (!LinkedSlots[i].Module.IsConfigured) + return false; + return true; + } + } + /// + /// Gets the module as an + /// + public IOnRequestProcessing OnRequestModule { get { return Module as IOnRequestProcessing; } } + /// + /// Gets the module as an + /// + public IPathProvider PathProvider { get { return Module as IPathProvider; } } + /// + /// Gets the module as an + /// + public IExternalInput ExternalInput { get { return Module as IExternalInput; } } + /// + /// All slots of linked modules + /// + public List LinkedSlots + { + get + { + if (mLinkedSlots == null) + LoadLinkedSlots(); + return mLinkedSlots ?? new List(); + } + } + /// + /// Gets the number of connected links, i.e. shortcut to this.Links.Count + /// + public int Count + { + get { return LinkedSlots.Count; } + } + + public string Name + { + get { return (Info != null) ? Info.Name : ""; } + } + + protected List mLinkedSlots = null; + + public CGModuleSlot() + { + + } + + public bool HasLinkTo(CGModuleSlot other) + { + for (int i = 0; i < LinkedSlots.Count; i++) + if (LinkedSlots[i] == other) + return true; + + return false; + } + + /// + /// Gets a list of all Links' modules + /// + public List GetLinkedModules() + { + List res = new List(); + for (int i = 0; i < LinkedSlots.Count; i++) + res.Add(LinkedSlots[i].Module); + return res; + } + + public virtual void LinkTo(CGModuleSlot other) + { + if (Module) + { + Module.Generator.sortModulesINTERNAL(); + Module.Dirty = true; + } + if (other.Module) + other.Module.Dirty = true; + } + + protected static void LinkInputAndOutput(CGModuleSlot inputSlot, CGModuleSlot outputSlot) + { + if ((!inputSlot.Info.Array || inputSlot.Info.ArrayType == SlotInfo.SlotArrayType.Hidden) && inputSlot.IsLinked) + inputSlot.UnlinkAll(); + + outputSlot.Module.OutputLinks.Add(new CGModuleLink(outputSlot, inputSlot)); + inputSlot.Module.InputLinks.Add(new CGModuleLink(inputSlot, outputSlot)); + if (!outputSlot.LinkedSlots.Contains(inputSlot)) + outputSlot.LinkedSlots.Add(inputSlot); + if (!inputSlot.LinkedSlots.Contains(outputSlot)) + inputSlot.LinkedSlots.Add(outputSlot); + } + + public virtual void UnlinkFrom(CGModuleSlot other) + { + if (Module) + { + Module.Generator.sortModulesINTERNAL(); + Module.Dirty = true; + } + if (other.Module) + other.Module.Dirty = true; + } + + public virtual void UnlinkAll() + { + } + + public void ReInitializeLinkedSlots() + { + mLinkedSlots = null; + } + + protected virtual void LoadLinkedSlots() + { + } + + public static implicit operator bool(CGModuleSlot a) + { + return !object.ReferenceEquals(a, null); + } + + public override string ToString() + { + return string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}: {1}.{2}", GetType().Name, Module.name, Name); + } + + } + + /// + /// Class defining a module's input slot + /// + [System.Serializable] + public class CGModuleInputSlot : CGModuleSlot + { + public InputSlotInfo InputInfo { get { return Info as InputSlotInfo; } } +#if UNITY_EDITOR + public int LastDataCountINTERNAL { get; set; } +#endif + public CGModuleInputSlot() : base() { } + + + protected override void LoadLinkedSlots() + { + if (!Module.Generator.IsInitialized) + return; + base.LoadLinkedSlots(); + mLinkedSlots = new List(); + List lnks = Module.GetInputLinks(this); + foreach (CGModuleLink l in lnks) + { + CGModule mod = Module.Generator.GetModule(l.TargetModuleID, true); + if (mod) + { + CGModuleOutputSlot slot = mod.OutputByName[l.TargetSlotName]; + // Sanitize missing links + if (!slot.Module.GetOutputLink(slot, this)) + { + slot.Module.OutputLinks.Add(new CGModuleLink(slot, this)); + slot.ReInitializeLinkedSlots(); + } + + if (!mLinkedSlots.Contains(slot)) + mLinkedSlots.Add(slot); + } + else + { + Module.InputLinks.Remove(l); + } + } + } + + public override void UnlinkAll() + { + List ls = new List(LinkedSlots); + foreach (CGModuleSlot l in ls) + { + UnlinkFrom(l); + } + } + + public override void LinkTo(CGModuleSlot outputSlot) + { + if (!HasLinkTo(outputSlot)) + { + LinkInputAndOutput(this, outputSlot); + base.LinkTo(outputSlot); + } + } + + public override void UnlinkFrom(CGModuleSlot outputSlot) + { + if (HasLinkTo(outputSlot)) + { + CGModuleOutputSlot cgModuleOutputSlot = (CGModuleOutputSlot)outputSlot; + CGModuleLink l1 = Module.GetInputLink(this, cgModuleOutputSlot); + Module.InputLinks.Remove(l1); + CGModuleLink l2 = outputSlot.Module.GetOutputLink(cgModuleOutputSlot, this); + outputSlot.Module.OutputLinks.Remove(l2); + + LinkedSlots.Remove(outputSlot); + outputSlot.LinkedSlots.Remove(this); + + base.UnlinkFrom(outputSlot); + } + } + + + + /// + /// Gets a linked Output slot + /// + public CGModuleOutputSlot SourceSlot(int index = 0) + { + return (index < Count && index >= 0) ? (CGModuleOutputSlot)LinkedSlots[index] : null; + } + + /// + /// Determines if a particular output slot of another module can link to this slot + /// + /// the slot of the other module that'd like to link to this input slot + /// whether linking is allowed or not + public bool CanLinkTo(CGModuleOutputSlot source) + { + return source.Module != Module && AreInputAndOutputSlotsCompatible(InputInfo, OnRequestModule != null, source.OutputInfo, source.OnRequestModule != null); + } + + /// + /// + /// + /// + /// Does the module owning the input slot implement the IOnRequestProcessing interface + /// + /// Does the module owning the output slot implement the IOnRequestProcessing interface + /// + public static bool AreInputAndOutputSlotsCompatible(InputSlotInfo inputSlotInfo, bool inputSlotModuleIsOnRequest, OutputSlotInfo outputSlotInfo, bool outputSlotModuleIsOnRequest) + { + return inputSlotInfo.IsValidFrom(outputSlotInfo.DataType) && + ((outputSlotModuleIsOnRequest && (inputSlotInfo.RequestDataOnly || inputSlotModuleIsOnRequest)) || (outputSlotModuleIsOnRequest == false && !inputSlotInfo.RequestDataOnly)); + } + + /// + /// Gets the module connected to the link + /// + /// the link index + /// a module + private CGModule SourceModule(int index) + { + return (index < Count && index >= 0) ? LinkedSlots[index].Module : null; + } + + /// + /// Gets the data from the module connected to a certain input slot. If more than one module is connected, the first module's data is returned + /// + /// type of requested data + /// request parameters + /// the data + public T GetData(params CGDataRequestParameter[] requests) where T : CGData + { + return GetData(out _, requests); + } + + /// + /// Gets the data from the module connected to a certain input slot. If more than one module is connected, the first module's data is returned + /// + /// type of requested data + /// Whether the returned data can be disposed safely after using it, in order to make its resources available for future use, and thus reducing garbage collection. + /// It is set to false when returned data is a direct reference to data stored by the module, and not a copy of it + /// + /// + /// + /// request parameters + /// the data + public T GetData(out bool isDataDisposable, params CGDataRequestParameter[] requests) where T : CGData + { + CGData[] data = GetData(0, out isDataDisposable, requests); +#if UNITY_EDITOR + LastDataCountINTERNAL = (data == null || data.Length == 0) ? 0 : data.Length; +#endif + if (data == null || data.Length == 0 || data[0] == null) + { + isDataDisposable = false; + return null; + } + + return data[0] as T; + } + + /// + /// Gets the data from all modules connected to a certain input slot. + /// + /// type of requested data + /// request parameters + /// the data + public List GetAllData(params CGDataRequestParameter[] requests) where T : CGData + { + return GetAllData(out _, requests); + } + + /// + /// Gets the data from all modules connected to a certain input slot. + /// + /// type of requested data + /// Whether the returned data can be disposed safely after using it, in order to make its resources available for future use, and thus reducing garbage collection. + /// It is set to false when returned data is a direct reference to data stored by the module, and not a copy of it + /// + /// + /// + /// request parameters + /// the data + public List GetAllData(out bool isDataDisposable, params CGDataRequestParameter[] requests) where T : CGData + { + isDataDisposable = true; + List res = new List(); + for (int i = 0; i < Count; i++) + { + CGData[] data = GetData(i, out bool isDisposable, requests); + if (data != null) + { + //If in the returned there are multiple CGData, some needing to be disposed, others not, then we consider that none should be disposed + //This means that some data might not be flagged as disposable, which means it will be dispose once Finalize is called. Missed opportunity to instantly reuse its data. Not good for reducing garbage collection + isDataDisposable &= isDisposable; +#if CURVY_SANITY_CHECKS + //TODO right now there are no graph that I am aware of that can trigger the situation explained above, but in the future, if there are modules that take multiple paths as inputs, one of them can be from Input Path module (isDisposable true) and one from Shape Extrusion (output Volume, which is also a path, isDisposable false) + if (isDisposable && isDataDisposable == false) + DTLog.LogWarning("[Curvy] A disposable data was treated as not disposable"); +#endif + if (!Info.Array) + { + res.Add(data[0] as T); + break; + } + + for (int a = 0; a < data.Length; a++) + res.Add(data[a] as T); + } + } + +#if UNITY_EDITOR + LastDataCountINTERNAL = res.Count; +#endif + return res; + } + + /// + /// Gets the data from the module connected to a certain input slot + /// + /// type of requested data + /// slot index (if the slot supports multiple inputs) + /// Whether the returned data can be disposed safely after using it, in order to make its resources available for future use, and thus reducing garbage collection. + /// It is set to false when returned data is a direct reference to data stored by the module, and not a copy of it + /// + /// + /// + /// request parameters + /// the data + private CGData[] GetData(int slotIndex, out bool isDataDisposable, params CGDataRequestParameter[] requests + ) where T : CGData + { + CGModuleOutputSlot source = SourceSlot(slotIndex); + if (source == null || !source.Module.Active) + { + isDataDisposable = true; + return new CGData[0]; + } + + // Handles IOnRequestProcessing modules (i.e. modules that provides data on the fly) + if (source.Module is IOnRequestProcessing) + { + bool needNewData = (source.Data == null || source.Data.Length == 0); + // Return last data? + if (!needNewData && source.LastRequestParameters != null && source.LastRequestParameters.Length == requests.Length) + { + for (int i = 0; i < requests.Length; i++) + if (!requests[i].Equals(source.LastRequestParameters[i])) + { + needNewData = true; + break; + } + } + else + needNewData = true; + + if (needNewData) + { + source.LastRequestParameters = requests; +#if UNITY_EDITOR || CURVY_DEBUG + source.Module.DEBUG_LastUpdateTime = System.DateTime.Now; + Module.DEBUG_ExecutionTime.Pause(); + source.Module.DEBUG_ExecutionTime.Start(); +#endif + source.Module.UIMessages.Clear();//TODO Find a way to move this line of code inside OnSlotDataRequest + source.SetData(((IOnRequestProcessing)source.Module).OnSlotDataRequest(this, source, requests)); +#if UNITY_EDITOR || CURVY_DEBUG + source.Module.DEBUG_ExecutionTime.Stop(); + Module.DEBUG_ExecutionTime.Start(); +#endif + } + + } + + bool copyData = InputInfo.ModifiesData || source.Module is IOnRequestProcessing; + + CGData[] result = copyData + ? cloneData(source.Data) + : source.Data; + + isDataDisposable = copyData && result != null; + + return result; ; + } + + private static CGData[] cloneData(CGData[] source) where T : CGData + { + T[] d = new T[source.Length]; + for (int i = 0; i < source.Length; i++) + d[i] = source[i] == null ? null : source[i].Clone(); + return d; + } + + } + + /// + /// Class defining a module's output slot + /// + [System.Serializable] + public class CGModuleOutputSlot : CGModuleSlot + { + public OutputSlotInfo OutputInfo { get { return Info as OutputSlotInfo; } } + public CGData[] Data = new CGData[0]; + public CGDataRequestParameter[] LastRequestParameters; // used for caching of Virtual Modules + + public CGModuleOutputSlot() : base() { } + + protected override void LoadLinkedSlots() + { + if (!Module.Generator.IsInitialized) + return; + base.LoadLinkedSlots(); + mLinkedSlots = new List(); + List lnks = Module.GetOutputLinks(this); + foreach (CGModuleLink l in lnks) + { + CGModule mod = Module.Generator.GetModule(l.TargetModuleID, true); + if (mod) + { + CGModuleInputSlot slot = mod.InputByName[l.TargetSlotName]; + + // Sanitize missing links + if (!slot.Module.GetInputLink(slot, this)) + { + slot.Module.InputLinks.Add(new CGModuleLink(slot, this)); + slot.ReInitializeLinkedSlots(); + } + + if (!mLinkedSlots.Contains(slot)) + mLinkedSlots.Add(slot); + } + else + { + Module.OutputLinks.Remove(l); + } + } + } + + public override void LinkTo(CGModuleSlot inputSlot) + { + if (!HasLinkTo(inputSlot)) + { + LinkInputAndOutput(inputSlot, this); + base.LinkTo(inputSlot); + } + } + + public override void UnlinkFrom(CGModuleSlot inputSlot) + { + if (HasLinkTo(inputSlot)) + { + CGModuleInputSlot cgModuleInputSlot = (CGModuleInputSlot)inputSlot; + CGModuleLink l1 = Module.GetOutputLink(this, cgModuleInputSlot); + Module.OutputLinks.Remove(l1); + + CGModuleLink l2 = inputSlot.Module.GetInputLink(cgModuleInputSlot, this); + inputSlot.Module.InputLinks.Remove(l2); + + LinkedSlots.Remove(inputSlot); + inputSlot.LinkedSlots.Remove(this); + + base.UnlinkFrom(inputSlot); + } + } + + + + public bool HasData + { + get { return Data != null && Data.Length > 0 && Data[0] != null; } + } + + public void ClearData() + { + AssignNewData(new CGData[0]); + } + + private void AssignNewData(CGData[] newData) + { + if (Data == newData) + return; + + foreach (CGData cgData in Data) + if (cgData && newData.Contains(cgData) == false) + cgData.Dispose(); + + Data = newData; + } + + public void SetData(List newData) where T : CGData + { + CGData[] newDataArray; + if (newData == null) + newDataArray = new CGData[0]; + else + { + if (!Info.Array && newData.Count > 1) + Debug.LogWarning("[Curvy] " + Module.GetType().Name + " (" + Info.DisplayName + ") only supports a single data item! Either avoid calculating unnecessary data or define the slot as an array!"); + newDataArray = newData.ToArray(); + } + AssignNewData(newDataArray); + } + + public void SetData(params CGData[] newData) + { + //TODO why does this not do the same test then the other SetData method, i.e. if (!Info.Array && data.Count > 1) + AssignNewData((newData == null) ? new CGData[0] : newData); + } + + public T GetData() where T : CGData + { + return (Data.Length == 0) ? null : Data[0] as T; + } + + public T[] GetAllData() where T : CGData + { + return Data as T[]; + } + } + + /// + /// Attribute to define slot properties + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")] + [AttributeUsage(AttributeTargets.Field)] + public class SlotInfo : Attribute, IComparable + { + /// + /// Defines what type of Array is used + /// + public enum SlotArrayType + { + Unknown, + /// + /// An array that behaves like an array code wise and UI wise + /// + Normal, + /// + /// An array that behave like an array code wise, but is displayed as a single instance of CGData UI wise. + /// This allows for CG modules to send/receive arrays, without giving the user the possibility to link multiple modules to the slot + /// + Hidden + } + + public readonly Type[] DataTypes; + + /// + /// If empty Field's name will be used, with slight modifications + /// + public string Name; + + private string displayName = null; + /// + /// If not null, this string will be used in the UI, while will be used in the data serialization and slots linking logic + /// + public string DisplayName + { + get { return displayName ?? Name; } + set { displayName = value; } + } + + public string Tooltip; + + /// + /// Whether or not the slot accepts an array of CGData instances or a single instance of it + /// + public bool Array;//DESIGN should be renamed to IsArray + + /// + /// When is true, this value defines what type of Array is used + /// + public SlotArrayType ArrayType = SlotArrayType.Normal; + + protected SlotInfo(string name, params Type[] type) + { + DataTypes = type; + Name = name; + } + protected SlotInfo(params Type[] type) : this(null, type) { } + + public int CompareTo(object obj) + { + return String.Compare(((SlotInfo)obj).Name, Name, StringComparison.Ordinal); + } + + //TODO code analysis (CA1036) says that Equal, !=, <, == and > should be defined since IComparable is implemented + + } + /// + /// Attribute to define input sot properties + /// + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] + public sealed class InputSlotInfo : SlotInfo + { + public bool RequestDataOnly = false; + public bool Optional = false; + /// + /// Whether this data is altered by the module. + /// If true, the module providing data to this slot will return a copy of its data, and not the original copy, so you can safely modify it. + /// + // DESIGN should this be removed, and ask users to just clone the data when they need to modify it? + public bool ModifiesData = false; + + public InputSlotInfo(string name, params Type[] type) : base(name, type) { } + public InputSlotInfo(params Type[] type) : this(null, type) { } + + /// + /// Gets whether outType is of same type or a subtype of one of our input types + /// + public bool IsValidFrom(Type outType) + { + for (int x = 0; x < DataTypes.Length; x++) +#if NETFX_CORE + if (outType == DataTypes[x] || outType.GetTypeInfo().IsSubclassOf(DataTypes[x])) +#else + if (outType == DataTypes[x] || outType.IsSubclassOf(DataTypes[x])) +#endif + return true; + return false; + } + } + + /// + /// Attribute to define output slot properties + /// + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] + public class OutputSlotInfo : SlotInfo + { + public Type DataType + { + get + { + return DataTypes[0]; + } + } + + public OutputSlotInfo(Type type) : this(null, type) { } + + public OutputSlotInfo(string name, Type type) : base(name, type) { } + } + + /// + /// An preset for modules that output CGShape data. Allows modules to output a that varies along a shape extrusion. See also + /// + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] + public class ShapeOutputSlotInfo : OutputSlotInfo + { + /// + /// Whether this module outputs a that varies along a shape extrusion + /// + public bool OutputsVariableShape = false; + + public ShapeOutputSlotInfo() : this(null) { } + public ShapeOutputSlotInfo(string name) : base(name, typeof(CGShape)) { } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleSlot.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleSlot.cs.meta new file mode 100644 index 00000000..4fb32847 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGModuleSlot.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82ee39978f511ae4c9a157723ae1e1c1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGResource.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGResource.cs new file mode 100644 index 00000000..ae8e2798 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGResource.cs @@ -0,0 +1,244 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +using System.Collections.Generic; +using System.Reflection; +using FluffyUnderware.Curvy.Shapes; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Resource attribute + /// + [System.AttributeUsage(System.AttributeTargets.Class)] + public sealed class ResourceLoaderAttribute : System.Attribute + { + public readonly string ResourceName; + + public ResourceLoaderAttribute(string resName) + { + ResourceName = resName; + } + } + + /// + /// Resource Helper class used by Curvy Generator + /// + public static class CGResourceHandler + { + private static Dictionary Loader = new Dictionary(); + + public static Component CreateResource(CGModule module, string resName, string context) + { + if (Loader.Count == 0) + getLoaders(); + if (Loader.ContainsKey(resName)) + { + ICGResourceLoader loader = Loader[resName]; + return loader.Create(module, context); + } + else + { + Debug.LogError("CGResourceHandler: Missing Loader for resource '" + resName + "'"); + return null; + } + + } + + public static void DestroyResource(CGModule module, string resName, Component obj, string context, bool kill) + { + if (Loader.Count == 0) + getLoaders(); + if (Loader.ContainsKey(resName)) + { + ICGResourceLoader loader = Loader[resName]; + loader.Destroy(module, obj, context, kill); + } + else + Debug.LogError("CGResourceHandler: Missing Loader for resource '" + resName + "'"); + } + + private static void getLoaders() + { +#if UNITY_EDITOR + TypeCache.TypeCollection types = TypeCache.GetTypesDerivedFrom(); +#else +#if NETFX_CORE + Type[] types = typeof(CGModule).GetAllTypes(); +#else + Type[] types = TypeExt.GetLoadedTypes(); +#endif + Type ICGResourceLoaderType = typeof(ICGResourceLoader); +#endif + + foreach (Type T in types) + { +#if UNITY_EDITOR == false + if (ICGResourceLoaderType.IsAssignableFrom(T) && ICGResourceLoaderType != T) +#endif + { +#if NETFX_CORE + object[] at = (object[])T.GetTypeInfo().GetCustomAttributes(typeof(ResourceLoaderAttribute), true); +#else + object[] attributes = (object[])T.GetCustomAttributes(typeof(ResourceLoaderAttribute), true); +#endif + if (attributes.Length > 0) + { + ICGResourceLoader o = (ICGResourceLoader)System.Activator.CreateInstance(T); + if (o != null) + Loader.Add(((ResourceLoaderAttribute)attributes[0]).ResourceName, o); + } + else + { + DTLog.LogError(String.Format("[Curvy] Could not register resource loader of type {0} because it does not have a ResourceLoader attribute", T.FullName)); + } + } + } + } + } + + /// + /// Spline resource loader class + /// + [ResourceLoader("Spline")] + public class CGSplineResourceLoader : ICGResourceLoader + { + public Component Create(CGModule cgModule, string context) + { + CurvySpline spl = CurvySpline.Create(); + spl.transform.position = Vector3.zero; + spl.Closed = true; + spl.Add(new Vector3(0, 0, 0), new Vector3(5, 0, 10), new Vector3(-5, 0, 10)); + return spl; + } + + public void Destroy(CGModule cgModule, Component obj, string context, bool kill) + { + if (obj != null) + obj.gameObject.Destroy(false, false);//isUndoable is set to false because that's how it was working before. Try make this operation undoable if needed + } + } + + /// + /// Shape (2D spline) resource loader class + /// + [ResourceLoader("Shape")] + public class CGShapeResourceLoader : ICGResourceLoader + { + + public Component Create(CGModule cgModule, string context) + { + CurvySpline spl = CurvySpline.Create(); + spl.transform.position = Vector3.zero; + spl.RestrictTo2D = true; + spl.Closed = true; + spl.Orientation = CurvyOrientation.None; + spl.gameObject.AddComponent().Refresh(); + return spl; + } + + public void Destroy(CGModule cgModule, Component obj, string context, bool kill) + { + if (obj != null) + obj.gameObject.Destroy(false, false);//isUndoable is set to false because that's how it was working before. Try make this operation undoable if needed + } + } + + /// + /// Mesh resource loader class + /// + [ResourceLoader("Mesh")] + public class CGMeshResourceLoader : ICGResourceLoader + { + public Component Create(CGModule cgModule, string context) + { + Component cmp = cgModule.Generator.PoolManager.GetComponentPool().Pop(); + return cmp; + } + + public void Destroy(CGModule cgModule, Component obj, string context, bool kill) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(obj.GetComponent() != null); +#endif + if (obj != null) + { + if (kill) + { + obj.gameObject.Destroy(false, false); + } + else + { + obj.StripComponents(typeof(CGMeshResource), typeof(MeshFilter), typeof(MeshRenderer)); + //OPTIM should we assign null to sharedMesh, so it can be garbage collected? It seems (need deeper investiguation) safe since every time we pop a CGMeshResource from the pool, the following code clears the shared mesh if it exists. And if you put this optim in prod, make sure the retrieval of a CGMeshResource from the pool and its initialization are done in the same atomic operation, and not like now in two separate methods + //obj.GetComponent().sharedMesh = null; + cgModule.Generator.PoolManager.GetComponentPool().Push(obj); + } + } + } + } + + /// + /// GameObject resource loader class + /// + [ResourceLoader("GameObject")] + public class CGGameObjectResourceLoader : ICGResourceLoader + { + public Component Create(CGModule cgModule, string context) + { + GameObject go = cgModule.Generator.PoolManager.GetPrefabPool(context).Pop(); + return go ? go.transform : null; + } + + public void Destroy(CGModule cgModule, Component obj, string context, bool kill) + { + if (obj != null) + { + if (kill) + { + obj.gameObject.Destroy(false, false); + } + else + { + cgModule.Generator.PoolManager.GetPrefabPool(context).Push(obj.gameObject); + } + } + } + } + + /// + /// Collection of GameObject resources + /// + [System.Serializable] + public class CGGameObjectResourceCollection : ICGResourceCollection + { + public List Items = new List(); + public List PoolNames = new List(); + + public int Count + { + get + { + return Items.Count; + } + } + + public Component[] ItemsArray + { + get { return Items.ToArray(); } + } + } + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGResource.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGResource.cs.meta new file mode 100644 index 00000000..83303a24 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGResource.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e08f4ad1d0c546b4cab3c0faddd74868 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGUtility.cs new file mode 100644 index 00000000..7459782b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGUtility.cs @@ -0,0 +1,173 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Reflection; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Curvy Generator Utility class + /// + public static class CGUtility + { + /// + /// Calculates lightmap UV's + /// + /// the UV to create UV2 for + /// UV2 + [Obsolete("Method will get remove in next major update. Copy its content if you need it")] + public static Vector2[] CalculateUV2(Vector2[] uv) + { + Vector2[] UV2 = new Vector2[uv.Length]; + CalculateUV2(uv, UV2, uv.Length); + return UV2; + } + + /// + /// Calculates lightmap UV's. Same as but without array allocation + /// + /// the UV to create UV2 for + /// the UV2 array to fill data into + /// number of array elements to process + [Obsolete("Method will get remove in next major update. Copy its content if you need it")] + public static void CalculateUV2(Vector2[] uv, Vector2[] uv2, int elementsNumber) + { + float maxU = 0; + float maxV = 0; + for (int i = 0; i < elementsNumber; i++) + { + maxU = maxU < uv[i].x ? uv[i].x : maxU; + maxV = maxV < uv[i].y ? uv[i].y : maxV; + } + + float oneOnMaxU = 1f / maxU; + float oneOnMaxV = 1f / maxV; + for (int i1 = 0; i1 < elementsNumber; i1++) + { + uv2[i1].x = uv[i1].x * oneOnMaxU; + uv2[i1].y = uv[i1].y * oneOnMaxV; + } + } + + #region ### Rasterization Helpers ### + + /// + /// Rasterization Helper class + /// + public static List GetControlPointsWithOptions(CGDataRequestMetaCGOptions options, CurvySpline shape, float startDist, float endDist, bool optimize, out int initialMaterialID, out float initialMaxStep) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(shape.Count > 0); +#endif + + List res = new List(); + initialMaterialID = 0; + initialMaxStep = float.MaxValue; + CurvySplineSegment startSeg = shape.DistanceToSegment(startDist); + + CurvySplineSegment finishSeg; + { + float clampedEndDist; + { + clampedEndDist = shape.ClampDistance(endDist, shape.Closed ? CurvyClamping.Loop : CurvyClamping.Clamp); + if (clampedEndDist == 0) + clampedEndDist = endDist; + } + finishSeg = (clampedEndDist == shape.Length) ? shape.LastVisibleControlPoint : shape.DistanceToSegment(clampedEndDist); + if (endDist != shape.Length && endDist > finishSeg.Distance) + { + finishSeg = shape.GetNextControlPoint(finishSeg); + } + } + + MetaCGOptions cgOptions; + float loopOffset = 0; + if (startSeg) + { + cgOptions = startSeg.GetMetadata(true); + initialMaxStep = (cgOptions.MaxStepDistance == 0) ? float.MaxValue : cgOptions.MaxStepDistance; + initialMaterialID = cgOptions.MaterialID; + int currentMaterialID = initialMaterialID; + + float maxDist = cgOptions.MaxStepDistance; + /* + if ((options.CheckMaterialID && cgOptions.MaterialID != 0) || + (optimize && cgOptions.MaxStepDistance != 0)) + res.Add(new ControlPointOption(startSeg.LocalFToTF(0), + startSeg.Distance, + true, + cgOptions.MaterialID, + options.CheckHardEdges && cgOptions.HardEdge, + initialMaxStep, + (options.CheckExtendedUV && cgOptions.UVEdge), + options.CheckExtendedUV && cgOptions.ExplicitU, + cgOptions.FirstU, + cgOptions.SecondU)); + */ + + + CurvySplineSegment seg = shape.GetNextSegment(startSeg) ?? shape.GetNextControlPoint(startSeg); + do + { + cgOptions = seg.GetMetadata(true); + if (shape.GetControlPointIndex(seg) < shape.GetControlPointIndex(startSeg)) + loopOffset = shape.Length; + if (options.IncludeControlPoints || + cgOptions.CorrectedHardEdge || + cgOptions.MaterialID != currentMaterialID || + optimize && cgOptions.MaxStepDistance != maxDist || + (cgOptions.CorrectedUVEdge || cgOptions.ExplicitU) + ) + { + maxDist = (cgOptions.MaxStepDistance == 0) ? float.MaxValue : cgOptions.MaxStepDistance; + currentMaterialID = cgOptions.MaterialID; + res.Add(new ControlPointOption(seg.TF + Mathf.FloorToInt(loopOffset / shape.Length), + seg.Distance + loopOffset, + options.IncludeControlPoints, + currentMaterialID, + cgOptions.CorrectedHardEdge, + cgOptions.MaxStepDistance, + cgOptions.CorrectedUVEdge, + cgOptions.ExplicitU, + cgOptions.FirstU, + cgOptions.SecondU)); + + } + seg = shape.GetNextSegment(seg); + } while (seg && seg != finishSeg); + // Check UV settings of last cp (not a segment if open spline!) + if (!seg && shape.LastVisibleControlPoint == finishSeg) + { + cgOptions = finishSeg.GetMetadata(true); + if (cgOptions.ExplicitU) + res.Add(new ControlPointOption(1, + finishSeg.Distance + loopOffset, + options.IncludeControlPoints, + currentMaterialID, + cgOptions.CorrectedHardEdge, + cgOptions.MaxStepDistance, + cgOptions.CorrectedUVEdge, + cgOptions.ExplicitU, + cgOptions.FirstU, + cgOptions.SecondU)); + } + } + + return res; + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGUtility.cs.meta new file mode 100644 index 00000000..521213a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CGUtility.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ddf8aabfb85e2a40bf54a226d9a16fc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyGenerator.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyGenerator.cs new file mode 100644 index 00000000..ad495885 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyGenerator.cs @@ -0,0 +1,1045 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy.Generator.Modules; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine.SceneManagement; +#if UNITY_EDITOR +using UnityEditor; +using UnityEditor.Experimental.SceneManagement; +using UnityEditor.SceneManagement; +#endif + + +namespace FluffyUnderware.Curvy.Generator +{ + /// + /// Curvy Generator component + /// + [ExecuteAlways] + [HelpURL(CurvySpline.DOCLINK + "generator")] + [AddComponentMenu("Curvy/Generator")] + [RequireComponent(typeof(PoolManager))] + public class CurvyGenerator : DTVersionedMonoBehaviour + { + + #region ### Serialized Fields ### + + [Tooltip("Show Debug Output?")] + [SerializeField] + private bool m_ShowDebug; + + [Tooltip("Whether to automatically refresh the generator's output when necessary")] + [SerializeField] + private bool m_AutoRefresh = true; + + [FieldCondition(nameof(m_AutoRefresh), true)] + [Positive(Tooltip = "The minimum delay between two automatic generator's refreshing while in Play mode, in milliseconds")] + [SerializeField] + private int m_RefreshDelay = 0; + + [FieldCondition(nameof(m_AutoRefresh), true)] + [Positive(Tooltip = "The minimum delay between two automatic generator's refreshing while in Edit mode, in milliseconds")] + [SerializeField] + private int m_RefreshDelayEditor = 10; + + /*! \cond PRIVATE */ + + [Section("Events", false, false, 1000, HelpURL = CurvySpline.DOCLINK + "generator_events")] + [SerializeField] + protected CurvyCGEvent m_OnRefresh = new CurvyCGEvent(); + + /*! \endcond */ + +#if UNITY_EDITOR + [Section("Advanced Settings", Sort = 2000, HelpURL = CurvySpline.DOCLINK + "generator_events", Expanded = false)] + [Label(Tooltip = "Force this script to update in Edit mode as often as in Play mode. Most users don't need that.")] + [SerializeField] + private bool m_ForceFrequentUpdates; +#endif + + /// + /// List of modules this Generator contains + /// + [HideInInspector] + public List Modules = new List(); + + [SerializeField, HideInInspector] + internal int m_LastModuleID; + + #endregion + + #region ### Public Properties ### + + /// + /// Gets or sets whether to show debug outputs + /// + public bool ShowDebug + { + get { return m_ShowDebug; } + set + { + if (m_ShowDebug != value) + m_ShowDebug = value; + } + } + /// + /// Gets or sets whether to automatically call if necessary + /// + public bool AutoRefresh + { + get { return m_AutoRefresh; } + set + { + if (m_AutoRefresh != value) + m_AutoRefresh = value; + } + } + /// + /// Gets or sets the minimum delay between two consecutive calls to while playing, expressed in milliseconds + /// + public int RefreshDelay + { + get { return m_RefreshDelay; } + set + { + int v = Mathf.Max(0, value); + if (m_RefreshDelay != v) + m_RefreshDelay = v; + } + } + /// + /// Gets or sets the minimum delay between two consecutive calls to in the editor + /// + public int RefreshDelayEditor + { + get { return m_RefreshDelayEditor; } + set + { + int v = Mathf.Max(0, value); + if (m_RefreshDelayEditor != v) + m_RefreshDelayEditor = v; + } + } + +#if UNITY_EDITOR + /// + /// By default Unity calls scripts' update less frequently in Edit mode. ForceFrequentUpdates forces this script to update in Edit mode as often as in Play mode. Most users don't need that. + /// + public bool ForceFrequentUpdates + { + get { return m_ForceFrequentUpdates; } + set { m_ForceFrequentUpdates = value; } + } +#endif + + /// + /// Gets the PoolManager + /// + public PoolManager PoolManager + { + get + { + if (mPoolManager == null) + mPoolManager = GetComponent(); + return mPoolManager; + } + } + + /// + /// Event raised after refreshing the Generator + /// + public CurvyCGEvent OnRefresh + { + get { return m_OnRefresh; } + set + { + if (m_OnRefresh != value) + m_OnRefresh = value; + + } + } + + /// + /// Gets whether the generator and all its dependencies are fully initialized + /// + public bool IsInitialized { get { return mInitialized; } } + /// + /// Gets whether the Generator is about to get destroyed + /// + public bool Destroying { get; private set; } + + /// + /// Dictionary to get a module by it's ID + /// + public Dictionary ModulesByID = new Dictionary(); + + #endregion + + #region ### Private Fields ### + + private bool mInitialized; + private bool mInitializedPhaseOne; + private bool mNeedSort = true; + private double mLastUpdateTime; + private PoolManager mPoolManager; + +#if UNITY_EDITOR || CURVY_DEBUG + // Debugging: + public TimeMeasure DEBUG_ExecutionTime = new TimeMeasure(5); +#endif +#if UNITY_EDITOR + // Refresh-Handling + private double mLastEditorUpdateTime; + +#endif + + /// + /// Used in the modules reordering logic. Value's unit is pixels. + /// + private const int ModulesReorderingDeltaX = 50; + /// + /// Used in the modules reordering logic. Value's unit is pixels. + /// + private const int ModulesReorderingDeltaY = 20; + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + private void OnEnable() + { + PoolManager.AutoCreatePools = true; +#if UNITY_EDITOR + EditorApplication.update += editorUpdate; + if (!Application.isPlaying) + { + UnityEditorInternal.ComponentUtility.MoveComponentUp(this); + } +#endif + } + + private void OnDisable() + { + mInitialized = false; + mInitializedPhaseOne = false; + mNeedSort = true; +#if UNITY_EDITOR + EditorApplication.update -= editorUpdate; +#endif + } + + + private void OnDestroy() + { + Destroying = true; + } + +#if UNITY_EDITOR + private void editorUpdate() + { + if (AutoRefresh && Application.isPlaying == false) + { + if (ForceFrequentUpdates) + EditorApplication.QueuePlayerLoopUpdate(); + else + Update(); + } + } +#endif + + private void Update() + { + if (!IsInitialized) + Initialize(); + else + TryAutoRefresh(); + } + + + /*! \endcond */ + #endregion + + #region ### Public Static Methods ### + + /// + /// Creates a new GameObject with a CurvyGenerator attached + /// + /// the Generator component + public static CurvyGenerator Create() + { + GameObject go = new GameObject("Curvy Generator", typeof(CurvyGenerator)); + return go.GetComponent(); + } + + #endregion + + #region ### Public Methods ### + + /// + /// Adds a Module + /// + /// type of the Module + /// the new Module + public T AddModule() where T : CGModule + { + return (T)AddModule(typeof(T)); + } + /// + /// Adds a Module + /// + /// type of the Module + /// the new Module + public CGModule AddModule(System.Type type) + { + GameObject go = new GameObject(""); + go.transform.SetParent(transform, false); + CGModule mod = (CGModule)go.AddComponent(type); + mod.SetUniqueIdINTERNAL(); + Modules.Add(mod); + ModulesByID.Add(mod.UniqueID, mod); + return mod; + } + + /// + /// Auto-Arrange modules' graph canvas position + /// In other words, this alligns the graph with the top left corner of the canvas. This does not modify the modules position relatively to each other + /// + public void ArrangeModules() + { + Vector2 min = new Vector2(float.MaxValue, float.MaxValue); + foreach (CGModule mod in Modules) + { + min.x = Mathf.Min(mod.Properties.Dimensions.x, min.x); + min.y = Mathf.Min(mod.Properties.Dimensions.y, min.y); + } + min -= new Vector2(10, 10); + foreach (CGModule mod in Modules) + { + mod.Properties.Dimensions.x -= min.x; + mod.Properties.Dimensions.y -= min.y; + } + } + + /// + /// Changes the modules' positions to make the graph easier to read. + /// + public void ReorderModules() + { + Dictionary initialModulesPositions; + { + initialModulesPositions = new Dictionary(Modules.Count); + foreach (CGModule cgModule in Modules) + initialModulesPositions[cgModule] = cgModule.Properties.Dimensions; + } + + + List endpointModules = Modules.Where(m => m.OutputLinks.Any() == false).ToList(); + + + //A dictionary that gives for each module the set of all the modules that are connected to its inputs, whether directly or indirectly + Dictionary> modulesRecursiveInputs = new Dictionary>(Modules.Count); + foreach (CGModule module in endpointModules) + UpdateModulesRecursiveInputs(modulesRecursiveInputs, module); + + HashSet reordredModuleIds = new HashSet(); + for (int index = 0; index < endpointModules.Count; index++) + { + float endPointY = index == 0 + ? 0 + //Draw under the previous endpoint recursive inputs + : modulesRecursiveInputs[endpointModules[index - 1]].Max(m => m.Properties.Dimensions.yMax) + ModulesReorderingDeltaY; + + CGModule endpointModule = endpointModules[index]; + //Set the endpoint's position + endpointModule.Properties.Dimensions.position = new Vector2(0, endPointY); + reordredModuleIds.Add(endpointModule.UniqueID); + //And then its children's positions, recursively + ReorderEndpointRecursiveInputs(endpointModule, reordredModuleIds, modulesRecursiveInputs); + } + + ArrangeModules(); +#if UNITY_EDITOR + if (Application.isPlaying == false) + //Dirty scene if something changed + if (Modules.Exists(m => m.Properties.Dimensions != initialModulesPositions[m])) + EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); +#endif + } + + + + /// + /// Clears the whole generator + /// + public void Clear() + { + //BUG when a module is a child of another one, destroying the first destroys the second, which lead to unwanted behavior in this loop + + bool isInEditMode = DTUtility.IsInEditMode; + if (isInEditMode) + { +#if UNITY_EDITOR + bool skipAllMessages = false; + + for (int i = Modules.Count - 1; i >= 0; i--) + { + CGModule module = Modules[i]; + GameObject moduleGO = module.gameObject; + + if (DTUtility.DoesPrefabStatusAllowDeletion(moduleGO, out string errorMessage)) + { + if (moduleGO.Destroy(true, false) == false) + Debug.LogError("Could not destroy a CG module. This is not expected. Please send a bug report."); + } + else + { + if (skipAllMessages == false) + skipAllMessages = false == EditorUtility.DisplayDialog($"Cannot delete Game Object '{moduleGO.name}'", errorMessage, "Ok", "Skip All"); + } + } + + //Destroyed modules are not removed manually from Modules and ModulesByID because in edit mode, game objects are destroyed immediatly after the Destroy call, which leads to the OnDestroy being called, which removes the destroyed module from Modules and ModulesByID. In play mode, the game objects are destroyed at the frame's end, thus the need to clear Modules and ModulesByID in this method + if (Modules.Count == 0) + m_LastModuleID = 0; +#endif + } + else + { + for (int i = Modules.Count - 1; i >= 0; i--) + if (Modules[i].gameObject.Destroy(true, false) == false) + Debug.LogError("Could not destroy a CG module. This is not expected. Please send a bug report."); + + Modules.Clear(); + ModulesByID.Clear(); + m_LastModuleID = 0; + } + } + + /// + /// Deletes a module (same as PCGModule.Delete()) + /// + /// a module + public void DeleteModule(CGModule module) + { + if (module) + module.Delete(); + } + + /// + /// Find modules of a given type + /// + /// the module type + /// a list of zero or more modules + [Obsolete("Use the overload that has a mandatory includeOnRequestProcessing parameter")] + public List FindModules() where T : CGModule => FindModules(false); + + /// + /// Find modules of a given type + /// + /// the module type + /// whether to include IOnRequestProcessing modules + /// a list of zero or more modules + public List FindModules(bool includeOnRequestProcessing) where T : CGModule + { + List res = new List(); + for (int i = 0; i < Modules.Count; i++) + if (Modules[i] is T && (includeOnRequestProcessing || !(Modules[i] is IOnRequestProcessing))) + res.Add((T)Modules[i]); + return res; + } + + /// + /// Gets a list of modules, either including or excluding IOnRequestProcessing modules + /// + /// a list of zero or more modules + [Obsolete("Use the overload that has a mandatory includeOnRequestProcessing parameter")] + public List GetModules() => GetModules(false); + + /// + /// Gets a list of modules, either including or excluding IOnRequestProcessing modules + /// + /// whether to include IOnRequestProcessing modules + public List GetModules(bool includeOnRequestProcessing) + { + + if (includeOnRequestProcessing) + return new List(Modules); + else + { + List res = new List(); + for (int i = 0; i < Modules.Count; i++) + if (!(Modules[i] is IOnRequestProcessing)) + res.Add(Modules[i]); + return res; + } + } + + /// + /// Gets a module by ID, either including or excluding IOnRequestProcessing modules + /// + /// the ID of the module in question + [Obsolete("Use the overload that has a mandatory includeOnRequestProcessing parameter")] + public CGModule GetModule(int moduleID) => GetModule(moduleID, false); + + /// + /// Gets a module by ID, either including or excluding IOnRequestProcessing modules + /// + /// the ID of the module in question + /// whether to include IOnRequestProcessing modules + public CGModule GetModule(int moduleID, bool includeOnRequestProcessing) + { + CGModule res; + if (ModulesByID.TryGetValue(moduleID, out res) && (includeOnRequestProcessing || !(res is IOnRequestProcessing))) + return res; + else + return null; + } + + /// + /// Gets a module by ID, either including or excluding IOnRequestProcessing modules (Generic version) + /// + /// type of the module + /// the ID of the module in question + [Obsolete("Use the overload that has a mandatory includeOnRequestProcessing parameter")] + public T GetModule(int moduleID) where T : CGModule => GetModule(moduleID, false); + + /// + /// Gets a module by ID, either including or excluding IOnRequestProcessing modules (Generic version) + /// + /// type of the module + /// the ID of the module in question + /// whether to include IOnRequestProcessing modules + public T GetModule(int moduleID, bool includeOnRequestProcessing) where T : CGModule + { + return GetModule(moduleID, includeOnRequestProcessing) as T; + } + + /// + /// Gets a module by name, either including or excluding IOnRequestProcessing modules + /// + /// + [Obsolete("Use the overload that has a mandatory includeOnRequestProcessing parameter")] + public CGModule GetModule(string moduleName) => GetModule(moduleName, false); + + /// + /// Gets a module by name, either including or excluding IOnRequestProcessing modules + /// + /// + /// + public CGModule GetModule(string moduleName, bool includeOnRequestProcessing) + { + for (int i = 0; i < Modules.Count; i++) + if (Modules[i].ModuleName.Equals(moduleName, System.StringComparison.CurrentCultureIgnoreCase) && (includeOnRequestProcessing || !(Modules[i] is IOnRequestProcessing))) + return Modules[i]; + + return null; + } + + /// + /// Gets a module by name, either including or excluding IOnRequestProcessing modules (Generic version) + /// + /// type of the module + /// the ID of the module in question + [Obsolete("Use the overload that has a mandatory includeOnRequestProcessing parameter")] + public T GetModule(string moduleName) where T : CGModule => GetModule< + T>(moduleName, false); + + /// + /// Gets a module by name, either including or excluding IOnRequestProcessing modules (Generic version) + /// + /// type of the module + /// the ID of the module in question + /// whether to include IOnRequestProcessing modules + public T GetModule(string moduleName, bool includeOnRequestProcessing) where T : CGModule + { + return GetModule(moduleName, includeOnRequestProcessing) as T; + } + + /// + /// Gets a module's output slot by module ID and slotName + /// + /// Id of the module + /// Name of the slot + public CGModuleOutputSlot GetModuleOutputSlot(int moduleId, string slotName) + { + CGModule mod = GetModule(moduleId, true); + if (mod) + return mod.GetOutputSlot(slotName); + else + return null; + } + + /// + /// Gets a module's output slot by module name and slotName + /// + /// Name of the module + /// Name of the slot + public CGModuleOutputSlot GetModuleOutputSlot(string moduleName, string slotName) + { + CGModule mod = GetModule(moduleName, true); + if (mod) + return mod.GetOutputSlot(slotName); + else + return null; + } + + //TODO initialize earlier + /// + /// Initializes the Generator + /// + /// true to force reinitialization + public void Initialize(bool force = false) + { + if (this == null)//Modifying a prefab of a shape extrusion generator (removing its input spline then adding it back again) the updated of the generator gets called with a null generator. Probably due to the refreshing of the prefab file (to remove generated mesh) + return; + + if (!mInitializedPhaseOne || force) + { + // Read modules + ModulesByID.Clear(); + + Modules.Clear(); + GetComponentsInChildren(Modules); + //Not all modules are part of this generator. This happens for example if a generator creates GameObjects that are generators themselves + Modules.RemoveAll(m => m.transform.parent != this.transform); + + for (int i = 0; i < Modules.Count; i++) + { + if (!Modules[i].IsInitialized || force) + Modules[i].Initialize(); + + if (ModulesByID.ContainsKey(Modules[i].UniqueID)) + { + Debug.LogError("ID of '" + Modules[i].ModuleName + "' isn't unique!"); + return; + } + ModulesByID.Add(Modules[i].UniqueID, Modules[i]); + } + + if (Modules.Count > 0) + { + // Sort them + sortModulesINTERNAL(); + } + mInitializedPhaseOne = true; + } + for (int m = 0; m < Modules.Count; m++) + if (Modules[m] is IExternalInput && !Modules[m].IsInitialized) + return; + + mInitialized = true; + mInitializedPhaseOne = false; + mNeedSort = mNeedSort || force; + Refresh(true); + } + + /// + /// Refreshes the Generator + /// + /// true to force a refresh of all modules + public void Refresh(bool forceUpdate = false) + { + if (!IsInitialized) + return; + + if (mNeedSort) + //BUG this does not sort modules correctly + doSortModules();//This is supposed to sort a module in a way that for each module, all its input modules are set in the modules list (which defines the updating order) before the said module + + CGModule firstChanged = null; + + for (int i = 0; i < Modules.Count; i++) + { + if (forceUpdate && Modules[i] is IOnRequestProcessing) + Modules[i].Dirty = true; // Dirty state will be resetted to false, but last data will be deleted - forcing a recalculation + if (!(Modules[i] is INoProcessing) // ignore INoProcessing modules + && (Modules[i].Dirty // update dirty modules + || (forceUpdate && !(Modules[i] is IOnRequestProcessing)))) //update non dirty modules when forceUpdate is true, except IOnRequestProcessing modules, which by the way are never dirty, because the Dirty setter handles them differently, which I think is bad design, but this is not a major issue + { + Modules[i].checkOnStateChangedINTERNAL();//BUG? this can set dirty to true, so shouldn't it be called before checking the value of Dirty earlier in this method? + if (Modules[i].IsInitialized && Modules[i].IsConfigured) + { + + if (firstChanged == null) + { +#if UNITY_EDITOR || CURVY_DEBUG + DEBUG_ExecutionTime.Start(); +#endif + firstChanged = Modules[i]; + } + + //OPTIM? remove this check, or make its compilation conditional + foreach (CGModuleInputSlot inputSlot in Modules[i].Input) + { + foreach (CGModuleSlot linkedSlot in inputSlot.LinkedSlots) + if (linkedSlot.Module.IsConfigured && linkedSlot.Module.Dirty) + DTLog.LogError("[Curvy] Getting data from a dirty module. This shouldn't happen at all. Please raise a bug report. Source module is " + linkedSlot.Module); + } + + Modules[i].doRefresh(); + } + } + } + if (firstChanged != null) + { +#if UNITY_EDITOR + DEBUG_ExecutionTime.Stop(); +#endif + OnRefreshEvent(new CurvyCGEventArgs(this, firstChanged)); + } + } + + /// + /// Will try to auto refresh the generator. Basically this calls if is set and the refresh delays are respected + /// + public void TryAutoRefresh() + { + if (AutoRefresh) + { + double realtimeSinceStartup = +#if UNITY_2020_2_OR_NEWER + Time.realtimeSinceStartupAsDouble; +#else + Time.realtimeSinceStartup; +#endif + + float refreshDelayInSeconds = RefreshDelay * 0.001f; + float refreshDelayEditorInSeconds = RefreshDelayEditor * 0.001f; + +#if UNITY_EDITOR + if (mLastEditorUpdateTime > realtimeSinceStartup) + { +#if CURVY_SANITY_CHECKS + DTLog.LogWarning($"[Curvy] Curvy Generator: Auto Refresh timestamp is too big: mLastEditorUpdateTime {mLastEditorUpdateTime} realtimeSinceStartup {realtimeSinceStartup}"); +#endif + mLastEditorUpdateTime = realtimeSinceStartup - refreshDelayEditorInSeconds; + } +#endif + + if (mLastUpdateTime > realtimeSinceStartup) + { +#if CURVY_SANITY_CHECKS + DTLog.LogWarning($"[Curvy] Curvy Generator: Auto Refresh timestamp is too big: mLastUpdateTime {mLastUpdateTime} realtimeSinceStartup {realtimeSinceStartup}"); +#endif + + mLastUpdateTime = realtimeSinceStartup - refreshDelayInSeconds; + } + + if (Application.isPlaying) + { + if (realtimeSinceStartup - mLastUpdateTime > refreshDelayInSeconds) + { + mLastUpdateTime = realtimeSinceStartup; + Refresh(); + } + } +#if UNITY_EDITOR + else + { + if (realtimeSinceStartup - mLastEditorUpdateTime > refreshDelayEditorInSeconds) + { + mLastEditorUpdateTime = realtimeSinceStartup; + Refresh(); + } + } +#endif + } + } + + /// + /// Delete all the managed resources acting as an output. One example of this are the generated meshes by the module + /// + /// Is true if an associated prefab was modified to deleted the output resources from it too + /// Due to how the prefab system works, this method has to delete output from associated prefab assets too + /// True if there were deleted resources + public bool DeleteAllOutputManagedResources(out bool associatedPrefabWasModified) + { +#if UNITY_EDITOR + if (DTUtility.DoesPrefabStatusAllowDeletion(gameObject, out _) == false) + associatedPrefabWasModified = DeleteAllOutputManagedResourcesFromAssociatedPrefab(); + else + associatedPrefabWasModified = false; +#else + associatedPrefabWasModified = false; +#endif + + bool result = false; + foreach (CGModule module in Modules) + result |= module.DeleteAllOutputManagedResources(); + return result; + } + + #endregion + + #region ### Protected Members ### + + protected CurvyCGEventArgs OnRefreshEvent(CurvyCGEventArgs e) + { + if (OnRefresh != null) + OnRefresh.Invoke(e); + return e; + } + + #endregion + + #region ### Privates and Internals ### + /*! \cond PRIVATE */ + +#if UNITY_EDITOR + static CurvyGenerator() + { + EditorSceneManager.sceneSaving += OnSceneSaving; + } + + private static void OnSceneSaving(Scene scene, string path) + { + if (CurvyGlobalManager.SaveGeneratorOutputs) + return; + + //clear all output GOs to avoid saving them. + foreach (CurvyGenerator generator in FindObjectsOfType()) + //only if the generator is supposed to refresh automatically, otherwise the users might not expect their generator to update + if (generator.isActiveAndEnabled && generator.AutoRefresh) + foreach (CGModule module in generator.Modules) + if (module.DeleteAllOutputManagedResources()) + module.Dirty = true;//to force update once saving is done + } +#endif + + /// + /// Ensures a module name is unique + /// + /// desired name + /// unique name + public string getUniqueModuleNameINTERNAL(string name) + { + string newName = name; + bool isUnique; + int c = 1; + do + { + isUnique = true; + foreach (CGModule mod in Modules) + { + if (mod.ModuleName.Equals(newName, System.StringComparison.CurrentCultureIgnoreCase)) + { + newName = name + (c++).ToString(System.Globalization.CultureInfo.InvariantCulture); + isUnique = false; + break; + } + } + + } while (!isUnique); + return newName; + } + + + /// + /// INTERNAL! Don't call this by yourself! + /// + internal void sortModulesINTERNAL() + { + mNeedSort = true; + } + + private bool doSortModules() + { + //DESIGN OPTIM: CGModule has members that are needed only in this method, and are confusing outside of this contexte, so inline everyting here and get rid of these members + List unsorted = new List(Modules); + + List noAncestor = new List(); + List needNoSort = new List(); + + + // initialize + for (int m = unsorted.Count - 1; m >= 0; m--) + { + unsorted[m].initializeSort(); + if (unsorted[m] is INoProcessing) + { + needNoSort.Add(unsorted[m]); + unsorted.RemoveAt(m); + } + else if (unsorted[m].SortAncestors == 0) + { + noAncestor.Add(unsorted[m]); + unsorted.RemoveAt(m); + } + } + + noAncestor.Sort((a, b) => a.UniqueID.CompareTo(b.UniqueID)); + + Modules.Clear(); + + // Sort + int index = 0; + while (noAncestor.Count > 0) + { + // get a module without ancestors + CGModule mod = noAncestor[0]; + noAncestor.RemoveAt(0); + // decrement child ancestors and fetch childs without ancestors + List newModsWithoutAncestors = mod.decrementChilds(); + // Add them to noAncestor list + noAncestor.AddRange(newModsWithoutAncestors); + // and remove from unsorted + for (int i = 0; i < newModsWithoutAncestors.Count; i++) + unsorted.Remove(newModsWithoutAncestors[i]); + // add current module to sorted + Modules.Add(mod); + mod.transform.SetSiblingIndex(index++); + } + + // These modules got errors! + for (int circ = 0; circ < unsorted.Count; circ++) + unsorted[circ].CircularReferenceError = true; + + //Debug.Log("====: NeedNoSort=" + needNoSort.Count + ", Unsorted=" + unsorted.Count); + //foreach (var m in Modules) + // Debug.Log("Sort: " + m.ModuleName); + + Modules.AddRange(unsorted); + Modules.AddRange(needNoSort); + + + + mNeedSort = false; + return (unsorted.Count > 0); + } + + /// + /// Sets the position of an endpoint module's recursive inputs in a way that makes the graph easy to read + /// + /// The module which recursive inputs are to be reordred + /// Set of modules already reordred + /// A dictionary that gives for each module the set of all the modules that are connected to its inputs, whether directly or indirectly + static private void ReorderEndpointRecursiveInputs(CGModule endPoint, HashSet reordredModuleIds, Dictionary> modulesRecursiveInputs) + { + float nextInputEndingX = endPoint.Properties.Dimensions.xMin - ModulesReorderingDeltaX; + float nextInputStartingY = endPoint.Properties.Dimensions.yMin; + + List inputModules = endPoint.Input.SelectMany(i => i.GetLinkedModules()).ToList(); + foreach (CGModule inputModule in inputModules) + { + float inputModuleXPosition = nextInputEndingX - inputModule.Properties.Dimensions.width; + //If module is processed for the first time, process it normally ... + if (reordredModuleIds.Contains(inputModule.UniqueID) == false) + { + inputModule.Properties.Dimensions.position = new Vector2(inputModuleXPosition, nextInputStartingY); + reordredModuleIds.Add(inputModule.UniqueID); + ReorderEndpointRecursiveInputs(inputModule, reordredModuleIds, modulesRecursiveInputs); + } + //... otherwise allow it to be repositioned only when pushed to the left + else if (inputModuleXPosition < inputModule.Properties.Dimensions.xMin) + { + inputModule.Properties.Dimensions.position = new Vector2(inputModuleXPosition, inputModule.Properties.Dimensions.yMin); + ReorderEndpointRecursiveInputs(inputModule, reordredModuleIds, modulesRecursiveInputs); + } + nextInputStartingY = Math.Max(nextInputStartingY, modulesRecursiveInputs[inputModule].Max(m => m.Properties.Dimensions.yMax) + ModulesReorderingDeltaY); + } + } + + /// + /// Adds to the modules recursive inputs dictionary the entries corresponding to the given module + /// + /// The recursive inputs of the given module + static private HashSet UpdateModulesRecursiveInputs(Dictionary> modulesRecursiveInputs, CGModule moduleToAdd) + { + if (modulesRecursiveInputs.ContainsKey(moduleToAdd)) + return modulesRecursiveInputs[moduleToAdd]; + + List inputModules = moduleToAdd.Input.SelectMany(i => i.GetLinkedModules()).ToList(); + HashSet result = new HashSet(); + result.Add(moduleToAdd); + result.UnionWith(inputModules.SelectMany(i => UpdateModulesRecursiveInputs(modulesRecursiveInputs, i))); + modulesRecursiveInputs[moduleToAdd] = result; + return result; + } + + /// + /// Delete, from the associated prefab if any, all the managed resources acting as an output. One example of such resources is the generated meshes by the module + /// Prefabs instances are not allowed to do some operations, such as deleting a game object. Such operations are done by the Curvy Generator. So run this method before doing any of those operations + /// + /// Whether an associated prefab was modified + public bool DeleteAllOutputManagedResourcesFromAssociatedPrefab() + { +#if UNITY_EDITOR + string prefabPath = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(this); + if (String.IsNullOrEmpty(prefabPath)) + return false; + + GameObject prefabContentsRoot = PrefabUtility.LoadPrefabContents(prefabPath); + CurvyGenerator[] prefabGenerators = prefabContentsRoot.GetComponentsInChildren(); + + bool modified = false; + foreach (CurvyGenerator prefabGenerator in prefabGenerators) + foreach (CGModule module in prefabGenerator.Modules) + modified |= module.DeleteAllOutputManagedResources(); + + if (modified) + { + var savedPrefab = PrefabUtility.SaveAsPrefabAsset(prefabContentsRoot, prefabPath); + if (savedPrefab == null) + { + DTLog.LogError($"[Curvy] The prefab asset '{prefabPath}' containing the generator '{name}' needs to be modified to delete generator output objects. Attempt to modify it failed. See other console messages to know what caused this failure."); + modified = false; + } + else + { + object message = $"[Curvy] The prefab asset '{prefabPath}' containing the generator '{name}' was modified to delete generator output objects."; + + PrefabStage currentPrefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + +#if UNITY_2020_1_OR_NEWER + if (currentPrefabStage != null && currentPrefabStage.assetPath == prefabPath) +#else + if (currentPrefabStage != null && currentPrefabStage.prefabAssetPath == prefabPath) +#endif + { + message += " This might happen when you save modifications to the prefab asset. You might want to disable Auto Save in Prefab Mode to make this happen less frequently."; + DTLog.LogWarning(message); + } + else + { + message += " This might lead to the refreshing of the associated generator in the prefab instance."; + DTLog.Log(message); + } + + } + } + PrefabUtility.UnloadPrefabContents(prefabContentsRoot); + return modified; +#else + return false; +#endif + } + + /// + /// Save to scene all the managed resources acting as an output. One example of such resources is the generated meshes by the module + /// + public void SaveAllOutputManagedResources() + { + GameObject result = new GameObject($"{name} Exported Resources"); + result.transform.position = this.transform.position; + result.transform.rotation = this.transform.rotation; + result.transform.localScale = this.transform.localScale; + Modules.Where(m => m is ResourceExportingModule).ForEach(m => ((ResourceExportingModule)m).SaveToScene(result.transform)); + + } + + + /*! \endcond */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyGenerator.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyGenerator.cs.meta new file mode 100644 index 00000000..0de7dcba --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyGenerator.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92f936dd5124460479f65d72577c8d9e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyPropertyAttributes.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyPropertyAttributes.cs new file mode 100644 index 00000000..cdde2c17 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyPropertyAttributes.cs @@ -0,0 +1,68 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System; +using System.Reflection; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy +{ + + #region ### CG related ### + + /// + /// CG Resource Attribute + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")] + [AttributeUsage(AttributeTargets.Field, Inherited = true, AllowMultiple = false)] + public class CGResourceManagerAttribute : DTPropertyAttribute + { + public readonly string ResourceName; + public bool ReadOnly; + + public CGResourceManagerAttribute(string resourceName) + { + ResourceName = resourceName; + } + } + + /// + /// CG Resource Collection Attribute + /// + [AttributeUsage(AttributeTargets.Field, Inherited = true, AllowMultiple = false)] + public sealed class CGResourceCollectionManagerAttribute : CGResourceManagerAttribute + { + public bool ShowCount; + + public CGResourceCollectionManagerAttribute(string resourceName) + : base(resourceName) + { + ReadOnly = true; + } + } + + /// + /// CG Data Reference Selector Attribute + /// + [AttributeUsage(AttributeTargets.Field, Inherited = true, AllowMultiple = false)] + public sealed class CGDataReferenceSelectorAttribute : DTPropertyAttribute + { + public readonly System.Type DataType; + + public CGDataReferenceSelectorAttribute(System.Type dataType) + { + DataType = dataType; + } + } + + #endregion + + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyPropertyAttributes.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyPropertyAttributes.cs.meta new file mode 100644 index 00000000..a6546732 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/CurvyPropertyAttributes.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff18089ea6039164dbd5086635c53ac8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/MetaCGOptions.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/MetaCGOptions.cs new file mode 100644 index 00000000..161a5392 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/MetaCGOptions.cs @@ -0,0 +1,333 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy +{ + + /// + /// Curvy Generator options Metadata class + /// + [HelpURL(CurvySpline.DOCLINK + "metacgoptions")] + public class MetaCGOptions : CurvyMetadataBase + { + + #region ### Serialized Fields ### + + [Positive] + [SerializeField] + private int m_MaterialID = DefaultMaterialId; + + + [SerializeField] + [FieldCondition(nameof(ShowUvEdgeOrHardEdge), true)] + private bool m_HardEdge; + [Positive(Tooltip = "Max step distance when using optimization")] + [SerializeField] + private float m_MaxStepDistance; + [Section("Extended UV", HelpURL = CurvySpline.DOCLINK + "metacgoptions_extendeduv")] + [FieldCondition(nameof(ShowUvEdgeOrHardEdge), true)] + [SerializeField] + private bool m_UVEdge; + + [Positive] + [FieldCondition(nameof(showExplicitU), true)] + [SerializeField] + private bool m_ExplicitU; + [FieldCondition(nameof(showFirstU), true)] + [FieldAction("CBSetFirstU")] + [Positive] + [SerializeField] + private float m_FirstU; + [FieldCondition(nameof(showSecondU), true)] + [Positive] + [SerializeField] + private float m_SecondU; + + /// + /// Whether or not the conversion of the UVEdge value to the new "system" (starting from Curvy 8) was done. See the commentary on the private method EnsureUVEdgeUpdate to know more. + /// + [SerializeField, HideInInspector] private bool uVEdgeUpdated = false; + + #endregion + + #region ### Public Properties ### + + /// + /// Gets or sets Material ID + /// + public int MaterialID + { + get + { + return m_MaterialID; + } + set + { + int v = Mathf.Max(0, value); + if (m_MaterialID != v) + { + m_MaterialID = v; + NotifyModification(); + } + } + } + + /// + /// Gets or sets whether to create a hard edge or not + /// This is the raw serialized value. In opposition, takes other considerations into account + /// + public bool HardEdge + { + get { return m_HardEdge; } + set + { + if (m_HardEdge != value) + { + m_HardEdge = value; + NotifyModification(); + } + } + } + + /// + /// is ignored for first and last CPs of an open spline. This method takes that into consideration. In opposition, is the raw serialized value. + /// + /// + public bool CorrectedHardEdge + { + get + { + //this one is to handle the case of a cp (of an open spline) that was in the middle of the spline, and has HardEdge, then we delete all its following cps, so it becomes the last cp. This means it has HardEdge to true, but the value is ignored + return CanHaveUvEdgeOrHadrdEdge() && HardEdge; + } + } + + /// + /// Gets or sets whether to create an UV edge or not + /// This is the raw serialized value. In opposition, takes other considerations into account + /// + public bool UVEdge + { + get { return m_UVEdge; } + set + { + if (m_UVEdge != value) + { + m_UVEdge = value; + NotifyModification(); + } + } + } + + /// + /// is ignored for first and last CPs of an open spline. This method takes that into consideration. In opposition, is the raw serialized value. + /// + /// + public bool CorrectedUVEdge + { + get + { + //this one is to handle the case of a cp (of an open spline) that was in the middle of the spline, and has UVEdge, then we delete all its following cps, so it becomes the last cp. This means it has UVEdge to true, but the value is ignored + return CanHaveUvEdgeOrHadrdEdge() && UVEdge; + } + } + + /// + /// Gets or sets whether to define explicit U values + /// + public bool ExplicitU + { + get { return m_ExplicitU; } + set + { + if (m_ExplicitU != value) + { + m_ExplicitU = value; + NotifyModification(); + } + } + } + + /// + /// Gets or sets UV0 + /// + public float FirstU + { + get { return m_FirstU; } + set + { + if (m_FirstU != value) + { + m_FirstU = value; + NotifyModification(); + } + } + } + + /// + /// Gets or sets UV0 + /// + public float SecondU + { + get { return m_SecondU; } + set + { + if (m_SecondU != value) + { + m_SecondU = value; + NotifyModification(); + } + } + } + + /// + /// Gets or sets maximum vertex distance when using optimization (0=infinite) + /// + public float MaxStepDistance + { + get + { + return m_MaxStepDistance; + } + set + { + float v = Mathf.Max(0, value); + if (m_MaxStepDistance != v) + { + m_MaxStepDistance = v; + NotifyModification(); + } + } + } + + public bool HasDifferentMaterial + { + get + { + MetaCGOptions previousMetaCGOptions = GetPreviousData(false); + int previousMaterialId = previousMetaCGOptions == null ? DefaultMaterialId : previousMetaCGOptions.MaterialID; + return previousMaterialId != MaterialID; + } + } + + #endregion + + #region ### Private Fields & Properties ### + + private const int DefaultMaterialId = 0; + + private bool ShowUvEdgeOrHardEdge + { + get + { + return ControlPoint && CanHaveUvEdgeOrHadrdEdge(); + } + } + + private bool showExplicitU + { + get + { + return (ControlPoint && !showSecondU); + } + } + + private bool showFirstU + { + get + { + return ExplicitU || CorrectedUVEdge; + } + } + + private bool showSecondU + { + get + { + return CorrectedUVEdge; + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + +#if UNITY_EDITOR + private void OnValidate() + { + NotifyModification(); + } + + protected override void Awake() + { + base.Awake(); + EnsureUVEdgeUpdate(); + } + +#endif + + public void Reset() + { + MaterialID = DefaultMaterialId; + HardEdge = false; + MaxStepDistance = 0; + UVEdge = false; + ExplicitU = false; + FirstU = 0; + SecondU = 0; + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public float GetDefinedFirstU(float defaultValue) + { + return (CorrectedUVEdge || ExplicitU) ? FirstU : defaultValue; + } + + public float GetDefinedSecondU(float defaultValue) + { + return (CorrectedUVEdge) ? SecondU : GetDefinedFirstU(defaultValue); + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATES */ + + /// + ///Until Curvy 7 included, a change in material id (compared to the one of the previous CP) was automatically considered to be an UVEdge, so in the case users wanted to just change a material id, they had to figure out the right value of first and second U, which is annoying at best. True, they had the option to deactivate Extended UV in the Shape Extrusion module, but that's not an option if you want to use extended UV on CPs other than the one with a material change. + ///Starting from Curvy 8, the Extended UV option in the Shape Extrusion module is not visible anymore (which solves another problem: people confused about why the UV options they enter are not taken into consideration). The module will act as if Extended UV is always true. With Extended UV not available, a solution had to be implemented to allow for material id change that does not modify the UV. The solution found is to dissociate a material id change from UVEdge. Now you can have both true, false, or having different values. + ///To keep things backward compatible, I am setting UVEdge to true when I detect a material id change while both U values are different from their default value of 0. This is done when an instance is processed for the first time under Curvy 8. This is not perfect, since you can still have someone who purposefully set both U values to 0. + /// + private void EnsureUVEdgeUpdate() + { + if (uVEdgeUpdated == false) + { + m_UVEdge = m_UVEdge || (HasDifferentMaterial && false == (FirstU == 0 && SecondU == 0)); + uVEdgeUpdated = true; + } + } + + private bool CanHaveUvEdgeOrHadrdEdge() + { + return Spline.Closed || (Spline.FirstVisibleControlPoint != ControlPoint && Spline.LastVisibleControlPoint != ControlPoint); + } + + /*! \endcond */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/MetaCGOptions.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/MetaCGOptions.cs.meta new file mode 100644 index 00000000..bbeec70b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/CG/MetaCGOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d8e6515f233d3da4fbaeff6c986c19df +timeCreated: 1442216332 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers.meta new file mode 100644 index 00000000..fdc9bc7b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 4621a8cd5fe51ae4b943f858c215afb5 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ConnectedControlPointsSelector.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ConnectedControlPointsSelector.cs new file mode 100644 index 00000000..df235206 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ConnectedControlPointsSelector.cs @@ -0,0 +1,27 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.DevTools; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Controllers +{ + /// + /// A class used by to define custom selection logic to select between the possible connected splines when the controller reaches a + /// + abstract public class ConnectedControlPointsSelector : DTVersionedMonoBehaviour + { + /// + /// Select, from the current connection, a Control Point to continue moving through. + /// + /// The spline controller that is calling this selector + /// The connection the caller reached and from which it needs to select a Control Point to continue the movement on + /// the Control Point, part of the connection, the controller is at. + /// The control point that the should continue its movement on + abstract public CurvySplineSegment SelectConnectedControlPoint(SplineController caller, CurvyConnection connection, CurvySplineSegment currentControlPoint); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ConnectedControlPointsSelector.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ConnectedControlPointsSelector.cs.meta new file mode 100644 index 00000000..5dc4b46f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ConnectedControlPointsSelector.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: fa3e4d284c1d61b45b2357dc26add96d +timeCreated: 1527621324 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ControllersEvents.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ControllersEvents.cs new file mode 100644 index 00000000..7b021f72 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ControllersEvents.cs @@ -0,0 +1,134 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using FluffyUnderware.DevTools; +using UnityEngine; +using UnityEngine.Assertions; +using UnityEngine.Events; + +namespace FluffyUnderware.Curvy.Controllers +{ + #region ### Controller Events ### + + [System.Serializable] + public class ControllerEvent : UnityEventEx { } + + /// + /// EventArgs used by spline controller movements + /// + [System.Serializable] + public class CurvySplineMoveEvent : UnityEventEx { } + + /// + /// EventArgs used by spline controller movements + /// + public class CurvySplineMoveEventArgs : System.ComponentModel.CancelEventArgs + { + /// + /// The Spline Controller raising the event + /// + public SplineController Sender { get; private set; } + /// + /// The related spline + /// + public CurvySpline Spline { get; private set; } + /// + /// The control point which reaching triggered this event + /// + public CurvySplineSegment ControlPoint { get; private set; } + /// + /// Are and in world units (in opposition to relative units)? + /// + public bool WorldUnits { get; private set; } + + /// + /// The movement direction the controller had when sending the event + /// + public MovementDirection MovementDirection { get; private set; } + /// + /// The left distance yet to move. + /// + public float Delta { get; private set; } + /// + /// Controller Position on Spline + /// + public float Position { get; private set; } + + + public CurvySplineMoveEventArgs(SplineController sender, CurvySpline spline, CurvySplineSegment controlPoint, float position, bool usingWorldUnits, float delta, MovementDirection direction) + { + Set_INTERNAL(sender, spline, controlPoint, position, delta, direction, usingWorldUnits); + } + + /// + /// Set all the properties values. Is not meant to be used by code outside of Curvy's code. + /// + internal void Set_INTERNAL(SplineController sender, CurvySpline spline, CurvySplineSegment controlPoint, float position, float delta, MovementDirection direction, bool usingWorldUnits) + { + + Sender = sender; + Spline = spline; + ControlPoint = controlPoint; + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(Sender != null); + Assert.IsTrue(controlPoint == null || controlPoint.Spline == spline); +#endif + MovementDirection = direction; + Delta = delta; + Position = position; + WorldUnits = usingWorldUnits; + Cancel = false; + } + } + + + //TODO Use CurvyControllerSwitchEvent + //public class CurvyControllerSwitchEvent : UnityEventEx { } + + //public class CurvyControllerSwitchEventArgs : EventArgs + //{ + // /// + // /// The controller raising the event + // /// + // public CurvyController Controller { get; private set; } + // public CurvySpline SourceSpline { get; private set; } + // public CurvySpline DestinationSpline { get; private set; } + // public float TFOnSource { get; private set; } + // public float TFOnDestination { get; private set; } + // public CurvyControllerDirection DirectionOnSource { get; private set; } + // public CurvyControllerDirection DirectionOnDestination { get; private set; } + // public float SwitchTimeStart { get; private set; } + // public float SwitchDuration { get; private set; } + // public float SwitchProgression { get; private set; } + + + // public CurvyControllerSwitchEventArgs() + // { + // } + + // public void Set(CurvyController controller, float switchTimeStart, float switchDuration, float switchProgression, CurvySpline sourceSpline, CurvySpline destinationSpline, float tfOnSource, float tfOnDestination, CurvyControllerDirection directionOnSource, CurvyControllerDirection directionOnDestination) + // { + // SwitchDuration = switchDuration; + // SwitchProgression = switchProgression; + // Controller = controller; + // SourceSpline = sourceSpline; + // DestinationSpline = destinationSpline; + // TFOnSource = tfOnSource; + // TFOnDestination = tfOnDestination; + // SwitchTimeStart = switchTimeStart; + // DirectionOnSource = directionOnSource; + // DirectionOnDestination = directionOnDestination; + // } + //} + + #endregion +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ControllersEvents.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ControllersEvents.cs.meta new file mode 100644 index 00000000..55e618a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/ControllersEvents.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: a46071b8cead970438b2ce2c36461aef +timeCreated: 1527032975 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/CurvyController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/CurvyController.cs new file mode 100644 index 00000000..a1d1d181 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/CurvyController.cs @@ -0,0 +1,1336 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using System.Reflection; +#if UNITY_EDITOR +using UnityEditor; +#endif + +using UnityEngine.Assertions; +using UnityEngine.Events; +using UnityEngine.Serialization; + +namespace FluffyUnderware.Curvy.Controllers +{ + /// + /// Controller base class + /// + [ExecuteAlways] + public abstract class CurvyController : DTVersionedMonoBehaviour, ISerializationCallbackReceiver + { + #region ### Enums ### + /// + /// Movement method options + /// + public enum MoveModeEnum + { + /// + /// Move by Percentage or TF (SplineController only) + /// + Relative = 0, + /// + /// Move by calculated distance + /// + AbsolutePrecise = 1, + } + + /// + /// The play state of the controller + /// + public enum CurvyControllerState + { + Stopped, + Playing, + Paused + } + + #endregion + + #region ### Events ### + + /// + /// Invoked each time the controller finishes initialization + /// + public ControllerEvent OnInitialized + { + get { return onInitialized; } + } + + #endregion + + #region ### Serialized Fields ### + //TODO tooltips + [Section("General", Sort = 0, HelpURL = CurvySpline.DOCLINK + "curvycontroller_general")] + [Label(Tooltip = "Determines when to update")] + public CurvyUpdateMethod UpdateIn = CurvyUpdateMethod.Update; // when to update? + + [Section("Position", Sort = 100, HelpURL = CurvySpline.DOCLINK + "curvycontroller_position")] + [SerializeField] + private CurvyPositionMode m_PositionMode = CurvyPositionMode.WorldUnits; + + /*! \cond PRIVATE */ + + [RangeEx(0, nameof(maxPosition))] + [SerializeField] + [FormerlySerializedAs("m_InitialPosition")] + [FieldCondition(nameof(ShouldDisablePositionSlider), true, false, ActionAttribute.ActionEnum.Disable)] + protected float m_Position; + + /*! \endcond */ + + [Section("Move", Sort = 200, HelpURL = CurvySpline.DOCLINK + "curvycontroller_move")] + [SerializeField] + private MoveModeEnum m_MoveMode = MoveModeEnum.AbsolutePrecise; + + [Positive] + [SerializeField] + private float m_Speed = 0; + + [SerializeField] private MovementDirection m_Direction = Controllers.MovementDirection.Forward; + + [SerializeField] private CurvyClamping m_Clamping = CurvyClamping.Loop; + + [SerializeField, Tooltip("Start playing automatically when entering play mode")] + private bool m_PlayAutomatically = true; + + [Section("Orientation", Sort = 300, HelpURL = CurvySpline.DOCLINK + "curvycontroller_orientation")] + + [Label("Source", "Source Vector")] + [FieldCondition(nameof(ShowOrientationSection), false, false, Action = ActionAttribute.ActionEnum.Hide)] + [SerializeField] + private OrientationModeEnum m_OrientationMode = OrientationModeEnum.Orientation; + + [Label("Lock Rotation", "When set, the controller will enforce the rotation to not change")] +#if UNITY_EDITOR //Conditional to avoid WebGL build failure when using Unity 5.5.3 + [FieldCondition(nameof(m_OrientationMode), OrientationModeEnum.None, true, ConditionalAttribute.OperatorEnum.OR, "ShowOrientationSection", false, false, Action = ActionAttribute.ActionEnum.Hide)] +#endif + [SerializeField] + private bool m_LockRotation = true; + + [Label("Target", "Target Vector3")] + [FieldCondition(nameof(m_OrientationMode), OrientationModeEnum.None, false, ConditionalAttribute.OperatorEnum.OR, "ShowOrientationSection", false, false, Action = ActionAttribute.ActionEnum.Hide)] + [SerializeField] + private OrientationAxisEnum m_OrientationAxis = OrientationAxisEnum.Up; + + [Tooltip("Should the orientation ignore the movement direction?")] + [FieldCondition(nameof(m_OrientationMode), OrientationModeEnum.None, false, ConditionalAttribute.OperatorEnum.OR, "ShowOrientationSection", false, false, Action = ActionAttribute.ActionEnum.Hide)] + [SerializeField] + private bool m_IgnoreDirection; + + [DevTools.Min(0, "Direction Damping Time", "If non zero, the direction vector will not be updated instantly, but using a damping effect that will last the specified amount of time.")] + [FieldCondition(nameof(ShowOrientationSection), false, false, Action = ActionAttribute.ActionEnum.Hide)] + [SerializeField] + private float m_DampingDirection; + + [DevTools.Min(0, "Up Damping Time", "If non zero, the up vector will not be updated instantly, but using a damping effect that will last the specified amount of time.")] + [FieldCondition(nameof(ShowOrientationSection), false, false, Action = ActionAttribute.ActionEnum.Hide)] + [SerializeField] + private float m_DampingUp; + + [Section("Offset", Sort = 400, HelpURL = CurvySpline.DOCLINK + "curvycontroller_orientation")] + [FieldCondition(nameof(ShowOffsetSection), false, false, Action = ActionAttribute.ActionEnum.Hide)] + [RangeEx(-180f, 180f)] + [SerializeField] + private float m_OffsetAngle; + + [FieldCondition(nameof(ShowOffsetSection), false, false, Action = ActionAttribute.ActionEnum.Hide)] + [SerializeField] + private float m_OffsetRadius; + + [FieldCondition(nameof(ShowOffsetSection), false, false, Action = ActionAttribute.ActionEnum.Hide)] + [Label("Compensate Offset")] + [SerializeField] + private bool m_OffsetCompensation = true; + + [Section("Events", Sort = 500)] + [SerializeField] +#pragma warning disable 649 + protected ControllerEvent onInitialized = new ControllerEvent(); +#pragma warning restore 649 + +#if UNITY_EDITOR + [Section("Advanced Settings", Sort = 2000, HelpURL = CurvySpline.DOCLINK + "curvycontroller_general", Expanded = false)] + [Label(Tooltip = "Force this script to update in Edit mode as often as in Play mode. Most users don't need that.")] + [SerializeField] + private bool m_ForceFrequentUpdates; +#endif + #endregion + + #region ### Public Properties ### + + /// + /// Gets or sets the position mode to use + /// + public CurvyPositionMode PositionMode + { + get { return m_PositionMode; } + set + { + m_PositionMode = value; + } + } + + /// + /// Gets or sets the movement mode to use + /// + public MoveModeEnum MoveMode + { + get { return m_MoveMode; } + set + { + if (m_MoveMode != value) + m_MoveMode = value; + } + } + + /// + /// Gets or sets whether to start playing automatically + /// + public bool PlayAutomatically + { + get { return m_PlayAutomatically; } + set + { + if (m_PlayAutomatically != value) + m_PlayAutomatically = value; + } + } + + /// + /// Gets or sets what to do when the source's end is reached + /// + public CurvyClamping Clamping + { + get { return m_Clamping; } + set + { + if (m_Clamping != value) + m_Clamping = value; + } + } + + /// + /// Gets or sets how to apply rotation + /// + public OrientationModeEnum OrientationMode + { + get { return m_OrientationMode; } + set + { + if (m_OrientationMode != value) + m_OrientationMode = value; + } + } + + /// + /// Used only when OrientationMode is equal to None + /// When true, the controller will enforce the rotation to not change + /// + public bool LockRotation + { + get { return m_LockRotation; } + set + { + if (m_LockRotation != value) + m_LockRotation = value; + + if (m_LockRotation) + LockedRotation = Transform.rotation; + } + } + + /// + /// Gets or sets the axis to apply the rotation to + /// + public OrientationAxisEnum OrientationAxis + { + get { return m_OrientationAxis; } + set + { + if (m_OrientationAxis != value) + m_OrientationAxis = value; + + } + } + + /// + /// If non zero, the direction vector will not be updated instantly, but using a damping effect that will last the specified amount of time. + /// + public float DirectionDampingTime + { + get { return m_DampingDirection; } + set + { + float v = Mathf.Max(0, value); + if (m_DampingDirection != v) + m_DampingDirection = v; + } + } + + /// + /// If non zero, the up vector will not be updated instantly, but using a damping effect that will last the specified amount of time. + /// + public float UpDampingTime + { + get { return m_DampingUp; } + set + { + float v = Mathf.Max(0, value); + if (m_DampingUp != v) + m_DampingUp = v; + } + } + + + + /// + /// Should the controller's orientation ignore the movement direction? + /// + public bool IgnoreDirection + { + get { return m_IgnoreDirection; } + set + { + if (m_IgnoreDirection != value) + m_IgnoreDirection = value; + } + } + + /// + /// Gets or sets the angle to offset (-180° to 180° off Orientation) + /// + public float OffsetAngle + { + get { return m_OffsetAngle; } + set + { + if (m_OffsetAngle != value) + m_OffsetAngle = value; + } + } + /// + /// Gets or sets the offset radius + /// + public float OffsetRadius + { + get { return m_OffsetRadius; } + set + { + if (m_OffsetRadius != value) + m_OffsetRadius = value; + } + } + + /// + /// Gets or sets whether to compensate offset distances in curvy paths + /// + public bool OffsetCompensation + { + get { return m_OffsetCompensation; } + set { m_OffsetCompensation = value; } + } + + /// + /// Gets or sets the speed either in world units or relative, depending on MoveMode + /// + public float Speed + { + get { return m_Speed; } + set + { + if (value < 0) + { +#if CURVY_SANITY_CHECKS + + DTLog.LogWarning("[Curvy] Trying to assign a negative value of " + value.ToString() + " to Speed. Speed should always be postive. To set direction, use the Direction property"); +#endif + value = -value; + } + m_Speed = value; + } + } + + /// + /// Gets or sets the relative position on the source, respecting Clamping + /// + public float RelativePosition + { + get + { + float relativePosition; + switch (PositionMode) + { + case CurvyPositionMode.Relative: + relativePosition = GetClampedPosition(m_Position, CurvyPositionMode.Relative, Clamping, Length); + break; + case CurvyPositionMode.WorldUnits: + relativePosition = AbsoluteToRelative(GetClampedPosition(m_Position, CurvyPositionMode.WorldUnits, Clamping, Length)); + break; + default: + throw new NotSupportedException(); + } + + return relativePosition; + } + set + { + float clampedRelativePosition = GetClampedPosition(value, CurvyPositionMode.Relative, Clamping, Length); + switch (PositionMode) + { + case CurvyPositionMode.Relative: + m_Position = clampedRelativePosition; + break; + case CurvyPositionMode.WorldUnits: + m_Position = RelativeToAbsolute(clampedRelativePosition); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + } + + /// + /// Gets or sets the absolute position on the source, respecting Clamping + /// + public float AbsolutePosition + { + get + { + float absolutePosition; + switch (PositionMode) + { + case CurvyPositionMode.Relative: + absolutePosition = RelativeToAbsolute(GetClampedPosition(m_Position, CurvyPositionMode.Relative, Clamping, Length)); + break; + case CurvyPositionMode.WorldUnits: + absolutePosition = GetClampedPosition(m_Position, CurvyPositionMode.WorldUnits, Clamping, Length); + break; + default: + throw new NotSupportedException(); + } + + return absolutePosition; + } + set + { + float clampedAbsolutePosition = GetClampedPosition(value, CurvyPositionMode.WorldUnits, Clamping, Length); + switch (PositionMode) + { + case CurvyPositionMode.Relative: + m_Position = AbsoluteToRelative(clampedAbsolutePosition); + break; + case CurvyPositionMode.WorldUnits: + m_Position = clampedAbsolutePosition; + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + } + + /// + /// Gets or sets the position on the source (relative or absolute, depending on MoveMode), respecting Clamping + /// + public float Position + { + get + { + float result; + switch (PositionMode) + { + case CurvyPositionMode.Relative: + result = RelativePosition; + break; + case CurvyPositionMode.WorldUnits: + result = AbsolutePosition; + break; + default: + throw new NotSupportedException(); + } + return result; + } + set + { + switch (PositionMode) + { + case CurvyPositionMode.Relative: + RelativePosition = value; + break; + case CurvyPositionMode.WorldUnits: + AbsolutePosition = value; + break; + default: + throw new NotSupportedException(); + } + } + } + + /// + /// Gets or sets the movement direction + /// + public MovementDirection MovementDirection + { + get { return m_Direction; } + set { m_Direction = value; } + } + + + /// + /// The state (Playing, paused or stopped) of the controller + /// + public CurvyControllerState PlayState { get { return State; } } + + /// + /// Returns true if the controller has all it dependencies ready. + /// + /// A controller that is not initialized and has IsReady true, will be initialized at the next update call (automatically each frame or manually through . + abstract public bool IsReady { get; } + +#if UNITY_EDITOR + /// + /// By default Unity calls scripts' update less frequently in Edit mode. ForceFrequentUpdates forces this script to update in Edit mode as often as in Play mode. Most users don't need that, but that was helpful for a user working with cameras controlled by Unity in Edit mode + /// + public bool ForceFrequentUpdates + { + get { return m_ForceFrequentUpdates; } + set { m_ForceFrequentUpdates = value; } + } +#endif + + #endregion + + #region ### Private & Protected Fields ### + + /// + /// The position slider is disabled in the inspector when this property returns true + /// + protected virtual bool ShouldDisablePositionSlider => PositionMode == CurvyPositionMode.WorldUnits && IsReady == false; + + /// + /// An error message used in various assertions + /// + protected const string ControllerNotReadyMessage = "The controller is not yet ready"; + + /// + /// The state (Playing, paused or stopped) of the controller + /// + /// + protected CurvyControllerState State = CurvyControllerState.Stopped; + + /// + /// The damping velocity used in the Direction damping + /// + /// + /// + protected Vector3 DirectionDampingVelocity;//TODO should this value be reinitialized when DirectionDampingTime is set to non strictly positive value or any other moment? + + /// + /// The damping velocity used in the Up damping + /// + /// + /// + protected Vector3 UpDampingVelocity;//TODO should this value be reinitialized when UpDampingTime is set to non strictly positive value or any other moment? + + /// + /// The position of the controller when started playing + /// + protected float PrePlayPosition; + + /// + /// The of the controller when started playing + /// + protected MovementDirection PrePlayDirection; + + /// + /// When is None, and is true, this field is the value of the locked rotation, the one that will be assigned all the time to the controller + /// + protected Quaternion LockedRotation; + + +#if UNITY_EDITOR + /// + /// The last time the controller was updated while in Edit Mode + /// + protected float EditModeLastUpdate; +#endif + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + protected virtual void OnEnable() + { + if (isInitialized == false && IsReady) + { + Initialize(); + InitializedApplyDeltaTime(0); + } + +#if UNITY_EDITOR + EditorApplication.update += editorUpdate; +#endif + } + + protected virtual void Start() + { + if (isInitialized == false && IsReady) + { + Initialize(); + InitializedApplyDeltaTime(0); + } + + if (PlayAutomatically && Application.isPlaying) + Play(); + } + + protected virtual void OnDisable() + { +#if UNITY_EDITOR + EditorApplication.update -= editorUpdate; +#endif + if (isInitialized) + Deinitialize(); + } + + protected virtual void Update() + { + if (UpdateIn == CurvyUpdateMethod.Update) + ApplyDeltaTime(TimeSinceLastUpdate); + } + + protected virtual void LateUpdate() + { + if (UpdateIn == CurvyUpdateMethod.LateUpdate || + (Application.isPlaying == false && UpdateIn == CurvyUpdateMethod.FixedUpdate)) // In edit mode, fixed updates are not called, so we update the controller here instead + ApplyDeltaTime(TimeSinceLastUpdate); + } + + protected virtual void FixedUpdate() + { + if (UpdateIn == CurvyUpdateMethod.FixedUpdate) + ApplyDeltaTime(TimeSinceLastUpdate); + } + +#if UNITY_EDITOR + protected virtual void OnValidate() + { + Speed = m_Speed; + LockRotation = m_LockRotation; + } +#endif + + protected virtual void Reset() + { + UpdateIn = CurvyUpdateMethod.Update; + PositionMode = CurvyPositionMode.WorldUnits; + m_Position = 0; + PlayAutomatically = true; + MoveMode = MoveModeEnum.AbsolutePrecise; + Speed = 0; + LockRotation = true; + Clamping = CurvyClamping.Loop; + OrientationMode = OrientationModeEnum.Orientation; + OrientationAxis = OrientationAxisEnum.Up; + IgnoreDirection = false; + } + /*! \endcond */ + #endregion + + #region ### Virtual Properties & Methods ### + + /// + /// Gets the transform being controlled by this controller. + /// + public virtual Transform Transform + { + get + { + return transform; + } + } + + /// + /// Advances the controller state by deltaTime seconds. Is called only for initialized controllers + /// + protected virtual void InitializedApplyDeltaTime(float deltaTime) + { +#if UNITY_EDITOR + EditModeLastUpdate = Time.realtimeSinceStartup; +#endif + + if (State == CurvyControllerState.Playing && Speed * deltaTime != 0) + { + float speed = UseOffset && OffsetCompensation && OffsetRadius != 0f + ? ComputeOffsetCompensatedSpeed(deltaTime) + : Speed; + + if (speed * deltaTime != 0) + Advance(speed, deltaTime); + } + + Transform cachedTransform = Transform; + + Vector3 preRefreshPosition = cachedTransform.position; + Quaternion preRefreshOrientation = cachedTransform.rotation; + + Vector3 newPosition; + Vector3 newForward; + Vector3 newUp; + ComputeTargetPositionAndRotation(out newPosition, out newUp, out newForward); + + Vector3 postDampingForward; + if (DirectionDampingTime > 0 && State == CurvyControllerState.Playing) + { + postDampingForward = deltaTime > 0 + ? Vector3.SmoothDamp(cachedTransform.forward, newForward, ref DirectionDampingVelocity, DirectionDampingTime, float.PositiveInfinity, deltaTime) + : cachedTransform.forward; + } + else + postDampingForward = newForward; + + Vector3 postDampingUp; + if (UpDampingTime > 0 && State == CurvyControllerState.Playing) + { + postDampingUp = deltaTime > 0 + ? Vector3.SmoothDamp(cachedTransform.up, newUp, ref UpDampingVelocity, UpDampingTime, float.PositiveInfinity, deltaTime) + : cachedTransform.up; + } + else + postDampingUp = newUp; + + + cachedTransform.rotation = Quaternion.LookRotation(postDampingForward, postDampingUp); + cachedTransform.position = newPosition; + + if (preRefreshPosition.NotApproximately(cachedTransform.position) || preRefreshOrientation.DifferentOrientation(cachedTransform.rotation)) + UserAfterUpdate(); + } + + /// + /// Gets the position and rotation of the controller, ignoring any damping or other interpolations + /// + /// + /// + /// + protected virtual void ComputeTargetPositionAndRotation(out Vector3 targetPosition, out Vector3 targetUp, out Vector3 targetForward) + { + Vector3 pos; + Vector3 tangent; + Vector3 orientation; + GetInterpolatedSourcePosition(RelativePosition, out pos, out tangent, out orientation); + + if (tangent == Vector3.zero || orientation == Vector3.zero) + GetOrientationNoneUpAndForward(out targetUp, out targetForward); + else + { + switch (OrientationMode) + { + case OrientationModeEnum.None: + GetOrientationNoneUpAndForward(out targetUp, out targetForward); + break; + case OrientationModeEnum.Orientation: + { + Vector3 signedTangent = (m_Direction == MovementDirection.Backward && IgnoreDirection == false) ? -tangent : tangent; + switch (OrientationAxis) + { + case OrientationAxisEnum.Up: + targetUp = orientation; + targetForward = signedTangent; + break; + case OrientationAxisEnum.Down: + targetUp = -orientation; + targetForward = signedTangent; + break; + case OrientationAxisEnum.Forward: + targetUp = -signedTangent; + targetForward = orientation; + break; + case OrientationAxisEnum.Backward: + targetUp = signedTangent; + targetForward = -orientation; + break; + case OrientationAxisEnum.Left: + targetUp = Vector3.Cross(orientation, signedTangent); + targetForward = signedTangent; + break; + case OrientationAxisEnum.Right: + targetUp = Vector3.Cross(signedTangent, orientation); + targetForward = signedTangent; + break; + default: + throw new NotSupportedException(); + } + } + break; + case OrientationModeEnum.Tangent: + { + + Vector3 signedTangent = (m_Direction == MovementDirection.Backward && IgnoreDirection == false) ? -tangent : tangent; + switch (OrientationAxis) + { + case OrientationAxisEnum.Up: + targetUp = signedTangent; + targetForward = -orientation; + break; + case OrientationAxisEnum.Down: + targetUp = -signedTangent; + targetForward = orientation; + break; + case OrientationAxisEnum.Forward: + targetUp = orientation; + targetForward = signedTangent; + break; + case OrientationAxisEnum.Backward: + targetUp = orientation; + targetForward = -signedTangent; + break; + case OrientationAxisEnum.Left: + targetUp = orientation; + targetForward = Vector3.Cross(orientation, signedTangent); + break; + case OrientationAxisEnum.Right: + targetUp = orientation; + targetForward = Vector3.Cross(signedTangent, orientation); + break; + default: + throw new NotSupportedException(); + } + } + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + targetPosition = (UseOffset && OffsetRadius != 0f) + ? ApplyOffset(pos, tangent, orientation, OffsetAngle, OffsetRadius) + : pos; + } + + + virtual protected void Initialize() + { + isInitialized = true; + LockedRotation = Transform.rotation; + DirectionDampingVelocity = UpDampingVelocity = Vector3.zero; + + BindEvents(); + UserAfterInit(); + onInitialized.Invoke(this); + } + + virtual protected void Deinitialize() + { + UnbindEvents(); + isInitialized = false; + } + + /// + /// Binds any external events + /// + protected virtual void BindEvents() + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isInitialized); +#endif + } + /// + /// Unbinds any external events + /// + protected virtual void UnbindEvents() + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isInitialized); +#endif + } + + protected virtual void SavePrePlayState() + { + PrePlayPosition = m_Position; + PrePlayDirection = m_Direction; + } + + protected virtual void RestorePrePlayState() + { + m_Position = PrePlayPosition; + m_Direction = PrePlayDirection; + } + + #region ### Virtual Methods for inherited custom controllers (Easy mode) ### + + /// + /// Called after the controller is initialized + /// + protected virtual void UserAfterInit() { } + /// + /// Called after the controller has updated it's position or rotation + /// + protected virtual void UserAfterUpdate() { } + + #endregion + + #region Conditional display in the inspector of CurvyController properties + + /// + /// Whether the controller should display the CurvyController properties under the Orientation section or not. + /// + protected virtual bool ShowOrientationSection + { + get { return true; } + } + /// + /// Whether the controller should display the CurvyController properties under the Offset section or not. + /// + protected virtual bool ShowOffsetSection + { + get { return OrientationMode != OrientationModeEnum.None; } + } + + #endregion + + #endregion + + #region ### Abstract Properties and Methods ### + + /// + /// Gets the source's length + /// + public abstract float Length { get; } + + /// + /// Advance the controller and return the new position. This method will do side effect operations if needed, like updating some internal state, or trigerring events. + /// + /// controller's speed. Should be strictely positive + /// the time that the controller should advance with. Should be strictely positive + abstract protected void Advance(float speed, float deltaTime); + + /// + /// Advance the controller and return the new position. Contrary to , this method will not do any side effect operations, like updating some internal state, or trigerring events + /// + /// + /// the current virtual position (either TF or World Units) + /// the current direction + /// controller's speed. Should be strictely positive + /// the time that the controller should advance with. Should be strictely positive + abstract protected void SimulateAdvance(ref float tf, ref MovementDirection curyDirection, float speed, float deltaTime); + + /// + /// Converts distance on source from absolute to relative position. + /// + /// distance in world units from the source start. Should be already clamped + /// relative distance in the range 0..1 + abstract protected float AbsoluteToRelative(float worldUnitDistance); + + /// + /// Converts distance on source from relative to absolute position. + /// + /// relative distance from the source start. Should be already clamped + /// distance in world units from the source start + abstract protected float RelativeToAbsolute(float relativeDistance); + + /// + /// Retrieve the source global position for a given relative position (TF) + /// + abstract protected Vector3 GetInterpolatedSourcePosition(float tf); + + /// + /// Retrieve the source global position, tangent and orientation for a given relative position (TF) + /// + abstract protected void GetInterpolatedSourcePosition(float tf, out Vector3 interpolatedPosition, out Vector3 tangent, out Vector3 up); + + /// + /// Retrieve the source global Orientation/Up-Vector for a given relative position + /// + abstract protected Vector3 GetOrientation(float tf); + + /// + /// Gets global tangent for a given relative position + /// + abstract protected Vector3 GetTangent(float tf); + + + #endregion + + + #region Non virtual public methods + + /// + /// Plays the controller. Calling this method while the controller is playing will have no effect. + /// + public void Play() + { + if (PlayState == CurvyControllerState.Stopped) + SavePrePlayState(); + State = CurvyControllerState.Playing; + } + + /// + /// Stops the controller, and restore its position (and other relevant states) to its state when starting playing + /// + public void Stop() + { + if (PlayState != CurvyControllerState.Stopped) + RestorePrePlayState(); + State = CurvyControllerState.Stopped; + } + + /// + /// Pauses the controller. To unpause it call Play() + /// + public void Pause() + { + if (PlayState == CurvyControllerState.Playing) + State = CurvyControllerState.Paused; + } + + /// + /// Forces the controller to update its state, without waiting for the automatic per frame update. + /// Can initialize or deinitialize the controller if the right conditions are met. + /// + public void Refresh() + { + ApplyDeltaTime(0); + } + + /// + /// Advances the controller state by deltaTime seconds, without waiting for the automatic per frame update. + /// Can initialize or deinitialize the controller if the right conditions are met. + /// + public void ApplyDeltaTime(float deltaTime) + { + if (isInitialized == false && IsReady) + Initialize(); + else if (isInitialized && IsReady == false) + Deinitialize(); + + if (isInitialized) + InitializedApplyDeltaTime(deltaTime); + } + + /// + /// Teleports the controller to a specific position, while handling events triggering and connections. + /// + /// Internally, the teleport is handled as a movement of high speed on small time (0.001s). This will call with that small amount of time. + public void TeleportTo(float newPosition) + { + float distance = Mathf.Abs(Position - newPosition); + MovementDirection direction = Position < newPosition + ? MovementDirection.Forward + : MovementDirection.Backward; + TeleportBy(distance, direction); + } + + /// + /// Teleports the controller to by a specific distance, while handling events triggering and connections. + /// + /// A positive distance + /// Direction of teleportation + /// Internally, the teleport is handled as a movement of high speed on small time (0.001s). This will call with that small amount of time. + public void TeleportBy(float distance, MovementDirection direction) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(distance >= 0); +#endif + if (PlayState != CurvyControllerState.Playing) + DTLog.LogError("[Curvy] Calling TeleportBy on a controller that is stopped. Please make the controller play first"); + + float preWrapSpeed = Speed; + MovementDirection preWrapDirection = MovementDirection; + + const float timeFraction = 1000; + Speed = Mathf.Abs(distance) * timeFraction; + MovementDirection = direction; + + ApplyDeltaTime(1 / timeFraction); + + Speed = preWrapSpeed; + MovementDirection = preWrapDirection; + } + + + + /// + /// Event-friedly helper that sets a field or property value + /// + /// e.g. "MyValue=42" + public void SetFromString(string fieldAndValue) + { + string[] f = fieldAndValue.Split('='); + if (f.Length != 2) + return; + + FieldInfo fi = this.GetType().FieldByName(f[0], true, false); + if (fi != null) + { + try + { +#if NETFX_CORE + if (fi.FieldType.GetTypeInfo().IsEnum) +#else + if (fi.FieldType.IsEnum) +#endif + fi.SetValue(this, System.Enum.Parse(fi.FieldType, f[1])); + else + fi.SetValue(this, System.Convert.ChangeType(f[1], fi.FieldType, System.Globalization.CultureInfo.InvariantCulture)); + } + catch (System.Exception e) + { + Debug.LogWarning(this.name + ".SetFromString(): " + e.ToString()); + } + } + else + { + PropertyInfo pi = this.GetType().PropertyByName(f[0], true, false); + if (pi != null) + { + try + { +#if NETFX_CORE + if (pi.PropertyType.GetTypeInfo().IsEnum) +#else + if (pi.PropertyType.IsEnum) +#endif + + pi.SetValue(this, System.Enum.Parse(pi.PropertyType, f[1]), null); + else + pi.SetValue(this, System.Convert.ChangeType(f[1], pi.PropertyType, System.Globalization.CultureInfo.InvariantCulture), null); + } + catch (System.Exception e) + { + Debug.LogWarning(this.name + ".SetFromString(): " + e.ToString()); + } + } + } + } + #endregion + + + + #region ### Privates & Protected Methods & Properties ### + + /// + /// Whether or not the controller is initialized. Initialization happens before first usage + /// + protected bool isInitialized { get; private set; } + + /// + /// When in Play mode, the controller update happens only in Update or Late Update of Fixed Update, so the time since last update is always equal to Time.deltaTime + /// When in Edit mode, the controller update happens at various points, including the editor's update, so we compute the time since last update using a time stamp + /// + protected float TimeSinceLastUpdate + { + get + { +#if UNITY_EDITOR + return (Application.isPlaying) ? + Time.deltaTime : + Time.realtimeSinceStartup - EditModeLastUpdate; +#else + return Time.deltaTime; +#endif + } + } + + /// + /// Whether this controller uses Offsetting or not + /// + protected bool UseOffset + { + get { return ShowOffsetSection; } + } + +#if UNITY_EDITOR + private void editorUpdate() + { + if (Application.isPlaying == false) + { + if (ForceFrequentUpdates) + EditorApplication.QueuePlayerLoopUpdate(); + else + ApplyDeltaTime(TimeSinceLastUpdate); + } + } +#endif + + /// + /// Returns the position of the controller after applying an offset + /// + /// The controller's position + /// The tangent at the controller's position + /// The Up direction at the controller's position + /// + /// + protected static Vector3 ApplyOffset(Vector3 position, Vector3 tangent, Vector3 up, float offsetAngle, float offsetRadius) + { + Quaternion offsetRotation = Quaternion.AngleAxis(offsetAngle, tangent); + return position.Addition((offsetRotation * up).Multiply(offsetRadius)); + } + + /// + /// Return the clamped position + /// + protected static float GetClampedPosition(float position, CurvyPositionMode positionMode, CurvyClamping clampingMode, float length) + { + float clampedPosition; + { + switch (positionMode) + { + case CurvyPositionMode.Relative: + if (position == 1) + clampedPosition = 1; + else + clampedPosition = CurvyUtility.ClampTF(position, clampingMode); + break; + case CurvyPositionMode.WorldUnits: + if (position == length) + clampedPosition = length; + else + clampedPosition = CurvyUtility.ClampDistance(position, clampingMode, length); + break; + default: + throw new NotSupportedException(); + } + } + return clampedPosition; + } + + private float maxPosition + { + get + { + return GetMaxPosition(PositionMode); + } + } + + /// + /// Returns the maximal valid position value using the given + /// + /// + protected float GetMaxPosition(CurvyPositionMode positionMode) + { + float result; + switch (positionMode) + { + case CurvyPositionMode.Relative: + result = 1; + break; + case CurvyPositionMode.WorldUnits: + result = IsReady + ? Length + : 0; + break; + default: + throw new NotSupportedException(); + } + + return result; + } + + /// + /// Returns the Speed after applying Offset Compensation + /// + /// Time since last update + /// + protected float ComputeOffsetCompensatedSpeed(float deltaTime) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(deltaTime > 0); + Assert.IsTrue(UseOffset); +#endif + + if (OffsetRadius == 0) + return Speed; + + Vector3 previousOffsetlesPosition; + Vector3 previousOffsetPosition; + { + Vector3 previousTangent; + Vector3 previousUp; + GetInterpolatedSourcePosition(RelativePosition, out previousOffsetlesPosition, out previousTangent, out previousUp); + + previousOffsetPosition = ApplyOffset(previousOffsetlesPosition, previousTangent, previousUp, OffsetAngle, OffsetRadius); + } + + Vector3 offsetlesPosition; + Vector3 offsetPosition; + { + float offsetlesRelativePosition; + { + offsetlesRelativePosition = RelativePosition; + MovementDirection curvyDirection = m_Direction; + SimulateAdvance(ref offsetlesRelativePosition, ref curvyDirection, Speed, deltaTime); + } + + Vector3 offsetlesTangent; + Vector3 offsetlesUp; + GetInterpolatedSourcePosition(offsetlesRelativePosition, out offsetlesPosition, out offsetlesTangent, out offsetlesUp); + + offsetPosition = ApplyOffset(offsetlesPosition, offsetlesTangent, offsetlesUp, OffsetAngle, OffsetRadius); + } + + float deltaPosition = (offsetlesPosition - previousOffsetlesPosition).magnitude; + float deltaOffsetPosition = (previousOffsetPosition - offsetPosition).magnitude; + float ratio = (deltaPosition / deltaOffsetPosition); + return Speed * (float.IsNaN(ratio) ? 1 : ratio); + } + + //TODO This should be a local method when all supported unity versions will handle C#7 + /// + /// Gets the Up and Forward of the orientation when the is set to + /// + private void GetOrientationNoneUpAndForward(out Vector3 targetUp, out Vector3 targetForward) + { + if (LockRotation) + { + targetUp = LockedRotation * Vector3.up; + targetForward = LockedRotation * Vector3.forward; + } + else + { + targetUp = Transform.up; + targetForward = Transform.forward; + } + } + + #endregion + + #region ISerializationCallbackReceiver + /*! \cond PRIVATE */ + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public void OnBeforeSerialize() + { + } + + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public virtual void OnAfterDeserialize() + { + if (m_Speed < 0) + { + m_Speed = Mathf.Abs(m_Speed); + m_Direction = MovementDirection.Backward; + } + + //Merged AbsolutePrecise and AbsoluteExtrapolate into one value + if ((short)MoveMode == 2) + MoveMode = MoveModeEnum.AbsolutePrecise; + } + /*! \endcond */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/CurvyController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/CurvyController.cs.meta new file mode 100644 index 00000000..0822c98a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/CurvyController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb9a1c67a6f383a478b8a20a17b05cc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -100 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/MovementDirection.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/MovementDirection.cs new file mode 100644 index 00000000..c37c00f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/MovementDirection.cs @@ -0,0 +1,90 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Controllers +{ + /// + /// Defines if the controller will move the object the same direction that the spline or the opposite one + /// + /// + public enum MovementDirection + { + /// + /// Same direction than spline's tangent + /// + Forward, + /// + /// Opposite direction than spline's tangent + /// + Backward + } + /// + /// Extension methods for + /// + public static class MovementDirectionMethods + { + /// + /// Converts the int to a direction. Positive int means Forward, negative means backward. + /// + public static MovementDirection FromInt(int value) + { + return value >= 0 + ? MovementDirection.Forward + : MovementDirection.Backward; + } + + /// + /// Returns the opposite value of the given direction value + /// + /// + /// + public static MovementDirection GetOpposite(this MovementDirection value) + { + MovementDirection result; + switch (value) + { + case MovementDirection.Forward: + result = MovementDirection.Backward; + break; + case MovementDirection.Backward: + result = MovementDirection.Forward; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return result; + } + + /// + /// Converts the direction to an int. Positive int means Forward, negative means backward. + /// + public static int ToInt(this MovementDirection direction) + { + int result; + switch (direction) + { + case MovementDirection.Forward: + result = 1; + break; + case MovementDirection.Backward: + result = -1; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return result; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/MovementDirection.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/MovementDirection.cs.meta new file mode 100644 index 00000000..127e6db4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/MovementDirection.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: d7eb8ecd5bf585346a7ad6f0646e4939 +timeCreated: 1525796795 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/OnPositionReachedSettings.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/OnPositionReachedSettings.cs new file mode 100644 index 00000000..5a603c78 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/OnPositionReachedSettings.cs @@ -0,0 +1,77 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Controllers +{ + /// + /// Settings for events to be triggered when the controller reaches a specific position + /// + [System.Serializable] + public class OnPositionReachedSettings : ISerializationCallbackReceiver + { + public string Name; + public CurvySplineMoveEvent Event = new CurvySplineMoveEvent(); + public float Position; + public CurvyPositionMode PositionMode; + public TriggeringDirections TriggeringDirections; + public Color GizmoColor; + + #region handling default values + + public OnPositionReachedSettings() + { + InitializeFieldsWithDefaultValue(); + } + + [SerializeField, HideInInspector] + private bool initialized; + + /// + /// Default values assigned at field initialization or at construction are overriden with default type values when instances of this class are added to a list. This method is used to fix that issue + /// + private void InitializeFieldsWithDefaultValue() + { + Name = "My Event"; + PositionMode = CurvyPositionMode.WorldUnits; + TriggeringDirections = TriggeringDirections.All; + GizmoColor = new Color(0.652f, 0.652f, 0.652f); + initialized = true; + } + + public void OnBeforeSerialize() { } + + public void OnAfterDeserialize() + { + //when an instance of this class is added to a list via the inspector, its fields are set to their types default values (0, false, ...). I try to detect that via this test, then assign the default values I want + if (initialized == false) + InitializeFieldsWithDefaultValue(); + } + #endregion + } + + /// + /// Defines what travel directions should trigger an event + /// + public enum TriggeringDirections + { + /// + /// All directions + /// + All, + /// + /// Same direction as spline's tangent + /// + Forward, + /// + /// Opposite direction as spline's tangent + /// + Backward + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/OnPositionReachedSettings.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/OnPositionReachedSettings.cs.meta new file mode 100644 index 00000000..41c94865 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/OnPositionReachedSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 254770b4f3df24245ba3f57e7b51b875 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/PathController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/PathController.cs new file mode 100644 index 00000000..131f4142 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/PathController.cs @@ -0,0 +1,199 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + + +namespace FluffyUnderware.Curvy.Controllers +{ + /// + /// Controller working on Curvy Generator Paths + /// + [AddComponentMenu("Curvy/Controllers/CG Path Controller")] + [HelpURL(CurvySpline.DOCLINK + "pathcontroller")] + public class PathController : CurvyController + { + + #region ### Serialized Fields ### + + [Section("General", Sort = 0)] + [SerializeField] + [CGDataReferenceSelector(typeof(CGPath), Label = "Path/Slot")] + private CGDataReference m_Path = new CGDataReference(); + + #endregion + + #region ### Public Properties ### + + /// + /// Gets or sets the path to use + /// + public CGDataReference Path + { + get { return m_Path; } + set { m_Path = value; } + } + + /// + /// Gets the actual CGPath data + /// + public CGPath PathData + { + get + { + return (Path.HasValue) ? Path.GetData() : null; + } + } + + /// + /// Gets the source's length + /// + public override float Length + { + get + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return (PathData != null) ? PathData.Length : 0; + } + } + + #endregion + + #region ### Private fields ### + + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + #endregion + + #region ### Protected Methods ### + + + override public bool IsReady + { + get + { + return Path != null && !Path.IsEmpty && Path.HasValue; + } + } + + + /// + /// Converts distance on source from relative to absolute position. + /// + /// relative distance from the source start. Should be already clamped + /// distance in world units from the source start + protected override float RelativeToAbsolute(float relativeDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); + Assert.IsTrue(CurvyUtility.Approximately(relativeDistance, GetClampedPosition(relativeDistance, CurvyPositionMode.Relative, Clamping, Length))); +#endif + + return (PathData != null) ? PathData.FToDistance(relativeDistance) : 0; + } + + /// + /// Converts distance on source from absolute to relative position. + /// + /// distance in world units from the source start. Should be already clamped + /// relative distance in the range 0..1 + protected override float AbsoluteToRelative(float worldUnitDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); + Assert.IsTrue(CurvyUtility.Approximately(worldUnitDistance, GetClampedPosition(worldUnitDistance, CurvyPositionMode.WorldUnits, Clamping, Length))); +#endif + return (PathData != null) ? PathData.DistanceToF(worldUnitDistance) : 0; + } + + protected override Vector3 GetInterpolatedSourcePosition(float tf) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return Path.Module.Generator.transform.TransformPoint(PathData.InterpolatePosition(tf)); + } + + protected override void GetInterpolatedSourcePosition(float tf, out Vector3 interpolatedPosition, out Vector3 tangent, out Vector3 up) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + PathData.Interpolate(tf, out interpolatedPosition, out tangent, out up); + Transform generatorTransform = Path.Module.Generator.transform; + interpolatedPosition = generatorTransform.TransformPoint(interpolatedPosition); + tangent = generatorTransform.TransformDirection(tangent); + up = generatorTransform.TransformDirection(up); + } + + protected override Vector3 GetTangent(float tf) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return Path.Module.Generator.transform.TransformDirection(PathData.InterpolateDirection(tf)); + } + + protected override Vector3 GetOrientation(float tf) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return Path.Module.Generator.transform.TransformDirection(PathData.InterpolateUp(tf)); + } + + protected override void Advance(float speed, float deltaTime) + { + float tf = RelativePosition; + MovementDirection direction = MovementDirection; + + SimulateAdvance(ref tf, ref direction, speed, deltaTime); + + MovementDirection = direction; + RelativePosition = tf; + } + + override protected void SimulateAdvance(ref float tf, ref MovementDirection curyDirection, float speed, float deltaTime) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + int directionInt = curyDirection.ToInt(); + switch (MoveMode) + { + case MoveModeEnum.Relative: + PathData.Move(ref tf, ref directionInt, speed * deltaTime, Clamping); + break; + case MoveModeEnum.AbsolutePrecise: + PathData.MoveBy(ref tf, ref directionInt, speed * deltaTime, Clamping); + break; + default: + throw new NotSupportedException(); + } + curyDirection = MovementDirectionMethods.FromInt(directionInt); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/PathController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/PathController.cs.meta new file mode 100644 index 00000000..1acb7a3d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/PathController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec8c51951f66b4a4099916a8055d980a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -100 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/SplineController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/SplineController.cs new file mode 100644 index 00000000..18af0d6e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/SplineController.cs @@ -0,0 +1,1208 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using JetBrains.Annotations; +using UnityEngine.Assertions; +using Random = UnityEngine.Random; + +namespace FluffyUnderware.Curvy.Controllers +{ + + /// + /// Defines what spline a will use when reaching a . + /// + public enum SplineControllerConnectionBehavior + { + /// + /// Continue moving on the current spline, ignoring the connection. + /// + CurrentSpline, + /// + /// Move to the spline containing the Follow-Up if any. If none, continue moving on the current spline, ignoring the connection. + /// + FollowUpSpline, + /// + /// Move to the spline of a randomly selected control point from all the connected control points. + /// + RandomSpline, + /// + /// Move to the spline containing the Follow-Up if any. If none, move to the spline of a randomly selected control point from all the connected control points. + /// + FollowUpOtherwiseRandom, + /// + /// Use a custom defined selection logic + /// + Custom + } + + /// + /// Controller working with Splines + /// + [AddComponentMenu("Curvy/Controllers/Spline Controller")] + [HelpURL(CurvySpline.DOCLINK + "splinecontroller")] + public class SplineController : CurvyController + { + public SplineController() + { + preAllocatedEventArgs = new CurvySplineMoveEventArgs(this, Spline, null, Single.NaN, false, Single.NaN, MovementDirection.Forward); + } + + #region ### Serialized Fields ### + + /*! \cond PRIVATE */ + + /// + /// The spline to use. It is best to set/get the spline through the property instead + /// + [Section("General", Sort = 0)] + + [FieldCondition(nameof(m_Spline), null, false, ActionAttribute.ActionEnum.ShowError, "Missing source Spline")] + [SerializeField] + protected CurvySpline m_Spline; + + /*! \endcond */ + + [SerializeField] + [Tooltip("Whether spline's cache data should be used. Set this to true to gain performance if precision is not required.")] + private bool m_UseCache; + + #region Connections handling + + [Section("Connections handling", Sort = 250, HelpURL = CurvySpline.DOCLINK + "curvycontroller_connectionshandling")] + + [SerializeField, Label("At connection, use", "What spline should the controller use when reaching a Connection")] + private SplineControllerConnectionBehavior connectionBehavior = SplineControllerConnectionBehavior.CurrentSpline; + + #region Random Connection and Follow-Up options + + [SerializeField, Label("Allow direction change", "When true, the controller will modify its direction to best fit the connected spline")] +#if UNITY_EDITOR + [FieldCondition(nameof(connectionBehavior), SplineControllerConnectionBehavior.FollowUpSpline, false, ConditionalAttribute.OperatorEnum.OR, "ShowRandomConnectionOptions", true, false)] +#endif + + private bool allowDirectionChange = true; + + #endregion + + #region Random Connection options + + [SerializeField, Label("Reject current spline", "Whether the current spline should be excluded from the randomly selected splines")] + [FieldCondition(nameof(ShowRandomConnectionOptions), true)] + private bool rejectCurrentSpline = true; + + [SerializeField, Label("Reject divergent splines", "Whether splines that diverge from the current spline with more than a specific angle should be excluded from the randomly selected splines")] + [FieldCondition(nameof(ShowRandomConnectionOptions), true)] + private bool rejectTooDivergentSplines = false; + + [SerializeField, Label("Max allowed angle", "Maximum allowed divergence angle in degrees")] +#if UNITY_EDITOR + [FieldCondition(nameof(ShowRandomConnectionOptions), true, false, ConditionalAttribute.OperatorEnum.AND, "rejectTooDivergentSplines", true, false)] +#endif + [Range(0, 180)] + private float maxAllowedDivergenceAngle = 90; + + #endregion + + #region Custom options + + [SerializeField, Label("Custom Selector", "A custom logic to select which connected spline to follow. Select a Script inheriting from SplineControllerConnectionBehavior")] + [FieldCondition(nameof(connectionBehavior), SplineControllerConnectionBehavior.Custom, false, ActionAttribute.ActionEnum.Show)] + [FieldCondition(nameof(connectionCustomSelector), null, false, ActionAttribute.ActionEnum.ShowWarning, "Missing custom selector")] + private ConnectedControlPointsSelector connectionCustomSelector; + + #endregion + + #endregion + + /*! \cond PRIVATE */ + + [Section("Events", false, false, 1000, HelpURL = CurvySpline.DOCLINK + "splinecontroller_events")] + [SerializeField] + [ArrayEx] + protected List onPositionReachedList = new List(); + [SerializeField] + protected CurvySplineMoveEvent m_OnControlPointReached = new CurvySplineMoveEvent(); + [SerializeField] + protected CurvySplineMoveEvent m_OnEndReached = new CurvySplineMoveEvent(); + [SerializeField] + protected CurvySplineMoveEvent m_OnSwitch = new CurvySplineMoveEvent(); + + /*! \endcond */ + + #endregion + + #region ### Public Properties ### + + /// + /// Gets or sets the spline to use + /// + public virtual CurvySpline Spline + { + get { return m_Spline; } + set + { m_Spline = value; } + } + + /// + /// Gets or sets whether spline's cache data should be used + /// + public bool UseCache + { + get + { + return m_UseCache; + } + set + { + if (m_UseCache != value) + m_UseCache = value; + } + } + + + #region Connections handling + + /// + /// Connections handling: What spline should the controller use when reaching a Connection + /// + public SplineControllerConnectionBehavior ConnectionBehavior + { + get { return connectionBehavior; } + set { connectionBehavior = value; } + } + + /// + /// Connections handling: A custom logic to select which connected spline to follow. Select a Script inheriting from SplineControllerConnectionBehavior. Is used when is equal to + /// + public ConnectedControlPointsSelector ConnectionCustomSelector + { + get { return connectionCustomSelector; } + set { connectionCustomSelector = value; } + } + + /// + /// Connections handling: When true, the controller will modify its direction to best fit the connected spline. Is used when is equal to , , or + /// + public bool AllowDirectionChange + { + get { return allowDirectionChange; } + set { allowDirectionChange = value; } + } + + /// + /// Connections handling: Whether the current spline should be excluded from the randomly selected splines. Is used when is equal to , or + /// + public bool RejectCurrentSpline + { + get { return rejectCurrentSpline; } + set { rejectCurrentSpline = value; } + } + + /// + /// Connections handling: Whether splines that diverge from the current spline with more than should be excluded from the randomly selected splines. Is used when is equal to , or + /// + public bool RejectTooDivergentSplines + { + get { return rejectTooDivergentSplines; } + set { rejectTooDivergentSplines = value; } + } + + /// + /// Connections handling: Maximum allowed divergence angle in degrees. Considered when is true. Is used when is equal to , or + /// + public float MaxAllowedDivergenceAngle + { + get { return maxAllowedDivergenceAngle; } + set { maxAllowedDivergenceAngle = value; } + } + + #endregion + + + /// + /// Settings of events raised when moving over specific positions on the spline + /// + public List OnPositionReachedList + { + get { return onPositionReachedList; } + set { onPositionReachedList = value; } + } + + /// + /// Event raised when moving over a Control Point + /// + public CurvySplineMoveEvent OnControlPointReached + { + get { return m_OnControlPointReached; } + set { m_OnControlPointReached = value; } + } + + /// + /// Event raised when reaching the extends (i.e. the start or end) of the source spline + /// + public CurvySplineMoveEvent OnEndReached + { + get { return m_OnEndReached; } + set { m_OnEndReached = value; } + } + + /// + /// Event raised while switching splines. Splines switching is done via the method. + /// + public CurvySplineMoveEvent OnSwitch + { + get { return m_OnSwitch; } + set { m_OnSwitch = value; } + } + + + /// + /// Gets whether the Controller is switching splines + /// + public bool IsSwitching { get; private set; } + + /// + /// The ratio (value between 0 and 1) expressing the progress of the current spline switch. 0 means the switch just started, 1 means the switch ended. + /// Its value is 0 if no spline switching is in progress. Spline switching is done by calling + /// + public float SwitchProgress { get { return IsSwitching ? Mathf.Clamp01((Time.time - SwitchStartTime) / SwitchDuration) : 0; } } + + /// + /// Gets the source's length + /// + public override float Length + { + get + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return ReferenceEquals(Spline, null) == false ? Spline.Length : 0; + } + } + + #endregion + + #region ### Private & Protected Fields & Properties ### + + private CurvySpline prePlaySpline; + private readonly CurvySplineMoveEventArgs preAllocatedEventArgs; + + #region Switch + + /// + /// The time at which the current spline switching started. + /// Its value is invalid if no spline switching is in progress. Spline switching is done by calling + /// + protected float SwitchStartTime; + /// + /// The duration of the the current spline switching. + /// Its value is invalid if no spline switching is in progress. Spline switching is done by calling + /// + protected float SwitchDuration; + /// + /// The spline to which the controller is switching. + /// Its value is invalid if no spline switching is in progress. Spline switching is done by calling + /// + protected CurvySpline SwitchTarget; + /// + /// The controller's current TF on the . + /// Its value is invalid if no spline switching is in progress. Spline switching is done by calling + /// + protected float TfOnSwitchTarget; + /// + /// The controller's current Direction on the . + /// Its value is invalid if no spline switching is in progress. Spline switching is done by calling + /// + protected MovementDirection DirectionOnSwitchTarget; + + #endregion + + #endregion + + #region ## Unity Callbacks ### + + /*! \cond UNITY */ +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + if (IsReady) + foreach (OnPositionReachedSettings settings in OnPositionReachedList) + settings.Position = Mathf.Min(Mathf.Max(settings.Position, 0), GetMaxPosition(settings.PositionMode)); + } +#endif + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + /// + /// Start a spline switch. Should be called only on non stopped controllers. + /// + /// While switching is not finished, movement on destination spline will not fire events nor consider connections + /// the target spline to switch to + /// the target TF + /// duration of the switch phase + public virtual void SwitchTo(CurvySpline destinationSpline, float destinationTf, float duration) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isInitialized, ControllerNotReadyMessage); +#endif + + if (PlayState == CurvyControllerState.Stopped) + { + DTLog.LogError("[Curvy] Controller can not switch when stopped. The switch call will be ignored"); + } + else if (duration <= 0) + { + DTLog.LogWarning($"[Curvy] Controller switch has a duration set to {duration}. Duration should be a strictly positive value"); + Spline = destinationSpline; + RelativePosition = destinationTf; + } + else + { + SwitchStartTime = Time.time; + SwitchDuration = duration; + SwitchTarget = destinationSpline; + TfOnSwitchTarget = destinationTf; + DirectionOnSwitchTarget = MovementDirection; + IsSwitching = true; + } + } + + /// + /// If is switching splines, instantly finishes the current switch. + /// + public void FinishCurrentSwitch() + { + if (IsSwitching) + { + IsSwitching = false; + Spline = SwitchTarget; + RelativePosition = TfOnSwitchTarget; + } + } + + /// + /// If is switching splines, cancels the current switch. + /// + public void CancelCurrentSwitch() + { + if (IsSwitching) + IsSwitching = false; + } + + /// + /// Get the direction change, in degrees, of controller caused by the crossing of a connection. + /// + /// The control point the controller is on before crossing the connection + /// The movement mode the controller has before crossing the connection + /// The control point the controller is on after crossing the connection + /// If true, the controller will change movemen mode to best fit the after control point. + /// A positif angle in degrees + public static float GetAngleBetweenConnectedSplines(CurvySplineSegment before, MovementDirection movementMode, CurvySplineSegment after, bool allowMovementModeChange) + { + Vector3 currentTangent = before.GetTangentFast(0) * movementMode.ToInt(); + Vector3 newTangent = after.GetTangentFast(0) * GetPostConnectionDirection(after, movementMode, allowMovementModeChange).ToInt(); + return Vector3.Angle(currentTangent, newTangent); + } + + #endregion + + #region ### Protected Methods ### + + override public bool IsReady + { + get + { + return ReferenceEquals(Spline, null) == false && Spline.IsInitialized; + } + } + + override protected void SavePrePlayState() + { + prePlaySpline = Spline; + base.SavePrePlayState(); + } + + override protected void RestorePrePlayState() + { + Spline = prePlaySpline; + base.RestorePrePlayState(); + } + + protected override float RelativeToAbsolute(float relativeDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); + Assert.IsTrue(CurvyUtility.Approximately(relativeDistance, GetClampedPosition(relativeDistance, CurvyPositionMode.Relative, Clamping, Length))); +#endif + return Spline.TFToDistance(relativeDistance, Clamping); + } + + + protected override float AbsoluteToRelative(float worldUnitDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); + Assert.IsTrue(CurvyUtility.Approximately(worldUnitDistance, GetClampedPosition(worldUnitDistance, CurvyPositionMode.WorldUnits, Clamping, Length))); +#endif + return Spline.DistanceToTF(worldUnitDistance, Clamping); + } + + protected override Vector3 GetInterpolatedSourcePosition(float tf) + { + Vector3 p = (UseCache) ? Spline.InterpolateFast(tf) : Spline.Interpolate(tf); + + return Spline.transform.TransformPoint(p); + } + + + protected override void GetInterpolatedSourcePosition(float tf, out Vector3 interpolatedPosition, out Vector3 tangent, out Vector3 up) + { + CurvySpline spline = Spline; + Transform splineTransform = spline.transform; + + float localF; + CurvySplineSegment currentSegment = spline.TFToSegment(tf, out localF); + if (ReferenceEquals(currentSegment, null) == false) + { + if (UseCache) + currentSegment.InterpolateAndGetTangentFast(localF, out interpolatedPosition, out tangent); + else + currentSegment.InterpolateAndGetTangent(localF, out interpolatedPosition, out tangent); + up = currentSegment.GetOrientationUpFast(localF); + } + + else + { + interpolatedPosition = Vector3.zero; + tangent = Vector3.zero; + up = Vector3.zero; + } + + interpolatedPosition = splineTransform.TransformPoint(interpolatedPosition); + tangent = splineTransform.TransformDirection(tangent); + up = splineTransform.TransformDirection(up); + } + + protected override Vector3 GetTangent(float tf) + { + Vector3 t = (UseCache) ? Spline.GetTangentFast(tf) : Spline.GetTangent(tf); + return Spline.transform.TransformDirection(t); + } + + protected override Vector3 GetOrientation(float tf) + { + return Spline.transform.TransformDirection(Spline.GetOrientationUpFast(tf)); + } + + protected override void Advance(float speed, float deltaTime) + { + float distance = speed * deltaTime; + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(distance > 0); +#endif + + if (Spline.Count != 0) + EventAwareMove(distance); + + + if (IsSwitching && SwitchTarget.Count > 0) + { + SimulateAdvanceOnSpline(ref TfOnSwitchTarget, ref DirectionOnSwitchTarget, SwitchTarget, speed * deltaTime); + + preAllocatedEventArgs.Set_INTERNAL(this, SwitchTarget, null, TfOnSwitchTarget, SwitchProgress, DirectionOnSwitchTarget, false); + OnSwitch.Invoke(preAllocatedEventArgs); + if (preAllocatedEventArgs.Cancel) + CancelCurrentSwitch(); + } + } + + override protected void SimulateAdvance(ref float tf, ref MovementDirection curyDirection, float speed, float deltaTime) + { + SimulateAdvanceOnSpline(ref tf, ref curyDirection, Spline, speed * deltaTime); + } + + private void SimulateAdvanceOnSpline(ref float tf, ref MovementDirection curyDirection, CurvySpline spline, float distance) + { + if (spline.Count > 0) + { + int directionInt = curyDirection.ToInt(); + switch (MoveMode) + { + case MoveModeEnum.AbsolutePrecise: + tf = spline.DistanceToTF(spline.ClampDistance(spline.TFToDistance(tf) + distance * directionInt, ref directionInt, Clamping)); + break; + case MoveModeEnum.Relative: + tf = CurvyUtility.ClampTF(tf + distance * directionInt, ref directionInt, Clamping); + break; + default: + throw new NotSupportedException(); + } + curyDirection = MovementDirectionMethods.FromInt(directionInt); + } + } + + override protected void InitializedApplyDeltaTime(float deltaTime) + { + if (Spline.Dirty) + Spline.Refresh(); + + base.InitializedApplyDeltaTime(deltaTime); + + if (IsSwitching && SwitchProgress >= 1) + FinishCurrentSwitch(); + } + + override protected void ComputeTargetPositionAndRotation(out Vector3 targetPosition, out Vector3 targetUp, out Vector3 targetForward) + { + Vector3 switchlessPosition; + Vector3 switchlessUp; + Vector3 switchlessForward; + base.ComputeTargetPositionAndRotation(out switchlessPosition, out switchlessUp, out switchlessForward); + Quaternion switchlessRotation = Quaternion.LookRotation(switchlessForward, switchlessUp); + + if (IsSwitching) + { + CurvySpline preSwitchSpline = Spline; + float preSwitchSplineTf = RelativePosition; + + m_Spline = SwitchTarget; + RelativePosition = TfOnSwitchTarget; + + Vector3 positionOnSwitchToSpline; + Vector3 upOnSwitchToSpline; + Vector3 forwardOnSwitchToSpline; + base.ComputeTargetPositionAndRotation(out positionOnSwitchToSpline, out upOnSwitchToSpline, out forwardOnSwitchToSpline); + Quaternion rotationOnSwitchToSpline = Quaternion.LookRotation(forwardOnSwitchToSpline, upOnSwitchToSpline); + + m_Spline = preSwitchSpline; + RelativePosition = preSwitchSplineTf; + + targetPosition = OptimizedOperators.LerpUnclamped(switchlessPosition, positionOnSwitchToSpline, SwitchProgress); + Quaternion interpolatedRotation = Quaternion.LerpUnclamped(switchlessRotation, rotationOnSwitchToSpline, SwitchProgress); + targetUp = interpolatedRotation * Vector3.up; + targetForward = interpolatedRotation * Vector3.forward; + } + else + { + targetPosition = switchlessPosition; + targetUp = switchlessUp; + targetForward = switchlessForward; + } + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + /// + /// This method gets the controller position, but handles the looping differently than usual (it does not change a relative position of 1 to 0), which avoids hardly solvable ambiguities in the movement logic. + /// + /// This is to make controller logic simpler, since it does not need anymore to guess if a position of 0 meant controller on the end of the spline and needed looping, or meant that the controller is on the start of the spline. + /// The one of the returned position + /// Uses the controller's + private static float MovementCompatibleGetPosition(SplineController controller, float clampedPosition, CurvyPositionMode positionMode, out CurvySplineSegment controlPoint, out bool isOnControlPoint) + { + + float resultPosition; + CurvySpline spline = controller.Spline; + + bool isOnSegmentLastCp; + bool isOnSegmentFirstCp; + float unconvertedLocalPosition; + switch (controller.PositionMode) + { + case CurvyPositionMode.Relative: + controlPoint = spline.TFToSegment(clampedPosition, out unconvertedLocalPosition, out isOnSegmentFirstCp, out isOnSegmentLastCp, CurvyClamping.Clamp); //CurvyClamping.Clamp to cancel looping handling + break; + case CurvyPositionMode.WorldUnits: + controlPoint = spline.DistanceToSegment(clampedPosition, out unconvertedLocalPosition, out isOnSegmentFirstCp, out isOnSegmentLastCp, CurvyClamping.Clamp); //CurvyClamping.Clamp to cancel looping handling + break; + default: + throw new NotSupportedException(); + } + + if (positionMode == controller.PositionMode) + resultPosition = clampedPosition; + else + { + switch (positionMode) + { + case CurvyPositionMode.Relative: + resultPosition = spline.SegmentToTF(controlPoint, controlPoint.DistanceToLocalF(unconvertedLocalPosition)); + break; + case CurvyPositionMode.WorldUnits: + resultPosition = controlPoint.Distance + controlPoint.LocalFToDistance(unconvertedLocalPosition); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + if (isOnSegmentLastCp) //Case of last cp of an open spline + controlPoint = spline.GetNextControlPoint(controlPoint); + + isOnControlPoint = isOnSegmentFirstCp || isOnSegmentLastCp; + + return resultPosition; + } + + /// + /// This method sets the controller position, but handles the looping differently than usual (it does not change a realtive position of 1 to 0), which avoids hardly solvable ambiguities in the movement logic. + /// + /// This is to make controller logic simpler, since it does not need anymore to guess if a position of 0 meant controller on the end of the spline and needed looping, or meant that the controller is on the start of the spline. + private static void MovementCompatibleSetPosition(SplineController controller, CurvyPositionMode positionMode, float specialClampedPosition) + { + float clampedPosition = specialClampedPosition; + + if (positionMode == controller.PositionMode) + controller.m_Position = clampedPosition; + else + switch (positionMode) + { + case CurvyPositionMode.Relative: + controller.m_Position = controller.Spline.TFToDistance(clampedPosition, controller.Clamping); + break; + case CurvyPositionMode.WorldUnits: + controller.m_Position = controller.Spline.DistanceToTF(clampedPosition, controller.Clamping); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + private const string InvalidSegmentErrorMessage = "[Curvy] Controller {0} reached segment {1} which is invalid segment because it has a length of 0. Please fix the invalid segment to avoid issues with the controller"; + + /// + /// Updates position and direction while triggering events when reaching a control point + /// + /// + /// The position mode used in the computations. Could be different than SplineController.PositionMode + private void EventAwareMove(float distance) + { +#if CURVY_SANITY_CHECKS + MoveModeEnum moveModeAtMethodStart = MoveMode; + Assert.IsTrue(distance > 0); +#endif + CurvyPositionMode movementRelatedPositionMode; + switch (MoveMode) + { + case MoveModeEnum.AbsolutePrecise: + movementRelatedPositionMode = CurvyPositionMode.WorldUnits; + break; + case MoveModeEnum.Relative: + movementRelatedPositionMode = CurvyPositionMode.Relative; + break; + default: + throw new NotSupportedException(); + } + + float currentDelta = distance; + + bool cancelMovement = false; + + //Handle when controller starts at special position + switch (MovementDirection) + { + case MovementDirection.Backward: + if (m_Position == 0) + if (Clamping == CurvyClamping.PingPong) + MovementDirection = MovementDirection.GetOpposite(); + else if (Clamping == CurvyClamping.Clamp) + return; + break; + case MovementDirection.Forward: + float upperLimit; + { + switch (PositionMode) + { + case CurvyPositionMode.Relative: + upperLimit = 1f; + break; + case CurvyPositionMode.WorldUnits: + upperLimit = m_Spline.Length; + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + if (m_Position == upperLimit) + if (Clamping == CurvyClamping.PingPong) + MovementDirection = MovementDirection.GetOpposite(); + else if (Clamping == CurvyClamping.Clamp) + return; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + CurvySplineSegment currentCp; + bool isOnCp; + float movementCompatibleCurrentPosition; + movementCompatibleCurrentPosition = MovementCompatibleGetPosition(this, m_Position, movementRelatedPositionMode, out currentCp, out isOnCp); + + if (currentCp.Length == 0 && Spline.IsControlPointASegment(currentCp)) + DTLog.LogWarning(String.Format(InvalidSegmentErrorMessage, this.name, currentCp)); + + int infiniteLoopSafety = 10000; + while (!cancelMovement && currentDelta > 0 && infiniteLoopSafety-- > 0) + { + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(Spline.Count > 0); + Assert.IsTrue(moveModeAtMethodStart == MoveMode);// MoveMode is not allowed to be modified while moving a Spline Controller; +#endif + CurvySplineSegment candidateControlPoint; + { + if (MovementDirection == MovementDirection.Forward) + candidateControlPoint = Spline.GetNextControlPoint(currentCp); + else + candidateControlPoint = isOnCp + ? Spline.GetPreviousControlPoint(currentCp) + : currentCp; + } + + if (ReferenceEquals(candidateControlPoint, null) == false && Spline.IsControlPointVisible(candidateControlPoint)) + { + float candidateControlPointPosition; + { + candidateControlPointPosition = GetControlPointPosition(candidateControlPoint, movementRelatedPositionMode); + if (MovementDirection == MovementDirection.Forward && m_Spline.Closed && candidateControlPointPosition == 0) + { + switch (movementRelatedPositionMode) + { + case CurvyPositionMode.Relative: + candidateControlPointPosition = 1; + break; + case CurvyPositionMode.WorldUnits: + candidateControlPointPosition = m_Spline.Length; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + } + } + + float distanceToCandidate = Mathf.Abs(candidateControlPointPosition - movementCompatibleCurrentPosition); + + float postEventsEndPosition; + + if (distanceToCandidate > currentDelta)//If no more control point to reach, move the controller and exit + { + float movementCompatibleNewPosition = movementCompatibleCurrentPosition + currentDelta * MovementDirection.ToInt(); + + movementCompatibleNewPosition = GetClampedPosition(movementCompatibleNewPosition, movementRelatedPositionMode, Clamping, m_Spline.Length); + + HandleOnPositionReachedEvents(movementRelatedPositionMode, + movementCompatibleCurrentPosition, + movementCompatibleNewPosition, + out postEventsEndPosition, + currentDelta, + currentCp, + ref cancelMovement); + + MovementCompatibleSetPosition(this, movementRelatedPositionMode, postEventsEndPosition); + + break; + } + + HandleOnPositionReachedEvents(movementRelatedPositionMode, + movementCompatibleCurrentPosition, + candidateControlPointPosition, + out postEventsEndPosition, + currentDelta, + currentCp, + ref cancelMovement); + + if (postEventsEndPosition.Approximately(candidateControlPointPosition) == false) + { + DTLog.LogWarning($"[Curvy] Spline Controller {name}: Position was modified in an {nameof(OnPositionReachedList)} event handler. That modification will be ignored to prioritize the controller reaching a new control point. You can use the {nameof(OnControlPointReached)} event or {(nameof(OnEndReached))} instead. If this behavior is problematic, please contact the developers."); + } + + currentDelta -= distanceToCandidate; + + //Move to next control point + HandleReachingNewControlPoint(candidateControlPoint, candidateControlPointPosition, movementRelatedPositionMode, currentDelta, ref cancelMovement, out currentCp, out isOnCp, out movementCompatibleCurrentPosition); + } + + //handle connection + { + if (isOnCp && currentCp.Connection && currentCp.Connection.ControlPointsList.Count > 1) + { + MovementDirection newDirection; + CurvySplineSegment postConnectionHandlingControlPoint; + switch (ConnectionBehavior) + { + case SplineControllerConnectionBehavior.CurrentSpline: + postConnectionHandlingControlPoint = currentCp; + newDirection = MovementDirection; + break; + case SplineControllerConnectionBehavior.FollowUpSpline: + postConnectionHandlingControlPoint = HandleFollowUpConnectionBehavior(currentCp, MovementDirection, out newDirection); + break; + case SplineControllerConnectionBehavior.FollowUpOtherwiseRandom: + postConnectionHandlingControlPoint = currentCp.FollowUp + ? HandleFollowUpConnectionBehavior(currentCp, MovementDirection, out newDirection) + : HandleRandomConnectionBehavior(currentCp, MovementDirection, out newDirection, currentCp.Connection.ControlPointsList); + break; + case SplineControllerConnectionBehavior.RandomSpline: + postConnectionHandlingControlPoint = HandleRandomConnectionBehavior(currentCp, MovementDirection, out newDirection, currentCp.Connection.ControlPointsList); + break; + case SplineControllerConnectionBehavior.Custom: + if (ConnectionCustomSelector == null) + { + DTLog.LogError("[Curvy] You need to set a non null ConnectionCustomSelector when using SplineControllerConnectionBehavior.Custom"); + postConnectionHandlingControlPoint = currentCp; + } + else + postConnectionHandlingControlPoint = ConnectionCustomSelector.SelectConnectedControlPoint(this, currentCp.Connection, currentCp); + newDirection = MovementDirection; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + if (ReferenceEquals(postConnectionHandlingControlPoint, currentCp) == false) + { + MovementDirection = newDirection; + float postConnectionHandlingControlPointPosition = GetControlPointPosition(postConnectionHandlingControlPoint, movementRelatedPositionMode); + HandleReachingNewControlPoint(postConnectionHandlingControlPoint, postConnectionHandlingControlPointPosition, movementRelatedPositionMode, currentDelta, ref cancelMovement, out currentCp, out isOnCp, out movementCompatibleCurrentPosition); + } + } + } + + //handle clamping + { + if (isOnCp) + { + switch (Clamping) + { + case CurvyClamping.Loop: + if (Spline.Closed == false) + { + CurvySplineSegment newControlPoint; + if (MovementDirection == MovementDirection.Backward && ReferenceEquals(currentCp, Spline.FirstVisibleControlPoint)) + newControlPoint = Spline.LastVisibleControlPoint; + else if (MovementDirection == MovementDirection.Forward && ReferenceEquals(currentCp, Spline.LastVisibleControlPoint)) + newControlPoint = Spline.FirstVisibleControlPoint; + else + newControlPoint = null; + + if (ReferenceEquals(newControlPoint, null) == false) + { + float newControlPointPosition = GetControlPointPosition(newControlPoint, movementRelatedPositionMode); + HandleReachingNewControlPoint(newControlPoint, newControlPointPosition, movementRelatedPositionMode, currentDelta, ref cancelMovement, out currentCp, out isOnCp, out movementCompatibleCurrentPosition); + } + } + break; + case CurvyClamping.Clamp: + if ((MovementDirection == MovementDirection.Backward && ReferenceEquals(currentCp, Spline.FirstVisibleControlPoint)) || + (MovementDirection == MovementDirection.Forward && ReferenceEquals(currentCp, Spline.LastVisibleControlPoint))) + currentDelta = 0; + break; + case CurvyClamping.PingPong: + if ((MovementDirection == MovementDirection.Backward && ReferenceEquals(currentCp, Spline.FirstVisibleControlPoint)) || + (MovementDirection == MovementDirection.Forward && ReferenceEquals(currentCp, Spline.LastVisibleControlPoint))) + MovementDirection = MovementDirection.GetOpposite(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + } + } + + if (infiniteLoopSafety <= 0) + DTLog.LogError(String.Format("[Curvy] Unexpected behavior in Spline Controller '{0}'. Please raise a Bug Report.", name)); + + } + + /// + /// Triggers relevant OnPositionReached events if any. + /// + private void HandleOnPositionReachedEvents(CurvyPositionMode positionMode, + float startPosition, + float endPosition, + out float postEventsEndPosition, + float currentDelta, + CurvySplineSegment currentCp, + ref bool cancelMovement) + { + float? nullablePostEventsEndPosition = null; + + for (int index = 0; index < OnPositionReachedList.Count; index++) + { + OnPositionReachedSettings settings = OnPositionReachedList[index]; + //Debug.Log($"{customEvent.PositionMode} : {startPosition} {endPosition}"); + + float eventPosition; + { + if (positionMode == settings.PositionMode) + eventPosition = settings.Position; + else + switch (positionMode) + { + case CurvyPositionMode.Relative: + eventPosition = Spline.DistanceToTF(settings.Position); + break; + case CurvyPositionMode.WorldUnits: + eventPosition = Spline.TFToDistance(settings.Position); + break; + default: + throw new ArgumentOutOfRangeException(nameof(positionMode), positionMode, null); + } + } + + if (eventPosition > startPosition && eventPosition <= endPosition + || eventPosition >= endPosition && eventPosition < startPosition) + { + if (settings.TriggeringDirections == TriggeringDirections.All + || settings.TriggeringDirections == TriggeringDirections.Forward && startPosition < eventPosition + || settings.TriggeringDirections == TriggeringDirections.Backward && startPosition > eventPosition) + { + float delta = Math.Abs(eventPosition - startPosition); + + //every custom event triggering will modify the controller's position to the event's position. This will override any possible position modification by a prior event handler + MovementCompatibleSetPosition(this, settings.PositionMode, eventPosition); + + preAllocatedEventArgs.Set_INTERNAL(this, + Spline, + currentCp, + eventPosition, + currentDelta - delta, + MovementDirection, + settings.PositionMode == CurvyPositionMode.WorldUnits); + + InvokeEventHandler(settings.Event, preAllocatedEventArgs, positionMode, out _, out _, out nullablePostEventsEndPosition); + + cancelMovement |= preAllocatedEventArgs.Cancel; + } + } + } + postEventsEndPosition = nullablePostEventsEndPosition ?? endPosition; + } + + /// + /// Do operations necessary when controller reaches a new control point: setting the controller position, update its spline if necessary, and send events if necessary + /// + private void HandleReachingNewControlPoint(CurvySplineSegment controlPoint, + float controlPointPosition, + CurvyPositionMode positionMode, + float currentDelta, + ref bool cancelMovement, + out CurvySplineSegment postEventsControlPoint, + out bool postEventsIsControllerOnControlPoint, + out float postEventsControlPointPosition) + { + //update state + MovementCompatibleSetPosition(this, positionMode, controlPointPosition); + Spline = controlPoint.Spline; + postEventsControlPoint = controlPoint; + postEventsIsControllerOnControlPoint = true; + postEventsControlPointPosition = controlPointPosition; + + //handle invalid situation + if (controlPoint.Length == 0 && Spline.IsControlPointASegment(controlPoint)) + DTLog.LogWarning(String.Format(InvalidSegmentErrorMessage, this.name, controlPoint)); + + + //setup event param + preAllocatedEventArgs.Set_INTERNAL(this, Spline, controlPoint, controlPointPosition, currentDelta, MovementDirection, positionMode == CurvyPositionMode.WorldUnits); + + //handle OnControlPointReached + InvokeEventHandler(OnControlPointReached, preAllocatedEventArgs, positionMode, ref postEventsControlPoint, ref postEventsIsControllerOnControlPoint, ref postEventsControlPointPosition); + + //handle OnEndReached + if (ReferenceEquals(preAllocatedEventArgs.Spline.FirstVisibleControlPoint, preAllocatedEventArgs.ControlPoint) + || ReferenceEquals(preAllocatedEventArgs.Spline.LastVisibleControlPoint, preAllocatedEventArgs.ControlPoint)) + InvokeEventHandler(OnEndReached, preAllocatedEventArgs, positionMode, ref postEventsControlPoint, ref postEventsIsControllerOnControlPoint, ref postEventsControlPointPosition); + + cancelMovement |= preAllocatedEventArgs.Cancel; + } + + private void InvokeEventHandler(CurvySplineMoveEvent @event, + CurvySplineMoveEventArgs eventArgument, + CurvyPositionMode positionMode, + ref CurvySplineSegment postEventsControlPoint, + ref bool postEventsIsControllerOnControlPoint, + ref float postEventPosition) + { + InvokeEventHandler(@event, + eventArgument, + positionMode, + out CurvySplineSegment outControlPoint, + out bool? outIsControllerOnControlPoint, + out float? outPosition); + + if (outPosition != null) + postEventPosition = outPosition.Value; + if (outIsControllerOnControlPoint != null) + postEventsIsControllerOnControlPoint = outIsControllerOnControlPoint.Value; + if (outControlPoint != null) + postEventsControlPoint = outControlPoint; + + } + + private void InvokeEventHandler(CurvySplineMoveEvent @event, + CurvySplineMoveEventArgs eventArgument, + CurvyPositionMode positionMode, + out CurvySplineSegment postEventsControlPoint, + out bool? postEventsIsControllerOnControlPoint, + out float? postEventPosition) + { + //save some data before calling events to know if event handlers changed important state + float preEventPosition = m_Position; + CurvyPositionMode preEventPositionMode = PositionMode; + CurvySpline preEventPositionSpline = m_Spline; + //call event handler + @event.Invoke(eventArgument); + //update state if event handler changed important things + if (m_Position != preEventPosition || PositionMode != preEventPositionMode || ReferenceEquals(m_Spline, preEventPositionSpline) == false) + { + postEventPosition = MovementCompatibleGetPosition(this, m_Position, positionMode, out postEventsControlPoint, out bool outIsOnCP); + postEventsIsControllerOnControlPoint = outIsOnCP; + } + else + { + postEventsControlPoint = null; + postEventsIsControllerOnControlPoint = null; + postEventPosition = null; + } + } + + /// + /// Get the correct control point and direction from applying the Random connection handling logic + /// + private CurvySplineSegment HandleRandomConnectionBehavior(CurvySplineSegment currentControlPoint, MovementDirection currentDirection, out MovementDirection newDirection, ReadOnlyCollection connectedControlPoints) + { + //OPTIM avoid allocation + List validConnectedControlPoints = new List(connectedControlPoints.Count); + + for (int index = 0; index < connectedControlPoints.Count; index++) + { + CurvySplineSegment controlPoint = connectedControlPoints[index]; + if (RejectCurrentSpline && controlPoint == currentControlPoint) + continue; + + if (RejectTooDivergentSplines) + { + if (GetAngleBetweenConnectedSplines(currentControlPoint, currentDirection, controlPoint, AllowDirectionChange) > MaxAllowedDivergenceAngle) + continue; + } + + validConnectedControlPoints.Add(controlPoint); + } + + CurvySplineSegment newControlPoint = validConnectedControlPoints.Count == 0 ? + currentControlPoint : + validConnectedControlPoints[Random.Range(0, validConnectedControlPoints.Count)]; + + newDirection = GetPostConnectionDirection(newControlPoint, currentDirection, AllowDirectionChange); + + return newControlPoint; + } + + /// + /// Get the direction the controller should have if moving through a specific connected Control Point + /// + private static MovementDirection GetPostConnectionDirection(CurvySplineSegment connectedControlPoint, MovementDirection currentDirection, bool directionChangeAllowed) + { + return directionChangeAllowed && connectedControlPoint.Spline.Closed == false + ? HeadingToDirection(ConnectionHeadingEnum.Auto, connectedControlPoint, currentDirection) + : currentDirection; + } + + /// + /// Get the correct control point and direction from applying the FollowUp connection handling logic + /// + private CurvySplineSegment HandleFollowUpConnectionBehavior(CurvySplineSegment currentControlPoint, MovementDirection currentDirection, out MovementDirection newDirection) + { + CurvySplineSegment newControlPoint = currentControlPoint.FollowUp + ? currentControlPoint.FollowUp + : currentControlPoint; + + newDirection = AllowDirectionChange && currentControlPoint.FollowUp + ? HeadingToDirection(currentControlPoint.FollowUpHeading, currentControlPoint.FollowUp, currentDirection) + : currentDirection; + + return newControlPoint; + } + + /// + /// Translates a heading value to a controller direction, based on the current control point situation + /// + static private MovementDirection HeadingToDirection(ConnectionHeadingEnum heading, CurvySplineSegment controlPoint, MovementDirection currentDirection) + { + MovementDirection newDirection; + ConnectionHeadingEnum resolveHeading = heading.ResolveAuto(controlPoint); + + switch (resolveHeading) + { + case ConnectionHeadingEnum.Minus: + newDirection = MovementDirection.Backward; + break; + case ConnectionHeadingEnum.Sharp: + newDirection = currentDirection; + break; + case ConnectionHeadingEnum.Plus: + newDirection = MovementDirection.Forward; + break; + default: + throw new ArgumentOutOfRangeException(); + } + return newDirection; + } + + + /// + /// Get the controller position corresponding to a specific control point + /// + private static float GetControlPointPosition(CurvySplineSegment controlPoint, CurvyPositionMode positionMode) + { + float position; + switch (positionMode) + { + case CurvyPositionMode.Relative: + position = controlPoint.TF; + break; + case CurvyPositionMode.WorldUnits: + position = controlPoint.Distance; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return position; + } + + /// + /// Used as a field condition + /// + private bool ShowRandomConnectionOptions { get { return ConnectionBehavior == SplineControllerConnectionBehavior.FollowUpOtherwiseRandom || ConnectionBehavior == SplineControllerConnectionBehavior.RandomSpline; } } + + /*! \endcond */ + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/SplineController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/SplineController.cs.meta new file mode 100644 index 00000000..558fae4e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/SplineController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dacc8a2ff207fca49bdaf5d45a943d80 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -100 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/UITextSplineController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/UITextSplineController.cs new file mode 100644 index 00000000..56b90e2b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/UITextSplineController.cs @@ -0,0 +1,406 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using UnityEngine.UI; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Pools; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy.Controllers +{ + /// + /// SplineController modifying uGUI text + /// + [RequireComponent(typeof(Text))] + [AddComponentMenu("Curvy/Controllers/UI Text Spline Controller")] + [HelpURL(CurvySpline.DOCLINK + "uitextsplinecontroller")] + public class UITextSplineController : SplineController, IMeshModifier + { + protected interface IGlyph + { + Vector3 Center { get; } + void Transpose(Vector3 v); + void Rotate(Quaternion rotation); + } + + protected class GlyphQuad : IGlyph + { + public UIVertex[] V = new UIVertex[4]; + public Rect Rect; + public Vector3 Center { get { return Rect.center; } } + + public void Load(List verts, int index) + { + V[0] = verts[index]; + V[1] = verts[index + 1]; + V[2] = verts[index + 2]; + V[3] = verts[index + 3]; + + calcRect(); + } + + public void LoadTris(List verts, int index) + { + V[0] = verts[index]; + V[1] = verts[index + 1]; + V[2] = verts[index + 2]; + V[3] = verts[index + 4]; + calcRect(); + } + + public void calcRect() + { + Rect = new Rect(V[0].position.x, + V[2].position.y, + V[2].position.x - V[0].position.x, + V[0].position.y - V[2].position.y); + } + + public void Save(List verts, int index) + { + verts[index] = V[0]; + verts[index + 1] = V[1]; + verts[index + 2] = V[2]; + verts[index + 3] = V[3]; + } + + public void Save(VertexHelper vh) + { + vh.AddUIVertexQuad(V); + } + + public void Transpose(Vector3 v) + { + for (int i = 0; i < 4; i++) + V[i].position += v; + + } + + public void Rotate(Quaternion rotation) + { + for (int i = 0; i < 4; i++) + V[i].position = V[i].position.RotateAround(Center, rotation); + } + + } + + protected class GlyphPlain : IGlyph + { + public Vector3[] V = new Vector3[4]; + public Rect Rect; + public Vector3 Center { get { return Rect.center; } } + + public void Load(ref Vector3[] verts, int index) + { + V[0] = verts[index]; + V[1] = verts[index + 1]; + V[2] = verts[index + 2]; + V[3] = verts[index + 3]; + + calcRect(); + } + + public void calcRect() + { + Rect = new Rect(V[0].x, + V[2].y, + V[2].x - V[0].x, + V[0].y - V[2].y); + } + + public void Save(ref Vector3[] verts, int index) + { + verts[index] = V[0]; + verts[index + 1] = V[1]; + verts[index + 2] = V[2]; + verts[index + 3] = V[3]; + } + + public void Transpose(Vector3 v) + { + for (int i = 0; i < 4; i++) + V[i] += v; + + } + + public void Rotate(Quaternion rotation) + { + for (int i = 0; i < 4; i++) + V[i] = V[i].RotateAround(Center, rotation); + } + + } + + #region ### Serialized Fields ### + + [Section("Orientation")] + [Tooltip("If true, the text characters will keep the same orientation regardless of the spline they follow")] + [SerializeField] + private bool staticOrientation; + + #endregion + + #region Public properties + + /// + /// If true, the text characters will keep the same orientation regardless of the spline they follow + /// + public bool StaticOrientation + { + get { return staticOrientation; } + set + { + staticOrientation = value; + } + } + + #endregion + + + #region Conditional display in the inspector of CurvyController properties + + protected override bool ShowOrientationSection + { + get { return false; } + } + protected override bool ShowOffsetSection + { + get { return false; } + } + + #endregion + + private Graphic m_Graphic; + private RectTransform mRect; + private Text mText; + + + + protected Text Text + { + get + { + if (mText == null) + mText = GetComponent(); + return mText; + } + } + + protected RectTransform Rect + { + get + { + if (mRect == null) + mRect = GetComponent(); + return mRect; + } + } + + protected Graphic graphic + { + get + { + if (m_Graphic == null) + m_Graphic = GetComponent(); + + return m_Graphic; + } + } + + protected override void InitializedApplyDeltaTime(float deltaTime) + { + base.InitializedApplyDeltaTime(deltaTime); + graphic.SetVerticesDirty(); + } + + public void ModifyMesh(Mesh verts) + { + if (enabled && gameObject.activeInHierarchy && isInitialized) + { + Vector3[] vtArray = verts.vertices; + GlyphPlain glyph = new GlyphPlain(); + for (int c = 0; c < Text.text.Length; c++) + { + glyph.Load(ref vtArray, c * 4); + UpdateGlyph(glyph); + glyph.Save(ref vtArray, c * 4); + } + verts.vertices = vtArray; + ArrayPools.Vector3.Free(vtArray); + } + } + + + public void ModifyMesh(VertexHelper vertexHelper) + { + if (enabled && gameObject.activeInHierarchy && isInitialized) + { + List verts = new List(); + GlyphQuad glyph = new GlyphQuad(); + + vertexHelper.GetUIVertexStream(verts); + vertexHelper.Clear(); + + int readingIndex = 0; + for (int letterIndex = 0; letterIndex < Text.text.Length; letterIndex++) + { + if (Text.text[letterIndex] == ' ') + continue; + + glyph.LoadTris(verts, readingIndex * 6); + readingIndex++; + UpdateGlyph(glyph); + glyph.Save(vertexHelper); + } + } + } + + private void UpdateGlyph(IGlyph glyph) + { + //OPTIM use InterpolateAndGetTangent + float glyphTf = AbsoluteToRelative(GetClampedPosition(AbsolutePosition + glyph.Center.x, CurvyPositionMode.WorldUnits, Clamping, Length)); + + // shift to match baseline + glyph.Transpose(new Vector3(0, glyph.Center.y, 0)); + + // Rotate + if (StaticOrientation == false) + { + Vector3 glyphTangent = GetTangent(glyphTf); + glyph.Rotate(Quaternion.AngleAxis(Mathf.Atan2(glyphTangent.x, -glyphTangent.y) * Mathf.Rad2Deg - 90, Vector3.forward)); + } + + // Center on controller's position + glyph.Transpose(-glyph.Center); + + // Move on the corresponding position on the spline + float controllerTf = AbsoluteToRelative(GetClampedPosition(AbsolutePosition, CurvyPositionMode.WorldUnits, Clamping, Length)); + Vector3 controllerPosition = (UseCache) + ? Spline.InterpolateFast(controllerTf) + : Spline.Interpolate(controllerTf); + Vector3 glyphPosition = (UseCache) + ? Spline.InterpolateFast(glyphTf) + : Spline.Interpolate(glyphTf); + glyph.Transpose(Spline.transform.TransformDirection(glyphPosition - controllerPosition)); + } + + #region ### Unity Callbacks ### + + protected override void OnEnable() + { + base.OnEnable(); + if (this.graphic != null) + { + this.graphic.SetVerticesDirty(); + } + } + + protected override void OnDisable() + { + base.OnDisable(); + if (this.graphic != null) + { + this.graphic.SetVerticesDirty(); + } + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + if (isInitialized) + { + UnbindSplineRelatedEvents(); + BindSplineRelatedEvents(); + } + base.OnValidate(); + if (this.graphic != null) + { + this.graphic.SetVerticesDirty(); + } + } +#endif + + #endregion + + #region Spline refreshing + + + public override CurvySpline Spline + { + get { return m_Spline; } + set + { + if (m_Spline != value) + { + if (isInitialized) + UnbindSplineRelatedEvents(); + + m_Spline = value; + if (isInitialized) + BindSplineRelatedEvents(); + } + } + } + + protected override void BindEvents() + { + base.BindEvents(); + BindSplineRelatedEvents(); + } + + protected override void UnbindEvents() + { + base.UnbindEvents(); + UnbindSplineRelatedEvents(); + } + + private void BindSplineRelatedEvents() + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isInitialized); +#endif + if (Spline) + { + UnbindSplineRelatedEvents(); + Spline.OnRefresh.AddListener(OnSplineRefreshed); + } + } + + private void UnbindSplineRelatedEvents() + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isInitialized); +#endif + if (Spline) + { + Spline.OnRefresh.RemoveListener(OnSplineRefreshed); + } + } + + private void OnSplineRefreshed(CurvySplineEventArgs e) + { + CurvySpline senderSpline = e.Sender as CurvySpline; +#if CURVY_SANITY_CHECKS + Assert.IsTrue(senderSpline != null); +#endif + if (senderSpline != Spline) + senderSpline.OnRefresh.RemoveListener(OnSplineRefreshed); + else + { + graphic.SetVerticesDirty(); + } + } + + #endregion + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/UITextSplineController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/UITextSplineController.cs.meta new file mode 100644 index 00000000..4d22013d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/UITextSplineController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3ff25939a248e146b6f134422bd0a55 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -100 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/VolumeController.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/VolumeController.cs new file mode 100644 index 00000000..ddbf07f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/VolumeController.cs @@ -0,0 +1,332 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.DevTools; +using FluffyUnderware.Curvy.Utils; +using UnityEngine.Assertions; +using UnityEngine.Serialization; + + +namespace FluffyUnderware.Curvy.Controllers +{ + /// + /// Controller using a Curvy Generator Volume + /// + [AddComponentMenu("Curvy/Controllers/CG Volume Controller")] + [HelpURL(CurvySpline.DOCLINK + "volumecontroller")] + public class VolumeController : CurvyController + { + private const float CrossPositionRangeMin = -0.5f; + private const float CrossPositionRangeMax = 0.5f; + + #region ### Serialized Fields ### + + [Section("General")] + [CGDataReferenceSelector(typeof(CGVolume), Label = "Volume/Slot")] + [SerializeField] + private CGDataReference m_Volume = new CGDataReference(); + + [Section("Cross Position", Sort = 1, HelpURL = CurvySpline.DOCLINK + "volumecontroller_crossposition")] + [SerializeField] + [FloatRegion(UseSlider = true, Precision = 4, RegionOptionsPropertyName = nameof(CrossRangeOptions), Options = AttributeOptionsFlags.Full)] + private FloatRegion m_CrossRange = new FloatRegion(CrossPositionRangeMin, CrossPositionRangeMax); + + [RangeEx(nameof(MinCrossRelativePosition), nameof(MaxCrossRelativePosition))] + [SerializeField] + private float crossRelativePosition; + + [SerializeField] private CurvyClamping m_CrossClamping; + + #endregion + + #region ### Public Properties ### + + /// + /// Gets or sets the volume to use + /// + public CGDataReference Volume + { + get { return m_Volume; } + set { m_Volume = value; } + } + + /// + /// Gets the actual volume data + /// + public CGVolume VolumeData + { + get + { + return (Volume.HasValue) ? Volume.GetData() : null; + } + } + + public float CrossFrom + { + get { return m_CrossRange.From; } + set { m_CrossRange.From = Mathf.Clamp(value, CrossPositionRangeMin, CrossPositionRangeMax); } + } + + public float CrossTo + { + get { return m_CrossRange.To; } + set { m_CrossRange.To = Mathf.Clamp(value, CrossFrom, CrossPositionRangeMax); } + } + + public float CrossLength + { + get { return m_CrossRange.Length; } + } + + + /// + /// Gets or sets the clamping mode for lateral movement + /// + public CurvyClamping CrossClamping + { + get { return m_CrossClamping; } + set + { + m_CrossClamping = value; + } + } + + /// + /// Gets or sets the current relative lateral position, respecting clamping. Ranges from to + /// + public float CrossRelativePosition + { + get { return GetClampedCrossPosition(crossRelativePosition); } + set { crossRelativePosition = GetClampedCrossPosition(value); } + } + + /// + /// Gets the source's length + /// + public override float Length + { + get + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return (VolumeData != null) ? VolumeData.Length : 0; + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + /// + /// Converts relative lateral to absolute position, respecting clamping, ignoring CrossRange + /// + /// the relative position + /// the absolute position + public float CrossRelativeToAbsolute(float relativeDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return (VolumeData != null) ? VolumeData.CrossFToDistance(RelativePosition, relativeDistance, CrossClamping) : 0; + } + + /// + /// Converts absolute lateral to relative position, respecting clamping, ignoring CrossRange + /// + /// the absolute position + /// the relative position + public float CrossAbsoluteToRelative(float worldUnitDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return (VolumeData != null) ? VolumeData.CrossDistanceToF(RelativePosition, worldUnitDistance, CrossClamping) : 0; + } + + #endregion + + #region ### Protected Methods ### + + override public bool IsReady + { + get + { + return Volume != null && !Volume.IsEmpty && Volume.HasValue; + } + } + + /// + /// Converts distance on source from relative to absolute position. + /// + /// relative distance from the source start. Should be already clamped + /// distance in world units from the source start + protected override float RelativeToAbsolute(float relativeDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); + Assert.IsTrue(CurvyUtility.Approximately(relativeDistance, GetClampedPosition(relativeDistance, CurvyPositionMode.Relative, Clamping, Length))); +#endif + return (VolumeData != null) ? VolumeData.FToDistance(relativeDistance) : 0; + } + + /// + /// Converts distance on source from absolute to relative position. + /// + /// distance in world units from the source start. Should be already clamped + /// relative distance in the range 0..1 + protected override float AbsoluteToRelative(float worldUnitDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); + Assert.IsTrue(CurvyUtility.Approximately(worldUnitDistance, GetClampedPosition(worldUnitDistance, CurvyPositionMode.WorldUnits, Clamping, Length))); +#endif + return (VolumeData != null) ? VolumeData.DistanceToF(worldUnitDistance) : 0; + } + + protected override Vector3 GetInterpolatedSourcePosition(float tf) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return Volume.Module.Generator.transform.TransformPoint(VolumeData.InterpolateVolumePosition(tf, CrossRelativePosition)); + } + + protected override void GetInterpolatedSourcePosition(float tf, out Vector3 interpolatedPosition, out Vector3 tangent, out Vector3 up) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + VolumeData.InterpolateVolume(tf, CrossRelativePosition, out interpolatedPosition, out tangent, out up); + Transform generatorTransform = Volume.Module.Generator.transform; + interpolatedPosition = generatorTransform.TransformPoint(interpolatedPosition); + tangent = generatorTransform.TransformDirection(tangent); + up = generatorTransform.TransformDirection(up); + } + + + protected override Vector3 GetTangent(float tf) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return Volume.Module.Generator.transform.TransformDirection(VolumeData.InterpolateVolumeDirection(tf, CrossRelativePosition)); + } + + + protected override Vector3 GetOrientation(float tf) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + return Volume.Module.Generator.transform.TransformDirection(VolumeData.InterpolateVolumeUp(tf, CrossRelativePosition)); + } + + protected override void Advance(float speed, float deltaTime) + { + float tf = RelativePosition; + MovementDirection direction = MovementDirection; + + SimulateAdvance(ref tf, ref direction, speed, deltaTime); + + MovementDirection = direction; + RelativePosition = tf; + } + + override protected void SimulateAdvance(ref float tf, ref MovementDirection curyDirection, float speed, float deltaTime) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(IsReady, ControllerNotReadyMessage); +#endif + int directionInt = curyDirection.ToInt(); + + switch (MoveMode) + { + case MoveModeEnum.Relative: + VolumeData.Move(ref tf, ref directionInt, speed * deltaTime, Clamping); + break; + case MoveModeEnum.AbsolutePrecise: + VolumeData.MoveBy(ref tf, ref directionInt, speed * deltaTime, Clamping); + break; + default: + throw new NotSupportedException(); + } + curyDirection = MovementDirectionMethods.FromInt(directionInt); + } + + #endregion + + #region ### Privates & Internals ### + /*! \cond PRIVATE */ + + private RegionOptions CrossRangeOptions + { + get + { + return RegionOptions.MinMax(CrossPositionRangeMin, CrossPositionRangeMax); + } + } + + private float MinCrossRelativePosition + { + get + { + return m_CrossRange.From; + } + } + + private float MaxCrossRelativePosition + { + get + { + return m_CrossRange.To; + } + } + + private float GetClampedCrossPosition(float position) + { + return CurvyUtility.ClampValue(position, CrossClamping, CrossFrom, CrossTo); + } + + /*! \endcond */ + #endregion + + #region RetroCompatibility code + + [SerializeField, HideInInspector] + [Obsolete("Use crossRelativePosition instead. This field is kept for retro compatibility reasons")] + private float m_CrossInitialPosition; + + /*! \cond PRIVATE */ + public override void OnAfterDeserialize() + { + base.OnAfterDeserialize(); +#pragma warning disable 618 + if (float.IsNaN(m_CrossInitialPosition) == false) + { +#pragma warning disable 612 + //Converts from the obsolete way of representing cross relative position to the usual one. + crossRelativePosition = DTMath.MapValue(CrossFrom, CrossTo, m_CrossInitialPosition, CrossPositionRangeMin, CrossPositionRangeMax); +#pragma warning restore 612 + m_CrossInitialPosition = Single.NaN; + } +#pragma warning restore 618 + } + /*! \endcond */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/VolumeController.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/VolumeController.cs.meta new file mode 100644 index 00000000..b8c47445 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Controllers/VolumeController.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 978716ea84cf827468383a8fad80663e +timeCreated: 1433507673 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -100 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport.meta new file mode 100644 index 00000000..ed6ef7b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b26a492fa8c2ad445ae17a7a99886761 +folderAsset: yes +timeCreated: 1517316455 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/CurvySerializationSpace.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/CurvySerializationSpace.cs new file mode 100644 index 00000000..7e0722fa --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/CurvySerializationSpace.cs @@ -0,0 +1,18 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +namespace FluffyUnderware.Curvy.ImportExport +{ + /// + /// Used in the import/export process to define if which coordinates should be read/written, the local ones or the global ones + /// + public enum CurvySerializationSpace + { + Global = 0, + Local = 1 + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/CurvySerializationSpace.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/CurvySerializationSpace.cs.meta new file mode 100644 index 00000000..9109832f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/CurvySerializationSpace.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 3a81a593ae4669e47b9b277cce50cded +timeCreated: 1517323715 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/FileFormat.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/FileFormat.cs new file mode 100644 index 00000000..a76a5768 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/FileFormat.cs @@ -0,0 +1,18 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +namespace FluffyUnderware.Curvy.ImportExport +{ + /// + /// Used in the import/export process to define what format to import and/or export to + /// + public enum FileFormat + { + JSON = 0, + SVG = 1 + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/FileFormat.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/FileFormat.cs.meta new file mode 100644 index 00000000..dde5cc84 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/FileFormat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a54cc3b2dcf63147bc0b7ba203bdc17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineJsonConverter.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineJsonConverter.cs new file mode 100644 index 00000000..12f094b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineJsonConverter.cs @@ -0,0 +1,117 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.Curvy.Utils; +using JetBrains.Annotations; +using UnityEngine; + + +namespace FluffyUnderware.Curvy.ImportExport +{ + /// + /// Converts splines to JSON strings, and vice versa + /// + public static class SplineJsonConverter + { + /// + /// Converts splines to a JSON string + /// + /// The splines to serialize + /// What coordinates of the spline should be serialized: local ones or global ones? + /// Set to true to make the JSON string easy to read. If false, the spline will be compacted to make it small + public static string SplinesToJson(IEnumerable splines, CurvySerializationSpace coordinatesSpace = CurvySerializationSpace.Global, bool prettify = true) + { + SerializedCurvySpline[] serializedSplines = splines.Select(s => new SerializedCurvySpline(s, coordinatesSpace)).ToArray(); + return JsonUtility.ToJson(new SerializableArray { Array = serializedSplines }, prettify); + } + + /// + /// Converts a spline to a JSON string + /// + /// The spline to serialize + /// What coordinates of the spline should be serialized: local ones or global ones? + /// Set to true to make the JSON string easy to read. If false, the spline will be compacted to make it small + public static string SplineToJson(CurvySpline spline, CurvySerializationSpace coordinatesSpace = CurvySerializationSpace.Global, bool prettify = true) + { + return SplinesToJson(new[] { spline }, coordinatesSpace, prettify); + } + + /// + /// Converts a JSON string to an array of splines + /// + /// The JSON to deserialize + /// How to interpret the coordinates in the JSON: local ones or global ones? + public static CurvySpline[] JsonToSplines(string json, CurvySerializationSpace coordinatesSpace = CurvySerializationSpace.Global) + { + SerializedCurvySpline[] serializedSplines = JsonToSerializedSplines(json); + + CurvySpline[] result = new CurvySpline[serializedSplines.Length]; + + for (int index = 0; index < serializedSplines.Length; index++) + { + SerializedCurvySpline spline = serializedSplines[index]; + CurvySpline deserializedSpline = result[index] = CurvySpline.Create(); + spline.WriteIntoSpline(deserializedSpline, coordinatesSpace); + } + + return result; + } + + /// + /// Converts a JSON string to a spline + /// + /// The JSON to deserialize + /// How to interpret the coordinates in the JSON: local ones or global ones? + public static CurvySpline JsonToSpline(string json, CurvySerializationSpace coordinatesSpace = CurvySerializationSpace.Global) + { + return JsonToSplines(json, coordinatesSpace).Single(); + } + + /// + /// Converts a JSON string to an array of instances of + /// + /// The JSON to deserialize + public static SerializedCurvySpline[] JsonToSerializedSplines([NotNull] string json) + { + if (json == null) + throw new ArgumentNullException(nameof(json)); + if (string.IsNullOrWhiteSpace(json)) + throw new ArgumentException("Value cannot be null or whitespace.", nameof(json)); + if (string.IsNullOrEmpty(json)) + throw new ArgumentException("Value cannot be null or empty.", nameof(json)); + + SerializedCurvySpline[] serializedSplines; + //The following deserializes the JSON text, but instead of doing with a simple and nice one line of code, it is done in a complex way. The reason to that is that JsonUtility doesn't handle default values for JSON fields. + { + //First we deserialize the JSON in the sole goal to know how much elements there are in the arrays + SerializableArray serializableArray = JsonUtility.FromJson>(json); + + //Knowing the number of array elements, we assign a new instance for each element. By creating the new instances ourselves, through the constructor, we have control on the default value of fields + for (int index = 0; index < serializableArray.Array.Length; index++) + { + int controlPointsCount = serializableArray.Array[index].ControlPoints.Length; + + SerializedCurvySpline splineWithCorrectDefaultValue = new SerializedCurvySpline(); + splineWithCorrectDefaultValue.ControlPoints = new SerializedCurvySplineSegment[controlPointsCount]; + for (int controlPointIndex = 0; controlPointIndex < controlPointsCount; controlPointIndex++) splineWithCorrectDefaultValue.ControlPoints[controlPointIndex] = new SerializedCurvySplineSegment(); + + serializableArray.Array[index] = splineWithCorrectDefaultValue; + } + + //Then, through FromJsonOverwrite, we overwrite the fields that are existing in the JSON text + JsonUtility.FromJsonOverwrite(json, serializableArray); + + serializedSplines = serializableArray.Array; + } + + return serializedSplines; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineJsonConverter.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineJsonConverter.cs.meta new file mode 100644 index 00000000..3eaf2677 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineJsonConverter.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: f83deb70d027ab1468a94644e80ac33c +timeCreated: 1517323715 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineSvgConverter.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineSvgConverter.cs new file mode 100644 index 00000000..92b6a471 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineSvgConverter.cs @@ -0,0 +1,162 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using JetBrains.Annotations; +using UnityEngine; +using ToolBuddy.ThirdParty.VectorGraphics; + + +namespace FluffyUnderware.Curvy.ImportExport +{ + /// + /// Converts SVG strings to splines + /// + public static class SplineSvgConverter + { + /// + /// Converts an SVG string to an array of splines + /// + /// The SVG to deserialize + /// How to interpret the coordinates in the SVG: local ones or global ones? + public static CurvySpline[] SvgToSplines(string svg, CurvySerializationSpace coordinatesSpace = CurvySerializationSpace.Global) + { + List serializedSplines = SvgToSerializedSplines(svg); + + CurvySpline[] result = new CurvySpline[serializedSplines.Count]; + + for (int index = 0; index < serializedSplines.Count; index++) + { + SerializedCurvySpline spline = serializedSplines[index]; + CurvySpline deserializedSpline = result[index] = CurvySpline.Create(); + spline.WriteIntoSpline(deserializedSpline, coordinatesSpace); + } + + return result; + } + + /// + /// Converts an SVG string to a spline + /// + /// The SVG to deserialize + /// How to interpret the coordinates in the SVG: local ones or global ones? + public static CurvySpline SvgToSpline(string svg, CurvySerializationSpace coordinatesSpace = CurvySerializationSpace.Global) + { + return SvgToSplines(svg, coordinatesSpace).Single(); + } + + /// + /// Converts an SVG string to an array of instances of + /// + /// The SVG to deserialize + /// Inverts the Y coordinates to match unity's Y axis + public static List SvgToSerializedSplines([NotNull] string svg, bool invertY = true) + { + if (svg == null) + throw new ArgumentNullException(nameof(svg)); + if (string.IsNullOrWhiteSpace(svg)) + throw new ArgumentException("Value cannot be null or whitespace.", nameof(svg)); + if (string.IsNullOrEmpty(svg)) + throw new ArgumentException("Value cannot be null or empty.", nameof(svg)); + + List serializedSplines = new List(); + + using (StringReader stringReader = new StringReader(svg)) + { + SVGParser.SceneInfo sceneInfo = SVGParser.ImportSVG(stringReader); + DrawNode(sceneInfo.Scene.Root, sceneInfo.Scene.Root.Transform, serializedSplines); + } + + if (invertY) + foreach (SerializedCurvySpline spline in serializedSplines) + { + foreach (SerializedCurvySplineSegment controlPoint in spline.ControlPoints) + { + controlPoint.Position.y *= -1; + controlPoint.HandleIn.y *= -1; + controlPoint.HandleOut.y *= -1; + } + } + + return serializedSplines; + } + + private static void DrawNode(SceneNode node, Matrix2D rootTransform, List splines) + { + if (node.Clipper != null) + { + DTLog.LogWarning("[Curvy] SVG Import: A clipper was encountered. Clippers are not supported."); + } + + if (node.Shapes != null) + { + Matrix2D transform = rootTransform * node.Transform; + + foreach (Shape shape in node.Shapes) + { + foreach (BezierContour bezierContour in shape.Contours) + { + BezierPathSegment[] segments = bezierContour.Segments; + List controlPoints = new List(segments.Length); + + if (segments.Length == 0) + continue; + + if (segments.Length == 1) + { + DTLog.LogError("[Curvy] SVG Import: A segments array had only one element. This is unexpected. That contour was ignored. Please raise a bug report."); + continue; + } + + SerializedCurvySpline spline = new SerializedCurvySpline(); + spline.Interpolation = CurvyInterpolation.Bezier; + spline.Closed = bezierContour.Closed; + spline.Name = $"SVG Spline {splines.Count}"; + splines.Add(spline); + + BezierPathSegment firstSegment = segments.First(); + BezierPathSegment lastSegment = segments.Last(); + + SerializedCurvySplineSegment firstCurvySegment = new SerializedCurvySplineSegment(); + firstCurvySegment.Position = transform.MultiplyPoint(firstSegment.P0); + firstCurvySegment.AutoHandles = false; + firstCurvySegment.HandleIn = transform.MultiplyVector(lastSegment.P2 - firstSegment.P0); + firstCurvySegment.HandleOut = transform.MultiplyVector(firstSegment.P1 - firstSegment.P0); + controlPoints.Add(firstCurvySegment); + + + for (int index = 1; index < segments.Length; index++) + { + BezierPathSegment previousSegment = segments[index - 1]; + BezierPathSegment segment = segments[index]; + + SerializedCurvySplineSegment curvySegment = new SerializedCurvySplineSegment(); + curvySegment.Position = transform.MultiplyPoint(segment.P0); + curvySegment.AutoHandles = false; + curvySegment.HandleIn = transform.MultiplyVector(previousSegment.P2 - segment.P0); + curvySegment.HandleOut = transform.MultiplyVector(segment.P1 - segment.P0); + controlPoints.Add(curvySegment); + } + + spline.ControlPoints = controlPoints.ToArray(); + } + } + } + + if (node.Children != null) + foreach (SceneNode childNode in node.Children) + DrawNode(childNode, rootTransform * childNode.Transform, splines); + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineSvgConverter.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineSvgConverter.cs.meta new file mode 100644 index 00000000..874c8dc8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/SplineSvgConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09e1211c9bcae294fb0787f8ba317d21 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/Wrappers.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/Wrappers.cs new file mode 100644 index 00000000..583aa5d4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/Wrappers.cs @@ -0,0 +1,199 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using JetBrains.Annotations; +using UnityEngine; + +namespace FluffyUnderware.Curvy.ImportExport +{ + /// + /// A wrapper to the CurvySpline class + /// + [Serializable] + public class SerializedCurvySpline + { + public string Name; + public Vector3 Position; + public Vector3 Rotation; + public CurvyInterpolation Interpolation; + public bool RestrictTo2D; + public bool Closed; + public bool AutoEndTangents; + public CurvyOrientation Orientation; + public float AutoHandleDistance; + public int CacheDensity; + public float MaxPointsPerUnit; + public bool UsePooling; + public bool UseThreading; + public bool CheckTransform; + public CurvyUpdateMethod UpdateIn; + public bool IsBSplineClamped; + public int BSplineDegree; + public SerializedCurvySplineSegment[] ControlPoints; + + public SerializedCurvySpline() + { + Interpolation = CurvyGlobalManager.DefaultInterpolation; + AutoEndTangents = CurvySplineDefaultValues.AutoEndTangents; + Orientation = CurvySplineDefaultValues.Orientation; + AutoHandleDistance = CurvySplineDefaultValues.AutoHandleDistance; + CacheDensity = CurvySplineDefaultValues.CacheDensity; + MaxPointsPerUnit = CurvySplineDefaultValues.MaxPointsPerUnit; + UsePooling = CurvySplineDefaultValues.UsePooling; + CheckTransform = CurvySplineDefaultValues.CheckTransform; + UpdateIn = CurvySplineDefaultValues.UpdateIn; + BSplineDegree = CurvySplineDefaultValues.BSplineDegree; + IsBSplineClamped = CurvySplineDefaultValues.IsBSplineClamped; + ControlPoints = new SerializedCurvySplineSegment[0]; + + } + + public SerializedCurvySpline([NotNull] CurvySpline spline, CurvySerializationSpace space) + { + Name = spline.name; + Position = (space == CurvySerializationSpace.Local) + ? spline.transform.localPosition + : spline.transform.position; + Rotation = (space == CurvySerializationSpace.Local) + ? spline.transform.localRotation.eulerAngles + : spline.transform.rotation.eulerAngles; + Interpolation = spline.Interpolation; + RestrictTo2D = spline.RestrictTo2D; + Closed = spline.Closed; + AutoEndTangents = spline.AutoEndTangents; + Orientation = spline.Orientation; + AutoHandleDistance = spline.AutoHandleDistance; + CacheDensity = spline.CacheDensity; + MaxPointsPerUnit = spline.MaxPointsPerUnit; + UsePooling = spline.UsePooling; + UseThreading = spline.UseThreading; + CheckTransform = spline.CheckTransform; + UpdateIn = spline.UpdateIn; + BSplineDegree = spline.BSplineDegree; + IsBSplineClamped = spline.IsBSplineClamped; + ControlPoints = new SerializedCurvySplineSegment[spline.ControlPointCount]; + for (int i = 0; i < spline.ControlPointCount; i++) + ControlPoints[i] = new SerializedCurvySplineSegment(spline.ControlPointsList[i], space); + } + + /// + /// Fills an existing spline with data from this instance + /// + /// This method will dirty the spline + public void WriteIntoSpline([NotNull] CurvySpline deserializedSpline, CurvySerializationSpace space) + { + deserializedSpline.name = Name; + if (space == CurvySerializationSpace.Local) + { + deserializedSpline.transform.localPosition = Position; + deserializedSpline.transform.localRotation = Quaternion.Euler(Rotation); + } + else + { + deserializedSpline.transform.position = Position; + deserializedSpline.transform.rotation = Quaternion.Euler(Rotation); + } + deserializedSpline.Interpolation = Interpolation; + deserializedSpline.RestrictTo2D = RestrictTo2D; + deserializedSpline.Closed = Closed; + deserializedSpline.AutoEndTangents = AutoEndTangents; + deserializedSpline.Orientation = Orientation; + deserializedSpline.AutoHandleDistance = AutoHandleDistance; + deserializedSpline.CacheDensity = CacheDensity; + deserializedSpline.MaxPointsPerUnit = MaxPointsPerUnit; + deserializedSpline.UsePooling = UsePooling; + deserializedSpline.UseThreading = UseThreading; + deserializedSpline.CheckTransform = CheckTransform; + deserializedSpline.UpdateIn = UpdateIn; + + foreach (SerializedCurvySplineSegment serializedControlPoint in ControlPoints) + serializedControlPoint.WriteIntoControlPoint(deserializedSpline.InsertAfter(null, true), space); + + //degree is assigned after the control points insertion, because the actual value of the degree depends on the number of control points + deserializedSpline.BSplineDegree = BSplineDegree; + deserializedSpline.IsBSplineClamped = IsBSplineClamped; + + deserializedSpline.SetDirtyAll(); + } + } + + /// + /// Serialized Control Point + /// + [Serializable] + public class SerializedCurvySplineSegment + { + public Vector3 Position; + public Vector3 Rotation; + public bool AutoBakeOrientation; + public bool OrientationAnchor; + public CurvyOrientationSwirl Swirl; + public float SwirlTurns; + public bool AutoHandles; + public bool SynchronizeTCB; + public float AutoHandleDistance; + public Vector3 HandleOut; + public Vector3 HandleIn; + + public SerializedCurvySplineSegment() + { + + Swirl = CurvySplineSegmentDefaultValues.Swirl; + SynchronizeTCB = CurvySplineSegmentDefaultValues.SynchronizeTCB; + AutoHandles = CurvySplineSegmentDefaultValues.AutoHandles; + AutoHandleDistance = CurvySplineSegmentDefaultValues.AutoHandleDistance; + HandleOut = CurvySplineSegmentDefaultValues.HandleOut; + HandleIn = CurvySplineSegmentDefaultValues.HandleIn; + } + + public SerializedCurvySplineSegment([NotNull] CurvySplineSegment segment, CurvySerializationSpace space) + { + Position = (space == CurvySerializationSpace.Global) + ? segment.transform.position + : segment.transform.localPosition; + Rotation = (space == CurvySerializationSpace.Global) + ? segment.transform.rotation.eulerAngles + : segment.transform.localRotation.eulerAngles; + AutoBakeOrientation = segment.AutoBakeOrientation; + OrientationAnchor = segment.SerializedOrientationAnchor; + Swirl = segment.Swirl; + SwirlTurns = segment.SwirlTurns; + AutoHandles = segment.AutoHandles; + SynchronizeTCB = segment.SynchronizeTCB; + AutoHandleDistance = segment.AutoHandleDistance; + HandleOut = segment.HandleOut; + HandleIn = segment.HandleIn; + } + + /// + /// Fills an existing control point with data from this instance. + /// + public void WriteIntoControlPoint([NotNull] CurvySplineSegment controlPoint, CurvySerializationSpace space) + { + if (space == CurvySerializationSpace.Global) + { + controlPoint.transform.position = Position; + controlPoint.transform.rotation = Quaternion.Euler(Rotation); + } + else + { + controlPoint.transform.localPosition = Position; + controlPoint.transform.localRotation = Quaternion.Euler(Rotation); + } + controlPoint.AutoBakeOrientation = AutoBakeOrientation; + controlPoint.SerializedOrientationAnchor = OrientationAnchor; + controlPoint.Swirl = Swirl; + controlPoint.SynchronizeTCB = SynchronizeTCB; + controlPoint.SwirlTurns = SwirlTurns; + controlPoint.AutoHandles = AutoHandles; + controlPoint.AutoHandleDistance = AutoHandleDistance; + controlPoint.SetBezierHandleIn(HandleIn); + controlPoint.SetBezierHandleOut(HandleOut); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/Wrappers.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/Wrappers.cs.meta new file mode 100644 index 00000000..ce15dd3e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/ImportExport/Wrappers.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6cf9b447a28326d47a6e12d03bce0f7c +timeCreated: 1517316455 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc.meta new file mode 100644 index 00000000..1637c574 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b3c1956b97bfdd4998a2b02bda08868 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/BSplineHelper.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/BSplineHelper.cs new file mode 100644 index 00000000..ddfa988c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/BSplineHelper.cs @@ -0,0 +1,158 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System.Runtime.CompilerServices; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools.Extensions; +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Assertions; + +namespace FluffyUnderware.Curvy +{ + /// + /// Static methods used in the implementation of B-Splines + /// + public static class BSplineHelper + { + /// + /// De Boor algorithm for clamped B-Splines. parameter names taken from https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/de-Boor.html. + /// This is a variant of that implementation, explained in the english De Boor's page in Wikipedia + /// + public static Vector3 DeBoorClamped(int p, int k, float u, int nPlus1, [NotNull] Vector3[] pArray) + { + //OPTIM make a per degree non recursive implementation for degree 2 and maybe other lower degrees +#if CURVY_SANITY_CHECKS + Assert.IsTrue(pArray.Length >= p + 1); +#endif + int kMinusP = k - p; + int maxClampedKnotValue = nPlus1 - p;// n + 1 - p is the max knot value + + for (int r = 1; r <= p; r++) + { + int kPlusOneMinusR = k + 1 - r; + + for (int j = p; j >= r; j--) + { + int i1 = j + kMinusP; + int i2 = j + kPlusOneMinusR; + + int u1; + int u2; + /*The following code is equivalent to the commented code underneath, but using the fact that i1 is smaller than i2 + u1 = i1 <= p + ? 0 + : i1 >= nPlus1 // n+1 is m-p + ? maxClampedKnotValue // n - p + 1 is the max knot value + : i1 - p; + u2 = i2 <= p + ? 0 + : i2 >= nPlus1 // n+1 is m-p + ? maxClampedKnotValue // n - p + 1 is the max knot value + : i2 - p; + */ + if (i1 <= p) + { + u1 = 0; + + if (i2 <= p) + u2 = 0; + else + u2 = i2 >= nPlus1 // n+1 is m-p + ? maxClampedKnotValue + : i2 - p; + } + else if (i1 >= nPlus1) + { + u1 = u2 = maxClampedKnotValue; + } + else + { + u1 = i1 - p; + u2 = i2 >= nPlus1 // n+1 is m-p + ? maxClampedKnotValue + : i2 - p; + } + + float a = (u - u1) / (u2 - u1); + //equivalent to psArray[j] = (1 - a) * psArray[j - 1] + a * psArray[j]; + pArray[j] = pArray[j - 1].Multiply(1 - a) + .Addition(pArray[j].Multiply(a)); + } + } + + return pArray[p]; + } + + /// + /// De Boor algorithm for clamped B-Splines. parameter names taken from https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/de-Boor.html. + /// This is a variant of that implementation, explained in the english De Boor's page in Wikipedia + /// + public static Vector3 DeBoorUnclamped(int p, int k, float u, [NotNull] Vector3[] pArray) + { + //OPTIM make a per degree non recursive implementation for degree 2 and maybe other lower degrees + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(pArray.Length >= p + 1); +#endif + int kMinusP = k - p; + + for (int r = 1; r <= p; r++) + { + int kPlusOneMinusR = k + 1 - r; + + for (int j = p; j >= r; j--) + { + float a = (u - (j + kMinusP)) / ((j + kPlusOneMinusR) - (j + kMinusP)); + //equivalent to psArray[j] = (1 - a) * psArray[j - 1] + a * psArray[j]; + pArray[j] = pArray[j - 1].Multiply(1 - a) + .Addition(pArray[j].Multiply(a)); + } + } + + return pArray[p]; + } + + /// + /// Get the N number as defined in the B-Spline section here: https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/ + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int GetBSplineN(int controlPointsCount, int degree, bool closed) + { + return controlPointsCount - 1 + (closed ? degree : 0); + } + + /// + /// Get the the U and K numbers as defined in the B-Spline section, De Boor's algorithm, here: https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/ + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void GetBSplineUAndK(float tf, bool isClamped, int p, int n, out float u, out int k) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(tf.IsBetween0And1()); +#endif + if (isClamped) + { + u = (n - p + 1) * tf; // n - p + 1 is the max knot value + int intU = (int)u; + //case of u equal to 1 + if (intU == n - p + 1) // n - p + 1 is the max knot value + intU--; + k = intU + p; + } + else + { + u = p + (n + 1 - p) * tf;//inlined version of DTMath.MapValue(p, m - p, tf, 0, 1), knowing that n+1 is m-p + int intU = (int)u; + //case of u equal to 1 + if (intU == n + 1) // n+1 is m-p + intU--; + k = intU; + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/BSplineHelper.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/BSplineHelper.cs.meta new file mode 100644 index 00000000..02fc4ea8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/BSplineHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a16162565f8a9c4abf2a7cd62b6f064 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CodeContractsUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CodeContractsUtility.cs new file mode 100644 index 00000000..6a53dbf2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CodeContractsUtility.cs @@ -0,0 +1,307 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +#if CONTRACTS_FULL + +using System; +using System.Diagnostics.Contracts; +using UnityEngine; + +namespace FluffyUnderware.Curvy +{ + public static class CodeContractsUtility + { + [Pure] + public static void AssumeInvariant(T assumptionTarget) + { + } + + [Pure] + public static bool IsPercentage(this float number) + { + return number >= 0 && number <= 100; + } + + [Pure] + public static bool IsPercentage(this int number) + { + return number >= 0 && number <= 100; + } + + [Pure] + public static bool IsValidCollectionIndex(this int number, int collectionSize) + { + return number >= 0 && number < collectionSize; + } + + [Pure] + public static bool IsRatio(this float number) + { + return number >= 0 && number <= 1; + } + + [Pure] + public static bool IsRatioOrNegativeRatio(this float number) + { + return number >= -1 && number <= 1; + } + + /// + /// Returns true if float is neither an infinity nor a NaN + /// + /// + /// + [Pure] + public static bool IsANumber(this float number) + { + return Single.IsNaN(number) == false && number.IsFinite(); + } + + [Pure] + public static bool IsPositiveNumber(this float number) + { + return number >= 0 && number.IsANumber(); + } + + [Pure] + public static bool IsStrictelyPositiveNumber(this float number) + { + return number > 0 && number.IsANumber(); + } + + [Pure] + public static bool IsNegativeNumber(this float number) + { + return number <= 0 && number.IsANumber(); + } + + [Pure] + public static bool IsOdd(this int number) + { + return number % 2 != 0; + } + + [Pure] + public static bool IsEven(this int number) + { + return number % 2 == 0; + } + + + /// + /// Is the given value between 0 and 180 inclusive + /// + /// + /// + [Pure] + public static bool IsIn0To180Range(this float value) + { + return value >= 0 && value <= 180; + } + + /// + /// Is the given value between -180 and 180 inclusive + /// + /// + /// + [Pure] + public static bool IsInMinus180To180Range(this float value) + { + return value >= -180 && value <= 180; + } + + /// + /// Is the given value between 0 and 90 inclusive + /// + /// + /// + [Pure] + public static bool IsIn0To90Range(this float value) + { + return value >= 0 && value <= 90; + } + + /// + /// Is the given value between -90 and 90 inclusive + /// + /// + /// + [Pure] + public static bool IsInMinus90To90Range(this float value) + { + return value >= -90 && value <= 90; + } + + [Pure] + public static bool IsInRangeExclusive(this float value, float rangeLowerBound, float rangeUpperBound) + { + Contract.Requires(rangeLowerBound < rangeUpperBound); + + return value > rangeLowerBound && value < rangeUpperBound; + } + + [Pure] + public static bool IsInRangeInclusive(this float value, float rangeLowerBound, float rangeUpperBound) + { + Contract.Requires(rangeLowerBound < rangeUpperBound); + + return value >= rangeLowerBound && value <= rangeUpperBound; + } + + [Pure] + public static bool IsNan(this float number) + { + return Single.IsNaN(number); + } + + [Pure] + public static bool IsNormalized(this Vector3 vector) + { + return Approximately(vector.magnitude, 1f); + } + + [Pure] + public static bool IsNormalized(this Quaternion q) + { + return Approximately( + (float)Math.Sqrt(q.w * q.w + q.x * q.x + q.y * q.y + q.z * q.z) + , 1f); + } + + [Pure] + public static bool ContainsNan(this Vector3 vector) + { + return float.IsNaN(vector.x) || float.IsNaN(vector.y) || float.IsNaN(vector.z); + } + + [Pure] + public static bool ContainsInfinity(this Vector3 vector) + { + return float.IsInfinity(vector.x) || float.IsInfinity(vector.y) || float.IsInfinity(vector.z); + + } + [Pure] + public static float PureDot(this Vector3 vector1, Vector3 vector2) + { + return Vector3.Dot(vector1, vector2); + } + + [Pure] + public static Vector3 PureCross(this Vector3 vector1, Vector3 vector2) + { + return Vector3.Cross(vector1, vector2); + } + + [Pure] + public static bool PureIsChildOf(this Transform child, Transform parent) + { + return child.IsChildOf(parent); + } + + [Pure] + public static bool Approximately(this float a, float b) + { + return Mathf.Approximately(a, b); + } + + [Pure] + public static bool WithinMargin(this float a, float b, float margin) + { + return Mathf.Abs(b - a) <= margin; + } + + [Pure] + public static bool Approximately(this Vector3 a, Vector3 b) + { + return a.x.Approximately(b.x) + && a.y.Approximately(b.y) + && a.z.Approximately(b.z); + } + + [Pure] + public static bool IsWithinDistance(this Vector3 a, Vector3 b, float maxAllowedDistance) + { + Contract.Requires(maxAllowedDistance.IsPositiveNumber()); + return (a - b).magnitude <= maxAllowedDistance; + } + + //[Pure] + //public static bool IsWithinAngle(this Quaternion a, Quaternion b, float maxAllowedAngle) + //{ + // Contract.Requires(maxAllowedAngle.IsPositiveNumber()); + + // return a.Angle(b) <= maxAllowedAngle; + //} + + + [Pure] + public static bool IsFinite(this float number) + { + Contract.Requires(IsNan(number) == false); + + return float.IsInfinity(number) == false; + } + + [Pure] + public static bool IsInfinite(this float number) + { + return !IsFinite(number); + } + + [Pure] + public static bool IsNotZero(this float number) + { + return number.Approximately(0f) == false; + } + + [Pure] + public static int MaskNameToLayer(string layerName) + { + return LayerMask.NameToLayer(layerName); + } + + [Pure] + public static bool AreBarycentricCoordinatesOfPointInTriangle(this Vector3 barycentricCoordinates) + { + return + barycentricCoordinates.x >= 0 && + barycentricCoordinates.y >= 0 && + barycentricCoordinates.z >= 0 && + 1f.Approximately(barycentricCoordinates.x + barycentricCoordinates.y + barycentricCoordinates.z); + } + + [Pure] + static public float PureMin(float a, float b) + { + Contract.Ensures(Contract.Result() <= a); + Contract.Ensures(Contract.Result() <= b); + return Mathf.Min(a, b); + } + + [Pure] + static public float PureMax(float a, float b) + { + Contract.Ensures(Contract.Result() >= a); + Contract.Ensures(Contract.Result() >= b); + return Mathf.Max(a, b); + } + + [Pure] + static public T PureGetComponent(this GameObject gameObject) + { + return gameObject.GetComponent(); + } + + [Pure] + static public Component PureGetComponent(this GameObject gameObject, string componentName) + { + return gameObject.GetComponent(componentName); + } + } +} + +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CodeContractsUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CodeContractsUtility.cs.meta new file mode 100644 index 00000000..baf18fbb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CodeContractsUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: e1897b667b05641448d9cb45004d9bbf +timeCreated: 1518901676 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyClasses.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyClasses.cs new file mode 100644 index 00000000..e4e8899e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyClasses.cs @@ -0,0 +1,255 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; + +namespace FluffyUnderware.Curvy +{ + /// + /// Orientation options + /// + public enum OrientationModeEnum + { + /// + /// No Orientation. The initial orientation of the controller is kept. + /// + None, + /// + /// Use Orientation/Up-Vector + /// + Orientation, + /// + /// Use Direction/Tangent + /// + Tangent + } + + /// + /// Orientation axis to use + /// + public enum OrientationAxisEnum + { + Up, + Down, + Forward, + Backward, + Left, + Right + } + + /// + /// Used by components to determine when updates should occur + /// + public enum CurvyUpdateMethod + { + Update, + LateUpdate, + FixedUpdate + } + + public enum CurvyRepeatingOrderEnum + { + Random = 0, + Row = 1 + } + + /// + /// Plane definition + /// + public enum CurvyPlane + { + /// + /// X/Y Plane (Z==0) + /// + XY, + /// + /// X/U Plane (Y==0) + /// + XZ, + /// + /// Y/Z Plane (X==) + /// + YZ + } + + /// + /// Position Mode + /// + public enum CurvyPositionMode + { + /// + /// Valid positions are from 0 (Start) to 1 (End) + /// + Relative = 0, + /// + /// Valid positions are from 0 (Start) to Length (End). Also know as Absolute. + /// + WorldUnits = 1, + } + + /// + /// Bezier Handles editing modes + /// + [Flags] + public enum CurvyBezierModeEnum + { + /// + /// Don't sync + /// + None = 0, + /// + /// Sync Direction + /// + Direction = 1, + /// + /// Sync Length + /// + Length = 2, + /// + /// Sync connected Control Points + /// + Connections = 4, + /// + /// Combine both Handles of a segment + /// + Combine = 8 + } + + /// + /// Bezier Handles editing modes for AdvSplines + /// + public enum CurvyAdvBezierModeEnum + { + /// + /// Don't sync + /// + None = 0, + /// + /// Sync Direction + /// + Direction = 1, + /// + /// Sync Length + /// + Length = 2, + /// + /// Combine both Handles of a segment + /// + Combine = 8 + } + + /// + /// Determines the interpolation method + /// + public enum CurvyInterpolation + { + /// + /// Linear interpolation + /// + Linear = 0, + /// + /// Catmul-Rom splines + /// + CatmullRom = 1, + /// + /// Kochanek-Bartels (TCB)-Splines + /// + TCB = 2, + /// + /// Cubic Bezier-Splines + /// + Bezier = 3, + /// + /// B-Splines + /// + BSpline = 4 + } + + /// + /// Determines the clamping method used by Move-methods + /// + public enum CurvyClamping + { + /// + /// Stop at splines ends + /// + Clamp = 0, + /// + /// Start over + /// + Loop = 1, + /// + /// Switch direction + /// + PingPong = 2 + } + + /// + /// Determines Orientation mode + /// + public enum CurvyOrientation + { + /// + /// Ignore rotation + /// + None = 0, + /// + /// Use the splines' tangent and up vectors to create a look rotation + /// + Dynamic = 1, + /// + /// Interpolate between the Control Point's rotation + /// + Static = 2, + } + + /// + /// Swirl mode + /// + public enum CurvyOrientationSwirl + { + /// + /// No Swirl + /// + None = 0, + /// + /// Swirl over each segment of anchor group + /// + Segment = 1, + /// + /// Swirl equal over current anchor group's segments + /// + AnchorGroup = 2, + /// + /// Swirl equal over anchor group's length + /// + AnchorGroupAbs = 3 + } + + + + /// + /// Sceneview viewing modes + /// + [Flags] + public enum CurvySplineGizmos : int + { + None = 0, + Connections = 1, + Curve = 1 << 1, + Approximation = 1 << 2, + Tangents = 1 << 3, + Orientation = 1 << 4, + Labels = 1 << 5, + Metadata = 1 << 6, + Bounds = 1 << 7, + TFs = 1 << 8, + RelativeDistances = 1 << 9, + OrientationAnchors = 1 << 10, + All = 65535 + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyClasses.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyClasses.cs.meta new file mode 100644 index 00000000..c0095e90 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyClasses.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67f3b369fc26aae43aa3d1cbb9b64d3f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyEvents.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyEvents.cs new file mode 100644 index 00000000..5ac21372 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyEvents.cs @@ -0,0 +1,38 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using UnityEngine.Assertions; + +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +namespace FluffyUnderware.Curvy +{ + public class CurvyEventArgs : EventArgs + { + /// + /// The component raising the event + /// + public readonly MonoBehaviour Sender; + /// + /// Custom data + /// + public readonly object Data; + + public CurvyEventArgs(MonoBehaviour sender, object data) + { + Sender = sender; + Data = data; + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(System.Object.ReferenceEquals(null, Sender) == false); +#endif + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyEvents.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyEvents.cs.meta new file mode 100644 index 00000000..f2fd034e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyEvents.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd4480447eb35824e9fe7f9dd8256ddf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyUtility.cs new file mode 100644 index 00000000..3478fc06 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyUtility.cs @@ -0,0 +1,909 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using System; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using FluffyUnderware.Curvy.Generator; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Pools; +using FluffyUnderware.Curvy.ThirdParty.LibTessDotNet; +#if UNITY_EDITOR +using UnityEditor; +#endif +using FluffyUnderware.DevTools; +using ToolBuddy.Pooling; +using ToolBuddy.Pooling.Collections; + + +namespace FluffyUnderware.Curvy.Utils +{ + + /// + /// A workaround to the Unity Json's class not being able to serialize top level arrays. + /// Including such arrays in another object avoids the issue. + /// + /// + public class SerializableArray + { + public T[] Array; + } + + /// + /// Taken from my asset Frame Rate Booster + /// https://assetstore.unity.com/packages/tools/utilities/frame-rate-booster-120660 + /// + public static class OptimizedOperators + { + public static Vector3 Addition(this Vector3 a, Vector3 b) + { + a.x += b.x; + a.y += b.y; + a.z += b.z; + return a; + } + + public static Vector3 UnaryNegation(this Vector3 a) + { + Vector3 result; + result.x = -a.x; + result.y = -a.y; + result.z = -a.z; + return result; + } + + public static Vector3 Subtraction(this Vector3 a, Vector3 b) + { + a.x -= b.x; + a.y -= b.y; + a.z -= b.z; + return a; + + } + + public static Vector3 Multiply(this Vector3 a, float d) + { + a.x *= d; + a.y *= d; + a.z *= d; + return a; + } + + public static Vector3 Multiply(this float d, Vector3 a) + { + a.x *= d; + a.y *= d; + a.z *= d; + return a; + } + + public static Vector3 Division(this Vector3 a, float d) + { + float inversed = 1 / d; + a.x *= inversed; + a.y *= inversed; + a.z *= inversed; + return a; + } + + public static Vector3 Normalize(this Vector3 value) + { + Vector3 result; + float num = (float)Math.Sqrt(value.x * (double)value.x + value.y * (double)value.y + value.z * (double)value.z); + if (num > 9.99999974737875E-06) + { + float inversed = 1 / num; + result.x = value.x * inversed; + result.y = value.y * inversed; + result.z = value.z * inversed; + } + else + { + result.x = 0; + result.y = 0; + result.z = 0; + } + return result; + } + + public static Vector3 LerpUnclamped(this Vector3 a, Vector3 b, float t) + { + a.x += (b.x - a.x) * t; + a.y += (b.y - a.y) * t; + a.z += (b.z - a.z) * t; + return a; + } + + static public Color Multiply(this Color a, float b) + { + a.r *= b; + a.g *= b; + a.b *= b; + a.a *= b; + return a; + } + + static public Color Multiply(this float b, Color a) + { + a.r *= b; + a.g *= b; + a.b *= b; + a.a *= b; + return a; + } + + public static Quaternion Multiply(this Quaternion lhs, Quaternion rhs) + { + Quaternion result; + result.x = (lhs.w * rhs.x + lhs.x * rhs.w + lhs.y * rhs.z - lhs.z * rhs.y); + result.y = (lhs.w * rhs.y + lhs.y * rhs.w + lhs.z * rhs.x - lhs.x * rhs.z); + result.z = (lhs.w * rhs.z + lhs.z * rhs.w + lhs.x * rhs.y - lhs.y * rhs.x); + result.w = (lhs.w * rhs.w - lhs.x * rhs.x - lhs.y * rhs.y - lhs.z * rhs.z); + return result; + } + } + + + /// + /// Curvy Utility class + /// + public static class CurvyUtility + { + #region ### Clamping Methods ### + + /// + /// Clamps relative position + /// + public static float ClampTF(float tf, CurvyClamping clamping) + { + switch (clamping) + { + case CurvyClamping.Loop: + return Mathf.Repeat(tf, 1); + case CurvyClamping.PingPong: + return Mathf.PingPong(tf, 1); + case CurvyClamping.Clamp: + return Mathf.Clamp01(tf); + default: + throw new InvalidEnumArgumentException(); + } + } + + + /// + /// Clamps relative position and sets new direction + /// + public static float ClampTF(float tf, ref int dir, CurvyClamping clamping) + { + switch (clamping) + { + case CurvyClamping.Loop: + return Mathf.Repeat(tf, 1); + case CurvyClamping.PingPong: + if (Mathf.FloorToInt(tf) % 2 != 0) + dir *= -1; + return Mathf.PingPong(tf, 1); + case CurvyClamping.Clamp: + return Mathf.Clamp01(tf); + default: + throw new InvalidEnumArgumentException(); + } + } + + /// + /// Clamps a float to a range + /// + public static float ClampValue(float tf, CurvyClamping clamping, float minTF, float maxTF) + { + + switch (clamping) + { + case CurvyClamping.Loop: + float v1 = DTMath.MapValue(0, 1, tf, minTF, maxTF); + return DTMath.MapValue(minTF, maxTF, Mathf.Repeat(v1, 1), 0, 1); + case CurvyClamping.PingPong: + float v2 = DTMath.MapValue(0, 1, tf, minTF, maxTF); + return DTMath.MapValue(minTF, maxTF, Mathf.PingPong(v2, 1), 0, 1); + case CurvyClamping.Clamp: + return Mathf.Clamp(tf, minTF, maxTF); + default: + throw new InvalidEnumArgumentException(); + } + } + + /// + /// Clamps absolute position + /// + public static float ClampDistance(float distance, CurvyClamping clamping, float length) + { + if (length == 0) + return 0; + switch (clamping) + { + case CurvyClamping.Loop: + return Mathf.Repeat(distance, length); + case CurvyClamping.PingPong: + return Mathf.PingPong(distance, length); + case CurvyClamping.Clamp: + return Mathf.Clamp(distance, 0, length); + default: + throw new InvalidEnumArgumentException(); + } + } + + /// + /// Clamps absolute position + /// + public static float ClampDistance(float distance, CurvyClamping clamping, float length, float min, float max) + { + if (length == 0) + return 0; + min = Mathf.Clamp(min, 0, length); + max = Mathf.Clamp(max, min, length); + switch (clamping) + { + case CurvyClamping.Loop: + return min + Mathf.Repeat(distance, max - min); + case CurvyClamping.PingPong: + return min + Mathf.PingPong(distance, max - min); + case CurvyClamping.Clamp: + return Mathf.Clamp(distance, min, max); + default: + throw new InvalidEnumArgumentException(); + } + } + + /// + /// Clamps absolute position and sets new direction + /// + public static float ClampDistance(float distance, ref int dir, CurvyClamping clamping, float length) + { + if (length == 0) + return 0; + switch (clamping) + { + case CurvyClamping.Loop: + return Mathf.Repeat(distance, length); + case CurvyClamping.PingPong: + if (Mathf.FloorToInt(distance / length) % 2 != 0) + dir *= -1; + return Mathf.PingPong(distance, length); + case CurvyClamping.Clamp: + return Mathf.Clamp(distance, 0, length); + default: + throw new InvalidEnumArgumentException(); + } + } + + /// + /// Clamps absolute position and sets new direction + /// + public static float ClampDistance(float distance, ref int dir, CurvyClamping clamping, float length, float min, float max) + { + if (length == 0) + return 0; + min = Mathf.Clamp(min, 0, length); + max = Mathf.Clamp(max, min, length); + switch (clamping) + { + case CurvyClamping.Loop: + return min + Mathf.Repeat(distance, max - min); + case CurvyClamping.PingPong: + if (Mathf.FloorToInt(distance / (max - min)) % 2 != 0) + dir *= -1; + return min + Mathf.PingPong(distance, max - min); + case CurvyClamping.Clamp: + return Mathf.Clamp(distance, min, max); + default: + throw new InvalidEnumArgumentException(); + } + } + + #endregion + + /// + /// Gets the default material, i.e. Curvy/Resources/CurvyDefaultMaterial + /// + public static Material GetDefaultMaterial() + { + Material mat = Resources.Load("CurvyDefaultMaterial") as Material; + if (mat == null) + { + mat = new Material(Shader.Find("Standard")); + } + return mat; + } + + + /// + /// Does the same things as Mathf.Approximately, but with different handling of case where one of the two values is 0 + /// Considering inputs of 0 and 1E-7, Mathf.Approximately will return false, while this method will return true. + /// + public static bool Approximately(this float x, float y) + { + bool result; + const float zeroComparisionMargin = 0.000009f; + + float nearlyZero = Mathf.Epsilon * 8f; + + float absX = Math.Abs(x); + float absY = Math.Abs(y); + + if (absY < nearlyZero) + result = absX < zeroComparisionMargin; + else if (absX < nearlyZero) + result = absY < zeroComparisionMargin; + else + result = Mathf.Approximately(x, y); + return result; + } + + /// + /// Finds the index of x in an array of sorted values (ascendant order). If x not found, the closest smaller value's index is returned if any, -1 otherwise + /// + /// The array to search into + /// The element to search for + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static int InterpolationSearch(float[] array, float x) + { + return InterpolationSearch(array, array.Length, x); + } + + /// + /// Finds the index of x in an array of sorted values (ascendant order). If x not found, the closest smaller value's index is returned if any, -1 otherwise + /// + /// The array to search into + /// The number of elements of the array to search into + /// The element to search for + public static int InterpolationSearch(float[] array, int elementsCount, float x) + { + int low = 0, high = (elementsCount - 1); + + while (low <= high && array[low] <= x && x <= array[high]) + { + if (low == high) + { + if (array[low] == x) + return low; + break; + } + int index = low + (int)((((high - low) / (array[high] - array[low])) * (x - array[low]))); + if (array[index] == x) + return index; + if (array[index] < x) + low = index + 1; + else + high = index - 1; + } + + if (low > high) + { + int temp = high; + high = low; + low = temp; + } + + if (x <= array[low]) + { + while (low >= 0) + { + if (array[low] <= x) + return low; + low--; + } + + return 0; + } + + if (array[high] < x) + { + while (high < elementsCount) + { + if (x < array[high]) + return high - 1; + high++; + } + + return elementsCount - 1; + } + + return -1; + } + + /// + /// Returns a mesh which boundaries are the input spline, similarly to what the Spline To Mesh window does, but simpler and less configurable. + /// + public static Mesh SplineToMesh(this CurvySpline spline) + { + Mesh result; + + Spline2Mesh splineToMesh = new Spline2Mesh(); + splineToMesh.Lines.Add(new SplinePolyLine(spline)); + splineToMesh.Apply(out result); + + if (String.IsNullOrEmpty(splineToMesh.Error) == false) + Debug.Log(splineToMesh.Error); + + return result; + } + + + /// + /// Given an input point, gets the index of the point in the array that is closest to the input point. + /// + /// the input point + /// A list of points to test against + /// The number of points to test against + /// the index of the closest point + /// a value between 0 and 1 indicating how close the input point is close to the point of index: index + 1 + public static void GetNearestPointIndex(Vector3 point, Vector3[] points, int pointsCount, out int index, out float fragement) + { + float nearestSquaredDistance = float.MaxValue; + int nearestIndex = 0; + // get the nearest index + for (int i = 0; i < pointsCount; i++) + { + Vector3 delta; + delta.x = points[i].x - point.x; + delta.y = points[i].y - point.y; + delta.z = points[i].z - point.z; + float squaredDistance = (delta.x * delta.x + delta.y * delta.y + delta.z * delta.z); + if (squaredDistance <= nearestSquaredDistance) + { + nearestSquaredDistance = squaredDistance; + nearestIndex = i; + } + } + + // collide p against the lines build by the index + int leftIdx = (nearestIndex > 0) ? nearestIndex - 1 : -1; + int rightIdx = (nearestIndex < pointsCount - 1) ? nearestIndex + 1 : -1; + + float leftFrag = 0; + float rightFrag = 0; + float leftSquaredDistance = float.MaxValue; + float rightSquareDistance = float.MaxValue; + { + if (leftIdx > -1) + leftSquaredDistance = DTMath.LinePointDistanceSqr(points[leftIdx], points[nearestIndex], point, out leftFrag); + if (rightIdx > -1) + rightSquareDistance = DTMath.LinePointDistanceSqr(points[nearestIndex], points[rightIdx], point, out rightFrag); + } + + if (leftSquaredDistance < rightSquareDistance) + { + fragement = leftFrag; + index = leftIdx; + } + else + { + fragement = rightFrag; + index = nearestIndex; + } + } + } + + #region ### Spline2Mesh ### + + /// + /// Class to create a Mesh from a set of splines + /// + public class Spline2Mesh + { + #region ### Public Fields & Properties ### + /// + /// A list of splines (X/Y only) forming the resulting mesh + /// + public List Lines = new List(); + /// + /// Winding rule used by triangulator + /// + public WindingRule Winding = WindingRule.EvenOdd; + public Vector2 UVTiling = Vector2.one; + public Vector2 UVOffset = Vector2.zero; + public bool SuppressUVMapping; + /// + /// Whether UV2 should be set + /// + public bool UV2; + /// + /// Name of the returned mesh + /// + public string MeshName = string.Empty; + /// + /// Whether only vertices of the outline spline should be created + /// + public bool VertexLineOnly; + + public string Error { get; private set; } + + #endregion + + #region ### Private Fields ### + + private Tess mTess; + private Mesh mMesh; + + #endregion + + #region ### Public Methods ### + + /// + /// Create the Mesh using the current settings + /// + /// the resulting Mesh + /// true on success. If false, check the Error property! + public bool Apply(out Mesh result) + { + ArrayPool pool = ArrayPoolsProvider.GetPool(); + + mTess = null; + mMesh = null; + Error = string.Empty; + bool triangulationSucceeded = triangulate(); + if (triangulationSucceeded) + { + mMesh = new Mesh(); + mMesh.name = MeshName; + + if (VertexLineOnly && Lines.Count > 0 && Lines[0] != null) + { + SubArray vertices = Lines[0].GetVertexList(); + mMesh.SetVertices(vertices.Array, 0, vertices.Count); + pool.Free(vertices); + } + else + { + ContourVertex[] vertices = mTess.Vertices; + SubArray vector3s = pool.Allocate(vertices.Length); + UnityLibTessUtility.FromContourVertex(vertices, vector3s); + mMesh.SetVertices(vector3s.Array, 0, vector3s.Count); + mMesh.SetTriangles(mTess.ElementsArray.Value.Array, 0, mTess.ElementsArray.Value.Count, 0); + pool.Free(vector3s); + } + + mMesh.RecalculateBounds(); + mMesh.RecalculateNormals(); + if (!SuppressUVMapping && !VertexLineOnly) + { + Vector3 boundsSize = mMesh.bounds.size; + Vector3 boundsMin = mMesh.bounds.min; + + float minSize = Mathf.Min(boundsSize.x, Mathf.Min(boundsSize.y, boundsSize.z)); + + bool minSizeIsX = minSize == boundsSize.x; + bool minSizeIsY = minSize == boundsSize.y; + bool minSizeIsZ = minSize == boundsSize.z; + + Vector3[] vertices = mMesh.vertices; + int vertexCount = vertices.Length; + + //set uv and uv2 + SubArray uv; + SubArray uv2; + { + uv = ArrayPools.Vector2.Allocate(vertexCount); + Vector2[] uvArray = uv.Array; + + uv2 = ArrayPools.Vector2.Allocate(UV2 ? vertexCount : 0); + Vector2[] uv2Array = uv2.Array; + + for (int i = 0; i < vertexCount; i++) + { + float u; + float v; + Vector3 vertex = vertices[i]; + + if (minSizeIsX) + { + u = (vertex.y - boundsMin.y) / boundsSize.y; + v = (vertex.z - boundsMin.z) / boundsSize.z; + } + else if (minSizeIsY) + { + u = (vertex.z - boundsMin.z) / boundsSize.z; + v = (vertex.x - boundsMin.x) / boundsSize.x; + } + else if (minSizeIsZ) + { + u = (vertex.x - boundsMin.x) / boundsSize.x; + v = (vertex.y - boundsMin.y) / boundsSize.y; + } + else + throw new InvalidOperationException("Couldn't find the minimal bound dimension"); + + if (UV2) + { + uv2Array[i].x = u; + uv2Array[i].y = v; + } + + u += UVOffset.x; + v += UVOffset.y; + + u *= UVTiling.x; + v *= UVTiling.y; + uvArray[i].x = u; + uvArray[i].y = v; + } + mMesh.SetUVs(0, uv.Array, 0, uv.Count); + mMesh.SetUVs(1, uv2.Array, 0, uv2.Count); + } + + ArrayPools.Vector2.Free(uv); + ArrayPools.Vector2.Free(uv2); + ArrayPools.Vector3.Free(vertices); + } + } + result = mMesh; + return triangulationSucceeded; + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATE */ + + private bool triangulate() + { + if (Lines.Count == 0) + { + Error = "Missing splines to triangulate"; + return false; + } + + if (VertexLineOnly) + return true; + + mTess = new Tess(); + + for (int i = 0; i < Lines.Count; i++) + { + if (Lines[i].Spline == null) + { + Error = "Missing Spline"; + return false; + } + if (!polyLineIsValid(Lines[i])) + { + Error = Lines[i].Spline.name + ": Angle must be >0"; + return false; + } + SubArray vertices = Lines[i].GetVertexList(); + if (vertices.Count < 3) + { + Error = Lines[i].Spline.name + ": At least 3 Vertices needed!"; + return false; + } + mTess.AddContour(UnityLibTessUtility.ToContourVertex(vertices, false), Lines[i].Orientation); + ArrayPoolsProvider.GetPool().Free(vertices); + } + try + { + mTess.Tessellate(Winding, ElementType.Polygons, 3); + return true; + } + catch (System.Exception e) + { + Error = e.Message; + } + + return false; + } + + private static bool polyLineIsValid(SplinePolyLine pl) + { + return (pl != null && pl.VertexMode == SplinePolyLine.VertexCalculation.ByApproximation || + !Mathf.Approximately(0, pl.Angle)); + } + + /*! \endcond */ + #endregion + } + + /// + /// Spline Triangulation Helper Class + /// + [System.Serializable] + public class SplinePolyLine + { + /// + /// How to calculate vertices + /// + public enum VertexCalculation + { + /// + /// Use Approximation points + /// + ByApproximation, + /// + /// By curvation angle + /// + ByAngle + } + + /// + /// Orientation order + /// + public ContourOrientation Orientation = ContourOrientation.Original; + + /// + /// Base Spline + /// + public CurvySpline Spline; + /// + /// Vertex Calculation Mode + /// + public VertexCalculation VertexMode; + /// + /// Angle, used by VertexMode.ByAngle only + /// + public float Angle; + /// + /// Minimum distance, used by VertexMode.ByAngle only + /// + public float Distance; + public Space Space; + + /// + /// Creates a Spline2MeshCurve class using Spline2MeshCurve.VertexMode.ByApproximation + /// + public SplinePolyLine(CurvySpline spline) : this(spline, VertexCalculation.ByApproximation, 0, 0) { } + /// + /// Creates a Spline2MeshCurve class using Spline2MeshCurve.VertexMode.ByAngle + /// + public SplinePolyLine(CurvySpline spline, float angle, float distance) : this(spline, VertexCalculation.ByAngle, angle, distance) { } + + private SplinePolyLine(CurvySpline spline, VertexCalculation vertexMode, float angle, float distance, Space space = Space.World) + { + Spline = spline; + VertexMode = vertexMode; + Angle = angle; + Distance = distance; + Space = space; + } + /// + /// Gets whether the spline is closed + /// + public bool IsClosed + { + get + { + return (Spline && Spline.Closed); + } + } + + /// + /// Get vertices calculated using the current VertexMode + /// + /// an array of vertices + [Obsolete("No more used in Curvy. Will get removed. Copy it if you still need it")] + public Vector3[] GetVertices() + { + SubArray vertexList = GetVertexList(); + Vector3[] result = vertexList.CopyToArray(ArrayPools.Vector3); + ArrayPools.Vector3.Free(vertexList); + return result; + } + + /// + /// Get vertices calculated using the current VertexMode + /// + /// an array of vertices + public SubArray GetVertexList() + { + SubArray points; + switch (VertexMode) + { + case VertexCalculation.ByAngle: + points = GetPolygon(Spline, 0, 1, Angle, Distance, -1, false).ToSubArray(); + break; + default: + points = Spline.GetPositionsCache(Space.Self); + break; + } + + if (Space == Space.World) + { + Vector3[] pointsArray = points.Array; + int pointsCount = points.Count; + for (int i = 0; i < pointsCount; i++) + pointsArray[i] = Spline.transform.TransformPoint(pointsArray[i]); + } + + return points; + } + + /// + /// Gets an array of sampled points that follow some restrictions on the distance between two consecutive points, and the angle of tangents between those points + /// + /// start TF + /// end TF + /// maximum angle in degrees between tangents + /// minimum distance between two points + /// maximum distance between two points + /// Stores the TF of the resulting points + /// Stores the Tangents of the resulting points + /// Whether the end position should be included + /// the stepsize to use + /// an array of interpolated positions + private static SubArrayList GetPolygon(CurvySpline spline, float fromTF, float toTF, float maxAngle, float minDistance, float maxDistance, bool includeEndPoint = true, float stepSize = 0.01f) + { + stepSize = Mathf.Clamp(stepSize, 0.002f, 1); + maxDistance = (maxDistance == -1) ? spline.Length : Mathf.Clamp(maxDistance, 0, spline.Length); + minDistance = Mathf.Clamp(minDistance, 0, maxDistance); + if (!spline.Closed) + { + toTF = Mathf.Clamp01(toTF); + fromTF = Mathf.Clamp(fromTF, 0, toTF); + } + SubArrayList vPos = new SubArrayList(50, ArrayPools.Vector3); + + int linearSteps = 0; + float angleFromLast = 0; + float distAccu = 0; + Vector3 curPos = spline.Interpolate(fromTF); + Vector3 curTangent = spline.GetTangent(fromTF); + Vector3 lastPos = curPos; + Vector3 lastTangent = curTangent; + + Action addPoint = ((position) => + { + vPos.Add(position); + angleFromLast = 0; + distAccu = 0; + + linearSteps = 0; + }); + + addPoint(curPos); + + float tf = fromTF + stepSize; + while (tf < toTF) + { + // Get Point Pos & Tangent + spline.InterpolateAndGetTangent(tf % 1, out curPos, out curTangent); + if (curTangent == Vector3.zero) + { + Debug.Log("zero Tangent! Oh no!"); + } + distAccu += (curPos - lastPos).magnitude; + if (curTangent == lastTangent) + linearSteps++; + if (distAccu >= minDistance) + { + // Exceeding distance? + if (distAccu >= maxDistance) + addPoint(curPos); + else // Check angle + { + angleFromLast += Vector3.Angle(lastTangent, curTangent); + // Max angle reached or entering/leaving a linear zone + if (angleFromLast >= maxAngle || (linearSteps > 0 && angleFromLast > 0)) + addPoint(curPos); + } + } + tf += stepSize; + lastPos = curPos; + lastTangent = curTangent; + } + if (includeEndPoint) + { + curPos = spline.Interpolate(toTF % 1); + vPos.Add(curPos); + } + + return vPos; + } + } + #endregion +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyUtility.cs.meta new file mode 100644 index 00000000..7b0e2a85 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Misc/CurvyUtility.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d6ea997949c6e245aa4edc8a8e04b66 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components.meta new file mode 100644 index 00000000..b049e1fb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: af6bcb626ab6b2a45a67c76128aeaf7b +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base.meta new file mode 100644 index 00000000..b163d9eb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 097536abd8cdd004ab270a33c593ac50 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base/SplineProcessor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base/SplineProcessor.cs new file mode 100644 index 00000000..d85472bf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base/SplineProcessor.cs @@ -0,0 +1,120 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using FluffyUnderware.DevTools; +using UnityEngine; + +namespace FluffyUnderware.Curvy +{ + /// + /// Base class for components that process a spline to produce something else, a line renderer or an edge collider for example + /// + [ExecuteAlways] + public abstract class SplineProcessor : DTVersionedMonoBehaviour + { + public CurvySpline Spline + { + get { return m_Spline; } + set + { + if (m_Spline != value) + { + UnbindEvents(); + m_Spline = value; + BindEvents(); + Refresh(); + } + } + } + + /// + /// Method that processes the associated + /// + abstract public void Refresh(); + + #region private + + /*! \cond PRIVATE */ + + [SerializeField] protected CurvySpline m_Spline; + + /*! \endcond */ + + private void OnSplineRefresh(CurvySplineEventArgs e) + { + Refresh(); + } + + private void OnSplineCoordinatesChanged(CurvySpline spline) + { + Refresh(); + } + + #endregion + + #region protected + + #region Unity callbacks + + protected virtual void Awake() + { + if (m_Spline == null) + { + m_Spline = GetComponent(); + if (ReferenceEquals(m_Spline, null) == false) + DTLog.Log(String.Format("[Curvy] Spline '{0}' was assigned to the {1} by default.", this.name, this.GetType().Name)); + } + } + + protected virtual void OnEnable() + { + BindEvents(); + } + + protected virtual void OnDisable() + { + UnbindEvents(); + } + +#if UNITY_EDITOR + protected virtual void OnValidate() + { + UnbindEvents(); + BindEvents(); + + Refresh(); + } +#endif + protected virtual void Start() + { + Refresh(); + } + + #endregion + + protected void BindEvents() + { + if (Spline) + { + Spline.OnRefresh.AddListenerOnce(OnSplineRefresh); + Spline.OnGlobalCoordinatesChanged += OnSplineCoordinatesChanged; + } + } + + protected void UnbindEvents() + { + if (Spline) + { + Spline.OnRefresh.RemoveListener(OnSplineRefresh); + Spline.OnGlobalCoordinatesChanged -= OnSplineCoordinatesChanged; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base/SplineProcessor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base/SplineProcessor.cs.meta new file mode 100644 index 00000000..9c942a54 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/Base/SplineProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ad2b5fc1f2381b4eb677973a985c772 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGLRenderer.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGLRenderer.cs new file mode 100644 index 00000000..8e25d22f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGLRenderer.cs @@ -0,0 +1,173 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.DevTools; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Pools; +using ToolBuddy.Pooling.Collections; +using ToolBuddy.Pooling.Pools; +// ===================================================================== +// Copyright 2013-2014 FluffyUnderware +// All rights reserved +// ===================================================================== +using UnityEngine; +/* Renders curvy spline(s) approximation using GL.Draw + * + * Add this script to a camera + */ + +namespace FluffyUnderware.Curvy.Components +{ + + /// + /// Class to render a spline using GL.Draw + /// + /// Useful for debugging + [HelpURL(CurvySpline.DOCLINK + "curvyglrenderer")] + [AddComponentMenu("Curvy/Misc/Curvy GL Renderer")] + public class CurvyGLRenderer : DTVersionedMonoBehaviour + { + [ArrayEx(ShowAdd = false, Draggable = false)] + public List Splines = new List(); + + private Material lineMaterial; + + private void CreateLineMaterial() + { + if (!lineMaterial) + { +#if UNITY_5_0 || UNITY_4_6 + lineMaterial = new Material("Shader \"Lines/Colored Blended\" {" + + "SubShader { Pass { " + + " Blend SrcAlpha OneMinusSrcAlpha " + + " ZWrite Off Cull Off Fog { Mode Off } " + + " BindChannels {" + + " Bind \"vertex\", vertex Bind \"color\", color }" + + "} } }"); + +#else + lineMaterial = new Material(Shader.Find("Hidden/Internal-Colored")); +#endif + lineMaterial.hideFlags = HideFlags.HideAndDontSave; + lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave; + } + } + +#if UNITY_EDITOR + private void OnValidate() + { + sanitize(); + } +#endif + + private void OnPostRender() + { + sanitize(); + CreateLineMaterial(); + for (int i = Splines.Count - 1; i >= 0; i--) + { + Splines[i].Spline.OnRefresh.AddListenerOnce(OnSplineRefresh); + if (Splines[i].VertexData.Count == 0) + Splines[i].GetVertexData(); + + Splines[i].Render(lineMaterial); + } + + } + + private void sanitize() + { + for (int i = Splines.Count - 1; i >= 0; i--) + if (Splines[i] == null || Splines[i].Spline == null) + Splines.RemoveAt(i); + } + + private void OnSplineRefresh(CurvySplineEventArgs e) + { + GLSlotData slot = getSlot((CurvySpline)e.Sender); + if (slot == null) + ((CurvySpline)e.Sender).OnRefresh.RemoveListener(OnSplineRefresh); + else + slot.VertexData.Clear(); + } + + private GLSlotData getSlot(CurvySpline spline) + { + if (spline) + { + foreach (GLSlotData slot in Splines) + if (slot.Spline == spline) + return slot; + } + return null; + } + + public void Add(CurvySpline spline) + { + if (spline != null) + Splines.Add(new GLSlotData() { Spline = spline }); + } + + public void Remove(CurvySpline spline) + { + for (int i = Splines.Count - 1; i >= 0; i--) + if (Splines[i].Spline == spline) + Splines.RemoveAt(i); + } + + } + + /// + /// Helper class used by CurvyGLRenderer + /// + [System.Serializable] + public class GLSlotData + { + [SerializeField] + public CurvySpline Spline; + public Color LineColor = CurvyGlobalManager.DefaultGizmoColor; + public List VertexData = new List(); + + public void GetVertexData() + { + + VertexData.Clear(); + List splines = new List(); + splines.Add(Spline); + + ArrayPool vector3ArrayPool = ArrayPools.Vector3; + + for (int i = 0; i < splines.Count; i++) + if (splines[i].IsInitialized) + { + SubArray positionsCache = splines[i].GetPositionsCache(Space.World); + //OPTIM avoid the CopyToArray call, make the class work with SubArrays + VertexData.Add(positionsCache.CopyToArray(vector3ArrayPool)); + vector3ArrayPool.Free(positionsCache); + } + } + + public void Render(Material mat) + { + for (int i = 0; i < VertexData.Count; i++) + if (VertexData[i].Length > 0) + { + mat.SetPass(0); + GL.Begin(GL.LINES); + GL.Color(LineColor); + for (int v = 1; v < VertexData[i].Length; v++) + { + GL.Vertex(VertexData[i][v - 1]); + GL.Vertex(VertexData[i][v]); + } + GL.End(); + } + } + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGLRenderer.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGLRenderer.cs.meta new file mode 100644 index 00000000..d01c3f65 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGLRenderer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d025f1b57fec5ca4f8585046c3fd23c8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGlobalManager.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGlobalManager.cs new file mode 100644 index 00000000..2a189537 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGlobalManager.cs @@ -0,0 +1,409 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using System.Collections.Generic; +using FluffyUnderware.Curvy.Pools; +using Object = UnityEngine.Object; + + +namespace FluffyUnderware.Curvy +{ + /// + /// Curvy Global Scene Manager component + /// + [ExecuteInEditMode] + [RequireComponent(typeof(PoolManager))] + [RequireComponent(typeof(ArrayPoolsSettings))] + [HelpURL(CurvySpline.DOCLINK + "curvyglobalmanager")] + public class CurvyGlobalManager : DTSingleton + { + #region Do not move these + + //Do not move these. If they are moved to another file or lower in this file (bellow their usage by say DefaultGizmoColor), this issue will happen: + // https://stackoverflow.com/questions/22927167/strange-behavior-on-static-members-of-a-class-hows-this-possible + // https://github.com/RalfKoban/MiKo-Analyzers/issues/295 + + /// + /// Default value of the + /// + public static readonly Color DefaultDefaultGizmoColor = new Color(0.71f, 0.71f, 0.71f); + /// + /// Default value of the + /// + public static readonly Color DefaultDefaultGizmoSelectionColor = new Color(0.6f, 0.15f, 0.68f); + /// + /// Default value of the + /// + public static readonly Color DefaultGizmoOrientationColor = new Color(0.75f, 0.75f, 0.4f); + #endregion + + #region ### Public Static Fields (Editor->Runtime Bridge) ### + public static bool HideManager = false; + /// + /// Whether the output of Curvy Generators should be saved in the scene file. + /// Disable this option to reduce the size of scene files. This might increase the saving time for complex scenes. + /// This option applies only on generators that are enabled and have Auto Refresh set to true + /// + public static bool SaveGeneratorOutputs = true; + /// + /// Resolution of SceneView spline rendering + /// + public static float SceneViewResolution = 0.5f; + /// + /// Default spline color + /// + public static Color DefaultGizmoColor = DefaultDefaultGizmoColor; + /// + /// Default selected spline color + /// + public static Color DefaultGizmoSelectionColor = DefaultDefaultGizmoSelectionColor; + /// + /// Default interpolation used by new splines + /// + public static CurvyInterpolation DefaultInterpolation = CurvyInterpolation.CatmullRom; + /// + /// Size of control point gizmos + /// + public static float GizmoControlPointSize = 0.15f; + /// + /// Size of orientation gizmo + /// + public static float GizmoOrientationLength = 1f; + /// + /// Orientation gizmo color + /// + public static Color GizmoOrientationColor = DefaultGizmoOrientationColor; + public static int SplineLayer = 0; + /// + /// Default view settings + /// + public static CurvySplineGizmos Gizmos = CurvySplineGizmos.Curve | CurvySplineGizmos.Connections; + + public static bool ShowCurveGizmo + { + get { return (Gizmos & CurvySplineGizmos.Curve) == CurvySplineGizmos.Curve; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Curve; + else + Gizmos &= ~CurvySplineGizmos.Curve; + } + } + + public static bool ShowConnectionsGizmo + { + get { return (Gizmos & CurvySplineGizmos.Connections) == CurvySplineGizmos.Connections; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Connections; + else + Gizmos &= ~CurvySplineGizmos.Connections; + } + } + + public static bool ShowApproximationGizmo + { + get { return (Gizmos & CurvySplineGizmos.Approximation) == CurvySplineGizmos.Approximation; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Approximation; + else + Gizmos &= ~CurvySplineGizmos.Approximation; + } + } + + public static bool ShowTangentsGizmo + { + get { return (Gizmos & CurvySplineGizmos.Tangents) == CurvySplineGizmos.Tangents; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Tangents; + else + Gizmos &= ~CurvySplineGizmos.Tangents; + } + } + + public static bool ShowOrientationGizmo + { + get { return (Gizmos & CurvySplineGizmos.Orientation) == CurvySplineGizmos.Orientation; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Orientation; + else + Gizmos &= ~CurvySplineGizmos.Orientation; + } + } + + public static bool ShowTFsGizmo + { + get { return (Gizmos & CurvySplineGizmos.TFs) == CurvySplineGizmos.TFs; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.TFs; + else + Gizmos &= ~CurvySplineGizmos.TFs; + } + } + + public static bool ShowRelativeDistancesGizmo + { + get { return (Gizmos & CurvySplineGizmos.RelativeDistances) == CurvySplineGizmos.RelativeDistances; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.RelativeDistances; + else + Gizmos &= ~CurvySplineGizmos.RelativeDistances; + } + } + + public static bool ShowLabelsGizmo + { + get { return (Gizmos & CurvySplineGizmos.Labels) == CurvySplineGizmos.Labels; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Labels; + else + Gizmos &= ~CurvySplineGizmos.Labels; + } + } + + public static bool ShowMetadataGizmo + { + get { return (Gizmos & CurvySplineGizmos.Metadata) == CurvySplineGizmos.Metadata; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Metadata; + else + Gizmos &= ~CurvySplineGizmos.Metadata; + } + } + + public static bool ShowBoundsGizmo + { + get { return (Gizmos & CurvySplineGizmos.Bounds) == CurvySplineGizmos.Bounds; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.Bounds; + else + Gizmos &= ~CurvySplineGizmos.Bounds; + } + } + + public static bool ShowOrientationAnchorsGizmo + { + get { return (Gizmos & CurvySplineGizmos.OrientationAnchors) == CurvySplineGizmos.OrientationAnchors; } + set + { + if (value) + Gizmos |= CurvySplineGizmos.OrientationAnchors; + else + Gizmos &= ~CurvySplineGizmos.OrientationAnchors; + } + } + + #endregion + + #region ### Private Fields ### + + private PoolManager mPoolManager; + private ComponentPool mControlPointPool; + private ArrayPoolsSettings arrayPoolsSettings; + #endregion + + #region ### Public Methods & Properties ### + + + /// + /// Gets the PoolManager + /// + public PoolManager PoolManager + { + get + { + if (mPoolManager == null) + mPoolManager = GetComponent(); + return mPoolManager; + } + } + + public ComponentPool ControlPointPool + { + get + { + return mControlPointPool; + } + } + + public ArrayPoolsSettings ArrayPoolsSettings + { + get + { + if (arrayPoolsSettings == null) + arrayPoolsSettings = GetComponent(); + return arrayPoolsSettings; + } + } + + /// + /// Gets all connections in the scene + /// + public CurvyConnection[] Connections + { + get + { + return GetComponentsInChildren(); + } + } + + /// + /// Returns all the connections that are exclusively connecting cps within the splines parameter + /// + /// + /// + public CurvyConnection[] GetContainingConnections(params CurvySpline[] splines) + { + List connectionsResult = new List(); + List splinesList = new List(splines); + foreach (CurvySpline spline in splinesList) + { + foreach (CurvySplineSegment controlPoint in spline.ControlPointsList) + if (controlPoint.Connection != null && !connectionsResult.Contains(controlPoint.Connection)) + { + bool add = true; + // only process connections if all involved splines are part of the prefab + foreach (CurvySplineSegment connectedControlPoint in controlPoint.Connection.ControlPointsList) + { + if (connectedControlPoint.Spline != null && !splinesList.Contains(connectedControlPoint.Spline)) + { + add = false; + break; + } + } + if (add) + connectionsResult.Add(controlPoint.Connection); + } + } + + return connectionsResult.ToArray(); + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + public override void Awake() + { + base.Awake(); + name = "_CurvyGlobal_"; + transform.SetAsLastSibling(); + // Unity 5.3 introduces buug that hides GameObject when calling this outside playmode! + if (Application.isPlaying) + Object.DontDestroyOnLoad(this); + + mPoolManager = GetComponent(); + + PoolSettings s = new PoolSettings() + { + MinItems = 0, + Threshold = 50, + Prewarm = true, + AutoCreate = true, + AutoEnableDisable = true + }; + mControlPointPool = mPoolManager.CreateComponentPool(s); + + arrayPoolsSettings = GetComponent(); + //this is needed even though there is a [RequireComponent(typeof(ArrayPoolsSettings))] attribute, because that attribute works only at the moment the component is added, and does nothing for previously existing instances + if (arrayPoolsSettings == null) + arrayPoolsSettings = gameObject.AddComponent(); + } + + private void Start() + { + if (HideManager) + gameObject.hideFlags = HideFlags.HideInHierarchy; + else + gameObject.hideFlags = HideFlags.None; + } + + /*! \endcond */ + #endregion + + #region ### Privates & Internals ### + /*! \cond PRIVATE */ + + [RuntimeInitializeOnLoadMethod] + private static void LoadRuntimeSettings() + { + if (!PlayerPrefs.HasKey("Curvy_MaxCachePPU")) + SaveRuntimeSettings(); + SceneViewResolution = DTUtility.GetPlayerPrefs("Curvy_SceneViewResolution", SceneViewResolution); + HideManager = DTUtility.GetPlayerPrefs("Curvy_HideManager", HideManager); + DefaultGizmoColor = DTUtility.GetPlayerPrefs("Curvy_DefaultGizmoColor", DefaultGizmoColor); + DefaultGizmoSelectionColor = DTUtility.GetPlayerPrefs("Curvy_DefaultGizmoSelectionColor", DefaultGizmoColor); + DefaultInterpolation = DTUtility.GetPlayerPrefs("Curvy_DefaultInterpolation", DefaultInterpolation); + GizmoControlPointSize = DTUtility.GetPlayerPrefs("Curvy_ControlPointSize", GizmoControlPointSize); + GizmoOrientationLength = DTUtility.GetPlayerPrefs("Curvy_OrientationLength", GizmoOrientationLength); + GizmoOrientationColor = DTUtility.GetPlayerPrefs("Curvy_OrientationColor", GizmoOrientationColor); + Gizmos = DTUtility.GetPlayerPrefs("Curvy_Gizmos", Gizmos); + SplineLayer = DTUtility.GetPlayerPrefs("Curvy_SplineLayer", SplineLayer); + SaveGeneratorOutputs = DTUtility.GetPlayerPrefs("Curvy_SaveGeneratorOutputs", SaveGeneratorOutputs); + } + + public static void SaveRuntimeSettings() + { + //TODO some of these are not runtime settings at all, fix that + DTUtility.SetPlayerPrefs("Curvy_SceneViewResolution", SceneViewResolution); + DTUtility.SetPlayerPrefs("Curvy_HideManager", HideManager); + DTUtility.SetPlayerPrefs("Curvy_DefaultGizmoColor", DefaultGizmoColor); + DTUtility.SetPlayerPrefs("Curvy_DefaultGizmoSelectionColor", DefaultGizmoSelectionColor); + DTUtility.SetPlayerPrefs("Curvy_DefaultInterpolation", DefaultInterpolation); + DTUtility.SetPlayerPrefs("Curvy_ControlPointSize", GizmoControlPointSize); + DTUtility.SetPlayerPrefs("Curvy_OrientationLength", GizmoOrientationLength); + DTUtility.SetPlayerPrefs("Curvy_OrientationColor", GizmoOrientationColor); + DTUtility.SetPlayerPrefs("Curvy_Gizmos", Gizmos); + DTUtility.SetPlayerPrefs("Curvy_SplineLayer", SplineLayer); + DTUtility.SetPlayerPrefs("Curvy_SaveGeneratorOutputs", SaveGeneratorOutputs); + PlayerPrefs.Save(); + } + + + + public override void MergeDoubleLoaded(IDTSingleton newInstance) + { + base.MergeDoubleLoaded(newInstance); + + CurvyGlobalManager other = newInstance as CurvyGlobalManager; + // Merge connection from a doubled CurvyGlobalManager before it get destroyed by DTSingleton + CurvyConnection[] otherConnections = other.Connections; + for (int i = 0; i < otherConnections.Length; i++) + otherConnections[i].transform.SetParent(this.transform); + } + + + /*! \endcond */ + #endregion + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGlobalManager.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGlobalManager.cs.meta new file mode 100644 index 00000000..ad69c32a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyGlobalManager.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7da6ae8fd39ffa439ccf96f0d3da992 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -104 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyLineRenderer.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyLineRenderer.cs new file mode 100644 index 00000000..d2506473 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyLineRenderer.cs @@ -0,0 +1,71 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.Curvy.Pools; +using UnityEngine; +using FluffyUnderware.DevTools; +using ToolBuddy.Pooling.Collections; + +namespace FluffyUnderware.Curvy.Components +{ + /// + /// Class to drive a LineRenderer with a CurvySpline + /// + [AddComponentMenu("Curvy/Misc/Curvy Line Renderer")] + [RequireComponent(typeof(LineRenderer))] + [HelpURL(CurvySpline.DOCLINK + "curvylinerenderer")] + public class CurvyLineRenderer : SplineProcessor + { + private LineRenderer mRenderer; + + protected override void Awake() + { + mRenderer = GetComponent(); + base.Awake(); + } + + protected override void OnEnable() + { + mRenderer = GetComponent(); + base.OnEnable(); + } + + private void Update() + { + EnforceWorldSpaceUsage(); + } + + private void EnforceWorldSpaceUsage() + { + if (mRenderer.useWorldSpace == false) + { + mRenderer.useWorldSpace = true; + DTLog.Log("[Curvy] CurvyLineRenderer: Line Renderer's Use World Space was overriden to true"); + } + } + + /// + /// Update the 's points with the cache points of the + /// + public override void Refresh() + { + if (Spline && Spline.IsInitialized && Spline.Dirty == false) + { + EnforceWorldSpaceUsage(); + SubArray positions = Spline.GetPositionsCache(Space.World); + mRenderer.positionCount = positions.Count; + mRenderer.SetPositions(positions.Array); + ArrayPools.Vector3.Free(positions); + } + else if (mRenderer != null) + { + EnforceWorldSpaceUsage(); + mRenderer.positionCount = 0; + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyLineRenderer.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyLineRenderer.cs.meta new file mode 100644 index 00000000..7702e0bd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvyLineRenderer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f2d74ea90b9d85945b180cf66c7c0f6b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvySplineToEdgeCollider2D.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvySplineToEdgeCollider2D.cs new file mode 100644 index 00000000..08539ca8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvySplineToEdgeCollider2D.cs @@ -0,0 +1,61 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using FluffyUnderware.Curvy.Pools; +using UnityEngine; +using ToolBuddy.Pooling.Collections; + +namespace FluffyUnderware.Curvy +{ + /// + /// Converts a to an + /// + [AddComponentMenu("Curvy/Misc/Curvy Spline To Edge Collider 2D")] + [RequireComponent(typeof(EdgeCollider2D))] + [HelpURL(CurvySpline.DOCLINK + "edgecollider2d")] + public class CurvySplineToEdgeCollider2D : SplineProcessor + { + private EdgeCollider2D edgeCollider2D; + + protected override void Awake() + { + edgeCollider2D = GetComponent(); + base.Awake(); + } + + protected override void OnEnable() + { + edgeCollider2D = GetComponent(); + base.OnEnable(); + } + + /// + /// Update the with the cache points of the + /// + public override void Refresh() + { + if (Spline && Spline.IsInitialized && Spline.Dirty == false) + { + SubArray positions = Spline.GetPositionsCache(Space.Self); + SubArray positions2D = ArrayPools.Vector2.AllocateExactSize(positions.Count); + Vector3[] positionsArray = positions.Array; + Vector2[] positions2DArray = positions2D.Array; + for (var i = 0; i < positions.Count; i++) + { + positions2DArray[i].x = positionsArray[i].x; + positions2DArray[i].y = positionsArray[i].y; + } + edgeCollider2D.points = positions2DArray; + ArrayPools.Vector2.Free(positions2D); + ArrayPools.Vector3.Free(positions); + } + else if (edgeCollider2D != null) + edgeCollider2D.points = ArrayPools.Vector2.Allocate(0).Array; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvySplineToEdgeCollider2D.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvySplineToEdgeCollider2D.cs.meta new file mode 100644 index 00000000..7a173a0e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/CurvySplineToEdgeCollider2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b69e477d494cd7d4197144300b3a3a51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/NearestSplinePoint.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/NearestSplinePoint.cs new file mode 100644 index 00000000..6c12f155 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/NearestSplinePoint.cs @@ -0,0 +1,105 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.DevTools; +using UnityEngine; +using UnityEditor; +using UnityEngine.Events; + +namespace FluffyUnderware.Curvy +{ + + /// + /// Given a and an input position, this class will provide you with the nearest point to that position on the given spline. + /// The nearest position is provided either in an event, or as an override of the position of the + /// + /// This script simply calls the method. If you are a programmer, you don't need to go through this script, just call + [HelpURL(CurvySpline.DOCLINK + "nearestsplinepoint")] + [AddComponentMenu("Curvy/Misc/Nearest Spline Point")] + [ExecuteAlways] + public class NearestSplinePoint : MonoBehaviour + { + /// + /// The on which the nearest position is searched for + /// + [Tooltip("The spline on which the nearest position is searched for")] + public CurvySpline Spline; + /// + /// A transform which position will be used as the input position for the lookup + /// + [Tooltip("A transform which position will be used as the input position for the lookup")] + public Transform SourcePosition; + /// + /// A transform which position will be updated with the nearest point on Spline to Source Position + /// + [Tooltip("A transform which position will be updated with the nearest point on Spline to Source Position")] + public Transform TargetPosition; + /// + /// When to run the lookup + /// + [Tooltip("When to run the lookup")] + public CurvyUpdateMethod UpdateIn; + /// + /// At each update, this event is called with the result of the lookup + /// + [Tooltip("At each update, this event is called with the result of the lookup")] + public UnityEventEx OnUpdated = new UnityEventEx(); + + private void Process() + { + if (SourcePosition && Spline && Spline.IsInitialized && Spline.Dirty == false) + { + Vector3 destinationPosition = Spline.GetNearestPoint(SourcePosition.position, Space.Self); + if (TargetPosition) + TargetPosition.position = destinationPosition; + OnUpdated?.Invoke(destinationPosition); + } + } + + #region Updating methods + +#if UNITY_EDITOR + private void Update() + { + if (UpdateIn == CurvyUpdateMethod.Update) + Process(); + } + + private void LateUpdate() + { + if (UpdateIn == CurvyUpdateMethod.LateUpdate || + (Application.isPlaying == false && UpdateIn == CurvyUpdateMethod.FixedUpdate)) // In edit mode, fixed updates are not called, so we update here instead + Process(); + } + + private void FixedUpdate() + { + if (UpdateIn == CurvyUpdateMethod.FixedUpdate) + Process(); + } + + protected virtual void OnEnable() + { + EditorApplication.update += OnEditorUpdate; + } + + protected virtual void OnDisable() + { + EditorApplication.update -= OnEditorUpdate; + } + + private void OnEditorUpdate() + { + if (Application.isPlaying == false) + Process(); + } +#endif + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/NearestSplinePoint.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/NearestSplinePoint.cs.meta new file mode 100644 index 00000000..f6aff5b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Other Components/NearestSplinePoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a062b6bd68605bc4fb191834584d2d0d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools.meta new file mode 100644 index 00000000..b7cc8a06 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68a694731ebed9a468ccad0bfd44f6e7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPools.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPools.cs new file mode 100644 index 00000000..e86077b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPools.cs @@ -0,0 +1,55 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.Curvy.Generator; +using ToolBuddy.Pooling; +using ToolBuddy.Pooling.Pools; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Pools +{ + /// + /// A class which sole purpose is to centralize references to the various s instances + /// + public static class ArrayPools + { + static ArrayPools() + { + Int32 = ArrayPoolsProvider.GetPool(); + Single = ArrayPoolsProvider.GetPool(); + Vector2 = ArrayPoolsProvider.GetPool(); + Vector3 = ArrayPoolsProvider.GetPool(); + Vector4 = ArrayPoolsProvider.GetPool(); + CGSpot = ArrayPoolsProvider.GetPool(); + } + + /// + /// Gets the reference to the unique of said type + /// + public static ArrayPool Vector2 { get; } + /// + /// Gets the reference to the unique of said type + /// + public static ArrayPool Vector3 { get; } + /// + /// Gets the reference to the unique of said type + /// + public static ArrayPool Vector4 { get; } + /// + /// Gets the reference to the unique of said type + /// + public static ArrayPool Int32 { get; } + /// + /// Gets the reference to the unique of said type + /// + public static ArrayPool Single { get; } + /// + /// Gets the reference to the unique of said type + /// + public static ArrayPool CGSpot { get; } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPools.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPools.cs.meta new file mode 100644 index 00000000..d38ba129 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPools.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e950a29ae4d3e4f40b03ecd2271da862 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPoolsSettings.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPoolsSettings.cs new file mode 100644 index 00000000..c43c90e2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPoolsSettings.cs @@ -0,0 +1,175 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using FluffyUnderware.DevTools; +using ToolBuddy.Pooling.Pools; +using UnityEngine; + +namespace FluffyUnderware.Curvy.Pools +{ + /// + /// A component that allows setting, via the editor, the settings of the used s + /// + [HelpURL(DTUtility.HelpUrlBase + "arraypoolsettings")] + [ExecuteAlways] + [DisallowMultipleComponent] + public class ArrayPoolsSettings : DTVersionedMonoBehaviour + { + [SerializeField] + [Tooltip("The maximal number of elements of type Vector2 allowed to be stored in the arrays' pool waiting to be reused")] + private long vector2Capacity = 100_000; + + [SerializeField] + [Tooltip("The maximal number of elements of type Vector3 allowed to be stored in the arrays' pool waiting to be reused")] + private long vector3Capacity = 100_000; + + [SerializeField] + [Tooltip("The maximal number of elements of type Vector4 allowed to be stored in the arrays' pool waiting to be reused")] + private long vector4Capacity = 100_000; + + [SerializeField] + [Tooltip("The maximal number of elements of type Int32 allowed to be stored in the arrays' pool waiting to be reused")] + private long intCapacity = 100_000; + + [SerializeField] + [Tooltip("The maximal number of elements of type Single (a.k.a float) allowed to be stored in the arrays' pool waiting to be reused")] + private long floatCapacity = 10_000; + + [SerializeField] + [Tooltip("The maximal number of elements of type CGSpots allowed to be stored in the arrays' pool waiting to be reused")] + private long cgSpotCapacity = 10_000; + + [Tooltip("Log in the console each time an array pool allocates a new array in memory")] + [SerializeField] + private bool logAllocations = false; + + /// + /// The maximal number of elements of type Vector2 allowed to be stored in the arrays' pool waiting to be reused + /// + public long Vector2Capacity + { + get { return vector2Capacity; } + set + { + vector2Capacity = Math.Max(0, value); + ArrayPools.Vector2.ElementsCapacity = vector2Capacity; + + } + } + + /// + /// The maximal number of elements of type Vector3 allowed to be stored in the arrays' pool waiting to be reused + /// + public long Vector3Capacity + { + get { return vector3Capacity; } + set + { + vector3Capacity = Math.Max(0, value); + ArrayPools.Vector3.ElementsCapacity = vector3Capacity; + } + } + + /// + /// The maximal number of elements of type Vector4 allowed to be stored in the arrays' pool waiting to be reused + /// + public long Vector4Capacity + { + get { return vector4Capacity; } + set + { + vector4Capacity = Math.Max(0, value); + ArrayPools.Vector4.ElementsCapacity = vector4Capacity; + } + } + + /// + /// The maximal number of elements of type Int32 allowed to be stored in the arrays' pool waiting to be reused + /// + public long IntCapacity + { + get { return intCapacity; } + set + { + intCapacity = Math.Max(0, value); + ArrayPools.Int32.ElementsCapacity = IntCapacity; + } + } + + /// + /// The maximal number of elements of type Single allowed to be stored in the arrays' pool waiting to be reused + /// + public long FloatCapacity + { + get { return floatCapacity; } + set + { + floatCapacity = Math.Max(0, value); + ArrayPools.Single.ElementsCapacity = floatCapacity; + } + } + + /// + /// The maximal number of elements of type CGSpot allowed to be stored in the arrays' pool waiting to be reused + /// + public long CGSpotCapacity + { + get { return cgSpotCapacity; } + set + { + cgSpotCapacity = Math.Max(0, value); + ArrayPools.CGSpot.ElementsCapacity = cgSpotCapacity; + } + } + /// + /// Log in the console each time an array pool allocates a new array in memory + /// + public bool LogAllocations + { + get { return logAllocations; } + set + { + logAllocations = value; + ArrayPools.CGSpot.LogAllocations = logAllocations; + ArrayPools.Int32.LogAllocations = logAllocations; + ArrayPools.Single.LogAllocations = logAllocations; + ArrayPools.Vector2.LogAllocations = logAllocations; + ArrayPools.Vector3.LogAllocations = logAllocations; + ArrayPools.Vector4.LogAllocations = logAllocations; + } + } + + private void Reset() => ValidateAndApply(); + + private void OnValidate() => ValidateAndApply(); + + private void Awake() => ValidateAndApply(); + + private void OnEnable() + { +#if UNITY_EDITOR + if (FindObjectsOfType().Length > 1) + DTLog.LogWarning("[Curvy] More than one instance of 'Array Pools Settings' detected. You should keep only one instance of this script."); +#endif + ValidateAndApply(); + } + + private void Start() => ValidateAndApply(); + + private void ValidateAndApply() + { + Vector2Capacity = vector2Capacity; + Vector3Capacity = vector3Capacity; + Vector4Capacity = vector4Capacity; + IntCapacity = intCapacity; + FloatCapacity = floatCapacity; + CGSpotCapacity = cgSpotCapacity; + LogAllocations = logAllocations; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPoolsSettings.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPoolsSettings.cs.meta new file mode 100644 index 00000000..ccb8d282 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Pools/ArrayPoolsSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6fd1ed065a5ad4241ade72657b4c6e4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes.meta new file mode 100644 index 00000000..27bc9006 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 3bf90713daa7d494d96ccf184d007194 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSCircle.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSCircle.cs new file mode 100644 index 00000000..a64ba7ff --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSCircle.cs @@ -0,0 +1,88 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Shapes +{ + /// + /// Circle Shape (2D) + /// + [CurvyShapeInfo("2D/Circle")] + [RequireComponent(typeof(CurvySpline))] + [AddComponentMenu("Curvy/Shapes/Circle")] + public class CSCircle : CurvyShape2D + { + [Positive(Tooltip="Number of Control Points")] + [SerializeField] + private int m_Count=4; + public int Count + { + get { return m_Count; } + set + { + int v = Mathf.Max(2, value); + if (m_Count != v) + { + m_Count = v; + Dirty = true; + } + } + } + + [SerializeField] private float m_Radius = 1; + public float Radius + { + get { return m_Radius;} + set + { + float v = Mathf.Max(0, value); + if (m_Radius != v) + { + m_Radius = v; + Dirty = true; + } + } + } + + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Count = m_Count; + Radius = m_Radius; + } +#endif + + protected override void Reset() + { + base.Reset(); + Count = 4; + Radius = 1; + } + + protected override void ApplyShape() + { + PrepareSpline(CurvyInterpolation.Bezier); + PrepareControlPoints(Count); + float d = 360f * Mathf.Deg2Rad / Count; + for (int i = 0; i < Count; i++) + Spline.ControlPointsList[i].transform.localPosition = new Vector3(Mathf.Sin(d * i) * Radius, Mathf.Cos(d * i) * Radius, 0); + } + + + + + + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSCircle.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSCircle.cs.meta new file mode 100644 index 00000000..fb181f39 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSCircle.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db925cc84d8129f40818e17a75bc7ef3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSPie.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSPie.cs new file mode 100644 index 00000000..b731990b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSPie.cs @@ -0,0 +1,153 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Shapes +{ + /// + /// Pie Shape (2D) + /// + [CurvyShapeInfo("2D/Pie")] + [RequireComponent(typeof(CurvySpline))] + [AddComponentMenu("Curvy/Shapes/Pie")] + public class CSPie : CSCircle + { + + [Range(0, 1)] + [SerializeField] + private float m_Roundness = 1f; + public float Roundness + { + get { return m_Roundness; } + set + { + float v = Mathf.Clamp01(value); + if (m_Roundness != v) + { + m_Roundness = v; + Dirty = true; + } + + } + } + + public enum EatModeEnum + { + Left, + Right, + Center + } + + [SerializeField] + [RangeEx(0, nameof(maxEmpty), "Empty", "Number of empty slices")] + private int m_Empty = 1; + public int Empty + { + get { return m_Empty; } + set + { + int v = Mathf.Clamp(value, 0, maxEmpty); + if (m_Empty != v) + { + m_Empty = v; + Dirty = true; + } + } + } + + private int maxEmpty { get { return Count; } } + + [Label(Tooltip = "Eat Mode")] + [SerializeField] + private EatModeEnum m_Eat = EatModeEnum.Right; + public EatModeEnum Eat + { + get { return m_Eat; } + set + { + if (m_Eat != value) + { + m_Eat = value; + Dirty = true; + } + } + } + + + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Empty = m_Empty; + Eat = m_Eat; + Roundness = m_Roundness; + } +#endif + + protected override void Reset() + { + base.Reset(); + Roundness = 1f; + Empty = 1; + Eat = EatModeEnum.Right; + } + + private Vector3 cpPosition(int i, int empty, float d) + { + switch (Eat) + { + case EatModeEnum.Left: + return new Vector3(Mathf.Sin(d * i) * Radius, Mathf.Cos(d * i) * Radius, 0); + case EatModeEnum.Right: + return new Vector3(Mathf.Sin(d * (i + empty)) * Radius, Mathf.Cos(d * (i + empty)) * Radius, 0); + default: + return new Vector3(Mathf.Sin(d * (i + empty * 0.5f)) * Radius, Mathf.Cos(d * (i + empty * 0.5f)) * Radius, 0); + } + } + + protected override void ApplyShape() + { + PrepareSpline(CurvyInterpolation.Bezier, CurvyOrientation.Dynamic); + PrepareControlPoints(Count - Empty + 2); + + float d = 360f * Mathf.Deg2Rad / Count; + float distPercent = Roundness * 0.39f; + + for (int i = 0; i < Spline.ControlPointCount - 1; i++) + { + Spline.ControlPointsList[i].AutoHandles = true; + Spline.ControlPointsList[i].AutoHandleDistance = distPercent; + SetPosition(i, cpPosition(i, Empty, d)); + } + + + // Center + SetPosition(Spline.ControlPointCount - 1, Vector3.zero); + SetBezierHandles(Spline.ControlPointCount - 1, 0); + + // From Center + Spline.ControlPointsList[0].AutoHandles = false; + Spline.ControlPointsList[0].HandleIn = Vector3.zero; + Spline.ControlPointsList[0].SetBezierHandles(distPercent, + cpPosition(Count - 1, Empty, d) - Spline.ControlPointsList[0].transform.localPosition, + cpPosition(1, Empty, d) - Spline.ControlPointsList[0].transform.localPosition, false, true); + + // To Center + Spline.ControlPointsList[Spline.ControlPointCount - 2].AutoHandles = false; + Spline.ControlPointsList[Spline.ControlPointCount - 2].HandleOut = Vector3.zero; + Spline.ControlPointsList[Spline.ControlPointCount - 2].SetBezierHandles(distPercent, + cpPosition(Count - 1 - Empty, Empty, d) - Spline.ControlPointsList[Spline.ControlPointCount - 2].transform.localPosition, + cpPosition(Count + 1 - Empty, Empty, d) - Spline.ControlPointsList[Spline.ControlPointCount - 2].transform.localPosition, true, false); + + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSPie.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSPie.cs.meta new file mode 100644 index 00000000..22690b11 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSPie.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 11531ee0acb05f147a569dab22766734 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRectangle.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRectangle.cs new file mode 100644 index 00000000..ac18a9a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRectangle.cs @@ -0,0 +1,91 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Shapes +{ + /// + /// Rectangle Shape (2D) + /// + [CurvyShapeInfo("2D/Rectangle")] + [RequireComponent(typeof(CurvySpline))] + [AddComponentMenu("Curvy/Shapes/Rectangle")] + public class CSRectangle : CurvyShape2D + { + [Positive] + [SerializeField] + private float m_Width = 1; + public float Width + { + get { return m_Width; } + set + { + float v = Mathf.Max(0, value); + if (m_Width != v) + { + m_Width = v; + Dirty = true; + } + } + } + [Positive] + [SerializeField] + private float m_Height = 1; + public float Height + { + get { return m_Height; } + set + { + float v = Mathf.Max(0, value); + if (m_Height != v) + { + m_Height = v; + Dirty = true; + } + } + } + + protected override void Reset() + { + base.Reset(); + Width = 1; + Height = 1; + } + + protected override void ApplyShape() + { + base.ApplyShape(); + PrepareSpline(CurvyInterpolation.Linear, CurvyOrientation.Dynamic,1, true); + PrepareControlPoints(4); + float hw = Width / 2; + float hh = Height / 2; + SetCGHardEdges(); + + SetPosition(0,new Vector3(-hw, -hh)); + SetPosition(1,new Vector3(-hw, hh)); + SetPosition(2,new Vector3(hw, hh)); + SetPosition(3,new Vector3(hw, -hh)); + } + + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Width = m_Width; + Height = m_Height; + } +#endif + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRectangle.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRectangle.cs.meta new file mode 100644 index 00000000..3361e0fc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRectangle.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb08e1dcb0ad99946b5fa3f2aab502ab +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRoundedRectangle.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRoundedRectangle.cs new file mode 100644 index 00000000..deb2251a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRoundedRectangle.cs @@ -0,0 +1,139 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Shapes +{ + /// + /// Rounded Rectangle (2D) + /// + [CurvyShapeInfo("2D/Rounded Rectangle")] + [RequireComponent(typeof(CurvySpline))] + [AddComponentMenu("Curvy/Shapes/Rounded Rectangle")] + public class CSRoundedRectangle : CurvyShape2D + { + [Positive] + [SerializeField] + private float m_Width = 1; + public float Width + { + get { return m_Width; } + set + { + float v = Mathf.Max(0, value); ; + if (m_Width != v) + { + m_Width = v; + Dirty = true; + } + } + } + [Positive] + [SerializeField] + private float m_Height = 1; + public float Height + { + get { return m_Height; } + set + { + float v = Mathf.Max(0, value); + if (m_Height != v) + { + m_Height = v; + Dirty = true; + } + } + } + + [Range(0, 1)] + [SerializeField] + private float m_Roundness = 0.5f; + public float Roundness + { + get { return m_Roundness; } + set + { + float v = Mathf.Clamp01(value); + if (m_Roundness != v) + { + m_Roundness = v; + Dirty = true; + } + } + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Width = m_Width; + Height = m_Height; + Roundness = m_Roundness; + } +#endif + + protected override void Reset() + { + base.Reset(); + Width = 1; + Height = 1; + Roundness = 0.5f; + } + + protected override void ApplyShape() + { + PrepareSpline(CurvyInterpolation.Bezier); + bool isSquare = Roundness == 0; + PrepareControlPoints(isSquare ? 4 : 8); + + float hw = Width / 2; + float hh = Height / 2; + + if (isSquare) + { + SetPosition(0, new Vector3(-hw, -hh)); + SetPosition(1, new Vector3(-hw, hh)); + SetPosition(2, new Vector3(hw, hh)); + SetPosition(3, new Vector3(hw, -hh)); + + SetBezierHandles(0, Vector3.zero, Vector3.zero, Space.Self); + SetBezierHandles(1, Vector3.zero, Vector3.zero, Space.Self); + SetBezierHandles(2, Vector3.zero, Vector3.zero, Space.Self); + SetBezierHandles(3, Vector3.zero, Vector3.zero, Space.Self); + } + else + { + float off = Mathf.Min(hw, hh) * Roundness; + SetPosition(0, new Vector3(-hw, -hh + off)); + SetPosition(1, new Vector3(-hw, hh - off)); + SetPosition(2, new Vector3(-hw + off, hh)); + SetPosition(3, new Vector3(hw - off, hh)); + SetPosition(4, new Vector3(hw, hh - off)); + SetPosition(5, new Vector3(hw, -hh + off)); + SetPosition(6, new Vector3(hw - off, -hh)); + SetPosition(7, new Vector3(-hw + off, -hh)); + + SetBezierHandles(0, Vector3.down * off, Vector3.zero, Space.Self); + SetBezierHandles(1, Vector3.zero, Vector3.up * off, Space.Self); + SetBezierHandles(2, Vector3.left * off, Vector3.right * off, Space.Self); + SetBezierHandles(3, Vector3.zero, Vector3.right * off, Space.Self); + SetBezierHandles(4, Vector3.up * off, Vector3.zero, Space.Self); + SetBezierHandles(5, Vector3.zero, Vector3.down * off, Space.Self); + SetBezierHandles(6, Vector3.right * off, Vector3.zero, Space.Self); + SetBezierHandles(7, Vector3.zero, Vector3.left * off, Space.Self); + } + + } + + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRoundedRectangle.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRoundedRectangle.cs.meta new file mode 100644 index 00000000..392c55ef --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSRoundedRectangle.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40c554b1636af874788a322143049112 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSSpiral.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSSpiral.cs new file mode 100644 index 00000000..5f7eba70 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSSpiral.cs @@ -0,0 +1,138 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Shapes +{ + /// + /// Spiral Spline Shape + /// + [CurvyShapeInfo("3D/Spiral",false)] + [RequireComponent(typeof(CurvySpline))] + [AddComponentMenu("Curvy/Shapes/Spiral")] + public class CSSpiral : CurvyShape2D + { + [Positive(Tooltip = "Number of Control Points per full Circle")] + [SerializeField] + private int m_Count = 8; + public int Count + { + get { return m_Count; } + set + { + int v = Mathf.Max(0, value); + if (m_Count != v) + { + m_Count = v; + Dirty = true; + } + } + } + + [Positive(Tooltip = "Number of Full Circles")] + [SerializeField] + private float m_Circles = 3; + public float Circles + { + get { return m_Circles; } + set + { + float v = Mathf.Max(0, value); + if (m_Circles != v) + { + m_Circles = v; + Dirty = true; + } + } + } + + [Positive(Tooltip="Base Radius")] + [SerializeField] + private float m_Radius = 5; + public float Radius + { + get { return m_Radius; } + set + { + float v = Mathf.Max(0, value); + if (m_Radius != v) + { + m_Radius = v; + Dirty = true; + } + } + } + + [Label(Tooltip="Radius Multiplicator")] + [SerializeField] + private AnimationCurve m_RadiusFactor = AnimationCurve.Linear(0, 1, 1, 1); + public AnimationCurve RadiusFactor + { + get { return m_RadiusFactor; } + set + { + if (m_RadiusFactor != value) + { + m_RadiusFactor = value; + Dirty = true; + } + } + } + + [SerializeField] private AnimationCurve m_Z = AnimationCurve.Linear(0, 0f, 1, 10f); + public AnimationCurve Z + { + get { return m_Z; } + set + { + if (m_Z != value) + { + m_Z = value; + Dirty = true; + } + } + } + + + protected override void Reset() + { + base.Reset(); + Count=8; + Circles=3; + Radius=5; + RadiusFactor=AnimationCurve.Linear(0,1,1,1); + Z=AnimationCurve.Linear(0,0,1,10); + } + + protected override void ApplyShape() + { + PrepareSpline(CurvyInterpolation.CatmullRom, CurvyOrientation.Dynamic, 50, false); + Spline.RestrictTo2D = false; + int cpCount = Mathf.FloorToInt(Count * Circles); + PrepareControlPoints(cpCount); + if (cpCount == 0) + return; + float d = 360f * Mathf.Deg2Rad / Count; + + for (int i = 0; i < cpCount; i++) + { + float frag = i / (float)cpCount; + float rad = Radius * RadiusFactor.Evaluate(frag); + SetPosition(i,new Vector3(Mathf.Sin(d * i) * rad, Mathf.Cos(d * i) * rad, m_Z.Evaluate(frag))); + } + } + + + + + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSSpiral.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSSpiral.cs.meta new file mode 100644 index 00000000..22f69c97 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSSpiral.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 78fe27cadd58631478ff940cc42687c1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSStar.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSStar.cs new file mode 100644 index 00000000..b61f0f5f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSStar.cs @@ -0,0 +1,154 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.Curvy.Shapes +{ + /// + /// Star Shape (2D) + /// + [CurvyShapeInfo("2D/Star")] + [RequireComponent(typeof(CurvySpline))] + [AddComponentMenu("Curvy/Shapes/Star")] + public class CSStar : CurvyShape2D + { + + [SerializeField] + [Positive(Tooltip = "Number of Sides", MinValue = 2)] + private int m_Sides = 5; + public int Sides + { + get { return m_Sides; } + set + { + int v = Mathf.Max(0, value); + if (m_Sides != v) + { + m_Sides = v; + Dirty = true; + } + } + } + + + [SerializeField] + [Positive] + private float m_OuterRadius = 2; + public float OuterRadius + { + get { return m_OuterRadius; } + set + { + float v = Mathf.Max(InnerRadius, value); + if (m_OuterRadius != v) + { + m_OuterRadius = v; + Dirty = true; + } + + } + } + + + [SerializeField] + [RangeEx(0, 1)] + private float m_OuterRoundness = 0; + public float OuterRoundness + { + get { return m_OuterRoundness; } + set + { + float v = Mathf.Max(0, value); + if (m_OuterRoundness != v) + { + m_OuterRoundness = v; + Dirty = true; + } + } + } + + + [SerializeField] + [Positive] + private float m_InnerRadius = 1; + public float InnerRadius + { + get { return m_InnerRadius; } + set + { + float v = Mathf.Max(0, value); + if (m_InnerRadius != v) + { + m_InnerRadius = v; + Dirty = true; + } + } + } + + [SerializeField] + [RangeEx(0, 1)] + private float m_InnerRoundness = 0; + public float InnerRoundness + { + get { return m_InnerRoundness; } + set + { + float v = Mathf.Max(0, value); + if (m_InnerRoundness != v) + { + m_InnerRoundness = v; + Dirty = true; + } + } + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + Sides=m_Sides; + OuterRadius = m_OuterRadius; + InnerRadius=m_InnerRadius; + OuterRoundness = m_OuterRoundness; + InnerRoundness = m_InnerRoundness; + } +#endif + + protected override void Reset() + { + base.Reset(); + Sides=5; + OuterRadius=2; + OuterRoundness=0; + InnerRadius=1; + InnerRoundness=0; + } + + protected override void ApplyShape() + { + PrepareSpline(CurvyInterpolation.Bezier); + PrepareControlPoints(Sides*2); + float d = 360f * Mathf.Deg2Rad / Spline.ControlPointCount; + for (int i = 0; i < Spline.ControlPointCount; i += 2) + { + Vector3 dir = new Vector3(Mathf.Sin(d * i), Mathf.Cos(d * i), 0); + + SetPosition(i, dir * OuterRadius); + //SetBezierHandles(i,new Vector3(-dir.y, dir.x, 0),new Vector3(dir.y, -dir.x, 0),Space.Self); + Spline.ControlPointsList[i].AutoHandleDistance = OuterRoundness; + dir=new Vector3(Mathf.Sin(d*(i+1)),Mathf.Cos(d*(i+1)),0); + SetPosition(i+1,dir * InnerRadius); + //SetBezierHandles(i+1,new Vector3(-dir.y, dir.x, 0),new Vector3(dir.y, -dir.x, 0),Space.Self); + Spline.ControlPointsList[i + 1].AutoHandleDistance = InnerRoundness; + } + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSStar.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSStar.cs.meta new file mode 100644 index 00000000..25184ddc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CSStar.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c23adbe234d78794db53da7b155a4b75 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape.cs new file mode 100644 index 00000000..e35ee1a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape.cs @@ -0,0 +1,519 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +using System.Collections.Generic; +using FluffyUnderware.DevTools; +using System; +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools.Extensions; + + +namespace FluffyUnderware.Curvy +{ + /// + /// Base class for CurvyShape components + /// + [RequireComponent(typeof(CurvySpline))] + //[DisallowMultipleComponent] + [ExecuteAlways] + [HelpURL(CurvySpline.DOCLINK + "curvyshape")] + public class CurvyShape : DTVersionedMonoBehaviour + { + #region ### Serialized Fields ### + + [SerializeField, Label("Plane")] private CurvyPlane m_Plane = CurvyPlane.XY; + + #endregion + + #region ### Public Properties ### + + /// + /// Gets or sets the plane to create the shape in + /// + public CurvyPlane Plane + { + get { return m_Plane; } + set + { + Spline.Restricted2DPlane = value; + if (m_Plane != value) + { + m_Plane = value; + Dirty = true; + } + } + } + + /// + /// Gets the attached spline + /// + public CurvySpline Spline + { + get + { + if (!mSpline) + mSpline = GetComponent(); + return mSpline; + } + } + + #endregion + + #region ### Private fields ### + + private static Dictionary mShapeDefs = new Dictionary(); + + private CurvySpline mSpline; + [System.NonSerialized] + public bool Dirty; +#if UNITY_EDITOR + private bool isEnabled; +#endif + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + private void Update() + { + // Prevent updating while dragging prefab +#if UNITY_EDITOR + //if (Selection.activeGameObject==gameObject) +#endif + Refresh(); + } + +#if UNITY_EDITOR + + private void OnEnable() + { + isEnabled = true; + } + + private void OnDisable() + { + isEnabled = false; + } + + protected virtual void OnValidate() + { + if (isEnabled) + { + Plane = m_Plane; + Dirty = true; + } + } +#endif + + protected virtual void Reset() + { + Plane = CurvyPlane.XY; + Dirty = true; + } + /*! \endcond */ + + #endregion + + #region ### Public Methods ### + + /// + /// Remove the CurvyShape component from it's GameObject + /// + public void Delete() + { + this.Destroy(true, false); + } + + /// + /// Called to refresh the shape. Please call base.Refresh() or RefreshSpline() after your custom code! + /// + /// Warning: Only work with ControlPoints, not with segments + public void Refresh() + { + if (Dirty) + { + //#if UNITY_EDITOR + // if (!Application.isPlaying) + // Undo.RecordObject(Spline, "Apply Shape"); + //#endif + ApplyShape(); + applyPlane(); + Spline.SetDirtyAll(); + Spline.Refresh(); + } + Dirty = false; + } + + + /// + /// Replace the current script with another shape's script + /// + /// the new shape script + public CurvyShape Replace(string menuName) + { + Type shapeType = GetShapeType(menuName); + if (shapeType != null) + { + GameObject go = this.gameObject; + + Delete(); + CurvyShape shape; + +#if UNITY_EDITOR + shape = (CurvyShape)Undo.AddComponent(go, shapeType); +#else + shape = (CurvyShape)go.AddComponent(shapeType); +#endif + + shape.Dirty = true; + return shape; + } + return null; + } + + + #endregion + + #region ### Protected Methods ### + + /// + /// Sets basic spline parameters + /// + protected void PrepareSpline(CurvyInterpolation interpolation, CurvyOrientation orientation = CurvyOrientation.Dynamic, int cachedensity = 50, bool closed = true) + { + Spline.Interpolation = interpolation; + Spline.Orientation = orientation; + Spline.CacheDensity = cachedensity; + Spline.Closed = closed; + Spline.RestrictTo2D = this is CurvyShape2D; + } + + /// + /// Sets a Control Point's position by index + /// + /// Control point index + /// local position + protected void SetPosition(int no, Vector3 position) + { + Spline.ControlPointsList[no].SetLocalPosition(position); + } + + /// + /// Sets a Control Point's rotation by index + /// + /// Control point index + /// local rotation + protected void SetRotation(int no, Quaternion rotation) + { + Spline.ControlPointsList[no].SetLocalRotation(rotation); + } + + /// + /// Sets a Control Point's Bezier Handles by index + /// + /// Control point index + /// distance in percent + protected void SetBezierHandles(int no, float distanceFrag) + { + SetBezierHandles(no, distanceFrag, distanceFrag); + } + + /// + /// Sets a Control Point's Bezier Handles by index + /// + /// Control point index + /// distance in percent for HandleIn + /// /// distance in percent for HandleOut + protected void SetBezierHandles(int no, float inDistanceFrag, float outDistanceFrag) + { + CurvySplineSegment curvySplineSegment = Spline.ControlPointsList[no]; + + if (no >= 0 && no < Spline.ControlPointCount) + { + if (inDistanceFrag == outDistanceFrag) + { + curvySplineSegment.AutoHandles = true; + curvySplineSegment.AutoHandleDistance = inDistanceFrag; + } + else + { + curvySplineSegment.AutoHandles = false; + curvySplineSegment.AutoHandleDistance = (inDistanceFrag + outDistanceFrag) / 2f; + SetBezierHandles(inDistanceFrag, true, false, curvySplineSegment); + SetBezierHandles(outDistanceFrag, false, true, curvySplineSegment); + } + + + } + } + + /// + /// Sets a Control Point's Bezier Handles position + /// + /// the ControlPoint + /// HandlInPosition + /// HandleOutPosition + /// World or local space + protected void SetBezierHandles(int no, Vector3 i, Vector3 o, Space space = Space.World) + { + if (no >= 0 && no < Spline.ControlPointCount) + { + CurvySplineSegment curvySplineSegment = Spline.ControlPointsList[no]; + + curvySplineSegment.AutoHandles = false; + if (space == Space.World) + { + curvySplineSegment.HandleInPosition = i; + curvySplineSegment.HandleOutPosition = o; + } + else + { + curvySplineSegment.HandleIn = i; + curvySplineSegment.HandleOut = o; + } + } + } + + /// + /// Automatically place Bezier handles for a set of Control Points + /// + /// how much % distance between neighbouring CPs are applied to the handle length? + /// Set HandleIn? + /// Set HandleOut? + /// one or more Control Points to set + public static void SetBezierHandles(float distanceFrag, bool setIn, bool setOut, params CurvySplineSegment[] controlPoints) + { + if (controlPoints.Length == 0) + return; + + foreach (CurvySplineSegment cp in controlPoints) + cp.SetBezierHandles(distanceFrag, setIn, setOut); + } + + /// + /// Enables CGHardEdge for a set of Control Points + /// + /// list of Control Point indices + protected void SetCGHardEdges(params int[] controlPoints) + { + if (controlPoints.Length == 0) + { + for (int i = 0; i < Spline.ControlPointCount; i++) + Spline.ControlPointsList[i].GetMetadata(true).HardEdge = true; + } + else + { + for (int i = 0; i < controlPoints.Length; i++) + if (i >= 0 && i < Spline.ControlPointCount) + Spline.ControlPointsList[i].GetMetadata(true).HardEdge = true; + } + } + + /// + /// Override this to add custom code + /// + protected virtual void ApplyShape() + { + } + + /// + /// Resizes the spline to have a certain number of Control Points + /// + /// number of Control Points + protected void PrepareControlPoints(int count) + { +#if CONTRACTS_FULL + Contract.Requires(Spline.LastVisibleControlPoint != null); +#endif + + /* + Spline.Clear(); + while (count-- > 0) + Spline.Add(); + Spline.Refresh(); + */ + int delta = count - Spline.ControlPointCount; + bool upd = delta != 0; + + while (delta > 0) + { + Spline.InsertAfter(null, true); + delta--; + } + + while (delta < 0) + { + Spline.Delete(Spline.LastVisibleControlPoint, true, false); + delta++; + } + // Revert to default settings + for (int i = 0; i < Spline.ControlPointsList.Count; i++) + { + CurvySplineSegment controlPoint = Spline.ControlPointsList[i]; + controlPoint.transform.localPosition = Vector3.zero; + controlPoint.transform.localRotation = Quaternion.identity; + controlPoint.transform.localScale = Vector3.one; + controlPoint.Reset(); + controlPoint.Disconnect(); + MetaCGOptions mcg = controlPoint.GetMetadata(); + if (mcg) + mcg.Reset(); + } + + if (upd) + Spline.Refresh(); + } + + #endregion + + #region ### Public Static Methods & Properties ### + + /// + /// Dictionary of Shape definitions and their types + /// + //TODO should be private + public static Dictionary ShapeDefinitions + { + get + { + if (mShapeDefs.Count == 0) + mShapeDefs = typeof(CurvyShape).GetAllTypesWithAttribute(); + + return mShapeDefs; + } + } + + /// + /// Gets a list of Menu Names of available shapes + /// + /// whether to skip 3D shapes or not + /// a list of Menu Names + public static List GetShapesMenuNames(bool only2D = false) + { + List res = new List(); + foreach (CurvyShapeInfo shapeInfo in ShapeDefinitions.Keys) + if (!only2D || shapeInfo.Is2D) + res.Add(shapeInfo.Name); + + return res; + } + + /// + /// Gets a list of Menu Names of available shapes + /// + /// the current shape type + /// returns the index of the current shape type + /// whether only to show 2D shapes + /// a list of Menu Names + public static List GetShapesMenuNames(System.Type currentShapeType, out int currentIndex, bool only2D = false) + { + currentIndex = 0; + if (currentShapeType == null) + return GetShapesMenuNames(only2D); + List lst = new List(); + foreach (KeyValuePair kv in ShapeDefinitions) + { + if (!only2D || kv.Key.Is2D) + lst.Add(kv.Key.Name); + if (kv.Value == currentShapeType) + currentIndex = lst.Count - 1; + + } + return lst; + } + + /// + /// Gets Shape Menu Name from a CurvyShape subclass type + /// + /// + /// + public static string GetShapeName(System.Type shapeType) + { + foreach (KeyValuePair kv in ShapeDefinitions) + if (kv.Value == shapeType) + return kv.Key.Name; + return null; + } + + /// + /// Gets a CurvyShape subclass type from a Shape's MenuName + /// + /// + /// + public static Type GetShapeType(string menuName) + { + foreach (CurvyShapeInfo shapeInfo in ShapeDefinitions.Keys) + if (shapeInfo.Name == menuName) + return ShapeDefinitions[shapeInfo]; + + return null; + } + + #endregion + + #region ### Privates ### + + private void applyPlane() + { + switch (Plane) + { + case CurvyPlane.XZ: + applyRotation(Quaternion.Euler(90, 0, 0)); + break; + case CurvyPlane.YZ: + applyRotation(Quaternion.Euler(0, 90, 0)); + break; + default: + applyRotation(Quaternion.Euler(0, 0, 0)); + break; + } + } + + private void applyRotation(Quaternion q) + { + Spline.transform.localRotation = Quaternion.identity; + + for (int i = 0; i < Spline.ControlPointCount; i++) + { + CurvySplineSegment curvySplineSegment = Spline.ControlPointsList[i]; + curvySplineSegment.SetLocalRotation(q * curvySplineSegment.transform.localRotation); + curvySplineSegment.SetLocalPosition(q * curvySplineSegment.transform.localPosition); + if (Spline.Interpolation == CurvyInterpolation.Bezier) + { + curvySplineSegment.HandleIn = q * curvySplineSegment.HandleIn; + curvySplineSegment.HandleOut = q * curvySplineSegment.HandleOut; + } + } + } + + #endregion + + + } + + /// + /// CurvyShape Info Attribute + /// + [System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple = false, Inherited = true)] + public sealed class CurvyShapeInfo : System.Attribute + { + public readonly string Name; + public readonly bool Is2D; + + public CurvyShapeInfo(string name, bool is2D = true) + { + Name = name; + Is2D = is2D; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape.cs.meta new file mode 100644 index 00000000..07265e26 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3bf249c70f8faf74991ef60947480cb5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape2D.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape2D.cs new file mode 100644 index 00000000..2acf89d5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape2D.cs @@ -0,0 +1,21 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using System.Collections; +using FluffyUnderware.Curvy.Utils; + +namespace FluffyUnderware.Curvy +{ + /// + /// Base class for 2D Shapes + /// + public class CurvyShape2D : CurvyShape + { + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape2D.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape2D.cs.meta new file mode 100644 index 00000000..ab2ebc1c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Shapes/CurvyShape2D.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd2a6fa79083d8c468863ad668f919e3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines.meta new file mode 100644 index 00000000..d5390072 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b15ade58ec7985c42ad5df580fe6cd43 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections.meta new file mode 100644 index 00000000..bafc1f65 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1221373515482804ba7a59962fefa56f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/ConnectionHeadingEnum.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/ConnectionHeadingEnum.cs new file mode 100644 index 00000000..c5fa4aa5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/ConnectionHeadingEnum.cs @@ -0,0 +1,60 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; + +namespace FluffyUnderware.Curvy +{ + /// + /// Connection's Follow-Up heading direction + /// + public enum ConnectionHeadingEnum + { + /// + /// Head towards the targets start (negative F) + /// + Minus = -1, + /// + /// Do not head anywhere, stay still + /// + Sharp = 0, + /// + /// Head towards the targets end (positive F) + /// + Plus = 1, + /// + /// Automatically choose the appropriate value + /// + Auto = 2 + } + + /// + /// Extension methods of + /// + public static class ConnectionHeadingEnumMethods + { + /// + /// If heading is Auto, this method will translate it to a Plus, Minus or Sharp value depending on the Follow-Up control point. + /// + /// the value to resolve + /// the related followUp control point + /// + static public ConnectionHeadingEnum ResolveAuto(this ConnectionHeadingEnum heading, CurvySplineSegment followUp) + { + if (heading == ConnectionHeadingEnum.Auto) + { + if (CurvySplineSegment.CanFollowUpHeadToEnd(followUp)) + heading = ConnectionHeadingEnum.Plus; + else if (CurvySplineSegment.CanFollowUpHeadToStart(followUp)) + heading = ConnectionHeadingEnum.Minus; + else + heading = ConnectionHeadingEnum.Sharp; + } + return heading; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/ConnectionHeadingEnum.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/ConnectionHeadingEnum.cs.meta new file mode 100644 index 00000000..054a0d1f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/ConnectionHeadingEnum.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 053e00672ed69584292283c8a26f4a09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/CurvyConnection.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/CurvyConnection.cs new file mode 100644 index 00000000..17b39805 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/CurvyConnection.cs @@ -0,0 +1,511 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using FluffyUnderware.Curvy; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Assertions; +using UnityEngine.SceneManagement; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace FluffyUnderware.Curvy +{ + /// + /// Connection component + /// + [ExecuteInEditMode] + [HelpURL(CurvySpline.DOCLINK + "curvyconnection")] + public class CurvyConnection : DTVersionedMonoBehaviour, ISerializationCallbackReceiver + { + #region ### Serialized Fields ### + + [SerializeField, Hide] private List m_ControlPoints = new List(); + + #endregion + + #region ### Private Fields ### + + private ReadOnlyCollection readOnlyControlPoints; + /// + /// The coordinates of the connection the last time synchronisation was processed + /// + private Couple processedConnectionCoordinates; + /// + /// The coordinates of the connection's control points the last time synchronisation was processed + /// + [SerializeField, Hide] private List processedControlPointsCoordinates = new List(); + + #endregion + + #region ### Public Properties ### + + + /// + /// The list of connected control points + /// + public ReadOnlyCollection ControlPointsList + { + //TODO apply the same TODOs than CurvySpline.ControlPointsList + get + { + if (readOnlyControlPoints == null) + readOnlyControlPoints = m_ControlPoints.AsReadOnly(); + return readOnlyControlPoints; + } + } + /// + /// Gets the number of Control Points being part of this connection + /// + public int Count + { + get { return m_ControlPoints.Count; } + } + + /// + /// Gets a certain Control Point by index + /// + /// index of the Control Point + /// a Control Point + public CurvySplineSegment this[int idx] + { + get + { + return m_ControlPoints[idx]; + } + } + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + + private void OnEnable() + { + SceneManager.sceneLoaded += OnSceneLoaded; + + ResetProcessedCoordinates(); +#if UNITY_EDITOR + EditorApplication.update += EditorUpdate; +#endif + } + + private void OnDisable() + { + SceneManager.sceneLoaded -= OnSceneLoaded; +#if UNITY_EDITOR + EditorApplication.update -= EditorUpdate; +#endif + } + +#if UNITY_EDITOR + private void EditorUpdate() + { + DoUpdate(); + } +#endif + + + private void Update() + { + if (Application.isPlaying) + DoUpdate(); + } + + private void LateUpdate() + { + if (Application.isPlaying) + DoUpdate(); + } + + private void FixedUpdate() + { + if (Application.isPlaying) + DoUpdate(); + } + + private void OnDestroy() + { + bool realDestroy = true; +#if UNITY_EDITOR + if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying) + realDestroy = false; +#endif + if (realDestroy) + { + List controlPointsToDisconnect = new List(m_ControlPoints); + foreach (CurvySplineSegment cp in controlPointsToDisconnect) + cp.Disconnect(false); + + //This is needed even if cp.Disconnect removes the cp from those lists via Connection.RemoveControlPoint, because when calling cp.Disconnect you can have cp.Connection == null, which will lead to Connection.RemoveControlPoint not being called. Saw that happening when undoing the creation of a connect CP (via the Smart Connect tool) + m_ControlPoints.Clear(); + processedControlPointsCoordinates.Clear(); + } + } + + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + /// + /// Creates a connection and adds Control Points + /// + /// Control Points to add + /// the new connection + public static CurvyConnection Create(params CurvySplineSegment[] controlPoints) + { + CurvyGlobalManager curvyGlobalManager = CurvyGlobalManager.Instance; + if (curvyGlobalManager == null) + { + DTLog.LogError("[Curvy] Couldn't find Curvy Global Manager. Please raise a bug report."); + return null; + } + + CurvyConnection con = curvyGlobalManager.AddChildGameObject("Connection"); +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RegisterCreatedObjectUndo(con.gameObject, "Add Connection"); +#endif + if (!con) + return null; + if (controlPoints.Length > 0) + { + con.transform.position = controlPoints[0].transform.position; + con.AddControlPoints(controlPoints); + } + + return con; + } + + /// + /// Adds Control Points to this connection + /// + /// the Control Points to add + public void AddControlPoints(params CurvySplineSegment[] controlPoints) + { + foreach (CurvySplineSegment cp in controlPoints) + { + if (cp.Connection) + { + DTLog.LogErrorFormat("[Curvy] CurvyConnection.AddControlPoints called on a control point '{0}' that has already a connection. Only control points with no connection can be added.", cp); + continue; + } + +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(cp, "Add Connection"); +#endif +#if CURVY_SANITY_CHECKS + Assert.IsFalse(m_ControlPoints.Contains(cp)); +#endif + m_ControlPoints.Add(cp); + processedControlPointsCoordinates.Add(new ControlPointCoordinates(cp)); + cp.Connection = this; + } + AutoSetFollowUp(); + } + + public void AutoSetFollowUp() + { + if (Count == 2) + { + CurvySplineSegment firstControlPoint = m_ControlPoints[0]; + CurvySplineSegment secondControlPoint = m_ControlPoints[1]; + if (firstControlPoint.transform.position == secondControlPoint.transform.position && firstControlPoint.ConnectionSyncPosition && secondControlPoint.ConnectionSyncPosition) + { + if (firstControlPoint.FollowUp == null && firstControlPoint.Spline && firstControlPoint.Spline.CanControlPointHaveFollowUp(firstControlPoint)) + firstControlPoint.SetFollowUp(secondControlPoint); + if (secondControlPoint.FollowUp == null && secondControlPoint.Spline && secondControlPoint.Spline.CanControlPointHaveFollowUp(secondControlPoint)) + secondControlPoint.SetFollowUp(firstControlPoint); + } + } + } + + /// + /// Removes a Control Point from this connection + /// + /// the Control Point to remove + /// whether the connection should be destroyed when empty afterwards + public void RemoveControlPoint(CurvySplineSegment controlPoint, bool destroySelfIfEmpty = true) + { +#if UNITY_EDITOR + const string undoingStepLabel = "Disconnect from Connection"; + + Undo.RegisterCompleteObjectUndo(new UnityEngine.Object[]{ + controlPoint, this + }, undoingStepLabel); +#endif + + controlPoint.Connection = null; + + m_ControlPoints.Remove(controlPoint); + processedControlPointsCoordinates.RemoveAll(element => ReferenceEquals(element.ControlPoint, controlPoint)); + + foreach (CurvySplineSegment splineSegment in m_ControlPoints) + { + if (splineSegment.FollowUp == controlPoint) + { +#if UNITY_EDITOR + Undo.RegisterCompleteObjectUndo(splineSegment, undoingStepLabel); +#endif + splineSegment.SetFollowUp(null); + } + } + if (m_ControlPoints.Count == 0 && destroySelfIfEmpty) + Delete(); + } + + /// + /// Deletes the connection + /// + public void Delete() + { + gameObject.Destroy(true, true); + } + + /// + /// Gets all Control Points except the one provided + /// + /// the Control Point to filter out + /// list of Control Points + public List OtherControlPoints(CurvySplineSegment source) + { + List res = new List(m_ControlPoints); + res.Remove(source); + return res; + } + + /// + /// Synchronise all the connected control points to match the given position and rotation, based on their synchronisation options. Will update the CurvyConnection's game object's transform too. + /// + /// Can dirty the splines of the updated control points + public void SetSynchronisationPositionAndRotation(Vector3 referencePosition, Quaternion referenceRotation) + { + Transform cachedTransform = transform; + + cachedTransform.position = referencePosition; + cachedTransform.rotation = referenceRotation; + cachedTransform.hasChanged = false; + processedConnectionCoordinates.First = referencePosition; + processedConnectionCoordinates.Second = referenceRotation; + + for (int i = 0; i < m_ControlPoints.Count; i++) + { + CurvySplineSegment controlPoint = m_ControlPoints[i]; + + bool positionModified = controlPoint.ConnectionSyncPosition && controlPoint.transform.position.NotApproximately(referencePosition); + bool rotationModified = controlPoint.ConnectionSyncRotation && controlPoint.transform.rotation.DifferentOrientation(referenceRotation); + + if (positionModified) + controlPoint.transform.position = referencePosition; + if (rotationModified) + controlPoint.transform.rotation = referenceRotation; + + ControlPointCoordinates processedControlPointCoordinates = + processedControlPointsCoordinates.Single(element => ReferenceEquals(element.ControlPoint, controlPoint)); + + processedControlPointCoordinates.Position = controlPoint.transform.position; + processedControlPointCoordinates.Rotation = controlPoint.transform.rotation; + + if (positionModified || (rotationModified && controlPoint.OrientatinInfluencesSpline)) + controlPoint.Spline.SetDirtyPartial(controlPoint + , positionModified == false ? SplineDirtyingType.OrientationOnly : SplineDirtyingType.Everything); + } + } + + +#if UNITY_EDITOR + /// + /// Gets the gizmo color based on the synchronization options of the connected control points + /// + public Color GetGizmoColor() + { + Color gizmoColor; + + if (ControlPointsList.Count == 0) + gizmoColor = Color.black; + else + { + bool allPositionsSynced = true; + bool allRotationsSynced = true; + foreach (CurvySplineSegment controlPoint in ControlPointsList) + { + allPositionsSynced = allPositionsSynced && controlPoint.ConnectionSyncPosition; + allRotationsSynced = allRotationsSynced && controlPoint.ConnectionSyncRotation; + + if (allPositionsSynced == false && allRotationsSynced == false) + break; + } + + if (allPositionsSynced) + gizmoColor = allRotationsSynced + ? Color.white + : new Color(255 / 255f, 49 / 255f, 38 / 255f); + else if (allRotationsSynced) + gizmoColor = new Color(1, 1, 0); + else + gizmoColor = Color.black; + } + + return gizmoColor; + } +#endif + + + #endregion + + #region ### Privates & Internals ### + /*! \cond PRIVATE */ + + private void DoUpdate() + { + Transform cachedTransform = transform; + + bool synchronised; + if (cachedTransform.hasChanged) + { + cachedTransform.hasChanged = false; + if (cachedTransform.position.NotApproximately(processedConnectionCoordinates.First) || + cachedTransform.rotation.DifferentOrientation(processedConnectionCoordinates.Second)) + { + SetSynchronisationPositionAndRotation(cachedTransform.position, cachedTransform.rotation); + synchronised = true; + } + else + synchronised = false; + } + else + synchronised = false; + + if (synchronised == false) + { + Vector3? synchronisationPosition = null; + Quaternion? synchronisationRotation = null; + + foreach (CurvySplineSegment controlPoint in m_ControlPoints) + { + if (controlPoint.gameObject == null) + { + //The only case I am aware of where this happens is when running test (see [TestFixture]), when the test is finished, a connection is duplicated and "restored", while having in its CPs list CPs that have been destroyed. + //This is somehow related to the following statement in the RemoveControlPoint method: + //Undo.RegisterCompleteObjectUndo(new UnityEngine.Object[]{ + // controlPoint, this + //}, undoingStepLabel); + + //If you fix the problem above, remove unnecessary checks on controlPoint.gameObject. Look for the following comment to find such places: + // "see comment in CurvyConnection.DoUpdate to know more about when cp.gameObject can be null" + + DTLog.LogError(String.Format("[Curvy] Connection named '{0}' had in its list a control point with no game object. Control point was ignored", this.name)); + continue; + } + ControlPointCoordinates processedControlPointsCoordinate = + processedControlPointsCoordinates.Single(element => ReferenceEquals(element.ControlPoint, controlPoint)); + + Transform controlPointTransform = controlPoint.transform; + + if (controlPoint.ConnectionSyncPosition && controlPointTransform.position.NotApproximately(processedControlPointsCoordinate.Position)) + synchronisationPosition = controlPointTransform.position; + + if (controlPoint.ConnectionSyncRotation && controlPointTransform.rotation.DifferentOrientation(processedControlPointsCoordinate.Rotation)) + synchronisationRotation = controlPointTransform.rotation; + + if (synchronisationPosition != null && synchronisationRotation != null) + break; + } + + if (synchronisationPosition != null || synchronisationRotation != null) + SetSynchronisationPositionAndRotation(synchronisationPosition ?? transform.position, synchronisationRotation ?? transform.rotation); + } + } + + private void OnSceneLoaded(Scene arg0, LoadSceneMode arg1) + { + //m_ControlPoints can have null references in it because if the cp it has is disabled, and then the scene is switched, the cp will not execute its OnDestroy, ans thus will not remove himself from the connection. And since destroyed unity objects become equal to null, the CPs list will have a null value in it + int removedElementsCount = m_ControlPoints.RemoveAll(cp => cp == null); + if (removedElementsCount != 0) + { + if (m_ControlPoints.Count == 0) + Delete(); + else + { + DTLog.LogWarning("[Curvy] Connection " + this.name + " was not destroyed after scene switch. That should not happen. Please raise a bug report."); + ResetProcessedCoordinates(); + } + } + } + + private void ResetProcessedCoordinates() + { + Transform cachedTransform = transform; + processedConnectionCoordinates = + new Couple(cachedTransform.position, cachedTransform.rotation); + processedControlPointsCoordinates.Clear(); + for (int index = 0; index < m_ControlPoints.Count; index++) + processedControlPointsCoordinates.Add(new ControlPointCoordinates(m_ControlPoints[index])); + } + + /*! \endcond */ + #endregion + + #region ISerializationCallbackReceiver + /*! \cond PRIVATE */ + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public void OnBeforeSerialize() + { + m_ControlPoints.RemoveAll(cp => ReferenceEquals(cp, null)); + } + + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public void OnAfterDeserialize() + { + m_ControlPoints.RemoveAll(cp => ReferenceEquals(cp, null)); + } + /*! \endcond */ + #endregion + + } + + /// + /// A class that exists only because Unity does not serialize Dictionary> + /// + [Serializable] + internal class ControlPointCoordinates + { + internal ControlPointCoordinates(CurvySplineSegment controlPoint) + { + ControlPoint = controlPoint; + if(controlPoint.gameObject) + { + // see comment in CurvyConnection.DoUpdate to know more about when cp.gameObject can be null + Position = controlPoint.transform.position; + Rotation = controlPoint.transform.rotation; + } + } + [SerializeField] + internal CurvySplineSegment ControlPoint; + [SerializeField] + internal Vector3 Position; + [SerializeField] + internal Quaternion Rotation; + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/CurvyConnection.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/CurvyConnection.cs.meta new file mode 100644 index 00000000..351900e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Connections/CurvyConnection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 320a2489ca748ce44a808c78b9a5c740 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -103 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline.cs new file mode 100644 index 00000000..189db8e7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline.cs @@ -0,0 +1,3336 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using UnityEngine.Serialization; +using FluffyUnderware.DevTools.Extensions; +using System.Reflection; +using FluffyUnderware.Curvy.Pools; +using JetBrains.Annotations; +using ToolBuddy.Pooling.Collections; +using UnityEngine.Assertions; +#if UNITY_EDITOR +using UnityEditor; +#endif +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif + + +namespace FluffyUnderware.Curvy +{ + /// + /// Curvy Spline class + /// + [HelpURL(CurvySpline.DOCLINK + "curvyspline")] + [AddComponentMenu("Curvy/Curvy Spline")] + [ExecuteAlways] + public partial class CurvySpline : DTVersionedMonoBehaviour + { + /*! \cond PRIVATE */ + //TODO move elsewhere + public const string VERSION = "8.2.1"; + public const string APIVERSION = "820"; + public const string WEBROOT = "https://curvyeditor.com/"; + public const string DOCLINK = WEBROOT + "doclink/"; + /*! \endcond */ + +#if UNITY_EDITOR + /// + /// The number of precomputed spline names + /// + //DESIGN Make this parametrable by users? + private const short CachedControlPointsNameCount = 250; + /// + /// A list of precomputed control point names + /// + static readonly private string[] controlPointNames = GetControlPointNames(); + +#endif + + public CurvySpline() + { + refreshCurveAction = (controlPoint, controlPointIndex, controlPointsCount) => controlPoint.refreshCurveINTERNAL(); + defaultSplineEventArgs = new CurvySplineEventArgs(this, this, null); + defaultAddAfterEventArgs = new CurvyControlPointEventArgs(this, this, null, CurvyControlPointEventArgs.ModeEnum.AddAfter); + defaultDeleteEventArgs = new CurvyControlPointEventArgs(this, this, null, CurvyControlPointEventArgs.ModeEnum.Delete); + } + + #region ### Serialized fields ### + + /// + /// The list of control points + /// + /// The returned list should not be modified + [SerializeField, HideInInspector] + private List ControlPoints = new List(); + + /// + /// Whether to show the Gizmos enabled in the view settings or not at all + /// + [HideInInspector] + public bool ShowGizmos = true; + + #endregion + + #region ### Public Properties ### + + #region --- General --- + + /// + /// The interpolation method used by this spline + /// + /// AutoEndTangents's value can be updated depending on Interpolation value + public CurvyInterpolation Interpolation + { + get { return m_Interpolation; } + set + { + if (m_Interpolation != value) + { + m_Interpolation = value; + InvalidateControlPointsRelationshipCacheINTERNAL(); + SetDirtyAll(SplineDirtyingType.Everything, false); + } + + //Since canHaveManualEndCP uses Interpolation, and is used by AutoEndTangents, we force the later's update + AutoEndTangents = m_AutoEndTangents; + } + } + + /// + /// Whether to restrict Control Points to a local 2D plane + /// + /// + public bool RestrictTo2D + { + get { return m_RestrictTo2D; } + set + { + if (m_RestrictTo2D != value) + { + m_RestrictTo2D = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// The local 2D plane to restrict the spline's control point in + /// + /// + public CurvyPlane Restricted2DPlane + { + get { return restricted2DPlane; } + set + { + if (restricted2DPlane != value) + { + restricted2DPlane = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// Gets or sets the default Handle distance for Bezier splines + /// + public float AutoHandleDistance + { + get { return m_AutoHandleDistance; } + set + { + float clampedValue = Mathf.Clamp01(value); + if (m_AutoHandleDistance != clampedValue) + { + m_AutoHandleDistance = clampedValue; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// Whether this spline is closed or not + /// + /// AutoEndTangents's value can be updated depending on Close value + public bool Closed + { + get { return m_Closed; } + set + { + if (m_Closed != value) + { + m_Closed = value; + InvalidateControlPointsRelationshipCacheINTERNAL(); + SetDirtyAll(SplineDirtyingType.Everything, true); + } + //Since canHaveManualEndCP uses Closed, and is used by AutoEndTangents, we force the later's update + AutoEndTangents = m_AutoEndTangents; + } + } + + /// + /// Whether the first/last Control Point should act as the end tangent, too. + /// + /// Ignored by linear splines and Bezier ones + public bool AutoEndTangents + { + get { return m_AutoEndTangents; } + set + { + bool v = canHaveManualEndCP() ? value : true; + if (m_AutoEndTangents != v) + { + m_AutoEndTangents = v; + InvalidateControlPointsRelationshipCacheINTERNAL(); + SetDirtyAll(SplineDirtyingType.Everything, true); + } + } + } + + /// + /// Orientation mode + /// + public CurvyOrientation Orientation + { + get { return m_Orientation; } + set + { + if (m_Orientation != value) + { + m_Orientation = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + public CurvyUpdateMethod UpdateIn + { + get { return m_UpdateIn; } + set + { + if (m_UpdateIn != value) + m_UpdateIn = value; + } + } + + #endregion + + #region --- Advanced Settings --- + + /// + /// Gets or sets Spline color + /// + public Color GizmoColor + { + get { return m_GizmoColor; } + set + { + if (m_GizmoColor != value) + m_GizmoColor = value; + } + } + + /// + /// Gets or sets selected segment color + /// + public Color GizmoSelectionColor + { + get { return m_GizmoSelectionColor; } + set + { + if (m_GizmoSelectionColor != value) + m_GizmoSelectionColor = value; + } + } + + /// + /// Gets or sets the cache density + /// Defines how densely the cached points are. When the value is 100, the number of cached points per world distance unit is equal to the spline's + /// + public int CacheDensity + { + get { return m_CacheDensity; } + set + { + int clampedDensity = Mathf.Clamp(value, 1, 100); + + if (m_CacheDensity != clampedDensity) + { + m_CacheDensity = clampedDensity; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// The maximum number of sampling points per world distance unit. Sampling is used in caching or shape extrusion for example + public float MaxPointsPerUnit + { + get + { + return m_MaxPointsPerUnit; + } + set + { + float clampedValue = Mathf.Clamp(value, MinimalMaxPointsPerUnit, 1000); + if (m_MaxPointsPerUnit != clampedValue) + { + m_MaxPointsPerUnit = clampedValue; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// Whether to use GameObject pooling for Control Points at runtime + /// + public bool UsePooling + { + get { return m_UsePooling; } + set + { + if (m_UsePooling != value) + m_UsePooling = value; + } + } + /// + /// Whether to use threading where applicable or not. + /// Threading is currently not supported when targeting WebGL and Universal Windows Platform + /// + public bool UseThreading + { + get + { +#if !UNITY_WSA && !UNITY_WEBGL + return m_UseThreading; +#else + + return false; +#endif + } + set + { + if (m_UseThreading != value) + m_UseThreading = value; + } + } + + /// + /// Whether the spline should automatically refresh when a Control Point's position change + /// + /// Enable this if you animate a Control Point's transform! + public bool CheckTransform + { + get { return m_CheckTransform; } + set + { + if (m_CheckTransform != value) + { + m_CheckTransform = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + + #endregion + + #region --- TCB Options --- + + /// + /// Global Tension + /// + /// This only applies to TCB interpolation + public float Tension + { + get { return m_Tension; } + set + { + if (m_Tension != value) + { + m_Tension = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// Global Continuity + /// + /// This only applies to TCB interpolation + public float Continuity + { + get { return m_Continuity; } + set + { + if (m_Continuity != value) + { + m_Continuity = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// Global Bias + /// + /// This only applies to TCB interpolation + public float Bias + { + get { return m_Bias; } + set + { + if (m_Bias != value) + { + m_Bias = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + #endregion + + #region --- B-Spline Options --- + + /// + /// Used only when is + /// The degree of the piecewise polynomial functions + /// Is in the range [2; control points count - 1] + /// + public int BSplineDegree + { + get { return bSplineDegree; } + set + { + value = Mathf.Min(Mathf.Max(minBSplineDegree, value), MaxBSplineDegree); + if (bSplineDegree != value) + { + bSplineDegree = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + + /// + /// Used only when is + /// Make the curve pass through the first and last control points by increasing the multiplicity of the first and last knots. + /// In technical terms, when this parameter is true, the knot vector is [0, 0, ...,0, 1, 2, ..., N-1, N, N, ..., N]. When false, it is [0, 1, 2, ..., N-1, N] + /// + public bool IsBSplineClamped + { + get { return CanBeClamped() ? isBSplineClamped : false; } + set + { + if (isBSplineClamped != value) + { + isBSplineClamped = value; + SetDirtyAll(SplineDirtyingType.Everything, false); + } + } + } + #endregion + + #region --- Others --- + + /// + /// Whether the spline is fully initialized and all segments loaded + /// + public bool IsInitialized { get { return mIsInitialized; } } + + /// + /// The bounding box of the spline, in world space + /// + public Bounds Bounds + { + get + { + if (!mBounds.HasValue) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + Bounds bounds; + if (Count > 0) + { + Bounds b = this[0].Bounds; + + for (int i = 1; i < Count; i++) + b.Encapsulate(this[i].Bounds); + bounds = b; + } + else + bounds = new Bounds(transform.position, Vector3.zero); + + if (Dirty == false) + mBounds = bounds; + return bounds; + } + return mBounds.Value; + } + } + + /// + /// Gets the number of Segments + /// +#pragma warning disable 618 + public int Count { get { return Segments.Count; } } +#pragma warning restore 618 + /// + /// Gets the number of Control Points + /// + public int ControlPointCount { get { return ControlPoints.Count; } } + + /// + /// Gets total Cache Size + /// + public int CacheSize + { + get + { + if (mCacheSize < 0) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + int cacheSize = 0; +#pragma warning disable 618 + List segments = Segments; +#pragma warning restore 618 + for (int i = 0; i < segments.Count; i++) + cacheSize += segments[i].CacheSize; + + if (Dirty == false) + mCacheSize = cacheSize; + return cacheSize; + } + return mCacheSize; + } + } + + /// + /// Gets the total length of the Spline or SplineGroup + /// + /// The accuracy depends on the current Granularity (higher Granularity means more exact values) + public float Length + { + get + { + if (length < 0) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float tempLength; +#pragma warning disable 618 + if (Segments.Count == 0) +#pragma warning restore 618 + tempLength = 0; + else + tempLength = (Closed) ? this[Count - 1].Distance + this[Count - 1].Length : LastVisibleControlPoint.Distance; + if (Dirty == false) + length = tempLength; + return tempLength; + } + return length; + } + } + + /// + /// When a spline is dirty, this means that it's cached data is no more up to date, and should be updated. The update is done automatically each frame when needed, or manually by calling + /// + public bool Dirty + { + get + { + return (allControlPointsAreDirty || dirtyControlPointsMinimalSet.Count > 0); + } + } + + /// + /// Gets the Segment at a certain index + /// + /// an index in the range 0..Count + /// the corresponding spline segment + public CurvySplineSegment this[int idx] + { + get + { +#if CONTRACTS_FULL + Contract.Requires(idx > -1 && idx < Segments.Count); +#endif +#pragma warning disable 618 + return Segments[idx]; +#pragma warning restore 618 + } + } + + /// + /// The list of control points + /// + public ReadOnlyCollection ControlPointsList + { + //TODO use IReadOnlyList when .NET 4.6 will be default + get + { + //OPTIM find the proper place to initialize readOnlyControlPoints, to avoid the if bellow to be tested at each call. + //Note: even when initializing readOnlyControlPoints in Awake, OnEnable, OnAfterDeserialize and OnValidate, scene 25 had a null reference exception on readOnlyControlPoints. Here is the stack trace: + /* + NullReferenceException: Object reference not set to an instance of an object + FluffyUnderware.Curvy.CurvySpline.GetControlPointIndex (FluffyUnderware.Curvy.CurvySplineSegment controlPoint) (at Assets/Packages/Curvy/Base/CurvySpline.cs:254) + FluffyUnderware.Curvy.CurvySplineSegment.GetPreviousControlPoint (System.Boolean segmentsOnly, System.Boolean useFollowUp) (at Assets/Packages/Curvy/Base/CurvySplineSegment.cs:1552) + FluffyUnderware.Curvy.CurvySplineSegment.SetDirty (System.Boolean dirtyCurve, System.Boolean dirtyOrientation) (at Assets/Packages/Curvy/Base/CurvySplineSegment.cs:2148) + FluffyUnderware.Curvy.CurvyMetadataBase.SetDirty () (at Assets/Packages/Curvy/Base/CurvyMetadataBase.cs:84) + FluffyUnderware.Curvy.MetaCGOptions.OnValidate () (at Assets/Packages/Curvy/Base/CG/MetaCGOptions.cs:239) + */ + if (readOnlyControlPoints == null) + readOnlyControlPoints = ControlPoints.AsReadOnly(); + return readOnlyControlPoints; + } + } + + + + /// + /// Gets the first visible Control Point (equals the first segment or this[0]) + /// + /// Can be null, for example for a Catmull-Rom spline whith only two splines and AutoEndTangent set to false + [CanBeNull] + public CurvySplineSegment FirstVisibleControlPoint + { + get + { + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return firstVisibleControlPoint; + } + } + + /// + /// Gets the last visible Control Point (i.e. the end CP of the last segment) + /// + /// Is null if spline has no segments + [CanBeNull] + public CurvySplineSegment LastVisibleControlPoint + { + get + { + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return lastVisibleControlPoint; + } + } + + /// + /// Gets the first segment of the spline + /// + public CurvySplineSegment FirstSegment + { + get + { + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return firstSegment; + } + } + + /// + /// Gets the last segment of the spline + /// + public CurvySplineSegment LastSegment + { + get + { + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return lastSegment; + } + } + + /// + /// Returns true if the global position, rotation or scale of the spline has changed this frame + /// + /// + public bool GlobalCoordinatesChangedThisFrame + { + get { return globalCoordinatesChangedThisFrame; } + } + + /// + /// Is triggered when the global position, rotation or scale of the spline changes. + /// The triggering instance of CurvySpline is passed as a parameter of the delegate + /// + /// This is triggered at the very end of the spline updating method. + /// + public Action OnGlobalCoordinatesChanged { get; set; } + + public CurvySplineEvent OnRefresh + { + get { return m_OnRefresh; } + set + { + if (m_OnRefresh != value) + m_OnRefresh = value; + + } + + } + /// + /// Callback after one or more Control Points have been added or deleted + /// + /// This executes last, after individual add/delete events and OnRefresh + public CurvySplineEvent OnAfterControlPointChanges + { + get { return m_OnAfterControlPointChanges; } + set + { + if (m_OnAfterControlPointChanges != value) + m_OnAfterControlPointChanges = value; + } + } + /// + /// Callback before a Control Point is about to be added. Return false to cancel the execution + /// + public CurvyControlPointEvent OnBeforeControlPointAdd + { + get { return m_OnBeforeControlPointAdd; } + set + { + if (m_OnBeforeControlPointAdd != value) + m_OnBeforeControlPointAdd = value; + } + } + /// + /// Callback after a Control Point has been added and the spline was refreshed + /// + public CurvyControlPointEvent OnAfterControlPointAdd + { + get { return m_OnAfterControlPointAdd; } + set + { + if (m_OnAfterControlPointAdd != value) + m_OnAfterControlPointAdd = value; + } + + } + /// + /// Callback before a Control Point is about to be deleted. Return false to cancel the execution. + /// + public CurvyControlPointEvent OnBeforeControlPointDelete + { + get { return m_OnBeforeControlPointDelete; } + set + { + if (m_OnBeforeControlPointDelete != value) + m_OnBeforeControlPointDelete = value; + } + } + + #endregion + + #endregion + + #region ### Public Static Methods ### + + /// + /// Creates an empty spline + /// + public static CurvySpline Create() + { + CurvySpline spl = new GameObject("Curvy Spline", typeof(CurvySpline)).GetComponent(); + spl.gameObject.layer = CurvyGlobalManager.SplineLayer; + spl.Start(); + return spl; + } + + /// + /// Creates an empty spline with the same settings as another spline + /// + /// another spline + public static CurvySpline Create(CurvySpline takeOptionsFrom) + { + CurvySpline spl = Create(); + if (takeOptionsFrom) + { + spl.RestrictTo2D = takeOptionsFrom.RestrictTo2D; + spl.GizmoColor = takeOptionsFrom.GizmoColor; + spl.GizmoSelectionColor = takeOptionsFrom.GizmoSelectionColor; + spl.Interpolation = takeOptionsFrom.Interpolation; + spl.Closed = takeOptionsFrom.Closed; + spl.AutoEndTangents = takeOptionsFrom.AutoEndTangents; + spl.CacheDensity = takeOptionsFrom.CacheDensity; + spl.MaxPointsPerUnit = takeOptionsFrom.MaxPointsPerUnit; + spl.Orientation = takeOptionsFrom.Orientation; + spl.CheckTransform = takeOptionsFrom.CheckTransform; + } + return spl; + } + + /// + /// Gets the number of Cache Points needed for a certain part of a spline + /// + /// A value between 1 and 100 included. When equal to 100, the number of cache points per world distance unit is equal to maxPointsPerUnit + /// the length of the spline segment + /// Maximum number of Cache Points per world distance unit + public static int CalculateCacheSize(int density, float segmentLength, float maxPointsPerUnit) + { +#if CONTRACTS_FULL + Contract.Requires(CodeContractsUtility.IsPositiveNumber(segmentLength)); +#endif + //This basically equals to Mathf.FloorToInt(length * (maxPointsPerUnit * (density - 1) / 99)² + MinimalMaxPointsPerUnit) + 1 + //Here is a plot of (density - 1) / 99)² + //https://www.wolframalpha.com/input/?i=plot+((x+-+1)+%2F+99+)%5E2+for+x+from+1+to+100 + float samplePoints = CalculateSamplingPointsPerUnit(density, maxPointsPerUnit) * segmentLength; + samplePoints = Math.Min(samplePoints, MaxSegmentCacheSize - 1); + return Mathf.FloorToInt(samplePoints) + 1; + } + + /// + /// Returns the (floating) number of sampling points per world distance unit. + /// + /// A value between 1 and 100 included. When equal to 100, the number of sampling points per world distance unit is equal to maxPointsPerUnit + /// Maximum number of sampling points per world distance unit + /// + static public float CalculateSamplingPointsPerUnit(int density, float maxPointsPerUnit) + { +#if CONTRACTS_FULL + Contract.Requires(density > 0); + Contract.Requires(density <= 100); + Contract.Requires(maxPointsPerUnit.IsPositiveNumber()); +#endif + int clampedDensity = Mathf.Clamp(density, 1, 100); + if (clampedDensity != density) + { + DTLog.LogWarning("[Curvy] CalculateSamplingPointsPerUnit got an invalid density parameter. It should be between 1 and 100. The parameter value was " + density); + density = clampedDensity; + } + + //This basically equals to (maxPointsPerUnit * (density - 1) / 99)² + MinimalMaxPointsPerUnit) + //Here is a plot of (density - 1) / 99)² + //https://www.wolframalpha.com/input/?i=plot+((x+-+1)+%2F+99+)%5E2+for+x+from+1+to+100 + return DTTween.QuadIn(density - 1, MinimalMaxPointsPerUnit, maxPointsPerUnit, 99); + } + + /// + /// Cubic-Beziere Interpolation + /// + /// HandleIn + /// Pn + /// Pn+1 + /// HandleOut + /// f in the range 0..1 + /// + public static Vector3 Bezier(Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f) + { + //If you modify this, modify also the inlined version of this method in refreshCurveINTERNAL() + + const double Ft2 = 3; const double Ft3 = -3; + const double Fu1 = 3; const double Fu2 = -6; const double Fu3 = 3; + const double Fv1 = -3; const double Fv2 = 3; + + double FAX = -P0.x + Ft2 * T0.x + Ft3 * T1.x + P1.x; + double FBX = Fu1 * P0.x + Fu2 * T0.x + Fu3 * T1.x; + double FCX = Fv1 * P0.x + Fv2 * T0.x; + double FDX = P0.x; + + double FAY = -P0.y + Ft2 * T0.y + Ft3 * T1.y + P1.y; + double FBY = Fu1 * P0.y + Fu2 * T0.y + Fu3 * T1.y; + double FCY = Fv1 * P0.y + Fv2 * T0.y; + double FDY = P0.y; + + double FAZ = -P0.z + Ft2 * T0.z + Ft3 * T1.z + P1.z; + double FBZ = Fu1 * P0.z + Fu2 * T0.z + Fu3 * T1.z; + double FCZ = Fv1 * P0.z + Fv2 * T0.z; + double FDZ = P0.z; + + float FX = (float)(((FAX * f + FBX) * f + FCX) * f + FDX); + float FY = (float)(((FAY * f + FBY) * f + FCY) * f + FDY); + float FZ = (float)(((FAZ * f + FBZ) * f + FCZ) * f + FDZ); + + Vector3 result; + result.x = FX; + result.y = FY; + result.z = FZ; + return result; + } + + //OPTIM Is using this better than using positions delta? + public static Vector3 BezierTangent(Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f) + { + Vector3 C1 = (P1 - (3.0f * T1) + (3.0f * T0) - P0); + Vector3 C2 = ((3.0f * T1) - (6.0f * T0) + (3.0f * P0)); + Vector3 C3 = ((3.0f * T0) - (3.0f * P0)); + return ((3.0f * C1 * f * f) + (2.0f * C2 * f) + C3); + } + + /// + /// Catmull-Rom Interpolation + /// + /// Pn-1 (In Tangent) + /// Pn + /// Pn+1 + /// Pn+2 (Out Tangent) + /// f in the range 0..1 + /// the interpolated position + public static Vector3 CatmullRom(Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f) + { + //If you modify this, modify also the inlined version of this method in refreshCurveINTERNAL() + + const double Ft1 = -0.5; const double Ft2 = 1.5; const double Ft3 = -1.5; const double Ft4 = 0.5; + const double Fu2 = -2.5; const double Fu3 = 2; const double Fu4 = -0.5; + const double Fv1 = -0.5; const double Fv3 = 0.5; + + double FAX = Ft1 * T0.x + Ft2 * P0.x + Ft3 * P1.x + Ft4 * T1.x; + double FBX = T0.x + Fu2 * P0.x + Fu3 * P1.x + Fu4 * T1.x; + double FCX = Fv1 * T0.x + Fv3 * P1.x; + double FDX = P0.x; + + double FAY = Ft1 * T0.y + Ft2 * P0.y + Ft3 * P1.y + Ft4 * T1.y; + double FBY = T0.y + Fu2 * P0.y + Fu3 * P1.y + Fu4 * T1.y; + double FCY = Fv1 * T0.y + Fv3 * P1.y; + double FDY = P0.y; + + double FAZ = Ft1 * T0.z + Ft2 * P0.z + Ft3 * P1.z + Ft4 * T1.z; + double FBZ = T0.z + Fu2 * P0.z + Fu3 * P1.z + Fu4 * T1.z; + double FCZ = Fv1 * T0.z + Fv3 * P1.z; + double FDZ = P0.z; + + float FX = (float)(((FAX * f + FBX) * f + FCX) * f + FDX); + float FY = (float)(((FAY * f + FBY) * f + FCY) * f + FDY); + float FZ = (float)(((FAZ * f + FBZ) * f + FCZ) * f + FDZ); + + Vector3 result; + result.x = FX; + result.y = FY; + result.z = FZ; + return result; + } + + /// + /// Kochanek-Bartels/TCB-Interpolation + /// + /// Pn-1 (In Tangent) + /// Pn + /// Pn+1 + /// Pn+2 (Out Tangent) + /// f in the range 0..1 + /// Start Tension + /// Start Continuity + /// Start Bias + /// End Tension + /// End Continuity + /// End Bias + /// the interpolated position + public static Vector3 TCB(Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f, float FT0, float FC0, float FB0, float FT1, float FC1, float FB1) + { + //If you modify this, modify also the inlined version of this method in refreshCurveINTERNAL() + + double FFA = (1 - FT0) * (1 + FC0) * (1 + FB0); + double FFB = (1 - FT0) * (1 - FC0) * (1 - FB0); + double FFC = (1 - FT1) * (1 - FC1) * (1 + FB1); + double FFD = (1 - FT1) * (1 + FC1) * (1 - FB1); + + double DD = 2; + double Ft1 = -FFA / DD; double Ft2 = (+4 + FFA - FFB - FFC) / DD; double Ft3 = (-4 + FFB + FFC - FFD) / DD; double Ft4 = FFD / DD; + double Fu1 = +2 * FFA / DD; double Fu2 = (-6 - 2 * FFA + 2 * FFB + FFC) / DD; double Fu3 = (+6 - 2 * FFB - FFC + FFD) / DD; double Fu4 = -FFD / DD; + double Fv1 = -FFA / DD; double Fv2 = (FFA - FFB) / DD; double Fv3 = FFB / DD; + double Fw2 = +2 / DD; + + double FAX = Ft1 * T0.x + Ft2 * P0.x + Ft3 * P1.x + Ft4 * T1.x; + double FBX = Fu1 * T0.x + Fu2 * P0.x + Fu3 * P1.x + Fu4 * T1.x; + double FCX = Fv1 * T0.x + Fv2 * P0.x + Fv3 * P1.x; + double FDX = Fw2 * P0.x; + + double FAY = Ft1 * T0.y + Ft2 * P0.y + Ft3 * P1.y + Ft4 * T1.y; + double FBY = Fu1 * T0.y + Fu2 * P0.y + Fu3 * P1.y + Fu4 * T1.y; + double FCY = Fv1 * T0.y + Fv2 * P0.y + Fv3 * P1.y; + double FDY = Fw2 * P0.y; + + double FAZ = Ft1 * T0.z + Ft2 * P0.z + Ft3 * P1.z + Ft4 * T1.z; + double FBZ = Fu1 * T0.z + Fu2 * P0.z + Fu3 * P1.z + Fu4 * T1.z; + double FCZ = Fv1 * T0.z + Fv2 * P0.z + Fv3 * P1.z; + double FDZ = Fw2 * P0.z; + + float FX = (float)(((FAX * f + FBX) * f + FCX) * f + FDX); + float FY = (float)(((FAY * f + FBY) * f + FCY) * f + FDY); + float FZ = (float)(((FAZ * f + FBZ) * f + FCZ) * f + FDZ); + + Vector3 result; + result.x = FX; + result.y = FY; + result.z = FZ; + return result; + } + + + /// + /// This method returns the Control Point next to the Follow-Up, based on the ConnectionHeadingEnum's value + /// + /// The Control Point used as a Follow-Up + /// The head to direction + /// The Control Point the Follow-Up is heading to + [NotNull] + public static CurvySplineSegment GetFollowUpHeadingControlPoint(CurvySplineSegment followUp, ConnectionHeadingEnum headingDirection) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(followUp != null); + Assert.IsTrue(followUp.Spline != null); +#endif + ConnectionHeadingEnum resolveHeading = headingDirection.ResolveAuto(followUp); + CurvySplineSegment result; + switch (resolveHeading) + { + case ConnectionHeadingEnum.Minus: + result = followUp.Spline.GetPreviousControlPoint(followUp); + break; + case ConnectionHeadingEnum.Plus: + result = followUp.Spline.GetNextControlPoint(followUp); + break; + case ConnectionHeadingEnum.Sharp: + result = followUp; + break; + default: + throw new ArgumentOutOfRangeException(); + } + return result; + } + + #endregion + + #region ### Public Methods ### + + #region --- Methods based on TF (total fragment) --- + + /// + /// Gets the position of a point on the spline segment + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 Interpolate(float tf, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + return seg.Interpolate(localF, space); + + return space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets the position of a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 InterpolateFast(float tf, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + return seg.InterpolateFast(localF, space); + + return space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets the position of a point on the spline segment + /// + /// The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to inclusive + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 InterpolateByDistance(float distance, Space space = Space.Self) + { + return Interpolate(DistanceToTF(distance), space); + } + + /// + /// Gets the position of a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to inclusive + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 InterpolateByDistanceFast(float distance, Space space = Space.Self) + { + return InterpolateFast(DistanceToTF(distance), space); + } + + /// + /// Gets the normalized tangent at a point on the spline segment + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 GetTangent(float tf, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + return seg.GetTangent(localF, space); + + return space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets the normalized tangent at a point on the spline segment. + /// This method is faster than if you have already the position of the point. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// the position of the point at localF. In other words, the result of + /// The space (local/object or global/world) in which the returned result and the parameter are expressed + public Vector3 GetTangent(float tf, Vector3 position, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + return seg.GetTangent(localF, position, space); + + return space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets the normalized tangent at a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 GetTangentFast(float tf, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + return seg.GetTangentFast(localF, space); + + return space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets the normalized tangent at a point on the spline segment + /// + /// The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to inclusive + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 GetTangentByDistance(float distance, Space space = Space.Self) + { + return GetTangent(DistanceToTF(distance), space); + } + + /// + /// Gets the normalized tangent at a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to inclusive + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 GetTangentByDistanceFast(float distance, Space space = Space.Self) + { + return GetTangentFast(DistanceToTF(distance), space); + } + + /// + /// Gets the position and normalized tangent at a point on the spline segment + /// Is Faster than calling and separately + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// the output position + /// the output tangent + /// The space (local/object or global/world) in which the returned result is expressed + public void InterpolateAndGetTangent(float tf, out Vector3 position, out Vector3 tangent, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + seg.InterpolateAndGetTangent(localF, out position, out tangent, space); + else + position = tangent = space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets the position and normalized tangent at a point on the spline segment + /// Is Faster than calling and separately + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// the output position + /// the output tangent + /// The space (local/object or global/world) in which the returned result is expressed + public void InterpolateAndGetTangentFast(float tf, out Vector3 position, out Vector3 tangent, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + seg.InterpolateAndGetTangentFast(localF, out position, out tangent, space); + else + position = tangent = space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets the Up vector of a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// The space (local/object or global/world) in which the returned result is expressed + public Vector3 GetOrientationUpFast(float tf, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + return seg.GetOrientationUpFast(localF, space); + + return space == Space.Self ? Vector3.zero : cachedTransform.position; + } + + /// + /// Gets a rotation looking to Tangent with the head upwards along the Up-Vector + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// whether the orientation should be inversed or not + /// The space (local/object or global/world) in which the returned result is expressed + /// a rotation, relative to the spline's local space + public Quaternion GetOrientationFast(float tf, bool inverse = false, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + if (ReferenceEquals(seg, null) == false) + return seg.GetOrientationFast(localF, inverse, space); + + return space == Space.Self ? Quaternion.identity : cachedTransform.rotation; + } + + /// + /// Gets metadata for a certain TF + /// + /// Metadata type interfacing ICurvyMetadata + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// the metadata + public T GetMetadata(float tf) where T : CurvyMetadataBase + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + return ReferenceEquals(seg, null) == false ? seg.GetMetadata() : null; + } + + + /// + /// Gets an interpolated Metadata value for a certain TF + /// + /// Metadata type inheriting from CurvyInterpolatableMetadataBase + /// Metadata's Value type + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// The interpolated value. If no Metadata of specified type is present at the given tf, the default value of type U is returned + public U GetInterpolatedMetadata(float tf) where T : CurvyInterpolatableMetadataBase + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF); + return ReferenceEquals(seg, null) == false ? seg.GetInterpolatedMetadata(localF) : default(U); + } + + #endregion + + #region --- Conversion Methods --- + + /// + /// Converts a TF value to a distance + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// Clamping to use + /// distance from spline's start + public float TFToDistance(float tf, CurvyClamping clamping = CurvyClamping.Clamp) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + float splineLength = Length; + + float result; + if (splineLength == 0) + result = 0; + else if (tf == 0) + result = 0; + else if (tf == 1) + result = splineLength; + else + { + float localF; + CurvySplineSegment seg = TFToSegment(tf, out localF, clamping); + result = (ReferenceEquals(seg, null) == false) ? seg.Distance + seg.LocalFToDistance(localF) : 0; + } + return result; + } + + /// + /// Gets the segment and the local F for a certain TF + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// gets the remaining localF in the range 0..1 + /// Is True if the given distance is positioned at the returned segment's start + /// Is True if the given distance is positioned at the returned segment's end + /// Clamping to use + /// the segment the given TF is inside + public CurvySplineSegment TFToSegment(float tf, out float localF, out bool isOnSegmentStart, out bool isOnSegmentEnd, CurvyClamping clamping) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + tf = CurvyUtility.ClampTF(tf, clamping); + int segmentsCount = Count; + if (segmentsCount == 0) + { + localF = 0; + isOnSegmentStart = false; + isOnSegmentEnd = false; + return null; + } + + float f = tf * segmentsCount; + int idx = (int)f; + localF = f - idx; + + if (idx == segmentsCount) + { + idx--; + localF = 1; + } + + isOnSegmentStart = f == (float)idx; + isOnSegmentEnd = tf == 1f; + + return this[idx]; + } + + /// + /// Gets the segment and the local F for a certain TF + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// gets the remaining localF in the range 0..1 + /// Clamping to use + /// the segment the given TF is inside + public CurvySplineSegment TFToSegment(float tf, out float localF, CurvyClamping clamping) + { + bool isOnSegmentFirstCp; + bool isOnSegmentLastCp; + return TFToSegment(tf, out localF, out isOnSegmentFirstCp, out isOnSegmentLastCp, clamping); + } + + /// + /// Gets the segment for a certain TF + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// Clamping to use + /// the segment the given TF is inside + public CurvySplineSegment TFToSegment(float tf, CurvyClamping clamping) + { + float f; + return TFToSegment(tf, out f, clamping); + } + + /// + /// Gets the segment for a certain TF clamped to 0..1 + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// the segment the given TF is inside + public CurvySplineSegment TFToSegment(float tf) + { + float f; + return TFToSegment(tf, out f, CurvyClamping.Clamp); + } + /// + /// Gets the segment and the local F for a certain TF clamped to 0..1 + /// + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// gets the remaining localF in the range 0..1 + /// the segment the given TF is inside + public CurvySplineSegment TFToSegment(float tf, out float localF) + { + return TFToSegment(tf, out localF, CurvyClamping.Clamp); + } + + /// + /// Gets a TF value from a segment + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// a segment + /// a TF value in the range 0..1 + public float SegmentToTF(CurvySplineSegment segment) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, segment.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, segment, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return segment.GetExtrinsicPropertiesINTERNAL().TF; + } + + /// + /// Gets a TF value from a segment and a local F + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// a segment + /// F of this segment in the range 0..1 + /// a TF value in the range 0..1 + public float SegmentToTF(CurvySplineSegment segment, float localF) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, segment.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, segment, name)); + Assert.IsTrue(localF.IsBetween0And1(), localF.ToString("R")); +#endif + + float result; + if (IsControlPointASegment(segment)) + { + //OPTIM a possible optimization would be to make this branch of the if the only executed code, so no call to IsControlPointASegment. the comparison with 1 bellow will take care of the last cp. The only remaining issue would be to handle the fake first cp create by AutoEndTangents for CatmullRom and TCB splines. I believe the only way to handle it would be to have separate treatment for autoendtangents. Might still be worth it. + + result = SegmentToTF(segment) + (localF / Count); + //sometimes due to float imprecision, result can go beyond 1 + if (result > 1) + result = 1; + } + else + result = SegmentToTF(segment); + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(result.IsBetween0And1(), result.ToString("R")); +#endif + + return result; + } + + /// + /// Converts a distance to a TF value + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// distance + /// Clamping to use + /// a TF value in the range 0..1 + public float DistanceToTF(float distance, CurvyClamping clamping = CurvyClamping.Clamp) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + float result; + if (Length == 0) + result = 0; + else if (distance == 0) + result = 0; + else if (distance == Length) + result = 1; + else + { + float localDistance; + // Get the segment the distance lies within + CurvySplineSegment seg = DistanceToSegment(distance, out localDistance, clamping); + result = ReferenceEquals(seg, null) == false ? SegmentToTF(seg, seg.DistanceToLocalF(localDistance)) : 0; + } + return result; + } + + /// + /// Gets the segment a certain distance lies within + /// + /// a distance in the range 0..Length + /// clamping to use + /// a spline segment or null + public CurvySplineSegment DistanceToSegment(float distance, CurvyClamping clamping = CurvyClamping.Clamp) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + float d; + return DistanceToSegment(distance, out d, clamping); + } + + /// + /// Gets the segment a certain distance lies within + /// + /// a distance in the range 0..Length + /// gets the remaining distance inside the segment + /// clamping to use + /// a spline segment + public CurvySplineSegment DistanceToSegment(float distance, out float localDistance, CurvyClamping clamping = CurvyClamping.Clamp) + { + bool isOnSegmentFirstCp; + bool isOnSegmentLastCp; + return DistanceToSegment(distance, out localDistance, out isOnSegmentFirstCp, out isOnSegmentLastCp, clamping); + } + + /// + /// Gets the segment a certain distance lies within + /// + /// a distance in the range 0..Length + /// gets the remaining distance inside the segment + /// Is True if the given distance is positioned at the returned segment's start + /// Is True if the given distance is positioned at the returned segment's end + /// clamping to use + /// a spline segment + public CurvySplineSegment DistanceToSegment(float distance, out float localDistance, out bool isOnSegmentStart, out bool isOnSegmentEnd, CurvyClamping clamping = CurvyClamping.Clamp) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + distance = CurvyUtility.ClampDistance(distance, clamping, Length); + CurvySplineSegment resultSegment; + if (Count > 0) + { + int resultCpIndex = CurvyUtility.InterpolationSearch(controlPointsDistances, controlPointsDistances.Length, distance); + bool notAutoEndTangents = AutoEndTangents == false; + int cpCount = ControlPointsList.Count; + if (notAutoEndTangents) + { +#if CURVY_SANITY_CHECKS_PRIVATE + UnityEngine.Assertions.Assert.IsFalse(Closed); +#endif + if (resultCpIndex == 0) + resultCpIndex = 1; + else if (resultCpIndex == cpCount - 1 || resultCpIndex == cpCount - 2) + resultCpIndex = cpCount - 3; + } + else if (Closed == false && resultCpIndex == cpCount - 1) + resultCpIndex = cpCount - 2; + + resultSegment = ControlPointsList[resultCpIndex]; + localDistance = distance - resultSegment.Distance; + + isOnSegmentStart = distance == resultSegment.Distance; + isOnSegmentEnd = distance == Length; + } + else + { + resultSegment = null; + localDistance = -1; + isOnSegmentStart = false; + isOnSegmentEnd = false; + } + + return resultSegment; + } + + + #endregion + + + #region Clamping + + /// + /// Clamps absolute position + /// + public float ClampDistance(float distance, CurvyClamping clamping) + { + return CurvyUtility.ClampDistance(distance, clamping, Length); + } + + /// + /// Clamps absolute position + /// + public float ClampDistance(float distance, CurvyClamping clamping, float min, float max) + { + return CurvyUtility.ClampDistance(distance, clamping, Length, min, max); + } + + /// + /// Clamps absolute position and sets new direction + /// + public float ClampDistance(float distance, ref int dir, CurvyClamping clamping) + { + return CurvyUtility.ClampDistance(distance, ref dir, clamping, Length); + } + + /// + /// Clamps absolute position and sets new direction + /// + public float ClampDistance(float distance, ref int dir, CurvyClamping clamping, float min, float max) + { + return CurvyUtility.ClampDistance(distance, ref dir, clamping, Length, min, max); + } + + #endregion + + #region --- General --- + + /// + /// Adds a Control Point at the end of the spline + /// This method will the spline and call the relevant events. + /// If you want more control on the order of the added Control Point, its position, or whether and events should be called, use the and and instead + /// + /// The added Control Point + public CurvySplineSegment Add() { return InsertAfter(null, false); } + + /// + /// Adds several Control Points at the end of the spline + /// This method will the spline and call the relevant events. + /// If you want more control on the order of the added Control Points, their position, or whether and events should be called, use the and instead + /// + /// The position of the Control Point to add + /// Whether the position is in the local or global space + /// The added Control Points + public CurvySplineSegment Add(Vector3 controlPointPosition, Space space) + { + OnBeforeControlPointAddEvent(defaultAddAfterEventArgs); + + CurvySplineSegment result = InsertAfter(null, controlPointPosition, true, space); + + Refresh(); + OnAfterControlPointAddEvent(defaultAddAfterEventArgs); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); + + return result; + } + + /// + /// Adds several Control Points at the end of the spline + /// This method will the spline and call the relevant events. + /// If you want more control on the order of the added Control Points, their position, or whether and events should be called, use the and and instead + /// + /// The local position of the Control Points to add + /// The added Control Points + public CurvySplineSegment[] Add(params Vector3[] controlPointsLocalPositions) + { + OnBeforeControlPointAddEvent(defaultAddAfterEventArgs); + + CurvySplineSegment[] cps = new CurvySplineSegment[controlPointsLocalPositions.Length]; + for (int i = 0; i < controlPointsLocalPositions.Length; i++) + cps[i] = InsertAfter(null, controlPointsLocalPositions[i], true, Space.Self); + + Refresh(); + OnAfterControlPointAddEvent(defaultAddAfterEventArgs); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); + + return cps; + } + + /// + /// Adds several Control Points at the end of the spline + /// This method will the spline and call the relevant events. + /// If you want more control on the order of the added Control Points, their position, or whether and events should be called, use the and instead + /// + /// The positions of the Control Points to add + /// Whether the positions are in the local or global space + /// The added Control Points + public CurvySplineSegment[] Add(Vector3[] controlPointsPositions, Space space) + { + OnBeforeControlPointAddEvent(defaultAddAfterEventArgs); + + CurvySplineSegment[] cps = new CurvySplineSegment[controlPointsPositions.Length]; + for (int i = 0; i < controlPointsPositions.Length; i++) + cps[i] = InsertAfter(null, controlPointsPositions[i], true, space); + + Refresh(); + OnAfterControlPointAddEvent(defaultAddAfterEventArgs); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); + + return cps; + } + + /// + /// Inserts a Control Point before a given Control Point + /// + /// If you add several Control Points in a row, using will be more efficient + /// A control point of the spline, before which the new control point will be added. If null, the CP will be added at the start of the spline + /// The created Control Point + /// If true, the spline's method will not be called, and the relevant events will not be triggered + public CurvySplineSegment InsertBefore(CurvySplineSegment controlPoint, bool skipRefreshingAndEvents = false) + { + Vector3 position; + CurvySplineSegment previousControlPoint; + if (controlPoint && (previousControlPoint = GetPreviousControlPoint(controlPoint))) + position = IsControlPointASegment(previousControlPoint) ? + previousControlPoint.Interpolate(0.5f, Space.World) : + OptimizedOperators.LerpUnclamped(previousControlPoint.transform.position, controlPoint.transform.position, 0.5f); + else + position = transform.position; + + return InsertBefore(controlPoint, position, skipRefreshingAndEvents, Space.World); + } + + /// + /// Inserts a Control Point before a given Control Point + /// + /// If you add several Control Points in a row, using will be more efficient + /// A control point of the spline, before which the new control point will be added. If null, the CP will be added at the start of the spline + /// The position of the control point at its creation + /// If true, the spline's method will not be called, and the relevant events will not be triggered + /// Whether the position is in the local or global space + /// The created Control Point + public CurvySplineSegment InsertBefore([CanBeNull] CurvySplineSegment controlPoint, Vector3 position, bool skipRefreshingAndEvents = false, Space space = Space.World) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(controlPoint, null) == false && ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + return InsertAt( + controlPoint, + position, + ReferenceEquals(controlPoint, null) == false + ? Mathf.Max(0, GetControlPointIndex(controlPoint)) + : 0, + CurvyControlPointEventArgs.ModeEnum.AddBefore, + skipRefreshingAndEvents, + space); + } + + /// + /// Inserts a Control Point after a given Control Point + /// + /// If you add several Control Points in a row, using will be more efficient + /// A control point of the spline, behind which the new control point will be added. If null, the CP will be added at the end of the spline + /// If true, the spline's method will not be called, and the relevant events will not be triggered + /// the new Control Point + public CurvySplineSegment InsertAfter(CurvySplineSegment controlPoint, bool skipRefreshingAndEvents = false) + { + Vector3 position; + if (controlPoint) + { + if (IsControlPointASegment(controlPoint)) + position = controlPoint.Interpolate(0.5f, Space.World); + else + { + CurvySplineSegment nextControlPoint = GetNextControlPoint(controlPoint); + position = nextControlPoint + ? OptimizedOperators.LerpUnclamped(nextControlPoint.transform.position, controlPoint.transform.position, 0.5f) + : controlPoint.transform.position; + } + } + else + position = transform.position; + + return InsertAfter(controlPoint, position, skipRefreshingAndEvents, Space.World); + } + + /// + /// Inserts a Control Point after a given Control Point + /// + /// If you add several Control Points in a row, using will be more efficient + /// A control point of the spline, behind which the new control point will be added. If null, the CP will be added at the end of the spline + /// The position of the control point at its creation + /// If true, the spline's method will not be called, and the relevant events will not be triggered + /// Whether the position is in the local or global space + /// the new Control Point + public CurvySplineSegment InsertAfter([CanBeNull] CurvySplineSegment controlPoint, Vector3 position, bool skipRefreshingAndEvents = false, Space space = Space.World) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(controlPoint, null) == false && ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + return InsertAt( + controlPoint, + position, + ReferenceEquals(controlPoint, null) == false + ? GetControlPointIndex(controlPoint) + 1 + : ControlPoints.Count, + CurvyControlPointEventArgs.ModeEnum.AddAfter, + skipRefreshingAndEvents, + space); + } + + /// + /// Removes all control points + /// If true, the clearing of the spline is made undoable (CTRL+Z) in the editor + /// + public void Clear(bool isUndoable = true) + { + OnBeforeControlPointDeleteEvent(defaultDeleteEventArgs); + + for (int i = ControlPointCount - 1; i >= 0; i--) + if (UsePooling && Application.isPlaying) + { + CurvyGlobalManager curvyGlobalManager = CurvyGlobalManager.Instance; + if (curvyGlobalManager == null) + DTLog.LogError("[Curvy] Couldn't find Curvy Global Manager. Please raise a bug report."); + else + curvyGlobalManager.ControlPointPool.Push(ControlPoints[i]); + } + else + { +#if UNITY_EDITOR + if (!Application.isPlaying) + //BUG I am sure this is source of bug if the scene has an id 42. Check this potential issue + _newSelectionInstanceIDINTERNAL = 42; // Prevent selection of another CP/Spline +#endif + ControlPoints[i].gameObject.Destroy(isUndoable, true); + } + + ClearControlPoints(); + + Refresh(); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); +#if UNITY_EDITOR + _newSelectionInstanceIDINTERNAL = 0; +#endif + } + + /// + /// Deletes a Control Point + /// + /// a Control Point + /// If true, the spline's method will not be called, and the relevant events will not be triggered + public void Delete(CurvySplineSegment controlPoint, bool skipRefreshingAndEvents = false) + { + Delete(controlPoint, skipRefreshingAndEvents, true); + } + + /// + /// Deletes a Control Point + /// + /// a Control Point + /// If true, the spline's method will not be called, and the relevant events will not be triggered + /// If true, the destruction of the control point's game object is made undoable (CTRL+Z) in the editor + public void Delete(CurvySplineSegment controlPoint, bool skipRefreshingAndEvents, bool isUndoableDeletion) + { + if (!controlPoint) + return; + +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (skipRefreshingAndEvents == false) + OnBeforeControlPointDeleteEvent(new CurvyControlPointEventArgs(this, this, controlPoint, CurvyControlPointEventArgs.ModeEnum.Delete)); + + RemoveControlPoint(controlPoint); + +#if UNITY_EDITOR == false + //TODO do we need this SetAsLastSibling? + controlPoint.transform.SetAsLastSibling();// IMPORTANT! Runtime Delete is delayed, so we need to make sure it got sorted to the end +#endif + if (UsePooling && Application.isPlaying) + { + CurvyGlobalManager curvyGlobalManager = CurvyGlobalManager.Instance; + if (curvyGlobalManager == null) + DTLog.LogError("[Curvy] Couldn't find Curvy Global Manager. Please raise a bug report."); + else + curvyGlobalManager.ControlPointPool.Push(controlPoint); + } + else + { +#if UNITY_EDITOR + if (!Application.isPlaying) + //BUG I am sure this is source of bug if the scene has an id 42. Check this potential issue + _newSelectionInstanceIDINTERNAL = 42; // Prevent selection of another CP/Spline +#endif + controlPoint.gameObject.Destroy(isUndoableDeletion, true); + } + + if (skipRefreshingAndEvents == false) + { + Refresh(); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); + } + } + + #region Cache access + + /// + /// Gets an array containing all approximation points + /// + /// The space (local/object or global/world) in which the returned result is expressed + /// Returns a copy of the internal cache + /// an array of world/local positions + public SubArray GetPositionsCache(Space space) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + SubArray result = ArrayPools.Vector3.Allocate(CacheSize + 1); + Vector3[] resultArray = result.Array; + + int idx = 0; + for (int si = 0; si < Count; si++) + { + this[si].Approximation.CopyTo(resultArray, idx); + idx += Mathf.Max(0, this[si].Approximation.Length - 1); + } + + if (space == Space.World) + { + Matrix4x4 m = transform.localToWorldMatrix; + for (int i = 0; i < result.Count; i++) + resultArray[i] = m.MultiplyPoint3x4(resultArray[i]); + } + + return result; + } + + /// + /// Gets an array containing all approximation points + /// + /// The space (local/object or global/world) in which the returned result is expressed + /// This can be used to feed meshbuilders etc... + /// an array of world/local positions + [Obsolete("Use GetPositionsCache instead")] + public Vector3[] GetApproximation(Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + Vector3[] apps = new Vector3[CacheSize + 1]; + int idx = 0; + for (int si = 0; si < Count; si++) + { + this[si].Approximation.CopyTo(apps, idx); + idx += Mathf.Max(0, this[si].Approximation.Length - 1); + } + + if (space == Space.World) + { + Matrix4x4 m = transform.localToWorldMatrix; + for (int i = 0; i < apps.Length; i++) + apps[i] = m.MultiplyPoint3x4(apps[i]); + } + + return apps; + } + + /// + /// Gets all Approximation points for a given spline part + /// + /// start TF + /// end TF + /// Whether the end position should be included + /// The space (local/object or global/world) in which the returned result is expressed + /// an array of Approximation points + // DESIGN Make a GetPositionsCache equivalent, then make obsolete and remove/rename getApproximationIndexINTERNAL + public Vector3[] GetApproximation(float fromTF, float toTF, bool includeEndPoint = true, Space space = Space.Self) + { + float startLF; + float startFrag; + float endLF; + float endFrag; + CurvySplineSegment startSeg = TFToSegment(fromTF, out startLF); + int startIdx = startSeg.getApproximationIndexINTERNAL(startLF, out startFrag); + CurvySplineSegment endSeg = TFToSegment(toTF, out endLF); + int endIdx = endSeg.getApproximationIndexINTERNAL(endLF, out endFrag); + + CurvySplineSegment seg = startSeg; + //bug usage of startIdx + 1 whithout checking if it is not out of bounds, which may happen if seg's length is 0 + Vector3[] res = new Vector3[1] { Vector3.Lerp(seg.Approximation[startIdx], seg.Approximation[startIdx + 1], startFrag) }; + //if (startFrag == 1) + // seg = seg.NextSegment; + while (seg && ReferenceEquals(seg, endSeg) == false) + { + res = res.AddRange(seg.Approximation.SubArray(startIdx + 1, seg.Approximation.Length - 1)); + startIdx = 1; + seg = seg.Spline.GetNextSegment(seg); + } + if (ReferenceEquals(seg, null) == false) + { + int i = (startSeg == seg) ? startIdx + 1 : 1; + res = res.AddRange(seg.Approximation.SubArray(i, endIdx - i)); + if (includeEndPoint && (endFrag > 0 || endFrag < 1)) + { + res = res.Add(Vector3.Lerp(seg.Approximation[endIdx], seg.Approximation[endIdx + 1], endFrag)); + } + } + + if (space == Space.World) + { + Matrix4x4 m = transform.localToWorldMatrix; + for (int i = 0; i < res.Length; i++) + res[i] = m.MultiplyPoint3x4(res[i]); + } + + return res; + } + + /// + /// Gets an array containing all approximation tangents + /// + /// The space (local/object or global/world) in which the returned result is expressed + /// Returns a copy of the internal cache + /// an array of tangents + public SubArray GetTangentsCache(Space space) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + SubArray result = ArrayPools.Vector3.Allocate(CacheSize + 1); + Vector3[] resultArray = result.Array; + + int idx = 0; + for (int si = 0; si < Count; si++) + { + this[si].ApproximationT.CopyTo(resultArray, idx); + idx += Mathf.Max(0, this[si].ApproximationT.Length - 1); + } + + if (space == Space.World) + { + Matrix4x4 m = transform.localToWorldMatrix; + for (int i = 0; i < result.Count; i++) + resultArray[i] = m.MultiplyVector(resultArray[i]); + } + + return result; + } + + /// + /// Gets an array containing all approximation tangents + /// + /// The space (local/object or global/world) in which the returned result is expressed + /// This can be used to feed meshbuilders etc... + /// an array of tangents + [Obsolete("Use GetTangentsCache instead")] + public Vector3[] GetApproximationT(Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + Vector3[] apps = new Vector3[CacheSize + 1]; + int idx = 0; + for (int si = 0; si < Count; si++) + { + this[si].ApproximationT.CopyTo(apps, idx); + idx += Mathf.Max(0, this[si].ApproximationT.Length - 1); + } + + if (space == Space.World) + { + Matrix4x4 m = transform.localToWorldMatrix; + for (int i = 0; i < apps.Length; i++) + apps[i] = m.MultiplyVector(apps[i]); + } + + return apps; + } + + /// + /// Gets an array containing all approximation Up-Vectors + /// + /// The space (local/object or global/world) in which the returned result is expressed + /// Returns a copy of the internal cache + /// an array of Up-Vectors + public SubArray GetNormalsCache(Space space) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + SubArray result = ArrayPools.Vector3.Allocate(CacheSize + 1); + Vector3[] resultArray = result.Array; + + int idx = 0; + for (int si = 0; si < Count; si++) + { + this[si].ApproximationUp.CopyTo(resultArray, idx); + idx += Mathf.Max(0, this[si].ApproximationUp.Length - 1); + } + + if (space == Space.World) + { + Matrix4x4 m = transform.localToWorldMatrix; + for (int i = 0; i < result.Count; i++) + resultArray[i] = m.MultiplyVector(resultArray[i]); + } + + return result; + } + + /// + /// Gets an array containing all approximation Up-Vectors + /// + /// The space (local/object or global/world) in which the returned result is expressed + /// This can be used to feed meshbuilders etc... + /// an array of Up-Vectors + [Obsolete("Use GetNormalsCache instead")] + public Vector3[] GetApproximationUpVectors(Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + Vector3[] apps = new Vector3[CacheSize + 1]; + int idx = 0; + for (int si = 0; si < Count; si++) + { + this[si].ApproximationUp.CopyTo(apps, idx); + idx += Mathf.Max(0, this[si].ApproximationUp.Length - 1); + } + + if (space == Space.World) + { + Matrix4x4 m = transform.localToWorldMatrix; + for (int i = 0; i < apps.Length; i++) + apps[i] = m.MultiplyVector(apps[i]); + } + + return apps; + } + + #endregion + + /// + /// Gets the point on the spline that is the nearest to a given + /// + /// The input point's position + /// The space (local/object or global/world) in which the and the returned value are expressed + /// This method's precision and speed depend on the + /// The nearest point on the spline to the given , expressed in the space defined by the parameter + public Vector3 GetNearestPoint(Vector3 position, Space space) + { + Vector3 result; + GetNearestPointTF(position, out result, out _, out _, 0, -1, space); + return result; + } + + /// + /// Gets the TF value of the point on the spline that is the nearest to a given position + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// The point's position expressed in the spline's local space + /// This method's precision and speed depend on the + /// a TF value in the range 0..1. If spline has no segments the returned value will be -1 + public float GetNearestPointTF(Vector3 localPosition) + { + Vector3 nearestPoint; + CurvySplineSegment nearestSegment; + float nearestSegmentF; + return GetNearestPointTF(localPosition, out nearestPoint, out nearestSegment, out nearestSegmentF, 0, -1, Space.Self); + } + + /// + /// Gets the TF value of the point on the spline that is the nearest to a given position + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// The point's position + /// The space (local/object or global/world) in which the is expressed + /// This method's precision and speed depend on the + /// a TF value in the range 0..1. If spline has no segments the returned value will be -1 + public float GetNearestPointTF(Vector3 position, Space space) + { + Vector3 nearestPoint; + CurvySplineSegment nearestSegment; + float nearestSegmentF; + return GetNearestPointTF(position, out nearestPoint, out nearestSegment, out nearestSegmentF, 0, -1, space); + } + + /// + /// Gets the TF value of the point on the spline that is the nearest to a given position + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// The point's position expressed in the spline's local space + /// the nearest point on the spline to the given , expressed in the local space + /// This method's precision and speed depend on the + /// a TF value in the range 0..1. If spline has no segments the returned value will be -1 + public float GetNearestPointTF(Vector3 localPosition, out Vector3 nearestPoint) + { + CurvySplineSegment nearestSegment; + float nearestSegmentF; + return GetNearestPointTF(localPosition, out nearestPoint, out nearestSegment, out nearestSegmentF, 0, -1, Space.Self); + } + + /// + /// Gets the TF value of the point on the spline that is the nearest to a given position + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// The point's position + /// the nearest point on the spline to the given , expressed in the space defined by the parameter + /// The space (local/object or global/world) in which the is expressed + /// This method's precision and speed depend on the + /// a TF value in the range 0..1. If spline has no segments the returned value will be -1 + public float GetNearestPointTF(Vector3 position, out Vector3 nearestPoint, Space space) + { + CurvySplineSegment nearestSegment; + float nearestSegmentF; + return GetNearestPointTF(position, out nearestPoint, out nearestSegment, out nearestSegmentF, 0, -1, space); + } + + /// + /// Gets the TF value of the point on the spline that is the nearest to a given position + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// The point's position + /// the index of the first segment to include in the search. Set it to 0 to start searching from the spline's start + /// the index of the last segment to include in the search. Set it to -1 to search until the spline's end + /// The space (local/object or global/world) in which the is expressed + /// This method's precision and speed depend on the + /// a TF value in the range 0..1. If spline has no segments the returned value will be -1 + public float GetNearestPointTF(Vector3 position, int searchStartSegmentIndex = 0, int searchEndSegmentIndex = -1, Space space = Space.Self) + { + Vector3 nearestPoint; + CurvySplineSegment nearestSegment; + float nearestSegmentF; + return GetNearestPointTF(position, out nearestPoint, out nearestSegment, out nearestSegmentF, searchStartSegmentIndex, searchEndSegmentIndex, space); + } + + /// + /// Gets the TF value of the point on the spline that is the nearest to a given position + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// The point's position + /// the nearest point on the spline to the given , expressed in the space defined by the parameter + /// the index of the first segment to include in the search. Set it to 0 to start searching from the spline's start + /// the index of the last segment to include in the search. Set it to -1 to search until the spline's end + /// The space (local/object or global/world) in which the is expressed + /// This method's precision and speed depend on the + /// a TF value in the range 0..1. If spline has no segments the returned value will be -1 + public float GetNearestPointTF(Vector3 position, out Vector3 nearestPoint, int searchStartSegmentIndex = 0, int searchEndSegmentIndex = -1, Space space = Space.Self) + { + CurvySplineSegment nearestSegment; + float nearestSegmentF; + return GetNearestPointTF(position, out nearestPoint, out nearestSegment, out nearestSegmentF, searchStartSegmentIndex, searchEndSegmentIndex, space); + } + + /// + /// Gets the TF value of the point on the spline that is the nearest to a given position + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// The point's position + /// the nearest point on the spline to the given , expressed in the space defined by the parameter + /// the nearest segment of the spline to the given + /// LocalF of the nearest point on the nearest segment + /// the index of the first segment to include in the search. Set it to 0 to start searching from the spline's start + /// the index of the last segment to include in the search. Set it to -1 to search until the spline's end + /// The space (local/object or global/world) in which the is expressed + /// This method's precision and speed depend on the + /// a TF value in the range 0..1. If spline has no segments the returned value will be -1 + public float GetNearestPointTF(Vector3 position, out Vector3 nearestPoint, [CanBeNull] out CurvySplineSegment nearestSegment, out float nearestPointLocalF, int searchStartSegmentIndex = 0, int searchEndSegmentIndex = -1, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + DoSanityChecks(); +#endif + + nearestPoint = Vector3.zero; + if (Count == 0) + { + nearestSegment = null; + nearestPointLocalF = -1; + return -1; + } + // for each segment, get the distance to it's approximation points + float distSqr = float.MaxValue; + float resF = 0; + + CurvySplineSegment resSeg = null; + if (searchEndSegmentIndex == -1) + searchEndSegmentIndex = Count - 1; + searchStartSegmentIndex = Mathf.Clamp(searchStartSegmentIndex, 0, Count - 1); + searchEndSegmentIndex = Mathf.Clamp(searchEndSegmentIndex + 1, searchStartSegmentIndex + 1, Count); + for (int i = searchStartSegmentIndex; i < searchEndSegmentIndex; i++) + { + float f = this[i].GetNearestPointF(position, space); + Vector3 v = this[i].Interpolate(f, space); + float magSqr = (v - position).sqrMagnitude; + if (magSqr <= distSqr) + { + resSeg = this[i]; + resF = f; + nearestPoint = v; + distSqr = magSqr; + } + } + + nearestSegment = resSeg; + nearestPointLocalF = resF; + // return the nearest + return resSeg.LocalFToTF(resF); + } + + /// + /// Refreshs the spline + /// + /// This is called automatically on the next Update() if any changes are pending + public void Refresh() + { + if (ProcessDirtyControlPoints()) + OnRefreshEvent(defaultSplineEventArgs); + } + + /// + /// Ensures the whole spline (curve & orientation) will be recalculated on next call to Refresh() + /// + public void SetDirtyAll() + { + SetDirtyAll(SplineDirtyingType.Everything, true); + } + + /// + /// Ensure the whole spline will be recalculated on next call to Refresh() + /// + /// Defines what aspect should be dirtied + /// whether to set dirty other splines's control points connected to one of this spline's control points + public void SetDirtyAll(SplineDirtyingType dirtyingType, bool dirtyConnectedControlPoints) + { +#if CURVY_LOG_DIRTYING + Debug.Log("Set Dirty all " + dirtyingType); +#endif + allControlPointsAreDirty = true; + SetDirtyingFlags(dirtyingType); + + if (dirtyConnectedControlPoints) + //OPTIM: maintain a boolean saying if any control point has a connection. And then, avoid the following code if that boolean is false. Same suggestion for other dirtying codes related to connections + for (int index = 0; index < ControlPoints.Count; index++) + { + CurvySplineSegment controlPoint = ControlPoints[index]; + if (controlPoint && controlPoint.Connection)//controlPoint can be null if you create a spline via the pen tool, and then undo it + { + ReadOnlyCollection connectedControlPoints = controlPoint.Connection.ControlPointsList; + for (int connectedIndex = 0; connectedIndex < connectedControlPoints.Count; connectedIndex++) + { + CurvySplineSegment connectedControlPoint = connectedControlPoints[connectedIndex]; + CurvySpline connectedSpline = connectedControlPoint != null + ? connectedControlPoint.Spline + : null; + if (connectedSpline && connectedSpline != this) + { + connectedSpline.dirtyControlPointsMinimalSet.Add(connectedControlPoint); + connectedSpline.SetDirtyingFlags(dirtyingType); + } + } + } + } + } + + /// + /// Marks a Control Point to get recalculated on next call to Refresh(). Will also mark connected control points and control points that depend on the current one through the Follow-Up feature. + /// + /// the Control Point to dirty + /// Defines what aspect should be dirtied + public void SetDirty(CurvySplineSegment dirtyControlPoint, SplineDirtyingType dirtyingType) + { + SetDirty(dirtyControlPoint, dirtyingType, GetPreviousControlPoint(dirtyControlPoint), GetNextControlPoint(dirtyControlPoint), false); + } + + /// + /// Marks a Control Point to get recalculated on next call to Refresh(). Will also mark connected control points and control points that depend on the current one through the Follow-Up feature. Be aware, this method, and unlike SetDirty, will not mark as dirty the control points connected to the "controlPoint" parameter + /// + /// the Control Point to dirty + /// Defines what aspect should be dirtied + public void SetDirtyPartial(CurvySplineSegment dirtyControlPoint, SplineDirtyingType dirtyingType) + { + //OPTIM skip this if dirtyControlPoint is already dirty? + SetDirty(dirtyControlPoint, dirtyingType, GetPreviousControlPoint(dirtyControlPoint), GetNextControlPoint(dirtyControlPoint), true); + } + + /// + /// Transforms position from local space to world space + /// + public Vector3 ToWorldPosition(Vector3 localPosition) + { + return cachedTransform.TransformPoint(localPosition); + } + + /// + /// Transforms direction from local space to world space + /// + public Vector3 ToWorldDirection(Vector3 localDirection) + { + return cachedTransform.TransformDirection(localDirection); + } + + /// + /// Transforms position from world space to local space + /// + public Vector3 ToLocalPosition(Vector3 worldPosition) + { + return cachedTransform.InverseTransformPoint(worldPosition); + } + + /// + /// Transforms direction from world space to local space + /// + public Vector3 ToLocalDirection(Vector3 localDirection) + { + return cachedTransform.InverseTransformDirection(localDirection); + } + +#if UNITY_EDITOR + + /// + /// Apply proper names to all Control Points + /// + public void ApplyControlPointsNames() + { + // rename them and set their order based on ControlPoint list + for (short i = 0; i < ControlPoints.Count; i++) + ControlPoints[i].name = GetControlPointName(i); + } + +#endif + + /// + /// Rebuilds the ControlPoints list from the hierarchy. It sets the spline as Dirty + /// + public void SyncSplineFromHierarchy() + { + ClearControlPoints(); + for (int i = 0; i < transform.childCount; i++) + { + CurvySplineSegment cp = transform.GetChild(i).GetComponent(); + if (cp) + AddControlPoint(cp); + } + } + + #endregion + + #region --- Utilities --- + + /// + /// Checks if the curve is planar + /// + /// returns the axis that can be ignored (0=x,1=y,2=z) + /// true if a planar axis was found + public bool IsPlanar(out int ignoreAxis) + { + bool xp, yp, zp; + bool res = IsPlanar(out xp, out yp, out zp); + if (xp) + ignoreAxis = 0; + else if (yp) + ignoreAxis = 1; + else + ignoreAxis = 2; + return res; + } + + /// + /// Checks if the curve is planar + /// + /// whether the x-axis is planar + /// whether the y-axis is planar + /// whether the z-axis is planar + /// true if at least on axis is planar + public bool IsPlanar(out bool xplanar, out bool yplanar, out bool zplanar) + { + xplanar = true; + yplanar = true; + zplanar = true; + if (ControlPointCount == 0) return true; + Vector3 p = ControlPoints[0].transform.localPosition; + for (int i = 1; i < ControlPointCount; i++) + { + if (!Mathf.Approximately(ControlPoints[i].transform.localPosition.x, p.x)) + xplanar = false; + if (!Mathf.Approximately(ControlPoints[i].transform.localPosition.y, p.y)) + yplanar = false; + if (!Mathf.Approximately(ControlPoints[i].transform.localPosition.z, p.z)) + zplanar = false; + + if (xplanar == false && yplanar == false && zplanar == false) + return false; + + } + return true; + } + + /// + /// Determines if the spline is at zero position on a certain plane + /// + /// the plane the spline should be tested against + /// true if the spline is on the plane + public bool IsPlanar(CurvyPlane plane) + { + switch (plane) + { + case CurvyPlane.XY: + for (int i = 0; i < ControlPointCount; i++) + if (ControlPoints[i].transform.localPosition.z.Approximately(0f) == false) + return false; + break; + case CurvyPlane.XZ: + for (int i = 0; i < ControlPointCount; i++) + if (ControlPoints[i].transform.localPosition.y.Approximately(0f) == false) + return false; + break; + case CurvyPlane.YZ: + for (int i = 0; i < ControlPointCount; i++) + if (ControlPoints[i].transform.localPosition.x.Approximately(0f) == false) + return false; + break; + } + return true; + } + + /// + /// Forces the spline to be at zero position on a certain plane + /// + /// the plane the should be on + public void MakePlanar(CurvyPlane plane) + { + switch (plane) + { + case CurvyPlane.XY: + for (int i = 0; i < ControlPointCount; i++) + if (ControlPoints[i].transform.localPosition.z != 0) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(ControlPoints[i].transform, "MakePlanar"); +#endif + ControlPoints[i].SetLocalPosition(new Vector3(ControlPoints[i].transform.localPosition.x, ControlPoints[i].transform.localPosition.y, 0)); + } + break; + case CurvyPlane.XZ: + for (int i = 0; i < ControlPointCount; i++) + if (ControlPoints[i].transform.localPosition.y != 0) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(ControlPoints[i].transform, "MakePlanar"); +#endif + ControlPoints[i].SetLocalPosition(new Vector3(ControlPoints[i].transform.localPosition.x, 0, ControlPoints[i].transform.localPosition.z)); + } + break; + case CurvyPlane.YZ: + for (int i = 0; i < ControlPointCount; i++) + if (ControlPoints[i].transform.localPosition.x != 0) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(ControlPoints[i].transform, "MakePlanar"); +#endif + ControlPoints[i].SetLocalPosition(new Vector3(0, ControlPoints[i].transform.localPosition.y, ControlPoints[i].transform.localPosition.z)); + } + break; + default: + throw new NotImplementedException(); + } + Refresh(); + } + + /// + /// Equalize one axis of the spline to match the first control points's value + /// + /// the axis to equalize (0=x,1=y,2=z) + public void MakePlanar(int axis) + { + Vector3 p = ControlPoints[0].transform.localPosition; + for (int i = 1; i < ControlPointCount; i++) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(ControlPoints[i].transform, "MakePlanar"); +#endif + Vector3 pi = ControlPoints[i].transform.localPosition; + switch (axis) + { + case 0: pi.x = p.x; break; + case 1: pi.y = p.y; break; + case 2: pi.z = p.z; break; + } + ControlPoints[i].transform.localPosition = pi; + } + SetDirtyAll(SplineDirtyingType.Everything, true); + Refresh(); + } + + + /// + /// Subdivides the spline, i.e. adds additional segments to a certain range + /// + /// starting ControlPoint + /// ending ControlPoint + public void Subdivide(CurvySplineSegment fromCP = null, CurvySplineSegment toCP = null) + { + if (!fromCP) + fromCP = FirstVisibleControlPoint; + if (!toCP) + toCP = LastVisibleControlPoint; + + if (fromCP == null || toCP == null || fromCP.Spline != this || toCP.Spline != this) + { + Debug.Log("CurvySpline.Subdivide: Not a valid range selection!"); + return; + } + + int startCPIndex = Mathf.Clamp(fromCP.Spline.GetControlPointIndex(fromCP), 0, ControlPointCount - 2); + int endCPIndex = Mathf.Clamp(toCP.Spline.GetControlPointIndex(toCP), startCPIndex + 1, ControlPointCount - 1); + + if (endCPIndex - startCPIndex < 1) + { + Debug.Log("CurvySpline.Subdivide: Not a valid range selection!"); + } + else + { + OnBeforeControlPointAddEvent(defaultAddAfterEventArgs); + + Matrix4x4 localToWorldMatrix = transform.localToWorldMatrix; + + Dictionary newCPsPosition = new Dictionary(); + //We first iterate to compute the positions. Interpolate should be called on non Dirty splines, that's why I first call Interpolate then in a latter loop update the spline (which will dirty it) + for (int i = endCPIndex - 1; i >= startCPIndex; i--) + newCPsPosition[i] = ControlPoints[i].Interpolate(0.5f, Space.Self); + + for (int i = endCPIndex - 1; i >= startCPIndex; i--) + { + CurvySplineSegment previousControlPoint = ControlPoints[i]; + CurvySplineSegment nextControlPoint = ControlPoints[i + 1]; + CurvySplineSegment newControlPoint = + InsertAfter( + ControlPoints[i], + newCPsPosition[i], + true, + Space.Self); + + if (Interpolation == CurvyInterpolation.Bezier) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + { + Undo.RecordObject(nextControlPoint, "Subdivide"); + Undo.RecordObject(previousControlPoint, "Subdivide"); + } +#endif + + //Update Bézier handles to maintain the spline's shape + //Based on De Casteljau's algorithm. The following is it's special case implementation for a subdivision at the middle of a spline segment. + //Here is a picture explaining things: https://jeremykun.files.wordpress.com/2013/05/subdivision.png from https://jeremykun.com/2013/05/11/bezier-curves-and-picasso/ + + Vector3 P0 = previousControlPoint.transform.position; + Vector3 P1 = previousControlPoint.HandleOutPosition; + Vector3 P2 = nextControlPoint.HandleInPosition; + Vector3 P3 = nextControlPoint.transform.position; + + Vector3 m0 = (P0 + P1) / 2; + Vector3 m1 = (P1 + P2) / 2; + Vector3 m2 = (P2 + P3) / 2; + + Vector3 q0 = (m0 + m1) / 2; + Vector3 q1 = (m1 + m2) / 2; + + previousControlPoint.AutoHandles = false; + previousControlPoint.HandleOutPosition = m0; + + nextControlPoint.AutoHandles = false; + nextControlPoint.HandleInPosition = m2; + + newControlPoint.AutoHandles = false; + newControlPoint.HandleInPosition = q0; + newControlPoint.HandleOutPosition = q1; + } +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RegisterCreatedObjectUndo(newControlPoint.gameObject, "Subdivide"); +#endif + } + + Refresh(); + OnAfterControlPointAddEvent(defaultAddAfterEventArgs); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); + } + } + + /// + /// Simplifies the spline, i.e. remove segments from a certain range + /// + /// starting ControlPoint + /// ending ControlPoint + public void Simplify(CurvySplineSegment fromCP = null, CurvySplineSegment toCP = null) + { + if (!fromCP) + fromCP = FirstVisibleControlPoint; + if (!toCP) + toCP = LastVisibleControlPoint; + + if (fromCP == null || toCP == null || fromCP.Spline != this || toCP.Spline != this) + { + Debug.Log("CurvySpline.Simplify: Not a valid range selection!"); + return; + } + int startCPIndex = Mathf.Clamp(fromCP.Spline.GetControlPointIndex(fromCP), 0, ControlPointCount - 2); + int endCPIndex = Mathf.Clamp(toCP.Spline.GetControlPointIndex(toCP), startCPIndex + 2, ControlPointCount - 1); + if (endCPIndex - startCPIndex < 2) + { + Debug.Log("CurvySpline.Simplify: Not a valid range selection!"); + } + else + { + OnBeforeControlPointDeleteEvent(defaultDeleteEventArgs); + + for (int i = endCPIndex - 2; i >= startCPIndex; i -= 2) + { + Delete(ControlPoints[i + 1], true); +#if UNITY_EDITOR + _newSelectionInstanceIDINTERNAL = 0; +#endif + } + Refresh(); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); + } + } + + /// + /// Equalizes the segment length of a certain range + /// + /// starting ControlPoint + /// ending ControlPoint + public void Equalize(CurvySplineSegment fromCP = null, CurvySplineSegment toCP = null) + { + if (!fromCP) + fromCP = FirstVisibleControlPoint; + if (!toCP) + toCP = LastVisibleControlPoint; + + if (fromCP == null || toCP == null || fromCP.Spline != this || toCP.Spline != this) + { + Debug.Log("CurvySpline.Equalize: Not a valid range selection!"); + return; + } + int startCPIndex = Mathf.Clamp(GetControlPointIndex(fromCP), 0, ControlPointCount - 2); + int endCPIndex = Mathf.Clamp(GetControlPointIndex(toCP), startCPIndex + 2, ControlPointCount - 1); + if (endCPIndex - startCPIndex < 2) + { + Debug.Log("CurvySpline.Equalize: Not a valid range selection!"); + return; + } + float segmentLength = ControlPoints[endCPIndex].Distance - ControlPoints[startCPIndex].Distance; + float equal = segmentLength / (endCPIndex - startCPIndex); + float dist = ControlPoints[startCPIndex].Distance; + + Vector3[] newCpPositions = new Vector3[endCPIndex - startCPIndex - 1]; + + for (int i = startCPIndex + 1; i < endCPIndex; i++) + { + int iterationIndex = i - startCPIndex - 1; + newCpPositions[iterationIndex] = InterpolateByDistance(dist + (iterationIndex + 1) * equal); + } + + for (int i = startCPIndex + 1; i < endCPIndex; i++) + { + int iterationIndex = i - startCPIndex - 1; +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(ControlPoints[i].transform, "Equalize"); +#endif + ControlPoints[i].SetLocalPosition(newCpPositions[iterationIndex]); + } + Refresh(); + } + + /// + /// Applies a spline's scale to it's Control Points and resets scale + /// + public void Normalize() + { + Vector3 scl = transform.localScale; + + if (scl != Vector3.one) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(transform, "Normalize Spline"); +#endif + transform.localScale = Vector3.one; + for (int i = 0; i < ControlPointCount; i++) + { + CurvySplineSegment curvySplineSegment = ControlPoints[i]; +#if UNITY_EDITOR + if (!Application.isPlaying) + { + Undo.RecordObject(curvySplineSegment.transform, "Normalize Spline"); + Undo.RecordObject(curvySplineSegment, "Normalize Spline"); + } +#endif + curvySplineSegment.SetLocalPosition(Vector3.Scale(curvySplineSegment.transform.localPosition, scl)); + curvySplineSegment.HandleIn = Vector3.Scale(curvySplineSegment.HandleIn, scl); + curvySplineSegment.HandleOut = Vector3.Scale(curvySplineSegment.HandleOut, scl); + + } + Refresh(); + } + } + + /// + /// Sets the pivot of the spline + /// + /// -1 to 1 + /// -1 to 1 + /// -1 to 1 + /// if true, only return the new pivot position + /// the new pivot position + public Vector3 SetPivot(float xRel = 0, float yRel = 0, float zRel = 0, bool preview = false) + { + Bounds b = Bounds; + Vector3 v = new Vector3(b.min.x + b.size.x * ((xRel + 1) / 2), + b.max.y - b.size.y * ((yRel + 1) / 2), + b.min.z + b.size.z * ((zRel + 1) / 2)); + + Vector3 off = transform.position - v; + if (preview) + return transform.position - off; + + for (int index = 0; index < ControlPoints.Count; index++) + { + CurvySplineSegment cp = ControlPoints[index]; +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(cp.transform, "SetPivot"); +#endif + cp.transform.position += off; + } +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RecordObject(transform, "SetPivot"); +#endif + transform.position -= off; + SetDirtyAll(SplineDirtyingType.Everything, true); + return transform.position; + } + + /// + /// Flips the direction of the spline, i.e. the first Control Point will become the last and vice versa. + /// + public void Flip() + { + if (ControlPointCount <= 1) + return; +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RegisterFullObjectHierarchyUndo(this, "Flip Spline"); +#endif + switch (Interpolation) + { + case CurvyInterpolation.TCB: + Bias *= -1; + for (int i = ControlPointCount - 1; i >= 0; i--) + { + CurvySplineSegment cur = ControlPoints[i]; + + int j = i - 1; + if (j >= 0) + { + CurvySplineSegment prev = ControlPoints[j]; + + cur.EndBias = prev.StartBias * -1; + cur.EndContinuity = prev.StartContinuity; + cur.EndTension = prev.StartTension; + + cur.StartBias = prev.EndBias * -1; + cur.StartContinuity = prev.EndContinuity; + cur.StartTension = prev.EndTension; + + cur.OverrideGlobalBias = prev.OverrideGlobalBias; + cur.OverrideGlobalContinuity = prev.OverrideGlobalContinuity; + cur.OverrideGlobalTension = prev.OverrideGlobalTension; + + cur.SynchronizeTCB = prev.SynchronizeTCB; + } + } + break; + case CurvyInterpolation.Bezier: + for (int i = ControlPointCount - 1; i >= 0; i--) + { + CurvySplineSegment cur = ControlPoints[i]; + + Vector3 h = cur.HandleIn; + cur.HandleIn = cur.HandleOut; + cur.HandleOut = h; + } + break; + } + ReverseControlPoints(); + Refresh(); + } + + /// + /// Moves ControlPoints from this spline, inserting them after a destination ControlPoint of another spline + /// + /// ControlPointIndex of the first CP to move + /// number of ControlPoints to move + /// ControlPoint at the destination spline to insert after + public void MoveControlPoints(int startIndex, int count, CurvySplineSegment destCP) + { + if (!destCP || this == destCP.Spline || destCP.Spline.GetControlPointIndex(destCP) == -1) + return; + startIndex = Mathf.Clamp(startIndex, 0, ControlPointCount - 1); + count = Mathf.Clamp(count, startIndex, ControlPointCount - startIndex); + + CurvySplineSegment cp; + for (int i = 0; i < count; i++) + { + cp = ControlPoints[startIndex]; + RemoveControlPoint(cp); +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.SetTransformParent(cp.transform, destCP.Spline.transform, "Move ControlPoints"); + else +#endif + cp.transform.SetParent(destCP.Spline.transform, true); + + destCP.Spline.InsertControlPoint(destCP.Spline.GetControlPointIndex(destCP) + i + 1, cp); + } + Refresh(); + destCP.Spline.Refresh(); + } + + /// + /// Insert this spline after another spline's destination Control Point and delete this spline + /// + /// the Control Point of the destination spline + public void JoinWith(CurvySplineSegment destCP) + { + if (destCP.Spline == this) + return; + MoveControlPoints(0, ControlPointCount, destCP); + gameObject.Destroy(true, true); + } + + /// + /// Splits this spline with the parameter controlPoint becoming the first Control Point of the new spline + /// + /// The new spline + public CurvySpline Split(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + CurvySpline newSpline = CurvySpline.Create(this); + newSpline.transform.SetParent(transform.parent, true); + newSpline.name = name + "_parted"; + +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.RegisterCreatedObjectUndo(newSpline.gameObject, "Split Spline"); +#endif + + // Move CPs + List affectedControlPoints; + { + int controlPointIndex = GetSegmentIndex(controlPoint); + affectedControlPoints = new List(ControlPointCount - controlPointIndex); + for (int i = controlPointIndex; i < ControlPointCount; i++) + affectedControlPoints.Add(ControlPoints[i]); + } + + for (int i = 0; i < affectedControlPoints.Count; i++) + { + CurvySplineSegment curvySplineSegment = affectedControlPoints[i]; + RemoveControlPoint(curvySplineSegment); +#if UNITY_EDITOR + if (!Application.isPlaying) + Undo.SetTransformParent(curvySplineSegment.transform, newSpline.transform, "Split Spline"); +#endif + if (Application.isPlaying) + curvySplineSegment.transform.SetParent(newSpline.transform, true); + newSpline.AddControlPoint(curvySplineSegment); + } + + Refresh(); + newSpline.Refresh(); + return newSpline; + } + + /// + /// Defines the given Control Point to be the first Control Point of the spline + /// + /// One of this spline's control points + public void SetFirstControlPoint(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + short controlPointIndex = GetControlPointIndex(controlPoint); + CurvySplineSegment[] controlPointsToMove = new CurvySplineSegment[controlPointIndex]; + for (int i = 0; i < controlPointIndex; i++) + controlPointsToMove[i] = ControlPoints[i]; + + for (int index = 0; index < controlPointsToMove.Length; index++) + { + CurvySplineSegment seg = controlPointsToMove[index]; + RemoveControlPoint(seg); + AddControlPoint(seg); + } + Refresh(); + } + + #endregion + + #region Query data about control points + + /// + /// Is the control point an orientation anchor? The answer is related to the control point's serialized OrientationAnchor value, plus it's position in the spline. + /// + /// + /// + public bool IsControlPointAnOrientationAnchor(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + return IsControlPointVisible(controlPoint) && (controlPoint.SerializedOrientationAnchor || (controlPoint == FirstVisibleControlPoint || controlPoint == LastVisibleControlPoint)); + } + + /// + /// Can this control point have a Follow-Up? This is true if the control point is the beginning of the first segment or the end of the last segment of an open spline + /// + /// + /// + public bool CanControlPointHaveFollowUp(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return controlPoint.GetExtrinsicPropertiesINTERNAL().CanHaveFollowUp; + } + + /// + /// Index of the control point + /// + /// + /// + public short GetControlPointIndex(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + short controlPointIndex = controlPoint.GetExtrinsicPropertiesINTERNAL().ControlPointIndex; +#if CURVY_SANITY_CHECKS_PRIVATE//Judged too expensive in cpu time to be part of the sanity checks available to users + UnityEngine.Assertions.Assert.IsTrue(controlPoint == ControlPoints[controlPointIndex]); +#endif + + return controlPointIndex; + } + + /// + /// Index of the segment that this control point starts. -1 if control point does not start a segment. + /// + /// + /// + public short GetSegmentIndex(CurvySplineSegment segment) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, segment.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, segment, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + short segementIndex = segment.GetExtrinsicPropertiesINTERNAL().SegmentIndex; +#if CURVY_SANITY_CHECKS_PRIVATE//Judged too expensive in cpu time to be part of the sanity checks available to users + UnityEngine.Assertions.Assert.IsTrue(segementIndex == -1 || segment == mSegments[segementIndex]); +#endif + return segementIndex; + } + + /// + /// The next control point on the spline. Is null if none. Follow-Up not considered + /// + /// + /// + [CanBeNull] + public CurvySplineSegment GetNextControlPoint(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + short nextControlPointIndex = controlPoint.GetExtrinsicPropertiesINTERNAL().NextControlPointIndex; + return nextControlPointIndex == -1 ? null : ControlPoints[nextControlPointIndex]; + } + + /// + /// The index of the next control point on the spline. Is -1 if none. Follow-Up not considered + /// + /// + /// + [CanBeNull] + public short GetNextControlPointIndex(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return controlPoint.GetExtrinsicPropertiesINTERNAL().NextControlPointIndex; + } + + /// + /// The next control point. Is null if none. Follow-Up is considered + /// + /// + /// + [CanBeNull] + public CurvySplineSegment GetNextControlPointUsingFollowUp(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + return controlPoint.FollowUp != null && ReferenceEquals(LastVisibleControlPoint, controlPoint) + ? GetFollowUpHeadingControlPoint(controlPoint.FollowUp, controlPoint.FollowUpHeading) + : GetNextControlPoint(controlPoint); + } + + /// + /// The previous control point on the spline. Is null if none. Follow-Up not considered + /// + /// + /// + [CanBeNull] + public CurvySplineSegment GetPreviousControlPoint(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + short previousControlPointIndex = controlPoint.GetExtrinsicPropertiesINTERNAL().PreviousControlPointIndex; + return previousControlPointIndex == -1 ? null : ControlPoints[previousControlPointIndex]; + } + + /// + /// The index of the previous control point on the spline. Is -1 if none. Follow-Up not considered + /// + /// + /// + [CanBeNull] + public short GetPreviousControlPointIndex(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return controlPoint.GetExtrinsicPropertiesINTERNAL().PreviousControlPointIndex; + } + + /// + /// The previous control point. Is null if none. Follow-Up is considered + /// + /// + /// + [CanBeNull] + public CurvySplineSegment GetPreviousControlPointUsingFollowUp(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + return controlPoint.FollowUp != null && ReferenceEquals(FirstVisibleControlPoint, controlPoint) + ? GetFollowUpHeadingControlPoint(controlPoint.FollowUp, controlPoint.FollowUpHeading) + : GetPreviousControlPoint(controlPoint); + } + + /// + /// The next control point on the spline if it starts a segment. Is null if none. Follow-Up not considered + /// + /// + /// + [CanBeNull] + public CurvySplineSegment GetNextSegment(CurvySplineSegment segment) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, segment.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, segment, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + + CurvySplineSegment.ControlPointExtrinsicProperties cpExtrinsicProperties = segment.GetExtrinsicPropertiesINTERNAL(); + return cpExtrinsicProperties.NextControlPointIsSegment + ? ControlPoints[cpExtrinsicProperties.NextControlPointIndex] + : null; + } + + /// + /// The previous control point on the spline if it starts a segment. Is null if none. Follow-Up not considered. + /// + /// + /// + [CanBeNull] + public CurvySplineSegment GetPreviousSegment(CurvySplineSegment segment) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, segment.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, segment, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + CurvySplineSegment.ControlPointExtrinsicProperties cpExtrinsicProperties = segment.GetExtrinsicPropertiesINTERNAL(); + return cpExtrinsicProperties.PreviousControlPointIsSegment + ? ControlPoints[cpExtrinsicProperties.PreviousControlPointIndex] + : null; + } + + /// + /// Is the control point the start of a segment? + /// + /// + /// + public bool IsControlPointASegment(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return controlPoint.GetExtrinsicPropertiesINTERNAL().IsSegment; + } + + /// + /// Is the control point part of a segment (whether starting it or ending it) + /// + /// + /// + public bool IsControlPointVisible(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return controlPoint.GetExtrinsicPropertiesINTERNAL().IsVisible; + } + + /// + /// The index of the control point being the orientation anchor for the anchor group containing the controlPoint + /// Is -1 for non visible control points + /// + public short GetControlPointOrientationAnchorIndex(CurvySplineSegment controlPoint) + { +#if CURVY_SANITY_CHECKS + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); +#endif + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return controlPoint.GetExtrinsicPropertiesINTERNAL().OrientationAnchorIndex; + } + #endregion + + /// + /// Event-friendly helper that sets a field or property value + /// + /// e.g. "MyValue=42" + public void SetFromString(string fieldAndValue) + { + string[] f = fieldAndValue.Split('='); + if (f.Length != 2) + return; + + FieldInfo fi = this.GetType().FieldByName(f[0], true, false); + if (fi != null) + { + try + { +#if NETFX_CORE + if (fi.FieldType.GetTypeInfo().IsEnum) +#else + if (fi.FieldType.IsEnum) +#endif + fi.SetValue(this, System.Enum.Parse(fi.FieldType, f[1])); + else + fi.SetValue(this, System.Convert.ChangeType(f[1], fi.FieldType, System.Globalization.CultureInfo.InvariantCulture)); + } + catch (System.Exception e) + { + Debug.LogWarning(this.name + ".SetFromString(): " + e.ToString()); + } + } + else + { + PropertyInfo pi = this.GetType().PropertyByName(f[0], true, false); + if (pi != null) + { + try + { +#if NETFX_CORE + if (pi.PropertyType.GetTypeInfo().IsEnum) +#else + if (pi.PropertyType.IsEnum) +#endif + + pi.SetValue(this, System.Enum.Parse(pi.PropertyType, f[1]), null); + else + pi.SetValue(this, System.Convert.ChangeType(f[1], pi.PropertyType, System.Globalization.CultureInfo.InvariantCulture), null); + } + catch (System.Exception e) + { + Debug.LogWarning(this.name + ".SetFromString(): " + e.ToString()); + } + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline.cs.meta new file mode 100644 index 00000000..f4cefa63 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline.cs.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: 82f49053b9b703e4cbb1c6e76a563270 +labels: +- Animation +- Camera +- Curve +- Movement +- Smooth +- Spline +- Tcb +- Bezier +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -101 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineDefaultValues.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineDefaultValues.cs new file mode 100644 index 00000000..15230c84 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineDefaultValues.cs @@ -0,0 +1,26 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +namespace FluffyUnderware.Curvy +{ + /// + /// Here you can find all the default values for CurvySpline's serialized fields. If you don't find a field here, this means that it's type's default value is the same than the field's default value, except for which default value is user defined, see + /// + public static class CurvySplineDefaultValues + { + public const bool AutoEndTangents = true; + public const CurvyOrientation Orientation = CurvyOrientation.Dynamic; + public const float AutoHandleDistance = 0.39f; + public const int CacheDensity = 50; + public const float MaxPointsPerUnit = 8; + public const bool UsePooling = true; + public const CurvyUpdateMethod UpdateIn = CurvyUpdateMethod.Update; + public const bool CheckTransform = true; + public const int BSplineDegree = 2; + public const bool IsBSplineClamped = true; + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineDefaultValues.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineDefaultValues.cs.meta new file mode 100644 index 00000000..0157d89e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineDefaultValues.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99611b5d3dd7bc74c9a0f49dbedd1e78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.ControlPointExtrinsicProperties.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.ControlPointExtrinsicProperties.cs new file mode 100644 index 00000000..2795d832 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.ControlPointExtrinsicProperties.cs @@ -0,0 +1,186 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; + +namespace FluffyUnderware.Curvy +{ + public partial class CurvySplineSegment + { + /// + /// Contains data about a control point related to it's parent spline. For example, is a control point a valid segment in the spline or not. + /// +#if CSHARP_7_2_OR_NEWER + readonly +#endif + internal struct ControlPointExtrinsicProperties : IEquatable + { + private readonly bool isVisible; + /// + /// Is the control point part of a segment (whether starting it or ending it) + /// + internal bool IsVisible + { + get { return isVisible; } + } + + private readonly float tf; + /// + /// Gets the TF of this Control Point + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. + /// This is the "time" parameter used in the splines' formulas. + /// A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + internal float TF + { + get { return tf; } + } + + private readonly short segmentIndex; + /// + /// Index of the segment that this control point starts. -1 if control point does not start a segment. + /// + internal short SegmentIndex + { + get { return segmentIndex; } + } + + private readonly short controlPointIndex; + /// + /// Index of the control point + /// + internal short ControlPointIndex + { + get { return controlPointIndex; } + } + + private readonly short nextControlPointIndex; + /// + /// The index of the next control point on the spline. Is -1 if none. Follow-Up not considered + /// + internal short NextControlPointIndex + { + get { return nextControlPointIndex; } + } + + private readonly short previousControlPointIndex; + /// + /// The index of the previous control point on the spline. Is -1 if none. Follow-Up not considered. + /// + internal short PreviousControlPointIndex + { + get { return previousControlPointIndex; } + } + + private readonly bool previousControlPointIsSegment; + /// + /// Is previous Control Point a segment start? + /// + internal bool PreviousControlPointIsSegment + { + get { return previousControlPointIsSegment; } + } + + private readonly bool nextControlPointIsSegment; + /// + /// Is next Control Point a segment start? + /// + internal bool NextControlPointIsSegment + { + get { return nextControlPointIsSegment; } + } + + private readonly bool canHaveFollowUp; + /// + /// Can this control point have a Follow-Up? This is true if the control point is visible and does not have a previous or next control point on its spline + /// + internal bool CanHaveFollowUp + { + get { return canHaveFollowUp; } + } + + /// + /// Is the control point the start of a segment? + /// + internal bool IsSegment { get { return SegmentIndex != -1; } } + + private readonly short orientationAnchorIndex; + /// + /// The index of the control point being the orientation anchor for the anchor group containing the current control point + /// Is -1 for non visible control points + /// + internal short OrientationAnchorIndex + { + get { return orientationAnchorIndex; } + } + + internal ControlPointExtrinsicProperties(bool isVisible, float tf, short segmentIndex, short controlPointIndex, short previousControlPointIndex, short nextControlPointIndex, bool previousControlPointIsSegment, bool nextControlPointIsSegment, bool canHaveFollowUp, short orientationAnchorIndex) + { + this.isVisible = isVisible; + this.tf = tf; + this.segmentIndex = segmentIndex; + this.controlPointIndex = controlPointIndex; + this.nextControlPointIndex = nextControlPointIndex; + this.previousControlPointIndex = previousControlPointIndex; + this.previousControlPointIsSegment = previousControlPointIsSegment; + this.nextControlPointIsSegment = nextControlPointIsSegment; + this.canHaveFollowUp = canHaveFollowUp; + this.orientationAnchorIndex = orientationAnchorIndex; + } + + public bool Equals(ControlPointExtrinsicProperties other) + { + return IsVisible == other.IsVisible + && TF == other.TF + && SegmentIndex == other.SegmentIndex + && ControlPointIndex == other.ControlPointIndex + && NextControlPointIndex == other.NextControlPointIndex + && PreviousControlPointIndex == other.PreviousControlPointIndex + && PreviousControlPointIsSegment == other.PreviousControlPointIsSegment + && NextControlPointIsSegment == other.NextControlPointIsSegment + && CanHaveFollowUp == other.CanHaveFollowUp + && OrientationAnchorIndex == other.OrientationAnchorIndex; + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + return false; + return obj is ControlPointExtrinsicProperties && Equals((ControlPointExtrinsicProperties)obj); + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = IsVisible.GetHashCode(); + hashCode = (hashCode * 397) ^ TF.GetHashCode(); + hashCode = (hashCode * 397) ^ SegmentIndex.GetHashCode(); + hashCode = (hashCode * 397) ^ ControlPointIndex.GetHashCode(); + hashCode = (hashCode * 397) ^ NextControlPointIndex.GetHashCode(); + hashCode = (hashCode * 397) ^ PreviousControlPointIndex.GetHashCode(); + hashCode = (hashCode * 397) ^ PreviousControlPointIsSegment.GetHashCode(); + hashCode = (hashCode * 397) ^ NextControlPointIsSegment.GetHashCode(); + hashCode = (hashCode * 397) ^ CanHaveFollowUp.GetHashCode(); + hashCode = (hashCode * 397) ^ OrientationAnchorIndex.GetHashCode(); + return hashCode; + } + } + + public static bool operator ==(ControlPointExtrinsicProperties left, ControlPointExtrinsicProperties right) + { + return left.Equals(right); + } + + public static bool operator !=(ControlPointExtrinsicProperties left, ControlPointExtrinsicProperties right) + { + return !left.Equals(right); + } + + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.ControlPointExtrinsicProperties.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.ControlPointExtrinsicProperties.cs.meta new file mode 100644 index 00000000..2059ffe1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.ControlPointExtrinsicProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 776cd6a1dc4e38e4f843a10b00a09c5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.cs new file mode 100644 index 00000000..cc2c590a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.cs @@ -0,0 +1,1594 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Utils; +using System.Collections.Generic; +using FluffyUnderware.DevTools; +using UnityEngine.Serialization; +using System.Reflection; +using System; +using System.Collections.ObjectModel; +using System.Linq; +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +using JetBrains.Annotations; +using UnityEngine.Assertions; + + +namespace FluffyUnderware.Curvy +{ + /// + /// Class covering a Curvy Spline Segment / ControlPoint + /// + [ExecuteAlways] + [HelpURL(CurvySpline.DOCLINK + "curvysplinesegment")] + public partial class CurvySplineSegment : DTVersionedMonoBehaviour, IPoolable + { + /// + /// The color used in Gizmos to draw a segment's tangents + /// + public static readonly Color GizmoTangentColor = new Color(0, 0.7f, 0); + + #region ### Public Properties ### + + /// + /// List of precalculated interpolations + /// + /// Based on Spline's CacheDensity + [NonSerialized] + public Vector3[] Approximation = new Vector3[0]; + + /// + /// List of precalculated distances + /// + /// Based on Spline's CacheDensity + [NonSerialized] + public float[] ApproximationDistances = new float[0]; + + /// + /// List of precalculated Up-Vectors + /// + /// Based on Spline's CacheDensity + [NonSerialized] + public Vector3[] ApproximationUp = new Vector3[0]; + + /// + /// List of precalculated Tangent-Normals + /// + /// Based on Spline's CacheDensity + [NonSerialized] + public Vector3[] ApproximationT = new Vector3[0]; + + /// + /// If set, Control Point's rotation will be set to the calculated Up-Vector3 + /// + /// This is particularly useful when connecting splines + public bool AutoBakeOrientation + { + get { return m_AutoBakeOrientation; } + set + { + if (m_AutoBakeOrientation != value) + { + m_AutoBakeOrientation = value; + } + } + } + + /// + /// The serialized value of OrientationAnchor. This value is ignored in some cases (invisible control points, first and last visible control points). Use to get the correct value. + /// + public bool SerializedOrientationAnchor + { + get { return m_OrientationAnchor; } + set + { + if (m_OrientationAnchor != value) + { + m_OrientationAnchor = value; + Spline.SetDirty(this, SplineDirtyingType.OrientationOnly); + Spline.InvalidateControlPointsRelationshipCacheINTERNAL(); + } + } + } + + /// + /// Swirling Mode + /// + public CurvyOrientationSwirl Swirl + { + get { return m_Swirl; } + set + { + if (m_Swirl != value) + { + m_Swirl = value; + Spline.SetDirty(this, SplineDirtyingType.OrientationOnly); + } + } + } + + /// + /// Turns to swirl + /// + public float SwirlTurns + { + get { return m_SwirlTurns; } + set + { + if (m_SwirlTurns != value) + { + m_SwirlTurns = value; + Spline.SetDirty(this, SplineDirtyingType.OrientationOnly); + } + } + } + + #region --- Bezier --- + //TODO Make sure that every place in the code setting Handles respects the constraints of Sync length, Sync direction and Sync connections + + /// + /// Bézier spline left handle in spline's local coordinates + /// + public Vector3 HandleIn + { + get + { return m_HandleIn; } + set + { + if (m_HandleIn != value) + { + m_HandleIn = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// Bézier spline right handle in spline's local coordinates + /// + public Vector3 HandleOut + { + get { return m_HandleOut; } + set + { + if (m_HandleOut != value) + { + m_HandleOut = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + //BUG this doesn't handle scaled splines. Go through all similar situations and fix them, or add as a constraint that scaled splines should be normalized (scale set back to 1) before doing any operations on them + /// + /// Bézier spline left handle in world coordinates + /// + public Vector3 HandleInPosition + { + get + { + return cachedTransform.position + Spline.transform.rotation * HandleIn; + } + set + { + HandleIn = Spline.transform.InverseTransformDirection(value - cachedTransform.position); + } + } + + /// + /// Bézier spline right handle in world coordinates + /// + public Vector3 HandleOutPosition + { + get + { + return cachedTransform.position + Spline.transform.rotation * HandleOut; + } + set + { + HandleOut = Spline.transform.InverseTransformDirection(value - cachedTransform.position); + } + } + /// + /// Gets or Sets Auto Handles. When setting it the value of connected control points is also updated + /// + public bool AutoHandles + { + get { return m_AutoHandles; } + set + { + if (SetAutoHandles(value)) + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + + public float AutoHandleDistance + { + get { return m_AutoHandleDistance; } + set + { + if (m_AutoHandleDistance != value) + { + float clampedDistance = Mathf.Clamp01(value); + if (m_AutoHandleDistance != clampedDistance) + { + m_AutoHandleDistance = clampedDistance; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + } + + #endregion + + #region --- TCB --- + + /// + /// Keep Start/End-TCB synchronized + /// + /// Applies only to TCB Interpolation + public bool SynchronizeTCB + { + get { return m_SynchronizeTCB; } + set + { + if (m_SynchronizeTCB != value) + { + m_SynchronizeTCB = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// Whether local Tension should be used + /// + /// This only applies to interpolation methods using Tension + public bool OverrideGlobalTension + { + get { return m_OverrideGlobalTension; } + set + { + if (m_OverrideGlobalTension != value) + { + m_OverrideGlobalTension = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// Whether local Continuity should be used + /// + /// This only applies to interpolation methods using Continuity + public bool OverrideGlobalContinuity + { + get { return m_OverrideGlobalContinuity; } + set + { + if (m_OverrideGlobalContinuity != value) + { + m_OverrideGlobalContinuity = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// Whether local Bias should be used + /// + /// This only applies to interpolation methods using Bias + public bool OverrideGlobalBias + { + get { return m_OverrideGlobalBias; } + set + { + if (m_OverrideGlobalBias != value) + { + m_OverrideGlobalBias = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// Start Tension + /// + /// This only applies to interpolation methods using Tension + public float StartTension + { + get { return m_StartTension; } + set + { + if (m_StartTension != value) + { + m_StartTension = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// Start Continuity + /// + /// This only applies to interpolation methods using Continuity + public float StartContinuity + { + get { return m_StartContinuity; } + set + { + if (m_StartContinuity != value) + { + m_StartContinuity = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// Start Bias + /// + /// This only applies to interpolation methods using Bias + public float StartBias + { + get { return m_StartBias; } + set + { + if (m_StartBias != value) + { + m_StartBias = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// End Tension + /// + /// This only applies to interpolation methods using Tension + public float EndTension + { + get { return m_EndTension; } + set + { + if (m_EndTension != value) + { + m_EndTension = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// End Continuity + /// + /// This only applies to interpolation methods using Continuity + public float EndContinuity + { + get { return m_EndContinuity; } + set + { + if (m_EndContinuity != value) + { + m_EndContinuity = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// End Bias + /// + ///This only applies to interpolation methods using Bias + public float EndBias + { + get { return m_EndBias; } + set + { + if (m_EndBias != value) + { + m_EndBias = value; + Spline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + + #endregion + /* +#region --- CG --- + + /// + /// Material ID (used by PCG) + /// + public int CGMaterialID + { + get + { + return m_CGMaterialID; + } + set + { + if (m_CGMaterialID != Mathf.Max(0, value)) + m_CGMaterialID = Mathf.Max(0, value); + } + } + + /// + /// Whether to create a hard edge or not (used by PCG) + /// + public bool CGHardEdge + { + get { return m_CGHardEdge; } + set + { + if (m_CGHardEdge != value) + m_CGHardEdge = value; + } + } + /// + /// Maximum vertex distance when using optimization (0=infinite) + /// + public float CGMaxStepDistance + { + get + { + return m_CGMaxStepDistance; + } + set + { + if (m_CGMaxStepDistance != Mathf.Max(0, value)) + m_CGMaxStepDistance = Mathf.Max(0, value); + } + } + +#endregion + */ + #region --- Connections --- + /// + /// Gets the connected Control Point that is set as "Head To" + /// + public CurvySplineSegment FollowUp + { + get + { + //TODO reactivate this sanity check once the connections related data are no more stored in the control point but in the connection. Right now the check is disabled because the code in CurvyConnection.RemoveControlPoint needs to get the follow up while m_FollowUp.Connection == Connection is not true so that it can correct the situation + //#if CURVY_SANITY_CHECKS + // Assert.IsTrue(m_FollowUp == null || m_FollowUp.Connection == Connection); + //#endif + return m_FollowUp; + } + private set + { + if (m_FollowUp != value) + { + m_FollowUp = value; +#if CURVY_SANITY_CHECKS + Assert.IsTrue(m_FollowUp == null || m_FollowUp.Connection == Connection); +#endif + if (mSpline != null) + mSpline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + + /// + /// Gets or sets the heading toward the "Head To" segment + /// + //Remark Set/Get value is validated through GetValidateConnectionHeading + public ConnectionHeadingEnum FollowUpHeading + { + get + { + return GetValidateConnectionHeading(m_FollowUpHeading, FollowUp); + } + set + { + value = GetValidateConnectionHeading(value, FollowUp); + + if (m_FollowUpHeading != value) + { + m_FollowUpHeading = value; + if (mSpline != null) + mSpline.SetDirty(this, SplineDirtyingType.Everything); + } + } + } + + /// + /// When part of a , this defines whether the connection's position is applied to this Control Point + /// The synchronization process is applied by at each frame in its update methods. So if you modify the value of this property, and want the synchronization to happen right away, you will have to call the connection's with the connection's position and rotation as parameters + /// + public bool ConnectionSyncPosition + { + get { return m_ConnectionSyncPosition; } + set + { + if (m_ConnectionSyncPosition != value) + { + m_ConnectionSyncPosition = value; + //DESIGN think about removing the code that handles ConnectionSyncPosition and ConnectionSyncRotation, and replace it with a code that always runs in Refresh, and make that code happen by calling SetDirty() here; + } + } + } + + /// + /// When part of a , this defines whether the connection's rotation is applied to this Control Point + /// The synchronization process is applied by at each frame in its update methods. So if you modify the value of this property, and want the synchronization to happen right away, you will have to call the connection's with the connection's position and rotation as parameters + /// + public bool ConnectionSyncRotation + { + get { return m_ConnectionSyncRotation; } + set + { + if (m_ConnectionSyncRotation != value) + { + m_ConnectionSyncRotation = value; + //DESIGN think about removing the code that handles ConnectionSyncPosition and ConnectionSyncRotation, and replace it with a code that always runs in Refresh, and make that code happen by calling SetDirty() here; + } + } + } + + /// + /// Gets/Sets the connection handler this Control Point is using (if any) + /// + /// If set to null, FollowUp wil be set to null to + public CurvyConnection Connection + { + get { return m_Connection; } + internal set + { + if (SetConnection(value)) + if (mSpline != null) + mSpline.SetDirty(this, SplineDirtyingType.Everything); + } + } + + #endregion + + + /// + /// Gets the number of individual cache points of this segment + /// + /// The actual approximations arrays' size is CacheSize + 1 + public int CacheSize + { + get + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(Approximation.Length > 0, "[Curvy] CurvySplineSegment has uninitialized cache"); +#endif + return Approximation.Length - 1; + } + + } + + /// + /// Gets this segment's bounds in world space + /// + public Bounds Bounds + { + get + { + if (!mBounds.HasValue) + { + Bounds result; + if (Approximation.Length == 0) + result = new Bounds(cachedTransform.position, Vector3.zero); + else + { + Matrix4x4 mat = Spline.transform.localToWorldMatrix; + result = new Bounds(mat.MultiplyPoint3x4(Approximation[0]), Vector3.zero); + int u = Approximation.Length; + for (int i = 1; i < u; i++) + result.Encapsulate(mat.MultiplyPoint3x4(Approximation[i])); + } + + mBounds = result; + } + return mBounds.Value; + } + } + + /// + /// Gets the length of this spline segment + /// + public float Length { get; private set; } + + /// + /// Gets the distance from spline start to the first control point (localF=0) + /// + public float Distance { get; internal set; } + + /// + /// Gets the TF of this Control Point + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. + /// This is the "time" parameter used in the splines' formulas. + /// A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// This yields the same result as LocalFToTF(0) + public float TF + { + get + { + return mSpline.SegmentToTF(this); + } +#if UNITY_2020_3_OR_NEWER + [Obsolete("Setting a TF value is not allowed anymore")] +#endif + internal set => Debug.LogError("[Curvy] CurvySplineSegment.TF: Setting a TF value is not allowed"); + } + + /// + /// Gets whether this Control Point is the first IGNORING closed splines + /// + public bool IsFirstControlPoint + { + get + { + return (Spline.GetControlPointIndex(this) == 0); + } + } + + /// + /// Gets whether this Control Point is the last IGNORING closed splines + /// + public bool IsLastControlPoint + { + get + { + return (Spline.GetControlPointIndex(this) == Spline.ControlPointCount - 1); + } + } + + /// + /// The Metadata components added to this GameObject + /// + public HashSet Metadata + { + get + { + return mMetadata; + } + } + + /// + /// Gets the parent spline + /// + public CurvySpline Spline + { + get + { + return mSpline; + } + } + + + /// + /// Returns true if the local position is different than the last one used in the segment approximations cache computation + /// + public bool HasUnprocessedLocalPosition { get { return cachedTransform.localPosition.Approximately(lastProcessedLocalPosition) == false; } } + /// + /// Returns true if the local orientation is different than the last one used in the segment approximations cache computation + /// + public bool HasUnprocessedLocalOrientation { get { return cachedTransform.localRotation.DifferentOrientation(lastProcessedLocalRotation); } } + /// + /// Returns wheter the orientation of this Control Point influences the orientation of its containing spline's approximation points. + /// Returns false if control point is not part of a spline + /// + public bool OrientatinInfluencesSpline { get { return mSpline != null && (mSpline.Orientation == CurvyOrientation.Static || mSpline.IsControlPointAnOrientationAnchor(this)); } } + + #endregion + + #region ### Public Methods ### + + /// + /// Sets Bezier HandleIn + /// + /// HandleIn position + /// The space (spline's local space or the world space) in which the is expressed + /// Handle synchronization mode + public void SetBezierHandleIn(Vector3 position, Space space = Space.Self, CurvyBezierModeEnum mode = CurvyBezierModeEnum.None) + { + if (space == Space.Self) + HandleIn = position; + else + HandleInPosition = position; + + bool syncDirections = (mode & CurvyBezierModeEnum.Direction) == CurvyBezierModeEnum.Direction; + bool syncLengths = (mode & CurvyBezierModeEnum.Length) == CurvyBezierModeEnum.Length; + bool syncConnectedCPs = (mode & CurvyBezierModeEnum.Connections) == CurvyBezierModeEnum.Connections; + + if (syncDirections) + HandleOut = HandleOut.magnitude * (HandleIn.normalized * -1); + if (syncLengths) + HandleOut = HandleIn.magnitude * ((HandleOut == Vector3.zero) ? HandleIn.normalized * -1 : HandleOut.normalized); + if (Connection && syncConnectedCPs && (syncDirections || syncLengths)) + { + ReadOnlyCollection connectionControlPoints = Connection.ControlPointsList; + for (int index = 0; index < connectionControlPoints.Count; index++) + { + CurvySplineSegment connectedCp = connectionControlPoints[index]; + if (connectedCp == this) + continue; + + if (connectedCp.HandleIn.magnitude == 0) + connectedCp.HandleIn = HandleIn; + + if (syncDirections) + connectedCp.SetBezierHandleIn(connectedCp.HandleIn.magnitude * HandleIn.normalized * Mathf.Sign(Vector3.Dot(HandleIn, connectedCp.HandleIn)), Space.Self, CurvyBezierModeEnum.Direction); + if (syncLengths) + connectedCp.SetBezierHandleIn(connectedCp.HandleIn.normalized * HandleIn.magnitude, Space.Self, CurvyBezierModeEnum.Length); + } + } + } + + /// + /// Sets Bezier HandleOut + /// + /// HandleOut position + /// The space (spline's local space or the world space) in which the is expressed + /// Handle synchronization mode + public void SetBezierHandleOut(Vector3 position, Space space = Space.Self, CurvyBezierModeEnum mode = CurvyBezierModeEnum.None) + { + if (space == Space.Self) + HandleOut = position; + else + HandleOutPosition = position; + + bool syncDirections = (mode & CurvyBezierModeEnum.Direction) == CurvyBezierModeEnum.Direction; + bool syncLengths = (mode & CurvyBezierModeEnum.Length) == CurvyBezierModeEnum.Length; + bool syncConnectedCPs = (mode & CurvyBezierModeEnum.Connections) == CurvyBezierModeEnum.Connections; + + if (syncDirections) + HandleIn = HandleIn.magnitude * (HandleOut.normalized * -1); + if (syncLengths) + HandleIn = HandleOut.magnitude * ((HandleIn == Vector3.zero) ? HandleOut.normalized * -1 : HandleIn.normalized); + + if (Connection && syncConnectedCPs && (syncDirections || syncLengths)) + { + for (int index = 0; index < (Connection.ControlPointsList).Count; index++) + { + CurvySplineSegment connectedCp = (Connection.ControlPointsList)[index]; + if (connectedCp == this) + continue; + + if (connectedCp.HandleOut.magnitude == 0) + connectedCp.HandleOut = HandleOut; + + if (syncDirections) + connectedCp.SetBezierHandleOut(connectedCp.HandleOut.magnitude * HandleOut.normalized * Mathf.Sign(Vector3.Dot(HandleOut, connectedCp.HandleOut)), Space.Self, CurvyBezierModeEnum.Direction); + if (syncLengths) + connectedCp.SetBezierHandleOut(connectedCp.HandleOut.normalized * HandleOut.magnitude, Space.Self, CurvyBezierModeEnum.Length); + } + } + } + + /// + /// Automatically place Bezier handles relative to neighbour Control Points + /// + /// how much % distance between neighbouring CPs are applied to the handle length? + /// Set HandleIn? + /// Set HandleOut? + /// If true, the Bezier handles will be modified without dirtying any spline + public void SetBezierHandles(float distanceFrag = -1, bool setIn = true, bool setOut = true, bool noDirtying = false) + { + Vector3 pIn = Vector3.zero; + Vector3 pOut = Vector3.zero; + if (distanceFrag == -1) + distanceFrag = AutoHandleDistance; + if (distanceFrag > 0) + { + CurvySpline spline = Spline; + + CurvySplineSegment nextControlPoint = spline.GetNextControlPoint(this); + Transform nextTt = nextControlPoint + ? nextControlPoint.transform + : cachedTransform; + CurvySplineSegment previousControlPoint = spline.GetPreviousControlPoint(this); + Transform previousTt = previousControlPoint + ? previousControlPoint.transform + : cachedTransform; + + + Vector3 c = cachedTransform.localPosition; + Vector3 p = previousTt.localPosition - c; + Vector3 n = nextTt.localPosition - c; + SetBezierHandles(distanceFrag, p, n, setIn, setOut, noDirtying); + } + else + { + // Fallback to zero + if (setIn) + if (noDirtying) + m_HandleIn = pIn; + else + HandleIn = pIn; + + if (setOut) + if (noDirtying) + m_HandleOut = pOut; + else + HandleOut = pOut; + } + + } + + /// + /// Automatically place Bezier handles + /// + /// how much % distance between neighbouring CPs are applied to the handle length? + /// Position the In-Handle relates to + /// Position the Out-Handle relates to + /// Set HandleIn? + /// Set HandleOut? + /// If true, the Bezier handles will be modified without dirtying any spline + public void SetBezierHandles(float distanceFrag, Vector3 p, Vector3 n, bool setIn = true, bool setOut = true, bool noDirtying = false) + { + float pLen = p.magnitude; + float nLen = n.magnitude; + Vector3 pIn = Vector3.zero; + Vector3 pOut = Vector3.zero; + + if (pLen != 0 || nLen != 0) + { + Vector3 dir = ((pLen / nLen) * n - p).normalized; + pIn = -dir * (pLen * distanceFrag); + pOut = dir * (nLen * distanceFrag); + } + + // Fallback to zero + if (setIn) + if (noDirtying) + m_HandleIn = pIn; + else + HandleIn = pIn; + + if (setOut) + if (noDirtying) + m_HandleOut = pOut; + else + HandleOut = pOut; + } + + + /// + /// Sets Follow-Up of this Control Point + /// + /// the Control Point to follow to + /// the Heading on the target's spline + public void SetFollowUp(CurvySplineSegment target, ConnectionHeadingEnum heading = ConnectionHeadingEnum.Auto) + { + if (target == null) + { + FollowUp = target; + FollowUpHeading = heading; + } + else if (Spline.CanControlPointHaveFollowUp(this)) + { + if (Connection == null || Connection != target.Connection) + DTLog.LogError("[Curvy] Trying to set as a Follow-Up a Control Point that is not part of the same connection"); + else + { + FollowUp = target; + FollowUpHeading = heading; + } + } + else + DTLog.LogError("[Curvy] Setting a Follow-Up to a Control Point that can't have one"); + } + + /// + /// Resets the connections related data (Connection, FollowUp, etc) while updating the Connection object and dirtying relevant splines. + /// + public void Disconnect() + { + Disconnect(true); + } + + /// + /// Resets the connections related data (Connection, FollowUp, etc) while updating the Connection object and dirtying relevant splines. + /// + /// whether the related should be destroyed if it becomes empty due to this Disconnect call + public void Disconnect(bool destroyEmptyConnection) + { + if (Connection) + Connection.RemoveControlPoint(this, destroyEmptyConnection); + + //TODO make all this data part of the connection and not the CP + //Reset connection related data + FollowUp = null; + FollowUpHeading = ConnectionHeadingEnum.Auto; + ConnectionSyncPosition = false; + ConnectionSyncRotation = false; + } + + /// + /// Gets the position of a point on the spline segment + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// The space (spline's local space or the world space) in which the returned result is expressed + public Vector3 Interpolate(float localF, Space space = Space.Self) + { + CurvySpline spline = Spline; + +#if CURVY_SANITY_CHECKS + if (spline.Dirty) + DTLog.LogWarning("Interpolate should not be called on segment of a dirty spline. Call CurvySpline.Refresh first"); + Assert.IsTrue(spline.IsControlPointASegment(this)); + Assert.IsTrue(spline.IsCpsRelationshipCacheValidINTERNAL); +#endif + CurvyInterpolation curvyInterpolation = spline.Interpolation; + + Vector3 result; + localF = Mathf.Clamp01(localF); + + //If you modify this, modify also the inlined version of this method in refreshCurveINTERNAL() + switch (curvyInterpolation) + { + case CurvyInterpolation.BSpline: + result = BSpline(spline.ControlPointsList, spline.SegmentToTF(this, localF), spline.IsBSplineClamped, spline.Closed, spline.BSplineDegree, BSplineP0Array.Array); + break; + case CurvyInterpolation.Bezier: + { + result = CurvySpline.Bezier(threadSafeLocalPosition.Addition(HandleOut), + threadSafeLocalPosition, + threadSafeNextCpLocalPosition, + threadSafeNextCpLocalPosition.Addition(cachedNextControlPoint.HandleIn), + localF); + break; + } + case CurvyInterpolation.CatmullRom: + case CurvyInterpolation.TCB: + { + if (curvyInterpolation == CurvyInterpolation.TCB) + { + float t0 = StartTension; float t1 = EndTension; + float c0 = StartContinuity; float c1 = EndContinuity; + float b0 = StartBias; float b1 = EndBias; + + if (!OverrideGlobalTension) + t0 = t1 = mSpline.Tension; + if (!OverrideGlobalContinuity) + c0 = c1 = mSpline.Continuity; + if (!OverrideGlobalBias) + b0 = b1 = mSpline.Bias; + + result = CurvySpline.TCB(threadSafePreviousCpLocalPosition, + threadSafeLocalPosition, + threadSafeNextCpLocalPosition, + cachedNextControlPoint.threadSafeNextCpLocalPosition, + localF, t0, c0, b0, t1, c1, b1); + } + else + result = CurvySpline.CatmullRom(threadSafePreviousCpLocalPosition, + threadSafeLocalPosition, + threadSafeNextCpLocalPosition, + cachedNextControlPoint.threadSafeNextCpLocalPosition, + localF); + } + break; + case CurvyInterpolation.Linear: + result = OptimizedOperators.LerpUnclamped( + threadSafeLocalPosition, + threadSafeNextCpLocalPosition, + localF); + break; + default: + DTLog.LogError("[Curvy] Invalid interpolation value " + curvyInterpolation); + return Vector3.zero; + } + + if (space == Space.World) + result = spline.ToWorldPosition(result); + return result; + } + + /// + /// Gets the position of a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// The space (spline's local space or the world space) in which the returned result is expressed + public Vector3 InterpolateFast(float localF, Space space = Space.Self) + { + Vector3 result; + if (Approximation.Length > 1) + { + float frag; + int idx = getApproximationIndexINTERNAL(localF, out frag); + result = OptimizedOperators.LerpUnclamped(Approximation[idx], Approximation[idx + 1], frag); + } + else + result = Approximation[0]; + + if (space == Space.World) + result = Spline.ToWorldPosition(result); + return result; + } + + /// + /// Gets the normalized tangent at a point on the spline segment + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// The space (spline's local space or the world space) in which the returned result is expressed + public Vector3 GetTangent(float localF, Space space = Space.Self) + { + localF = Mathf.Clamp01(localF); + Vector3 position = Interpolate(localF, space); + return GetTangent(localF, position, space); + } + + /// + /// Gets the normalized tangent at a point on the spline segment. + /// This method is faster than if you have already the position of the point. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// the position of the point at localF. In other words, the result of + /// The space (spline's local space or the world space) in which the returned result is expressed + public Vector3 GetTangent(float localF, Vector3 position, Space space = Space.Self) + { + CurvySpline curvySpline = Spline; +#if CONTRACTS_FULL + Contract.Requires(curvySpline != null); +#endif + Vector3 p2; + int leave = 2; + const float fIncrement = 0.01f; + do + { + float f2 = localF + fIncrement; + if (f2 > 1) + { + CurvySplineSegment nSeg = curvySpline.GetNextSegment(this); + if (nSeg) + p2 = nSeg.Interpolate(f2 - 1, space);//return (NextSegment.Interpolate(f2 - 1) - position).normalized; + else + { + f2 = localF - fIncrement; + return OptimizedOperators.Normalize(position.Subtraction(Interpolate(f2, space))); + } + } + else + p2 = Interpolate(f2, space); // return (Interpolate(f2) - position).normalized; + + localF += fIncrement; + } while (p2 == position && --leave > 0); + + return OptimizedOperators.Normalize(p2.Subtraction(position)); + } + + /// + /// Gets the normalized tangent at a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// The space (spline's local space or the world space) in which the returned result is expressed + public Vector3 GetTangentFast(float localF, Space space = Space.Self) + { + Vector3 result; + if (ApproximationT.Length > 1) + { + float frag; + int idx = getApproximationIndexINTERNAL(localF, out frag); + result = Vector3.SlerpUnclamped(ApproximationT[idx], ApproximationT[idx + 1], frag); + } + else + result = ApproximationT[0]; + + if (space == Space.World) + result = Spline.ToWorldDirection(result); + return result; + } + + /// + /// Gets the position and normalized tangent at a point on the spline segment + /// Is Faster than calling and separately + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// the output position + /// the output tangent + /// The space (spline's local space or the world space) in which the returned result is expressed + public void InterpolateAndGetTangent(float localF, out Vector3 position, out Vector3 tangent, Space space = Space.Self) + { + localF = Mathf.Clamp01(localF); + position = Interpolate(localF, space); + tangent = GetTangent(localF, position, space); + } + + /// + /// Gets the position and normalized tangent at a point on the spline segment + /// Is Faster than calling and separately + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// the output position + /// the output tangent + /// The space (spline's local space or the world space) in which the returned result is expressed + public void InterpolateAndGetTangentFast(float localF, out Vector3 position, out Vector3 tangent, Space space = Space.Self) + { + if (Approximation.Length > 1) + { + float frag; + int idx = getApproximationIndexINTERNAL(localF, out frag); + int idx2 = idx + 1; + position = OptimizedOperators.LerpUnclamped(Approximation[idx], Approximation[idx2], frag); + tangent = Vector3.SlerpUnclamped(ApproximationT[idx], ApproximationT[idx2], frag); + } + else + { + position = Approximation[0]; + tangent = ApproximationT[0]; + } + + + if (space == Space.World) + { + position = Spline.ToWorldPosition(position); + tangent = Spline.ToWorldDirection(tangent); + } + } + + /// + /// Gets the Up vector of a point on the spline segment. + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// The space (spline's local space or the world space) in which the returned result is expressed + public Vector3 GetOrientationUpFast(float localF, Space space = Space.Self) + { + Vector3 result; + if (ApproximationUp.Length > 1) + { + float frag; + int idx = getApproximationIndexINTERNAL(localF, out frag); + result = Vector3.SlerpUnclamped(ApproximationUp[idx], ApproximationUp[idx + 1], frag); + } + else + result = ApproximationUp[0]; + + if (space == Space.World) + result = Spline.ToWorldDirection(result); + return result; + } + + /// + /// Gets the rotation of a point on the spline segment. The rotation's forward is the segment's tangent, and it's up is the segment's orientation + /// Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// whether the orientation should look at the opposite direction of the tangent + /// The space (spline's local space or the world space) in which the returned result is expressed + public Quaternion GetOrientationFast(float localF, bool inverse = false, Space space = Space.Self) + { + Vector3 view = GetTangentFast(localF, space); + + Quaternion result; + if (view != Vector3.zero) + { + if (inverse) + view *= -1; + result = Quaternion.LookRotation(view, GetOrientationUpFast(localF, space)); + } + else + { +#if CURVY_SANITY_CHECKS + Debug.LogError(string.Format("[Curvy] Invalid Orientation for segment {0} at localF {1}", this, localF)); +#endif + result = Quaternion.identity; + } + + return result; + + } + + + #region MetaData handling + + /// + /// Rebuilds + /// + public void ReloadMetaData() + { + Metadata.Clear(); + CurvyMetadataBase[] metaDataComponents = GetComponents(); + foreach (CurvyMetadataBase metaData in metaDataComponents) + Metadata.Add(metaData); + + CheckAgainstMetaDataDuplication(); + } + + /// + /// Adds a MetaData instance to + /// + public void RegisterMetaData(CurvyMetadataBase metaData) + { + Metadata.Add(metaData); + CheckAgainstMetaDataDuplication(); + } + + /// + /// Removes a MetaData instance from + /// + public void UnregisterMetaData(CurvyMetadataBase metaData) + { + Metadata.Remove(metaData); + } + + /// + /// Gets Metadata of this ControlPoint + /// + /// Metadata type + /// whether to create the Metadata component if it's not present + /// the Metadata component or null + public T GetMetadata(bool autoCreate = false) where T : CurvyMetadataBase + { + Type type = typeof(T); + T result = null; + + foreach (CurvyMetadataBase metaData in Metadata) + if (metaData != null && metaData.GetType() == type) + { + result = (T)metaData; + break; + } + + if (autoCreate && result == null) + { + result = gameObject.AddComponent(); + Metadata.Add(result); + } + return result; + } + + /// + /// Gets an interpolated Metadata value for a certain F + /// + /// Metadata type inheriting from CurvyInterpolatableMetadataBase + /// Metadata's Value type + /// a local F in the range 0..1 + /// The interpolated value. If no Metadata of specified type is present at the given tf, the default value of type U is returned + public U GetInterpolatedMetadata(float f) where T : CurvyInterpolatableMetadataBase + { + T metaData = GetMetadata(); + if (metaData != null) + { + CurvySplineSegment nextCp = Spline.GetNextControlPointUsingFollowUp(this); + CurvyInterpolatableMetadataBase nextMetaData = null; + if (nextCp) + nextMetaData = nextCp.GetMetadata(); + return metaData.Interpolate(nextMetaData, f); + } + return default(U); + } + + /// + /// Removes all Metadata components of this Control Point + /// + public void DeleteMetadata() + { + List metaDataList = Metadata.ToList(); + for (int i = metaDataList.Count - 1; i >= 0; i--) + metaDataList[i].Destroy(true, false); + } + #endregion + + /// + /// Gets the localF of the point on the segment that is the nearest to a given position + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// + /// The point's position + /// The space (spline's local space or the world space) in which the returned result is expressed is expressed + /// This method's precision and speed depend on the + public float GetNearestPointF(Vector3 position, Space space = Space.Self) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(CacheSize >= 0, "[Curvy] CurvySplineSegment has uninitialized cache. Call Refresh() on the CurvySpline it belongs to."); +#endif + if (space == Space.World) + position = Spline.ToLocalPosition(position); + + CurvyUtility.GetNearestPointIndex(position, Approximation, Approximation.Length, out int index, out float frag); + + // return the nearest collision + return (index + frag) / (Approximation.Length - 1); + + } + + + /// + /// Gets the local F of a point given its local distance + /// Local F stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// + /// The distance between the segment's start and the point you are interested in. Value should be in the range from 0 to inclusive> + public float DistanceToLocalF(float localDistance) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(localDistance >= 0); + Assert.IsTrue(localDistance <= Length); +#endif + int approximationDistancesLength = ApproximationDistances.Length; + + if (approximationDistancesLength <= 1 || localDistance == 0) + return 0; + + int lowerIndex = CurvyUtility.InterpolationSearch(ApproximationDistances, ApproximationDistances.Length, localDistance); + if (lowerIndex == approximationDistancesLength - 1) + return 1; + + //BUG this basically interpolates linearly the F value between two cache points. This is an approximation that is not correct because F does not vary linearly between two points, unlike distance that does. The issue is not big as long as there is a lot of cache points to keep the difference between the correct answer and the approximate one small enough. + float frag = (localDistance - ApproximationDistances[lowerIndex]) / (ApproximationDistances[lowerIndex + 1] - ApproximationDistances[lowerIndex]); + return (lowerIndex + frag) / (approximationDistancesLength - 1); + } + + /// + /// Gets the local distance of a point at a certain localF. + /// Local distance is the distance between a point and the start of its segment. Value ranges from 0 to the segment's , inclusive + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + public float LocalFToDistance(float localF) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(localF >= 0); + Assert.IsTrue(localF <= 1); +#endif + if (ApproximationDistances.Length <= 1 || localF == 0) + return 0; + + if (localF == 1f) + return Length; + + float frag; + int idx = getApproximationIndexINTERNAL(localF, out frag); +#if CURVY_SANITY_CHECKS + Assert.IsTrue(idx >= 0); + Assert.IsTrue(idx < ApproximationDistances.Length - 1); +#endif + float d = ApproximationDistances[idx + 1] - ApproximationDistances[idx]; + return ApproximationDistances[idx] + d * frag; + } + + /// + /// Gets TF for a certain local F + /// TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline + /// + /// localF stands for Local Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the segment's start and 1 means the segment's end. This is the "time" parameter used in the splines' formulas. A point's localF is not proportional to its distance from the segment's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the segment + /// a TF value + public float LocalFToTF(float localF) + { + return Spline.SegmentToTF(this, localF); + } + + public override string ToString() + { + if (Spline != null) + return Spline.name + "." + name; + else + return base.ToString(); + } + + /// + /// Modify the control point's local rotation to match the segment's orientation + /// + public void BakeOrientationToTransform() + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(ApproximationUp.Length > 0); +#endif + + Quaternion orientation = GetOrientationFast(0); + if (cachedTransform.localRotation.DifferentOrientation(orientation)) + SetLocalRotation(orientation); + } + + /// + /// Internal, gets the index of mApproximation by F and the remaining fragment + /// + public int getApproximationIndexINTERNAL(float localF, out float frag) + { + int approximationLength = Approximation.Length; + + float f = localF * (approximationLength - 1); + + int tempIndex = (int)f; + int index = tempIndex <= 0 + ? 0 + : tempIndex >= approximationLength - 2 + ? approximationLength - 2 + : tempIndex; + + float tempFrag = f - index; + frag = tempFrag <= 0 + ? 0 + : tempFrag >= 1 + ? 1 + : tempFrag; + + return index; + } + + public void LinkToSpline(CurvySpline spline) + { +#if CURVY_SANITY_CHECKS + //The following assertion is commented because, when dragging CPs from spline A to Spline B, we might have B's SyncSplineFromHierarchy executed before A's, and will call A's CP.LinkToSpline(B) while A's CP still has mSpline != null + //Assert.IsTrue(mSpline == null, name); +#endif + + mSpline = spline; + } + + public void UnlinkFromSpline() + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(mSpline != null); +#endif + mSpline = null; + } + +#if CONTRACTS_FULL + [ContractInvariantMethod] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "Required for code contracts.")] + private void ObjectInvariant() + { + //Contract.Invariant(mSpline == null || transform.parent.GetComponent() == mSpline); + //Contract.Invariant((mSpline == null) == (mControlPointIndex == -1)); + //Contract.Invariant(mSpline == null || mControlPointIndex < mSpline.ControlPointCount); + //Contract.Invariant(mSpline == null || mSpline.ControlPoints.ElementAt(mControlPointIndex) == this); + Contract.Invariant(Connection == null || Connection.ControlPoints.Contains(this)); + Contract.Invariant(Connection == null || Spline != null); + Contract.Invariant(FollowUp == null || Connection != null); + + //TODO CONTRACT reactivate these if you find a way to call GetNextControlPoint and GetPreviousControlPoint without modifying the cache + //Contract.Invariant(FollowUp == null || Spline.GetNextControlPoint(this) == null || Spline.GetPreviousControlPoint(this) == null); + } +#endif + + #region Update position and rotation + + /// + /// Sets the local position while dirtying the spline, dirtying the connected splines, and updating the connected control points' positions accordingly. + /// + /// + public void SetLocalPosition(Vector3 newPosition) + { + if (cachedTransform.localPosition != newPosition) + { + cachedTransform.localPosition = newPosition; + Spline.SetDirtyPartial(this, SplineDirtyingType.Everything); + if ((ConnectionSyncPosition || ConnectionSyncRotation) && Connection != null) + Connection.SetSynchronisationPositionAndRotation( + ConnectionSyncPosition ? cachedTransform.position : Connection.transform.position, + ConnectionSyncRotation ? cachedTransform.rotation : Connection.transform.rotation); + } + } + + /// + /// Sets the global position while dirtying the spline, dirtying the connected splines, and updating the connected control points' positions accordingly. + /// + /// + public void SetPosition(Vector3 value) + { + if (cachedTransform.position != value) + { + cachedTransform.position = value; + Spline.SetDirtyPartial(this, SplineDirtyingType.Everything); + if ((ConnectionSyncPosition || ConnectionSyncRotation) && Connection != null) + Connection.SetSynchronisationPositionAndRotation( + ConnectionSyncPosition ? cachedTransform.position : Connection.transform.position, + ConnectionSyncRotation ? cachedTransform.rotation : Connection.transform.rotation); + } + } + + /// + /// Sets the local rotation while dirtying the spline, dirtying the connected splines, and updating the connected control points' rotations accordingly. + /// + /// + public void SetLocalRotation(Quaternion value) + { + if (cachedTransform.localRotation != value) + { + cachedTransform.localRotation = value; + if (OrientatinInfluencesSpline) + Spline.SetDirtyPartial(this, SplineDirtyingType.OrientationOnly); + if ((ConnectionSyncPosition || ConnectionSyncRotation) && Connection != null) + Connection.SetSynchronisationPositionAndRotation( + ConnectionSyncPosition ? cachedTransform.position : Connection.transform.position, + ConnectionSyncRotation ? cachedTransform.rotation : Connection.transform.rotation); + } + } + + /// + /// Sets the global rotation while dirtying the spline, dirtying the connected splines, and updating the connected control points' rotations accordingly. + /// + /// + public void SetRotation(Quaternion value) + { + if (cachedTransform.rotation != value) + { + cachedTransform.rotation = value; + if (OrientatinInfluencesSpline) + Spline.SetDirtyPartial(this, SplineDirtyingType.OrientationOnly); + if ((ConnectionSyncPosition || ConnectionSyncRotation) && Connection != null) + Connection.SetSynchronisationPositionAndRotation( + ConnectionSyncPosition ? cachedTransform.position : Connection.transform.position, + ConnectionSyncRotation ? cachedTransform.rotation : Connection.transform.rotation); + } + } + + #endregion + + /// + /// Returns true if followUp can be associated with a heading direction of + /// + public static bool CanFollowUpHeadToStart([NotNull] CurvySplineSegment followUp) + { + return followUp.Spline.GetPreviousControlPointIndex(followUp) != -1; + } + + /// + /// Returns true if followUp can be associated with a heading direction of + /// + public static bool CanFollowUpHeadToEnd([NotNull] CurvySplineSegment followUp) + { + return followUp.Spline.GetNextControlPointIndex(followUp) != -1; + } + + /// + /// Gets the position of a point on the B-Spline + /// + /// The spline's control points. + /// A value between 0 and 1 defining where the point is on the spline + /// + /// + /// + /// An array used in internal computations. This is to avoid excessive allocations.The length of the array should be greater or equal to + 1. The content of the array does not matter, since it gets overwritten by the method + public static Vector3 BSpline([NotNull] ReadOnlyCollection controlPoints, float tf, bool isClamped, bool isClosed, int degree, [NotNull] Vector3[] p0Array) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(p0Array.Length >= degree + 1); + Assert.IsTrue(tf.IsBetween0And1()); +#endif + int controlPointsCount = controlPoints.Count; + int n = BSplineHelper.GetBSplineN(controlPointsCount, degree, isClosed); + BSplineHelper.GetBSplineUAndK(tf, isClamped, degree, n, out float u, out int k); + GetBSplineP0s(controlPoints, controlPointsCount, degree, k, p0Array); + return isClamped + ? BSplineHelper.DeBoorClamped(degree, k, u, n + 1, p0Array) + : BSplineHelper.DeBoorUnclamped(degree, k, u, p0Array); + } + + #endregion + + #region ### Interface Implementations ### + + //IPoolable + public void OnBeforePush() + { + this.StripComponents(); + Disconnect(); + DeleteMetadata(); + } + + //IPoolable + public void OnAfterPop() + { + Reset(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.cs.meta new file mode 100644 index 00000000..bd8f5e4e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f3c8d58ac75eab43bd8d07d598ce5bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -102 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegmentDefaultValues.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegmentDefaultValues.cs new file mode 100644 index 00000000..20e94455 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegmentDefaultValues.cs @@ -0,0 +1,24 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; + +namespace FluffyUnderware.Curvy +{ + /// + /// Here you can find all the default values for CurvySplineSegment's serialized fields. If you don't find a field here, this means that it's type's default value is the same than the field's default value + /// + public static class CurvySplineSegmentDefaultValues + { + public const CurvyOrientationSwirl Swirl = CurvyOrientationSwirl.None; + public const bool SynchronizeTCB = true; + public const bool AutoHandles = true; + public const float AutoHandleDistance = 0.39f; + public static readonly Vector3 HandleIn = new Vector3(-1, 0, 0); + public static readonly Vector3 HandleOut = new Vector3(1, 0, 0); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegmentDefaultValues.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegmentDefaultValues.cs.meta new file mode 100644 index 00000000..e139adf5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegmentDefaultValues.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e978a42d747dc414a880c903dec0e67f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment_private.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment_private.cs new file mode 100644 index 00000000..587c66ce --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment_private.cs @@ -0,0 +1,1539 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +#if UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6) +#define CSHARP_7_2_OR_NEWER +#endif + +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.Curvy; +using FluffyUnderware.Curvy.Utils; +using System.Collections.Generic; +using FluffyUnderware.DevTools; +using UnityEngine.Serialization; +using System.Reflection; +using System; +using System.Collections.ObjectModel; +using System.Linq; +using System.Runtime.CompilerServices; +using FluffyUnderware.Curvy.Pools; +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +using JetBrains.Annotations; +using ToolBuddy.Pooling.Collections; +using ToolBuddy.Pooling.Pools; +using UnityEngine.Assertions; + + +namespace FluffyUnderware.Curvy +{ + /// + /// Class covering a Curvy Spline Segment / ControlPoint + /// + public partial class CurvySplineSegment : DTVersionedMonoBehaviour, IPoolable + { + + #region ### Serialized Fields ### + + #region --- General --- + + [Group("General")] + [FieldAction("CBBakeOrientation", Position = ActionAttribute.ActionPositionEnum.Below)] + [Label("Bake Orientation", "Automatically apply orientation to CP transforms?")] + [SerializeField] + private bool m_AutoBakeOrientation; + + [Group("General")] + [Tooltip("Check to use this transform's rotation")] + [FieldCondition(nameof(IsOrientationAnchorEditable), true)] + [SerializeField] + private bool m_OrientationAnchor; + + [Label("Swirl", "Add Swirl to orientation?")] + [Group("General")] + [FieldCondition(nameof(canHaveSwirl), true)] + [SerializeField] + private CurvyOrientationSwirl m_Swirl = CurvySplineSegmentDefaultValues.Swirl; + + [Label("Turns", "Number of swirl turns")] + [Group("General")] + [FieldCondition(nameof(canHaveSwirl), true, false, ConditionalAttribute.OperatorEnum.AND, "m_Swirl", CurvyOrientationSwirl.None, true)] + [SerializeField] + private float m_SwirlTurns; + + #endregion + + #region --- Bezier --- + + [Section("Bezier Options", Sort = 1, HelpURL = CurvySpline.DOCLINK + "curvysplinesegment_bezier")] + [GroupCondition(nameof(interpolation), CurvyInterpolation.Bezier)] + [SerializeField] + private bool m_AutoHandles = CurvySplineSegmentDefaultValues.AutoHandles; + + [RangeEx(0, 1, "Distance %", "Handle length by distance to neighbours")] + [FieldCondition(nameof(m_AutoHandles), true, Action = ConditionalAttribute.ActionEnum.Enable)] + [SerializeField] + private float m_AutoHandleDistance = CurvySplineSegmentDefaultValues.AutoHandleDistance; + + [VectorEx(Precision = 3, Options = AttributeOptionsFlags.Clipboard | AttributeOptionsFlags.Negate, Color = "#FFFF00")] + [SerializeField, FormerlySerializedAs("HandleIn")] + private Vector3 m_HandleIn = CurvySplineSegmentDefaultValues.HandleIn; + + [VectorEx(Precision = 3, Options = AttributeOptionsFlags.Clipboard | AttributeOptionsFlags.Negate, Color = "#00FF00")] + [SerializeField, FormerlySerializedAs("HandleOut")] + private Vector3 m_HandleOut = CurvySplineSegmentDefaultValues.HandleOut; + + #endregion + + #region --- TCB --- + + [Section("TCB Options", Sort = 1, HelpURL = CurvySpline.DOCLINK + "curvysplinesegment_tcb")] + [GroupCondition(nameof(interpolation), CurvyInterpolation.TCB)] + [GroupAction("TCBOptionsGUI", Position = ActionAttribute.ActionPositionEnum.Below)] + + [Label("Local Tension", "Override Spline Tension?")] + [SerializeField, FormerlySerializedAs("OverrideGlobalTension")] + private bool m_OverrideGlobalTension; + + [Label("Local Continuity", "Override Spline Continuity?")] + [SerializeField, FormerlySerializedAs("OverrideGlobalContinuity")] + private bool m_OverrideGlobalContinuity; + + [Label("Local Bias", "Override Spline Bias?")] + [SerializeField, FormerlySerializedAs("OverrideGlobalBias")] + private bool m_OverrideGlobalBias; + [Tooltip("Synchronize Start and End Values")] + [SerializeField, FormerlySerializedAs("SynchronizeTCB")] + private bool m_SynchronizeTCB = CurvySplineSegmentDefaultValues.SynchronizeTCB; + [Label("Tension"), FieldCondition("m_OverrideGlobalTension", true)] + [SerializeField, FormerlySerializedAs("StartTension")] + private float m_StartTension; + + [Label("Tension (End)"), FieldCondition("m_OverrideGlobalTension", true, false, ConditionalAttribute.OperatorEnum.AND, "m_SynchronizeTCB", false, false)] + [SerializeField, FormerlySerializedAs("EndTension")] + private float m_EndTension; + + [Label("Continuity"), FieldCondition("m_OverrideGlobalContinuity", true)] + [SerializeField, FormerlySerializedAs("StartContinuity")] + private float m_StartContinuity; + + [Label("Continuity (End)"), FieldCondition("m_OverrideGlobalContinuity", true, false, ConditionalAttribute.OperatorEnum.AND, "m_SynchronizeTCB", false, false)] + [SerializeField, FormerlySerializedAs("EndContinuity")] + private float m_EndContinuity; + + [Label("Bias"), FieldCondition("m_OverrideGlobalBias", true)] + [SerializeField, FormerlySerializedAs("StartBias")] + private float m_StartBias; + + [Label("Bias (End)"), FieldCondition("m_OverrideGlobalBias", true, false, ConditionalAttribute.OperatorEnum.AND, "m_SynchronizeTCB", false, false)] + [SerializeField, FormerlySerializedAs("EndBias")] + private float m_EndBias; + + #endregion + /* +#region --- CG Options --- + + /// + /// Material ID (used by CG) + /// + [Section("Generator Options", true, Sort = 5, HelpURL = CurvySpline.DOCLINK + "curvysplinesegment_cg")] + [Positive(Label="Material ID")] + [SerializeField] + int m_CGMaterialID; + + /// + /// Whether to create a hard edge or not (used by PCG) + /// + [Label("Hard Edge")] + [SerializeField] + bool m_CGHardEdge; + /// + /// Maximum vertex distance when using optimization (0=infinite) + /// + [Positive(Label="Max Step Size",Tooltip="Max step distance when using optimization")] + [SerializeField] + float m_CGMaxStepDistance; +#endregion + */ + #region --- Connections --- + + [SerializeField, HideInInspector] private CurvySplineSegment m_FollowUp; + [SerializeField, HideInInspector] private ConnectionHeadingEnum m_FollowUpHeading = ConnectionHeadingEnum.Auto; + //DESIGN: shouldn't these two be part of Connection? By spreading them on the ControlPoints, we risk a desynchronisation between m_ConnectionSyncPosition's value of a CP and the one of the connected CP + [SerializeField, HideInInspector] private bool m_ConnectionSyncPosition; + [SerializeField, HideInInspector] private bool m_ConnectionSyncRotation; + + [SerializeField, HideInInspector] private CurvyConnection m_Connection; + + #endregion + + #endregion + + #region ### Private Fields ### + + //Because Unity pre 2019 doesn't act like it is supposed to, I have to make two different codes for cachedTransform. Here is the issue: + //cachedTransform is used as an optim. The idea is to get transform once at script's start, and then use it later. Execution order says that CurvySplineSegment runs before CurvySpline. So all CSS's OnEnable methods should run before CS's ones. But this is not the case in pre 2019. So you end up with CS's OnEnable accessing (through public members) to CSS's cachedTransform, which is still set to null because its OnEnable was not called yet. +#if (UNITY_2019_1_OR_NEWER) + private Transform cachedTransform; +#else + private Transform _cachedTransform; + private Transform cachedTransform + { + get + { + if (ReferenceEquals(_cachedTransform, null)) + _cachedTransform = transform; + return _cachedTransform; + } + set + { + _cachedTransform = value; + } + } +#endif + + + /// + /// This exists because Transform can not be accessed in non main threads. So before refreshing the spline, we store the local position here so it can be accessed in multithread spline refreshing code + /// + /// Warning: Make sure it is set with valid value before using it + private Vector3 threadSafeLocalPosition; + /// + /// Same as , but for the next CP. Is equal to if no next cp. Takes into consideration Follow-Ups if spline uses them to define its shape + /// + private Vector3 threadSafeNextCpLocalPosition; + /// + /// Same as , but for the next CP. Is equal to if no previous cp. Takes into consideration Follow-Ups if spline uses them to define its shape + /// + private Vector3 threadSafePreviousCpLocalPosition; + /// + /// This exists because Transform can not be accesed in non main threads. So before refreshing the spline, we store the local rotation here so it can be accessed in multithread spline refreshing code + /// + /// Warning: Make sure it is set with valid value before using it + private Quaternion threadSafeLocalRotation; + /// + /// The cached result of Spline.GetNextControlPoint(this) + /// OPTIM: use this more often? + /// + private CurvySplineSegment cachedNextControlPoint; + + private CurvySpline mSpline; + private Bounds? mBounds; + + /// + /// The Metadata components added to this GameObject + /// + private readonly HashSet mMetadata = new HashSet(); + /// + /// The local position used in the segment approximations cache latest computation + /// + private Vector3 lastProcessedLocalPosition; + /// + /// The local rotation used in the segment approximations cache latest computation + /// + private Quaternion lastProcessedLocalRotation; + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + + private void Awake() + { + //Happens when duplicating a spline that has a connection. This can be avoided + if (Connection && Connection.ControlPointsList.Contains(this) == false) + SetConnection(null); + + cachedTransform = transform; + ReloadMetaData(); + } + + private void OnEnable() + { + Awake(); + } + +#if UNITY_EDITOR + + private void OnDrawGizmos() + { + if (Spline && Spline.IsInitialized && Spline.ShowGizmos) + { + bool willOnDrawGizmosSelectedGetCalled = false; + Transform testedTransform = gameObject.transform; + do + { + willOnDrawGizmosSelectedGetCalled = Selection.Contains(testedTransform.gameObject.GetInstanceID()); + testedTransform = testedTransform.parent; + } + while (!willOnDrawGizmosSelectedGetCalled && ReferenceEquals(testedTransform, null) == false); + + if (willOnDrawGizmosSelectedGetCalled == false) + doGizmos(false); + } + } + + private void OnDrawGizmosSelected() + { + if (Spline && Spline.IsInitialized) + doGizmos(true); + } +#endif + + private void OnDestroy() + { + //BUG? Why do we have that realDestroy boolean? Why not always do the same thing? This might hide something bad + //When asked about this jake said: + //That was quite a dirty hack as far as I remember, to counter issues with Unity's serialization + //TBH I'm not sure if those issues still are present, so you might want to see if it's working without it now. + bool realDestroy = true; +#if UNITY_EDITOR + if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying) + realDestroy = false; +#endif + //Debug.Log("realDestroy " + realDestroy); +#if UNITY_EDITOR + //mSpline is non null when the user delete only this CP. mSpline is null when the user deletes the spline, which then leads to this method to be called + if (mSpline != null) + { + if (!Application.isPlaying && + (CurvySpline._newSelectionInstanceIDINTERNAL == 0 || CurvySpline._newSelectionInstanceIDINTERNAL == GetInstanceID()) + ) + { + if (Spline.GetPreviousControlPoint(this)) + CurvySpline._newSelectionInstanceIDINTERNAL = Spline.GetPreviousControlPoint(this).GetInstanceID(); + else if (Spline.GetNextControlPoint(this)) + CurvySpline._newSelectionInstanceIDINTERNAL = Spline.GetNextControlPoint(this).GetInstanceID(); + else + CurvySpline._newSelectionInstanceIDINTERNAL = mSpline.GetInstanceID(); + } + } +#endif + if (realDestroy) + { + Disconnect(); + if (bSplineP0Array.Count > 0) + ArrayPools.Vector3.Free(bSplineP0Array); + } + } + +#if UNITY_EDITOR + private void OnValidate() + { + //Debug.Log(" OnValidate " + name); + SetAutoHandles(m_AutoHandles); + SetConnection(m_Connection); + if (mSpline != null) + { + Spline.SetDirtyAll(SplineDirtyingType.Everything, true); + Spline.InvalidateControlPointsRelationshipCacheINTERNAL(); + } + } + +#endif + + /// + /// Resets the properties of this control point, but will not remove its Connection if it has any. + /// + public void Reset() + { + m_OrientationAnchor = false; + m_Swirl = CurvySplineSegmentDefaultValues.Swirl; + m_SwirlTurns = 0; + // Bezier + m_AutoHandles = CurvySplineSegmentDefaultValues.AutoHandles; + m_AutoHandleDistance = CurvySplineSegmentDefaultValues.AutoHandleDistance; + m_HandleIn = CurvySplineSegmentDefaultValues.HandleIn; + m_HandleOut = CurvySplineSegmentDefaultValues.HandleOut; + // TCB + m_SynchronizeTCB = CurvySplineSegmentDefaultValues.SynchronizeTCB; + m_OverrideGlobalTension = false; + m_OverrideGlobalContinuity = false; + m_OverrideGlobalBias = false; + m_StartTension = 0; + m_EndTension = 0; + m_StartContinuity = 0; + m_EndContinuity = 0; + m_StartBias = 0; + m_EndBias = 0; + if (mSpline) + { + Spline.SetDirty(this, SplineDirtyingType.Everything); + Spline.InvalidateControlPointsRelationshipCacheINTERNAL(); + } + } + /*! \endcond */ + #endregion + + #region ### Privates & Internals ### + /*! \cond PRIVATE */ + + #region Properties used in inspector's field condition and group condition + + // Used as a group condition + private CurvyInterpolation interpolation + { + get { return Spline ? Spline.Interpolation : CurvyInterpolation.Linear; } + } + + // Used as a field condition + private bool isDynamicOrientation + { + get { return Spline && Spline.Orientation == CurvyOrientation.Dynamic; } + } + + // Used as a field condition + private bool IsOrientationAnchorEditable + { + get + { + CurvySpline curvySpline = Spline; + return isDynamicOrientation && curvySpline.IsControlPointVisible(this) && curvySpline.FirstVisibleControlPoint != this && curvySpline.LastVisibleControlPoint != this; + } + } + + // Used as a field condition + private bool canHaveSwirl + { + get + { + CurvySpline curvySpline = Spline; + return isDynamicOrientation && curvySpline && curvySpline.IsControlPointAnOrientationAnchor(this) && (curvySpline.Closed || curvySpline.LastVisibleControlPoint != this); + } + } + + #endregion + + #region BSplines + + /// + /// A subArray used in the computation of B-Splines, to avoid arrays computation at each computation + /// + private SubArray bSplineP0Array; + + /// + /// A subArray used in the computation of B-Splines, to avoid arrays computation at each computation + /// + private SubArray BSplineP0Array + { + get + { + if (bSplineP0Array.Count != mSpline.BSplineDegree + 1) + { + ArrayPool arrayPool = ArrayPools.Vector3; + if (bSplineP0Array.Count > 0) + arrayPool.Free((SubArray)bSplineP0Array); + bSplineP0Array = arrayPool.Allocate(Spline.BSplineDegree + 1, false); + } + return bSplineP0Array; + } + } + + /// + /// Fills with the P0s numbers as defined in the B-Spline section, De Boor's algorithm, here: https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/ + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static void GetBSplineP0s([NotNull] ReadOnlyCollection controlPoints, int controlPointsCount, int degree, int k, [NotNull] Vector3[] pArray) + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(pArray.Length >= degree + 1); +#endif + for (int j = 0; j <= degree; j++) + { + int index = j + k - degree; + pArray[j] = controlPoints[ + index < controlPointsCount + ? index + : (index - controlPointsCount) + ] + .threadSafeLocalPosition; + } + } + + #endregion + + #region Extrinsic properties + + private ControlPointExtrinsicProperties extrinsicPropertiesINTERNAL; + + /// + /// Properties describing the relationship between this CurvySplineSegment and its containing CurvySpline. + /// + internal void SetExtrinsicPropertiesINTERNAL(ControlPointExtrinsicProperties value) + { + extrinsicPropertiesINTERNAL = value; + } + + internal +#if CSHARP_7_2_OR_NEWER + ref readonly +#endif + ControlPointExtrinsicProperties GetExtrinsicPropertiesINTERNAL() + { + return +#if CSHARP_7_2_OR_NEWER + ref +#endif + extrinsicPropertiesINTERNAL; + } + + #endregion + + private void CheckAgainstMetaDataDuplication() + { + if (Metadata.Count > 1) + { + HashSet metaDataTypes = new HashSet(); + foreach (CurvyMetadataBase metaData in Metadata) + { + Type componentType = metaData.GetType(); + if (metaDataTypes.Contains(componentType)) + DTLog.LogWarning(String.Format("[Curvy] Game object '{0}' has multiple Components of type '{1}'. Control Points should have no more than one Component instance for each MetaData type.", this.ToString(), componentType)); + else + metaDataTypes.Add(componentType); + } + } + } + + /// + /// Sets the connection handler this Control Point is using + /// + /// + /// Whether a modification was done or not + /// If set to null, FollowUp wil be set to null to + private bool SetConnection(CurvyConnection newConnection) + { + bool modificationDone = false; + if (m_Connection != newConnection) + { + modificationDone = true; + m_Connection = newConnection; + } + if (m_Connection == null && m_FollowUp != null) + { + modificationDone = true; + m_FollowUp = null; + } + return modificationDone; + } + + /// + /// Returns a different ConnectionHeadingEnum value when connectionHeading has a value that is no more valid in the context of this spline. For example, heading to start (Minus) when there is no previous CP + /// + private static ConnectionHeadingEnum GetValidateConnectionHeading(ConnectionHeadingEnum connectionHeading, [CanBeNull] CurvySplineSegment followUp) + { + if (followUp == null) + return connectionHeading; + + if ((connectionHeading == ConnectionHeadingEnum.Minus && CanFollowUpHeadToStart(followUp) == false) + || (connectionHeading == ConnectionHeadingEnum.Plus && CanFollowUpHeadToEnd(followUp) == false)) + return ConnectionHeadingEnum.Auto; + + return connectionHeading; + } + + /// + /// Sets Auto Handles. When setting it the value of connected control points is also updated + /// + /// + /// Whether a modifcation was done or not + private bool SetAutoHandles(bool newValue) + { + bool modificationDone = false; + if (Connection) + { + ReadOnlyCollection controlPoints = Connection.ControlPointsList; + for (int index = 0; index < controlPoints.Count; index++) + { + CurvySplineSegment controlPoint = controlPoints[index]; + modificationDone = modificationDone || controlPoint.m_AutoHandles != newValue; + controlPoint.m_AutoHandles = newValue; + } + } + else + { + modificationDone = m_AutoHandles != newValue; + m_AutoHandles = newValue; + } + return modificationDone; + } + + /// + /// Internal, Gets localF by an index of mApproximation + /// + private float getApproximationLocalF(int idx) + { + return idx / (float)CacheSize; + } + + #region approximations cache computation + + internal void refreshCurveINTERNAL() + { + CurvySpline spline = Spline; + bool isControlPointASegment = spline.IsControlPointASegment(this); + int newCacheSize; + if (isControlPointASegment) + { +#if CURVY_SANITY_CHECKS + Assert.IsNotNull(cachedNextControlPoint); +#endif + newCacheSize = CurvySpline.CalculateCacheSize( + spline.CacheDensity, + (cachedNextControlPoint.threadSafeLocalPosition.Subtraction(threadSafeLocalPosition)).magnitude, + spline.MaxPointsPerUnit); + } + else + newCacheSize = 0; + + Array.Resize(ref Approximation, newCacheSize + 1); + Array.Resize(ref ApproximationT, newCacheSize + 1); + Array.Resize(ref ApproximationDistances, newCacheSize + 1); + Array.Resize(ref ApproximationUp, newCacheSize + 1); + + bool hasNextControlPoint = ReferenceEquals(cachedNextControlPoint, null) == false; + + //set Approximation[0] and Approximation[newCacheSize] + switch (interpolation) + { + case CurvyInterpolation.Linear: + case CurvyInterpolation.CatmullRom: + case CurvyInterpolation.TCB: + case CurvyInterpolation.Bezier: + Approximation[0] = threadSafeLocalPosition; + if (newCacheSize != 0) + Approximation[newCacheSize] = hasNextControlPoint + ? cachedNextControlPoint.threadSafeLocalPosition + : threadSafeLocalPosition; + break; + case CurvyInterpolation.BSpline: + if (isControlPointASegment) + { + Approximation[0] = BSpline(spline.ControlPointsList, spline.SegmentToTF(this), spline.IsBSplineClamped, spline.Closed, spline.BSplineDegree, BSplineP0Array.Array); + Approximation[newCacheSize] = BSpline(spline.ControlPointsList, spline.SegmentToTF(this, 1), spline.IsBSplineClamped, spline.Closed, spline.BSplineDegree, BSplineP0Array.Array); + } + else + //staying coherent with other interpolation types. TODO check why Approximation should have the element 0 when not a segment. What happens if we simply keep the array empty? + Approximation[0] = threadSafeLocalPosition; + break; + default: + throw new ArgumentOutOfRangeException(); + } + ApproximationDistances[0] = 0; + // ApproximationT[0] and ApproximationUp[0] are handled later + mBounds = null; + Length = 0; + + if (isControlPointASegment) + { + float segmentLength = 0; + switch (spline.Interpolation) + { + case CurvyInterpolation.BSpline: + segmentLength = InterpolateBSplineSegment(newCacheSize); + break; + case CurvyInterpolation.Bezier: + segmentLength = InterpolateBezierSegment(cachedNextControlPoint, newCacheSize); + break; + case CurvyInterpolation.CatmullRom: + segmentLength = InterpolateCatmullSegment(cachedNextControlPoint, newCacheSize); + break; + case CurvyInterpolation.TCB: + segmentLength = InterpolateTCBSegment(cachedNextControlPoint, newCacheSize, spline.Tension, spline.Continuity, spline.Bias); + break; + case CurvyInterpolation.Linear: + segmentLength = InterpolateLinearSegment(cachedNextControlPoint, newCacheSize); + break; + default: + DTLog.LogError("[Curvy] Invalid interpolation value " + spline.Interpolation); + break; + } + Length = segmentLength; + + Vector3 tangent = Approximation[newCacheSize].Subtraction(Approximation[newCacheSize - 1]); + Length += tangent.magnitude; + ApproximationDistances[newCacheSize] = Length; + ApproximationT[newCacheSize - 1] = tangent.normalized; + // ApproximationT[cacheSize] is set in Spline's Refresh method + ApproximationT[newCacheSize] = ApproximationT[newCacheSize - 1]; + } + else + { + if (hasNextControlPoint) + ApproximationT[0] = (cachedNextControlPoint.threadSafeLocalPosition.Subtraction(Approximation[0])).normalized; + else + { + short previousControlPointIndex = spline.GetPreviousControlPointIndex(this); + if (previousControlPointIndex != -1) + ApproximationT[0] = (Approximation[0].Subtraction(spline.ControlPointsList[previousControlPointIndex].threadSafeLocalPosition)).normalized; + else + ApproximationT[0] = threadSafeLocalRotation * Vector3.forward; + } + + //Last visible control point gets the last tangent from the previous segment. This is done in Spline's Refresh method + + } + + lastProcessedLocalPosition = threadSafeLocalPosition; + } + + + #region Inlined code for optimization + + + private float InterpolateBSplineSegment(int newCacheSize) + { + CurvySpline spline = Spline; + + float mStepSize = 1f / newCacheSize; + float lengthAccumulator = 0; + + bool isClamped = spline.IsBSplineClamped; + ReadOnlyCollection controlPoints = spline.ControlPointsList; + int degree = spline.BSplineDegree; + float segmentTF = spline.SegmentToTF(this); + float tfIncrement = mStepSize / spline.Count; + + int controlPointsCount = controlPoints.Count; + int n = BSplineHelper.GetBSplineN(controlPointsCount, degree, spline.Closed); + int previousK = int.MinValue; + + SubArray splinePsVector = BSplineP0Array; + Vector3[] ps = splinePsVector.Array; + int psCount = splinePsVector.Count; + + SubArray psCopySubArray = ArrayPools.Vector3.Allocate(psCount); + Vector3[] psCopy = psCopySubArray.Array; + + int nPlus1 = n + 1; + for (int i = 1; i < newCacheSize; i++) + { + float tf = segmentTF + tfIncrement * i; + BSplineHelper.GetBSplineUAndK(tf, isClamped, degree, n, out float u, out int k); + + if (k != previousK) + { + GetBSplineP0s(controlPoints, controlPointsCount, degree, k, ps); + previousK = k; + } + + Array.Copy(ps, 0, psCopy, 0, psCount); + + Approximation[i] = isClamped ? BSplineHelper.DeBoorClamped(degree, k, u, nPlus1, psCopy) : BSplineHelper.DeBoorUnclamped(degree, k, u, psCopy); + + Vector3 delta = Approximation[i].Subtraction(Approximation[i - 1]); + lengthAccumulator += delta.magnitude; + ApproximationDistances[i] = lengthAccumulator; + ApproximationT[i - 1] = OptimizedOperators.Normalize(delta); + } + + ArrayPools.Vector3.Free(psCopySubArray); + + return lengthAccumulator; + } + + private float InterpolateBezierSegment(CurvySplineSegment nextControlPoint, int newCacheSize) + { + //The following code is the inlined version of this code: + // for (int i = 1; i < CacheSize; i++) + // { + // Approximation[i] = interpolateBezier(i * mStepSize); + // t = (Approximation[i] - Approximation[i - 1]); + // Length += t.magnitude; + // ApproximationDistances[i] = Length; + // ApproximationT[i - 1] = t.normalized; + // } + + float mStepSize = 1f / newCacheSize; + + float lengthAccumulator = 0; + CurvySplineSegment ncp = nextControlPoint; + Vector3 p0 = threadSafeLocalPosition; + Vector3 t0 = p0 + HandleOut; + Vector3 p1 = ncp.threadSafeLocalPosition; + Vector3 t1 = p1 + ncp.HandleIn; + + const double Ft2 = 3; + const double Ft3 = -3; + const double Fu1 = 3; + const double Fu2 = -6; + const double Fu3 = 3; + const double Fv1 = -3; + const double Fv2 = 3; + + double FAX = -p0.x + Ft2 * t0.x + Ft3 * t1.x + p1.x; + double FBX = Fu1 * p0.x + Fu2 * t0.x + Fu3 * t1.x; + double FCX = Fv1 * p0.x + Fv2 * t0.x; + double FDX = p0.x; + + double FAY = -p0.y + Ft2 * t0.y + Ft3 * t1.y + p1.y; + double FBY = Fu1 * p0.y + Fu2 * t0.y + Fu3 * t1.y; + double FCY = Fv1 * p0.y + Fv2 * t0.y; + double FDY = p0.y; + + double FAZ = -p0.z + Ft2 * t0.z + Ft3 * t1.z + p1.z; + double FBZ = Fu1 * p0.z + Fu2 * t0.z + Fu3 * t1.z; + double FCZ = Fv1 * p0.z + Fv2 * t0.z; + double FDZ = p0.z; + Vector3 tangent; + + for (int i = 1; i < newCacheSize; i++) + { + float localF = i * mStepSize; + + Approximation[i].x = (float)(((FAX * localF + FBX) * localF + FCX) * localF + FDX); + Approximation[i].y = (float)(((FAY * localF + FBY) * localF + FCY) * localF + FDY); + Approximation[i].z = (float)(((FAZ * localF + FBZ) * localF + FCZ) * localF + FDZ); + + tangent.x = (Approximation[i].x - Approximation[i - 1].x); + tangent.y = (Approximation[i].y - Approximation[i - 1].y); + tangent.z = (Approximation[i].z - Approximation[i - 1].z); + + float tMagnitude = Mathf.Sqrt((float)(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z)); + lengthAccumulator += tMagnitude; + ApproximationDistances[i] = lengthAccumulator; + if ((double)tMagnitude > 9.99999974737875E-06) + { + float oneOnMagnitude = 1 / tMagnitude; + ApproximationT[i - 1].x = tangent.x * oneOnMagnitude; + ApproximationT[i - 1].y = tangent.y * oneOnMagnitude; + ApproximationT[i - 1].z = tangent.z * oneOnMagnitude; + } + else + { + ApproximationT[i - 1].x = 0; + ApproximationT[i - 1].y = 0; + ApproximationT[i - 1].z = 0; + } + } + return lengthAccumulator; + } + + + private float InterpolateTCBSegment(CurvySplineSegment nextControlPoint, int newCacheSize, float splineTension, float splineContinuity, float splineBias) + { + //The following code is the inlined version of this code: + // for (int i = 1; i < CacheSize; i++) + // { + // Approximation[i] = interpolateCatmull(i * mStepSize); + // t = (Approximation[i] - Approximation[i - 1]); + // Length += t.magnitude; + // ApproximationDistances[i] = Length; + // ApproximationT[i - 1] = t.normalized; + // } + + float mStepSize = 1f / newCacheSize; + + float lengthAccumulator = 0; + + float ft0 = StartTension; + float ft1 = EndTension; + float fc0 = StartContinuity; + float fc1 = EndContinuity; + float fb0 = StartBias; + float fb1 = EndBias; + + if (!OverrideGlobalTension) + ft0 = ft1 = splineTension; + if (!OverrideGlobalContinuity) + fc0 = fc1 = splineContinuity; + if (!OverrideGlobalBias) + fb0 = fb1 = splineBias; + + Vector3 p0 = threadSafeLocalPosition; + Vector3 p1 = threadSafeNextCpLocalPosition; + Vector3 t0 = threadSafePreviousCpLocalPosition; + Vector3 t1 = nextControlPoint.threadSafeNextCpLocalPosition; + + double FFA = (1 - ft0) * (1 + fc0) * (1 + fb0); + double FFB = (1 - ft0) * (1 - fc0) * (1 - fb0); + double FFC = (1 - ft1) * (1 - fc1) * (1 + fb1); + double FFD = (1 - ft1) * (1 + fc1) * (1 - fb1); + + double DD = 2; + double Ft1 = -FFA / DD; + double Ft2 = (+4 + FFA - FFB - FFC) / DD; + double Ft3 = (-4 + FFB + FFC - FFD) / DD; + double Ft4 = FFD / DD; + double Fu1 = +2 * FFA / DD; + double Fu2 = (-6 - 2 * FFA + 2 * FFB + FFC) / DD; + double Fu3 = (+6 - 2 * FFB - FFC + FFD) / DD; + double Fu4 = -FFD / DD; + double Fv1 = -FFA / DD; + double Fv2 = (FFA - FFB) / DD; + double Fv3 = FFB / DD; + double Fw2 = +2 / DD; + + double FAX = Ft1 * t0.x + Ft2 * p0.x + Ft3 * p1.x + Ft4 * t1.x; + double FBX = Fu1 * t0.x + Fu2 * p0.x + Fu3 * p1.x + Fu4 * t1.x; + double FCX = Fv1 * t0.x + Fv2 * p0.x + Fv3 * p1.x; + double FDX = Fw2 * p0.x; + + double FAY = Ft1 * t0.y + Ft2 * p0.y + Ft3 * p1.y + Ft4 * t1.y; + double FBY = Fu1 * t0.y + Fu2 * p0.y + Fu3 * p1.y + Fu4 * t1.y; + double FCY = Fv1 * t0.y + Fv2 * p0.y + Fv3 * p1.y; + double FDY = Fw2 * p0.y; + + double FAZ = Ft1 * t0.z + Ft2 * p0.z + Ft3 * p1.z + Ft4 * t1.z; + double FBZ = Fu1 * t0.z + Fu2 * p0.z + Fu3 * p1.z + Fu4 * t1.z; + double FCZ = Fv1 * t0.z + Fv2 * p0.z + Fv3 * p1.z; + double FDZ = Fw2 * p0.z; + Vector3 tangent; + for (int i = 1; i < newCacheSize; i++) + { + float localF = i * mStepSize; + + Approximation[i].x = (float)(((FAX * localF + FBX) * localF + FCX) * localF + FDX); + Approximation[i].y = (float)(((FAY * localF + FBY) * localF + FCY) * localF + FDY); + Approximation[i].z = (float)(((FAZ * localF + FBZ) * localF + FCZ) * localF + FDZ); + + tangent.x = (Approximation[i].x - Approximation[i - 1].x); + tangent.y = (Approximation[i].y - Approximation[i - 1].y); + tangent.z = (Approximation[i].z - Approximation[i - 1].z); + + float tMagnitude = Mathf.Sqrt((float)(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z)); + lengthAccumulator += tMagnitude; + ApproximationDistances[i] = lengthAccumulator; + if ((double)tMagnitude > 9.99999974737875E-06) + { + float oneOnMagnitude = 1 / tMagnitude; + ApproximationT[i - 1].x = tangent.x * oneOnMagnitude; + ApproximationT[i - 1].y = tangent.y * oneOnMagnitude; + ApproximationT[i - 1].z = tangent.z * oneOnMagnitude; + } + else + { + ApproximationT[i - 1].x = 0; + ApproximationT[i - 1].y = 0; + ApproximationT[i - 1].z = 0; + } + } + return lengthAccumulator; + } + + private float InterpolateCatmullSegment(CurvySplineSegment nextControlPoint, int newCacheSize) + { + //The following code is the inlined version of this code: + // for (int i = 1; i < CacheSize; i++) + // { + // Approximation[i] = interpolateTCB(i * mStepSize); + // t = (Approximation[i] - Approximation[i - 1]); + // Length += t.magnitude; + // ApproximationDistances[i] = Length; + // ApproximationT[i - 1] = t.normalized; + // } + + float mStepSize = 1f / newCacheSize; + + float lengthAccumulator = 0; + + Vector3 p0 = threadSafeLocalPosition; + Vector3 p1 = threadSafeNextCpLocalPosition; + Vector3 t0 = threadSafePreviousCpLocalPosition; + Vector3 t1 = nextControlPoint.threadSafeNextCpLocalPosition; + + const double Ft1 = -0.5; + const double Ft2 = 1.5; + const double Ft3 = -1.5; + const double Ft4 = 0.5; + const double Fu2 = -2.5; + const double Fu3 = 2; + const double Fu4 = -0.5; + const double Fv1 = -0.5; + const double Fv3 = 0.5; + + double FAX = Ft1 * t0.x + Ft2 * p0.x + Ft3 * p1.x + Ft4 * t1.x; + double FBX = t0.x + Fu2 * p0.x + Fu3 * p1.x + Fu4 * t1.x; + double FCX = Fv1 * t0.x + Fv3 * p1.x; + double FDX = p0.x; + + double FAY = Ft1 * t0.y + Ft2 * p0.y + Ft3 * p1.y + Ft4 * t1.y; + double FBY = t0.y + Fu2 * p0.y + Fu3 * p1.y + Fu4 * t1.y; + double FCY = Fv1 * t0.y + Fv3 * p1.y; + double FDY = p0.y; + + double FAZ = Ft1 * t0.z + Ft2 * p0.z + Ft3 * p1.z + Ft4 * t1.z; + double FBZ = t0.z + Fu2 * p0.z + Fu3 * p1.z + Fu4 * t1.z; + double FCZ = Fv1 * t0.z + Fv3 * p1.z; + double FDZ = p0.z; + Vector3 tangent; + for (int i = 1; i < newCacheSize; i++) + { + float localF = i * mStepSize; + + Approximation[i].x = (float)(((FAX * localF + FBX) * localF + FCX) * localF + FDX); + Approximation[i].y = (float)(((FAY * localF + FBY) * localF + FCY) * localF + FDY); + Approximation[i].z = (float)(((FAZ * localF + FBZ) * localF + FCZ) * localF + FDZ); + + tangent.x = (Approximation[i].x - Approximation[i - 1].x); + tangent.y = (Approximation[i].y - Approximation[i - 1].y); + tangent.z = (Approximation[i].z - Approximation[i - 1].z); + + float tMagnitude = Mathf.Sqrt((float)(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z)); + lengthAccumulator += tMagnitude; + ApproximationDistances[i] = lengthAccumulator; + if ((double)tMagnitude > 9.99999974737875E-06) + { + float oneOnMagnitude = 1 / tMagnitude; + ApproximationT[i - 1].x = tangent.x * oneOnMagnitude; + ApproximationT[i - 1].y = tangent.y * oneOnMagnitude; + ApproximationT[i - 1].z = tangent.z * oneOnMagnitude; + } + else + { + ApproximationT[i - 1].x = 0; + ApproximationT[i - 1].y = 0; + ApproximationT[i - 1].z = 0; + } + } + return lengthAccumulator; + } + + private float InterpolateLinearSegment(CurvySplineSegment nextControlPoint, int newCacheSize) + { + //The following code is the inlined version of this code: + // for (int i = 1; i < CacheSize; i++) + // { + // Approximation[i] = interpolateLinear(i * mStepSize); + // t = (Approximation[i] - Approximation[i - 1]); + // Length += t.magnitude; + // ApproximationDistances[i] = Length; + // ApproximationT[i - 1] = t.normalized; + // } + + float mStepSize = 1f / newCacheSize; + + float lengthAccumulator = 0; + Vector3 pStart = threadSafeLocalPosition; + Vector3 pEnd = nextControlPoint.threadSafeLocalPosition; + Vector3 tangent; + for (int i = 1; i < newCacheSize; i++) + { + float localF = i * mStepSize; + Approximation[i] = OptimizedOperators.LerpUnclamped(pStart, pEnd, localF); + + tangent.x = (Approximation[i].x - Approximation[i - 1].x); + tangent.y = (Approximation[i].y - Approximation[i - 1].y); + tangent.z = (Approximation[i].z - Approximation[i - 1].z); + + float tMagnitude = Mathf.Sqrt((float)(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z)); + lengthAccumulator += tMagnitude; + ApproximationDistances[i] = lengthAccumulator; + if ((double)tMagnitude > 9.99999974737875E-06) + { + float oneOnMagnitude = 1 / tMagnitude; + ApproximationT[i - 1].x = tangent.x * oneOnMagnitude; + ApproximationT[i - 1].y = tangent.y * oneOnMagnitude; + ApproximationT[i - 1].z = tangent.z * oneOnMagnitude; + } + else + { + ApproximationT[i - 1].x = 0; + ApproximationT[i - 1].y = 0; + ApproximationT[i - 1].z = 0; + } + } + return lengthAccumulator; + } + + #endregion + + internal void refreshOrientationNoneINTERNAL() + { + Array.Clear(ApproximationUp, 0, ApproximationUp.Length); + lastProcessedLocalRotation = threadSafeLocalRotation; + } + + internal void refreshOrientationStaticINTERNAL() + { + Vector3 firstUp = ApproximationUp[0] = getOrthoUp0INTERNAL(); + if (Approximation.Length > 1) + { + int cachedCachesize = CacheSize; + Vector3 lastUp = ApproximationUp[cachedCachesize] = getOrthoUp1INTERNAL(); + float oneOnCachSize = 1f / cachedCachesize; + for (int i = 1; i < cachedCachesize; i++) + ApproximationUp[i] = Vector3.SlerpUnclamped(firstUp, lastUp, i * oneOnCachSize); + } + + lastProcessedLocalRotation = threadSafeLocalRotation; + } + + /// + /// Set each point's up as the initialUp rotated by the same rotation than the one that rotates initial tangent to the point's tangent + /// + /// Does not handle swirl + /// + internal void refreshOrientationDynamicINTERNAL(Vector3 initialUp) + { + int upsLength = ApproximationUp.Length; + ApproximationUp[0] = initialUp; + for (int i = 1; i < upsLength; i++) + { + //Inlined version of ups[i] = DTMath.ParallelTransportFrame(ups[i-1], tangents[i - 1], tangents[i]) and with less checks for performance reasons + Vector3 tan0 = ApproximationT[i - 1]; + Vector3 tan1 = ApproximationT[i]; + //Inlined version of Vector3 A = Vector3.Cross(tan0, tan1); + Vector3 A; + { + A.x = tan0.y * tan1.z - tan0.z * tan1.y; + A.y = tan0.z * tan1.x - tan0.x * tan1.z; + A.z = tan0.x * tan1.y - tan0.y * tan1.x; + } + //Inlined version of float a = (float)Math.Atan2(A.magnitude, Vector3.Dot(tan0, tan1)); + float a = (float)Math.Atan2( + Math.Sqrt(A.x * A.x + A.y * A.y + A.z * A.z), + tan0.x * tan1.x + tan0.y * tan1.y + tan0.z * tan1.z); + ApproximationUp[i] = Quaternion.AngleAxis(Mathf.Rad2Deg * a, A) * ApproximationUp[i - 1]; + } + + lastProcessedLocalRotation = threadSafeLocalRotation; + } + + #endregion + + internal void ClearBoundsINTERNAL() + { + mBounds = null; + } + + /// + /// Gets Transform.up orthogonal to ApproximationT[0] + /// + internal Vector3 getOrthoUp0INTERNAL() + { + Vector3 u = threadSafeLocalRotation * Vector3.up; + Vector3.OrthoNormalize(ref ApproximationT[0], ref u); + return u; + } + + private Vector3 getOrthoUp1INTERNAL() + { + CurvySplineSegment nextControlPoint = Spline.GetNextControlPoint(this); + Quaternion nextRotation = nextControlPoint + ? nextControlPoint.threadSafeLocalRotation + : threadSafeLocalRotation; + Vector3 u = nextRotation * Vector3.up; + Vector3.OrthoNormalize(ref ApproximationT[CacheSize], ref u); + return u; + } + + internal void UnsetFollowUpWithoutDirtyingINTERNAL() + { + m_FollowUp = null; + m_FollowUpHeading = ConnectionHeadingEnum.Auto; + } + +#if UNITY_EDITOR + +#endif + + #region Gizmo drawing + + private static Plane[] gizomTestCameraPlanes = new Plane[6]; + private static Vector3 gizomTestCamearPosition; + private static Vector3 gizomTestCameraForward; + private static float gizomTestFov; + private static float gizomTestPixelWidth; + private static float gizomTestPixelHeight; + + + private void doGizmos(bool selected) + { + //OPTIM try multithreading some of the loops in this method. All loops have in them operations that unity forbids the usage of outside the main thread (drawline, worldtoscreen, ...). Maybe using Unity's jobs? + if (CurvyGlobalManager.Gizmos == CurvySplineGizmos.None) + return; + + Camera currentCamera = Camera.current; + int cameraPixelWidth = currentCamera.pixelWidth; + int cameraPixelHeight = currentCamera.pixelHeight; + Transform cameraTransform = currentCamera.transform; + Vector3 cameraPosition = cameraTransform.position; + Vector3 cameraZDirection; + Vector3 cameraXDirection; + { + Quaternion cameraRotation = cameraTransform.rotation; + Vector3 direction; + { + direction.x = 0; + direction.y = 0; + direction.z = 1; + } + cameraZDirection = cameraRotation * direction; + + { + direction.x = 1; + direction.y = 0; + direction.z = 0; + } + cameraXDirection = cameraRotation * direction; + } + Bounds bounds = Bounds; + + + //Update gizomTestCameraPlanes if camera changed + if (gizomTestCamearPosition != cameraPosition || + gizomTestCameraForward != cameraZDirection || + gizomTestPixelWidth != cameraPixelWidth || + gizomTestPixelHeight != cameraPixelHeight || + gizomTestFov != currentCamera.fieldOfView) + { + //Design Reading and writing static fields can be dangerous if this code is multi-threaded + gizomTestCamearPosition = cameraPosition; + gizomTestCameraForward = cameraZDirection; + gizomTestPixelWidth = cameraPixelWidth; + gizomTestPixelHeight = cameraPixelHeight; + gizomTestFov = currentCamera.fieldOfView; +#if UNITY_2017_3_OR_NEWER + GeometryUtility.CalculateFrustumPlanes(currentCamera, gizomTestCameraPlanes); +#else + camPlanes = GeometryUtility.CalculateFrustumPlanes(c); +#endif + } + + // Skip if the segment isn't in view + if (!GeometryUtility.TestPlanesAABB(gizomTestCameraPlanes, bounds)) + return; + + CurvySpline spline = Spline; + Transform splineTransform = spline.transform; + Vector3 splineTransformLocalScale = splineTransform.localScale; + Vector3 scale; + { + scale.x = 1 / splineTransformLocalScale.x; + scale.y = 1 / splineTransformLocalScale.y; + scale.z = 1 / splineTransformLocalScale.z; + } + Color splineGizmoColor = (selected) ? spline.GizmoSelectionColor : spline.GizmoColor; + Vector3 transformPosition = transform.position; + float cameraCenterWidth = cameraPixelWidth * 0.5f; + float cameraCenterHeight = cameraPixelHeight * 0.5f; + + bool viewCurve = CurvyGlobalManager.ShowCurveGizmo; + + // Control Point + if (viewCurve) + { + Gizmos.color = splineGizmoColor; + float handleSize = DTUtility.GetHandleSize(transformPosition, currentCamera, cameraCenterWidth, cameraCenterHeight, cameraPosition, cameraZDirection, cameraXDirection); + float cpGizmoSize = handleSize * (selected ? 1 : 0.7f) * CurvyGlobalManager.GizmoControlPointSize; + + if (spline.RestrictTo2D) + Gizmos.DrawCube(transformPosition, OptimizedOperators.Multiply(Vector3.one, cpGizmoSize)); + else + Gizmos.DrawSphere(transformPosition, cpGizmoSize); + } + + //Remaining + if (spline.IsControlPointASegment(this)) + { + if (spline.Dirty) + spline.Refresh(); + + Matrix4x4 initialGizmoMatrix = Gizmos.matrix; + Matrix4x4 currentGizmoMatrix = Gizmos.matrix = splineTransform.localToWorldMatrix; + + //Spline lines + if (viewCurve) + { + float steps; + { + float camDistance = (cameraPosition.Subtraction(bounds.ClosestPoint(cameraPosition))).magnitude; + + float df = Mathf.Clamp(camDistance, 1, 3000) / 3000; + df = (df < 0.01f) ? DTTween.SineOut(df, 0, 1) : DTTween.QuintOut(df, 0, 1); + + steps = Mathf.Clamp((Length * CurvyGlobalManager.SceneViewResolution * 0.1f) / df, 1, 10000); + } + DrawGizmoLines(1 / steps); + } + + //Approximations + if (Approximation.Length > 0 && CurvyGlobalManager.ShowApproximationGizmo) + { + Gizmos.color = spline.GizmoColor.Multiply(0.8f); + Vector3 size = OptimizedOperators.Multiply(0.1f, scale); + for (int i = 0; i < Approximation.Length; i++) + { + float handleSize = DTUtility.GetHandleSize(currentGizmoMatrix.MultiplyPoint3x4(Approximation[i]), currentCamera, cameraCenterWidth, cameraCenterHeight, cameraPosition, cameraZDirection, cameraXDirection); + + Gizmos.DrawCube(Approximation[i], handleSize.Multiply(size)); + } + } + + //Orientation + if (spline.Orientation != CurvyOrientation.None && ApproximationUp.Length > 0 && CurvyGlobalManager.ShowOrientationGizmo) + { + Gizmos.color = CurvyGlobalManager.GizmoOrientationColor; + Vector3 orientationGizmoSize = scale.Multiply(CurvyGlobalManager.GizmoOrientationLength); + + for (int i = 0; i < ApproximationUp.Length; i++) + { + Vector3 lineEnd; + lineEnd.x = Approximation[i].x + ApproximationUp[i].x * orientationGizmoSize.x; + lineEnd.y = Approximation[i].y + ApproximationUp[i].y * orientationGizmoSize.y; + lineEnd.z = Approximation[i].z + ApproximationUp[i].z * orientationGizmoSize.z; + + Gizmos.DrawLine(Approximation[i], lineEnd); + } + + + if (spline.IsControlPointAnOrientationAnchor(this) && spline.Orientation == CurvyOrientation.Dynamic) + { + if (ApproximationUp.Length != 0) + { + Gizmos.color = CurvyGlobalManager.GizmoOrientationColor; + Vector3 u = ApproximationUp[0]; + u.Set(u.x * scale.x, u.y * scale.y, u.z * scale.z); + Gizmos.DrawRay(Approximation[0], + u * CurvyGlobalManager.GizmoOrientationLength * 1.75f); + } + } + } + + //Tangent + if (ApproximationT.Length > 0 && CurvyGlobalManager.ShowTangentsGizmo) + { + int segmentCacheSize = CacheSize; + float tangentSize = CurvyGlobalManager.GizmoOrientationLength; + for (int i = 0; i < ApproximationT.Length; i++) + { + //updating gizmo color + if (i == 0) + Gizmos.color = Color.blue; + else if (i == 1) + Gizmos.color = GizmoTangentColor; + else if (i == segmentCacheSize) + Gizmos.color = Color.black; + + Vector3 lineEnd; + lineEnd.y = Approximation[i].y + ApproximationT[i].y * tangentSize; + lineEnd.z = Approximation[i].z + ApproximationT[i].z * tangentSize; + lineEnd.x = Approximation[i].x + ApproximationT[i].x * tangentSize; + + Gizmos.DrawLine(Approximation[i], lineEnd); + } + } + Gizmos.matrix = initialGizmoMatrix; + } + + } + + /// + /// Draw gizmo lines representing the spline segment + /// + /// The relative distance between the start and end of each line. Must be exclusively between 0 and 1 + private void DrawGizmoLines(float stepSize) + { + CurvySpline spline = Spline; + CurvyInterpolation splineInterpolation = spline.Interpolation; + +#if CURVY_SANITY_CHECKS + if (spline.Dirty) + DTLog.LogWarning("Interpolate should not be called on segment of a dirty spline. Call CurvySpline.Refresh first"); + Assert.IsTrue(spline.IsControlPointASegment(this)); + Assert.IsTrue(spline.IsCpsRelationshipCacheValidINTERNAL); + Assert.IsTrue(stepSize > 0); + Assert.IsTrue(stepSize <= 1); +#endif + if (splineInterpolation == CurvyInterpolation.Linear) + Gizmos.DrawLine(Interpolate(0), Interpolate(1)); + else + { + Vector3 startPoint; + if (splineInterpolation == CurvyInterpolation.BSpline) + startPoint = BSpline(spline.ControlPointsList, spline.SegmentToTF(this), spline.IsBSplineClamped, spline.Closed, spline.BSplineDegree, BSplineP0Array.Array); + else + startPoint = threadSafeLocalPosition; + + //used only in BSplines for performance reasons + bool isBSplineClamped = default; + int bSplineDegree = default; + ReadOnlyCollection controlPoints = default; + int controlPointsCount = default; + float segmentTF = default; + int n = default; + int nPlus1 = default; + int previousK = default; + Vector3[] ps = default; + int psCount = default; + Vector3[] psCopy = default; + SubArray psCopySubArray = default; + if (splineInterpolation == CurvyInterpolation.BSpline) + { + isBSplineClamped = spline.IsBSplineClamped; + bSplineDegree = spline.BSplineDegree; + controlPoints = spline.ControlPointsList; + segmentTF = spline.SegmentToTF(this); + controlPointsCount = controlPoints.Count; + n = BSplineHelper.GetBSplineN(controlPointsCount, bSplineDegree, spline.Closed); + nPlus1 = n + 1; + previousK = int.MinValue; + SubArray splinePsVector = BSplineP0Array; + ps = splinePsVector.Array; + psCount = splinePsVector.Count; + psCopySubArray = ArrayPools.Vector3.Allocate(psCount); + psCopy = psCopySubArray.Array; + } + + for (float localF = 0; localF < 1; localF += stepSize) + { + Vector3 interpolatedPoint; + { + Vector3 result; + //Inlined version of Interpolate, stripped from some code for performance reasons + //If you modify this, modify also the inlined version of this method in refreshCurveINTERNAL() + switch (splineInterpolation) + { + case CurvyInterpolation.BSpline: + { + + float tf = segmentTF + localF / spline.Count; + BSplineHelper.GetBSplineUAndK(tf, isBSplineClamped, bSplineDegree, n, out float u, out int k); + if (k != previousK) + { + GetBSplineP0s(controlPoints, controlPointsCount, bSplineDegree, k, ps); + previousK = k; + } + Array.Copy(ps, 0, psCopy, 0, psCount); + result = isBSplineClamped ? BSplineHelper.DeBoorClamped(bSplineDegree, k, u, nPlus1, psCopy) : BSplineHelper.DeBoorUnclamped(bSplineDegree, k, u, psCopy); + break; + } + case CurvyInterpolation.CatmullRom: + { + result = CurvySpline.CatmullRom(threadSafePreviousCpLocalPosition, + threadSafeLocalPosition, + threadSafeNextCpLocalPosition, + cachedNextControlPoint.threadSafeNextCpLocalPosition, + localF); + } + break; + case CurvyInterpolation.Bezier: + { + result = CurvySpline.Bezier(threadSafeLocalPosition.Addition(HandleOut), + threadSafeLocalPosition, + threadSafeNextCpLocalPosition, + threadSafeNextCpLocalPosition.Addition(cachedNextControlPoint.HandleIn), + localF); + break; + } + case CurvyInterpolation.TCB: + { + float t0 = StartTension; float t1 = EndTension; + float c0 = StartContinuity; float c1 = EndContinuity; + float b0 = StartBias; float b1 = EndBias; + + if (!OverrideGlobalTension) + t0 = t1 = mSpline.Tension; + if (!OverrideGlobalContinuity) + c0 = c1 = mSpline.Continuity; + if (!OverrideGlobalBias) + b0 = b1 = mSpline.Bias; + + result = CurvySpline.TCB(threadSafePreviousCpLocalPosition, + threadSafeLocalPosition, + threadSafeNextCpLocalPosition, + cachedNextControlPoint.threadSafeNextCpLocalPosition, + localF, t0, c0, b0, t1, c1, b1); + } + break; + default: + DTLog.LogError("[Curvy] Invalid interpolation value " + splineInterpolation); + result = startPoint; + break; + } + + interpolatedPoint = result; + } + + Gizmos.DrawLine(startPoint, interpolatedPoint); + startPoint = interpolatedPoint; + } + + if (interpolation == CurvyInterpolation.BSpline) + ArrayPools.Vector3.Free(psCopySubArray); + + Vector3 endPoint; + if (splineInterpolation == CurvyInterpolation.BSpline) + endPoint = BSpline(spline.ControlPointsList, spline.SegmentToTF(this, 1), spline.IsBSplineClamped, spline.Closed, spline.BSplineDegree, BSplineP0Array.Array); + else + endPoint = threadSafeNextCpLocalPosition; + ; + Gizmos.DrawLine(startPoint, endPoint); + } + } + #endregion + + /// + /// Set the correct values to the thread safe local positions and rotation + /// When multithreading, you can't access Transform in the not main threads. Here we cache that data so it is available for threads + /// + internal void PrepareThreadCompatibleDataINTERNAL(bool useFollowUp) + { + CurvySpline spline = Spline; + CurvySplineSegment previousCP = spline.GetPreviousControlPoint(this); + CurvySplineSegment nextCP = spline.GetNextControlPoint(this); + + //TODO: get rid of this the day you will be able to access transforms in threads + threadSafeLocalPosition = cachedTransform.localPosition; + threadSafeLocalRotation = cachedTransform.localRotation; + + //This isn't cached for thread compatibility, but for performance + cachedNextControlPoint = nextCP; + + if (useFollowUp) + { + CurvySplineSegment followUpPreviousCP; + bool hasFollowUp = FollowUp != null; + if (hasFollowUp && ReferenceEquals(spline.FirstVisibleControlPoint, this)) + followUpPreviousCP = CurvySpline.GetFollowUpHeadingControlPoint(FollowUp, this.FollowUpHeading); + else + followUpPreviousCP = previousCP; + CurvySplineSegment followUpNextCP; + if (hasFollowUp && ReferenceEquals(spline.LastVisibleControlPoint, this)) + followUpNextCP = CurvySpline.GetFollowUpHeadingControlPoint(FollowUp, this.FollowUpHeading); + else + followUpNextCP = nextCP; + + if (followUpPreviousCP != null) + { + threadSafePreviousCpLocalPosition = ReferenceEquals(followUpPreviousCP.Spline, spline) ? + followUpPreviousCP.cachedTransform.localPosition : + spline.transform.InverseTransformPoint(followUpPreviousCP.cachedTransform.position); + } + else + threadSafePreviousCpLocalPosition = threadSafeLocalPosition; + + if (followUpNextCP != null) + { + threadSafeNextCpLocalPosition = ReferenceEquals(followUpNextCP.Spline, spline) ? + followUpNextCP.cachedTransform.localPosition : + spline.transform.InverseTransformPoint(followUpNextCP.cachedTransform.position); + } + else + threadSafeNextCpLocalPosition = threadSafeLocalPosition; + } + else + { + threadSafePreviousCpLocalPosition = ReferenceEquals(previousCP, null) == false ? previousCP.cachedTransform.localPosition : + threadSafeLocalPosition; + + threadSafeNextCpLocalPosition = ReferenceEquals(nextCP, null) == false ? nextCP.cachedTransform.localPosition : + threadSafeLocalPosition; + } + } + + /*! \endcond */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment_private.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment_private.cs.meta new file mode 100644 index 00000000..5d77c3d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySplineSegment_private.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 948d240c45adf9141b1aaaa44f7d5254 +timeCreated: 1524871908 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline_private.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline_private.cs new file mode 100644 index 00000000..22cc7edd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline_private.cs @@ -0,0 +1,1573 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using FluffyUnderware.Curvy.Utils; +using FluffyUnderware.DevTools; +using UnityEngine.Serialization; +using FluffyUnderware.DevTools.Extensions; +using System.Reflection; +using JetBrains.Annotations; +#if UNITY_EDITOR +using UnityEditor; +#endif +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +using UnityEngine.Assertions; + + +namespace FluffyUnderware.Curvy +{ + /// + /// Curvy Spline class + /// + public partial class CurvySpline : DTVersionedMonoBehaviour + { + #region ### Privates Fields ### + + #region ### Serialized fields ### + + #region --- General --- + + [Section("General", HelpURL = CurvySpline.DOCLINK + "curvyspline_general")] + [Tooltip("Interpolation Method")] + [SerializeField, FormerlySerializedAs("Interpolation")] + private CurvyInterpolation m_Interpolation = CurvyGlobalManager.DefaultInterpolation; + + [Tooltip("Restrict Control Points to a local 2D plane")] + [SerializeField] + private bool m_RestrictTo2D; + + [Tooltip("The local 2D plane to restrict the spline's control points to")] + [SerializeField] + [FieldCondition(nameof(RestrictTo2D), true)] + [FieldAction("CBCheck2DPlanar")] + private CurvyPlane restricted2DPlane = CurvyPlane.XY; + + [SerializeField, FormerlySerializedAs("Closed")] + private bool m_Closed; + + [FieldCondition(nameof(canHaveManualEndCP), Action = ActionAttribute.ActionEnum.Enable)] + [Tooltip("Handle End Control Points automatically?")] + [SerializeField, FormerlySerializedAs("AutoEndTangents")] + private bool m_AutoEndTangents = CurvySplineDefaultValues.AutoEndTangents; + + [Tooltip("Orientation Flow")] + [SerializeField, FormerlySerializedAs("Orientation")] + private CurvyOrientation m_Orientation = CurvySplineDefaultValues.Orientation; + + #endregion + + #region --- Bezier Options --- + + [Section("Global Bezier Options", HelpURL = CurvySpline.DOCLINK + "curvyspline_bezier")] + [GroupCondition(nameof(m_Interpolation), CurvyInterpolation.Bezier)] + [RangeEx(0, 1, "Default Distance %", "Handle length by distance to neighbours")] + [SerializeField] + private float m_AutoHandleDistance = CurvySplineDefaultValues.AutoHandleDistance; + + #endregion + + #region --- TCB Options --- + + [Section("Global TCB Options", HelpURL = CurvySpline.DOCLINK + "curvyspline_tcb")] + [GroupCondition(nameof(m_Interpolation), CurvyInterpolation.TCB)] + [GroupAction("TCBOptionsGUI", Position = ActionAttribute.ActionPositionEnum.Below)] + [SerializeField, FormerlySerializedAs("Tension")] + private float m_Tension; + + [SerializeField, FormerlySerializedAs("Continuity")] + private float m_Continuity; + + [SerializeField, FormerlySerializedAs("Bias")] + private float m_Bias; + #endregion + + #region --- B-Spline Options --- + + [Section("B-Spline Options", HelpURL = CurvySpline.DOCLINK + "curvyspline_bspline")] + [GroupCondition(nameof(m_Interpolation), CurvyInterpolation.BSpline)] + [RangeEx(minBSplineDegree, nameof(MaxBSplineDegree), "Degree", "The degree of the piecewise polynomial functions.\nIs in the range [2; control points count - 1]")] + [SerializeField] + private int bSplineDegree = CurvySplineDefaultValues.BSplineDegree; + + + [FieldCondition(nameof(CanBeClamped), Action = ActionAttribute.ActionEnum.Enable)] + [Label("Clamped", "Make the curve pass through the first and last control points by increasing the multiplicity of the first and last knots.\n\nIn technical terms, when this parameter is true, the knot vector is [0, 0, ...,0, 1, 2, ..., N-1, N, N, ..., N]. When false, it is [0, 1, 2, ..., N-1, N]")] + [SerializeField] + private bool isBSplineClamped = CurvySplineDefaultValues.IsBSplineClamped; + + #endregion + + #region --- Advanced Settings --- + + [Section("Advanced Settings", HelpURL = CurvySpline.DOCLINK + "curvyspline_advanced")] + [FieldAction("ShowGizmoGUI", Position = ActionAttribute.ActionPositionEnum.Above)] + [Label("Color", "Gizmo color")] + [SerializeField] + private Color m_GizmoColor = CurvyGlobalManager.DefaultGizmoColor; + + [FieldAction("CheckGizmoColor", Position = ActionAttribute.ActionPositionEnum.Above)] + [FieldAction("CheckGizmoSelectionColor", Position = ActionAttribute.ActionPositionEnum.Below)] + [Label("Active Color", "Selected Gizmo color")] + [SerializeField] + private Color m_GizmoSelectionColor = CurvyGlobalManager.DefaultGizmoSelectionColor; + + [RangeEx(1, 100)] + [SerializeField, FormerlySerializedAs("Granularity"), Tooltip("Defines how densely the cached points are. When the value is 100, the number of cached points per world distance unit is equal to the spline's MaxPointsPerUnit")] + private int m_CacheDensity = CurvySplineDefaultValues.CacheDensity; + [SerializeField, Tooltip("The maximum number of sampling points per world distance unit. Sampling is used in caching or shape extrusion for example")] + private float m_MaxPointsPerUnit = CurvySplineDefaultValues.MaxPointsPerUnit; + [SerializeField, Tooltip("Use a GameObject pool at runtime")] + private bool m_UsePooling = CurvySplineDefaultValues.UsePooling; + [SerializeField, Tooltip("Use threading where applicable. Threading is is currently not supported when targetting WebGL and Universal Windows Platform")] + private bool m_UseThreading; + [Tooltip("Refresh when Control Point position change?")] + [SerializeField, FormerlySerializedAs("AutoRefresh")] + private bool m_CheckTransform = CurvySplineDefaultValues.CheckTransform; + [SerializeField] private CurvyUpdateMethod m_UpdateIn = CurvySplineDefaultValues.UpdateIn; + #endregion + + #region --- Events --- + + /*! \cond PRIVATE */ + + [Group("Events", Expanded = false, Sort = 1000, HelpURL = DOCLINK + "curvyspline_events")] + [SortOrder(0)] + [SerializeField] + protected CurvySplineEvent m_OnRefresh = new CurvySplineEvent(); + [Group("Events", Sort = 1000)] + [SortOrder(1)] + [SerializeField] + protected CurvySplineEvent m_OnAfterControlPointChanges = new CurvySplineEvent(); + [Group("Events", Sort = 1000)] + [SortOrder(2)] + [SerializeField] + protected CurvyControlPointEvent m_OnBeforeControlPointAdd = new CurvyControlPointEvent(); + [Group("Events", Sort = 1000)] + [SortOrder(3)] + [SerializeField] + protected CurvyControlPointEvent m_OnAfterControlPointAdd = new CurvyControlPointEvent(); + [Group("Events", Sort = 1000)] + [SortOrder(4)] + [SerializeField] + protected CurvyControlPointEvent m_OnBeforeControlPointDelete = new CurvyControlPointEvent(); + + /*! \endcond */ + + #endregion + + #endregion + + private bool mIsInitialized; + + private bool isStarted; + private bool sendOnRefreshEventNextUpdate; + private readonly object controlPointsRelationshipCacheLock = new object(); +#if UNITY_EDITOR + private bool transformChildrenChanged; + private bool syncHierarchyFromSplineNeeded; +#endif + + //OPTIM Instead of having a segments list, use the controlPointsList, while providing the methods to convert from a segment index to a control point index. + /// + /// Controlpoints that start a valid spline segment + /// + private List mSegments = new List(); + /// + /// Read-only version of + /// + private ReadOnlyCollection readOnlyControlPoints; + + private float length = -1; + private int mCacheSize = -1; + private Bounds? mBounds; + private bool mDirtyCurve; + private bool mDirtyOrientation; + private HashSet dirtyControlPointsMinimalSet = new HashSet(); + + private List dirtyCpsExtendedList = new List(); + //DESIGN I think allControlPointsAreDirty can be removed, and related code can just fill dirtyControlPointsMinimalSet with all control points instead. Check that perfs lose is not significant before doing so. + private bool allControlPointsAreDirty; + //TODO mThreadWorker is disposable. CurvySpline should dispose it. See rule CA1001 + //https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1001-types-that-own-disposable-fields-should-be-disposable?view=vs-2019 + private ThreadPoolWorker mThreadWorker = new ThreadPoolWorker(); + + //reusable events + private readonly CurvySplineEventArgs defaultSplineEventArgs; + private readonly CurvyControlPointEventArgs defaultAddAfterEventArgs; + private readonly CurvyControlPointEventArgs defaultDeleteEventArgs; + + /// + /// ControlPointsDistances[i] is equal to ControlPoints[i].Distance. ControlPointsDistances exists only to make search time shorter when searching for a Cp based on its Distance + /// + private float[] controlPointsDistances = new float[0]; + + private readonly Action refreshCurveAction; + +#if CURVY_SANITY_CHECKS + private int sanityErrorLogsThisFrame; + private int sanityWaringLogsThisFrame; +#endif + + #region Keeping track of transform's change + + /// + /// The global position of the spline the last time it was checked. Checks are done at least once a frame. + /// + private Vector3 lastProcessedPosition; + /// + /// The global rotation of the spline the last time it was checked. Checks are done at least once a frame. + /// + private Quaternion lastProcessedRotation; + /// + /// The global scale of the spline the last time it was checked. Checks are done at least once a frame. + /// + private Vector3 lastProcessedScale; + /// + /// True if the global position, rotation or scale of the spline has changed this frame + /// + private bool globalCoordinatesChangedThisFrame; + + #endregion + + + #region ControlPoints relastionship cache + + private bool isCpsRelationshipCacheValid; + private CurvySplineSegment firstSegment; + private CurvySplineSegment lastSegment; + private CurvySplineSegment firstVisibleControlPoint; + private CurvySplineSegment lastVisibleControlPoint; + + #endregion + + #endregion + + + #region ### Unity Callbacks ### + /*! \cond UNITY */ +#if UNITY_EDITOR + private void OnValidate() + { + //Debug.Log("OnValidate " + name); + + Closed = m_Closed; + Interpolation = m_Interpolation; + AutoEndTangents = m_AutoEndTangents; + MaxPointsPerUnit = m_MaxPointsPerUnit; + BSplineDegree = bSplineDegree; + + InvalidateControlPointsRelationshipCacheINTERNAL(); + SetDirtyAll(SplineDirtyingType.Everything, true); + } +#endif + + private void Awake() + { + cachedTransform = transform; + + //Debug.Log("Awake " + name); + + if (UsePooling) + { + //Create the CurvyGlobalManager if not existing already + CurvyGlobalManager curvyGlobalManager = CurvyGlobalManager.Instance; + } + } + + private void OnEnable() + { + cachedTransform = transform; + + SyncSplineFromHierarchy(); +#if UNITY_EDITOR + EditorApplication.update += EditorUpdate; +#endif + if (isStarted) + { + bool processedDirtyCps = Initialize(); + if (processedDirtyCps) + OnRefreshEvent(defaultSplineEventArgs); + + } + } + + /// + /// Initialize the spline. This is called automatically by Unity at the first frame. + /// The only situation I see where you will need to call it manually is if you instantiate a CurvySpline via Unity API, and need to use it the same frame before Unity calls Start() on it the next frame. + /// + public void Start() + { + //Debug.Log("Start"); + if (isStarted == false) + { + bool processedDirtyCps = Initialize(); + isStarted = true; + if (processedDirtyCps) + OnRefreshEvent(defaultSplineEventArgs); + } + } + + private void OnDisable() + { + //Debug.Log("OnDisable " + name); + mIsInitialized = false; +#if UNITY_EDITOR + EditorApplication.update -= EditorUpdate; +#endif + } + + private void OnDestroy() + { + //BUG? Why do we have that realDestroy boolean? Why not always do the same thing? This might hide something bad + //When asked about this jake said: + //That was quite a dirty hack as far as I remember, to counter issues with Unity's serialization + //TBH I'm not sure if those issues still are present, so you might want to see if it's working without it now. + //Debug.Log("OnDestroy " + name); + bool realDestroy = true; +#if UNITY_EDITOR + if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying) + realDestroy = false; +#endif + if (realDestroy) + { + if (UsePooling && Application.isPlaying) + { + CurvyGlobalManager curvyGlobalManager = CurvyGlobalManager.Instance; + if (curvyGlobalManager != null) + for (int i = 0; i < ControlPointCount; i++) + curvyGlobalManager.ControlPointPool.Push(ControlPoints[i]); + } + else + mThreadWorker.Dispose(); + } + ClearControlPoints(); + isStarted = false; + } + +#if UNITY_EDITOR + private void OnTransformChildrenChanged() + { + transformChildrenChanged = true; + } +#endif + + + virtual protected void Reset() + { + //Debug.Log("Reset " + name); + + Interpolation = CurvyGlobalManager.DefaultInterpolation; + RestrictTo2D = false; + AutoHandleDistance = 0.39f; + Closed = false; + AutoEndTangents = CurvySplineDefaultValues.AutoEndTangents; + // Orientation + Orientation = CurvySplineDefaultValues.Orientation; + // Advanced + GizmoColor = CurvyGlobalManager.DefaultGizmoColor; + GizmoSelectionColor = CurvyGlobalManager.DefaultGizmoSelectionColor; + CacheDensity = CurvySplineDefaultValues.CacheDensity; + MaxPointsPerUnit = CurvySplineDefaultValues.MaxPointsPerUnit; + CheckTransform = CurvySplineDefaultValues.CheckTransform; + // TCB + Tension = 0; + Continuity = 0; + Bias = 0; + BSplineDegree = CurvySplineDefaultValues.BSplineDegree; + IsBSplineClamped = CurvySplineDefaultValues.IsBSplineClamped; + SyncSplineFromHierarchy(); + } + + private void Update() + { +#if UNITY_EDITOR + if (syncHierarchyFromSplineNeeded) + { + syncHierarchyFromSplineNeeded = false; +#pragma warning disable 618 + SyncHierarchyFromSpline(); +#pragma warning restore 618 + } +#endif +#if CURVY_SANITY_CHECKS + if (Application.isPlaying) + { + sanityWaringLogsThisFrame = 0; + sanityErrorLogsThisFrame = 0; + } +#endif + + if (Application.isPlaying && UpdateIn == CurvyUpdateMethod.Update) + doUpdate(); + } + + private void LateUpdate() + { + if (Application.isPlaying && UpdateIn == CurvyUpdateMethod.LateUpdate) + doUpdate(); + } + + private void FixedUpdate() + { + if (Application.isPlaying && UpdateIn == CurvyUpdateMethod.FixedUpdate) + doUpdate(); + } + /*! \endcond */ + #endregion + + #region ### Privates & Internals ### + /*! \cond PRIVATE */ + + private const float MinimalMaxPointsPerUnit = 0.0001f; + /// + /// The maximal size of the cache of a spline's segment + /// + private const float MaxSegmentCacheSize = 1000000; + + private static readonly string InvalidCPErrorMessage = "[Curvy] Method called with a control point '{0}' that is not part of the current spline '{1}'"; + +#if CURVY_SANITY_CHECKS + /// + /// Returns isCpsRelationshipCacheValid. Getter was created just for the sake of some sanity checks + /// + internal bool IsCpsRelationshipCacheValidINTERNAL + { + get { return isCpsRelationshipCacheValid; } + } +#endif + + //cachedTransform in CurvySplineSegment is subject to an issue in Unity that leads to a bug. Read its comment to understand what it is. The same issue applies to CurvySpline, but does not lead to a known bug. So just as a precaution, I am avoiding the issue here too +#if (UNITY_2019_1_OR_NEWER) + private Transform cachedTransform; +#else + private Transform _cachedTransform; + private Transform cachedTransform + { + get + { + if (ReferenceEquals(_cachedTransform, null)) + _cachedTransform = transform; + return _cachedTransform; + } + set + { + _cachedTransform = value; + } + } +#endif + + /// + /// Access the list of Segments + /// + /// The returned list should not be modified + private List Segments + { + get + { + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + return mSegments; + } + } + + private const int minBSplineDegree = 2;//update CurvySplineDefaultValues.BSplineDegree and documentation/tooltip of IsBSplineClamped if you modify this + private int MaxBSplineDegree => Mathf.Max(minBSplineDegree, ControlPoints.Count - 1); + +#if UNITY_EDITOR + public static int _newSelectionInstanceIDINTERNAL; // Editor Bridge helper to determine new selection after object deletion +#endif + +#if CONTRACTS_FULL + [ContractInvariantMethod] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "Required for code contracts.")] + private void ObjectInvariant() + { + Contract.Invariant(MaxPointsPerUnit.IsANumber()); + Contract.Invariant(MaxPointsPerUnit > 0); + + //TODO CONTRACT reactivate these if you find a way to call GetSegmentIndex and IsSegment without modifying the cache + //Contract.Invariant(Contract.ForAll(Segments, s => GetSegmentIndex(s) == Segments.IndexOf(s))); + //Contract.Invariant(Contract.ForAll(Segments, s => IsSegment(s))); + + //TODO CONTRACT more code contracts + Contract.Invariant(Contract.ForAll(ControlPoints, cp => cp.Spline == this)); + } +#endif + + private bool Initialize() + { + SetDirtyAll(SplineDirtyingType.Everything, false); + bool processedDirtyCps = ProcessDirtyControlPoints(); + UpdatedLastProcessedGlobalCoordinates(); + mIsInitialized = true; + return processedDirtyCps; + } + +#if CURVY_SANITY_CHECKS + + [System.Diagnostics.Conditional("UNITY_ASSERTIONS")] + private void DoSanityChecks() + { + const int limit = 20; + if (!IsInitialized) + { + if (sanityErrorLogsThisFrame < limit) + { + if (sanityErrorLogsThisFrame == limit - 1) + DTLog.LogError("[Curvy] Too many errors to display."); + else + DTLog.LogError("[Curvy] Calling public method on non initialized spline."); + sanityErrorLogsThisFrame++; + } + } + else if (Dirty) + { + if (sanityWaringLogsThisFrame < limit) + { + if (sanityWaringLogsThisFrame == limit - 1) + DTLog.LogWarning("[Curvy] Too many warnings to display."); + else + DTLog.LogWarning(string.Format(System.Globalization.CultureInfo.InvariantCulture, "[Curvy] Calling public method on a dirty spline. The returned result will not be up to date. Either refresh the spline manually by calling Refresh(), or wait for it to be refreshed automatically at the next {0} call", UpdateIn.ToString())); + sanityWaringLogsThisFrame++; + } + } + } +#endif + +#if UNITY_EDITOR + private void EditorUpdate() + { +#if CURVY_SANITY_CHECKS + if (Application.isPlaying == false) + { + sanityWaringLogsThisFrame = 0; + sanityErrorLogsThisFrame = 0; + } +#endif + if (Application.isPlaying == false && IsInitialized) + { + if (syncHierarchyFromSplineNeeded) + { + syncHierarchyFromSplineNeeded = false; +#pragma warning disable 618 + SyncHierarchyFromSpline(); +#pragma warning restore 618 + } + doUpdate(); + } + } +#endif + + + private void doUpdate() + { +#if UNITY_EDITOR + if (transformChildrenChanged) + { + transformChildrenChanged = false; + if (ControlPoints.Count != GetComponentsInChildren().Length) + { + //The SyncSplineFromHierarchy is meant only to handle the case where the user adds or removes a contol point from the editor hierarchy. The addition or removal of a control point through Curvy's API is handled efficiently elsewhere. I said efficiently because, contrary to SyncSplineFromHierarchy, it does not lead to rebuilding the whole spline. + //There is in fact another case where the following code would be useful, which is removing a CP's gameobject through Unity's API. In this case, even if UNITY_EDITOR == false, the syncing would be necessary. But, to not impact the performances of the common user case (using Curvy API to modify CPs), I decided to not handle this case. Removing cps, or adding them, via Unity API is not supported. + SyncSplineFromHierarchy(); + } + } +#endif + + int controlPointCount = ControlPointCount; + for (int index = 0; index < controlPointCount; index++) + { + CurvySplineSegment controlPoint = ControlPoints[index]; + if (controlPoint.AutoBakeOrientation && controlPoint.ApproximationUp.Length > 0) + controlPoint.BakeOrientationToTransform(); + } + + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + + globalCoordinatesChangedThisFrame = false; + if (cachedTransform.hasChanged) + { + cachedTransform.hasChanged = false; + + //This additional test is done since transform.hasChanged is true even when changing parent with no change in both local and global coordinates. And even a change in local coordinates doesn't interest us, since bounds computation only need global coordinates + if (cachedTransform.position.NotApproximately(lastProcessedPosition) || cachedTransform.rotation.DifferentOrientation(lastProcessedRotation) || cachedTransform.lossyScale != lastProcessedScale) + { + globalCoordinatesChangedThisFrame = true; + UpdatedLastProcessedGlobalCoordinates(); + + mBounds = null; + //OPTIM Right now, transform change lead to recomputing the bounds in world space. This can be avoided by computing the bounds in local space only when the spline is modified, and transform that to the world space here, where a spline transform has changed. + for (int i = 0; i < controlPointCount; i++) + ControlPoints[i].ClearBoundsINTERNAL(); + } + + } + + if ((CheckTransform || !Application.isPlaying) && (allControlPointsAreDirty == false)) + for (int i = 0; i < controlPointCount; i++) + { + CurvySplineSegment currentControlPoint = ControlPoints[i]; + bool dirtyCurve = currentControlPoint.HasUnprocessedLocalPosition; + if (dirtyCurve || currentControlPoint.HasUnprocessedLocalOrientation && currentControlPoint.OrientatinInfluencesSpline) + currentControlPoint.Spline.SetDirty(currentControlPoint, dirtyCurve == false ? SplineDirtyingType.OrientationOnly : SplineDirtyingType.Everything); + } + + if (Dirty) + Refresh(); + else if (sendOnRefreshEventNextUpdate) + OnRefreshEvent(defaultSplineEventArgs); + + sendOnRefreshEventNextUpdate = false; + + if (globalCoordinatesChangedThisFrame && OnGlobalCoordinatesChanged != null) + OnGlobalCoordinatesChanged.Invoke(this); + } + + /// + /// are manual start/end CP's allowed? + /// + private bool canHaveManualEndCP() + { + return !Closed && (Interpolation == CurvyInterpolation.CatmullRom || Interpolation == CurvyInterpolation.TCB); + } + + private bool CanBeClamped() + { + return !Closed && (Interpolation == CurvyInterpolation.BSpline); + } + +#if UNITY_EDITOR + + + /// + /// Get the correct control point name that should be displayed in the hierarchy + /// + /// + static private string GetControlPointName(short controlPointIndex) + { + if (controlPointIndex < CachedControlPointsNameCount) + return controlPointNames[controlPointIndex]; + + return MakeControlPointName(controlPointIndex); + } + + private static string[] GetControlPointNames() + { + string[] names = new string[CachedControlPointsNameCount]; + for (short i = 0; i < CachedControlPointsNameCount; i++) + names[i] = MakeControlPointName(i); + return names; + } + + static private string MakeControlPointName(short controlPointIndex) + { + return "CP" + controlPointIndex.ToString("D4", System.Globalization.CultureInfo.InvariantCulture); + } +#endif + + /// + /// Marks a Control Point to get recalculated on next call to Refresh(). Will also mark connected control points if dirtyConnection is set to true. Will also mark control points that depend on the current one through the Follow-Up feature. + /// + /// the Control Point to refresh + /// Defines what aspect should be dirtied + /// + /// + /// If true, this method will not mark as dirty the control points connected to the "controlPoint" parameter + private void SetDirty(CurvySplineSegment controlPoint, SplineDirtyingType dirtyingType, CurvySplineSegment previousControlPoint, CurvySplineSegment nextControlPoint, bool ignoreConnectionOfInputControlPoint) + { + if (ReferenceEquals(this, controlPoint.Spline) == false) + throw new ArgumentException(String.Format(InvalidCPErrorMessage, controlPoint, name)); + +#if CURVY_LOG_DIRTYING + Debug.Log("Set Dirty CP " + dirtyingType); +#endif + if (ignoreConnectionOfInputControlPoint == false && controlPoint.Connection) + { + //Setting all connected CPs is a bit overkill, but at least, you are sure to avoid the multitude of Connections related bugs, plus simplifies the code a lot. You might try to OPTIM by dirtying only the relevant connected CPs, and only in the relevant scenarios, but (seeing the old code that I removed) it is a very dangerous optimization, and you can surely optimize other stuff that will take less time to optimize, and can generate less bugs + ReadOnlyCollection connectionControlPoints = controlPoint.Connection.ControlPointsList; + for (int index = 0; index < connectionControlPoints.Count; index++) + { + CurvySplineSegment connectedControlPoint = connectionControlPoints[index]; + CurvySpline connectedSpline = connectedControlPoint.Spline; + if (connectedSpline) + { + connectedSpline.dirtyControlPointsMinimalSet.Add(connectedControlPoint); + connectedSpline.SetDirtyingFlags(dirtyingType); + } + } +#if CURVY_SANITY_CHECKS + if (connectionControlPoints.Contains(controlPoint) == false) + DTLog.LogError("[Curvy] SetDirty couldn't find the dirtying control point in the connection."); +#endif + } + else + { + dirtyControlPointsMinimalSet.Add(controlPoint); + SetDirtyingFlags(dirtyingType); + } + + //Dirty CPs that could depend on the current CP through the Follow-Up feature + { + if (previousControlPoint && previousControlPoint.Connection) + { + ReadOnlyCollection connectionControlPoints = previousControlPoint.Connection.ControlPointsList; + for (int index = 0; index < connectionControlPoints.Count; index++) + { + CurvySplineSegment connectedControlPoint = connectionControlPoints[index]; + CurvySpline connectedSpline = connectedControlPoint.Spline; + if (connectedSpline && connectedControlPoint.FollowUp == previousControlPoint) + { + connectedSpline.dirtyControlPointsMinimalSet.Add(connectedControlPoint); + connectedSpline.SetDirtyingFlags(dirtyingType); + } + } + } + + if (nextControlPoint && nextControlPoint.Connection) + { + ReadOnlyCollection connectionControlPoints = nextControlPoint.Connection.ControlPointsList; + for (int index = 0; index < connectionControlPoints.Count; index++) + { + CurvySplineSegment connectedControlPoint = connectionControlPoints[index]; + CurvySpline connectedSpline = connectedControlPoint.Spline; + if (connectedSpline && connectedControlPoint.FollowUp == nextControlPoint) + { + connectedSpline.dirtyControlPointsMinimalSet.Add(connectedControlPoint); + connectedSpline.SetDirtyingFlags(dirtyingType); + } + } + } + } + } + + private void SetDirtyingFlags(SplineDirtyingType dirtyingType) + { + mDirtyCurve = mDirtyCurve || dirtyingType == SplineDirtyingType.Everything; + mDirtyOrientation = true; + + if (mDirtyCurve) + { + mCacheSize = -1; + length = -1; + mBounds = null; + } + } + + private void ReverseControlPoints() + { + ControlPoints.Reverse(); + InvalidateControlPointsRelationshipCacheINTERNAL(); + SetDirtyAll(SplineDirtyingType.Everything, true); + } + + static private short GetNextControlPointIndex(short controlPointIndex, bool isSplineClosed, int controlPointsCount) + { + if (isSplineClosed && controlPointsCount <= 1) + return -1; + if (controlPointIndex + 1 < controlPointsCount) + return (short)(controlPointIndex + 1); + return (short)(isSplineClosed ? 0 : -1); + } + + static private short GetPreviousControlPointIndex(short controlPointIndex, bool isSplineClosed, int controlPointsCount) + { + if (isSplineClosed && controlPointsCount <= 1) + return -1; + if (controlPointIndex - 1 >= 0) + return (short)(controlPointIndex - 1); + return (short)(isSplineClosed ? controlPointsCount - 1 : -1); + } + + //OPTIM should you use this instead of the isSegment poperties in ControlPointExtrinsicProperties? + private static bool IsControlPointASegment(int controlPointIndex, int controlPointCount, bool isClosed, bool notAutoEndTangentsAndIsCatmullRomOrTCB, bool isBSpline, int bSplineDegree) + { +#if CONTRACTS_FULL + Contract.Requires(controlPointIndex >= 0 && controlPointIndex < ControlPointCount); + Contract.Requires(bSplineDegree >= 0); +#endif + + return (isBSpline == false || bSplineDegree < controlPointCount) + && + (isClosed && controlPointCount > 1 + || (notAutoEndTangentsAndIsCatmullRomOrTCB + ? controlPointIndex > 0 && controlPointIndex < controlPointCount - 2 + : controlPointIndex < controlPointCount - 1)); + } + + #region Modifying control points list + private void AddControlPoint(CurvySplineSegment item) + { + ControlPoints.Add(item); + item.LinkToSpline(this); + InvalidateControlPointsRelationshipCacheINTERNAL(); + short previousControlPointIndex = GetPreviousControlPointIndex((short)(ControlPoints.Count - 1), Closed, ControlPoints.Count); + short nextControlPointIndex = GetNextControlPointIndex((short)(ControlPoints.Count - 1), Closed, ControlPoints.Count); + SetDirty(item, SplineDirtyingType.Everything, + previousControlPointIndex != -1 ? ControlPoints[previousControlPointIndex] : null, + nextControlPointIndex != -1 ? ControlPoints[nextControlPointIndex] : null, false); + } + + /// + /// Adds a control point at a specific index + /// + /// + /// + private void InsertControlPoint(int index, CurvySplineSegment item) + { + ControlPoints.Insert(index, item); + item.LinkToSpline(this); + InvalidateControlPointsRelationshipCacheINTERNAL(); + //Dirtying + { + short previousControlPointIndex = GetPreviousControlPointIndex((short)index, Closed, ControlPoints.Count); + short nextControlPointIndex = GetNextControlPointIndex((short)index, Closed, ControlPoints.Count); + SetDirty(item, SplineDirtyingType.Everything, + previousControlPointIndex == -1 ? null : ControlPoints[previousControlPointIndex], + nextControlPointIndex == -1 ? null : ControlPoints[nextControlPointIndex], false); + } + } + + private void RemoveControlPoint(CurvySplineSegment item) + { + int indexOftItem = GetControlPointIndex(item); + //Dirtying + if (ControlPoints.Count == 1)//Removing the last CP + SetDirtyAll(SplineDirtyingType.Everything, true); + else + { + short previousControlPointIndex = GetPreviousControlPointIndex((short)indexOftItem, Closed, ControlPoints.Count); + short nextControlPointIndex = GetNextControlPointIndex((short)indexOftItem, Closed, ControlPoints.Count); + if (previousControlPointIndex != -1) + SetDirty(ControlPoints[previousControlPointIndex], SplineDirtyingType.Everything); + if (nextControlPointIndex != -1) + SetDirty(ControlPoints[nextControlPointIndex], SplineDirtyingType.Everything); + } + ControlPoints.RemoveAt(indexOftItem); + dirtyControlPointsMinimalSet.Remove(item); + if (item.Spline == this) + item.UnlinkFromSpline(); + InvalidateControlPointsRelationshipCacheINTERNAL(); + } + + private void ClearControlPoints() + { + SetDirtyAll(SplineDirtyingType.Everything, true); + for (int index = 0; index < ControlPoints.Count; index++) + { + CurvySplineSegment controlPoint = ControlPoints[index]; + if (controlPoint && //controlPoint can be null if you create a spline via the pen tool, and then undo it + controlPoint.Spline == this) //This if is to avoid the case where the code, executed because of a change in the number of children, will unlink a CP that has been moved to another spline through the hierarchy editor. + controlPoint.UnlinkFromSpline(); + } + ControlPoints.Clear(); + dirtyControlPointsMinimalSet.Clear(); + InvalidateControlPointsRelationshipCacheINTERNAL(); + } + #endregion + + #region ControlPoints relastionship cache + + internal void InvalidateControlPointsRelationshipCacheINTERNAL() + { + if (isCpsRelationshipCacheValid) + { + lock (controlPointsRelationshipCacheLock) + { + isCpsRelationshipCacheValid = false; + firstSegment = lastSegment = firstVisibleControlPoint = lastVisibleControlPoint = null; + } + } + } + + /// + /// Is not thread safe + /// + /// If true, control points with properties that are no more coherent with their position in the spline will get modified + /// Is not thread safe + private void RebuildControlPointsRelationshipCache(bool fixNonCoherentControlPoints) + { + lock (controlPointsRelationshipCacheLock) + { + if (isCpsRelationshipCacheValid) + return; + + //force clamping of B-spline's degree, in case control points got removed + BSplineDegree = bSplineDegree; + + //TODO Try to do elsewhere the work done here when fixNonCoherentControlPoints, so it is always true, and not only true when Relationship cache is build + int controlPointsCount = ControlPoints.Count; + mSegments.Clear(); + mSegments.Capacity = controlPointsCount; + if (controlPointsCount > 0) + { + CurvySplineSegment firsAssignedSegment = null; + bool firstSegmentFound = false; + CurvySplineSegment lastAssignedSegment = null; + + CurvySplineSegment.ControlPointExtrinsicProperties previousCpInfo = new CurvySplineSegment.ControlPointExtrinsicProperties(false, -1, -1, -1, -1, -1, false, false, false, -1); + + bool isSplineClosed = Closed; + bool isCatmullRomOrTcb = (Interpolation == CurvyInterpolation.CatmullRom || Interpolation == CurvyInterpolation.TCB); + bool notAutoEndTangentsAndIsCatmullRomOrTcb = AutoEndTangents == false && isCatmullRomOrTcb; + bool isBSpline = Interpolation == CurvyInterpolation.BSpline; + + + float tfInverseDenominator; + { + if (notAutoEndTangentsAndIsCatmullRomOrTcb) + tfInverseDenominator = 1f / (controlPointsCount > 3 ? controlPointsCount - 3 : 1); + else if (isSplineClosed) + tfInverseDenominator = 1f / controlPointsCount; + else + tfInverseDenominator = 1f / (controlPointsCount > 1 ? controlPointsCount - 1 : 1); + } + + short segmentIndex = 0; + short lastProcessedOrientationAnchorIndex = -1; + for (short index = 0; index < controlPointsCount; index++) + { + CurvySplineSegment controlPoint = ControlPoints[index]; + + short previousControlPointIndex = GetPreviousControlPointIndex(index, isSplineClosed, controlPointsCount); + short nextControlPointIndex = GetNextControlPointIndex(index, isSplineClosed, controlPointsCount); + + bool isSegment = IsControlPointASegment(index, controlPointsCount, isSplineClosed, notAutoEndTangentsAndIsCatmullRomOrTcb, isBSpline, bSplineDegree); + bool isVisible = isSegment || previousCpInfo.IsSegment; + + if (isVisible + && (lastProcessedOrientationAnchorIndex == -1//is first segment + || controlPoint.SerializedOrientationAnchor// is anchor + || !isSegment))// is last visible CP + lastProcessedOrientationAnchorIndex = index; + + bool canHaveFollowUp = isVisible && (nextControlPointIndex == -1 || previousControlPointIndex == -1); + + float tf; + { + if (notAutoEndTangentsAndIsCatmullRomOrTcb) + tf = tfInverseDenominator + * (index == 0 + ? 0 + : index == controlPointsCount - 1 + ? Math.Max(0, index - 2) + : index - 1); + else + tf = tfInverseDenominator * index; + } + + previousCpInfo = new CurvySplineSegment.ControlPointExtrinsicProperties( + isVisible, + tf, + isSegment ? segmentIndex : (short)-1, + index, + previousControlPointIndex, + nextControlPointIndex, + previousControlPointIndex != -1 + && IsControlPointASegment(previousControlPointIndex, controlPointsCount, isSplineClosed, notAutoEndTangentsAndIsCatmullRomOrTcb, isBSpline, bSplineDegree), + nextControlPointIndex != -1 + && IsControlPointASegment(nextControlPointIndex, controlPointsCount, isSplineClosed, notAutoEndTangentsAndIsCatmullRomOrTcb, isBSpline, bSplineDegree), + canHaveFollowUp, + isVisible ? lastProcessedOrientationAnchorIndex : (short)-1); + controlPoint.SetExtrinsicPropertiesINTERNAL(previousCpInfo); + + if (isSegment) + { + mSegments.Add(controlPoint); + segmentIndex++; + if (firstSegmentFound == false) + { + firstSegmentFound = true; + firsAssignedSegment = controlPoint; + } + lastAssignedSegment = controlPoint; + } + + if (fixNonCoherentControlPoints && canHaveFollowUp == false) + controlPoint.UnsetFollowUpWithoutDirtyingINTERNAL(); + } + + firstSegment = firsAssignedSegment; + lastSegment = lastAssignedSegment; + firstVisibleControlPoint = firstSegment; + lastVisibleControlPoint = ReferenceEquals(lastSegment, null) == false + ? ControlPoints[lastSegment.GetExtrinsicPropertiesINTERNAL().NextControlPointIndex] + : null; + } + else + { + firstSegment = lastSegment = firstVisibleControlPoint = lastVisibleControlPoint = null; + } + + isCpsRelationshipCacheValid = true; + +#if UNITY_EDITOR + if (fixNonCoherentControlPoints) + syncHierarchyFromSplineNeeded = true; +#endif + } + } + + #endregion + + private bool ProcessDirtyControlPoints() + { + if (isCpsRelationshipCacheValid == false) + RebuildControlPointsRelationshipCache(true); + + FillDirtyCpsExtendedList(); + + bool thereAreDirtyControlPoints = allControlPointsAreDirty || dirtyCpsExtendedList.Count > 0; + + dirtyControlPointsMinimalSet.Clear(); + allControlPointsAreDirty = false; + + //OPTIM: the current implementation will refresh all dirty CP's orientations, even if one of them needed it, and the others needed only position related refresh. This is because the mDirtyCurve and mDirtyOrientation are spline wide, and not per CP. This can be improved + //OPTIM: make all the per CP work threadable, and multi thread everything + if (thereAreDirtyControlPoints) + { + if (!(mDirtyOrientation || mDirtyCurve)) + Debug.LogError("Invalid dirtying flags"); + + PrepareThreadCompatibleData(); + + int controlPointsCount = ControlPointCount; + + if (mDirtyCurve) + { + #region --- Curve --- + + // Update Bezier Handles + if (Interpolation == CurvyInterpolation.Bezier) + { + for (int i = 0; i < dirtyCpsExtendedList.Count; i++) + { + CurvySplineSegment dirtyControlPoint = dirtyCpsExtendedList[i]; + if (dirtyControlPoint.AutoHandles) + dirtyControlPoint.SetBezierHandles(-1f, true, true, true); + } + } + + // Iterate through all changed for threadable tasks (cache Approximation, ApproximationT, ApproximationDistance) + if (UseThreading) + mThreadWorker.ParallelFor(refreshCurveAction, dirtyCpsExtendedList); + else + for (int i = 0; i < dirtyCpsExtendedList.Count; i++) + dirtyCpsExtendedList[i].refreshCurveINTERNAL(); + + // Iterate through all ControlPoints for some basic actions + if (controlPointsCount > 0) + { + +#pragma warning disable 618 + List segments = Segments; +#pragma warning restore 618 + int segmentsCount = segments.Count; + + Array.Resize(ref controlPointsDistances, controlPointsCount); + + //// Distances + controlPointsDistances[0] = ControlPoints[0].Distance = 0; + for (int i = 1; i < controlPointsCount; i++) + controlPointsDistances[i] = ControlPoints[i].Distance = ControlPoints[i - 1].Distance + ControlPoints[i - 1].Length; + + for (int index = 0; index < segmentsCount; index++) + { + CurvySplineSegment segment = segments[index]; + CurvySplineSegment nextSegment = GetNextSegment(segment); + if (nextSegment) + //enforce tangents continuity + segment.ApproximationT[segment.CacheSize] = nextSegment.ApproximationT[0]; + else + { + //handles tangent of last visible control point + GetNextControlPoint(segment).ApproximationT[0] = segment.ApproximationT[segment.CacheSize]; + } + } + } + + #endregion + } + + if (mDirtyOrientation && Count > 0) + { + #region --- Orientation --- + + switch (Orientation) + { + case CurvyOrientation.None: + + #region --- None --- + + //No threading here since the operation is too quick to have any benefice in multithreading it + for (int i = 0; i < dirtyCpsExtendedList.Count; i++) + dirtyCpsExtendedList[i].refreshOrientationNoneINTERNAL(); + break; + + #endregion + + case CurvyOrientation.Static: + + #region --- Static --- + + if (UseThreading) + { + Action action = (controlPoint, cpIndex, cpsCount) => controlPoint.refreshOrientationStaticINTERNAL(); + mThreadWorker.ParallelFor(action, dirtyCpsExtendedList); + } + else + { + for (int i = 0; i < dirtyCpsExtendedList.Count; i++) + dirtyCpsExtendedList[i].refreshOrientationStaticINTERNAL(); + } + + break; + + #endregion + + case CurvyOrientation.Dynamic: + + #region --- Dynamic --- + + // process PTF and smoothing for all anchor groups of dirty CPs + int dead = controlPointsCount + 1; + do + { + CurvySplineSegment currentDirtyControlPoint = dirtyCpsExtendedList[0]; + if (IsControlPointASegment(currentDirtyControlPoint) == false) + { + currentDirtyControlPoint.refreshOrientationDynamicINTERNAL(currentDirtyControlPoint.getOrthoUp0INTERNAL()); + dirtyCpsExtendedList.RemoveAt(0); + } + else + { + short currentOrientationAnchorIndex = GetControlPointOrientationAnchorIndex(currentDirtyControlPoint); + CurvySplineSegment currentOrientationAnchor = ControlPoints[currentOrientationAnchorIndex]; + + float swirlPerSegment; + float smoothingAngleStep; + int sampleCount = 0; + short firstCpOutsideAnchorGroupIndex; + { + short anchorGroupCurrentCpIndex = currentOrientationAnchorIndex; + CurvySplineSegment anchorGroupCurrentCp = currentOrientationAnchor; + int anchorgroupSegmentCount = 0; + float anchorgroupLength = 0; + Vector3 nextControlPointInitialUp = currentOrientationAnchor.getOrthoUp0INTERNAL(); + do + { + sampleCount += anchorGroupCurrentCp.CacheSize; + anchorgroupSegmentCount++; + anchorgroupLength += anchorGroupCurrentCp.Length; + + anchorGroupCurrentCp.refreshOrientationDynamicINTERNAL(nextControlPointInitialUp); + nextControlPointInitialUp = anchorGroupCurrentCp.ApproximationUp[anchorGroupCurrentCp.ApproximationUp.Length - 1]; + + anchorGroupCurrentCpIndex = GetNextControlPointIndex(anchorGroupCurrentCpIndex, m_Closed, controlPointsCount); + anchorGroupCurrentCp = ControlPoints[anchorGroupCurrentCpIndex]; + } while (!IsControlPointAnOrientationAnchor(anchorGroupCurrentCp)); + firstCpOutsideAnchorGroupIndex = anchorGroupCurrentCpIndex; + smoothingAngleStep = nextControlPointInitialUp.AngleSigned(anchorGroupCurrentCp.getOrthoUp0INTERNAL(), anchorGroupCurrentCp.ApproximationT[0]) / sampleCount; + + // Apply swirl + { + switch (currentOrientationAnchor.Swirl) + { + case CurvyOrientationSwirl.Segment: + swirlPerSegment = currentOrientationAnchor.SwirlTurns * 360; + break; + case CurvyOrientationSwirl.AnchorGroup: + swirlPerSegment = (currentOrientationAnchor.SwirlTurns * 360 / anchorgroupSegmentCount); + break; + case CurvyOrientationSwirl.AnchorGroupAbs: + swirlPerSegment = (currentOrientationAnchor.SwirlTurns * 360) / anchorgroupLength; + break; + case CurvyOrientationSwirl.None: + swirlPerSegment = 0; + break; + default: + swirlPerSegment = 0; + DTLog.LogError("[Curvy] Invalid Swirl value " + currentOrientationAnchor.Swirl); + break; + } + } + } + + + { + float angleAccumulator = smoothingAngleStep; + short anchorGroupCurrentCpIndex = currentOrientationAnchorIndex; + bool isSwirlAnchorGroupAbs = currentOrientationAnchor.Swirl == CurvyOrientationSwirl.AnchorGroupAbs; + Vector3 nextControlPointInitialUp = currentOrientationAnchor.ApproximationUp[0]; + do + { + CurvySplineSegment anchorGroupCurrentCp = ControlPoints[anchorGroupCurrentCpIndex]; + float swirlAngleStep = isSwirlAnchorGroupAbs + ? smoothingAngleStep + swirlPerSegment * anchorGroupCurrentCp.Length / anchorGroupCurrentCp.CacheSize + : smoothingAngleStep + swirlPerSegment / anchorGroupCurrentCp.CacheSize; + + //rotate Ups around tangents + Vector3[] tangents = anchorGroupCurrentCp.ApproximationT; + Vector3[] ups = anchorGroupCurrentCp.ApproximationUp; + int upsLength = ups.Length; + ups[0] = nextControlPointInitialUp; + + //OPTIM: I thought that the commented version of the code will be faster because of SIMD, but it doesn't seem so. Maybe further work on parallelisation will indded make it faster, but a quick test with Parallel.For didn't show any increase in perfs, but the opposite. Maybe parallelising the ups on a single CP is too little work for multi-threading. Maybe if all the cps' ups were computed in the same loop, multithreading will be worth it. + /* + float angleAccumulatorLoopStart = angleAccumulator; + for (int i = 1; i < upsLength; i++) + ups[i] = Quaternion.AngleAxis(angleAccumulatorLoopStart + (i - 1) * swirlAngleStep, tangents[i]) * ups[i]; + angleAccumulator = angleAccumulatorLoopStart + (upsLength - 1) * swirlAngleStep; + */ + for (int i = 1; i < upsLength; i++) + { + ups[i] = Quaternion.AngleAxis(angleAccumulator, tangents[i]) * ups[i]; + angleAccumulator += swirlAngleStep; + } + nextControlPointInitialUp = ups[upsLength - 1]; + dirtyCpsExtendedList.Remove(anchorGroupCurrentCp); + + anchorGroupCurrentCpIndex = GetNextControlPointIndex(anchorGroupCurrentCpIndex, m_Closed, controlPointsCount); + } while (anchorGroupCurrentCpIndex != firstCpOutsideAnchorGroupIndex); + } + } + } while (dirtyCpsExtendedList.Count > 0 && dead-- > 0); + if (dead <= 0) + DTLog.LogWarning("[Curvy] Deadloop in CurvySpline.Refresh! Please raise a bugreport!"); + break; + default: + DTLog.LogError("[Curvy] Invalid Orientation value " + Orientation); + break; + #endregion + } + + // Handle very last CP + if (!Closed) + { + CurvySplineSegment beforLastVisibleCp = GetPreviousControlPoint(LastVisibleControlPoint); + LastVisibleControlPoint.ApproximationUp[0] = beforLastVisibleCp.ApproximationUp[beforLastVisibleCp.CacheSize]; + } + + #endregion + } + } + +#if CURVY_SANITY_CHECKS + //These asserts are to make sure that the Refresh code doesn't modify the dirtiness state, which was the case before and could create bugs or unecessary calculations + Assert.IsTrue(dirtyControlPointsMinimalSet.Count == 0); + Assert.IsTrue(allControlPointsAreDirty == false); +#endif + mDirtyCurve = false; + mDirtyOrientation = false; + + return thereAreDirtyControlPoints; + } + + /// + /// Set the correct values to the thread compatible local positions and rotation + /// When multithreading, you can't access Transform in the not main threads. Here we cache that data so it is available for threads + /// + private void PrepareThreadCompatibleData() + { +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isCpsRelationshipCacheValid); +#endif + int controlPointsCount = ControlPointCount; + bool useFollowUp = Interpolation == CurvyInterpolation.CatmullRom || Interpolation == CurvyInterpolation.TCB; + + //prepare the TTransform for all needed control points, which are .... + // OPTIM: preparing the TTransform of all those CPs is overkill. Restrict the following the prepared CPs to only the CPs being related to the dirtied CPs + //... all the spline's control points, and ... + for (int i = 0; i < controlPointsCount; i++) + { + CurvySplineSegment controlPoint = ControlPoints[i]; + controlPoint.PrepareThreadCompatibleDataINTERNAL(useFollowUp); + } + //... possible other splines' control points because of the followup feature ... + if (Count > 0) + { + CurvySplineSegment beforeFirst = GetPreviousControlPointUsingFollowUp(FirstVisibleControlPoint); + //before first can be contorlPoints[0] in the case of a spline with AutoEndTangent set to false + if (ReferenceEquals(beforeFirst, null) == false && beforeFirst.Spline != this) + beforeFirst.PrepareThreadCompatibleDataINTERNAL(useFollowUp); + CurvySplineSegment afterLast = GetNextControlPointUsingFollowUp(LastVisibleControlPoint); + //afterLast first can be contorlPoints[controlPoints.Count - 1] in the case of a spline with AutoEndTangent set to false + if (ReferenceEquals(afterLast, null) == false && afterLast.Spline != this) + afterLast.PrepareThreadCompatibleDataINTERNAL(useFollowUp); + } + } + + /// + /// Fills dirtyCpsExtendedList from dirtyControlPointsMinimalSet + /// + private void FillDirtyCpsExtendedList() + { + int controlPointsCount = ControlPoints.Count; + dirtyCpsExtendedList.Clear(); + if (allControlPointsAreDirty) + for (int i = 0; i < controlPointsCount; i++) + dirtyCpsExtendedList.Add(ControlPoints[i]); + else + { + //OPTIM use cps indexes in dirtyControlPointsMinimalSet instead of cps references, will reduce the time passed in getHash and == + + int minimalDirtyCpsCount = dirtyControlPointsMinimalSet.Count; + //We expend dirtyControlPointsMinimalSet to include the extended list of dirty control points + for (int index = 0; index < minimalDirtyCpsCount; index++) + { + //OPTIM ElementAt allocates enumerator, avoid this. Maybe a way to avoid it is to use dirtyControlPointsMinimalSet.Copyto(array) to copy the content of the hashset into an array, and then iterate on that array instead of the hashset. The array needs to be a member of the CurvySpline class, so it is allocated only one + CurvySplineSegment dirtyCp = dirtyControlPointsMinimalSet.ElementAt(index); + + { + switch (Interpolation) + { + case CurvyInterpolation.Linear: + { + CurvySplineSegment previousCp = GetPreviousControlPoint(dirtyCp); + if (previousCp) + dirtyControlPointsMinimalSet.Add(previousCp); + } + break; + case CurvyInterpolation.CatmullRom: + case CurvyInterpolation.TCB: + case CurvyInterpolation.Bezier: + { + CurvySplineSegment previousCp = GetPreviousControlPoint(dirtyCp); + if (previousCp) + dirtyControlPointsMinimalSet.Add(previousCp); + + //Add other segments to reflect the effect of Bezier handles (and Auto Handles) and Catmull-Rom and TCB's extended influence of CPs. + //OPTIM in the bezier case, always including this extended set of CPs is overkill, but at least it avoids bugs and the complicated dirtying logic associated with the Bezier handles handling code. + if (previousCp) + { + //OPTIM you can get dirtyCp's index, then use GetPreviousControlPointIndex to get previousCp and previousPreviousCp + CurvySplineSegment previousPreviousCp = GetPreviousControlPoint(previousCp); + if (previousPreviousCp) + dirtyControlPointsMinimalSet.Add(previousPreviousCp); + } + + CurvySplineSegment nextCp = GetNextControlPoint(dirtyCp); + if (nextCp) + dirtyControlPointsMinimalSet.Add(nextCp); + } + break; + case CurvyInterpolation.BSpline: + { + int degree = BSplineDegree; + bool closed = Closed; + bool isClamped = IsBSplineClamped; + int n = BSplineHelper.GetBSplineN(controlPointsCount, degree, closed); + int dirtyCpIndex = GetControlPointIndex(dirtyCp); + for (int testedCpIndex = 0; testedCpIndex < controlPointsCount; testedCpIndex++) + { + CurvySplineSegment testedCP = ControlPoints[testedCpIndex]; + + int startK; + int endK; + + BSplineHelper.GetBSplineUAndK( + SegmentToTF(testedCP), isClamped, degree, n, + out _, out startK); + + if (dirtyCpIndex >= startK - degree && dirtyCpIndex <= startK) + dirtyCpsExtendedList.Add(testedCP); + else + { + BSplineHelper.GetBSplineUAndK( + SegmentToTF(testedCP, 1), isClamped, degree, n, + out _, out endK); + if (dirtyCpIndex >= endK - degree && dirtyCpIndex <= endK) + dirtyCpsExtendedList.Add(testedCP); + else if (closed) + { + int loopedCpIndex = dirtyCpIndex + controlPointsCount; + if (loopedCpIndex >= startK - degree && loopedCpIndex <= startK) + dirtyCpsExtendedList.Add(testedCP); + else + { + BSplineHelper.GetBSplineUAndK( + SegmentToTF(testedCP, 1), isClamped, degree, n, + out _, out endK); + if (loopedCpIndex >= endK - degree && loopedCpIndex <= endK) + dirtyCpsExtendedList.Add(testedCP); + } + } + } + } + } + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + } + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(isCpsRelationshipCacheValid); +#endif + dirtyCpsExtendedList.AddRange(dirtyControlPointsMinimalSet); + } + } + + /// + /// Call this to make the spline send an event to notify its listeners of the change in the spline data. + /// + internal void NotifyMetaDataModification() + { + //DESIGN until 2.2.3, meta data change triggered OnRefresh event by dirtying its associated control point. I think spline should have different events (or at least a param in the event) to distinguish between the event coming from an actual change in the spline's geometry, and a change in its meta data. + sendOnRefreshEventNextUpdate = true; + } + + /// + /// Rebuilds the hierarchy from the ControlPoints list + /// + private void SyncHierarchyFromSpline(bool renameControlPoints = true) + { +#if UNITY_EDITOR + // rename them and set their order based on ControlPoint list + int count = ControlPoints.Count; + for (short i = 0; i < count; i++) + { + CurvySplineSegment curvySplineSegment = ControlPoints[i]; + if (curvySplineSegment) + //curvySplineSegment was null in the following case: + //In edit mode, using the pen tool, added a new spline with a cp (CTRL + Left click on empty spot), then added a connected spline (CTRL + Right click on empty spot), and then hit ctrl+Z, which undone the creation of the connected spline, and in the next update this code is called with ControlPoints containing destroyed CPs + { + curvySplineSegment.transform.SetSiblingIndex(i); + + if (renameControlPoints) + curvySplineSegment.name = GetControlPointName(i); + } + } +#endif + } + + private void UpdatedLastProcessedGlobalCoordinates() + { + lastProcessedPosition = cachedTransform.position; + lastProcessedRotation = cachedTransform.rotation; + lastProcessedScale = cachedTransform.lossyScale; + } + + /// + /// Inserts a Control Point, trigger events and refresh spline + /// + /// A control point used as a param of the OnBeforeControlPointAddEvent + /// The position of the control point at its creation + /// Index at which the newly created control point will be inserted in the spline. + /// Used as a param of send events + /// If true, the spline's method will not be called, and the relevant events will not be triggered + /// Whether the positions are in the local or global space + /// The created Control Point + private CurvySplineSegment InsertAt(CurvySplineSegment controlPoint, Vector3 position, int insertionIndex, CurvyControlPointEventArgs.ModeEnum insertionMode, bool skipRefreshingAndEvents, Space space) + { +#if CONTRACTS_FULL + Contract.Requires(controlPoint.Spline == this); + Contract.Requires(controlPoints.Contains(controlPoint)); +#endif + + if (skipRefreshingAndEvents == false) + OnBeforeControlPointAddEvent(new CurvyControlPointEventArgs(this, this, controlPoint, insertionMode)); + + GameObject go; + CurvySplineSegment insertedControlPoint; + + if (UsePooling && Application.isPlaying) + { + CurvyGlobalManager curvyGlobalManager = CurvyGlobalManager.Instance; + if (curvyGlobalManager != null) + { + insertedControlPoint = curvyGlobalManager.ControlPointPool.Pop(cachedTransform);//TODO should this be callse with "null" instead of "transform", to be coherent with the other branches, and knowing that the parent is set to "transform" anyway in subsequent calls? + go = insertedControlPoint.gameObject; + } + else + { + DTLog.LogError("[Curvy] Couldn't find Curvy Global Manager. Please raise a bug report."); + go = new GameObject("NewCP", typeof(CurvySplineSegment)); + insertedControlPoint = go.GetComponent(); + } + } + else + { + go = new GameObject("NewCP", typeof(CurvySplineSegment)); + insertedControlPoint = go.GetComponent(); + } + + go.layer = gameObject.layer; + go.transform.SetParent(cachedTransform); + + InsertControlPoint(insertionIndex, insertedControlPoint); + insertedControlPoint.AutoHandleDistance = AutoHandleDistance; + if (space == Space.World) + insertedControlPoint.transform.position = position; + else + insertedControlPoint.transform.localPosition = position; + insertedControlPoint.transform.localRotation = Quaternion.identity; + insertedControlPoint.transform.localScale = Vector3.one; + + if (skipRefreshingAndEvents == false) + { + Refresh(); + OnAfterControlPointAddEvent(new CurvyControlPointEventArgs(this, this, insertedControlPoint, insertionMode)); + OnAfterControlPointChangesEvent(defaultSplineEventArgs); + } + + return insertedControlPoint; + } + + #region Events + + private CurvySplineEventArgs OnRefreshEvent(CurvySplineEventArgs e) + { + if (OnRefresh != null) + OnRefresh.Invoke(e); + return e; + } + + private CurvyControlPointEventArgs OnBeforeControlPointAddEvent(CurvyControlPointEventArgs e) + { + if (OnBeforeControlPointAdd != null) + OnBeforeControlPointAdd.Invoke(e); + return e; + } + + private CurvyControlPointEventArgs OnAfterControlPointAddEvent(CurvyControlPointEventArgs e) + { + if (OnAfterControlPointAdd != null) + OnAfterControlPointAdd.Invoke(e); + return e; + } + + private CurvyControlPointEventArgs OnBeforeControlPointDeleteEvent(CurvyControlPointEventArgs e) + { + if (OnBeforeControlPointDelete != null) + OnBeforeControlPointDelete.Invoke(e); + return e; + } + + private CurvySplineEventArgs OnAfterControlPointChangesEvent(CurvySplineEventArgs e) + { + if (OnAfterControlPointChanges != null) + OnAfterControlPointChanges.Invoke(e); + return e; + } + + #endregion + + + /*! \endcond */ + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline_private.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline_private.cs.meta new file mode 100644 index 00000000..90c723d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvySpline_private.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 0f1fc37177eb11444bdb58be9d5bd79e +timeCreated: 1524870710 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvyUISpline.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvyUISpline.cs new file mode 100644 index 00000000..d58e8d38 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvyUISpline.cs @@ -0,0 +1,47 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; + +namespace FluffyUnderware.Curvy +{ + /// + /// Spline component that fits perfectly to uGUI Canvas + /// + [RequireComponent(typeof(RectTransform))] + [AddComponentMenu("Curvy/Curvy UI Spline")] + [HelpURL(CurvySpline.DOCLINK + "curvyuispline")] + public class CurvyUISpline : CurvySpline + { + //DESIGN Isn't there a better way to create UI splines? The current code is set in a way that will not set up the spline properly if you don't go through the CreateUISpline method. This is an issue. + //Jake explains here that CurvyUISpline just to have a different PPU https://forum.curvyeditor.com/thread-431-post-1672.html#pid1672 + + /// + /// Creates a GameObject with a CurvyUISpline attached + /// + /// the component + public static CurvyUISpline CreateUISpline(string gameObjectName = "Curvy UI Spline") + { + CurvyUISpline spl = new GameObject(gameObjectName, typeof(CurvyUISpline)).GetComponent(); + spl.SetupUISpline(); + return spl; + } + + override protected void Reset() + { + base.Reset(); + SetupUISpline(); + } + + private void SetupUISpline() + { + RestrictTo2D = true; + MaxPointsPerUnit = 1; + Orientation = CurvyOrientation.None; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvyUISpline.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvyUISpline.cs.meta new file mode 100644 index 00000000..d4bdf2e0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/CurvyUISpline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a6c45371b22846469f6b81fca388a48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -101 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata.meta new file mode 100644 index 00000000..191da276 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f47d9788e67954148a508b7b9e5f55bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyInterpolatableMetadataBaseGeneric.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyInterpolatableMetadataBaseGeneric.cs new file mode 100644 index 00000000..b3480bc8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyInterpolatableMetadataBaseGeneric.cs @@ -0,0 +1,33 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using System; +using UnityEngine; + +namespace FluffyUnderware.Curvy +{ + /// + /// Base class for Metadata classes that support interpolation. + /// + /// The Type of the Metadata's value + [ExecuteAlways] + public abstract class CurvyInterpolatableMetadataBase : CurvyMetadataBase + { + /// + /// The value stored within this Metadata instance + /// + public abstract T MetaDataValue { get; } + + /// + /// Interpolates between the current Metadata's value and the one from the next Control Point's Metadata. + /// + /// The Metadata from the Control Point next to the current one + /// The local F value on the segment defined by the current Control Point and the next one + /// + public abstract T Interpolate(CurvyInterpolatableMetadataBase nextMetadata, float interpolationTime); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyInterpolatableMetadataBaseGeneric.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyInterpolatableMetadataBaseGeneric.cs.meta new file mode 100644 index 00000000..55fa99d0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyInterpolatableMetadataBaseGeneric.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aae93c9564267e4419881a7c0347a902 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyMetadataBase.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyMetadataBase.cs new file mode 100644 index 00000000..d5f93f00 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyMetadataBase.cs @@ -0,0 +1,140 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using FluffyUnderware.DevTools; +using UnityEngine; + +namespace FluffyUnderware.Curvy +{ + /// + /// Base class for all Metadata classes. + /// A Metadata is a custom data attached to a Control Point + /// + [RequireComponent(typeof(CurvySplineSegment))] + [ExecuteAlways] + public abstract class CurvyMetadataBase : DTVersionedMonoBehaviour + { + #region ### Serialized Fields ### + #endregion + + #region ### Public Properties ### + + public CurvySplineSegment ControlPoint + { + get { return mCP; } + } + + public CurvySpline Spline + { + get + { + //DESIGN should this throw an exception if mCP is null? + return (mCP) ? mCP.Spline : null; + } + } + + #endregion + + #region ### Private Fields & Properties ### + + private CurvySplineSegment mCP; + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + protected virtual void Awake() + { + mCP = GetComponent(); + mCP.RegisterMetaData(this); + } + + private void OnDestroy() + { + mCP.UnregisterMetaData(this); + } + + /*! \endcond */ + #endregion + + #region ### Public Methods ### + + public T GetPreviousData(bool autoCreate = true, bool segmentsOnly = true, bool useFollowUp = false) where T : CurvyMetadataBase + { + if (ControlPoint) + { + CurvySplineSegment controlPoint = ControlPoint; + CurvySpline spline = Spline; + + + CurvySplineSegment previousControlPoint; + if (!spline || spline.ControlPointsList.Count == 0) + previousControlPoint = null; + else + { + previousControlPoint = useFollowUp + ? spline.GetPreviousControlPointUsingFollowUp(controlPoint) + : spline.GetPreviousControlPoint(controlPoint); + + if (segmentsOnly && previousControlPoint && previousControlPoint.Spline.IsControlPointASegment(previousControlPoint) == false) + previousControlPoint = null; + } + + if (previousControlPoint) + return previousControlPoint.GetMetadata(autoCreate); + } + return default(T); + } + + public T GetNextData(bool autoCreate = true, bool segmentsOnly = true, bool useFollowUp = false) where T : CurvyMetadataBase + { + if (ControlPoint) + { + CurvySplineSegment controlPoint = ControlPoint; + CurvySpline spline = Spline; + + CurvySplineSegment nextControlPoint; + if (!spline || spline.ControlPointsList.Count == 0) + nextControlPoint = null; + else + { + nextControlPoint = useFollowUp + ? spline.GetNextControlPointUsingFollowUp(controlPoint) + : spline.GetNextControlPoint(controlPoint); + + if (segmentsOnly && nextControlPoint && nextControlPoint.Spline.IsControlPointASegment(nextControlPoint) == false) + nextControlPoint = null; + } + + if (nextControlPoint) + return nextControlPoint.GetMetadata(autoCreate); + } + return default(T); + } + + /// + /// Call this to make the owner spline send an event to notify its listeners of the change in the spline data. + /// + protected void NotifyModification() + { + CurvySpline spline = Spline; + if (spline && spline.IsInitialized) + spline.NotifyMetaDataModification(); + } + + #endregion + + #region ### Privates ### + /*! \cond PRIVATES */ + + + /*! \endcond */ + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyMetadataBase.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyMetadataBase.cs.meta new file mode 100644 index 00000000..e3fa0253 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/Metadata/CurvyMetadataBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6b43fe84c1280624d89fe7b112993489 +timeCreated: 1442215915 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineDirtyingType.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineDirtyingType.cs new file mode 100644 index 00000000..67322f15 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineDirtyingType.cs @@ -0,0 +1,24 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +namespace FluffyUnderware.Curvy +{ + /// + /// Used as a parameter for dirtying methods. Instructs if only the spline's orientation cache should be recomputed, or the whole approximations cache + /// + public enum SplineDirtyingType + { + /// + /// Orientation approximations cache will be dirtied. Positions approximations cache will be ignored. + /// + OrientationOnly, + /// + /// Orientation approximations cache and positions approximations cache will be dirtied. + /// + Everything + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineDirtyingType.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineDirtyingType.cs.meta new file mode 100644 index 00000000..20a55c67 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineDirtyingType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e4eb203c5d588c48926e1ee743423ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineEvents.cs b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineEvents.cs new file mode 100644 index 00000000..d002438d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineEvents.cs @@ -0,0 +1,95 @@ +// ===================================================================== +// Copyright 2013-2022 ToolBuddy +// All rights reserved +// +// http://www.toolbuddy.net +// ===================================================================== + +using UnityEngine; +using FluffyUnderware.DevTools; +using UnityEngine.Assertions; + +#if CONTRACTS_FULL +using System.Diagnostics.Contracts; +#endif +namespace FluffyUnderware.Curvy +{ + /// + /// Class used by spline related events + /// + [System.Serializable] + public class CurvySplineEvent : UnityEventEx { } + + /// + /// Class used by spline related events + /// + [System.Serializable] + public class CurvyControlPointEvent : UnityEventEx { } + + /// + /// EventArgs used by CurvyControlPointEvent events + /// + public class CurvyControlPointEventArgs : CurvySplineEventArgs + { + /// + /// Event Mode + /// + public enum ModeEnum + { + /// + /// Send for events that are not related to control points adding or removal + /// + None, + /// + /// Send when a Control point is added before an existing one + /// + AddBefore, + /// + /// Send when a Control point is added after an existing one + /// + AddAfter, + /// + /// Send when a Control point is deleted + /// + Delete + } + + /// + /// Determines the action this event was raised for + /// + public readonly ModeEnum Mode; + /// + /// Related Control Point + /// + public readonly CurvySplineSegment ControlPoint; + + public CurvyControlPointEventArgs(MonoBehaviour sender, CurvySpline spline, CurvySplineSegment cp, ModeEnum mode = ModeEnum.None, object data = null) : base(sender, spline, data) + { + ControlPoint = cp; + Mode = mode; + } + } + + + + /// + /// EventArgs used by CurvySplineEvent events + /// + public class CurvySplineEventArgs : CurvyEventArgs + { + /// + /// The related spline + /// + public readonly CurvySpline Spline; + + public CurvySplineEventArgs(MonoBehaviour sender, CurvySpline spline, object data = null) : base(sender, data) + { + Spline = spline; + + +#if CURVY_SANITY_CHECKS + Assert.IsTrue(System.Object.ReferenceEquals(Spline,null) == false); +#endif + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineEvents.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineEvents.cs.meta new file mode 100644 index 00000000..559d67a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/Scripts/Splines/SplineEvents.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5224b0feeae2424abf53d1d1c4eafc6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/link.xml b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/link.xml new file mode 100644 index 00000000..8c2bcc04 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/link.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/link.xml.meta b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/link.xml.meta new file mode 100644 index 00000000..a92e595b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Assets/Curvy/link.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e66e76514f3c2ec45b6e520ae1d58369 +timeCreated: 1444326128 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies.meta new file mode 100644 index 00000000..c7bb1908 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e32f9320ac5d5234cb40be7b246c0b41 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools.meta new file mode 100644 index 00000000..c81ed139 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 468a707980582db438839f44ed80466f +folderAsset: yes +timeCreated: 1436279748 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes.meta new file mode 100644 index 00000000..444e4f65 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3d39857b80c523445aeef7d47cfd5296 +folderAsset: yes +timeCreated: 1447959531 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Attributes.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Attributes.cs new file mode 100644 index 00000000..802b9736 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Attributes.cs @@ -0,0 +1,533 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Reflection; +using System; +using System.Collections.Generic; +using FluffyUnderware.DevTools.Extensions; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace FluffyUnderware.DevTools +{ + #region ### Interfaces ### + /// + /// Interface for attributes that change group parsing options + /// + public interface IDTGroupParsingAttribute + { + string Path { get; } + } + /// + /// Interface for attributes that change field parsing options + /// + public interface IDTFieldParsingAttribute { } + /// + /// Interface for attributes that change group rendering options + /// + public interface IDTGroupRenderAttribute { } + /// + /// Interface for attributes that change field rendering options + /// + public interface IDTFieldRenderAttribute { } + + #endregion + + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] + public class DTVersionAttribute : System.Attribute + { + public readonly string Version; + + public DTVersionAttribute(string version) + { + Version = version; + } + } + + + #region ### Base Attributes ### + //OPTIM: all the attributes bellow (and maybe DTVersionAttribute too) seem to be used only in editor code. If so, and there overhead is big, make their compilation conditional to gain performance in the build applications + + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true)] + public class DTAttribute : System.Attribute, IComparable + { + public int TypeSort { get; protected set; } + public int Sort = 100; + public bool ShowBelowProperty; + public int Space; + + public virtual int CompareTo(object obj) + { + DTAttribute other = (DTAttribute)obj; + int v = ShowBelowProperty.CompareTo(other.ShowBelowProperty); + if (v == 0) + { + int ts = TypeSort.CompareTo(other.TypeSort); + if (ts == 0) + return Sort.CompareTo(other.Sort); + else + return ts; + } + else + return v; + } + + public DTAttribute(int sortOrder, bool showBelow = false) + { + TypeSort = sortOrder; + ShowBelowProperty = showBelow; + } + } + + /// + /// Explicitely add the next field to a specific group + /// + public class GroupAttribute : DTAttribute, IDTGroupParsingAttribute, IDTGroupRenderAttribute + { + public string Path + { + get { return mPath; } + protected set + { + PathIsAbsolute = !string.IsNullOrEmpty(value) && value.StartsWith("@"); + if (PathIsAbsolute) + { + mPath = value.Substring(1); + if (string.IsNullOrEmpty(mPath)) + mPath = null; + } + else + mPath = value; + } + } + public bool PathIsAbsolute { get; private set; } + + public bool Expanded = true; + public bool Invisible; + public string Label = null; + public string Tooltip = null; + public string HelpURL = null; + + string mPath; + + public GroupAttribute(string pathAndName) + : base(15) + { + Path = pathAndName; + } + } + + public class ActionAttribute : DTAttribute + { + public enum ActionEnum { Show, Hide, Enable, Disable, ShowInfo, ShowWarning, ShowError, Callback } + public enum ActionPositionEnum { Above, Below } + public ActionEnum Action = ActionEnum.Callback; + public ActionPositionEnum Position = ActionPositionEnum.Below; + public object ActionData; + + MethodInfo mCallback; + + protected ActionAttribute(string actionData, ActionEnum action = ActionEnum.Callback) + : base(50) + { + ActionData = actionData; + Action = action; + } + + public void Callback(object classInstance) + { + string methodName = ActionData as string; + if (!string.IsNullOrEmpty(methodName)) + { + if (mCallback == null) + mCallback = classInstance.GetType().MethodByName(methodName, true, true); + + if (mCallback != null) + mCallback.Invoke(classInstance, null); + else + Debug.LogWarningFormat("[DevTools] Unable to find method '{0}' at class '{1}' !", methodName, classInstance.GetType().Name); + } + } + } + + public class ConditionalAttribute : ActionAttribute + { + public enum OperatorEnum { AND, OR }; + public class Condition + { + public string FieldName; + public FieldInfo FieldInfo; + public PropertyInfo PropertyInfo; + public object CompareTo; + public bool CompareFalse; + public OperatorEnum Operator; + public MethodInfo MethodInfo; + public string MethodName; + } + + public Condition[] Conditions; + + + protected ConditionalAttribute(string fieldOrProperty, object compareTo, bool compareFalse = false) + : base(null, ActionEnum.Show) + { + TypeSort = 55; + Conditions = new Condition[1] + { + new Condition() + { + FieldName=fieldOrProperty, + CompareTo=compareTo, + CompareFalse=compareFalse + } + }; + } + + protected ConditionalAttribute(string fieldOrProperty, object compareTo, bool compareFalse, OperatorEnum op, + string fieldOrProperty2, object compareTo2, bool compareFalse2) + : base(null, ActionEnum.Show) + { + TypeSort = 55; + Conditions = new Condition[2] + { + new Condition() + { + FieldName=fieldOrProperty, + CompareTo=compareTo, + CompareFalse=compareFalse + }, + new Condition() + { + FieldName=fieldOrProperty2, + CompareTo=compareTo2, + CompareFalse=compareFalse2, + Operator=op + } + }; + } + + protected ConditionalAttribute(string fieldOrProperty, object compareTo, bool compareFalse, OperatorEnum op, + string fieldOrProperty2, object compareTo2, bool compareFalse2, + string fieldOrProperty3, object compareTo3, bool compareFalse3) + : base(null, ActionEnum.Show) + { + TypeSort = 55; + Conditions = new Condition[3] + { + new Condition() + { + FieldName=fieldOrProperty, + CompareTo=compareTo, + CompareFalse=compareFalse + }, + new Condition() + { + FieldName=fieldOrProperty2, + CompareTo=compareTo2, + CompareFalse=compareFalse2, + Operator=op + }, + new Condition() + { + FieldName=fieldOrProperty3, + CompareTo=compareTo3, + CompareFalse=compareFalse3, + Operator=op + } + }; + } + + protected ConditionalAttribute(string methodToQuery) + : base(null, ActionEnum.Show) + { + TypeSort = 55; + Conditions = new Condition[1] + { + new Condition() + { + MethodName=methodToQuery, + CompareTo=null + } + }; + } + + + public virtual bool ConditionMet(object classInstance) + { + bool result = evaluate(Conditions[0], classInstance); + + for (int i = 1; i < Conditions.Length; i++) + { + Condition c = Conditions[i]; + switch (c.Operator) + { + case OperatorEnum.AND: + result = result && evaluate(c, classInstance); + break; + case OperatorEnum.OR: + result = result || evaluate(c, classInstance); + break; + } + } + return result; + + + } + + bool evaluate(Condition cond, object classInstance) + { + if (!string.IsNullOrEmpty(cond.MethodName)) + { + if (cond.MethodInfo == null) + cond.MethodInfo = classInstance.GetType().MethodByName(cond.MethodName, true, true); + if (cond.MethodInfo != null) + { + if (cond.CompareFalse) + return !(bool)cond.MethodInfo.Invoke(classInstance, null); + else + return (bool)cond.MethodInfo.Invoke(classInstance, null); + } + else + { + Debug.LogWarningFormat("[DevTools] Unable to find method '{0}' at class '{1}' !", cond.MethodName, classInstance.GetType().Name); + return cond.CompareFalse; + } + } + else + { + if (cond.FieldInfo == null) + { + cond.FieldInfo = classInstance.GetType().FieldByName(cond.FieldName, true, true); + if (cond.FieldInfo == null) + { + cond.PropertyInfo = classInstance.GetType().PropertyByName(cond.FieldName, true, true); + } + } + object value = null; + if (cond.FieldInfo != null) + value = cond.FieldInfo.GetValue(classInstance); + else if (cond.PropertyInfo != null) + value = cond.PropertyInfo.GetValue(classInstance, null); + + if (value == null) + { + return (cond.CompareTo == null && !cond.CompareFalse); + } + else + return value.Equals(cond.CompareTo) == !cond.CompareFalse; + } + } + + } + + #endregion + + #region ### Attributes handling Nesting/Parsing ### + + public class SortOrderAttribute : DTAttribute, IDTFieldParsingAttribute + { + public SortOrderAttribute(int sort = 100) : base(0) + { + Sort = sort; + } + } + + /// + /// Show children inside a section. Start the path with "@" to break out of any previous sections + /// + public class AsGroupAttribute : GroupAttribute, IDTFieldParsingAttribute, IDTFieldRenderAttribute + { + + public AsGroupAttribute(string pathAndName = null) + : base(pathAndName) + { + TypeSort = 10; + } + } + + /// + /// Show all subsequent fields inside a section rendered as a tab + /// + public class TabAttribute : GroupAttribute + { + public readonly string TabName; + public readonly string TabBarName; + + public TabAttribute(string pathAndName) + : base("") + { + TypeSort = 10; + string p; + split(pathAndName, out p, out TabBarName, out TabName); + Path = p; + } + + static bool split(string pathAndName, out string path, out string tabBar, out string tabname) + { + string[] p = pathAndName.Split('/'); + path = string.Empty; + tabBar = string.Empty; + tabname = pathAndName; + if (p.Length == 0) + return false; + else if (p.Length == 1) + { + tabname = p[0]; + tabBar = "Default"; + return true; + } + else + { + tabname = p[p.Length - 1]; + tabBar = p[p.Length - 2]; + path = string.Join("/", p, 0, p.Length - 2); + return true; + } + + } + } + + /// + /// Show all subsequent fields inside a section. + /// + public class SectionAttribute : GroupAttribute + { + public bool Fixed; + + public SectionAttribute(string name, bool expanded = true, bool fix = false, int sort = 100) + : base(name) + { + Expanded = expanded; + TypeSort = 10; + Sort = sort; + Fixed = fix; + } + } + + /// + /// Ends any section + /// + public class NoSectionAttribute : SectionAttribute + { + public NoSectionAttribute() : base("") + { + TypeSort = 10; + } + } + + + + /// + /// Hides Field and doesn't enter children + /// + public class Hide : DTAttribute, IDTFieldParsingAttribute, IDTFieldRenderAttribute + { + public Hide() : base(20) { } + } + + /// + /// Hides Field, but enter children + /// + public class Inline : DTAttribute, IDTFieldParsingAttribute, IDTFieldRenderAttribute + { + public Inline() : base(21) { } + } + + + + + + #endregion + + #region ### Attributes handling visual representation ### + + public class ArrayExAttribute : DTAttribute, IDTFieldParsingAttribute + { + public bool Draggable = true; + public bool ShowHeader = true; + public bool ShowAdd = true; + public bool ShowDelete = true; + public bool DropTarget = true; + + public ArrayExAttribute() + : base(35) + { + } + } + + #endregion + + #region ### Attributes handling actions and dynamic evaluation ### + + + + public class FieldActionAttribute : ActionAttribute, IDTFieldRenderAttribute + { + public FieldActionAttribute(string actionData, ActionEnum action = ActionEnum.Callback) + : base(actionData, action) { } + + } + + public class GroupActionAttribute : ActionAttribute, IDTGroupRenderAttribute + { + public GroupActionAttribute(string actionData, ActionEnum action = ActionEnum.Callback) + : base(actionData, action) { } + } + + + + public class FieldConditionAttribute : ConditionalAttribute, IDTFieldRenderAttribute + { + public FieldConditionAttribute(string fieldOrProperty, object compareTo, bool compareFalse = false, ActionEnum action = ActionEnum.Show, object actionData = null, ActionPositionEnum position = ActionPositionEnum.Below) + : base(fieldOrProperty, compareTo, compareFalse) + { + Action = action; + ActionData = actionData; + Position = position; + } + + + public FieldConditionAttribute(string fieldOrProperty, object compareTo, bool compareFalse, OperatorEnum op, + string fieldOrProperty2, object compareTo2, bool compareFalse2) + : base(fieldOrProperty, compareTo, compareFalse, op, fieldOrProperty2, compareTo2, compareFalse2) { } + + + public FieldConditionAttribute(string fieldOrProperty, object compareTo, bool compareFalse, OperatorEnum op, + string fieldOrProperty2, object compareTo2, bool compareFalse2, + string fieldOrProperty3, object compareTo3, bool compareFalse3) + : base(fieldOrProperty, compareTo, compareFalse, op, fieldOrProperty2, compareTo2, compareFalse2, fieldOrProperty3, compareTo3, compareFalse3) { } + + public FieldConditionAttribute(string methodToQuery) + : base(methodToQuery) { } + + } + public class GroupConditionAttribute : ConditionalAttribute, IDTGroupRenderAttribute + { + public GroupConditionAttribute(string fieldOrProperty, object compareTo, bool compareFalse = false) + : base(fieldOrProperty, compareTo, compareFalse) { } + + + public GroupConditionAttribute(string fieldOrProperty, object compareTo, bool compareFalse, OperatorEnum op, + string fieldOrProperty2, object compareTo2, bool compareFalse2) + : base(fieldOrProperty, compareTo, compareFalse, op, fieldOrProperty2, compareTo2, compareFalse2) { } + + + public GroupConditionAttribute(string fieldOrProperty, object compareTo, bool compareFalse, OperatorEnum op, + string fieldOrProperty2, object compareTo2, bool compareFalse2, + string fieldOrProperty3, object compareTo3, bool compareFalse3) + : base(fieldOrProperty, compareTo, compareFalse, op, fieldOrProperty2, compareTo2, compareFalse2, fieldOrProperty3, compareTo3, compareFalse3) { } + + public GroupConditionAttribute(string methodToQuery) + : base(methodToQuery) { } + } + + #endregion + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Attributes.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Attributes.cs.meta new file mode 100644 index 00000000..2cb31dd2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Attributes.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 353b27613f9971242bf7f5673b2529a5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Couple.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Couple.cs new file mode 100644 index 00000000..5f580070 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Couple.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace FluffyUnderware.DevTools +{ + public class Couple + { + public T1 First { get; set; } + public T2 Second { get; set; } + public Couple(T1 first, T2 second) + { + First = first; + Second = second; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Couple.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Couple.cs.meta new file mode 100644 index 00000000..02c1ea04 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Couple.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c3f887f64f3b22845b9c93163066963a +timeCreated: 1525390532 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTEase.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTEase.cs new file mode 100644 index 00000000..d2703603 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTEase.cs @@ -0,0 +1,989 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; + +namespace FluffyUnderware.DevTools +{ + public static class DTTween + { + public enum EasingMethod + { + Linear = 0, + ExponentialIn = 1, + ExponentialOut = 2, + ExponentialInOut = 3, + ExponentialOutIn = 4, + CircularIn = 5, + CircularOut = 6, + CircularInOut = 7, + CircularOutIn = 8, + QuadraticIn = 9, + QuadraticOut = 10, + QuadraticInOut = 11, + QuadraticOutIn = 12, + SinusIn = 13, + SinusOut = 14, + SinusInOut = 15, + SinusOutIn = 16, + CubicIn = 17, + CubicOut = 18, + CubicInOut = 19, + CubicOutIn = 20, + QuarticIn = 21, + QuarticOut = 22, + QuarticInOut = 23, + QuarticOutIn = 24, + QuinticIn = 25, + QuinticOut = 26, + QuinticInOut = 27, + QuinticOutIn = 28 + } + + + /// + /// Tween + /// + /// Tweening method + /// Time (0..1) + /// Start value + /// Delta value + /// tweened value + public static float Ease(EasingMethod method, float t, float b, float c) + { + switch (method) + { + case EasingMethod.ExponentialIn: return ExpoIn(t, b, c); + case EasingMethod.ExponentialOut: return ExpoOut(t, b, c); + case EasingMethod.ExponentialInOut: return ExpoInOut(t, b, c); + case EasingMethod.ExponentialOutIn: return ExpoOutIn(t, b, c); + case EasingMethod.CircularIn: return CircIn(t, b, c); + case EasingMethod.CircularOut: return CircOut(t, b, c); + case EasingMethod.CircularInOut: return CircInOut(t, b, c); + case EasingMethod.CircularOutIn: return CircOutIn(t, b, c); + case EasingMethod.QuadraticIn: return QuadIn(t, b, c); + case EasingMethod.QuadraticOut: return QuadOut(t, b, c); + case EasingMethod.QuadraticInOut: return QuadInOut(t, b, c); + case EasingMethod.QuadraticOutIn: return QuadOutIn(t, b, c); + case EasingMethod.SinusIn: return SineIn(t, b, c); + case EasingMethod.SinusOut: return SineOut(t, b, c); + case EasingMethod.SinusInOut: return SineInOut(t, b, c); + case EasingMethod.SinusOutIn: return SineOutIn(t, b, c); + case EasingMethod.CubicIn: return CubicIn(t, b, c); + case EasingMethod.CubicOut: return CubicOut(t, b, c); + case EasingMethod.CubicInOut: return CubicInOut(t, b, c); + case EasingMethod.CubicOutIn: return CubicOutIn(t, b, c); + case EasingMethod.QuarticIn: return QuartIn(t, b, c); + case EasingMethod.QuarticOut: return QuartOut(t, b, c); + case EasingMethod.QuarticInOut: return QuartInOut(t, b, c); + case EasingMethod.QuarticOutIn: return QuartOutIn(t, b, c); + case EasingMethod.QuinticIn: return QuintIn(t, b, c); + case EasingMethod.QuinticOut: return QuintOut(t, b, c); + case EasingMethod.QuinticInOut: return QuintInOut(t, b, c); + case EasingMethod.QuinticOutIn: return QuintOutIn(t, b, c); + default: return Linear(t, b, c); + } + } + + /// + /// Tween + /// + /// Tweening method + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float Ease(EasingMethod method, float t, float b, float c, float d) + { + switch (method) + { + case EasingMethod.ExponentialIn: return ExpoIn(t, b, c, d); + case EasingMethod.ExponentialOut: return ExpoOut(t, b, c, d); + case EasingMethod.ExponentialInOut : return ExpoInOut(t, b, c, d); + case EasingMethod.ExponentialOutIn: return ExpoOutIn(t, b, c, d); + case EasingMethod.CircularIn: return CircIn(t, b, c, d); + case EasingMethod.CircularOut: return CircOut(t, b, c, d); + case EasingMethod.CircularInOut: return CircInOut(t, b, c, d); + case EasingMethod.CircularOutIn: return CircOutIn(t, b, c, d); + case EasingMethod.QuadraticIn : return QuadIn(t, b, c, d); + case EasingMethod.QuadraticOut : return QuadOut(t, b, c, d); + case EasingMethod.QuadraticInOut : return QuadInOut(t, b, c, d); + case EasingMethod.QuadraticOutIn : return QuadOutIn(t, b, c, d); + case EasingMethod.SinusIn: return SineIn(t, b, c, d); + case EasingMethod.SinusOut: return SineOut(t, b, c, d); + case EasingMethod.SinusInOut : return SineInOut(t, b, c, d); + case EasingMethod.SinusOutIn : return SineOutIn(t, b, c, d); + case EasingMethod.CubicIn: return CubicIn(t, b, c, d); + case EasingMethod.CubicOut: return CubicOut(t, b, c, d); + case EasingMethod.CubicInOut: return CubicInOut(t, b, c, d); + case EasingMethod.CubicOutIn: return CubicOutIn(t, b, c, d); + case EasingMethod.QuarticIn: return QuartIn(t, b, c, d); + case EasingMethod.QuarticOut: return QuartOut(t, b, c, d); + case EasingMethod.QuarticInOut: return QuartInOut(t, b, c, d); + case EasingMethod.QuarticOutIn: return QuartOutIn(t, b, c, d); + case EasingMethod.QuinticIn: return QuintIn(t, b, c, d); + case EasingMethod.QuinticOut: return QuintOut(t, b, c, d); + case EasingMethod.QuinticInOut: return QuintInOut(t, b, c, d); + case EasingMethod.QuinticOutIn: return QuintOutIn(t, b, c, d); + default: return Linear(t, b, c, d); + } + } + + #region ### Linear ### + /// + /// Linear tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float Linear(float t, float b, float c) + { + return c * Mathf.Clamp01(t) + b; + } + /// + /// Linear tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float Linear(float t, float b, float c, float d) + { + return c * t / d + b; + } + #endregion + + #region ### Exponential ### + /// + /// Exponential tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float ExpoOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return (t == 1) ? b + c : c * (-Mathf.Pow(2, -10 * t) + 1) + b; + } + /// + /// Exponential tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float ExpoOut(float t, float b, float c, float d) + { + return (t == d) ? b + c : c * (-Mathf.Pow(2, -10 * t / d) + 1) + b; + } + + /// + /// Exponential tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float ExpoIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return (t == 0) ? b : c * Mathf.Pow(2, 10 * (t-1)) + b; + } + /// + /// Exponential tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float ExpoIn(float t, float b, float c, float d) + { + return (t == 0) ? b : c * Mathf.Pow(2, 10 * (t / d - 1)) + b; + } + + /// + /// Exponential tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float ExpoInOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t == 0) + return b; + + if (t == 1) + return b + c; + + if ((t /= .5f) < 1) + return c / 2 * Mathf.Pow(2, 10 * (t - 1)) + b; + + return c / 2 * (-Mathf.Pow(2, -10 * --t) + 2) + b; + } + /// + /// Exponential tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float ExpoInOut(float t, float b, float c, float d) + { + if (t == 0) + return b; + + if (t == d) + return b + c; + + if ((t /= d / 2) < 1) + return c / 2 * Mathf.Pow(2, 10 * (t - 1)) + b; + + return c / 2 * (-Mathf.Pow(2, -10 * --t) + 2) + b; + } + + /// + /// Exponential tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float ExpoOutIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t < .5f) + return ExpoOut(t * 2, b, c / 2); + + return ExpoIn((t * 2) - 1, b + c / 2, c / 2); + } + /// + /// Exponential tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float ExpoOutIn(float t, float b, float c, float d) + { + if (t < d / 2) + return ExpoOut(t * 2, b, c / 2, d); + + return ExpoIn((t * 2) - d, b + c / 2, c / 2, d); + } + + #endregion + + #region ### Circular ### + /// + /// Circular tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CircOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return c * Mathf.Sqrt(1 - (t = t - 1) * t) + b; + } + /// + /// Circular tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CircOut(float t, float b, float c, float d) + { + return c * Mathf.Sqrt(1 - (t = t / d - 1) * t) + b; + } + + /// + /// Circular tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CircIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return -c * (Mathf.Sqrt(1 - t * t) - 1) + b; + } + /// + /// Circular tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CircIn(float t, float b, float c, float d) + { + return -c * (Mathf.Sqrt(1 - (t /= d) * t) - 1) + b; + } + + /// + /// Circular tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CircInOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if ((t /= .5f) < 1) + return -c / 2 * (Mathf.Sqrt(1 - t * t) - 1) + b; + + return c / 2 * (Mathf.Sqrt(1 - (t -= 2) * t) + 1) + b; + } + /// + /// Circular tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CircInOut(float t, float b, float c, float d) + { + if ((t /= d / 2) < 1) + return -c / 2 * (Mathf.Sqrt(1 - t * t) - 1) + b; + + return c / 2 * (Mathf.Sqrt(1 - (t -= 2) * t) + 1) + b; + } + + /// + /// Circular tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CircOutIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t < .5f) + return CircOut(t * 2, b, c / 2); + + return CircIn((t * 2) - 1, b + c / 2, c / 2); + } + /// + /// Circular tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CircOutIn(float t, float b, float c, float d) + { + if (t < d / 2) + return CircOut(t * 2, b, c / 2, d); + + return CircIn((t * 2) - d, b + c / 2, c / 2, d); + } + + #endregion + + #region ### Quadratic ### + /// + /// Quadratic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuadOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return -c * t * (t - 2) + b; + } + /// + /// Quadratic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuadOut(float t, float b, float c, float d) + { + return -c * (t /= d) * (t - 2) + b; + } + + /// + /// Quadratic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuadIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return c * t * t + b; + } + /// + /// Quadratic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuadIn(float t, float b, float c, float d) + { + return c * (t /= d) * t + b; + } + + /// + /// Quadratic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuadInOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if ((t /= .5f) < 1) + return -c / 2 * (Mathf.Sqrt(1 - t * t) - 1) + b; + + return c / 2 * (Mathf.Sqrt(1 - (t -= 2) * t) + 1) + b; + } + /// + /// Quadratic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuadInOut(float t, float b, float c, float d) + { + if ((t /= d / 2) < 1) + return -c / 2 * (Mathf.Sqrt(1 - t * t) - 1) + b; + + return c / 2 * (Mathf.Sqrt(1 - (t -= 2) * t) + 1) + b; + } + + /// + /// Quadratic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuadOutIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t < .5f) + return QuadOut(t * 2, b, c / 2); + + return QuadIn((t * 2) - 1, b + c / 2, c / 2); + } + + /// + /// Quadratic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuadOutIn(float t, float b, float c, float d) + { + if (t < d / 2) + return QuadOut(t * 2, b, c / 2, d); + + return QuadIn((t * 2) - d, b + c / 2, c / 2, d); + } + + #endregion + + #region ### Sinus ### + /// + /// Sinusoidal tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float SineOut(float t, float b, float c) + { + return c * Mathf.Sin(Mathf.Clamp01(t) * (Mathf.PI / 2)) + b; + } + /// + /// Sinusoidal tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float SineOut(float t, float b, float c, float d) + { + return c * Mathf.Sin(t / d * (Mathf.PI / 2)) + b; + } + + /// + /// Sinusoidal tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float SineIn(float t, float b, float c) + { + return -c * Mathf.Cos(Mathf.Clamp01(t) * (Mathf.PI / 2)) + c + b; + } + /// + /// Sinusoidal tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float SineIn(float t, float b, float c, float d) + { + return -c * Mathf.Cos(t / d * (Mathf.PI / 2)) + c + b; + } + + /// + /// Sinusoidal tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float SineInOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if ((t /= .5f) < 1) + return c / 2 * (Mathf.Sin(Mathf.PI * t / 2)) + b; + + return -c / 2 * (Mathf.Cos(Mathf.PI * --t / 2) - 2) + b; + + } + /// + /// Sinusoidal tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float SineInOut(float t, float b, float c, float d) + { + if ((t /= d / 2) < 1) + return c / 2 * (Mathf.Sin(Mathf.PI * t / 2)) + b; + + return -c / 2 * (Mathf.Cos(Mathf.PI * --t / 2) - 2) + b; + } + + /// + /// Sinusoidal tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float SineOutIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t < .5f) + return SineOut(t * 2, b, c / 2); + + return SineIn((t * 2) - 1, b + c / 2, c / 2); + } + + /// + /// Sinusoidal tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float SineOutIn(float t, float b, float c, float d) + { + if (t < d / 2) + return SineOut(t * 2, b, c / 2, d); + + return SineIn((t * 2) - d, b + c / 2, c / 2, d); + } + + #endregion + + #region ### Cubic ### + + /// + /// Cubic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CubicOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return c * ((t = t - 1) * t * t + 1) + b; + } + /// + /// Cubic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CubicOut(float t, float b, float c, float d) + { + return c * ((t = t / d - 1) * t * t + 1) + b; + } + + /// + /// Cubic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CubicIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return c * t * t * t + b; + } + /// + /// Cubic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CubicIn(float t, float b, float c, float d) + { + return c * (t /= d) * t * t + b; + } + + /// + /// Cubic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CubicInOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if ((t /= .5f) < 1) + return c / 2 * t * t * t + b; + + return c / 2 * ((t -= 2) * t * t + 2) + b; + + } + /// + /// Cubic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CubicInOut(float t, float b, float c, float d) + { + if ((t /= d / 2) < 1) + return c / 2 * t * t * t + b; + + return c / 2 * ((t -= 2) * t * t + 2) + b; + } + + /// + /// Cubic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float CubicOutIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t < .5f) + return CubicOut(t * 2, b, c / 2); + + return CubicIn((t * 2) - 1, b + c / 2, c / 2); + } + + /// + /// Cubic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float CubicOutIn(float t, float b, float c, float d) + { + if (t < d / 2) + return CubicOut(t * 2, b, c / 2, d); + + return CubicIn((t * 2) - d, b + c / 2, c / 2, d); + } + + #endregion + + #region ### Quartic ### + + /// + /// Quartic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuartOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return -c * ((t = t - 1) * t * t * t - 1) + b; + } + /// + /// Quartic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuartOut(float t, float b, float c, float d) + { + return -c * ((t = t / d - 1) * t * t * t - 1) + b; + } + + /// + /// Quartic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuartIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return c * t * t * t * t + b; + } + /// + /// Quartic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuartIn(float t, float b, float c, float d) + { + return c * (t /= d) * t * t * t + b; + } + + /// + /// Quartic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuartInOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if ((t /= .5f) < 1) + return c / 2 * t * t * t * t + b; + + return -c / 2 * ((t -= 2) * t * t * t - 2) + b; + + } + /// + /// Quartic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuartInOut(float t, float b, float c, float d) + { + if ((t /= d / 2) < 1) + return c / 2 * t * t * t * t + b; + + return -c / 2 * ((t -= 2) * t * t * t - 2) + b; + } + + /// + /// Quartic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuartOutIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t < .5f) + return QuartOut(t * 2, b, c / 2); + + return QuartIn((t * 2) - 1, b + c / 2, c / 2); + } + + /// + /// Quartic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuartOutIn(float t, float b, float c, float d) + { + if ( t < d / 2 ) + return QuartOut( t * 2, b, c / 2, d ); + + return QuartIn( ( t * 2 ) - d, b + c / 2, c / 2, d ); + } + + #endregion + + #region ### Quintic ### + + /// + /// Quintic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuintOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return c * ((t = t - 1) * t * t * t * t + 1) + b; + } + /// + /// Quintic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuintOut(float t, float b, float c, float d) + { + return c * ((t = t / d - 1) * t * t * t * t + 1) + b; + } + + /// + /// Quintic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuintIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + return c * t * t * t * t * t + b; + } + /// + /// Quintic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuintIn(float t, float b, float c, float d) + { + return c * (t /= d) * t * t * t * t + b; + } + + /// + /// Quintic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuintInOut(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if ((t /= .5f) < 1) + return c / 2 * t * t * t * t * t + b; + return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; + + } + /// + /// Quintic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuintInOut(float t, float b, float c, float d) + { + if ((t /= d / 2) < 1) + return c / 2 * t * t * t * t * t + b; + return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; + } + + /// + /// Quintic tween with t clamped to 0..1 + /// + /// Time + /// Start value + /// Delta value + /// tweened value + public static float QuintOutIn(float t, float b, float c) + { + t = Mathf.Clamp01(t); + if (t < .5f) + return QuintOut(t * 2, b, c / 2); + return QuintIn((t * 2) - 1, b + c / 2, c / 2); + } + + /// + /// Quintic tween + /// + /// Time + /// Start value + /// Delta value + /// Duration + /// tweened value + public static float QuintOutIn(float t, float b, float c, float d) + { + if (t < d / 2) + return QuintOut(t * 2, b, c / 2, d); + return QuintIn((t * 2) - d, b + c / 2, c / 2, d); + } + + #endregion + + // TODO: Add missing formulas (Elastic etc.) from here: http://wpf-animation.googlecode.com/svn/trunk/src/WPF/Animation/PennerDoubleAnimation.cs + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTEase.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTEase.cs.meta new file mode 100644 index 00000000..a8f1152e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTEase.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d57d3ecf09b87c9438cf6d0622a903fb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTObjectDump.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTObjectDump.cs new file mode 100644 index 00000000..4cda12a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTObjectDump.cs @@ -0,0 +1,120 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Text; +using System; +using System.Reflection; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.DevTools +{ + + public class DTObjectDump + { + const int INDENTSPACES = 5; + string mIndent; + StringBuilder mSB; + object mObject; + + public DTObjectDump(object o, int indent = 0) + { + mIndent = new string(' ', indent); + mSB = new StringBuilder(); + mObject = o; + +#if !NETFX_CORE + Type T = o.GetType(); + FieldInfo[] fia = T.GetAllFields(false, true); + if (fia.Length > 0) + AppendHeader("Fields"); + foreach (FieldInfo fi in fia) + AppendMember(fi); + + PropertyInfo[] pia = T.GetAllProperties(false, true); + if (pia.Length > 0) + AppendHeader("Properties"); + foreach (PropertyInfo pi in pia) + AppendMember(pi); +#endif + } + + public override string ToString() + { + return mSB.ToString(); + } + +#if !NETFX_CORE + void AppendHeader(string name) + { + mSB.AppendLine(mIndent + "---===| " + name + " |===---\n"); + } + + void AppendMember(MemberInfo info) + { + Type type; + string typeName; + object value; + + FieldInfo fi = info as FieldInfo; + if (fi != null) + { + type = fi.FieldType; + typeName = type.Name; + value = fi.GetValue(mObject); + } + else + { + PropertyInfo pi = info as PropertyInfo; + type = pi.PropertyType; + typeName = type.Name; + value = pi.GetValue(mObject, null); + } + + if (value != null) + { + if (typeof(IEnumerable).IsAssignableFrom(type)) + { + string tmp = mIndent; + int count = 0; + IEnumerable ie = value as IEnumerable; + if (ie != null) + { + if (type.GetEnumerableType().BaseType == typeof(ValueType)) + { + foreach (object e in ie) + tmp = string.Concat(tmp, string.Format("{0}: {1} ", (count++).ToString(), e.ToString())); + } + else + { + if (typeof(IList).IsAssignableFrom(type)) + typeName = "IList<" + type.GetEnumerableType() + ">"; + tmp += "\n"; + foreach (object e in ie) + tmp = string.Concat(tmp, string.Format("{0}: {1} ", (count++).ToString(), new DTObjectDump(e, mIndent.Length + INDENTSPACES).ToString())); + } + } + mSB.Append(mIndent); + mSB.AppendFormat("({0}) {1}[{2}] = ", typeName, info.Name, count); + mSB.AppendLine(tmp); + } + else + { + mSB.Append(mIndent); + mSB.AppendFormat("({0}) {1} = ", typeName, info.Name); + mSB.AppendLine(mIndent + value.ToString()); + } + } + } + +#endif + + } + +} + diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTObjectDump.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTObjectDump.cs.meta new file mode 100644 index 00000000..4e5dd38a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTObjectDump.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64b16d693c41e7a44979cd06b6d9e47b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTUtility.cs new file mode 100644 index 00000000..08e59ea3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTUtility.cs @@ -0,0 +1,1000 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using System; +using System.Text; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine.Events; +using Object = UnityEngine.Object; +#if UNITY_EDITOR +using UnityEditor; +using System.Linq; +#endif + +namespace FluffyUnderware.DevTools +{ + public static class DTUtility + { + /// + /// The base Url for DT components' documentation + /// + public const string HelpUrlBase = "https://curvyeditor.com/doclink/"; + +#if UNITY_EDITOR + static MethodInfo mGetBuiltinExtraResourcesMethod; +#endif + + public static Material GetDefaultMaterial() + { +#if UNITY_EDITOR + if (mGetBuiltinExtraResourcesMethod == null) + { + BindingFlags bfs = BindingFlags.NonPublic | BindingFlags.Static; + mGetBuiltinExtraResourcesMethod = typeof(UnityEditor.EditorGUIUtility).GetMethod("GetBuiltinExtraResource", bfs); + } + + Material result; + if (mGetBuiltinExtraResourcesMethod == null) + { + result = null; + Debug.LogError("Couldn't find method GetBuiltinExtraResource in type UnityEditor.EditorGUIUtility"); + } + else + result = (Material)mGetBuiltinExtraResourcesMethod.Invoke(null, new object[] { typeof(Material), "Default-Diffuse.mat" }); + + return result; +#else + return null; +#endif + } + + + public static bool IsEditorStateChange + { + get + { +#if UNITY_EDITOR + if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode && !UnityEditor.EditorApplication.isPlaying) + return true; + else +#endif + return false; + } + } + + +#if UNITY_EDITOR + private const string INDENT_STRING = " "; + public static string FormatJson(string str) + { + int indent = 0; + bool quoted = false; + StringBuilder sb = new System.Text.StringBuilder(); + for (int i = 0; i < str.Length; i++) + { + char ch = str[i]; + switch (ch) + { + case '{': + case '[': + sb.Append(ch); + if (!quoted) + { + sb.AppendLine(); + Enumerable.Range(0, ++indent).ForEach(item => sb.Append(INDENT_STRING)); + } + break; + case '}': + case ']': + if (!quoted) + { + sb.AppendLine(); + Enumerable.Range(0, --indent).ForEach(item => sb.Append(INDENT_STRING)); + } + sb.Append(ch); + break; + case '"': + sb.Append(ch); + bool escaped = false; + int index = i; + while (index > 0 && str[--index] == '\\') + escaped = !escaped; + if (!escaped) + quoted = !quoted; + break; + case ',': + sb.Append(ch); + if (!quoted) + { + sb.AppendLine(); + Enumerable.Range(0, indent).ForEach(item => sb.Append(INDENT_STRING)); + } + break; + case ':': + sb.Append(ch); + if (!quoted) + sb.Append(" "); + break; + default: + sb.Append(ch); + break; + } + } + return sb.ToString(); + } +#endif + + /// + /// Much like HandleUtility.GetHandleSize(), but works for gizmos + /// + /// handle position in world space + public static float GetHandleSize(Vector3 position) + { + Camera camera = Camera.current; + + if (camera) + { + Transform cameraTransform = camera.transform; + + Vector3 localDirection; + localDirection.x = 0; + localDirection.y = 0; + localDirection.z = 1; + Vector3 cameraZDirection = cameraTransform.TransformDirection(localDirection); + + localDirection.x = 1; + localDirection.y = 0; + localDirection.z = 0; + Vector3 cameraXDirection = cameraTransform.TransformDirection(localDirection); + + + return GetHandleSize(Gizmos.matrix.MultiplyPoint3x4(position), camera, camera.pixelWidth * 0.5f, camera.pixelHeight * 0.5f, cameraTransform.position, cameraZDirection, cameraXDirection); + } + + return 20f; + } + + /// + /// Much like HandleUtility.GetHandleSize(), but works for gizmos + /// + /// handle position in world space + /// the camera through which the object is displayed + /// camera.pixelWidth * 0.5f + /// camera.pixelHeight * 0.5f + /// camera.transform.position + /// camera.transform.forward + /// camera.transform.right + public static float GetHandleSize(Vector3 position, Camera camera, float cameraCenterWidth, float cameraCenterHeight, Vector3 cameraPosition, Vector3 cameraZDirection, Vector3 cameraXDirection) + { + //inlined version of Vector3.Dot(positionMinusCameraPosition, cameraZDirection) + float z = (position.x - cameraPosition.x) * cameraZDirection.x + + (position.y - cameraPosition.y) * cameraZDirection.y + + (position.z - cameraPosition.z) * cameraZDirection.z; + + //OPTIM + //If you reaaaally need those extra milliseconds, use this + //return z * 0.15f; + //This will give a good enough result. The problem with this method is that the handle size is unsatisfying when transitioning between Perspective and Orthogonal view, and when the scene view window is too narrow to the point that it changes the FOV of the scene view. + + Vector3 b; + { + Vector3 camPosPlusDirB; + camPosPlusDirB.x = cameraPosition.x + cameraZDirection.x * z + cameraXDirection.x; + camPosPlusDirB.y = cameraPosition.y + cameraZDirection.y * z + cameraXDirection.y; + camPosPlusDirB.z = cameraPosition.z + cameraZDirection.z * z + cameraXDirection.z; + b = camera.WorldToScreenPoint(camPosPlusDirB, Camera.MonoOrStereoscopicEye.Mono); + } + + float aMinusBX = cameraCenterWidth - b.x; + float aMinusBY = cameraCenterHeight - b.y; + return 80f / (float)Math.Sqrt(aMinusBX * aMinusBX + + aMinusBY * aMinusBY); + } + + public static void SetPlayerPrefs(string key, T value) + { + Type tt = typeof(T); +#if NETFX_CORE + if (tt.GetTypeInfo().IsEnum) +#else + if (tt.IsEnum) +#endif + { + PlayerPrefs.SetInt(key, Convert.ToInt32(Enum.Parse(typeof(T), value.ToString()) as Enum)); + } + else if (tt.IsArray) + { + throw new System.NotImplementedException(); + } + else if (tt.Matches(typeof(int), typeof(Int32))) + PlayerPrefs.SetInt(key, (value as int?).Value); + else if (tt == typeof(string)) + PlayerPrefs.SetString(key, (value as string)); + else if (tt == typeof(float)) + PlayerPrefs.SetFloat(key, (value as float?).Value); + else if (tt == typeof(bool)) + PlayerPrefs.SetInt(key, ((value as bool?).Value == true) ? 1 : 0); + else if (tt == typeof(Color)) + PlayerPrefs.SetString(key, (value as Color?).Value.ToHtml()); + else + Debug.LogError("[DevTools.SetEditorPrefs] Unsupported datatype: " + tt.Name); + } + + public static T GetPlayerPrefs(string key, T defaultValue) + { + if (PlayerPrefs.HasKey(key)) + { + Type tt = typeof(T); + try + { +#if NETFX_CORE + if (tt.GetTypeInfo().IsEnum || tt.Matches(typeof(int), typeof(Int32))) +#else + if (tt.IsEnum || tt.Matches(typeof(int), typeof(Int32))) +#endif + { + return (T)(object)PlayerPrefs.GetInt(key, (int)(object)defaultValue); + } + else if (tt.IsArray) + { + throw new System.NotImplementedException(); + } + else if (tt == typeof(string)) + return (T)(object)PlayerPrefs.GetString(key, defaultValue.ToString()); + else if (tt == typeof(float)) + return (T)(object)PlayerPrefs.GetFloat(key, (float)(object)defaultValue); + else if (tt == typeof(bool)) + return (T)(object)(PlayerPrefs.GetInt(key, ((bool)(object)defaultValue == true) ? 1 : 0) == 1); + else if (tt == typeof(Color)) + return (T)(object)PlayerPrefs.GetString(key, ((Color)(object)defaultValue).ToHtml()).ColorFromHtml(); + else + Debug.LogError("[DevTools.SetEditorPrefs] Unsupported datatype: " + tt.Name); + } + catch (Exception e) + { + Debug.LogException(e); + return defaultValue; + } + } + + + return defaultValue; + } + + public static float RandomSign() + { + return UnityEngine.Random.Range(0, 2) * 2 - 1; + } + + public static string GetHelpUrl(object forClass) + { + return (forClass == null) ? string.Empty : GetHelpUrl(forClass.GetType()); + } + + public static string GetHelpUrl(Type classType) + { + if (classType != null) + { +#if NETFX_CORE + object[] attribs = (object[])classType.GetTypeInfo().GetCustomAttributes(typeof(HelpURLAttribute), true); +#else + object[] attribs = classType.GetCustomAttributes(typeof(HelpURLAttribute), true); +#endif + if (attribs.Length > 0) + return (((HelpURLAttribute)attribs[0]).URL); + } + return string.Empty; + } + + public static Vector3 GetCenterPosition(Vector3 fallback, params Vector3[] vectors) + { + if (vectors.Length == 0) + return fallback; + Vector3 v = vectors[0]; + for (int i = 1; i < vectors.Length; i++) + v += vectors[i]; + return (v / vectors.Length); + } + + public static T CreateGameObject(Transform parent, string name) where T : MonoBehaviour + { + GameObject go = new GameObject(name); + go.transform.parent = parent; + go.transform.localPosition = Vector3.zero; + go.transform.localRotation = Quaternion.identity; + T cmp = go.AddComponent(); + return cmp; + } + +#if UNITY_EDITOR + /// + /// Returns true if the object's prefab instance status allows for deletion + /// + /// The input object to test + /// Is set to empty string if method returns true, otherwise it is set to a message error, similar to the one display by Unity, explaining the issue. + /// + public static bool DoesPrefabStatusAllowDeletion(this UnityEngine.Object @object, out string errorMessage) + { + PrefabInstanceStatus prefabInstanceStatus = default; + bool isDeletionAllowed = @object is GameObject == false || DoesPrefabStatusAllowDeletion((GameObject)@object, out prefabInstanceStatus); + if (isDeletionAllowed == false) + { + errorMessage = $"You initiated an operation that leads to the deletion of the Game Object '{@object.name}', which is part of a Prefab instance.\n\n"; + if (prefabInstanceStatus == PrefabInstanceStatus.MissingAsset) + errorMessage += "The Prefab asset is missing. You have to unpack the Prefab instance to be able to execute this operation"; + else + errorMessage += $"Children of a Prefab instance cannot be deleted or moved, and components cannot be reordered. \n\nYou have to open the Prefab in Prefab Mode to restructure the Prefab Asset itself, or unpack the Prefab instance to remove its Prefab connection."; + } + else + { + errorMessage = string.Empty; + } + + return isDeletionAllowed; + } + + /// + /// Returns true if the object's prefab instance status allows for deletion + /// + /// The input object to test + /// The prefab instance status of the gameObject + public static bool DoesPrefabStatusAllowDeletion(this GameObject gameObject, out PrefabInstanceStatus prefabInstanceStatus) + { + prefabInstanceStatus = PrefabUtility.GetPrefabInstanceStatus(gameObject); + return prefabInstanceStatus != PrefabInstanceStatus.Connected || PrefabUtility.IsOutermostPrefabInstanceRoot(gameObject); + } +#endif + + /// + /// Returns whether the code is executed in edit mode or not + /// + public static bool IsInEditMode + { + get + { + bool result; +#if UNITY_EDITOR + result = !Application.isPlaying; +#else + result = false; +#endif + return result; + } + } + } + + public static class DTTime + { + static float _EditorDeltaTime; + static float _EditorLastTime; + + public static double TimeSinceStartup + { + get + { +#if UNITY_EDITOR + if (!Application.isPlaying) + return UnityEditor.EditorApplication.timeSinceStartup; +#endif + return Time.timeSinceLevelLoad; + } + } + + [Obsolete("Seems to me that this is not working properly. Probably because InitializeEditorTime and UpdateEditorTime are never called. Fix this before using it")] + public static float deltaTime + { + get + { + return (Application.isPlaying) ? Time.deltaTime : _EditorDeltaTime; + } + } + + public static void InitializeEditorTime() + { + _EditorLastTime = Time.realtimeSinceStartup; + _EditorDeltaTime = 0; + } + + public static void UpdateEditorTime() + { + float cur = Time.realtimeSinceStartup; + float timeDelta = (cur - _EditorLastTime); + + _EditorDeltaTime = timeDelta; + _EditorLastTime = cur; + + /* + if (frameDelta > 20 || timeDelta > 1) + { + _EditorLastFrame = Time.frameCount; + _EditorLastTime = cur; + _EditorDeltaTime = 0; + } + else if (frameDelta > 0) + { + _EditorDeltaTime = timeDelta / frameDelta; + _EditorLastTime = cur; + _EditorLastFrame = Time.frameCount; + }*/ + } + + + } + + public class TimeMeasure : Ring + { + public System.Diagnostics.Stopwatch mWatch = new System.Diagnostics.Stopwatch(); + + public TimeMeasure(int size) : base(size) + { } + + public void Start() + { + mWatch.Start(); + } + + public void Stop() + { + mWatch.Stop(); + Add(mWatch.ElapsedTicks); + mWatch.Reset(); + } + + public void Pause() + { + mWatch.Stop(); + } + + public double LastTicks + { + get + { + return this[this.Count - 1]; + } + } + + public double LastMS + { + get + { + return LastTicks / (double)System.TimeSpan.TicksPerMillisecond; + } + } + + public double AverageMS + { + get + { + long d = 0; + for (int i = 0; i < this.Count; i++) + d += this[i]; + + return DTMath.FixNaN((d / (double)System.TimeSpan.TicksPerMillisecond) / Count); + } + } + + public double MinimumMS + { + get + { + long d = long.MaxValue; + for (int i = 0; i < this.Count; i++) + d = System.Math.Min(d, this[i]); + + return DTMath.FixNaN(d / (double)System.TimeSpan.TicksPerMillisecond); + } + } + + public double MaximumMS + { + get + { + long d = long.MinValue; + for (int i = 0; i < this.Count; i++) + d = System.Math.Max(d, this[i]); + + return DTMath.FixNaN(d / (double)System.TimeSpan.TicksPerMillisecond); + } + } + + public double AverageTicks + { + get + { + long d = 0; + for (int i = 0; i < this.Count; i++) + d += this[i]; + return d / (double)Count; + } + } + + public double MinimumTicks + { + get + { + long d = long.MaxValue; + for (int i = 0; i < this.Count; i++) + d = System.Math.Min(d, this[i]); + return d; + } + } + + public double MaximumTicks + { + get + { + long d = 0; + for (int i = 0; i < this.Count; i++) + d = System.Math.Max(d, this[i]); + return d; + } + } + } + + public static class DTMath + { + public static Vector3 ParallelTransportFrame(Vector3 up, Vector3 tan0, Vector3 tan1) + { + Vector3 A = Vector3.Cross(tan0, tan1); + if (tan0 == -tan1) //Result is undefined in this case + { + Debug.LogWarning("[DevTools] ParallelTransportFrame's result is undefined for cases where tan0 == -tan1"); + } + float a = Mathf.Atan2(A.magnitude, Vector3.Dot(tan0, tan1)); + return Quaternion.AngleAxis(Mathf.Rad2Deg * a, A) * up; + } + + public static Vector3 LeftTan(ref Vector3 tan, ref Vector3 up) + { + return Vector3.Cross(tan, up); + } + + public static Vector3 RightTan(ref Vector3 tan, ref Vector3 up) + { + return Vector3.Cross(up, tan); + } + + /// + /// Much like Mathf.Repeat(), but DTMath.Repeat(v,v) returns v instead of 0 + /// + public static float Repeat(float t, float length) + { + return (t == length) ? t : t - Mathf.Floor(t / length) * length; + } + + public static double FixNaN(double v) + { + if (double.IsNaN(v)) + v = 0; + return v; + } + + public static float FixNaN(float v) + { + if (float.IsNaN(v)) + v = 0; + return v; + } + + public static Vector2 FixNaN(Vector2 v) + { + if (float.IsNaN(v.x)) + { + v.x = 0; + } + if (float.IsNaN(v.y)) + { + v.y = 0; + } + return v; + } + + /// + /// Fixes NaN for Vector3 + /// + /// a Vector3 + /// the "cleaned up" vector + public static Vector3 FixNaN(Vector3 v) + { + if (float.IsNaN(v.x)) + { + v.x = 0; + } + if (float.IsNaN(v.y)) + { + v.y = 0; + } + if (float.IsNaN(v.z)) + { + v.z = 0; + } + return v; + } + + /// + /// Maps a value from a source range to a destination range + /// + /// min destination value + /// max destination value + /// current source value + /// min source value + /// max source value + /// + public static float MapValue(float min, float max, float value, float vMin = -1, float vMax = 1) + { + return min + (max - min) * (value - vMin) / (vMax - vMin); + } + + public static float SnapPrecision(float value, int decimals) + { + return (decimals >= 0) ? (float)System.Math.Round(value, decimals) : value; + } + + public static Vector2 SnapPrecision(Vector2 value, int decimals) + { + if (decimals < 0) + return value; + + value.Set(SnapPrecision(value.x, decimals), SnapPrecision(value.y, decimals)); + return value; + } + + public static Vector3 SnapPrecision(Vector3 value, int decimals) + { + if (decimals < 0) + return value; + value.Set(SnapPrecision(value.x, decimals), SnapPrecision(value.y, decimals), SnapPrecision(value.z, decimals)); + return value; + } + + /// + /// Gets the squared distance to the nearest point on a line + /// + /// Line P1 + /// Line P2 + /// a Point + /// fragment on the line (0..1) of the nearest point + /// sqrMagnitude + public static float LinePointDistanceSqr(Vector3 l1, Vector3 l2, Vector3 p, out float frag) + { + Vector3 v = l2; + v.x -= l1.x; + v.y -= l1.y; + v.z -= l1.z; + + Vector3 w = p; + w.x -= l1.x; + w.y -= l1.y; + w.z -= l1.z; + + float c1 = Vector3.Dot(w, v); + if (c1 <= 0) + { + frag = 0; + return w.sqrMagnitude; + } + float c2 = Vector3.Dot(v, v); + if (c2 <= c1) + { + frag = 1; + + Vector3 pMinusl2 = p; + pMinusl2.x -= l2.x; + pMinusl2.y -= l2.y; + pMinusl2.z -= l2.z; + + return pMinusl2.sqrMagnitude; + } + frag = c1 / c2; + + Vector3 fragMulv = v; + fragMulv.x *= frag; + fragMulv.y *= frag; + fragMulv.z *= frag; + + Vector3 pb = l1; + pb.x += fragMulv.x; + pb.y += fragMulv.y; + pb.z += fragMulv.z; + + Vector3 pMinuspb = p; + pMinuspb.x -= pb.x; + pMinuspb.y -= pb.y; + pMinuspb.z -= pb.z; + + return pMinuspb.sqrMagnitude; + } + + /// + /// Collide a ray (point + direction) against a line segment and return the hit point + /// + /// Ray position + /// Ray direction + /// Line P1 + /// Line P2 + /// Collision Point + /// fragment on the line (0..1) of the collision point + /// true if collision occurs + public static bool RayLineSegmentIntersection(Vector2 r0, Vector2 dir, Vector2 l1, Vector2 l2, out Vector2 hit, out float frag) + { + Vector2 s2 = l2 - l1; + float t; + frag = (-dir.y * (r0.x - l1.x) + dir.x * (r0.y - l1.y)) / (-s2.x * dir.y + dir.x * s2.y); + t = (s2.x * (r0.y - l1.y) - s2.y * (r0.x - l1.x)) / (-s2.x * dir.y + dir.x * s2.y); + + if (frag >= 0 && frag <= 1 && t > 0) + { + hit = new Vector2(r0.x + (t * dir.x), r0.y + (t * dir.y)); + return true; + } + hit = Vector2.zero; + return false; + } + + /// + /// Calculates the intersection line segment between 2 lines (not segments). + /// + /// false if no solution can be found + public static bool ShortestIntersectionLine(Vector3 line1A, Vector3 line1B, + Vector3 line2A, Vector3 line2B, out Vector3 resultSegmentA, out Vector3 resultSegmentB) + { + // Algorithm is ported from the C algorithm of + // Paul Bourke at http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline3d/ + resultSegmentA = Vector3.zero; + resultSegmentB = Vector3.zero; + + Vector3 p1 = line1A; + Vector3 p2 = line1B; + Vector3 p3 = line2A; + Vector3 p4 = line2B; + Vector3 p13 = p1 - p3; + Vector3 p43 = p4 - p3; + + if (p43.sqrMagnitude < Mathf.Epsilon) + { + return false; + } + Vector3 p21 = p2 - p1; + if (p21.sqrMagnitude < Mathf.Epsilon) + { + return false; + } + + double d1343 = p13.x * (double)p43.x + (double)p13.y * p43.y + (double)p13.z * p43.z; + double d4321 = p43.x * (double)p21.x + (double)p43.y * p21.y + (double)p43.z * p21.z; + double d1321 = p13.x * (double)p21.x + (double)p13.y * p21.y + (double)p13.z * p21.z; + double d4343 = p43.x * (double)p43.x + (double)p43.y * p43.y + (double)p43.z * p43.z; + double d2121 = p21.x * (double)p21.x + (double)p21.y * p21.y + (double)p21.z * p21.z; + + double denom = d2121 * d4343 - d4321 * d4321; + if (System.Math.Abs(denom) < double.Epsilon) + { + return false; + } + double numer = d1343 * d4321 - d1321 * d4343; + + double mua = numer / denom; + double mub = (d1343 + d4321 * (mua)) / d4343; + resultSegmentA = new Vector3((float)(p1.x + mua * p21.x), (float)(p1.y + mua * p21.y), (float)(p1.z + mua * p21.z)); + resultSegmentB = new Vector3((float)(p3.x + mub * p43.x), (float)(p3.y + mub * p43.y), (float)(p3.z + mub * p43.z)); + return true; + } + + /// + /// Calculates the intersection between two line segments + /// + /// false if no solution can be found + public static bool LineLineIntersection(Vector3 line1A, Vector3 line1B, Vector3 line2A, Vector3 line2B, out Vector3 hitPoint) + { + Vector3 resB; + if (ShortestIntersectionLine(line1A, line1B, line2A, line2B, out hitPoint, out resB)) + { + if ((resB - hitPoint).sqrMagnitude <= Mathf.Epsilon * Mathf.Epsilon) + return true; + } + return false; + } + + public static bool LineLineIntersect(Vector2 line1A, Vector2 line1B, Vector2 line2A, Vector2 line2B, out Vector2 hitPoint, bool segmentOnly = true) + { + hitPoint = Vector2.zero; + // Denominator for ua and ub are the same, so store this calculation + double d = + (line2B.y - line2A.y) * (line1B.x - line1A.x) + - + (line2B.x - line2A.x) * (line1B.y - line1A.y); + + //n_a and n_b are calculated as seperate values for readability + double n_a = + (line2B.x - line2A.x) * (line1A.y - line2A.y) + - + (line2B.y - line2A.y) * (line1A.x - line2A.x); + + double n_b = + (line1B.x - line1A.x) * (line1A.y - line2A.y) + - + (line1B.y - line1A.y) * (line1A.x - line2A.x); + + // Make sure there is not a division by zero - this also indicates that + // the lines are parallel. + // If n_a and n_b were both equal to zero the lines would be on top of each + // other (coincidental). This check is not done because it is not + // necessary for this implementation (the parallel check accounts for this). + if (d == 0) + return false; + + // Calculate the intermediate fractional point that the lines potentially intersect. + double ua = n_a / d; + double ub = n_b / d; + + // The fractional point will be between 0 and 1 inclusive if the lines + // intersect. If the fractional calculation is larger than 1 or smaller + // than 0 the lines would need to be longer to intersect. + if (!segmentOnly || (ua >= 0d && ua <= 1d && ub >= 0d && ub <= 1d)) + { + hitPoint.Set((float)(line1A.x + (ua * (line1B.x - line1A.x))), (float)(line1A.y + (ua * (line1B.y - line1A.y)))); + return true; + } + return false; + } + + public static bool PointInsideTriangle(Vector3 A, Vector3 B, Vector3 C, Vector3 p, out float ac, out float ab, bool edgesAllowed) + { + Vector3 v0 = C - A; + Vector3 v1 = B - A; + Vector3 v2 = p - A; + float dot00 = Vector3.Dot(v0, v0); + float dot01 = Vector3.Dot(v0, v1); + float dot02 = Vector3.Dot(v0, v2); + float dot11 = Vector3.Dot(v1, v1); + float dot12 = Vector3.Dot(v1, v2); + float invDenom = 1 / (dot00 * dot11 - dot01 * dot01); + ac = (dot11 * dot02 - dot01 * dot12) * invDenom; + ab = (dot00 * dot12 - dot01 * dot02) * invDenom; + if (edgesAllowed) + return ac >= 0 && ab >= 0 && (ac + ab < 1); + else + return ac > 0 && ab > 0 && (ac + ab < 1); + } + } + + /// + /// Extended UnityEvent + /// + public class UnityEventEx : UnityEvent + { + object mCallerList; + MethodInfo mCallsCount; + int mCount = -1; + + /// + /// Removes and adds a listener, ensuring it's only bound once + /// + /// + public void AddListenerOnce(UnityAction call) + { + base.RemoveListener(call); + base.AddListener(call); + CheckForListeners(); + } + + /// + /// Whether the event has any listeners at all + /// + /// + public bool HasListeners() + { + if (mCallsCount == null) + { + FieldInfo fi = typeof(UnityEventBase).FieldByName("m_Calls", false, true); + if (fi != null) + { + mCallerList = fi.GetValue(this); + if (mCallerList != null) + mCallsCount = mCallerList.GetType().PropertyByName("Count").GetGetMethod(); + } + } + if (mCount == -1) + { + if (mCallerList != null && mCallsCount != null) + mCount = (int)mCallsCount.Invoke(mCallerList, null); //.GetValue(mCallerList, null); + mCount += GetPersistentEventCount(); + } + return (mCount > 0); + } + + /// + /// Force HasListeners() to recheck for dynamically bound events + /// + public void CheckForListeners() + { + mCount = -1; + } + } + + /// + /// Same functionality as various UnityEngine.Debug methods + /// + /// Used to distinct between temporarly debug output and regular package output + public static class DTLog + { + public static void Log(object message) + { + Debug.Log(message); + } + + public static void Log(object message, UnityEngine.Object context) + { + Debug.Log(message, context); + } + + public static void LogError(object message) + { + Debug.LogError(message); + } + + public static void LogError(object message, UnityEngine.Object context) + { + Debug.LogError(message, context); + } + + public static void LogErrorFormat(string format, params object[] args) + { + Debug.LogErrorFormat(format, args); + } + + public static void LogErrorFormat(UnityEngine.Object context, string format, params object[] args) + { + Debug.LogErrorFormat(context, format, args); + } + + public static void LogException(Exception exception) + { + Debug.LogException(exception); + } + + public static void LogException(Exception exception, UnityEngine.Object context) + { + Debug.LogException(exception, context); + } + + public static void LogFormat(string format, params object[] args) + { + Debug.LogFormat(format, args); + } + + public static void LogFormat(UnityEngine.Object context, string format, params object[] args) + { + Debug.LogFormat(context, format, args); + } + + public static void LogWarning(object message) + { + Debug.LogWarning(message); + } + + public static void LogWarning(object message, UnityEngine.Object context) + { + Debug.LogWarning(message, context); + } + + public static void LogWarningFormat(string format, params object[] args) + { + Debug.LogWarningFormat(format, args); + } + + public static void LogWarningFormat(UnityEngine.Object context, string format, params object[] args) + { + Debug.LogWarningFormat(context, format, args); + } + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTUtility.cs.meta new file mode 100644 index 00000000..9624524f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/DTUtility.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3a715a2c19f08a4ba8b136add10408f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Data.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Data.cs new file mode 100644 index 00000000..4e2fc1d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Data.cs @@ -0,0 +1,814 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using Random = UnityEngine.Random; + +namespace FluffyUnderware.DevTools +{ + [System.Serializable] + public struct FloatRegion : IEquatable + { + public float From; + public float To; + public bool SimpleValue; + + public FloatRegion(float value) + { + From = value; + To = value; + SimpleValue = true; + } + + public FloatRegion(float A, float B) + { + this.From = A; + this.To = B; + SimpleValue = false; + } + + public static FloatRegion ZeroOne + { + get { return new FloatRegion(0, 1); } + } + + public void MakePositive() + { + if (To < From) + { + float temp = To; + To = From; + From = temp; + } + } + + public void Clamp(float low, float high) + { + Low = Mathf.Clamp(Low, low, high); + High = Mathf.Clamp(High, low, high); + } + + public bool Positive + { + get { return From <= To; } + } + + public float Low + { + get { return (Positive) ? From : To; } + set + { + if (Positive) + From = value; + else + To = value; + } + } + + public float High + { + get { return (Positive) ? To : From; } + set + { + if (Positive) + To = value; + else + From = value; + } + } + + public float Random + { + get + { + return UnityEngine.Random.Range(From, To); + } + } + + /// + /// Gets the next value in the range + /// Depending on the value of , this call will or will not make the Random generator's seed progress + /// + public float Next + { + get + { + if (SimpleValue) + return From; + else + return Random; + } + } + + public float Length + { + get + { + return To - From; + } + } + + public float LengthPositive + { + get { return (Positive) ? To - From : From - To; } + } + + public override string ToString() + { + return string.Format("({0:F2}-{1:F2})", From, To); + } + + public override int GetHashCode() + { + return From.GetHashCode() ^ To.GetHashCode() << 2; + } + + public bool Equals(FloatRegion other) + { + return From.Equals(other.From) && To.Equals(other.To); + } + + public override bool Equals(object other) + { + if (!(other is FloatRegion)) + { + return false; + } + FloatRegion r = (FloatRegion)other; + return From.Equals(r.From) && To.Equals(r.To); + } + + public static FloatRegion operator +(FloatRegion a, FloatRegion b) + { + return new FloatRegion(a.From + b.From, a.To + b.To); + } + + public static FloatRegion operator -(FloatRegion a, FloatRegion b) + { + return new FloatRegion(a.From - b.From, a.To - b.To); + } + + public static FloatRegion operator -(FloatRegion a) + { + return new FloatRegion(-a.From, -a.To); + } + + public static FloatRegion operator *(FloatRegion a, float v) + { + return new FloatRegion(a.From * v, a.To * v); + } + + public static FloatRegion operator *(float v, FloatRegion a) + { + return new FloatRegion(a.From * v, a.To * v); + } + + public static FloatRegion operator /(FloatRegion a, float v) + { + return new FloatRegion(a.From / v, a.To / v); + } + + public static bool operator ==(FloatRegion lhs, FloatRegion rhs) + { + return lhs.SimpleValue == rhs.SimpleValue && Mathf.Approximately(lhs.From, rhs.From) && Mathf.Approximately(lhs.To, rhs.To); + } + public static bool operator !=(FloatRegion lhs, FloatRegion rhs) + { + return lhs.SimpleValue != rhs.SimpleValue || !Mathf.Approximately(lhs.From, rhs.From) || !Mathf.Approximately(lhs.To, rhs.To); + } + } + + [System.Serializable] + public struct IntRegion : IEquatable + { + public int From; + public int To; + public bool SimpleValue; + + + public IntRegion(int value) + { + From = value; + To = value; + SimpleValue = true; + + } + + public IntRegion(int A, int B) + { + this.From = A; + this.To = B; + SimpleValue = false; + + } + + public static IntRegion ZeroOne + { + get { return new IntRegion(0, 1); } + } + + public void MakePositive() + { + if (To < From) + { + int temp = To; + To = From; + From = temp; + } + } + + public void Clamp(int low, int high) + { + Low = Mathf.Clamp(Low, low, high); + High = Mathf.Clamp(High, low, high); + } + + public bool Positive + { + get { return From <= To; } + } + + public int Low + { + get { return (Positive) ? From : To; } + set + { + if (Positive) + From = value; + else + To = value; + } + } + + public int High + { + get { return (Positive) ? To : From; } + set + { + if (Positive) + To = value; + else + From = value; + } + } + + public int Random + { + get + { + return UnityEngine.Random.Range(From, To); + } + } + + public int Length + { + get + { + return To - From; + } + } + + public int LengthPositive + { + get { return (Positive) ? To - From : From - To; } + } + + public override string ToString() + { + return string.Format("({0}-{1})", From, To); + } + + public override int GetHashCode() + { + return From.GetHashCode() ^ To.GetHashCode() << 2; + } + + public bool Equals(IntRegion other) + { + return From.Equals(other.From) && To.Equals(other.To); + } + + public override bool Equals(object other) + { + if (!(other is IntRegion)) + { + return false; + } + IntRegion r = (IntRegion)other; + return From.Equals(r.From) && To.Equals(r.To); + } + + public static IntRegion operator +(IntRegion a, IntRegion b) + { + return new IntRegion(a.From + b.From, a.To + b.To); + } + + public static IntRegion operator -(IntRegion a, IntRegion b) + { + return new IntRegion(a.From - b.From, a.To - b.To); + } + + public static IntRegion operator -(IntRegion a) + { + return new IntRegion(-a.From, -a.To); + } + + public static IntRegion operator *(IntRegion a, int v) + { + return new IntRegion(a.From * v, a.To * v); + } + + public static IntRegion operator *(int v, IntRegion a) + { + return new IntRegion(a.From * v, a.To * v); + } + + public static IntRegion operator /(IntRegion a, int v) + { + return new IntRegion(a.From / v, a.To / v); + } + + public static bool operator ==(IntRegion lhs, IntRegion rhs) + { + return lhs.From == rhs.From && lhs.To == rhs.To && lhs.SimpleValue != rhs.SimpleValue; + } + public static bool operator !=(IntRegion lhs, IntRegion rhs) + { + return lhs.From != rhs.From || lhs.To != rhs.To || lhs.SimpleValue != rhs.SimpleValue; + } + } + + /// + /// Simple but effective ShuffleBag implementation + /// + public class WeightedRandom + { + List mData; + int mCurrentPosition = -1; + T mCurrentItem; + + public int Seed { get; set; } + + public bool RandomizeSeed { get; set; } + + private int Capacity { get { return mData.Capacity; } } + public int Size { get { return mData.Count; } } + + public WeightedRandom(int initCapacity = 0) + { + mData = new List(initCapacity); + } + + public WeightedRandom(int initCapacity, int seed):this(initCapacity) + { + Seed = seed; + } + + /// + /// Adds items to the bag + /// + /// the item + /// number of times this item should be added + public void Add(T item, int amount) + { + for (int i = 0; i < amount; i++) + mData.Add(item); + mCurrentPosition = Size - 1; + } + + /// + /// Gets a random item from the bag + /// + /// an item + public T Next() + { + if (mCurrentPosition < 1) + { + mCurrentPosition = Size - 1; + mCurrentItem = mData[0]; + return mCurrentItem; + } + Random.State s = Random.state; + if (RandomizeSeed) + Seed = Random.Range(0, int.MaxValue); + Random.InitState(Seed); + int idx = Random.Range(0, mCurrentPosition); + Random.state = s; + + mCurrentItem = mData[idx]; + mData[idx] = mData[mCurrentPosition]; + mData[mCurrentPosition] = mCurrentItem; + mCurrentPosition--; + return mCurrentItem; + } + + /// + /// Refill the bag + /// + public void Reset() + { + mCurrentPosition = Size - 1; + } + + /// + /// Clear the bag + /// + public void Clear() + { + mData.Clear(); + mCurrentPosition = -1; + } + + } + + public class Ring : IList + { + List mList; + public int Size { get; private set; } + + int mIndex; + + public Ring(int size) + { + mList = new List(size); + Size = size; + } + + public void Add(T item) + { + if (mList.Count == Size) + { + mList[mIndex++] = item; + if (mIndex == mList.Count) + mIndex = 0; + } + else + mList.Add(item); + } + + public void Clear() + { + mList.Clear(); + mIndex = 0; + } + + + public int IndexOf(T item) + { + return mList.IndexOf(item); + } + + public void Insert(int index, T item) + { + throw new System.NotSupportedException(); + } + + public void RemoveAt(int index) + { + throw new System.NotSupportedException(); + } + + public T this[int index] + { + get + { + return mList[index]; + } + set + { + mList[index] = value; + } + } + + public IEnumerator GetEnumerator() + { + return mList.GetEnumerator(); + } + + + public bool Contains(T item) + { + return mList.Contains(item); + } + + public void CopyTo(T[] array, int arrayIndex) + { + mList.CopyTo(array, arrayIndex); + } + + public int Count + { + get { return mList.Count; } + } + + public bool IsReadOnly + { + get { throw new System.NotSupportedException(); } + } + + public bool Remove(T item) + { + return mList.Remove(item); + } + + IEnumerator IEnumerable.GetEnumerator() + { + throw new System.NotImplementedException(); + } + } + + public class Pool : IPool + { + List mObjects = new List(); + + public string Identifier { get; set; } + + public PoolSettings Settings { get; protected set; } + + public System.Type Type + { + get { return typeof(T); } + } + + double mLastTime; + double mDeltaTime; + + + public Pool(PoolSettings settings = null) + { + Settings = settings ?? new PoolSettings(); + Identifier = typeof(T).FullName; + mLastTime = DTTime.TimeSinceStartup + UnityEngine.Random.Range(0, Settings.Speed); + if (Settings.Prewarm) + Reset(); + } + + public void Update() + { + mDeltaTime += DTTime.TimeSinceStartup - mLastTime; + mLastTime = DTTime.TimeSinceStartup; + + if (Settings.Speed > 0) + { + int c = (int)(mDeltaTime / Settings.Speed); + mDeltaTime -= c; + + if (Count > Settings.Threshold) + { + c = Mathf.Min(c, Count - Settings.Threshold); + while (c-- > 0) + { + destroy(mObjects[0]); + mObjects.RemoveAt(0); + log("Threshold exceeded: Deleting item"); + } + } + else if (Count < Settings.MinItems) + { + c = Mathf.Min(c, Settings.MinItems - Count); + while (c-- > 0) + { + mObjects.Add(create()); + log("Below MinItems: Adding item"); + } + } + } + else + mDeltaTime = 0; + } + + public void Reset() + { + if (Application.isPlaying) + { + while (Count < Settings.MinItems) + { + mObjects.Add(create()); + } + while (Count > Settings.Threshold) + { + destroy(mObjects[0]); + mObjects.RemoveAt(0); + } + log("Prewarm/Reset"); + } + } + + public void Clear() + { + log("Clear"); + for (int i = 0; i < Count; i++) + destroy(mObjects[i]); + mObjects.Clear(); + } + + public int Count + { + get { return mObjects.Count; } + } + + public virtual T Pop(Transform parent = null) + { + T item = default(T); + if (Count > 0) + { + item = mObjects[0]; + mObjects.RemoveAt(0); + + } + else + { + if (Settings.AutoCreate || !Application.isPlaying) + { + log("Auto create item"); + item = create(); + + } + } + if (item != null) + { + sendAfterPop(item); + setParent(item, parent); + log("Pop " + item); + } + + return item; + } + + public virtual void Push(T item) + { + log("Push " + item); + if (Application.isPlaying && item != null) + { + sendBeforePush(item); + mObjects.Add(item); + } + } + + protected virtual void sendBeforePush(T item) + { + if (item is IPoolable) + ((IPoolable)item).OnBeforePush(); + } + + protected virtual void sendAfterPop(T item) + { + if (item is IPoolable) + ((IPoolable)item).OnAfterPop(); + } + + protected virtual void setParent(T item, Transform parent) + { + } + + protected virtual T create() + { + return System.Activator.CreateInstance(); + } + + protected virtual void destroy(T item) + { + } + + void log(string msg) + { + if (Settings.Debug) + Debug.Log(string.Format("[{0}] ({1} items) {2}", Identifier, Count, msg)); + } + } + + + [System.Serializable] + public class PoolSettings + { + [SerializeField] + bool m_Prewarm = false; + [SerializeField] + bool m_AutoCreate = true; + [SerializeField] + bool m_AutoEnableDisable = true; + [Positive] + [SerializeField] + int m_MinItems = 0; + + [Positive] + [SerializeField] + int m_Threshold = 0; + + [Positive] + [SerializeField] + float m_Speed = 1; + + + + + public bool Debug; + + public PoolSettings() { } + + public PoolSettings(PoolSettings src) + { + Prewarm = src.Prewarm; + AutoCreate = src.AutoCreate; + MinItems = src.MinItems; + Threshold = src.Threshold; + Speed = src.Speed; + Debug = src.Debug; + } + + public bool Prewarm + { + get { return m_Prewarm; } + set + { + if (m_Prewarm != value) + m_Prewarm = value; + } + } + + public bool AutoCreate + { + get { return m_AutoCreate; } + set + { + if (m_AutoCreate != value) + m_AutoCreate = value; + } + } + + public bool AutoEnableDisable + { + get { return m_AutoEnableDisable; } + set + { + if (m_AutoEnableDisable != value) + m_AutoEnableDisable = value; + } + } + + public int MinItems + { + get { return m_MinItems; } + set + { + int v = Mathf.Max(0, value); + if (m_MinItems != v) + m_MinItems = v; + } + } + + public int Threshold + { + get { return m_Threshold; } + set + { + int v = Mathf.Max(MinItems, value); + if (m_Threshold != v) + m_Threshold = v; + } + } + + public float Speed + { + get { return m_Speed; } + set + { + float v = Mathf.Max(0, value); + if (m_Speed != v) + m_Speed = v; + } + } + + public void OnValidate() + { + MinItems = m_MinItems; + Threshold = m_Threshold; + Speed = m_Speed; + } + } + + + public interface IPool + { + string Identifier { get; set; } + PoolSettings Settings { get; } + void Clear(); + void Reset(); + void Update(); + int Count { get; } + } + + public interface IPoolable + { + void OnBeforePush(); + + void OnAfterPop(); + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Data.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Data.cs.meta new file mode 100644 index 00000000..288072b9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/Data.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 45f5314b4eeb54743a8d8494c74a292b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/PropertyAttributes.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/PropertyAttributes.cs new file mode 100644 index 00000000..f2c3a181 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/PropertyAttributes.cs @@ -0,0 +1,293 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System; +using System.Reflection; + +namespace FluffyUnderware.DevTools +{ + public enum DTMessageType + { + None = 0, + Info = 1, + Warning = 2, + Error = 3, + } + + public enum AttributeOptionsFlags : int + { + None = 0, + Compact = 1, + Clipboard = 128, + Zero = 256, + One = 512, + Negate = 1024, + Full = 1920, + FullCompact = 1921 + } + + public class DTPropertyAttribute : PropertyAttribute + { + + public string Label; + public string Tooltip; + public string Color; + public AttributeOptionsFlags Options; + public int Precision = -1; + + public DTPropertyAttribute(string label="", string tooltip = "") + { + Label = label; + Tooltip = tooltip; + } + } + + public class LabelAttribute : DTPropertyAttribute + { + public LabelAttribute() : base() { } + public LabelAttribute(string label, string tooltip = "") : base(label, tooltip) { } + } + + public class ToggleButtonAttribute : DTPropertyAttribute + { + public ToggleButtonAttribute(string label = "", string tooltip = "") : base(label, tooltip) + { + } + } + + public class LayerAttribute : DTPropertyAttribute + { + public LayerAttribute(string label = "", string tooltip = "") + : base(label, tooltip) + { + } + } + + public class TagAttribute : DTPropertyAttribute + { + public TagAttribute(string label = "", string tooltip = "") + : base(label, tooltip) + { + } + } + + public class VectorExAttribute : DTPropertyAttribute + { + public VectorExAttribute(string label = "", string tooltip = "") : base(label, tooltip) + { + Options = AttributeOptionsFlags.Full; + } + } + + public class AnimationCurveExAttribute : DTPropertyAttribute + { + public AnimationCurveExAttribute(string label = "", string tooltip = "") + : base(label, tooltip) + { + Options = AttributeOptionsFlags.Clipboard; + } + } + + public class MinAttribute : DTPropertyAttribute + { + public float MinValue; + public string MinFieldOrPropertyName; + + public MinAttribute(float value, string label = "", string tooltip = "") + : base(label, tooltip) + { + MinValue = value; + } + + public MinAttribute(string fieldOrProperty, string label = "", string tooltip = "") + : base(label, tooltip) + { + MinFieldOrPropertyName = fieldOrProperty; + } + } + + public class PositiveAttribute : MinAttribute + { + public PositiveAttribute() : base(0) { } + } + + public class MaxAttribute : DTPropertyAttribute + { + public float MaxValue; + public string MaxFieldOrPropertyName; + + public MaxAttribute(float value, string label = "", string tooltip = "") + : base(label, tooltip) + { + MaxValue = value; + } + + public MaxAttribute(string fieldOrProperty, string label = "", string tooltip = "") + : base(label, tooltip) + { + MaxFieldOrPropertyName = fieldOrProperty; + } + } + + public class RangeExAttribute : DTPropertyAttribute + { + public float MinValue; + public string MinFieldOrPropertyName; + public float MaxValue; + public string MaxFieldOrPropertyName; + public bool Slider=true; + + public RangeExAttribute(float minValue, float maxValue, string label = "", string tooltip = "") + : base(label, tooltip) + { + MinValue = minValue; + MaxValue = maxValue; + } + + public RangeExAttribute(string minFieldOrProperty, float maxValue, string label = "", string tooltip = "") + : base(label, tooltip) + { + MinFieldOrPropertyName = minFieldOrProperty; + MaxValue = maxValue; + } + + public RangeExAttribute(float minValue, string maxFieldOrProperty, string label = "", string tooltip = "") + : base(label, tooltip) + { + MinValue = minValue; + MaxFieldOrPropertyName = maxFieldOrProperty; + } + + public RangeExAttribute(string minFieldOrProperty, string maxFieldOrProperty, string label = "", string tooltip = "") + : base(label, tooltip) + { + MinFieldOrPropertyName = minFieldOrProperty; + MaxFieldOrPropertyName = maxFieldOrProperty; + } + + } + + public class MinMaxAttribute : DTPropertyAttribute + { + public readonly string MaxValueField; + public float Min; + public string MinBoundFieldOrPropertyName; + public float Max; + public string MaxBoundFieldOrPropertyName; + + public MinMaxAttribute(string maxValueField, string label="", string tooltip="") : base(label, tooltip) + { + MaxValueField = maxValueField; + Min = 0; + Max = 1; + } + } + + public class EnumFlagAttribute : DTPropertyAttribute + { + public EnumFlagAttribute(string label = "", string tooltip = "") : base(label,tooltip) { } + } + + public class ObjectSelectorAttribute : DTPropertyAttribute + { + public ObjectSelectorAttribute(string label = "", string tooltip = "") : base(label, tooltip) + { } + } + + public class PathSelectorAttribute : DTPropertyAttribute + { + public enum DialogMode + { + OpenFile, + OpenFolder, + CreateFile + } + + public readonly DialogMode Mode; + public string Title; + public string Directory; + public string Extension; + public string DefaultName; + + public PathSelectorAttribute(DialogMode mode=DialogMode.OpenFile) + { + Mode = mode; + Directory = Application.dataPath; + } + } + + public class EnumSelectionGridAttribute : DTPropertyAttribute + { + public EnumSelectionGridAttribute(string label="",string tooltip="") : base(label,tooltip) { } + } + + public class DTRegionAttribute : DTPropertyAttribute + { + public bool RegionIsOptional; + public string RegionOptionsPropertyName; + public bool UseSlider=true; + } + + public class FloatRegionAttribute : DTRegionAttribute { } + public class IntRegionAttribute : DTRegionAttribute { } + + public struct RegionOptions + { + public string LabelFrom; + public string LabelTo; + public string OptionalTooltip; + public DTValueClamping ClampFrom; + public DTValueClamping ClampTo; + public T FromMin; + public T FromMax; + public T ToMin; + public T ToMax; + + public static RegionOptions Default + { + get + { + return new RegionOptions + { + OptionalTooltip = "Range", + LabelFrom= "From", + LabelTo= "To", + ClampFrom = DTValueClamping.None, + ClampTo = DTValueClamping.None + }; + } + } + + public static RegionOptions MinMax(T min, T max) + { + return new RegionOptions + { + LabelFrom = "From", + LabelTo = "To", + ClampFrom = DTValueClamping.Range, + ClampTo = DTValueClamping.Range, + FromMin=min, + FromMax=max, + ToMin=min, + ToMax=max + }; + + } + } + + public enum DTValueClamping + { + None = 0, + Min = 1, + Max = 2, + Range = 3 + } + + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/PropertyAttributes.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/PropertyAttributes.cs.meta new file mode 100644 index 00000000..aea078b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/PropertyAttributes.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eed9fb14b94dcae4e826c61c76e7e7b2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/ThreadPoolWorker.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/ThreadPoolWorker.cs new file mode 100644 index 00000000..d26bad07 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/ThreadPoolWorker.cs @@ -0,0 +1,473 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System; +using System.Collections.Generic; +using System.Linq; +#if ENABLE_IL2CPP == false +using System.Linq.Expressions; +#endif +using System.Runtime.CompilerServices; +using UnityEngine.Assertions; +#if !UNITY_WSA && !UNITY_WEBGL +using System.Threading; +#endif + +namespace FluffyUnderware.DevTools +{ + /// + /// A class to execute actions in a multi-threaded way + /// + /// The type of the action input + public class ThreadPoolWorker : IDisposable + { + //TODO OPTIM Is ThreadPoolWorker still needed. Aren't all unity version handling .Net's parallel fors now? + //TODO use Windows.System.Threading.ThreadPool.RunAsync(workItem => SomeMethod()); #if NETFX_CORE +#if !UNITY_WSA && !UNITY_WEBGL + private readonly SimplePool queuedCallbackPool = new SimplePool(4); + private readonly SimplePool> loopStatePool = new SimplePool>(4); + + private int _remainingWorkItems = 1; + private ManualResetEvent _done = new ManualResetEvent(false); + private WaitCallback handleWorkItemCallBack; + private WaitCallback handleLoopCallBack; + + public ThreadPoolWorker() + { + handleWorkItemCallBack = o => + { + QueuedCallback queuedCallback = (QueuedCallback)o; + try + { + queuedCallback.Callback(queuedCallback.State); + } + finally + { + lock (queuedCallbackPool) + queuedCallbackPool.ReleaseItem(queuedCallback); + DoneWorkItem(); + } + }; + + handleLoopCallBack = state => + { + LoopState loopS = (LoopState)state; + for (int i = loopS.StartIndex; i <= loopS.EndIndex; i++) + { + loopS.Action(loopS.Items.ElementAt(i), i, loopS.ItemsCount); + } + lock (loopStatePool) + loopStatePool.ReleaseItem(loopS); + }; + } + + [Obsolete("Use ParallelFor(Action action, IEnumerable list) instead")] + public void ParralelFor(Action action, List list) + { + ParallelFor((item, itemIndex, itemsCount) => action(item), list, list.Count()); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ParallelFor(Action action, IEnumerable list) + { + ParallelFor(action, list, list.Count()); + } + + public void ParallelFor(Action action, IEnumerable list, int elementsCount) + { + int threadsToUseCount; + { + int availableThreads; +#if NET_4_6 + int temp; + ThreadPool.GetAvailableThreads(out availableThreads, out temp); +#else + availableThreads = Environment.ProcessorCount - 1; +#endif + threadsToUseCount = 1 /*main thread*/ + Math.Min(availableThreads, Environment.ProcessorCount - 1 /*keep one processor for the main thead*/); + } + //BUG a bug in iterationPerThread leads to sometimes not using all available threads. For example, if you have 5 items and 4 cores, only 3 cores will be used + int iterationPerThread = threadsToUseCount == 1 + ? elementsCount + : (int)Math.Ceiling((float)elementsCount / threadsToUseCount); +#if CURVY_SANITY_CHECKS + Assert.IsTrue(iterationPerThread * threadsToUseCount >= elementsCount); +#endif + int currentIndex = 0; + while (currentIndex < elementsCount) + { + int endEndex = Math.Min(currentIndex + iterationPerThread - 1, elementsCount - 1); + + if (endEndex == elementsCount - 1) + for (int i = currentIndex; i <= endEndex; i++) + action(list.ElementAt(i), i, elementsCount); + else + { + + QueuedCallback queuedCallback; + { + lock (queuedCallbackPool) + queuedCallback = queuedCallbackPool.GetItem(); + } + + + LoopState loopState; + { + lock (loopStatePool) + loopState = loopStatePool.GetItem(); + } + + loopState.Set((short)currentIndex, + (short)endEndex, + list, + elementsCount, + action); + + queuedCallback.State = loopState; + queuedCallback.Callback = handleLoopCallBack; + + ThrowIfDisposed(); + //Debug.LogWarning("New thread " + " from "+ loopState.StartIndex + " to " + loopState.EndIndex); + lock (_done) + _remainingWorkItems++; + ThreadPool.QueueUserWorkItem(handleWorkItemCallBack, queuedCallback); + } + currentIndex = endEndex + 1; + } + + WaitAll(-1, false); + } + + bool WaitAll(int millisecondsTimeout, bool exitContext) + { + ThrowIfDisposed(); + DoneWorkItem(); + bool rv = _done.WaitOne(millisecondsTimeout, exitContext); + lock (_done) + { + if (rv) + { + _remainingWorkItems = 1; + _done.Reset(); + } + else + _remainingWorkItems++; + } + return rv; + } + + private void ThrowIfDisposed() + { + if (_done == null) + throw new ObjectDisposedException(GetType().Name); + } + + private void DoneWorkItem() + { + lock (_done) + { + --_remainingWorkItems; + if (_remainingWorkItems == 0) + _done.Set(); + } + } + + public void Dispose() + { + if (_done != null) + { + ((IDisposable)_done).Dispose(); + _done = null; + } + } +#else + public ThreadPoolWorker() + { + } + + [Obsolete("Use ParallelFor(Action action, IEnumerable list) instead")] + public void ParralelFor(Action action, List list) + { + for (var i = 0; i < list.Count; i++) + action(list[i]); + } + + public void ParallelFor(Action action, IEnumerable list) + { + ParallelFor(action, list, list.Count()); + } + + public void ParallelFor(Action action, IEnumerable list, int elementsCount) + { + for (int i = 0; i < elementsCount; i++) + action(list.ElementAt(i), i, elementsCount); + } + + public void Dispose() + { + } +#endif + } + + internal class SimplePool where T : new() + { + private readonly List freeItemsBackfield; +#if ENABLE_IL2CPP == false + private static readonly Func OptimizedInstantiator = Expression.Lambda>( + Expression.New(typeof(T)) + ).Compile(); +#endif + + public SimplePool(int preCreatedElementsCount) + { + freeItemsBackfield = new List(); + for (int i = 0; i < preCreatedElementsCount; i++) + freeItemsBackfield.Add( +#if ENABLE_IL2CPP == false + OptimizedInstantiator.Invoke() +#else + new T() +#endif + ); + } + + public T GetItem() + { + T item; + if (freeItemsBackfield.Count == 0) + item = +#if ENABLE_IL2CPP == false + OptimizedInstantiator.Invoke() +#else + new T() +#endif + ; + else + { + int lastIndex = freeItemsBackfield.Count - 1; + item = freeItemsBackfield[lastIndex]; + freeItemsBackfield.RemoveAt(lastIndex); + } + return item; + } + + public void ReleaseItem(T item) + { + freeItemsBackfield.Add(item); + } + } + +#if !UNITY_WSA && !UNITY_WEBGL + class QueuedCallback + { + public WaitCallback Callback; + public object State; + } + + class LoopState + { + public short StartIndex { get; private set; } + public short EndIndex { get; private set; } + public IEnumerable Items { get; private set; } + public int ItemsCount { get; private set; } + public Action Action { get; private set; } + + public LoopState() + { + } + + public LoopState(short startIndex, short endIndex, IEnumerable items, int itemsCount, Action action) + { + Set(startIndex, endIndex, items, itemsCount, action); + } + + public void Set(short startIndex, short endIndex, IEnumerable items, int itemsCount, Action action) + { + StartIndex = startIndex; + EndIndex = endIndex; + Items = items; + ItemsCount = itemsCount; + Action = action; + } + } +#endif + + + /// + /// This class is not very optimized. For better performance, use the generic version of ThreadPoolWorker instead + /// +#if !UNITY_WSA && !UNITY_WEBGL + [Obsolete("Use ThreadPoolWorker instead")] + public class ThreadPoolWorker : IDisposable + { + private int _remainingWorkItems = 1; + private ManualResetEvent _done = new ManualResetEvent(false); + + public void QueueWorkItem(WaitCallback callback) + { + QueueWorkItem(callback, null); + } + + public void QueueWorkItem(Action act) + { + QueueWorkItem(act, null); + } + + public void ParralelFor(Action action, List list) + { + int threadsToUseCount; + { + int availableThreads; +#if NET_4_6 + int temp; + ThreadPool.GetAvailableThreads(out availableThreads, out temp); +#else + availableThreads = Environment.ProcessorCount - 1; +#endif + threadsToUseCount = 1 /*main thread*/ + Math.Min(availableThreads, Environment.ProcessorCount - 1 /*keep one processor for the main thead*/); + } + int iterationsCount = list.Count; + if (threadsToUseCount == 1 || iterationsCount == 1) + { + for (int i = 0; i < iterationsCount; i++) + { + action(list[i]); + } + } + else + { + int iterationPerThread = (int)Math.Ceiling((float)iterationsCount / threadsToUseCount); + int currentIndex = 0; + while (currentIndex < iterationsCount) + { + QueuedCallback queuedCallback = new QueuedCallback(); + + int endEndex = Math.Min(currentIndex + iterationPerThread, iterationsCount - 1); + + LoopState loopState = new LoopState((short)currentIndex, + (short)endEndex, + list, + iterationsCount, + (item, + itemIndex, + itemsCount) => action(item)); + queuedCallback.State = loopState; + + queuedCallback.Callback = state => + { + LoopState loopS = (LoopState)state; + for (int i = loopS.StartIndex; i <= loopS.EndIndex; i++) + { + loopS.Action(loopS.Items.ElementAt(i), i, iterationsCount); + } + }; + + + QueueWorkItem(queuedCallback); + + currentIndex = endEndex + 1; + } + } + } + + private void QueueWorkItem(QueuedCallback callback) + { + ThrowIfDisposed(); + lock (_done) + _remainingWorkItems++; + ThreadPool.QueueUserWorkItem(new WaitCallback(HandleWorkItem), callback); + } + + public void QueueWorkItem(WaitCallback callback, object state) + { + QueuedCallback qc = new QueuedCallback(); + qc.Callback = callback; + qc.State = state; + QueueWorkItem(qc); + } + + public void QueueWorkItem(Action act, object state) + { + QueuedCallback qc = new QueuedCallback(); + qc.Callback = (x => act()); + qc.State = state; + QueueWorkItem(qc); + } + + public bool WaitAll() + { + return WaitAll(-1, false); + } + + public bool WaitAll(TimeSpan timeout, bool exitContext) + { + return WaitAll((int)timeout.TotalMilliseconds, exitContext); + } + + public bool WaitAll(int millisecondsTimeout, bool exitContext) + { + ThrowIfDisposed(); + DoneWorkItem(); + bool rv = _done.WaitOne(millisecondsTimeout, exitContext); + lock (_done) + { + if (rv) + { + _remainingWorkItems = 1; + _done.Reset(); + } + else + _remainingWorkItems++; + } + return rv; + } + + private void HandleWorkItem(object state) + { + QueuedCallback qc = (QueuedCallback)state; + try + { + qc.Callback(qc.State); + } + finally + { + DoneWorkItem(); + } + } + + private void DoneWorkItem() + { + lock (_done) + { + --_remainingWorkItems; + if (_remainingWorkItems == 0) + _done.Set(); + } + } + + private void ThrowIfDisposed() + { + if (_done == null) + throw new ObjectDisposedException(GetType().Name); + } + + public void Dispose() + { + if (_done != null) + { + ((IDisposable)_done).Dispose(); + _done = null; + } + } + } +#else + public class ThreadPoolWorker{} +#endif + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/ThreadPoolWorker.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/ThreadPoolWorker.cs.meta new file mode 100644 index 00000000..b4597aec --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Classes/ThreadPoolWorker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a997f755ef82a3e439a530a09753ae2f +timeCreated: 1433497656 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components.meta new file mode 100644 index 00000000..c875f33e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: c5743298d0dd43147bd9e4b9915a6434 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/ComponentPool.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/ComponentPool.cs new file mode 100644 index 00000000..796f1710 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/ComponentPool.cs @@ -0,0 +1,388 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.DevTools.Extensions; +#if CURVY_SANITY_CHECKS_PRIVATE +using UnityEngine.Assertions; +#endif +using UnityEngine.SceneManagement; + +namespace FluffyUnderware.DevTools +{ + /// + /// A pool of instances of the UnityEngine.Component class + /// + [HelpURL(DTUtility.HelpUrlBase + "dtcomponentpool")] + public class ComponentPool : DTVersionedMonoBehaviour, IPool, ISerializationCallbackReceiver + { + [SerializeField, HideInInspector] + private string m_Identifier; + + [Inline] + [SerializeField] + private PoolSettings m_Settings; + + public PoolSettings Settings + { + get { return m_Settings; } + set + { + if (m_Settings != value) + m_Settings = value; + if (m_Settings != null) + m_Settings.OnValidate(); + } + } + + private PoolManager mManager; + + public PoolManager Manager + { + get + { + if (mManager == null) + mManager = GetComponent(); + return mManager; + } + } + + /// + /// Due to bad design decisions, Identifier is used to store the type of the pooled objects. And the setter does nothing + /// + public string Identifier + { + get + { +#if CURVY_SANITY_CHECKS_PRIVATE + Assert.IsNotNull(m_Identifier); +#endif + return m_Identifier; + } + set + { + throw new InvalidOperationException("Component pool's identifier should always indicate the pooled type's assembly qualified name"); + /*Here is why: + In the Initialize method, m_Identifier is set as a fully qualified type name. + The Type getter uses m_Identifier as a fully qualified type name. + If needed, add a field that contains the pooled type name, and use it instead of Identifier when you need to find the right pool for the right component type*/ + } + } + + /// + /// The type of the pooled objects + /// + public Type Type + { + get + { + Type type = null; + if (Identifier != null) + type = Type.GetType(Identifier); + + if (type == null) + DTLog.LogWarning("[DevTools] ComponentPool's Type is an unknown type " + m_Identifier); + return type; + } + } + + + public int Count + { + get { return mObjects.Count; } + } + + private List mObjects = new List(); + + private double mLastTime; + private double mDeltaTime; + + public void Initialize(Type type, PoolSettings settings) + { + m_Identifier = type.AssemblyQualifiedName; +#if CURVY_SANITY_CHECKS_PRIVATE + Assert.IsNotNull(m_Identifier); +#endif + m_Settings = settings; + mLastTime = DTTime.TimeSinceStartup + UnityEngine.Random.Range(0, Settings.Speed); + if (Settings.Prewarm) + Reset(); + } + + private void Start() + { + if (Settings.Prewarm) + Reset(); + } + +#if UNITY_EDITOR + private void OnValidate() + { + Settings = m_Settings; + } +#endif + + private void OnEnable() + { + SceneManager.sceneLoaded += OnSceneLoaded; + } + + public void Update() + { + if (Application.isPlaying) + { + mDeltaTime += DTTime.TimeSinceStartup - mLastTime; + mLastTime = DTTime.TimeSinceStartup; + + if (Settings.Speed > 0) + { + int c = (int)(mDeltaTime / Settings.Speed); + mDeltaTime -= c; + + if (Count > Settings.Threshold) + { + c = Mathf.Min(c, Count - Settings.Threshold); + while (c-- > 0) + { + if (Settings.Debug) + log("Threshold exceeded: Deleting item"); + destroy(mObjects[0]); + mObjects.RemoveAt(0); + } + } + else if (Count < Settings.MinItems) + { + c = Mathf.Min(c, Settings.MinItems - Count); + while (c-- > 0) + { + if (Settings.Debug) + log("Below MinItems: Adding item"); + mObjects.Add(create()); + } + } + } + else + mDeltaTime = 0; + } + } + + public void Reset() + { + if (Application.isPlaying) + { + while (Count < Settings.MinItems) + { + mObjects.Add(create()); + } + while (Count > Settings.Threshold) + { + destroy(mObjects[0]); + mObjects.RemoveAt(0); + } + if (Settings.Debug) + log("Prewarm/Reset"); + } + } + + public void OnSceneLoaded(Scene scn, LoadSceneMode mode) + { + for (int i = mObjects.Count - 1; i >= 0; i--) + if (mObjects[i] == null) + mObjects.RemoveAt(i); + } + + public void Clear() + { + if (Settings.Debug) + log("Clear"); + for (int i = 0; i < Count; i++) + destroy(mObjects[i]); + mObjects.Clear(); + } + + public void Push(Component item) + { + sendBeforePush(item); +#if UNITY_EDITOR + if (!Application.isPlaying) + { + item.gameObject.Destroy(false, true); + } + else +#endif + if (item != null) + { + mObjects.Add(item); + item.transform.parent = Manager.transform; + item.gameObject.hideFlags = (Settings.Debug) + ? HideFlags.DontSave + : HideFlags.HideAndDontSave; + if (Settings.AutoEnableDisable) + item.gameObject.SetActive(false); + } + } + + public Component Pop(Transform parent = null) + { + Component item = null; + if (Count > 0) + { + item = mObjects[0]; + mObjects.RemoveAt(0); + } + else + { + if (Settings.AutoCreate || !Application.isPlaying) + { + if (Settings.Debug) + log("Auto create item"); + item = create(); + } + } + if (item) + { + item.gameObject.hideFlags = HideFlags.None; + item.transform.parent = parent; + if (Settings.AutoEnableDisable) + item.gameObject.SetActive(true); + sendAfterPop(item); + if (Settings.Debug) + log("Pop " + item); + } + + return item; + } + + public T Pop(Transform parent) where T : Component + { + return Pop(parent) as T; + } + + private Component create() + { + GameObject go = new GameObject(); + go.name = Identifier; + go.transform.parent = Manager.transform; + if (Settings.AutoEnableDisable) + go.SetActive(false); + Type componentType = Type; + Component component = null; + if (componentType != null) + component = go.AddComponent(componentType); + else + DTLog.LogError(String.Format("[DevTools] ComponentPool {0} could not create component because the associated type is null", m_Identifier)); + return component; + } + + private void destroy(Component item) + { + if (item != null) + item.gameObject.Destroy(false, true); + } + + private void setParent(Component item, Transform parent) + { + if (item != null) + item.transform.parent = parent; + } + + private void sendAfterPop(Component item) + { + GameObject itemGameObject = item.gameObject; + if (itemGameObject.activeSelf && itemGameObject.activeInHierarchy) + //Send message works only for active game objects. Source: https://docs.unity3d.com/ScriptReference/GameObject.SendMessage.html + itemGameObject.SendMessage(nameof(IPoolable.OnAfterPop), SendMessageOptions.DontRequireReceiver); + else + { + if (item is IPoolable) + ((IPoolable)item).OnAfterPop(); + else + DTLog.LogWarning("[Curvy] sendAfterPop could not send message because the receiver " + item.name + " is not active"); + } + } + + private void sendBeforePush(Component item) + { + GameObject itemGameObject = item.gameObject; + if (itemGameObject.activeSelf && itemGameObject.activeInHierarchy) + //Send message works only for active game objects. Source: https://docs.unity3d.com/ScriptReference/GameObject.SendMessage.html + itemGameObject.SendMessage(nameof(IPoolable.OnBeforePush), SendMessageOptions.DontRequireReceiver); + else + { + if (item is IPoolable) + ((IPoolable)item).OnBeforePush(); + else + DTLog.LogWarning("[Curvy] sendBeforePush could not send message because the receiver " + item.name + " is not active"); + } + } + + private void log(string msg) + { + Debug.Log(string.Format("[{0}] ({1} items) {2}", Identifier, Count, msg)); + } + + #region ISerializationCallbackReceiver + /*! \cond PRIVATE */ + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public void OnBeforeSerialize() + { + } + + /// + /// Implementation of UnityEngine.ISerializationCallbackReceiver + /// Called automatically by Unity, is not meant to be called by Curvy's users + /// + public void OnAfterDeserialize() + { + if (Type.GetType(m_Identifier) == null) + { + + //Handles cases where the component is migrated to another assembly (for example if using Unity's Assembly Definitions feature + + const char separator = ','; + const string separatorString = ","; + string[] splittedAssemblyQualifiedName = m_Identifier.Split(separator); + if (splittedAssemblyQualifiedName.Length >= 5) + { + string typeName = String.Join(separatorString, splittedAssemblyQualifiedName.SubArray(0, splittedAssemblyQualifiedName.Length - 4)); + //As you can see with this example: + //"FluffyUnderware.Curvy.CurvySplineSegment, ToolBuddy.Curvy, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + //the 4 last elements do not contain the type name. Keep in mind that a type name can include a ',' like Dictionary> + +#if UNITY_EDITOR + var knownTypes = UnityEditor.TypeCache.GetTypesDerivedFrom(typeof(System.Object)); +#else + +#if NETFX_CORE + Type[] knownTypes = this.GetType().GetAllTypes(); +#else + Type[] knownTypes = TypeExt.GetLoadedTypes(); + +#endif +#endif + Type type = knownTypes.FirstOrDefault(t => t.FullName == typeName); + if (type != null) + { + m_Identifier = type.AssemblyQualifiedName; +#if CURVY_SANITY_CHECKS_PRIVATE + Assert.IsNotNull(m_Identifier); +#endif + } + } + } + } + /*! \endcond */ + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/ComponentPool.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/ComponentPool.cs.meta new file mode 100644 index 00000000..6ff77cce --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/ComponentPool.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 62f98941b92097f49bd5ff480ec47122 +timeCreated: 1441006208 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTSingleton.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTSingleton.cs new file mode 100644 index 00000000..97e83443 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTSingleton.cs @@ -0,0 +1,98 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System.Collections.Generic; +using System.Linq; +using FluffyUnderware.DevTools.Extensions; +using UnityEngine; + +namespace FluffyUnderware.DevTools +{ + + public class DTSingleton : MonoBehaviour, IDTSingleton where T : MonoBehaviour, IDTSingleton + { + static T _instance; + static object _lock = new object(); + static bool applicationIsQuitting = false; + bool isDuplicateInstance = false; + + public static bool HasInstance + { + get { return _instance != null; } + } + + public static T Instance + { + get + { + if (!Application.isPlaying) + applicationIsQuitting = false; + if (applicationIsQuitting) + return null; + + if (_instance == null) + lock (_lock) + if (_instance == null) + { + IEnumerable objectsOfTypeT = FindObjectsOfType(typeof(T)).Where(o => o != null); +#if CURVY_SANITY_CHECKS + if (objectsOfTypeT.Count() != FindObjectsOfType(typeof(T)).Length) + DTLog.LogError("[Curvy] DTSingleton.Instance : FindObjectsOfType " + typeof(T).FullName + " returned at least one null reference"); +#endif + + _instance = objectsOfTypeT.Any() + ? (T)objectsOfTypeT.ElementAt(0) + : new GameObject().AddComponent(); + } + + return _instance; + } + } + + public virtual void Awake() + { + T instance = Instance; + lock (_lock) + { + if (instance == null) + DTLog.LogError("[DevTools] DTSingleton instance was null. This happens if the instance is destroyed by the user, which is not a supported operation. If you did not destroy the singleton's instance, then please fill a bug report."); + else + if (GetInstanceID() != instance.GetInstanceID()) + { + instance.MergeDoubleLoaded((IDTSingleton)this); + this.isDuplicateInstance = true; + this.Invoke(nameof(DestroySelf), 0); + } + } + } + + protected virtual void OnDestroy() + { + lock (_lock) + if (Application.isPlaying && !isDuplicateInstance) + { + applicationIsQuitting = true; + _instance = null; + } + } + + public virtual void MergeDoubleLoaded(IDTSingleton newInstance) + { + } + + void DestroySelf() + { + gameObject.Destroy(false, true); + } + + } + + public interface IDTSingleton + { + void MergeDoubleLoaded(IDTSingleton newInstance); + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTSingleton.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTSingleton.cs.meta new file mode 100644 index 00000000..7e3dfbdf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTSingleton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be97567edb4b04d4b864736d9e10f36f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTVersionedMonoBehaviour.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTVersionedMonoBehaviour.cs new file mode 100644 index 00000000..2058e9dd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTVersionedMonoBehaviour.cs @@ -0,0 +1,41 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.DevTools +{ + /// + /// A MonoBehaviour with a version number, useful to handle upgrades if needed + /// + public abstract class DTVersionedMonoBehaviour : MonoBehaviour + { + [SerializeField, HideInInspector] + string m_Version; + + /// + /// Gets the version of this component + /// + public string Version + { + get { return m_Version; } + protected set { m_Version = value; } + } + + /// + /// Destroys the gameobject + /// + [Obsolete("Use ObjectExt.Destroy(...) instead")] + public void Destroy() + { + gameObject.Destroy(false, true); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTVersionedMonoBehaviour.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTVersionedMonoBehaviour.cs.meta new file mode 100644 index 00000000..f7980949 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DTVersionedMonoBehaviour.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3c2cf93621e06d43b51fbde3128ce03 +timeCreated: 1441701724 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DuplicateEditorMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DuplicateEditorMesh.cs new file mode 100644 index 00000000..a304bfa3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DuplicateEditorMesh.cs @@ -0,0 +1,58 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; + + +namespace FluffyUnderware.DevTools +{ + /// + /// Add this script to a GameObject with a MeshFilter to ensure it will be properly duplicated in the editor! + /// + /// On Duplicating, Awake() checks if the sharedMesh is already used in the scene. If yes, a new mesh will be created to ensure that each sharedMesh is unique + [ExecuteAlways] + [RequireComponent(typeof(MeshFilter))] + public abstract class DuplicateEditorMesh : DTVersionedMonoBehaviour + { + MeshFilter mFilter; + + public MeshFilter Filter + { + get { + if (mFilter == null) + mFilter = GetComponent(); + return mFilter; + } + } + + protected virtual void Awake() + { + if (!Application.isPlaying) + { + MeshFilter meshFilter = Filter; + if (meshFilter && meshFilter.sharedMesh != null) + { + DuplicateEditorMesh[] otherWatchdogs = GameObject.FindObjectsOfType(); + foreach (DuplicateEditorMesh dog in otherWatchdogs) + { + if (dog != this) + { + MeshFilter otherMF = dog.Filter; + if (otherMF && otherMF.sharedMesh == meshFilter.sharedMesh) + { + Mesh m = new Mesh(); + m.name = otherMF.sharedMesh.name; + meshFilter.mesh = m; + } + } + } + } + } + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DuplicateEditorMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DuplicateEditorMesh.cs.meta new file mode 100644 index 00000000..9c636dfd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/DuplicateEditorMesh.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a648044f27666564a9cf38d201465713 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/InspectorNote.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/InspectorNote.cs new file mode 100644 index 00000000..36e85320 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/InspectorNote.cs @@ -0,0 +1,24 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; + +namespace FluffyUnderware.DevTools +{ + /// + /// A component to display notes in the inspector + /// + [HelpURL(DTUtility.HelpUrlBase + "dtinspectornode")] + public class InspectorNote : DTVersionedMonoBehaviour + { + + [TextArea(5,20)] + [SerializeField] + string m_Note; + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/InspectorNote.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/InspectorNote.cs.meta new file mode 100644 index 00000000..6652ad16 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/InspectorNote.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eed5f71264f54224aaf071d6a2e69915 +timeCreated: 1442489791 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PoolManager.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PoolManager.cs new file mode 100644 index 00000000..9b2de78c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PoolManager.cs @@ -0,0 +1,248 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.DevTools +{ + /// + /// Manages the object's pools components + /// + [HelpURL(DTUtility.HelpUrlBase + "dtpoolmanager")] + [ExecuteAlways] + [DisallowMultipleComponent] + public class PoolManager : DTVersionedMonoBehaviour + { + [Section("General")] + [SerializeField] + bool m_AutoCreatePools = true; + + [AsGroup(Expanded = false)] + [SerializeField] + PoolSettings m_DefaultSettings = new PoolSettings(); + + public bool AutoCreatePools + { + get { return m_AutoCreatePools; } + set + { + if (m_AutoCreatePools != value) + m_AutoCreatePools = value; + } + } + + public PoolSettings DefaultSettings + { + get { return m_DefaultSettings; } + set + { + if (m_DefaultSettings != value) + m_DefaultSettings = value; + if (m_DefaultSettings != null) + m_DefaultSettings.OnValidate(); + } + } + + public bool IsInitialized { get; private set; } + public int Count { get { return Pools.Count + TypePools.Count; } } + + public Dictionary Pools = new Dictionary(); + + public Dictionary TypePools = new Dictionary(); + + IPool[] mPools = new IPool[0]; + +#if UNITY_EDITOR + void OnValidate() + { + DefaultSettings = m_DefaultSettings; + } +#endif + + void OnDisable() + { + IsInitialized = false; + } + + void Update() + { +#if UNITY_EDITOR + if (!Application.isPlaying) + Initialize(); +#endif + if (!IsInitialized) + Initialize(); + + if (mPools.Length != TypePools.Count) + { + System.Array.Resize(ref mPools, TypePools.Count); + TypePools.Values.CopyTo(mPools, 0); + } + for (int i = 0; i < mPools.Length; i++) + mPools[i].Update(); + } + + void Initialize() + { + Pools.Clear(); + IPool[] goPools = GetComponents(); + foreach (IPool p in goPools) + { + if (p is ComponentPool) + { + if(Pools.ContainsKey(p.Identifier) == false) + Pools.Add(p.Identifier, p); + else + { + DTLog.Log("[DevTools] Found a duplicated ComponentPool for type " + p.Identifier + ". The duplicated pool will be destroyed"); + (p as ComponentPool).Destroy(false, false); + } + } + else + { + p.Identifier = GetUniqueIdentifier(p.Identifier); + Pools.Add(p.Identifier, p); + } + } + + IsInitialized = true; + } + + public string GetUniqueIdentifier(string ident) + { + int num = 0; + string id = ident; + while (Pools.ContainsKey(id)) + id = ident + (++num).ToString(); + return id; + } + + + public Pool GetTypePool() + { + IPool res = null; + + if (!TypePools.TryGetValue(typeof(T), out res)) + { + if (AutoCreatePools) + { + res = CreateTypePool(); + } + } + return (Pool)res; + } + + public ComponentPool GetComponentPool() where T : Component + { + if (!IsInitialized) + Initialize(); + IPool res = null; + + if (!Pools.TryGetValue(typeof(T).AssemblyQualifiedName, out res)) + { + if (AutoCreatePools) + { + res = CreateComponentPool(); + } + } + return (ComponentPool)res; + } + + public PrefabPool GetPrefabPool(string identifier, params GameObject[] prefabs) + { + if (!IsInitialized) + Initialize(); + IPool pool; + if (!Pools.TryGetValue(identifier, out pool)) + { + if (AutoCreatePools) + pool = CreatePrefabPool(identifier, null, prefabs); + } + return (PrefabPool)pool; + } + + public Pool CreateTypePool(PoolSettings settings = null) + { + PoolSettings s = settings ?? new PoolSettings(DefaultSettings); + IPool res = null; + if (!TypePools.TryGetValue(typeof(T), out res)) + { + res = new Pool(s); + TypePools.Add(typeof(T), res); + } + return (Pool)res; + } + + public ComponentPool CreateComponentPool(PoolSettings settings = null) where T : Component + { + if (!IsInitialized) + Initialize(); + PoolSettings s = settings ?? new PoolSettings(DefaultSettings); + IPool res = null; + + if (!Pools.TryGetValue(typeof(T).AssemblyQualifiedName, out res)) + { + res = gameObject.AddComponent(); + ((ComponentPool)res).Initialize(typeof(T), s); + Pools.Add(res.Identifier, res); + } + return (ComponentPool)res; + } + + public PrefabPool CreatePrefabPool(string name, PoolSettings settings = null, params GameObject[] prefabs) + { + if (!IsInitialized) + Initialize(); + PoolSettings s = settings ?? new PoolSettings(DefaultSettings); + + IPool pool = null; + if (!Pools.TryGetValue(name, out pool)) + { + PrefabPool p = gameObject.AddComponent(); + p.Initialize(name, s, prefabs); + Pools.Add(name, p); + return p; + } + return (PrefabPool)pool; + } + + public List FindPools(string identifierStartsWith) + { + List res = new List(); + foreach (KeyValuePair kv in Pools) + if (kv.Key.StartsWith(identifierStartsWith)) + res.Add(kv.Value); + return res; + } + + public void DeletePools(string startsWith) + { + List toDelete = FindPools(startsWith); + for (int i = toDelete.Count - 1; i >= 0; i--) + DeletePool(toDelete[i]); + + } + + public void DeletePool(IPool pool) + { + if (pool is PrefabPool || pool is ComponentPool) + { + ((MonoBehaviour) pool).Destroy(false, false); + Pools.Remove(pool.Identifier); + } + } + + public void DeletePool() + { + TypePools.Remove(typeof(T)); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PoolManager.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PoolManager.cs.meta new file mode 100644 index 00000000..f1778f6c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PoolManager.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d8a3277e999b164d99f199328dc5d2d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PrefabPool.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PrefabPool.cs new file mode 100644 index 00000000..cfe6e8da --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PrefabPool.cs @@ -0,0 +1,307 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif +using System.Collections; +using System; +using System.Collections.Generic; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.DevTools +{ + /// + /// A pool of instances of a prefab GameObject + /// + [RequireComponent(typeof(PoolManager))] + [HelpURL(DTUtility.HelpUrlBase + "dtprefabpool")] + public class PrefabPool : DTVersionedMonoBehaviour, IPool + { + [FieldCondition(nameof(m_Identifier), "", false, ActionAttribute.ActionEnum.ShowWarning, "Please enter an identifier! (Select a prefab to set automatically)")] + [SerializeField] + string m_Identifier; + + [SerializeField] + List m_Prefabs = new List(); + + [Inline] + [SerializeField] + PoolSettings m_Settings; + + + + PoolManager mManager; + + public string Identifier + { + get { return m_Identifier; } + set + { + if (m_Identifier != value) + { + string v = value; + if (string.IsNullOrEmpty(m_Identifier)) + v = Manager.GetUniqueIdentifier(v); + m_Identifier = value; + } + } + + } + public List Prefabs + { + get { return m_Prefabs; } + set + { + if (m_Prefabs != value) + m_Prefabs = value; + } + } + + + public PoolSettings Settings + { + get { return m_Settings; } + set + { + if (m_Settings != value) + m_Settings = value; + if (m_Settings != null) + m_Settings.OnValidate(); + } + } + + + public PoolManager Manager + { + get + { + if (mManager == null) + mManager = GetComponent(); + return mManager; + } + } + + List mObjects = new List(); + + double mLastTime; + double mDeltaTime; + + void Start() + { + if (Settings.Prewarm) + Reset(); + } + +#if UNITY_EDITOR + void OnValidate() + { + Settings = m_Settings; + } +#endif + + public void Initialize(string ident, PoolSettings settings, params GameObject[] prefabs) + { + Identifier = ident; + m_Settings = settings; + Prefabs = new List(prefabs); + mLastTime = DTTime.TimeSinceStartup + UnityEngine.Random.Range(0, Settings.Speed); + if (Settings.Prewarm) + Reset(); + } + + public void Update() + { + if (Application.isPlaying) + { + mDeltaTime += DTTime.TimeSinceStartup - mLastTime; + mLastTime = DTTime.TimeSinceStartup; + + if (Settings.Speed > 0) + { + int c = (int)(mDeltaTime / Settings.Speed); + mDeltaTime -= c; + + if (Count > Settings.Threshold) + { + c = Mathf.Min(c, Count - Settings.Threshold); + while (c-- > 0) + { + if (Settings.Debug) + log("Threshold exceeded: Deleting item"); + destroy(mObjects[0]); + mObjects.RemoveAt(0); + } + } + else if (Count < Settings.MinItems) + { + c = Mathf.Min(c, Settings.MinItems - Count); + while (c-- > 0) + { + if (Settings.Debug) + log("Below MinItems: Adding item"); + mObjects.Add(create()); + } + } + } + else + mDeltaTime = 0; + } + } + + public void Reset() + { + if (Application.isPlaying) + { + while (Count < Settings.MinItems) + { + mObjects.Add(create()); + } + while (Count > Settings.Threshold) + { + destroy(mObjects[0]); + mObjects.RemoveAt(0); + } + if (Settings.Debug) + log("Prewarm/Reset"); + } + } + + public void Clear() + { + if (Settings.Debug) + log("Clear"); + for (int i = 0; i < Count; i++) + destroy(mObjects[i]); + mObjects.Clear(); + } + + public int Count + { + get { return mObjects.Count; } + } + + public GameObject Pop(Transform parent = null) + { + GameObject item = null; + if (Count > 0) + { + item = mObjects[0]; + mObjects.RemoveAt(0); + } + else + { + if (Settings.AutoCreate || !Application.isPlaying) + { + if (Settings.Debug) + log("Auto create item"); + item = create(); + } + } + if (item) + { + item.gameObject.hideFlags = HideFlags.None; + item.transform.parent = parent; + if (Settings.AutoEnableDisable) + item.SetActive(true); + sendAfterPop(item); + if (Settings.Debug) + log("Pop " + item); + } + + return item; + } + + public virtual void Push(GameObject item) + { + if (Settings.Debug) + log("Push " + item); +#if UNITY_EDITOR + if (!Application.isPlaying) + { + item.gameObject.Destroy(false, true); + } + else +#endif + if (item != null) + { + sendBeforePush(item); + mObjects.Add(item); + item.transform.parent = transform; + item.gameObject.hideFlags = (Settings.Debug) ? HideFlags.DontSave : HideFlags.HideAndDontSave; + if (Settings.AutoEnableDisable) + item.SetActive(false); + } + } + + GameObject create() + { + if (Prefabs.Count == 0) + throw new InvalidOperationException(String.Format("[Curvy] The Prefab Pool '{0}' in game object '{1}' could not create a pool element because its Prefabs list is empty", this.Identifier, this.gameObject.name)); + + //TODO should this Random.Range call be deterministic? + GameObject prefab = Prefabs[UnityEngine.Random.Range(0, Prefabs.Count)]; + GameObject result; + { +#if UNITY_EDITOR + bool isPrefabAsset; + //We have to check GetPrefabInstanceStatus first, because GetPrefabAssetType returns (as far as I understand) the same thing for both a prefab asset and a prefab instance + if (PrefabUtility.GetPrefabInstanceStatus(prefab) == PrefabInstanceStatus.NotAPrefab) + { + PrefabAssetType prefabAssetType = PrefabUtility.GetPrefabAssetType(prefab); + isPrefabAsset = prefabAssetType == PrefabAssetType.Regular || prefabAssetType == PrefabAssetType.Variant; + } + else + isPrefabAsset = false; + + result = isPrefabAsset + ? PrefabUtility.InstantiatePrefab(prefab) as GameObject + : Instantiate(prefab); +#else + result = Instantiate(prefab); +#endif + } + + result.name = prefab.name; + result.transform.parent = transform; + if (Settings.AutoEnableDisable) + result.SetActive(false); + return result; + } + + void destroy(GameObject go) + { + go.Destroy(false, true); + } + + void log(string msg) + { + Debug.Log(string.Format("[{0}] ({1} items) {2}", Identifier, Count, msg)); + } + + void setParent(Transform item, Transform parent) + { + if (item != null) + item.parent = parent; + } + + void sendAfterPop(GameObject item) + { + item.SendMessage(nameof(IPoolable.OnAfterPop), SendMessageOptions.DontRequireReceiver); + } + + void sendBeforePush(GameObject item) + { + item.SendMessage(nameof(IPoolable.OnBeforePush), SendMessageOptions.DontRequireReceiver); + } + + + } + + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PrefabPool.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PrefabPool.cs.meta new file mode 100644 index 00000000..812b29e8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Components/PrefabPool.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4f3bdfa960a223645a04f11686263106 +timeCreated: 1440756755 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/DevToolsLicense.txt b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/DevToolsLicense.txt new file mode 100644 index 00000000..24b79c7a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/DevToolsLicense.txt @@ -0,0 +1,3 @@ +==== DevTools ==== +Copyright (c) 2013-2017 FluffyUnderware, http://www.fluffyunderware.com +All rights reserved. \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/DevToolsLicense.txt.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/DevToolsLicense.txt.meta new file mode 100644 index 00000000..29bb49d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/DevToolsLicense.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f607cd45dadce574d9ed3cc48faa6e28 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor.meta new file mode 100644 index 00000000..d5973886 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: d3d90e3d3a0f5154b9e70b7bb0bb0cc3 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ClipboardHandler.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ClipboardHandler.cs new file mode 100644 index 00000000..0913367e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ClipboardHandler.cs @@ -0,0 +1,100 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.DevToolsEditor +{ + public interface IDTClipboardHandler + { + void Copy(object value); + object Paste(object data); + bool CanPasteFrom(Type clipboardType); + } + + public class DTVector2Clipboard : IDTClipboardHandler + { + + public void Copy(object value) + { + DT.ClipBoardSet(value); + EditorGUIUtility.systemCopyBuffer = value.GetType().Name; + } + + public object Paste(object data) + { + if (data is Vector2) + return (Vector2)data; + else if (data is Vector3) + return new Vector2(((Vector3)data).x, ((Vector3)data).y); + else if (data is Vector4) + return new Vector2(((Vector4)data).x, ((Vector4)data).y); + + return Vector2.zero; + } + + public bool CanPasteFrom(Type clipboardType) + { + return (clipboardType.Matches(typeof(Vector2), typeof(Vector3), typeof(Vector4))); + } + + } + + public class DTVector3Clipboard : IDTClipboardHandler + { + + public void Copy(object value) + { + DT.ClipBoardSet(value); + EditorGUIUtility.systemCopyBuffer = value.GetType().Name; + } + + public object Paste(object data) + { + if (data is Vector3) + return (Vector3)data; + else if (data is Vector4) + return new Vector3(((Vector4)data).x, ((Vector4)data).y, ((Vector4)data).z); + + return Vector2.zero; + } + + public bool CanPasteFrom(Type clipboardType) + { + return (clipboardType.Matches(typeof(Vector3), typeof(Vector4))); + } + + + } + + public class DTAnimationCurveClipboard : IDTClipboardHandler + { + public void Copy(object value) + { + DT.ClipBoardSet(value); + } + + public object Paste(object data) + { + AnimationCurve clp=(AnimationCurve)data; + AnimationCurve curve=new AnimationCurve(clp.keys); + curve.preWrapMode = clp.preWrapMode; + curve.postWrapMode = clp.postWrapMode; + return curve; + } + + public bool CanPasteFrom(Type clipboardType) + { + return clipboardType == typeof(AnimationCurve); + } + } + + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ClipboardHandler.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ClipboardHandler.cs.meta new file mode 100644 index 00000000..5b3ac706 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ClipboardHandler.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fc604c1a18b9fa14da6b9d0f985e87e0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components.meta new file mode 100644 index 00000000..51848a24 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 4a5a9263e8df6d24fbf7ceb6a674385a +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/ComponentPoolEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/ComponentPoolEditor.cs new file mode 100644 index 00000000..71a32e3d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/ComponentPoolEditor.cs @@ -0,0 +1,22 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.DevToolsEditor +{ + [CustomEditor(typeof(ComponentPool))] + public class ComponentPoolEditor : DTEditor + { + protected override void OnCustomInspectorGUIBefore() + { + PoolManagerEditor.showBar(Target); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/ComponentPoolEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/ComponentPoolEditor.cs.meta new file mode 100644 index 00000000..b21b0242 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/ComponentPoolEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 007dc0ff09c5d97478ad4fe856644878 +timeCreated: 1441008968 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PoolManagerEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PoolManagerEditor.cs new file mode 100644 index 00000000..42cd5127 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PoolManagerEditor.cs @@ -0,0 +1,59 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System; +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.DevToolsEditor +{ + [CustomEditor(typeof(PoolManager))] + public class PoolManagerEditor : DTEditor + { + + protected override void OnReadNodes() + { + Node.AddSection("Type Pools",typePoolsGUI); + } + + + + void typePoolsGUI(DTInspectorNode node) + { + + foreach (KeyValuePair kv in Target.TypePools) + { + showBar(kv.Value); + } + } + + + public static void showBar(IPool pool) + { + Rect r = EditorGUILayout.GetControlRect(false, GUILayout.Height(20)); + float hi = Mathf.Max(pool.Count, pool.Settings.Threshold); + Color c = Color.green; + if (pool.Count < pool.Settings.MinItems) + c = Color.yellow; + else if (pool.Count > pool.Settings.Threshold) + c = Color.red; + DTGUI.PushContentColor(c); + string s=pool.Identifier; + if (!string.IsNullOrEmpty(s)) + { + int i = s.IndexOf(","); + if (i > 0) + s = pool.Identifier.Substring(0, i); + } + EditorGUI.ProgressBar(r, pool.Count / hi, s + ":" + pool.Count.ToString()); + DTGUI.PopContentColor(); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PoolManagerEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PoolManagerEditor.cs.meta new file mode 100644 index 00000000..99e2c67d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PoolManagerEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f1bf8d1bfc7bd84d88dbc07008b45ef +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PrefabPoolEditor.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PrefabPoolEditor.cs new file mode 100644 index 00000000..0bae8172 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PrefabPoolEditor.cs @@ -0,0 +1,24 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.DevToolsEditor +{ + [CustomEditor(typeof(PrefabPool),true)] + public class PrefabPoolEditor : DTEditor + { + protected override void OnCustomInspectorGUIBefore() + { + PoolManagerEditor.showBar(Target); + } + + + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PrefabPoolEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PrefabPoolEditor.cs.meta new file mode 100644 index 00000000..c5c311cd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Components/PrefabPoolEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 034101b2c8b1d0647afbae54cbffb340 +timeCreated: 1440757122 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DT.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DT.cs new file mode 100644 index 00000000..5b6416f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DT.cs @@ -0,0 +1,328 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System; +using System.Collections; +using System.Linq; +using System.Collections.Generic; +using FluffyUnderware.DevTools.Extensions; +using System.Reflection; +using FluffyUnderware.DevTools; + +namespace FluffyUnderware.DevToolsEditor +{ + [InitializeOnLoad] + public static class DT + { + const char editorPreferencesArraySeparator = ';'; + + public const string VERSION = "1.0.3"; + /// + /// Global override for float precision rounding (e.g. DTPropertyAttribute.Precision) + /// + public static bool _UseSnapValuePrecision; + + + public delegate void Callback(); + + public static List Projects + { + get + { + return mProjects.Values.ToList(); + } + } + + public static DTProject Project(string identifier) + { + DTProject prj = null; + if (!mProjects.TryGetValue(identifier, out prj)) + { + LoadProjects(); + if (!mProjects.TryGetValue(identifier, out prj)) + DTLog.LogError("[DevTools] Unable to find project '" + identifier + "' !"); + } + + return prj; + } + + static object mClipboardData; + static Dictionary mClipboardHandlers = new Dictionary(); + static Dictionary mProjects = new Dictionary(); + + static bool _compiling; + + static DT() + { + EditorApplication.update += delayedInitialize; + EditorApplication.update -= compileCheck; + EditorApplication.update += compileCheck; + + } + + public static void Clear() + { + foreach (DTProject prj in DT.Projects) + prj.Clear(); + DT.Projects.Clear(); + } + + public static void ReInitialize(bool loadProjects = true) + { + if (loadProjects) + LoadProjects(); + + DTToolbar.Initialize(); + HandleProjectsKeyBindings(); + } + + static void delayedInitialize() + { + EditorApplication.update -= delayedInitialize; + LoadPreferences(); + DTSelection.Initialize(); + ReInitialize(); + // Register Clipboard-Handlers + RegisterClipboardType(typeof(Vector2), new DTVector2Clipboard()); + RegisterClipboardType(typeof(Vector3), new DTVector3Clipboard()); + RegisterClipboardType(typeof(AnimationCurve), new DTAnimationCurveClipboard()); + } + + static void compileCheck() + { + if (!_compiling) + { + _compiling = EditorApplication.isCompiling; + if (_compiling) + Clear(); + } + else + _compiling = EditorApplication.isCompiling; + } + + #region ### Clipboard ### + public static void RegisterClipboardType(Type dataType, IDTClipboardHandler handler, bool overwriteExisting = false) + { + if (mClipboardHandlers.ContainsKey(dataType)) + { + if (overwriteExisting) + mClipboardHandlers[dataType] = handler; + } + else + mClipboardHandlers.Add(dataType, handler); + } + + public static void ClipboardCopy(object data) + { + Type dataType = data.GetType(); + IDTClipboardHandler handler; + if (mClipboardHandlers.TryGetValue(dataType, out handler)) + { + handler.Copy(data); + } + else + DTLog.LogError("[DevTools] No ClipboardHandler for data type '" + data.GetType().Name + "' found!"); + } + + public static T ClipboardPaste() + { + IDTClipboardHandler handler; + if (mClipboardData != null && mClipboardHandlers.TryGetValue(typeof(T), out handler)) + { + if (handler.CanPasteFrom(mClipboardData.GetType())) + { + return (T)handler.Paste(mClipboardData); + } + } + return default(T); + } + + public static bool ClipboardCanPasteTo() + { + IDTClipboardHandler handler; + if (mClipboardData != null && mClipboardHandlers.TryGetValue(typeof(T), out handler)) + { + return handler.CanPasteFrom(mClipboardData.GetType()); + } + return false; + } + + internal static void ClipBoardSet(object data) + { + mClipboardData = data; + } + + #endregion + + #region ### Project Management ### + + static void LoadProjects() + { + mProjects.Clear(); + TypeCache.TypeCollection types = TypeCache.GetTypesDerivedFrom(typeof(DTProject)); + foreach (Type t in types) + { + DTProject newProject = (DTProject)Activator.CreateInstance(t); + mProjects.Add(newProject.Identifier, newProject); + } + } + + static void HandleProjectsKeyBindings() + { + foreach (DTProject prj in Projects) + if (!prj.CheckKeyBindingNamesAreUnique()) + return; + else + prj.LoadKeyBindingRemappings(); + } + + #endregion + + #region ### EditorPrefs-Helpers ### + + static void LoadPreferences() + { + // Upgrade? + string ver = GetEditorPrefs("FluffyUnderware.DevTools.Version", VERSION); + if (ver != VERSION) + { + UpgradeDevTools(ver); + SavePreferences(); + } + } + + static void SavePreferences() + { + SetEditorPrefs("FluffyUnderware.DevTools.Version", VERSION); + } + + /// + /// Add code to handle upgrading (delete old pref-keys etc...) here + /// + /// the version stored in the EditorPrefs + static void UpgradeDevTools(string oldVersion) + { + DTLog.Log("[DevTools] Upgrading settings from " + oldVersion + " to " + VERSION); + } + + public static void SetEditorPrefs(string key, T value) + { + Type tt = typeof(T); + if (tt.IsEnum) + { + EditorPrefs.SetInt(key, Convert.ToInt32(Enum.Parse(typeof(T), value.ToString()) as Enum)); + } + else if (tt.IsArray) + { + var list = (IList)value; + string[] array = new string[list.Count]; + for (int i = 0; i < array.Length; i++) + { + array[i] = list[i].ToString(); + if(array[i].Contains(editorPreferencesArraySeparator)) + throw new ArgumentException(String.Format("value should not have any element containing a {0} character",editorPreferencesArraySeparator)); + } + SetEditorPrefs(key, String.Join(editorPreferencesArraySeparator.ToString(), array)); + } + else if (tt.Matches(typeof(int), typeof(Int32))) + EditorPrefs.SetInt(key, (value as int?).Value); + else if (tt == typeof(string)) + EditorPrefs.SetString(key, (value as string)); + else if (tt == typeof(float)) + EditorPrefs.SetFloat(key, (value as float?).Value); + else if (tt == typeof(bool)) + EditorPrefs.SetBool(key, (value as bool?).Value); + else if (tt == typeof(Color)) + EditorPrefs.SetString(key, (value as Color?).Value.ToHtml()); + else + DTLog.LogError("[DevTools] SetEditorPrefs: Unsupported datatype: " + tt.Name); + } + + public static T GetEditorPrefs(string key, T defaultValue) + { + if (EditorPrefs.HasKey(key)) + { + Type tt = typeof(T); + try + { + if (tt.IsEnum || tt.Matches(typeof(int), typeof(Int32))) + { + return (T)(object)EditorPrefs.GetInt(key, (int)(object)defaultValue); + } + else if (tt.IsArray) + { + throw new System.NotImplementedException(); + } + else if (tt == typeof(string)) + return (T)(object)EditorPrefs.GetString(key, defaultValue.ToString()); + else if (tt == typeof(float)) + return (T)(object)EditorPrefs.GetFloat(key, (float)(object)defaultValue); + else if (tt == typeof(bool)) + return (T)(object)EditorPrefs.GetBool(key, (bool)(object)defaultValue); + else if (tt == typeof(Color)) + return (T)(object)EditorPrefs.GetString(key, ((Color)(object)defaultValue).ToHtml()).ColorFromHtml(); + else + DTLog.LogError("[DevTools] SetEditorPrefs: Unsupported datatype: " + tt.Name); + } + catch (Exception e) + { + Debug.LogException(e); + return defaultValue; + } + } + return defaultValue; + } + + public static string[] GetEditorPrefs(string key) + { + string arrayString = GetEditorPrefs(key, String.Empty); + return String.IsNullOrEmpty(arrayString) ? new string[0] : arrayString.Split(editorPreferencesArraySeparator); + } + + #endregion + + #region ### Utilities ### + + /// + /// Opens Unity's preferences window + /// + public static void OpenPreferencesWindow() + { +#if UNITY_2018_3_OR_NEWER + SettingsService.OpenUserPreferences(); +#else + Assembly asm = Assembly.GetAssembly(typeof(EditorWindow)); + Type T = asm.GetType("UnityEditor.PreferencesWindow"); + if (T != null) + { + MethodInfo M = T.GetMethod("ShowPreferencesWindow", BindingFlags.NonPublic | BindingFlags.Static); + if (M != null) + M.Invoke(null, null); + else + Debug.LogError("Couldn't find method ShowPreferencesWindow in type " + T.FullName); + } + else + Debug.LogError("Couldn't find type UnityEditor.PreferencesWindow in assembly " + asm.FullName); +#endif + + } + +#if UNITY_2018_3_OR_NEWER + /// + /// Opens Unity's preferences window at a specific path. The path should be the same than the one of the associated + /// + public static void OpenPreferencesWindow(string settingsPath) + { + SettingsService.OpenUserPreferences(settingsPath); + } +#endif + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DT.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DT.cs.meta new file mode 100644 index 00000000..79300d8e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DT.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9ae275390dd4915458afdfbc1948f159 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTDebugWindow.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTDebugWindow.cs new file mode 100644 index 00000000..37bd7d72 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTDebugWindow.cs @@ -0,0 +1,59 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.DevToolsEditor +{ + public class DTDebugWindow : EditorWindow + { + string Label; + public string Text + { + get { return string.Join("", texts); } + set + { + int size = Mathf.FloorToInt(value.Length / 16382); + texts = new string[size]; + for (int i = 0; i < size; i++) + { + texts[i] = value.Substring(i * 16382, 16382); + } + } + } + Vector2 scroll; + + string[] texts; + + GUIStyle stHtmlArea; + + public static void Open(string label, string text, string windowName="Debug Dump") + { + DTDebugWindow win = EditorWindow.GetWindow(true, windowName); + win.Label = label; + win.Text = text; + } + + void OnGUI() + { + if (stHtmlArea == null) + { + stHtmlArea = new GUIStyle(EditorStyles.textArea); + stHtmlArea.richText = true; + } + GUILayout.Label(Label, EditorStyles.boldLabel); + scroll = GUILayout.BeginScrollView(scroll); + for (int i=0;i : Editor where T : UnityEngine.Object + { + #region ### Public Properties ### + + /// + /// Target Script + /// + public virtual T Target + { + get + { + return (target != null) ? target as T : null; + } + } + + /// + /// Whether the target is currently selected or not + /// + public bool TargetIsActive + { + get + { + if (target is MonoBehaviour) + return (target != null && ((MonoBehaviour)target).transform == Selection.activeTransform) ? true : false; + else + return true; + } + } + + /// + /// Whether the target is part of a prefab + /// + /// Has issues with the new prefab system. See the comments in the code that assigns IsPrefab's value to know more about this + // TODO Has issues with the new prefab system. See the comments in the code that assigns IsPrefab's value to know more about this + [Obsolete("Will get removed in the next major version. Use Unity's PrefabUtility to know if this.Target is part of a prefab")] + public bool IsPrefab { get; private set; } + + public bool IsInsideInspector { get; private set; } + + + /// + /// The Root node of all inspector fields + /// + public DTGroupNode Node + { + get + { + return mRootNode; + } + } + + /// + /// The renderer used to render inspector fields + /// + public IDTInspectorNodeRenderer NodeRenderer + { + get + { + return mNodeRenderer; + } + set + { + mNodeRenderer = value; + } + } + /// + /// Whether the inspector needs a repaint + /// + public bool NeedRepaint { get; set; } + + #endregion + + + DTGroupNode mRootNode; + IDTInspectorNodeRenderer mNodeRenderer = new DTInspectorNodeDefaultRenderer(); + bool mEnterChildren; + + #region ### Public Methods ### + + + + + #endregion + + + #region ### Protected Methods (override to change inspector appearance) ### + + protected virtual void OnEnable() + { + if (mRootNode == null) + mRootNode = new DTGroupNode("Root"); + Undo.undoRedoPerformed -= OnUndoRedo; + Undo.undoRedoPerformed += OnUndoRedo; +#pragma warning disable 618 + if (target != null) + { + PrefabAssetType prefabAssetType = PrefabUtility.GetPrefabAssetType(target); + //BUG in the new prefab system, an instantiated prefab will have IsPrefab == true, while the documentation of the PrefabUtility.GetPrefabAssetType says otherwise. But is fixing this worth it knowing that IsPrefab is not used in Curvy when using the new prefab system? + IsPrefab = prefabAssetType == PrefabAssetType.Regular || prefabAssetType == PrefabAssetType.Variant; + } + else + IsPrefab = false; +#pragma warning restore 618 + } + + protected virtual void OnDisable() + { + if (mRootNode != null) + mRootNode.Clear(); + Undo.undoRedoPerformed -= OnUndoRedo; + } + + protected virtual void OnReadNodes() + { + } + + protected virtual void OnSceneGUI() + { + } + + public override void OnInspectorGUI() + { + RenderGUI(false); + } + + public void RenderGUI(bool embedded = false) + { + if (Target == null) + return; +#if UNITY_5_6_OR_NEWER + serializedObject.UpdateIfRequiredOrScript(); +#else + serializedObject.UpdateIfDirtyOrScript(); +#endif + + if (Node.Count == 0) + ReadNodes(); + + NeedRepaint = false; + + if (mRootNode) + { + DTInspectorNode.IsInsideInspector = !embedded; + IsInsideInspector = !embedded; + OnCustomInspectorGUIBefore(); + renderNode(mRootNode); + OnCustomInspectorGUI(); + } + if (serializedObject.ApplyModifiedProperties()) + OnModified(); + + GUI.SetNextControlName(""); + + if (NeedRepaint) + Repaint(); + } + + protected virtual void OnModified() + { + } + + // + /// Add custom GUI code here, rendered before the default inspector + /// + protected virtual void OnCustomInspectorGUIBefore() + { + } + + /// + /// Add custom GUI code here, rendered after the default inspector + /// + protected virtual void OnCustomInspectorGUI() + { + } + + /// + /// Called to initialize a ReorderableList. Override to add custom behaviour + /// + /// field node + /// ArrayEx attribute of the field + protected virtual void SetupArrayEx(DTFieldNode node, ArrayExAttribute attribute) + { + // Defaults + if (attribute.ShowHeader) + { + node.ArrayEx.drawHeaderCallback = (Rect r) => + { + EditorGUI.LabelField(r, node.GUIContent); + if (attribute.DropTarget) + { + Event ev = Event.current; + switch (ev.type) + { + case EventType.DragUpdated: + if (r.Contains(ev.mousePosition)) + { + Type fieldType = node.serializedProperty.GetFieldType(); + //bug? this code is called when dragging a game object over the list of Input Spots, but not the list of Input Game Objects. Why? Both have the ArrayExAttribute with ShowHeader being true + bool allowed = DragAndDrop.objectReferences.Length > 0 && DTEditorUtility.DragDropTypeMatch(fieldType); + DragAndDrop.visualMode = allowed ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.Rejected; + } + break; + case EventType.DragPerform: + if (r.Contains(ev.mousePosition)) + { + Object[] objs = DTEditorUtility.DragDropGetObjectsOfType(node.serializedProperty.GetFieldType()); + + foreach (Object o in objs) + { + int idx = node.serializedProperty.arraySize; + node.serializedProperty.InsertArrayElementAtIndex(idx); + node.serializedProperty.GetArrayElementAtIndex(idx).objectReferenceValue = o; + } + node.serializedObject.ApplyModifiedProperties(); + } + break; + } + } + }; + } + + node.ArrayEx.drawElementCallback = (Rect r, int index, bool isActive, bool isFocused) => + { + SerializedProperty e = node.ArrayEx.serializedProperty.GetArrayElementAtIndex(index); + if (e != null) + EditorGUI.PropertyField(r, e); + }; + } + + /// + /// Called when UndoRedo occured + /// + public virtual void OnUndoRedo() + { + } + + #endregion + + + /// + /// builds node tree and process parsing attributes + /// + public void ReadNodes() + { + DTGroupNode._serializedObject = serializedObject; + SerializedProperty iterator = serializedObject.GetIterator(); + mRootNode.Clear(); + mEnterChildren = true; + + DTGroupNode baseNode = mRootNode; + DTGroupNode parentNode = baseNode; + Stack propertyPathStack = new Stack(); + Stack baseNodeStack = new Stack(); + bool resetParent = false; + + while (iterator.NextVisible(mEnterChildren)) + { + mEnterChildren = false; + if (iterator.name != "m_Script" && iterator.name != "InspectorFoldout") + { + // handle baseNode resetting (AsGroup etc...) + while (propertyPathStack.Count > 0 && !iterator.propertyPath.StartsWith(propertyPathStack.Peek())) + { + propertyPathStack.Pop(); + baseNode = baseNodeStack.Pop(); + parentNode = baseNode; + } + + + DTFieldNode fieldNode = new DTFieldNode(iterator); + + // get group parsing attributes + List groupParseAttribs = iterator.GetAttributes(typeof(IDTGroupParsingAttribute)); + groupParseAttribs.Sort(); + // get field parsing attributes + List parsingAttributes = iterator.GetAttributes(typeof(IDTFieldParsingAttribute)); + + foreach (IDTGroupParsingAttribute ga in groupParseAttribs) + { + + if (ga is TabAttribute) + { + TabAttribute tabA = (TabAttribute)ga; + parentNode = baseNode.EnsurePath(tabA.Path, false); + + if (!string.IsNullOrEmpty(tabA.TabBarName) && !string.IsNullOrEmpty(tabA.TabName)) + { + if (!parentNode[tabA.TabBarName]) + parentNode = (DTGroupNode)parentNode.Add(new DTGroupNode(tabA.TabBarName, null, DTInspectorNode.RenderAsEnum.TabBar)); + else + parentNode = (DTGroupNode)parentNode[tabA.TabBarName]; + if (!parentNode[tabA.TabName]) + parentNode = (DTGroupNode)parentNode.Add(new DTGroupNode(tabA.TabName, iterator, DTInspectorNode.RenderAsEnum.Tab)); + else + parentNode = (DTGroupNode)parentNode[tabA.TabName]; + if (tabA.Sort != 100) + parentNode.SortOrder = tabA.Sort; + } + else + DTLog.LogWarningFormat("[DevTools] Skipping [Tab] on '{0}' because Path is missing TabBar or Tab!", iterator.propertyPath); + + } + else if (ga is SectionAttribute) + { + SectionAttribute sectionA = (SectionAttribute)ga; + parentNode = createGroup(baseNode, sectionA.Path, iterator); + if (sectionA.Sort != 100) + parentNode.SortOrder = sectionA.Sort; + } + else if (ga is AsGroupAttribute) + { + AsGroupAttribute asGroupA = (AsGroupAttribute)ga; + propertyPathStack.Push(fieldNode.SerializedPropertyPath); + baseNodeStack.Push(baseNode); + parentNode = createGroup((asGroupA.PathIsAbsolute) ? baseNode : parentNode, (asGroupA.Path == null) ? fieldNode.Name : asGroupA.Path + "/" + fieldNode.Name, iterator); + baseNode = parentNode; + + } + else if (ga is GroupAttribute) + { + GroupAttribute groupA = (GroupAttribute)ga; + parentNode = createGroup(baseNode, groupA.Path, iterator); + if (groupA.Sort != 100) + parentNode.SortOrder = groupA.Sort; + resetParent = true; + } + } + + foreach (IDTFieldParsingAttribute pa in parsingAttributes) + { + if (pa is Hide) + { + fieldNode.Visible = false; + fieldNode.ContentVisible = false; + mEnterChildren = false; + } + else if (pa is AsGroupAttribute || pa is Inline) + { + fieldNode.Visible = false; + fieldNode.ContentVisible = false; + mEnterChildren = true; + + } + else if (pa is ArrayExAttribute) + { + ArrayExAttribute arrayA = (ArrayExAttribute)pa; + fieldNode.ArrayEx = new ReorderableList(serializedObject, iterator, arrayA.Draggable, arrayA.ShowHeader, arrayA.ShowAdd, arrayA.ShowDelete); + SetupArrayEx(fieldNode, arrayA); + } + else if (pa is SortOrderAttribute) + { + fieldNode.SortOrder = ((SortOrderAttribute)pa).Sort; + } + + } + + parentNode.Add(fieldNode); + if (resetParent) + { + parentNode = parentNode.Parent as DTGroupNode; + resetParent = false; + } + } + } + OnReadNodes(); + Node.Sort(); + } + + /// + /// Renders the node tree and process rendering attributes + /// + /// + void renderNode(DTInspectorNode node) + { + if (serializedObject == null) + return; + bool guistate = GUI.enabled; + DTInspectorNode item; + for (int i = 0; i < node.Items.Count; i++) + { + item = node[i]; + item.serializedObject = serializedObject; + + if (item.Disabled) + GUI.enabled = false; + if (item is DTFieldNode) + { + + DTFieldNode field = (DTFieldNode)item; + + field.serializedProperty = serializedObject.FindProperty(field.SerializedPropertyPath); + if (field.serializedProperty == null) + return; + field.Calculate(); + + if (field.Visible) + { + foreach (ActionAttribute act in item.Actions) + if (act.Position == ActionAttribute.ActionPositionEnum.Above) + NodeRenderer.RenderAction(item, act, this, Target); + + if (field.ArrayEx != null) + { + field.ArrayEx.serializedProperty = field.serializedProperty; + field.ArrayEx.DoLayoutList(); + } + else + { + NodeRenderer.RenderField(field); + field.raiseOnRender(); + } + + foreach (ActionAttribute act in item.Actions) + if (act.Position == ActionAttribute.ActionPositionEnum.Below) + NodeRenderer.RenderAction(item, act, this, Target); + } + + } + else if (item is DTGroupNode) + { + DTGroupNode group = (DTGroupNode)item; + group.Calculate(); + + if (group.Visible) + { + foreach (ActionAttribute act in item.Actions) + if (act.Position == ActionAttribute.ActionPositionEnum.Above) + NodeRenderer.RenderAction(item, act, this, Target); + + if (group.Disabled) + GUI.enabled = false; + + switch (item.RenderAs) + { + case DTInspectorNode.RenderAsEnum.Section: + NodeRenderer.RenderSectionHeader(group); + if (group.ContentVisible) + { + renderNode(group); + group.raiseOnRender(); + } + NodeRenderer.RenderSectionFooter(group); + break; + case DTInspectorNode.RenderAsEnum.TabBar: + NodeRenderer.RenderTabBarHeader(group, (group.MaxItemsPerRow == -1) ? group.Items.Count : group.MaxItemsPerRow); + if (group.SelectedIndex > -1) + { + renderNode(group[group.SelectedIndex]); + group[group.SelectedIndex].raiseOnRender(); + } + NodeRenderer.RenderTabBarFooter(group); + break; + default: + if (group.ContentVisible) + renderNode(group); + break; + } + + foreach (ActionAttribute act in item.Actions) + if (act.Position == ActionAttribute.ActionPositionEnum.Below) + NodeRenderer.RenderAction(item, act, this, Target); + + } + + } + GUI.enabled = guistate; + if (item.NeedRepaint) + { + item.NeedRepaint = false; + NeedRepaint = true; + } + } + } + + /// + /// Creates a parent group for a field, creating the path if neccessary + /// + /// "root" the path is applied to + /// node path + /// field property the parent node is for + /// + DTGroupNode createGroup(DTGroupNode baseNode, string path, SerializedProperty forProperty) + { + DTGroupNode node = baseNode.EnsurePath(path, false, forProperty); + return node; + } + + + + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditor.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditor.cs.meta new file mode 100644 index 00000000..5f5ed966 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74ac27c5ac9d99c4d8071cdcc6c7c3aa +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorClasses.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorClasses.cs new file mode 100644 index 00000000..5338f554 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorClasses.cs @@ -0,0 +1,851 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor.Extensions; +using System.Collections.Generic; +using UnityEditor.AnimatedValues; +using UnityEditorInternal; + +namespace FluffyUnderware.DevToolsEditor +{ + public delegate void DTInspectorNodeEvent(DTInspectorNode e); + + /// + /// Base Node class + /// + public class DTInspectorNode : IComparable + { + public static bool IsInsideInspector { get; set; } + public event DTInspectorNodeEvent OnNodeRender; + + public enum RenderAsEnum { Invisible, Section, TabBar, Tab, Field }; + /// + /// How to render this node + /// + public RenderAsEnum RenderAs = RenderAsEnum.Field; + /// + /// Gets a list of actions of this node + /// + public List Actions = new List(); + /// + /// Parent node + /// + public DTInspectorNode Parent; + /// + /// Child nodes + /// + public List Items = new List(); + /// + /// Gets the number of child nodes + /// + public int Count { get { return Items.Count; } } + /// + /// Gets all attributes for this node + /// + public List Attributes; + /// + /// Node name + /// + public string Name { get; set; } + + /// + /// Whether the node is expanded/visible or not + /// + public virtual bool Expanded { get; set; } + /// + /// Whether this node needs a repaint + /// + public virtual bool NeedRepaint { get; set; } + /// + /// Whether child nodes are visible or not + /// + public virtual bool ContentVisible + { + get { return mContentVisible; } + set { mContentVisible = value; } + } + + /// + /// Whether this node is visible or not + /// + public virtual bool Visible + { + get { return mVisible; } + set { mVisible = value; } + } + /// + /// Whether this node is disabled or not + /// + public virtual bool Disabled { get; set; } + /// + /// The serializedObject currently processed + /// + public SerializedObject serializedObject { get; set; } + /// + /// Label/Icon/Tooltip of this node + /// + public GUIContent GUIContent { get; set; } + /// + /// The absolute Path of this node + /// + public string Path + { + get + { + return (Parent) ? Parent.Path + "/" + Name : Name; + } + } + /// + /// The nesting Level of this node + /// + public int Level { get; private set; } + /// + /// Sort order + /// + public int SortOrder { get; set; } + + /// + /// Gets a child node by it's index + /// + /// index of the child + /// a node or null + public DTInspectorNode this[int index] + { + get + { + return Items[index]; + } + } + /// + /// Gets a child node by it's name + /// + /// name of the child + /// a node or null + public DTInspectorNode this[string name] + { + get + { + return Items.Find(x => x.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase)); + } + } + + public int Index { get; protected set; } + + + + bool mContentVisible = true; + bool mVisible = true; + + + protected DTInspectorNode(string name) + { + SortOrder = 100; + Name = name; + } + + public virtual int CompareTo(object obj) + { + DTInspectorNode other = (DTInspectorNode)obj; + int c = SortOrder.CompareTo(other.SortOrder); + return (c != 0) ? c : Index.CompareTo(other.Index); + } + /// + /// Clear everything the node contains + /// + public virtual void Clear() + { + for (int i = 0; i < Items.Count; i++) + Items[i].Clear(); + Items.Clear(); + } + + public virtual DTInspectorNode Add(DTInspectorNode node) + { + if (node != null) + { + Items.Add(node); + node.Index = Items.IndexOf(node); + node.Parent = this; + node.Level = node.Parent.Level + 1; + } + return node; + } + + public virtual void Calculate(bool firstRun = false) { } + + public void Delete() + { + foreach (DTInspectorNode it in Items) + it.Delete(); + if (Parent) + { + Parent.Items.Remove(this); + Parent.Sort(); // to reset Index + } + Parent = null; + } + + /// + /// Get a certain attribute + /// + /// Type of the attribute + /// the attribute or null + public T GetAttribute() where T : Attribute + { + return Attributes.Find(x => x.GetType().IsAssignableFrom(typeof(T))) as T; + } + + /// + /// Gets all attributes + /// + /// Type of the attribute + /// all attributes + public T[] GetAllAttributes() where T : Attribute + { + List res = Attributes.FindAll(x => x.GetType().IsAssignableFrom(typeof(T))); + T[] r = new T[res.Count]; + for (int i = 0; i < res.Count; i++) + r[i] = (T)res[i]; + return r; + } + + public static implicit operator bool(DTInspectorNode a) + { + return !object.ReferenceEquals(a, null); + } + + /// + /// Search for a node at a specific path + /// + /// Type of the node in question + /// Path and Name of the node in question + /// The search result or null + /// true if found + public bool FindNodeAt(string pathAndName, out T node) where T : DTInspectorNode + { + string[] p = pathAndName.Split('/'); + node = null; + DTInspectorNode N = this; + for (int i = 0; i < p.Length; i++) + { + N = N[p[i]]; + if (N == null) + return false; + } + node = N as T; + return node != null; + } + + /// + /// Search all child nodes for a node of the given type with a certain name + /// + /// Type of the node in question + /// Name of the node in question + /// The search result or null + /// true if found + public bool FindNode(string name, out T node) where T : DTInspectorNode + { + node = this[name] as T; + if (node != null) + return true; + else + { + foreach (DTInspectorNode it in Items) + if (it.FindNode(name, out node)) + return true; + } + return false; + } + /// + /// Sort child nodes + /// + public void Sort() + { + Items.Sort(); + + foreach (DTInspectorNode it in Items) + { + it.Index = Items.IndexOf(it); + if (it is DTGroupNode) + it.Sort(); + } + } + + internal void raiseOnRender() + { + if (OnNodeRender != null) + OnNodeRender(this); + } + + } + + /// + /// Field Node class + /// + public class DTFieldNode : DTInspectorNode + { + public string SerializedPropertyPath; + public SerializedProperty serializedProperty { get; set; } + public bool IncludeChildren { get; set; } + public ReorderableList ArrayEx { get; set; } + public string Tooltip { get; set; } + public string HelpURL { get; set; } + + public DTFieldNode(SerializedProperty property) : base(property.name) + { + RenderAs = RenderAsEnum.Field; + SerializedPropertyPath = property.propertyPath; + Attributes = property.GetAttributes(typeof(IDTFieldRenderAttribute)); + Attributes.Sort(); + GUIContent = new GUIContent(ObjectNames.NicifyVariableName(Name)); + Calculate(true); + } + + public override void Calculate(bool firstRun = false) + { + IncludeChildren = true; + Visible = true; + Disabled = false; + Actions.Clear(); + foreach (IDTFieldRenderAttribute a in Attributes) + { + if (a is Hide || a is AsGroupAttribute) + { + Visible = false; + ContentVisible = false; + IncludeChildren = false; + } + else if (a is Inline) + { + Visible = false; + IncludeChildren = true; + } + + else if (serializedProperty != null) + { + if (a is FieldConditionAttribute) + { + FieldConditionAttribute condA = (FieldConditionAttribute)a; + bool met = condA.ConditionMet(serializedProperty.serializedObject.targetObject); + + switch (condA.Action) + { + case ConditionalAttribute.ActionEnum.Show: + Visible = met; + break; + case ConditionalAttribute.ActionEnum.Hide: + Visible = !met; + break; + case ConditionalAttribute.ActionEnum.Enable: + Disabled = !met; + break; + case ConditionalAttribute.ActionEnum.Disable: + Disabled = met; + break; + default: + if (met) + Actions.Add(condA); + break; + } + + } + else if (a is FieldActionAttribute) + { + Actions.Add((FieldActionAttribute)a); + } + } + } + + } + + + + } + + /// + /// Group node class + /// + public class DTGroupNode : DTInspectorNode + { + + static internal SerializedObject _serializedObject; + + public override bool Expanded + { + get + { + return mState.target; + } + set + { + + if (mState.target != value) + { + mState.target = value; + if (serializedObject != null) + DTPersistentState.SetBool(serializedObject.targetObject.GetInstanceID().ToString() + Path, value); + NeedRepaint = true; + } + } + } + + public float ExpandedFaded + { + get + { + return mState.faded; + } + } + + public override bool ContentVisible + { + get + { + return base.ContentVisible && ExpandedFaded != 0; + } + set + { + base.ContentVisible = value; + } + } + + public override bool NeedRepaint + { + get + { + return mState.isAnimating; + } + } + + public string HelpURL { get; set; } + public bool Fixed { get; set; } + + + + + #region --- Tab Bar Properties --- + + public int SelectedIndex + { + get + { + return Count > 0 ? Mathf.Clamp(mSelectedItem, 0, Count - 1) : -1; + } + set + { + mSelectedItem = Count > 0 ? Mathf.Clamp(value, 0, Count - 1) : -1; + } + } + + public DTInspectorNode SelectedItem + { + get + { + return (SelectedIndex != -1) ? Items[SelectedIndex] : null; + } + set + { + SelectedIndex = (value == null) ? -1 : value.Index; + } + } + + public int MaxItemsPerRow { get; set; } + + #endregion + + AnimBool mState = new AnimBool(true); + int mSelectedItem = -1; + + public DTGroupNode(string name, SerializedProperty forProperty = null, RenderAsEnum renderAs = RenderAsEnum.Section) : base(name) + { + RenderAs = renderAs; + MaxItemsPerRow = -1; + if (forProperty != null) + { + Attributes = forProperty.GetAttributes(typeof(IDTGroupRenderAttribute)); + Attributes.Sort(); + Calculate(true); + } + else + { + Attributes = new List(); + GUIContent = new GUIContent(ObjectNames.NicifyVariableName(Name)); + } + + } + + public override void Calculate(bool firstRun = false) + { + Actions.Clear(); + foreach (IDTGroupRenderAttribute a in Attributes) + { + if (a is GroupAttribute) + { + GroupAttribute groupA = (GroupAttribute)a; + if (groupA.Invisible) + RenderAs = RenderAsEnum.Invisible; + if (firstRun) + { + mState.value = groupA.Expanded; + getAdditionalGroupParams(groupA); + } + } + else if (serializedObject != null) + { + if (a is GroupConditionAttribute) + { + GroupConditionAttribute condA = (GroupConditionAttribute)a; + bool met = condA.ConditionMet(serializedObject.targetObject); + + switch (condA.Action) + { + case ConditionalAttribute.ActionEnum.Show: + Visible = met; + break; + case ConditionalAttribute.ActionEnum.Hide: + Visible = !met; + break; + case ConditionalAttribute.ActionEnum.Enable: + Disabled = !met; + break; + case ConditionalAttribute.ActionEnum.Disable: + Disabled = met; + break; + default: + if (met) + Actions.Add(condA); + break; + } + + } + else if (a is GroupActionAttribute) + { + Actions.Add((GroupActionAttribute)a); + } + } + } + } + + void getAdditionalGroupParams(GroupAttribute a) + { + if (a == null) + { + GUIContent = new GUIContent(ObjectNames.NicifyVariableName(Name)); + } + else + { + GUIContent = new GUIContent(a.Label ?? ObjectNames.NicifyVariableName(Name), a.Tooltip); + HelpURL = a.HelpURL; + } + } + + public DTGroupNode EnsurePath(string path, bool includesName = false, SerializedProperty forProperty = null) + { + DTGroupNode node = this; + if (!string.IsNullOrEmpty(path)) + { + string[] p = path.Split('/'); + int hi = (includesName) ? p.Length - 1 : p.Length; + for (int i = 0; i < hi; i++) + { + DTGroupNode sub = node[p[i]] as DTGroupNode; + if (sub == null) + { + if (forProperty != null && i == hi - 1) + sub = new DTGroupNode(p[i], forProperty); + else + sub = new DTGroupNode(p[i]); + node.Add(sub); + } + node = sub; + } + } + return node; + } + + public GUIContent[] GetItemsGUIContent() + { + GUIContent[] res = new GUIContent[Count]; + for (int i = 0; i < Count; i++) + res[i] = this[i].GUIContent; + return res; + } + + public DTGroupNode FindTabBarAt(string nameAndPath) + { + DTGroupNode node; + if (FindNodeAt(nameAndPath, out node)) + if (node.RenderAs == RenderAsEnum.TabBar) + return node; + return null; + } + + public override DTInspectorNode Add(DTInspectorNode node) + { + node = base.Add(node); + DTGroupNode grp = node as DTGroupNode; + if (grp != null && _serializedObject != null && _serializedObject.targetObject != null) + grp.mState.value = DTPersistentState.GetBool(_serializedObject.targetObject.GetInstanceID().ToString() + grp.Path, grp.mState.value); + + return node; + } + + public DTGroupNode AddSection(string name, DTInspectorNodeEvent func) + { + DTInspectorNode item = this[name]; + if (item) + { + if (item.RenderAs != RenderAsEnum.Section) + return null; + } + else + { + item = new DTGroupNode(name, null, RenderAsEnum.Section); + Add(item); + item.OnNodeRender += func; + } + return item as DTGroupNode; + } + + public DTGroupNode AddTab(string name, DTInspectorNodeEvent func) + { + if (RenderAs == RenderAsEnum.TabBar) + { + DTInspectorNode item = this[name]; + if (item) + { + if (item.RenderAs != RenderAsEnum.Tab) + return null; + } + else + { + item = new DTGroupNode(name, null, RenderAsEnum.Tab); + Add(item); + item.OnNodeRender += func; + } + return item as DTGroupNode; + } + return null; + } + + + } + + + + public static class DTPersistentState + { + static Dictionary _states = new Dictionary(); + + + public static bool GetBool(string ident, bool defaultState = true) + { + + bool res; + if (!_states.TryGetValue(ident, out res)) + { + res = defaultState; + _states.Add(ident, defaultState); + } + return res; + } + + public static void SetBool(string ident, bool state) + { + if (!_states.ContainsKey(ident)) + _states.Add(ident, state); + else + _states[ident] = state; + } + + } + + #region ### Renderer ### + + public interface IDTInspectorNodeRenderer + { + void RenderTabBarHeader(DTGroupNode node, int maxItemsPerRow); + void RenderTabBarFooter(DTGroupNode node); + void RenderSectionHeader(DTGroupNode node); + void RenderSectionFooter(DTGroupNode node); + void RenderField(DTFieldNode node); + void RenderAction(DTInspectorNode node, ActionAttribute action, System.Object editorObject, System.Object targetObject); + } + + public class DTInspectorNodeDefaultRenderer : IDTInspectorNodeRenderer + { + + + public static Texture HelpIcon + { + get + { + if (mHelpIcon == null) + mHelpIcon = (Texture)EditorGUIUtility.Load("icons/_Help.png"); + return mHelpIcon; + } + } + static Texture mHelpIcon; + public static GUIStyle BoldFoldout + { + get + { + if (mBoldFoldout == null) + { + mBoldFoldout = new GUIStyle(EditorStyles.foldout); + mBoldFoldout.fontStyle = FontStyle.Bold; + mBoldFoldout.margin.top += 2; + mBoldFoldout.margin.bottom += 4; + + } + return mBoldFoldout; + } + } + static GUIStyle mBoldFoldout; + + public static GUIStyle TabbarButton + { + get + { + if (mTabbarButton == null) + { + mTabbarButton = new GUIStyle(EditorStyles.toolbarButton); + mTabbarButton.alignment = TextAnchor.MiddleCenter; + + GUIStyle skinButton = GUI.skin.button; + RectOffset skinButtonPadding = skinButton.padding; + RectOffset skinButtonMargin = skinButton.margin; + RectOffset skinButtonBorder = skinButton.border; + RectOffset skinButtonOverflow = skinButton.overflow; + + mTabbarButton.padding = new RectOffset(skinButtonPadding.left, skinButtonPadding.right, skinButtonPadding.top, skinButtonPadding.bottom); + mTabbarButton.margin = new RectOffset(skinButtonMargin.left, skinButtonMargin.right, skinButtonMargin.top, skinButtonMargin.bottom); + mTabbarButton.border = new RectOffset(skinButtonBorder.left, skinButtonBorder.right, skinButtonBorder.top, skinButtonBorder.bottom); + mTabbarButton.overflow = new RectOffset(skinButtonOverflow.left, skinButtonOverflow.right, skinButtonOverflow.top, skinButtonOverflow.bottom); + } + + return mTabbarButton; + } + } + static GUIStyle mTabbarButton; + + public virtual void RenderAction(DTInspectorNode node, ActionAttribute action, System.Object editorObject, System.Object targetObject) + { + switch (action.Action) + { + case ActionAttribute.ActionEnum.ShowInfo: + EditorGUILayout.HelpBox(action.ActionData as string, MessageType.Info); + return; + case ActionAttribute.ActionEnum.ShowWarning: + EditorGUILayout.HelpBox(action.ActionData as string, MessageType.Warning); + return; + case ActionAttribute.ActionEnum.ShowError: + EditorGUILayout.HelpBox(action.ActionData as string, MessageType.Error); + return; + case ActionAttribute.ActionEnum.Callback: + action.Callback(editorObject); + return; + } + } + + public virtual void RenderField(DTFieldNode node) + { + EditorGUILayout.PropertyField(node.serializedProperty, node.IncludeChildren); + } + + public virtual void RenderSectionHeader(DTGroupNode node) + { + GUILayout.Space(10); + + string helpUrl = node.HelpURL; + + Rect controlRect = EditorGUILayout.GetControlRect(false, 16); + int xOffset = (node.Level <= 1 && DTInspectorNode.IsInsideInspector) ? 12 : 0; + controlRect.x -= xOffset; + + bool toggleState = node.Expanded; + int indentLevel = RenderHeader(controlRect, xOffset, helpUrl, node.GUIContent, ref toggleState); + + node.Expanded = toggleState; + EditorGUILayout.BeginFadeGroup(node.ExpandedFaded); + EditorGUI.indentLevel = (node.Level <= 1) ? indentLevel : indentLevel + 1; + } + +#pragma warning disable 162 +#pragma warning disable 429 + private static readonly Color SectionHeaderBackgroundColor = + DTEditorUtility.UsesNewEditorUI ? new Color(1f, 1f, 1f) : new Color(0.8f, 0.8f, 0.8f); +#pragma warning restore 429 +#pragma warning restore 162 + public static int RenderHeader(Rect controlRect, int xOffset, string helpUrl, GUIContent toggleGuiContent, ref bool toggleState) + { + int indentLevel = EditorGUI.indentLevel; + EditorGUI.indentLevel = Mathf.Max(0, indentLevel - 1); + controlRect = EditorGUI.IndentedRect(controlRect); + DTGUI.PushColor(SectionHeaderBackgroundColor); + const int additionalHeight = 4; + Rect boxRectangle = new Rect(controlRect.x, controlRect.y - 2, controlRect.width + xOffset + 1, controlRect.height + additionalHeight); + GUI.Box(boxRectangle, "", GUI.skin.box); + DTHandles.DrawOutline(boxRectangle, Color.black); + DTGUI.PopColor(); + + Rect expandClickableArea = new Rect(controlRect); + bool hasHelp = !string.IsNullOrEmpty(helpUrl); + if (hasHelp) + expandClickableArea.width -= 12; + + toggleState = GUI.Toggle(expandClickableArea, toggleState, toggleGuiContent, BoldFoldout); + if (hasHelp) + { + if (GUI.Button(new Rect(boxRectangle.xMax - 20, boxRectangle.y + 3, 16, 16) + , new GUIContent(HelpIcon, "Help"), new GUIStyle())) + Application.OpenURL(helpUrl); + } + + GUILayout.Space(additionalHeight); + return indentLevel; + } + + public virtual void RenderSectionFooter(DTGroupNode node) + { + if (node.Level > 1) + EditorGUI.indentLevel--; + EditorGUILayout.EndFadeGroup(); + } + + public virtual void RenderTabBarHeader(DTGroupNode node, int maxItemsPerRow) + { + GUILayout.Space(4); + + int s = GUILayout.SelectionGrid(node.SelectedIndex, node.GetItemsGUIContent(), Mathf.Min(node.Count, maxItemsPerRow), TabbarButton); + if (s != node.SelectedIndex) + { + node.SelectedIndex = s; + GUIUtility.keyboardControl = 0; + } + Color c = GUI.color; + if (!EditorGUIUtility.isProSkin) + GUI.color = new Color(c.r, c.g, c.b, 0.5f); + + GUILayout.BeginVertical(GUI.skin.box); + GUI.color = c; + } + + public virtual void RenderTabBarFooter(DTGroupNode node) + { + GUILayout.EndVertical(); + } + + } + + #endregion +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorClasses.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorClasses.cs.meta new file mode 100644 index 00000000..c61aed9c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorClasses.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c82ecfa39ebfe4a4984a5602b822ca2d +timeCreated: 1436962698 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorUtility.cs new file mode 100644 index 00000000..e8c3afb8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorUtility.cs @@ -0,0 +1,159 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using System.Reflection; +using System.Collections.Generic; +using FluffyUnderware.DevTools.Extensions; +using System.Collections; +using Object = UnityEngine.Object; + +namespace FluffyUnderware.DevToolsEditor +{ + public static class DTEditorUtility + { + /// + /// Does Unity use the new editor's UI? + /// + public const bool UsesNewEditorUI +#if UNITY_2019_3_OR_NEWER //new UI + = true; +#else + = false; +#endif + + public static Camera ActiveCamera + { + get + { + return (SceneView.currentDrawingSceneView) ? SceneView.currentDrawingSceneView.camera : Camera.current; + } + } + + public static bool DragDropTypeMatch(System.Type type) + { + foreach (Object go in DragAndDrop.objectReferences) + { + if (go is GameObject) + { + if (type.IsSubclassOf(typeof(Component)) == false) + return false; + if (((GameObject)go).GetComponent(type) == null) + return false; + } + + else if (go.GetType() != type) + return false; + } + + return true; + } + + public static bool DragDropTypeMatch() where T : Object + { + return DragDropTypeMatch(typeof(T)); + } + + public static Object[] DragDropGetObjectsOfType(System.Type type) + { + if (type.IsArrayOrList()) + return new Object[0]; + List res = new List(); + foreach (Object o in DragAndDrop.objectReferences) + { + if (o.GetType() == type) + res.Add(o); + else if (o is GameObject) + { + Component f = ((GameObject)o).GetComponent(type); + if (f != null) + res.Add(f); + } + } + return res.ToArray(); + } + + public static T CreateAsset() where T : ScriptableObject + { + T asset = ScriptableObject.CreateInstance(); + ProjectWindowUtil.CreateAsset(asset, "New " + typeof(T).Name + ".asset"); + AssetDatabase.SaveAssets(); + return asset; + } + + public static void ToggleSceneViewGizmos(bool gizmosOn) + { + ToggleSceneViewGizmos(gizmosOn, new string[0]); + } + + public static void ToggleSceneViewGizmos(bool gizmosOn, params string[] scriptClasses) + { + int val = gizmosOn ? 1 : 0; + List classes = new List(scriptClasses); + Assembly asm = Assembly.GetAssembly(typeof(Editor)); + System.Type type = asm.GetType("UnityEditor.AnnotationUtility"); + if (type != null) + { + MethodInfo getAnnotations = type.GetMethod("GetAnnotations", BindingFlags.Static | BindingFlags.NonPublic); + if (getAnnotations != null) + { + MethodInfo setGizmoEnabled = type.GetMethod("SetGizmoEnabled", BindingFlags.Static | BindingFlags.NonPublic); + if (setGizmoEnabled != null) + { + MethodInfo setIconEnabled = type.GetMethod("SetIconEnabled", BindingFlags.Static | BindingFlags.NonPublic); + if (setIconEnabled != null) + { + object annotations = getAnnotations.Invoke(null, null); + foreach (object annotation in (IEnumerable)annotations) + { + Type annotationType = annotation.GetType(); + FieldInfo classIdField = annotationType.GetField("classID", BindingFlags.Public | BindingFlags.Instance); + FieldInfo scriptClassField = annotationType.GetField("scriptClass", BindingFlags.Public | BindingFlags.Instance); + if (classIdField != null && scriptClassField != null) + { + int classId = (int)classIdField.GetValue(annotation); + string scriptClass = (string)scriptClassField.GetValue(annotation); + if (classes.Count == 0 || classes.Contains(scriptClass)) + { + setGizmoEnabled.Invoke(null, new object[] { classId, scriptClass, val }); + setIconEnabled.Invoke(null, new object[] { classId, scriptClass, val }); + } + } + } + } + else + Debug.LogError("Couldn't find method SetIconEnabled in type " + type.FullName); + } + else + Debug.LogError("Couldn't find method SetGizmoEnabled in type " + type.FullName); + } + else + Debug.LogError("Couldn't find method GetAnnotations in type " + type.FullName); + } + else + Debug.LogError("Couldn't find type UnityEditor.AnnotationUtility in assembly " + asm.FullName); + } + + public static List LoadPrefabsContaining(string path) where T : UnityEngine.Component + { + List res = new List(); + + string[] gos = AssetDatabase.FindAssets("t:gameobject", new string[] { path }); + foreach (string id in gos) + { + GameObject go = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(id)); + T cmp = go.GetComponent(); + if (cmp != null) + res.Add(cmp); + } + return res; + } + + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorUtility.cs.meta new file mode 100644 index 00000000..172e737c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTEditorUtility.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d1ee7bd8bdd696409b8ed1a10163e05 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTGUI.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTGUI.cs new file mode 100644 index 00000000..66aa29a2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTGUI.cs @@ -0,0 +1,201 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace FluffyUnderware.DevToolsEditor +{ + public static class DTGUI + { + static Stack _BGColorStack = new Stack(); + static Stack _ColorStack = new Stack(); + static Stack _ContentColorStack = new Stack(); + + + #region --- Colors --- + + public static void PushColor(Color col) + { + _ColorStack.Push(GUI.color); + GUI.color = col; + } + + public static void PopColor() + { + GUI.color = _ColorStack.Pop(); + } + + public static void PushBackgroundColor(Color col) + { + _BGColorStack.Push(GUI.color); + GUI.color = col; + } + + public static void PopBackgroundColor() + { + GUI.color = _BGColorStack.Pop(); + } + + public static void PushContentColor(Color col) + { + _ContentColorStack.Push(GUI.contentColor); + GUI.contentColor = col; + } + + public static void PopContentColor() + { + GUI.contentColor = _ContentColorStack.Pop(); + } + + + + #endregion + + #region --- Events --- + + public static bool IsClick + { + get + { + return (Event.current!=null && Event.current.type == EventType.MouseDown && Event.current.button == 0); + } + } + public static bool IsContextClick + { + get + { + return (Event.current != null && Event.current.type == EventType.MouseDown && Event.current.button == 1); + } + } + + public static bool IsLayout { get { return Event.current != null && Event.current.type == EventType.Layout; } } + public static bool IsRepaint { get { return Event.current != null && Event.current.type == EventType.Repaint; } } + + public static Vector2 MousePosition + { + get + { + return (Event.current != null) ? Event.current.mousePosition : Vector2.zero; + } + } + + public static void UseEvent(int hashcode, Event e) + { + int controlID = GUIUtility.GetControlID(hashcode, FocusType.Passive); + GUIUtility.hotControl = controlID; + e.Use(); + GUIUtility.hotControl = 0; + + } + + #endregion + + #region --- Controls --- + + public static void HtmlHelpBox(string message, MessageType type = MessageType.None) + { + GUIContent c; + switch (type) + { + case MessageType.Info: + c = EditorGUIUtility.IconContent("console.infoicon"); + break; + case MessageType.Warning: + c = EditorGUIUtility.IconContent("console.warningicon"); + break; + case MessageType.Error: + c = EditorGUIUtility.IconContent("console.erroricon"); + break; + default: + c = new GUIContent(); + break; + } + c.text=message; + GUILayout.Label(c, DTStyles.HtmlHelpBox); + } + + public static Vector2 CompactVector2Field(Rect position, Vector2 value) + { + float labelWidth = 13f; + + float num2 = (position.width - 2) / 2f; + Rect position2 = new Rect(position); + position2.width = num2; + float labelWidth2 = EditorGUIUtility.labelWidth; + int indentLevel = EditorGUI.indentLevel; + EditorGUIUtility.labelWidth = labelWidth; + EditorGUI.indentLevel = 0; + value.x = EditorGUI.FloatField(position2, "X", value.x); + position2.x += num2 + 2f; + value.y = EditorGUI.FloatField(position2, "Y", value.y); + + EditorGUIUtility.labelWidth = labelWidth2; + EditorGUI.indentLevel = indentLevel; + + return value; + } + + public static Vector3 CompactVector3Field(Rect position, Vector3 value) + { + float labelWidth = 13f; + float num2 = (position.width - 4) / 3f; + Rect position2 = new Rect(position); + position2.width = num2; + float labelWidth2 = EditorGUIUtility.labelWidth; + int indentLevel = EditorGUI.indentLevel; + EditorGUIUtility.labelWidth = labelWidth; + EditorGUI.indentLevel = 0; + value.x = EditorGUI.FloatField(position2, "X", value.x); + position2.x += num2 + 2f; + value.y = EditorGUI.FloatField(position2, "Y", value.y); + position2.x += num2 + 2f; + value.z = EditorGUI.FloatField(position2, "Z", value.z); + + EditorGUIUtility.labelWidth = labelWidth2; + EditorGUI.indentLevel = indentLevel; + + return value; + } + + public static bool LinkButton(Rect position, GUIContent content, ref bool repaint) + { + if (position.Contains(DTGUI.MousePosition)) + repaint = true; + return GUI.Button(position, content, DTStyles.HtmlLinkLabel); + } + + #endregion + + public static float LabelWidth(string label) + { + return LabelWidth(new GUIContent(label)); + } + public static float LabelWidth(GUIContent label) + { + return EditorStyles.label.CalcSize(label).x; + } + + public static Rect FromTo(this Vector2 start, Vector2 end) + { + Rect result = new Rect(start.x, start.y, end.x - start.x, end.y - start.y); + if (result.width < 0f) + { + result.x += result.width; + result.width = -result.width; + } + if (result.height < 0f) + { + result.y += result.height; + result.height = -result.height; + } + return result; + } + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTGUI.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTGUI.cs.meta new file mode 100644 index 00000000..586e9ed9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTGUI.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef286eb30f9728447bb8584e9a582119 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTHandles.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTHandles.cs new file mode 100644 index 00000000..1498fd7d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTHandles.cs @@ -0,0 +1,538 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System; +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; + +namespace FluffyUnderware.DevToolsEditor +{ + public static class DTHandles + { + public static class SnapSettings + { + private static float s_MoveSnapX; + private static float s_MoveSnapY; + private static float s_MoveSnapZ; + private static float s_ScaleSnap; + private static float s_RotationSnap; + private static bool s_Initialized; + + private static void Initialize() + { + if (!s_Initialized) + { + s_MoveSnapX = EditorPrefs.GetFloat("MoveSnapX", 1f); + s_MoveSnapY = EditorPrefs.GetFloat("MoveSnapY", 1f); + s_MoveSnapZ = EditorPrefs.GetFloat("MoveSnapZ", 1f); + s_ScaleSnap = EditorPrefs.GetFloat("ScaleSnap", 0.1f); + s_RotationSnap = EditorPrefs.GetFloat("RotationSnap", 15f); + s_Initialized = true; + } + } + + public static Vector3 Move + { + get { return new Vector3(MoveX, MoveY, MoveZ); } + } + public static float MoveX + { + get { Initialize(); return s_MoveSnapX; } + } + public static float MoveY + { + get { Initialize(); return s_MoveSnapY; } + } + public static float MoveZ + { + get { Initialize(); return s_MoveSnapZ; } + } + public static float Rotation + { + get { Initialize(); return s_RotationSnap; } + } + public static float ScaleSnap + { + get { Initialize(); return s_ScaleSnap; } + } + } + + public static bool MouseOverSceneView + { + get + { + return (SceneView.currentDrawingSceneView != null && Event.current != null) ? + SceneView.currentDrawingSceneView.position.Contains(GUIUtility.GUIToScreenPoint(Event.current.mousePosition)) : false; + } + } + + public static bool SceneViewIsSelected + { + get + { + return SceneView.focusedWindow == SceneView.currentDrawingSceneView; + } + } + + static Stack mHandlesColorstack = new Stack(); + + public static void PushHandlesColor(Color col) + { + mHandlesColorstack.Push(GUI.color); + Handles.color = col; + } + + public static void PopHandlesColor() + { + Handles.color = mHandlesColorstack.Pop(); + } + + static Stack mHandlesMatrixstack = new Stack(); + + public static void PushMatrix(Matrix4x4 matrix) + { + mHandlesMatrixstack.Push(matrix); + Handles.matrix = matrix; + } + + public static void PopMatrix() + { + Handles.matrix = mHandlesMatrixstack.Pop(); + } + + + public static void LabelIcon(Vector3 position, string text, Color labelColor) + { + GUIStyle iconStyle = GUI.skin.button; + iconStyle.normal.textColor = labelColor; + Handles.Label(position, text, iconStyle); + } + + public static bool Button(int id, Vector3 position, Quaternion direction, float size, float pickSize, bool useHandleSize, Handles.CapFunction capFunc, Color hoverCol, out bool isHovering) + { + Event current = Event.current; + isHovering = false; + if (useHandleSize) + { + float s = HandleUtility.GetHandleSize(position); + size *= s; + pickSize *= s; + } + switch (current.GetTypeForControl(id)) + { + case EventType.MouseDown: + if (HandleUtility.nearestControl == id) + { + GUIUtility.hotControl = id; + current.Use(); + } + break; + case EventType.MouseUp: + if ((current.button == 0 || current.button == 2) && GUIUtility.hotControl == id) + { + GUIUtility.hotControl = 0; + current.Use(); + if (HandleUtility.nearestControl == id) + { + return true; + } + } + break; + case EventType.MouseMove: + if ((HandleUtility.nearestControl == id && current.button == 0) || (GUIUtility.keyboardControl == id && current.button == 2)) + { + HandleUtility.Repaint(); + } + break; + case EventType.Repaint: + { + Color color = Handles.color; + if (HandleUtility.nearestControl == id && GUI.enabled) + { + isHovering = true; + Handles.color = hoverCol; + } + + capFunc(id, position, Quaternion.identity, size, EventType.Repaint); + Handles.color = color; + break; + } + case EventType.Layout: + if (GUI.enabled) + { + HandleUtility.AddControl(id, HandleUtility.DistanceToCircle(position, pickSize)); + } + break; + } + return false; + } + + public static bool PositionHandle(Vector3 position, Quaternion rotation, out Vector3 delta) + { + Vector3 p = Handles.PositionHandle(position, rotation); + delta = p - position; + return delta != Vector3.zero; + } + + public static bool RotationHandle(Vector3 position, Quaternion rotation, out Quaternion newRotation) + { + newRotation = Handles.RotationHandle(rotation, position); + return (newRotation != rotation); + } + + static Vector2 s_StartMousePosition; + static Vector2 s_CurrentMousePosition; + static float s_StartScale; + + public static bool ScaleSlider(float scale, Vector3 position, Vector3 direction, Quaternion rotation, float length, float size, float snap, out float delta) + { + int id = GUIUtility.GetControlID("ScaleSliderHash".GetHashCode(), FocusType.Keyboard); + float newScale = scale; + Event current = Event.current; + switch (current.GetTypeForControl(id)) + { + case EventType.MouseDown: + if ((HandleUtility.nearestControl == id && current.button == 0) || (GUIUtility.keyboardControl == id && current.button == 2)) + { + GUIUtility.keyboardControl = id; + GUIUtility.hotControl = id; + s_CurrentMousePosition = (s_StartMousePosition = current.mousePosition); + s_StartScale = scale; + current.Use(); + EditorGUIUtility.SetWantsMouseJumping(1); + } + break; + case EventType.MouseUp: + if (GUIUtility.hotControl == id && (current.button == 0 || current.button == 2)) + { + GUIUtility.hotControl = 0; + current.Use(); + EditorGUIUtility.SetWantsMouseJumping(0); + } + break; + case EventType.MouseDrag: + if (GUIUtility.hotControl == id) + { + s_CurrentMousePosition += current.delta; + float num = 1f + HandleUtility.CalcLineTranslation(s_StartMousePosition, s_CurrentMousePosition, position, direction) * 0.1f; + num = Handles.SnapValue(num, snap); + newScale = s_StartScale * num; + GUI.changed = true; + current.Use(); + } + break; + case EventType.Repaint: + { + Color color = Color.white; + if (id == GUIUtility.keyboardControl) + { + color = Handles.color; + Handles.color = Handles.selectedColor; + } + //float num2 = size; + //if (GUIUtility.hotControl == id) + //{ + // num2 = size * scale / s_StartScale; + //} + Handles.CubeHandleCap(id, position + direction * length, rotation, HandleUtility.GetHandleSize(position) * size, EventType.Repaint); + + Handles.DrawLine(position, position + direction * length); + if (id == GUIUtility.keyboardControl) + { + Handles.color = color; + } + break; + } + case EventType.Layout: + HandleUtility.AddControl(id, HandleUtility.DistanceToLine(position, position + direction * length)); + HandleUtility.AddControl(id, HandleUtility.DistanceToCircle(position + direction * length, size)); + break; + } + delta = newScale - scale; + + return (scale != newScale); + } + + public static Quaternion RotationHandle(Quaternion rotation, Vector3 position, float size) + { + Color staticColor = new Color(0.5f, 0.5f, 0.5f, 0f); + float staticBlend = 0.6f; + float handleSize = HandleUtility.GetHandleSize(position) * size; + Color color = Handles.color; + bool flag = !Tools.hidden && EditorApplication.isPlaying && ContainsStatic(Selection.gameObjects); + Handles.color = ((!flag) ? Handles.xAxisColor : Color.Lerp(Handles.xAxisColor, staticColor, staticBlend)); + rotation = Handles.Disc(rotation, position, rotation * Vector3.right, handleSize, true, SnapSettings.Rotation); + Handles.color = ((!flag) ? Handles.yAxisColor : Color.Lerp(Handles.yAxisColor, staticColor, staticBlend)); + rotation = Handles.Disc(rotation, position, rotation * Vector3.up, handleSize, true, SnapSettings.Rotation); + Handles.color = ((!flag) ? Handles.zAxisColor : Color.Lerp(Handles.zAxisColor, staticColor, staticBlend)); + rotation = Handles.Disc(rotation, position, rotation * Vector3.forward, handleSize, true, SnapSettings.Rotation); + if (!flag) + { + Handles.color = Handles.centerColor; + rotation = Handles.Disc(rotation, position, Camera.current.transform.forward, handleSize * 1.1f, false, 0f); + rotation = Handles.FreeRotateHandle(rotation, position, handleSize); + } + Handles.color = color; + return rotation; + } + + /// + /// Draws a 3D position handle + /// + /// The updated position + /// + public static Vector3 PositionHandle(int controlId1, int controlId2, int controlId3, Vector3 position, Quaternion rotation, float handleSize, float rectangleToSliderRatio = 0.15f, Color additionalColor = new Color()) + { + float sliderSize = HandleUtility.GetHandleSize(position) * handleSize; + float rectangleSize = sliderSize * rectangleToSliderRatio; + + Vector3 snap = SnapSettings.Move; + + Vector3 axis1 = rotation * Vector3.right; + Vector3 axis2 = rotation * Vector3.up; + Vector3 axis3 = rotation * Vector3.forward; + Color axis1Color = new Color(0.9f, 0.3f, 0.1f) + additionalColor; + Color axis2Color = new Color(0.6f, 0.9f, 0.3f) + additionalColor; + Color axis3Color = new Color(0.2f, 0.4f, 0.9f) + additionalColor; + + Vector3 updatedPosition = position; + + Handles.color = axis1Color; + updatedPosition += Handles.Slider(position, axis1, sliderSize, Handles.ArrowHandleCap, snap.x) - position; + updatedPosition += Handles.Slider2D(controlId1, position, rectangleSize * (axis3 + axis2), Vector3.Cross(axis3, axis2), axis2, axis3, rectangleSize, Handles.RectangleHandleCap, new Vector2(snap.y, snap.z)) - position; + + Handles.color = axis2Color; + updatedPosition += Handles.Slider(position, axis2, sliderSize, Handles.ArrowHandleCap, snap.y) - position; + updatedPosition += Handles.Slider2D(controlId2, position, rectangleSize * (axis1 + axis3), Vector3.Cross(axis1, axis3), axis3, axis1, rectangleSize, Handles.RectangleHandleCap, new Vector2(snap.z, snap.x)) - position; + + Handles.color = axis3Color; + updatedPosition += Handles.Slider(position, axis3, sliderSize, Handles.ArrowHandleCap, snap.z) - position; + updatedPosition += Handles.Slider2D(controlId3, position, rectangleSize * (axis1 + axis2), Vector3.Cross(axis1, axis2), axis2, axis1, rectangleSize, Handles.RectangleHandleCap, new Vector2(snap.y, snap.x)) - position; + + return updatedPosition; + } + + /// + /// Draws a 2D position handle + /// + /// + /// 0 for XY, 1 for XZ and 2 for YZ + /// + /// + /// + /// The updated position + public static Vector3 PositionHandle2D(int controlId, Vector3 position, Quaternion rotation, float size, int plane = 0) + { + float sliderSize = HandleUtility.GetHandleSize(position) * size; + float rectSize = sliderSize * 0.15f; + + Vector3 snap = SnapSettings.Move; + + Vector3 axis1; + Vector3 axis2; + Color axis1Color; + Color axis2Color; + Color planeColor; + { + Color xColor = new Color(0.9f, 0.3f, 0.1f); + Color yColor = new Color(0.6f, 0.9f, 0.3f); + Color zColor = new Color(0.2f, 0.4f, 0.9f); + + switch (plane) + { + //XY + case 0: + axis1 = rotation * Vector3.right; + axis2 = rotation * Vector3.up; + axis1Color = xColor; + axis2Color = yColor; + planeColor = zColor; + break; + //XZ + case 1: + axis1 = rotation * Vector3.right; + axis2 = rotation * Vector3.forward; + axis1Color = xColor; + axis2Color = zColor; + planeColor = yColor; + break; + //YZ + case 2: + axis1 = rotation * Vector3.up; + axis2 = rotation * Vector3.forward; + axis1Color = yColor; + axis2Color = zColor; + planeColor = xColor; + break; + default: + throw new ArgumentOutOfRangeException(nameof(plane)); + } + } + + Vector3 updatedPosition = position; + + Handles.color = axis1Color; + updatedPosition += Handles.Slider(position, axis1, sliderSize, Handles.ArrowHandleCap, snap.x) - position; + + Handles.color = axis2Color; + updatedPosition += Handles.Slider(position, axis2, sliderSize, Handles.ArrowHandleCap, snap.y) - position; + + Handles.color = planeColor; + updatedPosition += Handles.Slider2D(controlId, position, rectSize * (axis1 + axis2), Vector3.Cross(axis1, axis2), axis2, axis1, rectSize, Handles.RectangleHandleCap, new Vector2(snap.x, snap.y)) - position; + + return updatedPosition; + } + + public static Vector3 TinyHandle2D(int id, Vector3 position, Quaternion rotation, float size, Handles.CapFunction func = null) + { + return TinyHandle2D(id, position, rotation * Vector3.forward, rotation * Vector3.up, rotation * Vector3.right, size, func); + } + + public static Vector3 TinyHandle2D(int id, Transform transform, float size, Handles.CapFunction func = null) + { + return TinyHandle2D(id, transform.position, transform.forward, transform.up, transform.right, size, func); + } + + public static Vector3 TinyHandle2D(int id, Vector3 pos, Vector3 forward, Vector3 up, Vector3 right, float size, Handles.CapFunction func = null) + { + return Handles.Slider2D(id, pos, forward, up, right, HandleUtility.GetHandleSize(pos) * size, func, SnapSettings.Move); + } + + public static void DrawSolidRectangleWithOutline(Vector2 center, Vector2 extends, Color backgroundColor, Color outlineColor) + { + DrawSolidRectangleWithOutline(new Rect(center.x - extends.x / 2, center.y - extends.y / 2, extends.x, extends.y), backgroundColor, outlineColor); + } + + public static void DrawSolidRectangleWithOutline(Rect r, Color backgroundColor, Color outlineColor) + { + Vector3[] verts = new Vector3[4] + { + new Vector3(r.xMin,r.yMin,0), + new Vector3(r.xMax,r.yMin,0), + new Vector3(r.xMax,r.yMax,0), + new Vector3(r.xMin,r.yMax,0) + }; + Handles.DrawSolidRectangleWithOutline(verts, backgroundColor, outlineColor); + } + + public static void DrawOutline(Rect r, Color outlineColor) + { + DrawSolidRectangleWithOutline(r, new Color(0, 0, 0, 0), outlineColor); + } + + public static void WireCubeCap(Vector3 position, Vector3 size) + { + Vector3 half = size / 2; + // draw front + Handles.DrawLine(position + new Vector3(-half.x, -half.y, half.z), position + new Vector3(half.x, -half.y, half.z)); + Handles.DrawLine(position + new Vector3(-half.x, -half.y, half.z), position + new Vector3(-half.x, half.y, half.z)); + Handles.DrawLine(position + new Vector3(half.x, half.y, half.z), position + new Vector3(half.x, -half.y, half.z)); + Handles.DrawLine(position + new Vector3(half.x, half.y, half.z), position + new Vector3(-half.x, half.y, half.z)); + // draw back + Handles.DrawLine(position + new Vector3(-half.x, -half.y, -half.z), position + new Vector3(half.x, -half.y, -half.z)); + Handles.DrawLine(position + new Vector3(-half.x, -half.y, -half.z), position + new Vector3(-half.x, half.y, -half.z)); + Handles.DrawLine(position + new Vector3(half.x, half.y, -half.z), position + new Vector3(half.x, -half.y, -half.z)); + Handles.DrawLine(position + new Vector3(half.x, half.y, -half.z), position + new Vector3(-half.x, half.y, -half.z)); + // draw corners + Handles.DrawLine(position + new Vector3(-half.x, -half.y, -half.z), position + new Vector3(-half.x, -half.y, half.z)); + Handles.DrawLine(position + new Vector3(half.x, -half.y, -half.z), position + new Vector3(half.x, -half.y, half.z)); + Handles.DrawLine(position + new Vector3(-half.x, half.y, -half.z), position + new Vector3(-half.x, half.y, half.z)); + Handles.DrawLine(position + new Vector3(half.x, half.y, -half.z), position + new Vector3(half.x, half.y, half.z)); + } + + public static void ArrowCap(Vector3 position, Vector3 direction, Color outlineColor, float length, float lineWidth = 0.4f, float headWidth = 1f, float headRatio = 0.3f, bool useHandleSize = true) + { + float size = (useHandleSize) ? HandleUtility.GetHandleSize(position) : 1; + + ArrowCap(position, direction, Vector3.up, outlineColor, length, lineWidth, headWidth, headRatio, size); + } + + public static void ArrowCap(Vector3 position, Vector3 direction, Vector3 upDirection, Color outlineColor, float length, float lineWidth, float headWidth, float headRatio, float sizeMultiplier) + { + Vector3[] arrow = new Vector3[8]; + Vector3 start = position; + length *= sizeMultiplier; + Vector3 end = position + direction * length; + + Vector3 right = Vector3.Cross(upDirection, direction).normalized; + + float hh = length * headRatio; + Vector3 rlw2 = right * lineWidth / 2 * sizeMultiplier; + Vector3 rhw2 = right * headWidth / 2 * sizeMultiplier; + arrow[0] = start - rlw2; + arrow[1] = end - direction * hh - rlw2; + arrow[2] = end - direction * hh - rhw2; + arrow[3] = end; + arrow[4] = end - direction * hh + rhw2; + arrow[5] = end - direction * hh + rlw2; + arrow[6] = start + rlw2; + arrow[7] = arrow[0]; + + Handles.DrawAAConvexPolygon(arrow[2], arrow[3], arrow[4]); + Handles.DrawAAConvexPolygon(arrow[0], arrow[1], arrow[5], arrow[6]); + if (Handles.color != outlineColor) + { + Color c = Handles.color; + Handles.color = outlineColor; + Handles.DrawAAPolyLine(arrow); + Handles.color = c; + } + } + + public static void BoundsCap(Bounds b) + { + WireCubeCap(b.center, b.size); + } + + public static Vector3 TranslateByPixel(Vector3 position, float x, float y) + { + return TranslateByPixel(position, new Vector3(x, y)); + } + public static Vector3 TranslateByPixel(Vector3 position, Vector3 translateBy) + { + Camera cam = SceneView.currentDrawingSceneView.camera; + if (cam) + return cam.ScreenToWorldPoint(cam.WorldToScreenPoint(position) + translateBy); + else + return position; + } + + public static Vector3 TranslateAligned(Vector3 position, GUIContent content, TextAlignment alignment = TextAlignment.Center, GUIStyle style = null) + { + if (style == null) + style = EditorStyles.label; + float w = style.CalcSize(content).x; + switch (alignment) + { + case TextAlignment.Center: + return TranslateByPixel(position, new Vector3(-w / 2, 0, 0)); + case TextAlignment.Right: + return TranslateByPixel(position, new Vector3(w / 2, 0, 0)); + default: + return position; + } + + } + + static bool ContainsStatic(GameObject[] objects) + { + if (objects == null || objects.Length == 0) + { + return false; + } + for (int i = 0; i < objects.Length; i++) + { + if (objects[i] != null && objects[i].isStatic) + { + return true; + } + } + return false; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTHandles.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTHandles.cs.meta new file mode 100644 index 00000000..b596e7e8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTHandles.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6a1d31433dbd4e43934fdeedb24a25b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTProject.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTProject.cs new file mode 100644 index 00000000..dc34037e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTProject.cs @@ -0,0 +1,242 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System; +using FluffyUnderware.DevTools; + + +namespace FluffyUnderware.DevToolsEditor +{ + public abstract class DTProject : IComparable + { + public string Identifier { get; private set; } + public string Version { get; private set; } + public DTResource Resource { get; protected set; } + [Obsolete("Assumed to be always true")] + public bool ShowToolbarInAllSceneViews = false; + + public DTToolbarOrientation ToolbarOrientation + { + get { return mTBOrientation; } + set + { + if (mTBOrientation != value) + { + mTBOrientation = value; + if (!string.IsNullOrEmpty(Identifier)) + { + SetEditorPrefs("ToolbarOrientation", ToolbarOrientation); + } + else + DTLog.LogError("[DevTools] Project " + this.GetType().Name + "missing identifier!"); + DTToolbar.RecalcItemSize = true; + } + } + } + public DTToolbarMode ToolbarMode + { + get { return mTBMode; } + set + { + if (mTBMode != value) + { + mTBMode = value; + if (!string.IsNullOrEmpty(Identifier)) + { + SetEditorPrefs("ToolbarMode", ToolbarMode); + } + else + DTLog.LogError("[DevTools] Project " + this.GetType().Name + "missing identifier!"); + DTToolbar.RecalcItemSize = true; + } + } + } + + Dictionary AdditionalKeyBindings = new Dictionary(); + internal List ToolbarItems = new List(); + + static DTToolbarOrientation mTBOrientation = DTToolbarOrientation.Left; + static DTToolbarMode mTBMode = DTToolbarMode.Full; + + protected DTProject(string identifier, string version) + { + Identifier = identifier; + Version = version; + LoadPreferences(); + } + + internal void Clear() + { + ToolbarItems.Clear(); + AdditionalKeyBindings.Clear(); + } + + public virtual void ResetPreferences() + { + } + + public virtual void LoadPreferences() + { + if (!string.IsNullOrEmpty(Identifier)) + { + // Upgrade? + string ver=GetEditorPrefs("Version", Version); + if (string.Compare(ver, Version)==-1)// (ver != Version) + { + UpgradePreferences(ver); + SetEditorPrefs("Version", Version); + } + + mTBMode=GetEditorPrefs("ToolbarMode", ToolbarMode); + mTBOrientation=GetEditorPrefs("ToolbarOrientation", ToolbarOrientation); + + } else + DTLog.LogError("[DevTools] Project "+this.GetType().Name+"missing identifier!"); + } + + public virtual void SavePreferences() + { + if (!string.IsNullOrEmpty(Identifier)) + { + SetEditorPrefs("Version",Version); + SetEditorPrefs("ToolbarMode", ToolbarMode); + SetEditorPrefs("ToolbarOrientation", ToolbarOrientation); + } else + DTLog.LogError("[DevTools] Project " + this.GetType().Name + "missing identifier!"); + } + + public List GetProjectBindings() + { + List res = new List(); + foreach (DTToolbarItem item in ToolbarItems) + foreach (EditorKeyBinding binding in item.KeyBindings) + if (binding.ShowInPrefs) + res.Add(binding); + res.AddRange(AdditionalKeyBindings.Values); + res.Sort(); + return res; + } + + public EditorKeyBinding RegisterKeyBinding(EditorKeyBinding binding) + { + EditorKeyBinding b; + if (AdditionalKeyBindings.TryGetValue(binding.Name,out b)) + return b; + else { + setKeyBindingFromPrefs(binding,false); + AdditionalKeyBindings.Add(binding.Name, binding); + return binding; + } + } + + /// + /// For all EditorKeyBindings registered to ToolbarItems of this project, check if Name is unique + /// + /// + internal bool CheckKeyBindingNamesAreUnique() + { + + Dictionary dict = new Dictionary(); + object exist; + foreach (DTToolbarItem item in ToolbarItems) + foreach (EditorKeyBinding binding in item.KeyBindings) + { + if (dict.TryGetValue(binding.Name, out exist)){ + DTLog.LogError(string.Format("[DevTools] KeyBindings need unique names! ({0} and {1}",item.GetType().Name,exist.GetType().Name)); + return false; + } else + dict.Add(binding.Name,item); + } + + return true; + } + + void setKeyBindingFromPrefs(EditorKeyBinding binding, bool removePrefsIfEqual=true) + { + string newBindString = GetEditorPrefs(binding.Name, ""); + if (!string.IsNullOrEmpty(newBindString) ){ + // Same binding? Then remove prefs setting + if (removePrefsIfEqual && newBindString == binding.ToPrefsString()) + DeleteEditorPrefs(binding.Name); + else // load and set new binding + binding.Set(newBindString); + } + } + + /// + /// For all EditorKeyBindings registered to ToolbarItems of this project, manage remappings stored in EditorPrefs + /// + internal void LoadKeyBindingRemappings() + { + // Toolbars + foreach (DTToolbarItem item in ToolbarItems) + for (int i=0;i(string key, T value) + { + DT.SetEditorPrefs(Identifier + "." + key, value); + } + + public T GetEditorPrefs(string key, T defaultValue) + { + return DT.GetEditorPrefs(Identifier + "." + key, defaultValue); + } + + public string[] GetEditorPrefs(string key) + { + return DT.GetEditorPrefs(Identifier + "." + key); + } + + public bool HasEditorPrefs(string key) + { + return EditorPrefs.HasKey(Identifier + "." + key); + } + + public void DeleteEditorPrefs(string key) + { + EditorPrefs.DeleteKey(Identifier + "." + key); + } + + public T FindItem() where T:DTToolbarItem + { + Type t = typeof(T); + for (int i = 0; i < ToolbarItems.Count; i++) + if (ToolbarItems[i].GetType() == t) + return (T)ToolbarItems[i]; + return null; + } + + internal void SetRadioGroupState(DTToolbarRadioButton active) + { + for (int i = 0; i < ToolbarItems.Count; i++) + { + DTToolbarRadioButton rad = ToolbarItems[i] as DTToolbarRadioButton; + if (rad && rad.RadioGroup.Equals(active.RadioGroup, StringComparison.CurrentCultureIgnoreCase)) + rad.mOn = (rad == active); + } + } + + public int CompareTo(object obj) + { + DTProject other = (DTProject)obj; + return Identifier.CompareTo(other.Identifier); + } + + + + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTProject.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTProject.cs.meta new file mode 100644 index 00000000..45e8ede3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTProject.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f699006303cd07e4fb52f3fd516ad100 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTResource.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTResource.cs new file mode 100644 index 00000000..4ffbecb8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTResource.cs @@ -0,0 +1,160 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using System.Reflection; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.DevToolsEditor +{ + /// + /// Class for loading image resources + /// + public abstract class DTResource + { + public Assembly ResourceDLL; + public string ResourceNamespace = string.Empty; + + /// + /// Load an image defined by a packed string either from the Resource DLL or the Editor/Resources folder + /// + /// string formed name (including namespace),width,height. E.g. "Assets/Editor/myIcon,16,16" + /// a Texture + public virtual Texture2D LoadPacked(string packedstring,Assembly assembly=null, string resourcePath="") + { + if (!string.IsNullOrEmpty(packedstring)) + { + string[] s = packedstring.Split(','); + if (s.Length == 3) + { + try + { + int w = int.Parse(s[1], System.Globalization.CultureInfo.InvariantCulture); + int h = int.Parse(s[2], System.Globalization.CultureInfo.InvariantCulture); + return Load(s[0], w, h, assembly, resourcePath); + } + catch (Exception e) { Debug.LogException(e);} + } + } + return null; + } + + /// + /// Load an image either from a Resource DLL or the Editor/Resources folder + /// + /// the resource DLL assembly + /// the resource path(namespace) + /// name of the resource file (without extension) + /// width of the image (can be omitted when loading from texture file) + /// height of the image (can be omitted when loading from texture file) + /// a Texture + public virtual Texture2D Load(string resourceName, int width=0, int height=0,Assembly assembly=null, string resourcePath="") + { + if (assembly == null) + assembly = ResourceDLL; + if (string.IsNullOrEmpty(resourcePath)) + resourcePath = ResourceNamespace; + + Texture2D texture = null; + if (string.IsNullOrEmpty(System.IO.Path.GetExtension(resourceName))) + resourceName += ".png"; + + //if (!resourcePath.EndsWith(".")) + // resourcePath += "."; + + if (assembly != null) + { + using (System.IO.Stream myStream = assembly.GetManifestResourceStream(resourcePath + resourceName)) + { + if (myStream != null) + { + texture = new Texture2D(width, height, TextureFormat.ARGB32, false); + texture.LoadImage(ReadToEnd(myStream)); + if (texture != null) + { + //texture.hideFlags = HideFlags.DontSave; + return texture; + } + } + } + } + + // Try from file sys: + texture = (Texture2D)Resources.Load($"Editor/{System.IO.Path.GetFileNameWithoutExtension(resourceName)}"); + + if (texture == null) + { + DTLog.LogWarning("Missing resource: " + resourcePath + resourceName); + } + //else + // texture.hideFlags = HideFlags.DontSave; + + + + + + return texture; + + + } + + protected static byte[] ReadToEnd(System.IO.Stream stream) + { + long originalPosition = stream.Position; + stream.Position = 0; + + try + { + byte[] readBuffer = new byte[4096]; + + int totalBytesRead = 0; + int bytesRead; + + while ((bytesRead = stream.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0) + { + totalBytesRead += bytesRead; + + if (totalBytesRead == readBuffer.Length) + { + int nextByte = stream.ReadByte(); + if (nextByte != -1) + { + byte[] temp = new byte[readBuffer.Length * 2]; + System.Buffer.BlockCopy(readBuffer, 0, temp, 0, readBuffer.Length); + System.Buffer.SetByte(temp, totalBytesRead, (byte)nextByte); + readBuffer = temp; + totalBytesRead++; + } + } + } + + byte[] buffer = readBuffer; + if (readBuffer.Length != totalBytesRead) + { + buffer = new byte[totalBytesRead]; + System.Buffer.BlockCopy(readBuffer, 0, buffer, 0, totalBytesRead); + } + return buffer; + } + finally + { + stream.Position = originalPosition; + } + } + + public static Assembly FindResourceDLL(string name) + { + //BUG will return the wrong dll if there is another dll that starts with the same name + return TypeExt.GetLoadedAssemblies().FirstOrDefault(asm => asm.FullName.StartsWith(name)); + } + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTResource.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTResource.cs.meta new file mode 100644 index 00000000..3cb4ba7e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTResource.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4e7542226fdb3e8458d6dd939f67c79e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSceneView.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSceneView.cs new file mode 100644 index 00000000..89c5a9f9 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSceneView.cs @@ -0,0 +1,136 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using FluffyUnderware.DevTools.Extensions; +using System; + +namespace FluffyUnderware.DevToolsEditor +{ +#if UNITY_2021_2_OR_NEWER + [Obsolete("Now that SceneView has a OnSceneGUI method, there is seemingly no need to use DTSceneView which implements its own OnSceneGUI. It might even conflict with SceneView.OnSceneGUI")] +#endif + public class DTSceneView : SceneView + { + + #region ### Serialized fields ### + #endregion + + #region ### Public Properties ### + + public bool In2DMode + { + get { return in2DMode; } + set + { + in2DMode = value; + } + } + + public SceneViewState State + { + get + { + return mStateField.GetValue(this) as SceneViewState; + } + set + { + mStateField.SetValue(this, value); + } + } + + #endregion + + #region ### Privates Fields ### + + FieldInfo mStateField; + + #endregion + + #region ### Unity Callbacks ### + /*! \cond UNITY */ + + public override void OnEnable() + { + base.OnEnable(); + getInternals(); + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + += onScene; + } + + public override void OnDisable() + { + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= onScene; + base.OnDisable(); + } + + /*! \endcond */ + #endregion + + #region ### Public Static Methods ### + #endregion + + #region ### Public Methods ### + +#if UNITY_2021_2_OR_NEWER + protected new virtual void OnSceneGUI() +#else + protected virtual void OnSceneGUI() +#endif + { + } + + #endregion + + #region ### Privates & Internals ### + /*! \cond PRIVATE */ + + void onScene(SceneView view) + { + if (EditorApplication.isCompiling) + { + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= onScene; + Close(); + GUIUtility.ExitGUI(); + } + if (view == this) + OnSceneGUI(); + } + + void getInternals() + { + mStateField = GetType().FieldByName("m_SceneViewState", true, true); + } + + + + /*! \endcond */ + #endregion + + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSceneView.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSceneView.cs.meta new file mode 100644 index 00000000..ca9ccfc0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSceneView.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 97953e54a2c2482449099d6d8dfb2de4 +timeCreated: 1468747688 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSelection.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSelection.cs new file mode 100644 index 00000000..4b4031d8 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSelection.cs @@ -0,0 +1,207 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using FluffyUnderware.DevTools.Extensions; + +namespace FluffyUnderware.DevToolsEditor +{ + public static class DTSelection + { + static GameObject mCurrentGameObject; + static int mCurrentGameObjectsCount; + + public static event DT.Callback OnSelectionChange; + + internal static bool MuteEvents { get; set; } + + public static int Count + { + get { return mCurrentGameObjectsCount; } + } + + internal static void Initialize() + { + EditorApplication.update -= checkSelection; + //TODO listen on Selection.selectionChanged instead? + EditorApplication.update += checkSelection; + + } + + public static bool HasComponent(bool allowMultiSelection = false) where T : Component + { + if (allowMultiSelection) + return mCurrentGameObjectsCount >= 1 && getSelection().Count > 0; + else + return mCurrentGameObjectsCount == 1 && mCurrentGameObject != null && mCurrentGameObject.GetComponent(typeof(T)) != null; + } + + public static bool HasComponent(bool allowMultiSelection = false) where T : Component where T1 : Component + { + return HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection); + } + + public static bool HasComponent(bool allowMultiSelection = false) + where T : Component + where T1 : Component + where T2 : Component + { + return HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection); + } + + public static bool HasComponent(bool allowMultiSelection = false) + where T : Component + where T1 : Component + where T2 : Component + where T3 : Component + { + return HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection); + } + + public static bool HasComponent(bool allowMultiSelection = false) + where T : Component + where T1 : Component + where T2 : Component + where T3 : Component + where T4 : Component + { + return HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection) || + HasComponent(allowMultiSelection); + } + + public static T GetAs(bool allowMultiSelection = false) where T : Component + { + List ar = getSelection(); + if (ar.Count == 1 || (ar.Count > 0 && allowMultiSelection)) + return (T)ar[0]; + else + return null; + } + + public static List GetAllAs() where T : Component + { + return getSelection(); + } + + public static GameObject GetGameObject(bool allowMultiSelection = false) + { + GameObject[] selectedGameObjects = Selection.gameObjects; + if (selectedGameObjects.Length == 1 || (selectedGameObjects.Length > 1 && allowMultiSelection)) + return Selection.activeGameObject; + else + return null; + } + + public static Vector3 GetPosition() + { + Vector3 p = Vector3.zero; + List tt = DTSelection.GetAllAs(); + if (tt.Count > 0) + { + for (int i = 0; i < tt.Count; i++) + p += tt[i].position; + + p /= tt.Count; + } + return p; + } + + static List getSelection() where T : Component + { + Object[] S = Selection.GetFiltered(typeof(T), SelectionMode.TopLevel | SelectionMode.ExcludePrefab | SelectionMode.Editable); + List L = new List(); + foreach (Object O in S) + if (O != null) + { + if (Selection.activeTransform == ((Component)O).transform) + L.Insert(0, (T)O); + else + L.Add((T)O); + } + return L; + } + + public static void Clear() + { + Selection.objects = new Object[0]; + mCurrentGameObject = null; + mCurrentGameObjectsCount = 0; + raiseOnSelectionChange(); + } + + public static void Set(params Object[] objects) + { + if (objects.Length > 0) + { + Selection.objects = objects; + mCurrentGameObject = Selection.activeGameObject; + mCurrentGameObjectsCount = Selection.gameObjects.Length; + raiseOnSelectionChange(); + } + else + Clear(); + } + + public static void AddGameObjects(params Component[] objects) + { + List gl = new List(objects.Length); + foreach (Component c in objects) + if (c != null && c.gameObject != null && !gl.Contains(c.gameObject) && !Selection.Contains(c)) + gl.Add(c.gameObject); + if (gl.Count > 0) + { + GameObject[] cur = Selection.gameObjects; + Selection.objects = cur.AddRange(gl.ToArray()); + } + } + + public static void SetGameObjects(params Component[] objects) + { + if (objects.Length > 0) + { + List gl = new List(objects.Length); + foreach (Component c in objects) + if (c != null && c.gameObject != null && !gl.Contains(c.gameObject)) + gl.Add(c.gameObject); + Selection.objects = gl.ToArray(); + mCurrentGameObject = Selection.activeGameObject; + mCurrentGameObjectsCount = Selection.gameObjects.Length; + raiseOnSelectionChange(); + } + else + Clear(); + } + + static void checkSelection() + { + GameObject[] selectedGameObjects = Selection.gameObjects; + if (!MuteEvents && Selection.activeGameObject != mCurrentGameObject || mCurrentGameObjectsCount != selectedGameObjects.Length) + { + mCurrentGameObject = Selection.activeGameObject; + mCurrentGameObjectsCount = selectedGameObjects.Length; + raiseOnSelectionChange(); + } + } + + static void raiseOnSelectionChange() + { + if (OnSelectionChange != null) + OnSelectionChange(); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSelection.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSelection.cs.meta new file mode 100644 index 00000000..550f6920 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTSelection.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb2b7daa166196847886162a590328f2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTStatusbar.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTStatusbar.cs new file mode 100644 index 00000000..cd874608 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTStatusbar.cs @@ -0,0 +1,151 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor.Extensions; + +namespace FluffyUnderware.DevToolsEditor +{ + public class DTStatusbar + { + string mSourceIdent; + string mStatusBarMessage; + MessageType mStatusBarMessageType; + float mStatusBarMessageDelay; + double mStatusBarMessageLastTime; + + GUIStyle mMessageStyle; + public GUIStyle MessageStyle + { + get + { + if (mMessageStyle == null) + { + mMessageStyle = GetStyle(); + } + return mMessageStyle; + } + set + { + mMessageStyle = value; + } + } + + public bool Visible = true; + + + protected virtual GUIStyle GetStyle() + { + GUIStyle st=new GUIStyle(GUI.skin.GetStyle("HelpBox")); + st.richText = true; + return st; + } + + protected virtual void GetColors() + { + switch (mStatusBarMessageType) + { + case MessageType.Error: + GUI.contentColor = Color.white; + GUI.backgroundColor = Color.red.SkinAwareColor(); + break; + case MessageType.Warning: + GUI.contentColor = Color.white; + GUI.backgroundColor = Color.yellow.SkinAwareColor(); + break; + case MessageType.Info: + GUI.contentColor = Color.yellow; + break; + default: + GUI.contentColor = Color.white; + break; + } + + + } + + public void Clear(string source="") + { + if (source == mSourceIdent || string.IsNullOrEmpty(mSourceIdent)) + { + mStatusBarMessage = ""; + mStatusBarMessageType = MessageType.None; + mStatusBarMessageDelay = 0; + mStatusBarMessageLastTime = EditorApplication.timeSinceStartup; + mSourceIdent = ""; + } + + } + + public void Set(string text, string source="",float delay = 0) + { + SetMessage(text, source,MessageType.None, delay); + } + + public void SetError(string text, string source = "", float delay = 0) + { + SetMessage(text,source, MessageType.Error, delay); + } + + public void SetInfo(string text, string source = "", float delay = 0) + { + SetMessage(text, source,MessageType.Info, delay); + } + + public void SetWarning(string text, string source = "", float delay = 0) + { + SetMessage(text, source,MessageType.Warning, delay); + } + + public void SetMessage(string msg = "", string source="",MessageType type = MessageType.None, float delay = 0) + { + mStatusBarMessage = msg; + mStatusBarMessageType = type; + mStatusBarMessageDelay = delay; + mStatusBarMessageLastTime = EditorApplication.timeSinceStartup; + mSourceIdent = source; + } + + /// + /// Renders the StatusBar + /// + /// the rect to use + /// (Optional) A style to override the default style + /// Allow the to be modified to fit the text to render + /// true if you should do a repaint (i.e. a color fade is in progress) + public bool Render(Rect renderingZone, GUIStyle style=null, bool fit=false) + { + if (!Visible || string.IsNullOrEmpty(mStatusBarMessage)) + return false; + + Color c = GUI.contentColor; + //Color bc = GUI.backgroundColor; + GetColors(); + GUI.contentColor = GUI.contentColor.Fade(mStatusBarMessageLastTime, mStatusBarMessageDelay, 1); + bool repaint = (EditorApplication.timeSinceStartup-mStatusBarMessageDelay + /// Starting position for each side + /// + static Rect[] _InitialRects; + /// + /// Last item position for each side + /// + static Rect[] _ItemRect; + + static Event _handleEvent; + + internal static void Initialize() + { + RecalcItemSize = true; + _handleEvent = null; + loadItems(); + DTSelection.OnSelectionChange -= OnSelectionChange; + DTSelection.OnSelectionChange += OnSelectionChange; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + -= Render; + SceneView. +#if UNITY_2019_1_OR_NEWER +duringSceneGui +#else +onSceneGUIDelegate +#endif + += Render; + EditorApplication.hierarchyWindowItemOnGUI -= onHierarchy; + EditorApplication.hierarchyWindowItemOnGUI += onHierarchy; + EditorApplication.update -= onUpdate; + EditorApplication.update += onUpdate; + + } + + + static void loadItems() + { + foreach (DTProject prj in DT.Projects) + prj.ToolbarItems.Clear(); + + TypeCache.TypeCollection toolbarItemTypes = TypeCache.GetTypesDerivedFrom(typeof(DTToolbarItem)); + toolbarItemTypes.Intersect(TypeCache.GetTypesWithAttribute()).ForEach(type => Activator.CreateInstance(type)); + + foreach (DTProject prj in DT.Projects) + prj.ToolbarItems.Sort(); + } + + static void OnSelectionChange() + { + foreach (DTProject project in DT.Projects) + foreach (DTToolbarItem item in project.ToolbarItems) + item.OnSelectionChange(); + + RecalcItemSize = true; + } + + static void onHierarchy(int instanceID, Rect selectionRect) + { + if (Selection.instanceIDs.Contains(instanceID)) + _handleEvent = new Event(Event.current); + } + + static void onUpdate() + { + if (Event.current != null || _handleEvent != null) + { + DTSelection.MuteEvents = true; + foreach (DTProject project in DT.Projects) + foreach (DTToolbarItem item in project.ToolbarItems) + { + if (_handleEvent != null && item.Visible && item.Enabled) + item.HandleEvents(_handleEvent); + if (Event.current != null && item.Visible && item.Enabled) + item.HandleEvents(Event.current); + } + DTSelection.MuteEvents = false; + } + _handleEvent = null; + } + + + static Rect getStatusBarRect() + { + Vector2 v = GUIUtility.GUIToScreenPoint(Vector2.zero); + Rect r = SceneView.currentDrawingSceneView.position; + // If SceneView is on another monitor, r.x doesn't start at 0, but GUIToScreenPoint gives the offset + r.x -= v.x; + r.y = _ItemRect[(int)DTToolbarOrientation.Bottom].y - 25; + r.height = 20; + + return r; + } + + public static bool detailOpen; + + static void Render(SceneView view) + { + Event ev = Event.current; + MouseOverToolbarElement = false; + // Only let certain hotkeys pass + if (!EditorGUIUtility.editingTextField) + { + GUIUtility.keyboardControl = GUIUtility.GetControlID(FocusType.Passive); + } + + List projects = DT.Projects; + projects.Sort(); + + Handles.BeginGUI(); + GUI.skin = null; // to ensure light-skin is used if set in preferences (or not Pro) + // Get largest item for each side + if (RecalcItemSize) + calcMaxItemDimension(); + + // Get starting position for each side + _InitialRects = getInitialItemRect(); + _ItemRect = new Rect[4]; + _InitialRects.CopyTo(_ItemRect, 0); + + DTToolbarItem lastItem = null; + DTSelection.MuteEvents = true; + + DTToolbarItem hovering = null; + + foreach (DTProject project in projects) + { + int side = (int)project.ToolbarOrientation; + if (lastItem && lastItem.Project.ToolbarOrientation != project.ToolbarOrientation) + lastItem = null; + List items = project.ToolbarItems; + + // Render items + for (int i = 0; i < items.Count; i++) + { + if (items[i].Visible) + { + Vector2 itemSize = items[i].GetItemSize(); // size of current item + _ItemRect[side] = advanceItemRect(lastItem, items[i], itemSize); // advance by using the last itemRect and the new(current) size + + items[i].mItemRect = _ItemRect[side]; // Store current item rect + + + if (items[i].Enabled) + { + Handles.EndGUI(); + EditorKeyBinding.BindingsEnabled = false; + if (items[i].mItemRect.Contains(DTGUI.MousePosition)) + { + hovering = items[i]; + MouseOverToolbarElement = true; + } + items[i].OnSceneGUI(); + + EditorKeyBinding.BindingsEnabled = true; + Handles.BeginGUI(); + } + GUI.enabled = items[i].Enabled; + items[i].Render(_ItemRect[side]); + + GUI.enabled = true; + if (ev != null && items[i].Enabled && (DTToolbarItem.FocusedItem == null || DTToolbarItem.FocusedItem == items[i])) + items[i].HandleEvents(ev); + + lastItem = items[i]; + } + } + } + DTSelection.MuteEvents = false; + detailOpen = false; + // Render items client area (Note: itemRect contains the last rendered item, a.k.a. a way to get the number of rows/cols needed + foreach (DTProject project in projects) + { + List items = project.ToolbarItems; + for (int i = 0; i < items.Count; i++) + { + if (items[i].Visible && items[i].ShowClientArea) + { + detailOpen = true; + Rect clientRect = items[i].mItemRect; + int side = (int)project.ToolbarOrientation; + switch (project.ToolbarOrientation) + { + case DTToolbarOrientation.Left: + clientRect.x = _ItemRect[side].x + _MaxItemDimension[side].x + 5; + break; + case DTToolbarOrientation.Right: + clientRect.x = _ItemRect[side].x - 5; + break; + case DTToolbarOrientation.Top: + clientRect.y = _ItemRect[side].y + _MaxItemDimension[side].y + 5; + break; + case DTToolbarOrientation.Bottom: + clientRect.y = _ItemRect[side].y - 5; + break; + } + if (clientRect.width > 0 && clientRect.height > 0) + { + items[i].mBackgroundRects.Clear(); + MouseOverToolbarElement = MouseOverToolbarElement || clientRect.Contains(DTGUI.MousePosition); + EditorKeyBinding.BindingsEnabled = false; + items[i].RenderClientArea(clientRect); + EditorKeyBinding.BindingsEnabled = true; + if (DTGUI.IsClick) + foreach (Rect r in items[i].mBackgroundRects) + if (r.Contains(ev.mousePosition)) + DTGUI.UseEvent(items[i].GetHashCode(), ev); + } + } + } + } + + // Handle statusbar info when hovering over an item + if (hovering != null) + DTToolbarItem._StatusBar.Set(hovering.StatusBarInfo, "Info"); + else + DTToolbarItem._StatusBar.Clear("Info"); + + // Render Statusbar + DTToolbarItem._StatusBar.Render(getStatusBarRect(), null, true); + + Handles.EndGUI(); + + } + + static Rect[] getInitialItemRect() + { + Rect[] res = new Rect[4]; + for (int side = 0; side < 4; side++) + { + Rect r = new Rect(); + switch (side) + { + case (int)DTToolbarOrientation.Left: + r.x = 5; r.y = 10; + break; + case (int)DTToolbarOrientation.Right: + r.x = SceneView.currentDrawingSceneView.position.width - 10 - _MaxItemDimension[side].x; + r.y = 115; + break; + case (int)DTToolbarOrientation.Top: + float lft = _MaxItemDimension[(int)DTToolbarOrientation.Left].x; + r.x = 5; r.y = 10; + if (lft > 0) + r.x += 10 + lft; + break; + default: // Bottom + lft = _MaxItemDimension[(int)DTToolbarOrientation.Left].x; + r.x = 5; r.y = SceneView.currentDrawingSceneView.position.height - _MaxItemDimension[side].y - 30; + if (lft > 0) + r.x += 10 + lft; + break; + } + res[side] = r; + } + + return res; + } + + static Rect advanceItemRect(DTToolbarItem lastItem, DTToolbarItem newItem, Vector2 newItemSize) + { + Rect itemRect; + float space = 0; + int side = (int)newItem.Project.ToolbarOrientation; + + if (lastItem != null) + { + itemRect = lastItem.mItemRect; + if (lastItem.Project != newItem.Project) + space = PROJECTSPACE; + else + space = (newItem.Order - lastItem.Order >= 10) ? ITEMSPACE : 0; + } + else + itemRect = _InitialRects[side]; + + switch (newItem.Project.ToolbarOrientation) + { + case DTToolbarOrientation.Left: + itemRect.y += itemRect.height + 3 + space; + if (itemRect.y + newItemSize.y > SceneView.currentDrawingSceneView.position.height - 30) + { + itemRect.y = 10; + itemRect.x += _MaxItemDimension[(int)DTToolbarOrientation.Left].x + 5; + } + itemRect.width = _MaxItemDimension[(int)DTToolbarOrientation.Left].x; + itemRect.height = newItemSize.y; + break; + case DTToolbarOrientation.Right: + itemRect.y += itemRect.height + 3 + space; + if (itemRect.y + newItemSize.y > SceneView.currentDrawingSceneView.position.height - 30) + { + itemRect.y = 10; + itemRect.x -= _MaxItemDimension[(int)DTToolbarOrientation.Right].x + 5; + } + itemRect.width = _MaxItemDimension[(int)DTToolbarOrientation.Right].x; + itemRect.height = newItemSize.y; + break; + case DTToolbarOrientation.Top: + itemRect.x += 3 + itemRect.width + space; + if (itemRect.x + newItemSize.x > SceneView.currentDrawingSceneView.position.width - _MaxItemDimension[(int)DTToolbarOrientation.Left].x - _MaxItemDimension[(int)DTToolbarOrientation.Right].x) + { + itemRect.x = _InitialRects[(int)DTToolbarOrientation.Top].x; + itemRect.y += _MaxItemDimension[(int)DTToolbarOrientation.Top].y + 5; + } + itemRect.width = _MaxItemDimension[(int)DTToolbarOrientation.Top].x; + itemRect.height = newItemSize.y; + break; + case DTToolbarOrientation.Bottom: + itemRect.x += 3 + itemRect.width + space; + if (itemRect.x + newItemSize.x > SceneView.currentDrawingSceneView.position.width - _MaxItemDimension[(int)DTToolbarOrientation.Left].x - _MaxItemDimension[(int)DTToolbarOrientation.Right].x) + { + itemRect.x = _InitialRects[(int)DTToolbarOrientation.Top].x; + itemRect.y -= _MaxItemDimension[(int)DTToolbarOrientation.Bottom].y + 5; + } + itemRect.width = _MaxItemDimension[(int)DTToolbarOrientation.Bottom].x; + itemRect.height = newItemSize.y; + break; + + } + return itemRect; + } + + /// + /// For each side, find the item with the largest dimensions + /// + static void calcMaxItemDimension() + { + RecalcItemSize = false; + _MaxItemDimension = new Vector2[4]; + int side; + foreach (DTProject prj in DT.Projects) + { + side = (int)prj.ToolbarOrientation; + foreach (DTToolbarItem item in prj.ToolbarItems) + if (item.Visible) + _MaxItemDimension[side] = Vector2.Max(_MaxItemDimension[side], item.GetItemSize()); + } + } + + + internal static void SetRadioGroupState(DTToolbarRadioButton active) + { + active.Project.SetRadioGroupState(active); + } + } + + public enum DTToolbarMode : int + { + Text = 1, + Icon = 2, + Full = 15, + } + + public enum DTToolbarOrientation : int + { + Left = 0, + Right = 1, + Top = 2, + Bottom = 3 + } + + public class DTToolbarStatus : DTStatusbar + { + + protected override void GetColors() + { + GUI.contentColor = new Color(0, 0, 0, 0.75f); + } + protected override GUIStyle GetStyle() + { + GUIStyle style = base.GetStyle(); + style.alignment = TextAnchor.MiddleCenter; + Texture2D bgTex = new Texture2D(1, 1); + bgTex.SetPixel(0, 0, new Color(1, 1, 1, 0.5f)); + bgTex.Apply(); + bgTex.hideFlags = HideFlags.DontSave; + style.normal.background = bgTex; + return style; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbar.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbar.cs.meta new file mode 100644 index 00000000..ca9cbdcf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbar.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d3bf3b884967a3469804e83d059b658 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbarItem.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbarItem.cs new file mode 100644 index 00000000..a104d706 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbarItem.cs @@ -0,0 +1,365 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System; +using FluffyUnderware.DevTools; +using System.Collections.Generic; + +namespace FluffyUnderware.DevToolsEditor +{ + + public abstract class DTToolbarItem : IComparable + { + /// + /// If set, disables event processing for all other items. + /// + public static DTToolbarItem FocusedItem { get; set; } + public Texture2D Icon + { + get + { + if (mIcon==null && !string.IsNullOrEmpty(mIconPackedString) && Project.Resource!=null) + mIcon = Project.Resource.LoadPacked(mIconPackedString); + return mIcon; + } + set + { + if (mIcon != value) + mIcon = value; + } + } + + public string Label { get; set; } + public string Tooltip { get; set; } + public DTProject Project { get; set; } + public int Order { get; set; } + + public static DTToolbarStatus _StatusBar = new DTToolbarStatus(); + + public List KeyBindings + { + get { return mKeyBindings;} + } + + public GUIStyle Style + { + get { return DTStyles.TBButton; } + } + + public GUIContent Content + { + get + { + string keyTT = (KeyBindings.Count>0) ? KeyBindings[0].ToTooltipString() : string.Empty; + + switch (Project.ToolbarMode) + { + case DTToolbarMode.Icon: + if (Icon != null) + return new GUIContent(Icon, Tooltip + keyTT); + else // fallback to "Text" + return new GUIContent(Label, Tooltip + keyTT); + case DTToolbarMode.Text: + return new GUIContent(Label, Tooltip+keyTT); + default: + return new GUIContent(Label, Icon, Tooltip+keyTT); + } + } + } + + public bool Visible + { + get { return mVisible; } + set + { + if (mVisible != value) + mVisible=value; + } + } + + public bool Enabled + { + get { return mEnabled; } + set + { + if (mEnabled != value) + mEnabled = value; + } + } + + public virtual bool ShowClientArea + { + get { return mShowClientArea; } + set + { + if (mShowClientArea != value) + mShowClientArea = value; + } + } + + public bool IsMouseOver + { + get + { + return mItemRect.Contains(DTGUI.MousePosition); + } + } + + public virtual string StatusBarInfo + { + get { return string.Empty; } + } + + bool mVisible = true; + bool mEnabled = true; + bool mShowClientArea; + string mIconPackedString; + Texture2D mIcon; + + List mKeyBindings = new List(); + + static DTToolbarItem _lastClickedItem; + + internal Rect mItemRect; + internal List mBackgroundRects = new List(); + + protected DTToolbarItem() + { + object[] attribs = this.GetType().GetCustomAttributes(typeof(ToolbarItemAttribute), true); + if (attribs.Length > 0) + { + ToolbarItemAttribute a=(ToolbarItemAttribute)attribs[0]; + Project = DT.Project(a.Project); + Project.ToolbarItems.Add(this); + Label = a.Label; + Tooltip = a.Tooltip; + if (!string.IsNullOrEmpty(a.Icon)) + { + mIconPackedString = (!EditorGUIUtility.isProSkin && !string.IsNullOrEmpty(a.IconLightSkin)) ? a.IconLightSkin : a.Icon; + } + Order = a.Order; + OnSelectionChange(); + } + } + + + #region ### Events ### + + public virtual void OnClick() + { + if (_lastClickedItem!=null && _lastClickedItem!=this) + _lastClickedItem.OnOtherItemClicked(this); + _lastClickedItem = this; + } + + public virtual void OnSelectionChange() + { + } + + public virtual void OnOtherItemClicked(DTToolbarItem other) + { + } + + + #endregion + + /// + /// Renders the item (button etc.) itself inside a Handles.BeginGUI()/Handles.EndGUI() block + /// + /// area to use + public virtual void Render(Rect r) + { + } + + /// + /// Renders an item's client area (if ShowClientArea==true) inside a Handles.BeginGUI()/Handles.EndGUI() block + /// + /// initial Rect with x/y set to starting position + public virtual void RenderClientArea(Rect r) + { + } + + /// + /// Regular OnSceneGUI call. Place preview etc. here + /// + public virtual void OnSceneGUI() + { + } + + /// + /// Returns the size of the item + /// + /// the size the item needs + public virtual Vector2 GetItemSize() + { + return Style.CalcSize(Content); + } + + public virtual void HandleEvents(Event e) + { + if (KeyBindings.Count > 0 && KeyBindings[0].IsTriggered(e)) + OnClick(); + } + + + + #region ### GUI Orientation Helpers ### + + /// + /// Changes the rect to properly place an GUI control with a certain width and height. + /// + /// Call this before the first GUI control, but after Background() + /// + /// + /// + protected void SetElementSize(ref Rect r, float width, float height) + { + r.width = width; + r.height = height; + switch (Project.ToolbarOrientation) + { + case DTToolbarOrientation.Right: + r.x -= r.width; + break; + case DTToolbarOrientation.Bottom: + r.y-=r.height; + break; + } + + + //SmallLineAdjust(ref r,height); + Rect scene=SceneView.currentDrawingSceneView.position; + + if (r.xMax > scene.width) + r.xMin = scene.width - r.width; + if (r.yMax > scene.height) + r.yMin = scene.height - r.height; + } + + /// + /// Draws a background, taking only position from the rect + /// + /// + /// + /// + /// + protected void Background(Rect r, float width, float height,GUIStyle guiStyle=null) + { + mBackgroundRects.Add(r); + if (guiStyle == null) + guiStyle = DTStyles.TBBackground; + r.y -= 1; + r.x -= 1; + r.width = width + 2; + r.height = height + 2; + switch (Project.ToolbarOrientation) + { + case DTToolbarOrientation.Right: + r.x-=width; + break; + case DTToolbarOrientation.Bottom: + r.y -= height; + break; + } + + + GUI.Box(r, "", guiStyle); + + } + + /// + /// Advance the rect to a new line, respecting Toolbar Orientation + /// + protected void Advance(ref Rect r) { Advance(ref r, r.height); } + /// + /// Advance the rect to a new line, respecting Toolbar Orientation + /// + protected void Advance(ref Rect r, float lastLineHeight) + { + switch (Project.ToolbarOrientation) + { + case DTToolbarOrientation.Bottom: + r.y -= lastLineHeight + 5; + break; + case DTToolbarOrientation.Left: + r.x += r.width + 2; + break; + case DTToolbarOrientation.Right: + r.x -= r.width + 2; + break; + default: // Top + r.y += lastLineHeight + 5; + break; + } + } + + /// + /// Advance the rect to a new line below (or above) the existing rect, depending on Toolbar Orientation + /// + protected void AdvanceBelow(ref Rect r) { AdvanceBelow(ref r, r.height); } + /// + /// Advance the rect to a new line below (or above) the existing rect, depending on Toolbar Orientation + /// + protected void AdvanceBelow(ref Rect r, float lastLineHeight) + { + switch (Project.ToolbarOrientation) + { + case DTToolbarOrientation.Bottom: + r.y -= lastLineHeight; + break; + default: + r.y += lastLineHeight; + break; + } + } + + #endregion + + public int CompareTo(object obj) + { + DTToolbarItem other = (DTToolbarItem)obj; + + if (Order == other.Order) + return Label.CompareTo(other.Label); + else + return Order.CompareTo(other.Order); + } + + public static implicit operator bool(DTToolbarItem a) + { + return !object.ReferenceEquals(a, null); + } + } + + [AttributeUsage(AttributeTargets.Class,AllowMultiple=false)] + public class ToolbarItemAttribute : Attribute + { + public readonly string Project; + public readonly int Order; + public readonly string Label; + public readonly string Tooltip; + public readonly string Icon; + public readonly string IconLightSkin; + + public ToolbarItemAttribute(int order, string project, string label, string tooltip = "", string icon = "",string iconLight="") : this(project,label,tooltip,icon,iconLight,order) + { + } + + public ToolbarItemAttribute(string project, string label, string tooltip = "", string icon = "", string iconLight="", int order = 0) + { + Project = project; + Label = label; + Tooltip = tooltip; + Icon = icon; + IconLightSkin = iconLight; + Order = order; + } + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbarItem.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbarItem.cs.meta new file mode 100644 index 00000000..36b58ef6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/DTToolbarItem.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c805355f5c0010740a0af2f9d9173e01 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorData.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorData.cs new file mode 100644 index 00000000..04fc0175 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorData.cs @@ -0,0 +1,42 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using UnityEditor.AnimatedValues; +using UnityEngine.Events; + +namespace FluffyUnderware.DevToolsEditor.Data{ + [System.Serializable] + public class AnimVector2 : BaseAnimValue + { + [SerializeField] + private Vector3 m_Value; + public AnimVector2() + : base(Vector2.zero) + { + } + public AnimVector2(Vector3 value) + : base(value) + { + } + public AnimVector2(Vector2 value, UnityAction callback) + : base(value, callback) + { + } + protected override Vector2 GetValue() + { + this.m_Value = Vector2.Lerp(base.start, base.target, base.lerpPosition); + return this.m_Value; + } + + public override string ToString() + { + return $"{value} / {target}. Speed {speed}. Lerp {lerpPosition}"; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorData.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorData.cs.meta new file mode 100644 index 00000000..616bab5a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6ab6be8bc89cf594f8be7d642df90bf5 +timeCreated: 1440665948 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorKeyDefinition.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorKeyDefinition.cs new file mode 100644 index 00000000..42d2dae6 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorKeyDefinition.cs @@ -0,0 +1,170 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System; + + +namespace FluffyUnderware.DevToolsEditor +{ + [System.Serializable] + public class EditorKeyBinding : IComparable + { + public static bool BindingsEnabled = true; + + public enum MouseButtonEnum + { + None = -1, + Click = 0, + RClick = 1, + MClick = 2, + } + + public string Name; + public string Description; + public KeyCode Key; + public bool Shift; + public bool Control; + public bool Alt; + public bool Command; + public MouseButtonEnum MouseButton; + + public bool ShowInPrefs = true; + + public EditorKeyBinding(string name, string description, KeyCode defKey = KeyCode.None, bool defShift = false, bool defControl = false, bool defAlt = false, bool defCommand = false, MouseButtonEnum defMouseButton = MouseButtonEnum.None) + { + Set(name, description, defKey, defShift, defControl, defAlt, defCommand, defMouseButton); + } + + /// + /// Creates a binding from it's serialized string from the user preferences + /// + public EditorKeyBinding(string bindingString) + { + Set(bindingString); + } + + /// + /// Set the binding from it's serialized string from the user preferences + /// + public void Set(string bindingString) + { + string[] s = bindingString.Split(','); + if (s.Length < 6) return; + Name = s[0]; + Key = (KeyCode)System.Enum.Parse(typeof(KeyCode), s[1]); + Shift = bool.Parse(s[2]); + Control = bool.Parse(s[3]); + Alt = bool.Parse(s[4]); + Command = bool.Parse(s[5]); + MouseButton = (MouseButtonEnum)System.Enum.Parse(typeof(MouseButtonEnum), s[6]); + } + + public void Set(string name, string description, KeyCode defKey = KeyCode.None, bool defShift = false, bool defControl = false, bool defAlt = false, bool defCommand = false, MouseButtonEnum defMouseButton = MouseButtonEnum.None) + { + Name = name; + Description = description; + Key = defKey; + Shift = defShift; + Control = defControl; + Alt = defAlt; + Command = defCommand; + MouseButton = defMouseButton; + } + + + public bool IsTriggered(Event e=null) + { + + if (!BindingsEnabled) + return false; + + if (e == null) + e = Event.current; + if ((e.type == EventType.MouseDown && e.button == (int)MouseButton) || + (e.type == EventType.KeyDown && Key != KeyCode.None && e.keyCode == Key)) + return (e.shift == Shift && + e.control == Control && + e.alt == Alt && + e.command == Command); + else + return false; + } + + public bool OnPreferencesGUI() + { + EditorGUI.BeginChangeCheck(); + Key = (KeyCode)EditorGUILayout.EnumPopup(new GUIContent(Name), Key); + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + Shift = GUILayout.Toggle(Shift, "Shift"); + Control = GUILayout.Toggle(Control, "Ctrl"); + Alt = GUILayout.Toggle(Alt, "Alt"); + Command = GUILayout.Toggle(Command, "Cmd"); + EditorGUILayout.EndHorizontal(); + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + MouseButton = (MouseButtonEnum)EditorGUILayout.EnumPopup(MouseButton); + EditorGUILayout.EndHorizontal(); + return EditorGUI.EndChangeCheck(); + } + + public string ToTooltipString() + { + if (Key == KeyCode.None && MouseButton==MouseButtonEnum.None) + return string.Empty; + + List s = new List(); + if (Control) + s.Add("Ctrl"); + if (Alt) + s.Add("Alt"); + if (Shift) + s.Add("Shift"); + if (Command) + s.Add("Cmd"); + + string res = string.Join("-", s.ToArray()); + if (res.Length > 0) + res += "-"; + + if (Key != KeyCode.None) + return "(" + res + Key.ToString() + ")"; + else + return "(" + res + MouseButton.ToString() + ")"; + } + + public string ToPrefsString() + { + return Name + "," + ((int)Key).ToString() + "," + Shift.ToString() + "," + Control.ToString() + "," + Alt.ToString() + "," + Command.ToString() + "," + ((int)MouseButton).ToString(); + } + + public int CompareTo(object obj) + { + return Name.CompareTo(((EditorKeyBinding)obj).Name); + } + + public override bool Equals(object obj) + { + EditorKeyBinding o = (EditorKeyBinding)obj; + return (Name == o.Name && + Key == o.Key && + Shift == o.Shift && + Control == o.Control && + Alt == o.Alt && + Command == o.Command && + MouseButton == o.MouseButton); + } + public override int GetHashCode() + { + return Name.GetHashCode() ^ Key.GetHashCode() ^ Shift.GetHashCode() ^ Control.GetHashCode() ^ Alt.GetHashCode() ^ Command.GetHashCode() ^ MouseButton.GetHashCode(); + } + + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorKeyDefinition.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorKeyDefinition.cs.meta new file mode 100644 index 00000000..57e57a81 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/EditorKeyDefinition.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97a419ac824222d41b8a477f5151f56a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions.meta new file mode 100644 index 00000000..b5b3192f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 08c16b9720ddc734eb7c69bbd147c2cd +folderAsset: yes +timeCreated: 1436273971 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions/EditorExtensions.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions/EditorExtensions.cs new file mode 100644 index 00000000..e23368af --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions/EditorExtensions.cs @@ -0,0 +1,248 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; +using System.Reflection; +using System.Collections.Generic; +using FluffyUnderware.DevTools.Extensions; +using Object = UnityEngine.Object; +using System; +using System.Collections; + + + +namespace FluffyUnderware.DevToolsEditor.Extensions +{ + + public static class ColorEditorExt + { + + public static Color SkinAwareColor(this Color c, bool subtle = false) + { + if (EditorGUIUtility.isProSkin) + return c; + else + { + + + + if (subtle) + return Color.Lerp(c, Color.white, + DTEditorUtility.UsesNewEditorUI ? 0.9f : 0.7f); + else + { + if (c == Color.white) + return Color.black; + else if (c == Color.black) + return Color.white; + else + { + float br = c.Brightness(); + if (br > 0.9) + return Color.Lerp(c, Color.black, 0.7f); + else + return Color.Lerp(c, Color.black, 0.2f); + } + } + } + } + + public static float Brightness(this Color c) + { + return 0.299f * c.r + 0.587f * c.g + 0.114f * c.b; + } + + public static Color Fade(this Color c, double startTime, double stayTime, float fadeSpeed) + { + double d = EditorApplication.timeSinceStartup - startTime; + if (stayTime == 0 || d < stayTime) + return c; + else + return new Color(c.r, c.g, c.b, 1 - Mathf.Clamp01((float)(d - stayTime) / Mathf.Max(0, 0001f, fadeSpeed))); + } + } + + public static class SerializePropertyExt + { + + public static GUIContent GetContent(this SerializedProperty property, string label, string tooltip) + { + if (string.IsNullOrEmpty(label)) + label = property.displayName; + return new GUIContent(label, tooltip); + } + + public static List GetAttributes(this SerializedProperty property, params System.Type[] ofType) + { + List res = new List(); + Type objType = property.GetObjectType(); + if (objType != null) + { + FieldInfo fi = objType.FieldByName(property.name, true, true); + + if (fi != null) + { + object[] attribs = fi.GetCustomAttributes(true); + foreach (System.Attribute a in attribs) + { + + if (ofType.Length == 0) + res.Add(a); + else + { + Type at = a.GetType(); + foreach (Type t in ofType) + if (t.IsAssignableFrom(at)) + { + res.Add(a); + break; + } + } + } + } + } + return res; + } + + /// + /// Gets the objec type the property is a children of. + /// + public static Type GetObjectType(this SerializedProperty property) + { + Type baseType = property.serializedObject.targetObject.GetType(); + if (property.depth > 0) + { + string[] path = property.Path(); + FieldInfo fi; + for (int i = 0; i < path.Length - 1; i++) + { + fi = baseType.GetField(path[i], BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + if (fi == null) + return null; + baseType = fi.FieldType; + } + } + return baseType; + } + + /// + /// Gets the field type + /// + public static Type GetFieldType(this SerializedProperty property) + { + Type parentType = GetObjectType(property); + FieldInfo fi = parentType.FieldByName(property.name, true, true); + if (fi != null) + { + Type tt = fi.FieldType; + if (tt.IsGenericType && tt.GetGenericTypeDefinition() == typeof(List<>)) + { + return tt.GetGenericArguments()[0]; + } + if (fi.FieldType.IsArray) + return fi.FieldType.GetElementType(); + else + return fi.FieldType; + } + else + return null; + } + + public static string[] Path(this SerializedProperty property) + { + return property.propertyPath.Split('.'); + } + + public static SerializedProperty Parent(this SerializedProperty property) + { + string[] path = property.propertyPath.Split('.'); + if (path.Length > 1) + return property.serializedObject.FindProperty(path[path.Length - 2]); + else + return property; + } + + public static object GetParentObject(this SerializedProperty prop) + { + string path = prop.propertyPath.Replace(".Array.data[", "["); + object obj = prop.serializedObject.targetObject; + string[] elements = path.Split('.'); + for (int i = 0; i < elements.Length - 1; i++) + { + string element = elements[i]; + if (element.Contains("[")) + { + string elementName = element.Substring(0, element.IndexOf("[")); + int index = Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = getValue(obj, elementName, index); + } + else + { + obj = getValue(obj, element); + } + } + return obj; + } + + static object getValue(object source, string name) + { + if (source == null) + return null; + Type type = source.GetType(); + FieldInfo f = type.GetField(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + if (f == null) + { + PropertyInfo p = type.GetProperty(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (p == null) + return null; + return p.GetValue(source, null); + } + return f.GetValue(source); + } + + static object getValue(object source, string name, int index) + { + IEnumerable enumerable = getValue(source, name) as IEnumerable; + IEnumerator enm = enumerable.GetEnumerator(); + while (index-- >= 0) + enm.MoveNext(); + return enm.Current; + } + + + public static SerializedProperty Root(this SerializedProperty property) + { + string[] path = property.propertyPath.Split('.'); + if (path.Length > 0) + return property.serializedObject.FindProperty(path[0]); + else + return property; + } + } + + public static class RectEditorExt + { + public static Rect ShiftXBy(this Rect r, float x) + { + r.x += x; + r.width -= x; + return new Rect(r); + } + + public static Rect WithoutLabel(this Rect r) + { + return r.ShiftXBy(EditorGUIUtility.labelWidth); + } + } + + + + + + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions/EditorExtensions.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions/EditorExtensions.cs.meta new file mode 100644 index 00000000..f731dab3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/Extensions/EditorExtensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 21c52a1cbd7d1274f95e82c253456bda +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/PropertyDrawers.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/PropertyDrawers.cs new file mode 100644 index 00000000..f396d18f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/PropertyDrawers.cs @@ -0,0 +1,1256 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +#if UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0 +#define UNITY_PRE_5_5 +#endif +using System; +using UnityEngine; +using UnityEditor; +using FluffyUnderware.DevTools; +using FluffyUnderware.DevTools.Extensions; +using FluffyUnderware.DevToolsEditor.Extensions; +using System.Reflection; +using System.Collections.Generic; +using System.Linq; +using System.Collections; +using MinAttribute = FluffyUnderware.DevTools.MinAttribute; + +namespace FluffyUnderware.DevToolsEditor +{ + public class DTPropertyDrawer : PropertyDrawer where T : DTPropertyAttribute + { + + /// + /// Gets the attribute + /// + protected T Attribute + { + get { return attribute as T; } + } + + /// + /// Gets some common attribute options + /// + protected AttributeOptionsFlags Options + { + get { return Attribute.Options; } + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if (!string.IsNullOrEmpty(Attribute.Label)) + label.text = Attribute.Label; + label.tooltip = Attribute.Tooltip; + } + + protected void PushCustomColors() + { + if (!string.IsNullOrEmpty(Attribute.Color)) + DTGUI.PushColor(Attribute.Color.ColorFromHtml()); + } + + protected void PopCustomColors() + { + if (!string.IsNullOrEmpty(Attribute.Color)) + DTGUI.PopColor(); + } + + protected MemberInfo GetMemberInfo(SerializedProperty property, string fieldOrPropertyName, out object parent) + { + parent = property.GetParentObject(); + Type parentType = parent.GetType(); + FieldInfo fi = parentType.FieldByName(fieldOrPropertyName, true, true); + if (fi != null) + return fi; + else + { + PropertyInfo pi = parentType.PropertyByName(fieldOrPropertyName, true, true); + if (pi != null) + return pi; + else + { + DTLog.LogError(parentType.Name + ": Field or Property '" + fieldOrPropertyName + "' not found!"); + return null; + } + } + } + + /// + /// Get a value from a field or property of the serialized object by it's name + /// + /// datatype to retrieve + /// a serialized property from the object in question + /// name of the field or property + /// the value of the field or property + protected U GetMemberValue(SerializedProperty property, string fieldOrPropertyName) + { + object parent; + object o = null; + MemberInfo mi = GetMemberInfo(property, fieldOrPropertyName, out parent); + if (mi != null) + { + if (mi is FieldInfo) + o = ((FieldInfo)mi).GetValue(parent); + else + o = ((PropertyInfo)mi).GetValue(parent, null); + } + + Type oT = o.GetType(); + Type rT = typeof(U); + if (oT == rT) + return (U)o; + else if (oT == typeof(int) && rT == typeof(float)) + return (U)System.Convert.ChangeType(o, rT, System.Globalization.CultureInfo.InvariantCulture); + else + return default(U); + } + + protected object GetParent(SerializedProperty prop) + { + string path = prop.propertyPath.Replace(".Array.data[", "["); + object obj = prop.serializedObject.targetObject; + string[] elements = path.Split('.'); + foreach (string element in elements.Take(elements.Length - 1)) + { + if (element.Contains("[")) + { + string elementName = element.Substring(0, element.IndexOf("[")); + int index = System.Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = GetValue(obj, elementName, index); + } + else + { + obj = GetValue(obj, element); + } + } + return obj; + } + + object GetValue(object source, string name) + { + if (source == null) + return null; + Type type = source.GetType(); + FieldInfo f = type.FieldByName(name, true, true); + if (f == null) + { + PropertyInfo p = type.PropertyByName(name, true, true); + if (p == null) + return null; + return p.GetValue(source, null); + } + return f.GetValue(source); + } + + object GetValue(object source, string name, int index) + { + IEnumerable enumerable = GetValue(source, name) as IEnumerable; + IEnumerator enm = enumerable.GetEnumerator(); + while (index-- >= 0) + enm.MoveNext(); + return enm.Current; + } + + protected U GetPropertySourceField(SerializedProperty property) + { + return (U)fieldInfo.GetValue(GetParent(property)); + /* + var instance = property.serializedObject.targetObject; + var t = instance.GetType(); + FieldInfo fi = null; + while (fi == null && t != null) + { + fi = t.GetField(property.propertyPath, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + if (fi == null) + t = t.BaseType; + } + return (fi != null) ? (U)fi.GetValue(instance) : default(U); + */ + } + } + + [CustomPropertyDrawer(typeof(LabelAttribute))] + public class LabelAttributePropertyDrawer : DTPropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + EditorGUI.PropertyField(position, property, label); + } + } + + [CustomPropertyDrawer(typeof(ToggleButtonAttribute))] + public class ToggleButtonAttributePropertyDrawer : DTPropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + if (property.propertyType != SerializedPropertyType.Boolean) + DTLog.LogError("[DevTools] - [ToggleButton] only valid for boolean fields!"); + else + { + EditorGUI.BeginChangeCheck(); + GUIStyle st = GUI.skin.button; + + bool v = GUI.Toggle(position, property.boolValue, label, st); + if (EditorGUI.EndChangeCheck()) + property.boolValue = v; + } + } + } + + [CustomPropertyDrawer(typeof(LayerAttribute))] + public class LayerPropertyDrawer : DTPropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, GUIContent.none, property); + position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); + property.intValue = EditorGUI.LayerField(position, property.intValue); + EditorGUI.EndProperty(); + } + } + + [CustomPropertyDrawer(typeof(TagAttribute))] + public class TagPropertyDrawer : DTPropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, GUIContent.none, property); + position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); + property.stringValue = EditorGUI.TagField(position, property.stringValue); + EditorGUI.EndProperty(); + } + } + + [CustomPropertyDrawer(typeof(VectorExAttribute))] + public class VectorExPropertyDrawer : DTPropertyDrawer + { + private static readonly GUIContent CopyButtonGuiContent = new GUIContent("C", "Copy"); + private static readonly GUIContent PasteButtonGuiContent = new GUIContent("P", "Past"); + private static readonly GUIContent SetZeroButtonGuiContent = new GUIContent("0", "Set to zero"); + private static readonly GUIContent SetOneButtonGuiContent = new GUIContent("1", "Set to one"); + private static readonly GUIContent NegateButtonGuiContent = new GUIContent("~", "Negate"); + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + float h; + if (Options.HasFlag(AttributeOptionsFlags.Compact) || EditorGUIUtility.wideMode) + h = base.GetPropertyHeight(property, label); + else + h = base.GetPropertyHeight(property, label) * 2; + return h; + } + + + public static void DoGUI(Rect position, SerializedProperty property, DTPropertyAttribute attribute, GUIContent label, AttributeOptionsFlags flags, VectorExPropertyDrawer drawer = null) + { + if (property.propertyType != SerializedPropertyType.Vector2 && property.propertyType != SerializedPropertyType.Vector3 && property.propertyType != SerializedPropertyType.Quaternion) + DTLog.LogError("[DevTools] - [VectorEx] only valid for Vector and Quaternion fields!"); + else + { + + int buttons = 0; + if (flags.HasFlag(AttributeOptionsFlags.Clipboard)) + buttons += 2; + if (flags.HasFlag(AttributeOptionsFlags.One)) + buttons++; + if (flags.HasFlag(AttributeOptionsFlags.Zero)) + buttons++; + if (flags.HasFlag(AttributeOptionsFlags.Negate)) + buttons++; + + int buttonWidth = 21; + int interButtonSpace = 1; + int buttonsWidth = buttons * buttonWidth + Math.Max(0, buttons - 1) * interButtonSpace; + + Rect buttonsRectangle = new Rect(); + buttonsRectangle.x = position.x + position.width - buttonsWidth; + buttonsRectangle.y = position.y; + buttonsRectangle.width = buttonWidth; + buttonsRectangle.height = EditorGUIUtility.singleLineHeight; + + Rect r = position.WithoutLabel(); + r.width -= buttonsWidth; + + if (flags.HasFlag(AttributeOptionsFlags.Compact) || EditorGUIUtility.wideMode) + { + if (drawer != null) + drawer.PushCustomColors(); + EditorGUI.PrefixLabel(position, label); + + if (property.propertyType == SerializedPropertyType.Vector2) + { + EditorGUI.BeginChangeCheck(); + Vector2 v = DTGUI.CompactVector2Field(r, property.vector2Value); + if (EditorGUI.EndChangeCheck()) + property.vector2Value = DT._UseSnapValuePrecision ? DTMath.SnapPrecision(v, attribute.Precision) : v; + } + else if (property.propertyType == SerializedPropertyType.Vector3) + { + EditorGUI.BeginChangeCheck(); + Vector3 v = DTGUI.CompactVector3Field(r, property.vector3Value); + if (EditorGUI.EndChangeCheck()) + property.vector3Value = DT._UseSnapValuePrecision ? DTMath.SnapPrecision(v, attribute.Precision) : v; + } + else if (property.propertyType == SerializedPropertyType.Quaternion) + { + EditorGUI.BeginChangeCheck(); + Vector3 v = DTGUI.CompactVector3Field(r, DT._UseSnapValuePrecision ? DTMath.SnapPrecision(property.quaternionValue.eulerAngles, attribute.Precision) : property.quaternionValue.eulerAngles); + if (EditorGUI.EndChangeCheck()) + property.quaternionValue = Quaternion.Euler(v); + } + if (drawer != null) + drawer.PopCustomColors(); + + } + else + { + EditorGUI.BeginChangeCheck(); + if (drawer != null) + drawer.PushCustomColors(); + + if (DTEditorUtility.UsesNewEditorUI) +#pragma warning disable 162 + position.y -= 2; +#pragma warning restore 162 + + EditorGUI.PropertyField(position, property, label); + if (drawer != null) + drawer.PopCustomColors(); + if (EditorGUI.EndChangeCheck() && DT._UseSnapValuePrecision) + { + if (property.propertyType == SerializedPropertyType.Vector2) + property.vector2Value = DTMath.SnapPrecision(property.vector2Value, attribute.Precision); + else if (property.propertyType == SerializedPropertyType.Vector3) + property.vector3Value = DTMath.SnapPrecision(property.vector3Value, attribute.Precision); + } + } + + if (flags.HasFlag(AttributeOptionsFlags.Clipboard)) + { + if (GUI.Button(buttonsRectangle, CopyButtonGuiContent, EditorStyles.miniButton)) + if (property.propertyType == SerializedPropertyType.Vector2) + DT.ClipboardCopy(property.vector2Value); + else if (property.propertyType == SerializedPropertyType.Vector3) + DT.ClipboardCopy(property.vector3Value); + buttonsRectangle.x += buttonWidth + interButtonSpace; + // Can Paste? + if (property.propertyType == SerializedPropertyType.Vector2) + GUI.enabled = DT.ClipboardCanPasteTo(); + else if (property.propertyType == SerializedPropertyType.Vector3) + GUI.enabled = DT.ClipboardCanPasteTo(); + + if (GUI.Button(buttonsRectangle, PasteButtonGuiContent, EditorStyles.miniButton)) + if (property.propertyType == SerializedPropertyType.Vector2) + property.vector2Value = DT.ClipboardPaste(); + else if (property.propertyType == SerializedPropertyType.Vector3) + property.vector3Value = DT.ClipboardPaste(); + GUI.enabled = true; + buttonsRectangle.x += buttonWidth + interButtonSpace; + } + if (flags.HasFlag(AttributeOptionsFlags.Zero)) + { + if (GUI.Button(buttonsRectangle, SetZeroButtonGuiContent, EditorStyles.miniButton)) + if (property.propertyType == SerializedPropertyType.Vector2) + property.vector2Value = Vector2.zero; + else if (property.propertyType == SerializedPropertyType.Vector3) + property.vector3Value = Vector3.zero; + buttonsRectangle.x += buttonWidth + interButtonSpace; + } + if (flags.HasFlag(AttributeOptionsFlags.One)) + { + if (GUI.Button(buttonsRectangle, SetOneButtonGuiContent, EditorStyles.miniButton)) + if (property.propertyType == SerializedPropertyType.Vector2) + property.vector2Value = Vector2.one; + else if (property.propertyType == SerializedPropertyType.Vector3) + property.vector3Value = Vector3.one; + buttonsRectangle.x += buttonWidth + interButtonSpace; + } + if (flags.HasFlag(AttributeOptionsFlags.Negate)) + { + if (GUI.Button(buttonsRectangle, NegateButtonGuiContent, EditorStyles.miniButton)) + if (property.propertyType == SerializedPropertyType.Vector2) + property.vector2Value *= -1; + else if (property.propertyType == SerializedPropertyType.Vector3) + property.vector3Value *= -1; + buttonsRectangle.x += buttonWidth + interButtonSpace; + } + + } + + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + DoGUI(position, property, Attribute, label, Options, this); + } + } + + [CustomPropertyDrawer(typeof(AnimationCurveExAttribute))] + public class AnimationCurveExPropertyDrawer : DTPropertyDrawer + { + + public override void OnGUI(Rect propertyRectangle, SerializedProperty property, GUIContent label) + { + base.OnGUI(propertyRectangle, property, label); + if (property.propertyType != SerializedPropertyType.AnimationCurve) + DTLog.LogError("[DevTools] - [AnimationCurvEx] only valid for AnimationCurve fields!"); + else + { + int buttons = 0; + if (Options.HasFlag(AttributeOptionsFlags.Clipboard)) + buttons += 2; + + int buttonWidth = 21; + int interButtonSpace = 1; + int buttonsWidth = buttons * buttonWidth + Math.Max(0, buttons - 1) * interButtonSpace; + + Rect buttonsRectangle = new Rect(); + buttonsRectangle.x = propertyRectangle.x + propertyRectangle.width - buttonsWidth; + buttonsRectangle.y = propertyRectangle.y; + buttonsRectangle.width = buttonWidth; + buttonsRectangle.height = EditorGUIUtility.singleLineHeight; + + propertyRectangle.width -= buttonsWidth; + + EditorGUI.PropertyField(propertyRectangle, property, label); + // Buttons + if (Options.HasFlag(AttributeOptionsFlags.Clipboard)) + { + if (GUI.Button(buttonsRectangle, "C", EditorStyles.miniButton)) + DT.ClipboardCopy(property.animationCurveValue); + buttonsRectangle.x += buttonWidth + interButtonSpace; + GUI.enabled = DT.ClipboardCanPasteTo(); + if (GUI.Button(buttonsRectangle, "P", EditorStyles.miniButton)) + property.animationCurveValue = DT.ClipboardPaste(); + GUI.enabled = true; + } + } + } + } + + + + [CustomPropertyDrawer(typeof(RangeExAttribute))] + public class RangeExPropertyDrawer : DTPropertyDrawer + { + float minV; + float maxV; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + + + minV = Attribute.MinValue; + maxV = Attribute.MaxValue; + + if (!string.IsNullOrEmpty(Attribute.MinFieldOrPropertyName)) + { + minV = GetMemberValue(property, Attribute.MinFieldOrPropertyName); + } + + if (!string.IsNullOrEmpty(Attribute.MaxFieldOrPropertyName)) + { + maxV = GetMemberValue(property, Attribute.MaxFieldOrPropertyName); + } + + if (minV > maxV) + { + float temp = minV; + minV = maxV; + maxV = temp; + } + + // GUI + PushCustomColors(); + EditorGUI.BeginChangeCheck(); + if (Attribute.Slider) + { + switch (property.propertyType) + { + case SerializedPropertyType.Float: + EditorGUI.Slider(position, property, minV, maxV, label); + break; + case SerializedPropertyType.Integer: + EditorGUI.IntSlider(position, property, (int)minV, (int)maxV, label); + break; + } + + } + else + EditorGUI.PropertyField(position, property, label); + + if (EditorGUI.EndChangeCheck()) + { + // Clamp + switch (property.propertyType) + { + case SerializedPropertyType.Float: + if (DT._UseSnapValuePrecision && Attribute.Precision > -1) + property.floatValue = DTMath.SnapPrecision(property.floatValue, Attribute.Precision); + if (property.floatValue < minV || property.floatValue > maxV) + property.floatValue = Mathf.Clamp(property.floatValue, minV, maxV); + break; + case SerializedPropertyType.Integer: + if (property.intValue < minV || property.intValue > maxV) + property.intValue = Mathf.Clamp(property.intValue, (int)minV, (int)maxV); + break; + } + } + PopCustomColors(); + label.tooltip = ""; + } + } + + [CustomPropertyDrawer(typeof(FluffyUnderware.DevTools.MinMaxAttribute))] + public class MinMaxPropertyDrawer : DTPropertyDrawer + { + float lBound; + float uBound; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + + lBound = Attribute.Min; + uBound = Attribute.Max; + // Get maxV serialized + string[] path = property.Path(); + path[path.Length - 1] = Attribute.MaxValueField; + SerializedProperty pMaxV = property.serializedObject.FindProperty(string.Join(".", path)); + + if (!string.IsNullOrEmpty(Attribute.MinBoundFieldOrPropertyName)) + { + lBound = GetMemberValue(property, Attribute.MinBoundFieldOrPropertyName); + } + + if (!string.IsNullOrEmpty(Attribute.MaxBoundFieldOrPropertyName)) + { + uBound = GetMemberValue(property, Attribute.MaxBoundFieldOrPropertyName); + } + + if (lBound > uBound) + { + float temp = lBound; + lBound = uBound; + uBound = temp; + } + + float minV = 0; + float maxV = 0; + + // GUI + EditorGUI.BeginChangeCheck(); + + + switch (property.propertyType) + { + case SerializedPropertyType.Float: + minV = property.floatValue; + maxV = pMaxV.floatValue; +#if UNITY_PRE_5_5 + EditorGUI.MinMaxSlider(label, position, ref minV, ref maxV, lBound, uBound); +#else + EditorGUI.MinMaxSlider(position, label, ref minV, ref maxV, lBound, uBound); +#endif + break; + case SerializedPropertyType.Integer: + minV = property.intValue; + maxV = pMaxV.intValue; +#if UNITY_PRE_5_5 + EditorGUI.MinMaxSlider(label, position, ref minV, ref maxV, lBound, uBound); +#else + EditorGUI.MinMaxSlider(position, label, ref minV, ref maxV, lBound, uBound); +#endif + break; + } + + if (EditorGUI.EndChangeCheck()) + { + // Clamp + switch (property.propertyType) + { + case SerializedPropertyType.Float: + if (DT._UseSnapValuePrecision && Attribute.Precision > -1) + property.floatValue = Mathf.Max(lBound, DTMath.SnapPrecision(minV, Attribute.Precision)); + pMaxV.floatValue = Mathf.Min(uBound, DTMath.SnapPrecision(maxV, Attribute.Precision)); + break; + case SerializedPropertyType.Integer: + property.intValue = (int)minV; + pMaxV.intValue = (int)maxV; + break; + } + + } + label.tooltip = ""; + } + + } + + [CustomPropertyDrawer(typeof(MinAttribute), true)] + public class MinPropertyDrawer : DTPropertyDrawer + { + protected float minV; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + + // GUI + EditorGUI.PropertyField(position, property, label); + + + minV = Attribute.MinValue; + + if (!string.IsNullOrEmpty(Attribute.MinFieldOrPropertyName)) + { + minV = GetMemberValue(property, Attribute.MinFieldOrPropertyName); + } + + // Clamp + switch (property.propertyType) + { + case SerializedPropertyType.Float: + if (DT._UseSnapValuePrecision && Attribute.Precision > -1) + property.floatValue = DTMath.SnapPrecision(property.floatValue, Attribute.Precision); + if (property.floatValue < minV) + property.floatValue = minV; + break; + case SerializedPropertyType.Integer: + if (property.intValue < minV) + property.intValue = (int)minV; + break; + } + label.tooltip = ""; + } + + } + + [CustomPropertyDrawer(typeof(MaxAttribute))] + public class MaxPropertyDrawer : DTPropertyDrawer + { + protected float maxV; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + + // GUI + EditorGUI.PropertyField(position, property, label); + + + maxV = Attribute.MaxValue; + + if (!string.IsNullOrEmpty(Attribute.MaxFieldOrPropertyName)) + { + maxV = GetMemberValue(property, Attribute.MaxFieldOrPropertyName); + } + + // Clamp and snap + switch (property.propertyType) + { + case SerializedPropertyType.Float: + if (DT._UseSnapValuePrecision && Attribute.Precision > -1) + property.floatValue = DTMath.SnapPrecision(property.floatValue, Attribute.Precision); + if (property.floatValue > maxV) + property.floatValue = maxV; + + break; + case SerializedPropertyType.Integer: + if (property.intValue > maxV) + property.intValue = (int)maxV; + break; + } + label.tooltip = ""; + } + + } + + [CustomPropertyDrawer(typeof(PathSelectorAttribute))] + public class PathSelectorDrawer : DTPropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + if (property.propertyType == SerializedPropertyType.String) + { + position.width -= 20; + property.stringValue = EditorGUI.TextField(position, label, property.stringValue); + position.xMin = position.xMax; + position.width = 20; + if (GUI.Button(position, "..", EditorStyles.miniButton)) + { + string v = string.Empty; + switch (Attribute.Mode) + { + case PathSelectorAttribute.DialogMode.OpenFile: + v = EditorUtility.OpenFilePanel(Attribute.Title, Attribute.Directory, Attribute.Extension); + break; + case PathSelectorAttribute.DialogMode.OpenFolder: + v = EditorUtility.OpenFolderPanel(Attribute.Title, Attribute.Directory, Attribute.DefaultName); + break; + case PathSelectorAttribute.DialogMode.CreateFile: + v = EditorUtility.SaveFilePanel(Attribute.Title, Attribute.Directory, Attribute.DefaultName, Attribute.Extension); + break; + } + if (!string.IsNullOrEmpty(v)) + property.stringValue = v; + } + } + else + DTLog.LogError("[DevTools] PropertyAttribute [FileSelector] only works on string fields!"); + } + } + + [CustomPropertyDrawer(typeof(EnumFlagAttribute))] + public class EnumFlagDrawer : DTPropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + + System.Enum targetEnum = GetPropertySourceField(property); + + EditorGUI.BeginProperty(position, label, property); +#if UNITY_2017_3_OR_NEWER + System.Enum enumNew = EditorGUI.EnumFlagsField(position, label, targetEnum); +#else + System.Enum enumNew = EditorGUI.EnumMaskField(position, label, targetEnum); +#endif + property.intValue = (int)System.Convert.ChangeType(enumNew, targetEnum.GetType(), System.Globalization.CultureInfo.InvariantCulture); + EditorGUI.EndProperty(); + } + } + + [CustomPropertyDrawer(typeof(EnumSelectionGridAttribute))] + public class EnumSelectionGridDrawer : DTPropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if (property.propertyType == SerializedPropertyType.Enum) + { + string[] names = property.enumDisplayNames; + + EditorGUI.PrefixLabel(position, label); + position = position.WithoutLabel(); + EditorGUI.BeginChangeCheck(); + int v = GUI.SelectionGrid(position, property.enumValueIndex, names, names.Length); + if (EditorGUI.EndChangeCheck()) + property.enumValueIndex = v; + } + else + DTLog.LogError("[DevTools] PropertyAttribute [SelectionGrid] only works on Enum fields!"); + } + } + + [CustomPropertyDrawer(typeof(ObjectSelectorAttribute))] + public class ObjectSelectorDrawer : DTPropertyDrawer + { + } + + [CustomPropertyDrawer(typeof(FloatRegionAttribute))] + public class FloatRegionPropertyDrawer : DTPropertyDrawer + { + PropertyInfo mPI; + object mObject; + SerializedProperty ppFrom; + SerializedProperty ppTo; + SerializedProperty ppSimpleValue; + RegionOptions mOptions; + + bool compact + { + get + { + return ((EditorGUIUtility.wideMode && Options == AttributeOptionsFlags.None) || + ((Options & AttributeOptionsFlags.Compact) == AttributeOptionsFlags.Compact || + (Options & AttributeOptionsFlags.FullCompact) == AttributeOptionsFlags.FullCompact + ) + ); + } + } + + bool minmax + { + get + { + return (Attribute.UseSlider && !ppSimpleValue.boolValue && + mOptions.ClampFrom == DTValueClamping.Range && mOptions.ClampTo == DTValueClamping.Range && + mOptions.FromMin == mOptions.ToMin && mOptions.FromMax == mOptions.ToMax); + } + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + Init(property); + float h = base.GetPropertyHeight(property, label); + if (!compact) + { + if (!Attribute.RegionIsOptional || !ppSimpleValue.boolValue || minmax) + h = (h + EditorGUIUtility.standardVerticalSpacing) * 2; + } + + return h; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + Init(property); + Rect r = new Rect(position); + r.height = EditorGUIUtility.singleLineHeight; + + if (minmax) + { + doMinmax(r, label, Attribute.RegionIsOptional); + } + else if (compact) + { + doCompact(r, label, new GUIContent(mOptions.LabelTo), Attribute.RegionIsOptional); + } + else + { + doRegular(r, label); + } + + label.tooltip = ""; + } + + void doMinmax(Rect r, GUIContent label, bool showOptional) + { + float l = ppFrom.floatValue; + float u = ppTo.floatValue; + + Rect r2 = new Rect(r); + + if (showOptional) + r2.width -= 16; + + EditorGUI.BeginChangeCheck(); +#if UNITY_PRE_5_5 + EditorGUI.MinMaxSlider(label, r2, ref l, ref u, mOptions.FromMin, mOptions.FromMax); +#else + EditorGUI.MinMaxSlider(r2, label, ref l, ref u, mOptions.FromMin, mOptions.FromMax); +#endif + if (EditorGUI.EndChangeCheck()) + { + ppFrom.floatValue = l; + validateFrom(); + ppTo.floatValue = u; + validateTo(); + } + if (showOptional) + { + ppSimpleValue.boolValue = !EditorGUI.Toggle(new Rect(r.xMax - 16, r.y, 16, r.height), new GUIContent("", mOptions.OptionalTooltip), !ppSimpleValue.boolValue); + } + if (!compact) + { + r.y += r.height + EditorGUIUtility.standardVerticalSpacing; + doCompact(r, new GUIContent(mOptions.LabelFrom), new GUIContent(mOptions.LabelTo), false); + } + } + + void doCompact(Rect r, GUIContent label, GUIContent labelTo, bool showOptional, bool fullLine = false) + { + float lw = EditorGUIUtility.labelWidth; + float fw = EditorGUIUtility.fieldWidth; + Rect r2 = new Rect(r); + bool showTo = !showOptional || !ppSimpleValue.boolValue; + float showToLabelWidth = DTGUI.LabelWidth(labelTo); + + float chkWidth = showOptional ? 16 : 0; + if (fullLine) + { + EditorGUIUtility.labelWidth = DTGUI.LabelWidth(label); + lw = EditorGUIUtility.labelWidth; + } + + r2.width = (r.width - lw - chkWidth - showToLabelWidth) / 2; + + // From + r.width = lw + r2.width; + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(r, ppFrom, label); + if (EditorGUI.EndChangeCheck()) + validateFrom(); + + r.x += r.width; + + // "To" may be optional + if (showOptional) + { + ppSimpleValue.boolValue = !EditorGUI.Toggle(new Rect(r.x, r.y, 16, r.height), new GUIContent("", mOptions.OptionalTooltip), !ppSimpleValue.boolValue); + r.x += 16; + } + // Show "To"? + + if (showTo) + { + EditorGUI.BeginChangeCheck(); + EditorGUIUtility.labelWidth = showToLabelWidth; + r.width = r2.width + showToLabelWidth; + ppTo.floatValue = EditorGUI.FloatField(r, labelTo, ppTo.floatValue); + if (EditorGUI.EndChangeCheck()) + validateTo(); + + } + + EditorGUIUtility.labelWidth = lw; + EditorGUIUtility.fieldWidth = fw; + } + + void doRegular(Rect r, GUIContent label) + { + // From + Rect rF = new Rect(r); + if (Attribute.RegionIsOptional) + rF.width -= 16; + EditorGUI.BeginProperty(rF, label, ppFrom); + EditorGUI.BeginChangeCheck(); + if (Attribute.UseSlider && mOptions.ClampFrom == DTValueClamping.Range) + ppFrom.floatValue = EditorGUI.Slider(rF, label, ppFrom.floatValue, mOptions.FromMin, mOptions.FromMax); + else + ppFrom.floatValue = EditorGUI.FloatField(rF, label, ppFrom.floatValue); + if (EditorGUI.EndChangeCheck()) + validateFrom(); + EditorGUI.EndProperty(); + // Perhaps To is optional + if (Attribute.RegionIsOptional) + ppSimpleValue.boolValue = !EditorGUI.Toggle(new Rect(rF.x + rF.width + 1, rF.y, 16, rF.height), new GUIContent("", mOptions.OptionalTooltip), !ppSimpleValue.boolValue); + + // To + if (!Attribute.RegionIsOptional || !ppSimpleValue.boolValue) + { + r.y += r.height + EditorGUIUtility.standardVerticalSpacing; + label.text = mOptions.LabelTo; + EditorGUI.BeginProperty(r, label, ppTo); + EditorGUI.BeginChangeCheck(); + if (Attribute.UseSlider && mOptions.ClampTo == DTValueClamping.Range) + ppTo.floatValue = EditorGUI.Slider(r, label, ppTo.floatValue, mOptions.ToMin, mOptions.ToMax); + else + ppTo.floatValue = EditorGUI.FloatField(r, label, ppTo.floatValue); + if (EditorGUI.EndChangeCheck()) + validateTo(); + EditorGUI.EndProperty(); + } + } + + void validateFrom() + { + ppFrom.floatValue = DTMath.SnapPrecision(ppFrom.floatValue, Attribute.Precision); + switch (mOptions.ClampFrom) + { + case DTValueClamping.Min: + ppFrom.floatValue = Mathf.Max(mOptions.FromMin, ppFrom.floatValue); + break; + case DTValueClamping.Max: + ppFrom.floatValue = Mathf.Min(mOptions.FromMax, ppFrom.floatValue); + break; + case DTValueClamping.Range: + ppFrom.floatValue = Mathf.Clamp(ppFrom.floatValue, mOptions.FromMin, mOptions.FromMax); + if (minmax) + ppFrom.floatValue = Mathf.Min(ppFrom.floatValue, ppTo.floatValue); + break; + } + } + + void validateTo() + { + ppTo.floatValue = DTMath.SnapPrecision(ppTo.floatValue, Attribute.Precision); + switch (mOptions.ClampTo) + { + case DTValueClamping.Min: + ppTo.floatValue = Mathf.Max(mOptions.ToMin, ppTo.floatValue); + break; + case DTValueClamping.Max: + ppTo.floatValue = Mathf.Min(mOptions.ToMax, ppTo.floatValue); + break; + case DTValueClamping.Range: + ppTo.floatValue = Mathf.Clamp(ppTo.floatValue, mOptions.ToMin, mOptions.ToMax); + if (minmax) + ppTo.floatValue = Mathf.Max(ppTo.floatValue, ppFrom.floatValue); + break; + } + } + + void Init(SerializedProperty property) + { + try + { + mObject = property.GetParentObject(); + if (mPI == null && !string.IsNullOrEmpty(Attribute.RegionOptionsPropertyName)) + mPI = mObject.GetType().PropertyByName(Attribute.RegionOptionsPropertyName, true, true); + + if (mPI != null) + mOptions = (RegionOptions)mPI.GetValue(mObject, null); + else + mOptions = RegionOptions.Default; + } + catch (System.Exception e) + { + DTLog.LogError("[DevTools] FloatRegionPropertyDrawer: Unable to find property '" + Attribute.RegionOptionsPropertyName + "'! (" + e.ToString() + ")"); + } + ppFrom = property.FindPropertyRelative("From"); + ppTo = property.FindPropertyRelative("To"); + ppSimpleValue = property.FindPropertyRelative("SimpleValue"); + if (minmax) + ppSimpleValue.boolValue = false; + + } + } + + [CustomPropertyDrawer(typeof(IntRegionAttribute))] + public class IntRegionPropertyDrawer : DTPropertyDrawer + { + PropertyInfo mPI; + object mObject; + SerializedProperty ppFrom; + SerializedProperty ppTo; + SerializedProperty ppSimpleValue; + RegionOptions mOptions; + + bool compact + { + get + { + return (EditorGUIUtility.wideMode || + ((Options & AttributeOptionsFlags.Compact) == AttributeOptionsFlags.Compact || + (Options & AttributeOptionsFlags.FullCompact) == AttributeOptionsFlags.FullCompact + ) + ); + } + } + + bool minmax + { + get + { + return (Attribute.UseSlider && !Attribute.RegionIsOptional && + mOptions.ClampFrom == DTValueClamping.Range && mOptions.ClampTo == DTValueClamping.Range && + mOptions.FromMin == mOptions.ToMin && mOptions.FromMax == mOptions.ToMax); + } + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + Init(property); + float h = base.GetPropertyHeight(property, label); + if (!compact) + { + if (!Attribute.RegionIsOptional || !ppSimpleValue.boolValue || minmax) + h = (h + EditorGUIUtility.standardVerticalSpacing) * 2; + } + + return h; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + base.OnGUI(position, property, label); + Init(property); + Rect r = new Rect(position); + r.height = EditorGUIUtility.singleLineHeight; + + if (minmax) + { + doMinmax(r, label, Attribute.RegionIsOptional); + } + else if (compact) + { + doCompact(r, label, new GUIContent(mOptions.LabelTo), Attribute.RegionIsOptional); + } + else + { + doRegular(r, label); + } + + label.tooltip = ""; + } + + void doMinmax(Rect r, GUIContent label, bool showOptional) + { + float l = ppFrom.intValue; + float u = ppTo.intValue; + + Rect r2 = new Rect(r); + + if (showOptional) + r2.width -= 16; + + EditorGUI.BeginChangeCheck(); +#if UNITY_PRE_5_5 + EditorGUI.MinMaxSlider(label, r2, ref l, ref u, mOptions.FromMin, mOptions.FromMax); +#else + EditorGUI.MinMaxSlider(r2, label, ref l, ref u, mOptions.FromMin, mOptions.FromMax); +#endif + if (EditorGUI.EndChangeCheck()) + { + ppFrom.intValue = (int)l; + validateFrom(); + ppTo.intValue = (int)u; + validateTo(); + } + if (showOptional) + { + ppSimpleValue.boolValue = !EditorGUI.Toggle(new Rect(r.xMax - 16, r.y, 16, r.height), new GUIContent("", mOptions.OptionalTooltip), !ppSimpleValue.boolValue); + } + if (!compact) + { + r.y += r.height + EditorGUIUtility.standardVerticalSpacing; + doCompact(r, new GUIContent(mOptions.LabelFrom), new GUIContent(mOptions.LabelTo), false); + } + } + + void doCompact(Rect r, GUIContent label, GUIContent labelTo, bool showOptional, bool fullLine = false) + { + float lw = EditorGUIUtility.labelWidth; + float fw = EditorGUIUtility.fieldWidth; + Rect r2 = new Rect(r); + bool showTo = !showOptional || !ppSimpleValue.boolValue; + float showToLabelWidth = DTGUI.LabelWidth(labelTo); + + float chkWidth = showOptional ? 16 : 0; + if (fullLine) + { + EditorGUIUtility.labelWidth = DTGUI.LabelWidth(label); + lw = EditorGUIUtility.labelWidth; + } + + r2.width = (r.width - lw - chkWidth - showToLabelWidth) / 2; + + // From + r.width = lw + r2.width; + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(r, ppFrom, label); + if (EditorGUI.EndChangeCheck()) + validateFrom(); + + r.x += r.width; + + // "To" may be optional + if (showOptional) + { + ppSimpleValue.boolValue = !EditorGUI.Toggle(new Rect(r.x, r.y, 16, r.height), new GUIContent("", mOptions.OptionalTooltip), !ppSimpleValue.boolValue); + r.x += 16; + } + // Show "To"? + + if (showTo) + { + EditorGUI.BeginChangeCheck(); + EditorGUIUtility.labelWidth = showToLabelWidth; + r.width = r2.width + showToLabelWidth; + ppTo.intValue = EditorGUI.IntField(r, labelTo, ppTo.intValue); + if (EditorGUI.EndChangeCheck()) + validateTo(); + + } + + EditorGUIUtility.labelWidth = lw; + EditorGUIUtility.fieldWidth = fw; + } + + void doRegular(Rect r, GUIContent label) + { + // From + Rect rF = new Rect(r); + if (Attribute.RegionIsOptional) + rF.width -= 16; + EditorGUI.BeginProperty(rF, label, ppFrom); + EditorGUI.BeginChangeCheck(); + if (Attribute.UseSlider && mOptions.ClampFrom == DTValueClamping.Range) + ppFrom.intValue = EditorGUI.IntSlider(rF, label, ppFrom.intValue, mOptions.FromMin, mOptions.FromMax); + else + ppFrom.intValue = EditorGUI.IntField(rF, label, ppFrom.intValue); + if (EditorGUI.EndChangeCheck()) + validateFrom(); + EditorGUI.EndProperty(); + // Perhaps To is optional + if (Attribute.RegionIsOptional) + ppSimpleValue.boolValue = !EditorGUI.Toggle(new Rect(rF.x + rF.width, rF.y, 16, rF.height), new GUIContent("", mOptions.OptionalTooltip), !ppSimpleValue.boolValue); + + // To + if (!Attribute.RegionIsOptional || !ppSimpleValue.boolValue) + { + r.y += r.height + EditorGUIUtility.standardVerticalSpacing; + label.text = mOptions.LabelTo; + EditorGUI.BeginProperty(r, label, ppTo); + EditorGUI.BeginChangeCheck(); + if (Attribute.UseSlider && mOptions.ClampTo == DTValueClamping.Range) + ppTo.intValue = EditorGUI.IntSlider(r, label, ppTo.intValue, mOptions.ToMin, mOptions.ToMax); + else + ppTo.intValue = EditorGUI.IntField(r, label, ppTo.intValue); + if (EditorGUI.EndChangeCheck()) + validateTo(); + EditorGUI.EndProperty(); + } + } + + void validateFrom() + { + switch (mOptions.ClampFrom) + { + case DTValueClamping.Min: + ppFrom.intValue = Mathf.Max(mOptions.FromMin, ppFrom.intValue); + break; + case DTValueClamping.Max: + ppFrom.intValue = Mathf.Min(mOptions.FromMax, ppFrom.intValue); + break; + case DTValueClamping.Range: + ppFrom.intValue = Mathf.Clamp(ppFrom.intValue, mOptions.FromMin, mOptions.FromMax); + if (minmax) + ppFrom.intValue = Mathf.Min(ppFrom.intValue, ppTo.intValue); + break; + } + } + + void validateTo() + { + switch (mOptions.ClampTo) + { + case DTValueClamping.Min: + ppTo.intValue = Mathf.Max(mOptions.ToMin, ppTo.intValue); + break; + case DTValueClamping.Max: + ppTo.intValue = Mathf.Min(mOptions.ToMax, ppTo.intValue); + break; + case DTValueClamping.Range: + ppTo.intValue = Mathf.Clamp(ppTo.intValue, mOptions.ToMin, mOptions.ToMax); + if (minmax) + ppTo.intValue = Mathf.Max(ppTo.intValue, ppFrom.intValue); + break; + } + } + + void Init(SerializedProperty property) + { + try + { + mObject = property.GetParentObject(); + if (mPI == null && !string.IsNullOrEmpty(Attribute.RegionOptionsPropertyName)) + mPI = mObject.GetType().PropertyByName(Attribute.RegionOptionsPropertyName, true, true); + + if (mPI != null) + mOptions = (RegionOptions)mPI.GetValue(mObject, null); + else + mOptions = RegionOptions.Default; + } + catch (System.Exception e) + { + DTLog.LogError("[DevTools] IntRegionPropertyDrawer: Unable to find property '" + Attribute.RegionOptionsPropertyName + "'! (" + e.ToString() + ")"); + } + ppFrom = property.FindPropertyRelative("From"); + ppTo = property.FindPropertyRelative("To"); + ppSimpleValue = property.FindPropertyRelative("SimpleValue"); + + } + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/PropertyDrawers.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/PropertyDrawers.cs.meta new file mode 100644 index 00000000..99213ae4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/PropertyDrawers.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1bc4fb38a6e10f34c8923621b5f349d7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes.meta new file mode 100644 index 00000000..eaff6821 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 0565c5d04b968af40bece709cba9bf78 +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarButton.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarButton.cs new file mode 100644 index 00000000..84d8e6c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarButton.cs @@ -0,0 +1,24 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.DevToolsEditor +{ + + public class DTToolbarButton : DTToolbarItem + { + + public override void Render(Rect r) + { + if (GUI.Button(r, Content,DTStyles.TBButton)) + OnClick(); + } + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarButton.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarButton.cs.meta new file mode 100644 index 00000000..323bf29d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23190dcdedb51a74c914b829d6473b8c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioButton.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioButton.cs new file mode 100644 index 00000000..47e10235 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioButton.cs @@ -0,0 +1,61 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.DevToolsEditor +{ + + public class DTToolbarRadioButton : DTToolbarToggleButton + { + public string RadioGroup = string.Empty; + + protected bool AllOffAllowed {get; set;} + + public override bool On + { + get + { + return base.On; + } + set + { + if (mOn!=value) + { + if (value == true) + DTToolbar.SetRadioGroupState(this); + else if (AllOffAllowed) + { + mOn = false; + OnClick(); + } + } + + } + } + + public override bool ShowClientArea + { + get + { + return On; + } + + } + + public DTToolbarRadioButton(string radioGroupName, bool defaultOn=false) + { + RadioGroup = radioGroupName; + AllOffAllowed = false; + mOn = defaultOn; + } + + + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioButton.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioButton.cs.meta new file mode 100644 index 00000000..2cce12f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d892a9daccfb1d04ba11b0f7ecb26c70 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioOffButton.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioOffButton.cs new file mode 100644 index 00000000..9f3e43d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioOffButton.cs @@ -0,0 +1,57 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.DevToolsEditor +{ + + public class DTToolbarRadioOffButton : DTToolbarRadioButton + { + + public override bool On + { + get + { + return base.On; + } + set + { + if (mOn != value) + { + if (value == true) + DTToolbar.SetRadioGroupState(this); + else if (AllOffAllowed) + { + mOn = false; + OnClick(); + } + } + + } + } + + public override bool ShowClientArea + { + get + { + return On; + } + + } + + public DTToolbarRadioOffButton(string radioGroupName, bool defaultOn=false) + : base(radioGroupName,defaultOn) + { + AllOffAllowed = true; + } + + + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioOffButton.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioOffButton.cs.meta new file mode 100644 index 00000000..06b0b918 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarRadioOffButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41cca5920ca067a40b4b73d4db3f20e5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarToggleButton.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarToggleButton.cs new file mode 100644 index 00000000..267ed2d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarToggleButton.cs @@ -0,0 +1,64 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== + +using UnityEngine; +using UnityEditor; + +namespace FluffyUnderware.DevToolsEditor +{ + + public class DTToolbarToggleButton : DTToolbarItem + { + + public virtual bool On + { + get { return mOn; } + set + { + if (mOn != value) + { + mOn = value; + if (!mOn && FocusedItem == this) + FocusedItem = null; + } + } + } + + internal bool mOn; + + public override bool ShowClientArea + { + get + { + return On; + } + + } + + public override void OnOtherItemClicked(DTToolbarItem other) + { + base.OnOtherItemClicked(other); + On = false; + } + + public override void OnClick() + { + base.OnClick(); + On = !On; + } + + public override void Render(Rect r) + { + bool b = GUI.Toggle(r, On, Content, DTStyles.TBButton); + if (b!=On) + OnClick(); + } + + + } + +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarToggleButton.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarToggleButton.cs.meta new file mode 100644 index 00000000..b4220ea4 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Editor/ToolbarItemTypes/DTToolbarToggleButton.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53c6546eb43ea874e92c8a7b1a7ef015 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions.meta new file mode 100644 index 00000000..91ecd895 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: b0b4e043cc24eb74ea52c17d8b10dc4a +folderAsset: yes +DefaultImporter: + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions/Extensions.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions/Extensions.cs new file mode 100644 index 00000000..ed962e5d --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions/Extensions.cs @@ -0,0 +1,1302 @@ +// ===================================================================== +// Copyright 2013-2017 Fluffy Underware +// All rights reserved +// +// http://www.fluffyunderware.com +// ===================================================================== +using UnityEngine; +using System.Collections; +using System; +using System.Reflection; +using System.Collections.Generic; +using UnityEngine.Events; +#if UNITY_EDITOR +using UnityEditor; +#endif +using System.Text; +using System.IO; +using System.Linq; +using Object = UnityEngine.Object; + +namespace FluffyUnderware.DevTools.Extensions +{ + public static class ObjectExt + { + + /// + /// Calls the proper destruction method based on whether we are in Edit mode or not + /// Will show a display dialogue if attempting to destroy a GameObject part of a prefab instance + /// + /// The object to destroy + [Obsolete("Use the other overload of this method")] + public static bool Destroy(this UnityEngine.Object @object) + { + return Destroy(@object, true, true); + } + + /// + /// Calls the proper destruction method based on whether we are in Edit mode or not + /// Will show a display dialogue if attempting to destroy a GameObject part of a prefab instance + /// + /// The object to destroy + /// Should the object destruction be undoable + /// Should this method check that the object destruction is valid, i.e. not deleting a game object that is part of a prefab instance + public static bool Destroy(this UnityEngine.Object @object, bool isUndoable, bool doPrefabCheck) + { + bool wasDestroyed; + + bool isInEditMode = DTUtility.IsInEditMode; + + if (isInEditMode) + { +#if UNITY_EDITOR + string errorMessage = string.Empty; + bool needsPrefabModification = doPrefabCheck && DTUtility.DoesPrefabStatusAllowDeletion(@object, out errorMessage) == false; + if (needsPrefabModification) + { + EditorUtility.DisplayDialog($"Cannot delete Game Object '{@object.name}'", errorMessage, "Ok"); + DTLog.LogError("[Curvy] Invalid operation:" + errorMessage.Replace("\n", String.Empty)); + + wasDestroyed = false; + } + else + { + if (isUndoable) + Undo.DestroyObjectImmediate(@object); + else + Object.DestroyImmediate(@object); + wasDestroyed = true; + } +#else + wasDestroyed = false; +#endif + } + else + { + if (@object is Component) + Object.DestroyImmediate(@object); + else + Object.Destroy(@object); + wasDestroyed = true; + } + + return wasDestroyed; + } + + public static string ToDumpString(this object o) + { + return new DTObjectDump(o).ToString(); + } + } + + public static class FloatExt + { + /// + /// Return true if v is between 0 and 1 inclusive + /// + public static bool IsBetween0And1(this float v) + { + return v >= 0 && v <= 1; + } + + /// + /// Return true if v is between a and b inclusive + /// + public static bool IsBetween(this float v, float a, float b) + { + return v >= a && v <= b + || v >= b && v <= a; + } + } + + public static class Vector2Ext + { + public static Vector2 Snap(this Vector2 v, float snapX, float snapY = -1) + { + if (snapY == -1) + snapY = snapX; + return (new Vector2(v.x - v.x % snapX, v.y - v.y % snapY)); + } + + public static float AngleSigned(this Vector2 a, Vector2 b) + { + float sign = Mathf.Sign(a.x * b.y - a.y * b.x); + return Vector2.Angle(a, b) * sign; + } + + public static Vector2 LeftNormal(this Vector2 v) + { + return new Vector2(-v.y, v.x); + } + public static Vector2 RightNormal(this Vector2 v) + { + return new Vector2(v.y, -v.x); + } + + public static Vector2 Rotate(this Vector2 v, float degree) + { + float rad = degree * Mathf.Deg2Rad; + float c = Mathf.Cos(rad); + float s = Mathf.Sin(rad); + return new Vector2(c * v.x - s * v.y, s * v.x + c * v.y); + } + + public static Vector2 ToVector3(this Vector2 v) + { + return new Vector3(v.x, v.y, 0); + } + + + } + + public static class Vector3Ext + { + public static float AngleSigned(this Vector3 a, Vector3 b, Vector3 normal) + { + return Mathf.Atan2(Vector3.Dot(normal, Vector3.Cross(a, b)), Vector3.Dot(a, b)) * Mathf.Rad2Deg; + } + + public static Vector3 RotateAround(this Vector3 point, Vector3 origin, Quaternion rotation) + { + Vector3 dir = point - origin; + dir = rotation * dir; + return origin + dir; + } + + public static Vector2 ToVector2(this Vector3 v) + { + Vector2 result; + result.x = v.x; + result.y = v.y; + return result; + } + + + /// + /// Return true if v1 and v2 are equal, or different but very close. + /// + /// + /// + /// + public static bool Approximately(this Vector3 v1, Vector3 v2) + { + Vector3 v1MinusV2 = v1; + v1MinusV2.x -= v2.x; + v1MinusV2.y -= v2.y; + v1MinusV2.z -= v2.z; + if (Vector3.SqrMagnitude(v1MinusV2) < 0.000001f) + return true; + + if (Mathf.Approximately(v1.x, v2.x) + && Mathf.Approximately(v1.y, v2.y) + && Mathf.Approximately(v1.z, v2.z)) + { +#if CURVY_SANITY_CHECKS_PRIVATE + Debug.LogWarning("Approximately went in the third branch"); +#endif + return true; + } + + return false; + } + + /// + /// The opposite of + /// + /// + /// + /// + public static bool NotApproximately(this Vector3 v1, Vector3 v2) + { + return Approximately(v1, v2) == false; + } + } + + /// + /// Extension methods for quaternions + /// + static public class QuaternionExt + { + /// + /// Two quaternions can represent different rotations that lead to the same final orientation (one rotating around Axis with Angle, the other around -Axis with 2Pi-Angle). In this case, the quaternion == operator will return false. This method will return true. + /// + /// + /// + /// + public static bool SameOrientation(this Quaternion q1, Quaternion q2) + { + return Math.Abs((double)Quaternion.Dot(q1, q2)) > 0.999998986721039; + } + + /// + /// Two quaternions can represent different rotations that lead to the same final orientation (one rotating around Axis with Angle, the other around -Axis with 2Pi-Angle). In this case, the quaternion != operator will return true. This method will return false. + /// + /// + /// + /// + public static bool DifferentOrientation(this Quaternion q1, Quaternion q2) + { + return Math.Abs((double)Quaternion.Dot(q1, q2)) <= 0.999998986721039; + } + } + + public static class GameObjectExt + { + /// + /// Duplicates a GameObject + /// + /// a component being part of the source GameObject + /// the component from the cloned GameObject + public static GameObject DuplicateGameObject(this GameObject source, Transform newParent, bool keepPrefabReference = false) + { + if (!source) + return null; + + GameObject newGO; +#if UNITY_EDITOR + UnityEngine.Object prefabRoot = PrefabUtility.GetCorrespondingObjectFromSource(source.gameObject); + + if (prefabRoot != null && keepPrefabReference) + newGO = PrefabUtility.InstantiatePrefab(prefabRoot) as GameObject; + else +#endif + newGO = Object.Instantiate(source.gameObject) as GameObject; + + if (newGO) + newGO.transform.parent = newParent; + + return newGO; + } + + public static void StripComponents(this GameObject go, params Type[] toKeep) + { + List keep = new List(toKeep); + keep.Add(typeof(Transform)); + keep.Add(typeof(RectTransform)); + Component[] cmps = go.GetComponents(); + for (int i = 0; i < cmps.Length; i++) + if (!keep.Contains(cmps[i].GetType())) + cmps[i].Destroy(false, false); + } + } + + public static class ComponentExt + { + public static void StripComponents(this Component c, params Type[] toKeep) + { + if (toKeep.Length == 0) + c.gameObject.StripComponents(c.GetType()); + else + c.gameObject.StripComponents(toKeep); + } + + public static GameObject AddChildGameObject(this Component c, string name) + { + GameObject go = new GameObject(name); + go.transform.SetParent(c.transform); + return go; + } + + public static T AddChildGameObject(this Component c, string name) where T : Component + { + GameObject go = new GameObject(name); + if (go) + { + go.transform.SetParent(c.transform); + return go.AddComponent(); + } + else + return null; + } + + /// + /// Duplicates the GameObject of a component, returning the component + /// + /// a component being part of the source GameObject + /// the component from the cloned GameObject + public static T DuplicateGameObject(this Component source, Transform newParent, bool keepPrefabConnection = false) where T : Component + { + if (!source || !source.gameObject) + return null; + + List cmps = new List(source.gameObject.GetComponents()); + int sourceIdx = cmps.IndexOf(source); + GameObject newGO; +#if UNITY_EDITOR + UnityEngine.Object prefabRoot = PrefabUtility.GetCorrespondingObjectFromSource(source.gameObject); + + if (prefabRoot != null && keepPrefabConnection) + newGO = PrefabUtility.InstantiatePrefab(prefabRoot) as GameObject; + else +#endif + newGO = Object.Instantiate(source.gameObject); + + if (newGO) + { + newGO.transform.SetParent(newParent, false); + Component[] newCmps = newGO.GetComponents(); + return newCmps[sourceIdx] as T; + } + else + return null; + } + + /// + /// Duplicates the GameObject of a component, returning the component + /// + /// a component being part of the source GameObject + /// the component from the cloned GameObject + public static Component DuplicateGameObject(this Component source, Transform newParent, bool keepPrefabConnection = false) + { + if (!source || !source.gameObject || !newParent) + return null; + + List cmps = new List(source.gameObject.GetComponents()); + int sourceIdx = cmps.IndexOf(source); + GameObject newGO; +#if UNITY_EDITOR + UnityEngine.Object prefabRoot = PrefabUtility.GetCorrespondingObjectFromSource(source.gameObject); + + if (prefabRoot != null && keepPrefabConnection) + newGO = PrefabUtility.InstantiatePrefab(prefabRoot) as GameObject; + else +#endif + newGO = Object.Instantiate(source.gameObject); + + if (newGO) + { + newGO.transform.SetParent(newParent, false); + Component[] newCmps = newGO.GetComponents(); + return newCmps[sourceIdx]; + } + else + return null; + } + + } + + public static class ColorExt + { + public static string ToHtml(this Color c) + { + Color32 col = c; + return string.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", new object[] { col.r, col.g, col.b, col.a }); + } + + + } + + public static class EnumExt + { + + /// + /// Checks if at least one of the provided flags is set in variable + /// + public static bool HasFlag(this Enum variable, params Enum[] flags) + { + if (flags.Length == 0) + throw new ArgumentNullException("flags"); + + int varInt = Convert.ToInt32(variable); + + Type T = variable.GetType(); + for (int i = 0; i < flags.Length; i++) + { + if (!Enum.IsDefined(T, flags[i])) + { + throw new ArgumentException(string.Format( + "Enumeration type mismatch. The flag is of type '{0}', was expecting '{1}'.", + flags[i].GetType(), T)); + } + int num = Convert.ToInt32(flags[i]); + if ((varInt & num) == num) + return true; + } + return false; + } + + public static bool HasFlag(this T value, T flag) where T : struct + { + long lValue = Convert.ToInt64(value); + long lFlag = Convert.ToInt64(flag); + return (lValue & lFlag) != 0; + } + + /// + /// Sets a flag + /// + public static T Set(this Enum value, T append) { return Set(value, append, true); } + /// + /// Sets a flag + /// + /// whether to set or unset the value + public static T Set(this Enum value, T append, bool OnOff) + { + if (append == null) + throw new ArgumentNullException("append"); + + Type type = value.GetType(); + //return the final value + if (OnOff) + return (T)Enum.Parse(type, (Convert.ToUInt64(value) | Convert.ToUInt64(append)).ToString()); + else + return (T)Enum.Parse(type, (Convert.ToUInt64(value) & ~Convert.ToUInt64(append)).ToString()); + } + } + + public static class RectExt + { + + public static Rect Set(this Rect rect, Vector2 pos, Vector2 size) + { + rect.Set(pos.x, pos.y, size.x, size.y); + return new Rect(rect); + } + + public static Rect SetBetween(this Rect rect, Vector2 pos, Vector2 pos2) + { + rect.Set(pos.x, pos.y, pos2.x - pos.x, pos2.y - pos.y); + return new Rect(rect); + } + + /// + /// Sets x/y + /// + public static Rect SetPosition(this Rect rect, Vector2 pos) + { + rect.x = pos.x; + rect.y = pos.y; + return new Rect(rect); + } + + /// + /// Sets x/y + /// + public static Rect SetPosition(this Rect rect, float x, float y) + { + rect.x = x; + rect.y = y; + return new Rect(rect); + } + + /// + /// gets width/height as Vector2 + /// + public static Vector2 GetSize(this Rect rect) + { + return new Vector2(rect.width, rect.height); + } + /// + /// Sets width/height + /// + public static Rect SetSize(this Rect rect, Vector2 size) + { + rect.width = size.x; + rect.height = size.y; + return new Rect(rect); + } + + + /// + /// Grow/Shrink a rect + /// + public static Rect ScaleBy(this Rect rect, int pixel) { return ScaleBy(rect, pixel, pixel); } + /// + /// Grow/Shrink a rect + /// + public static Rect ScaleBy(this Rect rect, int x, int y) + { + rect.x -= (float)x; + rect.y -= (float)y; + rect.width += (float)x * 2; + rect.height += (float)y * 2; + return new Rect(rect); + } + + public static Rect ShiftBy(this Rect rect, int x, int y) + { + rect.x += (float)x; + rect.y += (float)y; + return new Rect(rect); + } + + public static Rect Include(this Rect rect, Rect other) + { + Rect r = new Rect(); + r.xMin = Mathf.Min(rect.xMin, other.xMin); + r.xMax = Mathf.Max(rect.xMax, other.xMax); + r.yMin = Mathf.Min(rect.yMin, other.yMin); + r.yMax = Mathf.Max(rect.yMax, other.yMax); + return r; + } + + } + + public static class StringExt + { + /// + /// Converts a HTML color endcoded string int a color + /// + /// html color of type [#]rrggbb[aa] + /// a Color + public static Color ColorFromHtml(this string hexString) + { + if (hexString.Length < 9) + hexString += "FF"; + if (hexString.StartsWith("#") && hexString.Length == 9) + { + int[] rgba = new int[4]; + try + { + rgba[0] = int.Parse(hexString.Substring(1, 2), System.Globalization.NumberStyles.HexNumber); + rgba[1] = int.Parse(hexString.Substring(3, 2), System.Globalization.NumberStyles.HexNumber); + rgba[2] = int.Parse(hexString.Substring(5, 2), System.Globalization.NumberStyles.HexNumber); + rgba[3] = int.Parse(hexString.Substring(7, 2), System.Globalization.NumberStyles.HexNumber); + return new Color(rgba[0] / 255f, rgba[1] / 255f, rgba[2] / 255f, rgba[3] / 255f); + } + catch (Exception e) + { + Debug.LogException(e); + return Color.white; + } + } + return Color.white; + } + + public static string TrimStart(this string s, string trim, StringComparison compare = StringComparison.CurrentCultureIgnoreCase) + { + if (!s.StartsWith(trim, compare)) + return s; + else + { + return s.Substring(trim.Length); + } + } + + public static string TrimEnd(this string s, string trim, StringComparison compare = StringComparison.CurrentCultureIgnoreCase) + { + if (!s.EndsWith(trim, compare)) + return s; + else + { + return s.Substring(0, s.Length - trim.Length); + } + } + + + } + + public static class IEnumerableExt + { + public static void ForEach(this IEnumerable ie, Action action) + { + foreach (T i in ie) + { + action(i); + } + } + } + + public static class ArrayExt + { + public static T[] SubArray(this T[] data, int index, int length) + { + length = Mathf.Clamp(length, 0, data.Length - index); + T[] result = new T[length]; + if (length > 0) + Array.Copy(data, index, result, 0, length); + return result; + } + + public static T[] RemoveAt(this T[] source, int index) + { + T[] dest = new T[source.Length - 1]; + if (index > 0) + Array.Copy(source, 0, dest, 0, index); + + if (index < source.Length - 1) + Array.Copy(source, index + 1, dest, index, source.Length - index - 1); + + return dest; + } + + public static T[] InsertAt(this T[] source, int index) + { + T[] dest = new T[source.Length + 1]; + index = Mathf.Clamp(index, 0, source.Length - 1); + + if (index > 0) + Array.Copy(source, 0, dest, 0, index); + + Array.Copy(source, index, dest, index + 1, source.Length - index); + + return dest; + } + + public static T[] Swap(this T[] source, int index, int with) + { + index = Mathf.Clamp(index, 0, source.Length - 1); + with = Mathf.Clamp(index, 0, source.Length - 1); + T tmp = source[index]; + source[index] = source[with]; + source[with] = tmp; + return source; + } + + public static T[] Add(this T[] source, T item) + { + Array.Resize(ref source, source.Length + 1); + source[source.Length - 1] = item; + return source; + } + + public static T[] AddRange(this T[] source, T[] items) + { + Array.Resize(ref source, source.Length + items.Length); + Array.Copy(items, 0, source, source.Length - items.Length, items.Length); + return source; + } + + public static T[] RemoveDuplicates(this T[] source) + { + List res = new List(); + HashSet hash = new HashSet(); + foreach (T p in source) + { + if (hash.Add(p)) + { + res.Add(p); + } + } + return res.ToArray(); + } + + public static int IndexOf(this T[] source, T item) + { + for (int i = 0; i < source.Length; i++) + if (source[i].Equals(item)) + return i; + return -1; + } + + public static T[] Remove(this T[] source, T item) + { + int idx = source.IndexOf(item); + if (idx > -1) + return source.RemoveAt(idx); + else + return source; + } + } + + public static class MeshFilterExt + { + /// + /// Returns a shared mesh to work with. If existing, it will be cleared + /// + public static Mesh PrepareNewShared(this MeshFilter m, string name = "Mesh") + { + if (m == null) + return null; + if (m.sharedMesh == null) + { + Mesh msh = new Mesh(); + msh.MarkDynamic(); + msh.name = name; + m.sharedMesh = msh; + } + else + { + m.sharedMesh.Clear(); + m.sharedMesh.name = name; + m.sharedMesh.subMeshCount = 0; + } + return m.sharedMesh; + } + + [Obsolete("No more used in Curvy. Will get removed. Copy it if you still need it")] + public static void CalculateTangents(this MeshFilter m) + { + //speed up math by copying the mesh arrays + int[] triangles = m.sharedMesh.triangles; + Vector3[] vertices = m.sharedMesh.vertices; + Vector2[] uv = m.sharedMesh.uv; + Vector3[] normals = m.sharedMesh.normals; + + if (uv.Length == 0) + return; + + //variable definitions + int triangleCount = triangles.Length; + int vertexCount = vertices.Length; + + Vector3[] tan1 = new Vector3[vertexCount]; + Vector3[] tan2 = new Vector3[vertexCount]; + + Vector4[] tangents = new Vector4[vertexCount]; + + for (int a = 0; a < triangleCount; a += 3) + { + int i1 = triangles[a + 0]; + int i2 = triangles[a + 1]; + int i3 = triangles[a + 2]; + + Vector3 v1 = vertices[i1]; + Vector3 v2 = vertices[i2]; + Vector3 v3 = vertices[i3]; + + Vector2 w1 = uv[i1]; + Vector2 w2 = uv[i2]; + Vector2 w3 = uv[i3]; + + float x1 = v2.x - v1.x; + float x2 = v3.x - v1.x; + float y1 = v2.y - v1.y; + float y2 = v3.y - v1.y; + float z1 = v2.z - v1.z; + float z2 = v3.z - v1.z; + + float s1 = w2.x - w1.x; + float s2 = w3.x - w1.x; + float t1 = w2.y - w1.y; + float t2 = w3.y - w1.y; + + float div = s1 * t2 - s2 * t1; + float r = div == 0.0f ? 0.0f : 1.0f / div; + + float sdirX = (t2 * x1 - t1 * x2) * r; + float sdirY = (t2 * y1 - t1 * y2) * r; + float sdirZ = (t2 * z1 - t1 * z2) * r; + float tdirX = (s1 * x2 - s2 * x1) * r; + float tdirY = (s1 * y2 - s2 * y1) * r; + float tdirZ = (s1 * z2 - s2 * z1) * r; + + tan1[i1].x += sdirX; + tan1[i1].y += sdirY; + tan1[i1].z += sdirZ; + + tan1[i2].x += sdirX; + tan1[i2].y += sdirY; + tan1[i2].z += sdirZ; + + tan1[i3].x += sdirX; + tan1[i3].y += sdirY; + tan1[i3].z += sdirZ; + + + tan2[i1].x += tdirX; + tan2[i1].y += tdirY; + tan2[i1].z += tdirZ; + + tan2[i2].x += tdirX; + tan2[i2].y += tdirY; + tan2[i2].z += tdirZ; + + tan2[i3].x += tdirX; + tan2[i3].y += tdirY; + tan2[i3].z += tdirZ; + } + + + for (int a = 0; a < vertexCount; ++a) + { + Vector3 n = normals[a]; + Vector3 t = tan1[a]; + Vector3.OrthoNormalize(ref n, ref t); + tangents[a].x = t.x; + tangents[a].y = t.y; + tangents[a].z = t.z; + + //inlined version of float dotOfCross = (Vector3.Dot(Vector3.Cross(n, t), tan2[a]) < 0.0f) + float dotOfCross = ((n.y * t.z - n.z * t.y) * tan2[a].x + (n.z * t.x - n.x * t.z) * tan2[a].y + (n.x * t.y - n.y * t.x) * tan2[a].z); + tangents[a].w = (dotOfCross < 0.0f) ? -1.0f : 1.0f; + } + + m.sharedMesh.tangents = tangents; + } + } + + public static class TypeExt + { + + /// + /// Gets all types loaded in the current domain. Is not compatible with NETFX_CORE since AppDomain is not available in .Net core 1. AppDomain is back in .Net core 2, but unity isn't compatible with it yet. + /// +#if NETFX_CORE + [Obsolete("Is not compatible with NETFX_CORE since AppDomain is not available in .Net core 1. AppDomain is back in .Net core 2, but unity isn't compatible with it yet. Use Type[] GetAllTypes(this Type typeFromAssembly) instead")] +#endif +#if UNITY_EDITOR + [Obsolete("Use TypeCache.GetTypesDerivedFrom(typeof(System.Object)) instead")] +#endif + public static Type[] GetLoadedTypes() + { +#if UNITY_EDITOR + return TypeCache.GetTypesDerivedFrom(typeof(System.Object)).ToArray(); +#elif NETFX_CORE + //OPTIM use GetExportedTypes instead of GetTypes? + return GetLoadedAssemblies().SelectMany(a => a.DefinedTypes).Select(typeInfo => typeInfo.AsType()).ToArray(); +#else + IEnumerable loadedAssemblies = GetLoadedAssemblies(); + List types = new List(loadedAssemblies.Count() * 100);//An estimation of 100 type per assembly. This is based on no statistical analysis, just a guess. + foreach (Assembly assembly in loadedAssemblies) + { + try + { + types.AddRange(assembly.GetTypes()); + } + catch (ReflectionTypeLoadException exception) + { + for (int index = 0; index < exception.Types.Length; index++) + { + Type type = exception.Types[index]; + if (type != null) + types.Add(type); + } + } + } + return types.ToArray(); +#endif + } + + /// + /// Gets all types loaded assemblies in the current domain. Is not compatible with NETFX_CORE since AppDomain is not available in .Net core 1. AppDomain is back in .Net core 2, but unity isn't compatible with it yet. + /// +#if NETFX_CORE + [Obsolete("Is not compatible with NETFX_CORE since AppDomain is not available in .Net core 1. AppDomain is back in .Net core 2, but unity isn't compatible with it yet.")] +#endif + static public IEnumerable GetLoadedAssemblies() + { + //TODO find a way to make this work when NETFX_CORE is true +#if NETFX_CORE + throw new NotImplementedException("Is not compatible with NETFX_CORE since AppDomain is not available in .Net core 1. AppDomain is back in .Net core 2, but unity isn't compatible with it yet."); +#else + //OPTIM use .Where(a => a.GlobalAssemblyCache == false)? + return AppDomain.CurrentDomain.GetAssemblies(); +#endif + + } + + /// + /// Gets all Types T that have an attribute U + /// + public static Dictionary GetAllTypesWithAttribute(this Type type) + { + Dictionary res = new Dictionary(); + + IEnumerable loadedTypes; +#if UNITY_EDITOR + loadedTypes = TypeCache.GetTypesDerivedFrom(type); +#else +#if NETFX_CORE + loadedTypes = type.GetAllTypes(); +#else + loadedTypes = GetLoadedTypes(); +#endif +#endif + + foreach (Type t in loadedTypes) + { +#if UNITY_EDITOR == false +#if NETFX_CORE + if (t.GetTypeInfo().IsSubclassOf(type)) +#else + if (t.IsSubclassOf(type)) +#endif +#endif + { +#if NETFX_CORE + object[] attribs = (object[])t.GetTypeInfo().GetCustomAttributes(typeof(U), false); +#else + object[] attribs = t.GetCustomAttributes(typeof(U), false); +#endif + + if (attribs.Length > 0) + { + res.Add((U)attribs[0], t); + } + } + } + return res; + } + + /// + /// Gets all fields of a type that have a certain attribute + /// + public static List GetFieldsWithAttribute(this Type type, bool includeInherited = false, bool includePrivate = false) where T : Attribute + { + FieldInfo[] flds = type.GetAllFields(includeInherited, includePrivate); + List res = new List(); + foreach (FieldInfo fi in flds) + { + if (fi.GetCustomAttribute() != null) + res.Add(fi); + } + return res; + } + + /// + /// Gets a custom attribute from a type (Crossplatform) + /// + public static T GetCustomAttribute(this Type type) where T : Attribute + { +#if NETFX_CORE + object[] at = (object[])type.GetTypeInfo().GetCustomAttributes(typeof(T), true); +#else + object[] at = (object[])type.GetCustomAttributes(typeof(T), true); +#endif + return (at.Length > 0) ? (T)at[0] : null; + + } + + /// + /// Finds a Method (Crossplatform) + /// + /// type containing the method + /// Name of method + /// Whether methods of base classes should be returned as well + /// Whether private methods should be returned as well + public static MethodInfo MethodByName(this Type type, string name, bool includeInherited = false, bool includePrivate = false) + { +#if NETFX_CORE + MethodInfo res=type.GetRuntimeMethods().Where(mi => (mi.IsPublic || includePrivate) && mi.DeclaringType==type && mi.Name==name).FirstOrDefault(); + if (res==null && includeInherited) + { + type=type.GetTypeInfo().BaseType; + while (res==null && type!=typeof(object)) + { + res=type.GetRuntimeMethods().Where(mi => (mi.IsPublic || includePrivate) && mi.DeclaringType==type && mi.Name==name).FirstOrDefault(); + type=type.GetTypeInfo().BaseType; + } + } + return res; +#else + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance; + if (includePrivate) + flags = flags | BindingFlags.NonPublic; + + if (includeInherited) + return type.GetMethodIncludingBaseClasses(name, flags); + else + return type.GetMethod(name, flags); +#endif + } + /// + /// Finds a Field (Crossplatform) + /// + /// type containing the field + /// Name of field + /// Whether fields of base classes should be returned as well + /// Whether private fields should be returned as well + public static FieldInfo FieldByName(this Type type, string name, bool includeInherited = false, bool includePrivate = false) + { +#if NETFX_CORE + FieldInfo res=type.GetRuntimeFields().Where(fi => (fi.IsPublic || includePrivate) && fi.DeclaringType==type && fi.Name==name).FirstOrDefault(); + if (res==null && includeInherited) + { + type=type.GetTypeInfo().BaseType; + while (res==null && type!=typeof(object)) + { + res=type.GetRuntimeFields().Where(fi => (fi.IsPublic || includePrivate) && fi.DeclaringType==type && fi.Name==name).FirstOrDefault(); + type=type.GetTypeInfo().BaseType; + } + } + return res; +#else + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance; + if (includePrivate) + flags = flags | BindingFlags.NonPublic; + + if (includeInherited) + return type.GetFieldIncludingBaseClasses(name, flags); + else + return type.GetField(name, flags); +#endif + } + /// + /// Finds a Property (Crossplatform) + /// + /// type containing the property + /// Name of property + /// Whether properties of base classes should be returned as well + /// Whether private properties should be returned as well + public static PropertyInfo PropertyByName(this Type type, string name, bool includeInherited = false, bool includePrivate = false) + { +#if NETFX_CORE + PropertyInfo res=type.GetRuntimeProperties().Where(pi => ((pi.GetMethod!=null && pi.GetMethod.IsPublic) || includePrivate) && pi.DeclaringType==type && pi.Name==name).FirstOrDefault(); + if (res==null && includeInherited) + { + type=type.GetTypeInfo().BaseType; + while (res==null && type!=typeof(object)) + { + res=type.GetRuntimeProperties().Where(pi => ((pi.GetMethod!=null && pi.GetMethod.IsPublic) || includePrivate) && pi.DeclaringType==type && pi.Name==name).FirstOrDefault(); + type=type.GetTypeInfo().BaseType; + } + } + return res; +#else + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance; + if (includePrivate) + flags = flags | BindingFlags.NonPublic; + + if (includeInherited) + return type.GetPropertyIncludingBaseClasses(name, flags); + else + return type.GetProperty(name, flags); +#endif + } + /// + /// Gets all fields (Crossplatform) + /// + /// type to reflect + /// Whether fields of base classes should be returned as well + /// Whether private fields should be returned as well + public static FieldInfo[] GetAllFields(this Type type, bool includeInherited = false, bool includePrivate = false) + { +#if NETFX_CORE + + List res=type.GetRuntimeFields().Where(fi => (fi.IsPublic || includePrivate) && fi.DeclaringType==type).ToList(); + if (includeInherited) + { + type=type.GetTypeInfo().BaseType; + while (type!=typeof(object)) + { + res.AddRange(type.GetRuntimeFields().Where(fi => (fi.IsPublic || includePrivate) && fi.DeclaringType==type).ToArray()); + type=type.GetTypeInfo().BaseType; + } + } + return res.ToArray(); +#else + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly; + if (includePrivate) + flags = flags | BindingFlags.NonPublic; + + if (includeInherited) + { + Type currentType = type; + List res = new List(); + while (currentType != typeof(object)) + { + res.AddRange(currentType.GetFields(flags)); + currentType = currentType.BaseType; + } + return res.ToArray(); + } + else + return type.GetFields(flags); +#endif + } + /// + /// Gets all properties (Crossplatform) + /// + /// type to reflect + /// Whether properties of base classes should be returned as well + /// Whether private properties should be returned as well + public static PropertyInfo[] GetAllProperties(this Type type, bool includeInherited = false, bool includePrivate = false) + { +#if NETFX_CORE + List res=type.GetRuntimeProperties().Where(pi => ((pi.GetMethod!=null && pi.GetMethod.IsPublic) || includePrivate) && pi.DeclaringType==type).ToList(); + if (includeInherited) + { + type=type.GetTypeInfo().BaseType; + while (type!=typeof(object)) + { + res.AddRange(type.GetRuntimeProperties().Where(pi => ((pi.GetMethod!=null && pi.GetMethod.IsPublic) || includePrivate) && pi.DeclaringType==type).ToArray()); + type=type.GetTypeInfo().BaseType; + } + } + return res.ToArray(); +#else + BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly; + if (includePrivate) + flags = flags | BindingFlags.NonPublic; + + if (includeInherited) + { + Type currentType = type; + List res = new List(); + while (currentType != typeof(object)) + { + res.AddRange(currentType.GetProperties(flags)); + currentType = currentType.BaseType; + } + return res.ToArray(); + } + else + return type.GetProperties(flags); +#endif + } + + /// + /// Whether the type is a framework type, i.e. a primitive, string or DateTime (Crossplatform) + /// + public static bool IsFrameworkType(this Type type) + { +#if NETFX_CORE + return type.GetTypeInfo().IsPrimitive || type.Equals(typeof(string)) || type.Equals(typeof(DateTime)); +#else + return type.IsPrimitive || type.Equals(typeof(string)) || type.Equals(typeof(DateTime)); +#endif + } + + public static bool IsArrayOrList(this Type type) + { +#if NETFX_CORE + return (type.IsArray || (type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))); +#else + return (type.IsArray || (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))); +#endif + } + + +#if !NETFX_CORE + // not NETFX_CORE compliant + public static Type GetEnumerableType(this Type t) + { + Type ienum = FindIEnumerable(t); + if (ienum == null) return t; + return ienum.GetGenericArguments()[0]; + } + + // not NETFX_CORE compliant + static Type FindIEnumerable(Type seqType) + { + if (seqType == null || seqType == typeof(string)) + return null; + if (seqType.IsArray) + return typeof(IEnumerable<>).MakeGenericType(seqType.GetElementType()); + + if (seqType.IsGenericType) + { + foreach (Type arg in seqType.GetGenericArguments()) + { + Type ienum = typeof(IEnumerable<>).MakeGenericType(arg); + if (ienum.IsAssignableFrom(seqType)) + { + return ienum; + } + } + } + Type[] ifaces = seqType.GetInterfaces(); + if (ifaces != null && ifaces.Length > 0) + { + foreach (Type iface in ifaces) + { + Type ienum = FindIEnumerable(iface); + if (ienum != null) return ienum; + } + } + + if (seqType.BaseType != null && seqType.BaseType != typeof(object)) + { + return FindIEnumerable(seqType.BaseType); + } + return null; + } + + // not NETFX_CORE compliant + static MethodInfo GetMethodIncludingBaseClasses(this Type type, string name, BindingFlags bindingFlags) + { + // If this class doesn't have a base, don't waste any time + MethodInfo mi = type.GetMethod(name, bindingFlags); + if (type.BaseType == typeof(object)) + { + return mi; + } + else + { // Otherwise, collect all types up to the furthest base class + Type currentType = type; + while (currentType != typeof(object)) + { + mi = currentType.GetMethod(name, bindingFlags); + if (mi != null) + return mi; + currentType = currentType.BaseType; + } + return null; + } + } + // not NETFX_CORE compliant + static FieldInfo GetFieldIncludingBaseClasses(this Type type, string name, BindingFlags bindingFlags) + { + FieldInfo fieldInfo = type.GetField(name, bindingFlags); + + // If this class doesn't have a base, don't waste any time + if (type.BaseType == typeof(object)) + { + return fieldInfo; + } + else + { // Otherwise, collect all types up to the furthest base class + Type currentType = type; + while (currentType != typeof(object)) + { + fieldInfo = currentType.GetField(name, bindingFlags); + if (fieldInfo != null) + return fieldInfo; + currentType = currentType.BaseType; + } + return null; + } + } + // not NETFX_CORE compliant + static PropertyInfo GetPropertyIncludingBaseClasses(this Type type, string name, BindingFlags bindingFlags) + { + PropertyInfo propertyInfo = type.GetProperty(name, bindingFlags); + + // If this class doesn't have a base, don't waste any time + if (type.BaseType == typeof(object)) + { + return propertyInfo; + } + else + { // Otherwise, collect all types up to the furthest base class + Type currentType = type; + while (currentType != typeof(object)) + { + propertyInfo = currentType.GetProperty(name, bindingFlags); + if (propertyInfo != null) + return propertyInfo; + currentType = currentType.BaseType; + } + return null; + } + } + +#endif + + public static bool Matches(this Type type, params Type[] types) + { +#if NETFX_CORE + var ti = type.GetTypeInfo(); +#endif + foreach (Type t in types) +#if NETFX_CORE + if (type == t || ti.IsAssignableFrom(t.GetTypeInfo())) +#else + if (type == t || type.IsAssignableFrom(t)) +#endif + return true; + + return false; + } + + + + + } + + public static class FieldInfoExt + { +#if !NETFX_CORE + /// + /// Gets a custom attribute (CrossPlatform) + /// + public static T GetCustomAttribute(this FieldInfo field) where T : Attribute + { + object[] at = field.GetCustomAttributes(typeof(T), true); + return (at.Length > 0) ? (T)at[0] : null; + + } +#endif + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions/Extensions.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions/Extensions.cs.meta new file mode 100644 index 00000000..70da0b72 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/DevTools/Extensions/Extensions.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c750636a308f02746931c9fd1a75c27a +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet.meta new file mode 100644 index 00000000..4d1c3240 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e5765535bcb99bd41af50668b3924135 +folderAsset: yes +timeCreated: 1462028785 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Dict.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Dict.cs new file mode 100644 index 00000000..dde2a9cf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Dict.cs @@ -0,0 +1,102 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + internal class Dict where TValue : class + { + public class Node + { + internal TValue _key; + internal Node _prev, _next; + + public TValue Key { get { return _key; } } + public Node Prev { get { return _prev; } } + public Node Next { get { return _next; } } + } + + public delegate bool LessOrEqual(TValue lhs, TValue rhs); + + private LessOrEqual _leq; + Node _head; + + public Dict(LessOrEqual leq) + { + _leq = leq; + + _head = new Node { _key = null }; + _head._prev = _head; + _head._next = _head; + } + + public Node Insert(TValue key) + { + return InsertBefore(_head, key); + } + + public Node InsertBefore(Node node, TValue key) + { + do { + node = node._prev; + } while (node._key != null && !_leq(node._key, key)); + + var newNode = new Node { _key = key }; + newNode._next = node._next; + node._next._prev = newNode; + newNode._prev = node; + node._next = newNode; + + return newNode; + } + + public Node Find(TValue key) + { + var node = _head; + do { + node = node._next; + } while (node._key != null && !_leq(key, node._key)); + return node; + } + + public Node Min() + { + return _head._next; + } + + public void Remove(Node node) + { + node._next._prev = node._prev; + node._prev._next = node._next; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Dict.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Dict.cs.meta new file mode 100644 index 00000000..9f6f044c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Dict.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3102f422c6eae044d9449fcda12bf2a8 +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Geom.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Geom.cs new file mode 100644 index 00000000..035ec433 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Geom.cs @@ -0,0 +1,296 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +using Real = System.Single; +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + internal static class Geom + { + public static bool IsWindingInside(WindingRule rule, int n) + { + switch (rule) + { + case WindingRule.EvenOdd: + return (n & 1) == 1; + case WindingRule.NonZero: + return n != 0; + case WindingRule.Positive: + return n > 0; + case WindingRule.Negative: + return n < 0; + case WindingRule.AbsGeqTwo: + return n >= 2 || n <= -2; + } + throw new Exception("Wrong winding rule"); + } + + public static bool VertCCW(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + return (u._s * (v._t - w._t) + v._s * (w._t - u._t) + w._s * (u._t - v._t)) >= 0.0f; + } + public static bool VertEq(MeshUtils.Vertex lhs, MeshUtils.Vertex rhs) + { + return lhs._s == rhs._s && lhs._t == rhs._t; + } + public static bool VertLeq(MeshUtils.Vertex lhs, MeshUtils.Vertex rhs) + { + return (lhs._s < rhs._s) || (lhs._s == rhs._s && lhs._t <= rhs._t); + } + + /// + /// Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w), + /// evaluates the t-coord of the edge uw at the s-coord of the vertex v. + /// Returns v->t - (uw)(v->s), ie. the signed distance from uw to v. + /// If uw is vertical (and thus passes thru v), the result is zero. + /// + /// The calculation is extremely accurate and stable, even when v + /// is very close to u or w. In particular if we set v->t = 0 and + /// let r be the negated result (this evaluates (uw)(v->s)), then + /// r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t). + /// + public static Real EdgeEval(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(VertLeq(u, v) && VertLeq(v, w)); + + var gapL = v._s - u._s; + var gapR = w._s - v._s; + + if (gapL + gapR > 0.0f) + { + if (gapL < gapR) + { + return (v._t - u._t) + (u._t - w._t) * (gapL / (gapL + gapR)); + } + else + { + return (v._t - w._t) + (w._t - u._t) * (gapR / (gapL + gapR)); + } + } + /* vertical line */ + return 0; + } + + /// + /// Returns a number whose sign matches EdgeEval(u,v,w) but which + /// is cheaper to evaluate. Returns > 0, == 0 , or < 0 + /// as v is above, on, or below the edge uw. + /// + public static Real EdgeSign(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(VertLeq(u, v) && VertLeq(v, w)); + + var gapL = v._s - u._s; + var gapR = w._s - v._s; + + if (gapL + gapR > 0.0f) + { + return (v._t - w._t) * gapL + (v._t - u._t) * gapR; + } + /* vertical line */ + return 0; + } + + public static bool TransLeq(MeshUtils.Vertex lhs, MeshUtils.Vertex rhs) + { + return (lhs._t < rhs._t) || (lhs._t == rhs._t && lhs._s <= rhs._s); + } + + public static Real TransEval(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(TransLeq(u, v) && TransLeq(v, w)); + + var gapL = v._t - u._t; + var gapR = w._t - v._t; + + if (gapL + gapR > 0.0f) + { + if (gapL < gapR) + { + return (v._s - u._s) + (u._s - w._s) * (gapL / (gapL + gapR)); + } + else + { + return (v._s - w._s) + (w._s - u._s) * (gapR / (gapL + gapR)); + } + } + /* vertical line */ + return 0; + } + + public static Real TransSign(MeshUtils.Vertex u, MeshUtils.Vertex v, MeshUtils.Vertex w) + { + Debug.Assert(TransLeq(u, v) && TransLeq(v, w)); + + var gapL = v._t - u._t; + var gapR = w._t - v._t; + + if (gapL + gapR > 0.0f) + { + return (v._s - w._s) * gapL + (v._s - u._s) * gapR; + } + /* vertical line */ + return 0; + } + + public static bool EdgeGoesLeft(MeshUtils.Edge e) + { + return VertLeq(e._Dst, e._Org); + } + + public static bool EdgeGoesRight(MeshUtils.Edge e) + { + return VertLeq(e._Org, e._Dst); + } + + public static Real VertL1dist(MeshUtils.Vertex u, MeshUtils.Vertex v) + { + return Math.Abs(u._s - v._s) + Math.Abs(u._t - v._t); + } + + public static void AddWinding(MeshUtils.Edge eDst, MeshUtils.Edge eSrc) + { + eDst._winding += eSrc._winding; + eDst._Sym._winding += eSrc._Sym._winding; + } + + public static Real Interpolate(Real a, Real x, Real b, Real y) + { + if (a < 0.0f) + { + a = 0.0f; + } + if (b < 0.0f) + { + b = 0.0f; + } + return ((a <= b) ? ((b == 0.0f) ? ((x+y) / 2.0f) + : (x + (y-x) * (a/(a+b)))) + : (y + (x-y) * (b/(a+b)))); + } + + static void Swap(ref MeshUtils.Vertex a, ref MeshUtils.Vertex b) + { + var tmp = a; + a = b; + b = tmp; + } + + /// + /// Given edges (o1,d1) and (o2,d2), compute their point of intersection. + /// The computed point is guaranteed to lie in the intersection of the + /// bounding rectangles defined by each edge. + /// + public static void EdgeIntersect(MeshUtils.Vertex o1, MeshUtils.Vertex d1, MeshUtils.Vertex o2, MeshUtils.Vertex d2, MeshUtils.Vertex v) + { + // This is certainly not the most efficient way to find the intersection + // of two line segments, but it is very numerically stable. + // + // Strategy: find the two middle vertices in the VertLeq ordering, + // and interpolate the intersection s-value from these. Then repeat + // using the TransLeq ordering to find the intersection t-value. + + if (!VertLeq(o1, d1)) { Swap(ref o1, ref d1); } + if (!VertLeq(o2, d2)) { Swap(ref o2, ref d2); } + if (!VertLeq(o1, o2)) { Swap(ref o1, ref o2); Swap(ref d1, ref d2); } + + if (!VertLeq(o2, d1)) + { + // Technically, no intersection -- do our best + v._s = (o2._s + d1._s) / 2.0f; + } + else if (VertLeq(d1, d2)) + { + // Interpolate between o2 and d1 + var z1 = EdgeEval(o1, o2, d1); + var z2 = EdgeEval(o2, d1, d2); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._s = Interpolate(z1, o2._s, z2, d1._s); + } + else + { + // Interpolate between o2 and d2 + var z1 = EdgeSign(o1, o2, d1); + var z2 = -EdgeSign(o1, d2, d1); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._s = Interpolate(z1, o2._s, z2, d2._s); + } + + // Now repeat the process for t + + if (!TransLeq(o1, d1)) { Swap(ref o1, ref d1); } + if (!TransLeq(o2, d2)) { Swap(ref o2, ref d2); } + if (!TransLeq(o1, o2)) { Swap(ref o1, ref o2); Swap(ref d1, ref d2); } + + if (!TransLeq(o2, d1)) + { + // Technically, no intersection -- do our best + v._t = (o2._t + d1._t) / 2.0f; + } + else if (TransLeq(d1, d2)) + { + // Interpolate between o2 and d1 + var z1 = TransEval(o1, o2, d1); + var z2 = TransEval(o2, d1, d2); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._t = Interpolate(z1, o2._t, z2, d1._t); + } + else + { + // Interpolate between o2 and d2 + var z1 = TransSign(o1, o2, d1); + var z2 = -TransSign(o1, d2, d1); + if (z1 + z2 < 0.0f) + { + z1 = -z1; + z2 = -z2; + } + v._t = Interpolate(z1, o2._t, z2, d2._t); + } + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Geom.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Geom.cs.meta new file mode 100644 index 00000000..d6a4887b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Geom.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0414da14dce5a6c4382f13dd89869f01 +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LTMesh.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LTMesh.cs new file mode 100644 index 00000000..04397560 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LTMesh.cs @@ -0,0 +1,495 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + internal class LTMesh : MeshUtils.Pooled + { + internal MeshUtils.Vertex _vHead; + internal MeshUtils.Face _fHead; + internal MeshUtils.Edge _eHead, _eHeadSym; + + public LTMesh() + { + var v = _vHead = MeshUtils.Vertex.Create(); + var f = _fHead = MeshUtils.Face.Create(); + + var pair = MeshUtils.EdgePair.Create(); + var e = _eHead = pair._e; + var eSym = _eHeadSym = pair._eSym; + + v._next = v._prev = v; + v._anEdge = null; + + f._next = f._prev = f; + f._anEdge = null; + f._trail = null; + f._marked = false; + f._inside = false; + + e._next = e; + e._Sym = eSym; + e._Onext = null; + e._Lnext = null; + e._Org = null; + e._Lface = null; + e._winding = 0; + e._activeRegion = null; + + eSym._next = eSym; + eSym._Sym = e; + eSym._Onext = null; + eSym._Lnext = null; + eSym._Org = null; + eSym._Lface = null; + eSym._winding = 0; + eSym._activeRegion = null; + } + + public override void Reset() + { + _vHead = null; + _fHead = null; + _eHead = _eHeadSym = null; + } + + public override void OnFree() + { + for (MeshUtils.Face f = _fHead._next, fNext = _fHead; f != _fHead; f = fNext) + { + fNext = f._next; + f.Free(); + } + for (MeshUtils.Vertex v = _vHead._next, vNext = _vHead; v != _vHead; v = vNext) + { + vNext = v._next; + v.Free(); + } + for (MeshUtils.Edge e = _eHead._next, eNext = _eHead; e != _eHead; e = eNext) + { + eNext = e._next; + e.Free(); + } + } + + /// + /// Creates one edge, two vertices and a loop (face). + /// The loop consists of the two new half-edges. + /// + public MeshUtils.Edge MakeEdge() + { + var e = MeshUtils.MakeEdge(_eHead); + + MeshUtils.MakeVertex(e, _vHead); + MeshUtils.MakeVertex(e._Sym, _vHead); + MeshUtils.MakeFace(e, _fHead); + + return e; + } + + /// + /// Splice is the basic operation for changing the + /// mesh connectivity and topology. It changes the mesh so that + /// eOrg->Onext = OLD( eDst->Onext ) + /// eDst->Onext = OLD( eOrg->Onext ) + /// where OLD(...) means the value before the meshSplice operation. + /// + /// This can have two effects on the vertex structure: + /// - if eOrg->Org != eDst->Org, the two vertices are merged together + /// - if eOrg->Org == eDst->Org, the origin is split into two vertices + /// In both cases, eDst->Org is changed and eOrg->Org is untouched. + /// + /// Similarly (and independently) for the face structure, + /// - if eOrg->Lface == eDst->Lface, one loop is split into two + /// - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one + /// In both cases, eDst->Lface is changed and eOrg->Lface is unaffected. + /// + /// Some special cases: + /// If eDst == eOrg, the operation has no effect. + /// If eDst == eOrg->Lnext, the new face will have a single edge. + /// If eDst == eOrg->Lprev, the old face will have a single edge. + /// If eDst == eOrg->Onext, the new vertex will have a single edge. + /// If eDst == eOrg->Oprev, the old vertex will have a single edge. + /// + public void Splice(MeshUtils.Edge eOrg, MeshUtils.Edge eDst) + { + if (eOrg == eDst) + { + return; + } + + bool joiningVertices = false; + if (eDst._Org != eOrg._Org) + { + // We are merging two disjoint vertices -- destroy eDst->Org + joiningVertices = true; + MeshUtils.KillVertex(eDst._Org, eOrg._Org); + } + bool joiningLoops = false; + if (eDst._Lface != eOrg._Lface) + { + // We are connecting two disjoint loops -- destroy eDst->Lface + joiningLoops = true; + MeshUtils.KillFace(eDst._Lface, eOrg._Lface); + } + + // Change the edge structure + MeshUtils.Splice(eDst, eOrg); + + if (!joiningVertices) + { + // We split one vertex into two -- the new vertex is eDst->Org. + // Make sure the old vertex points to a valid half-edge. + MeshUtils.MakeVertex(eDst, eOrg._Org); + eOrg._Org._anEdge = eOrg; + } + if (!joiningLoops) + { + // We split one loop into two -- the new loop is eDst->Lface. + // Make sure the old face points to a valid half-edge. + MeshUtils.MakeFace(eDst, eOrg._Lface); + eOrg._Lface._anEdge = eOrg; + } + } + + /// + /// Removes the edge eDel. There are several cases: + /// if (eDel->Lface != eDel->Rface), we join two loops into one; the loop + /// eDel->Lface is deleted. Otherwise, we are splitting one loop into two; + /// the newly created loop will contain eDel->Dst. If the deletion of eDel + /// would create isolated vertices, those are deleted as well. + /// + public void Delete(MeshUtils.Edge eDel) + { + var eDelSym = eDel._Sym; + + // First step: disconnect the origin vertex eDel->Org. We make all + // changes to get a consistent mesh in this "intermediate" state. + + bool joiningLoops = false; + if (eDel._Lface != eDel._Rface) + { + // We are joining two loops into one -- remove the left face + joiningLoops = true; + MeshUtils.KillFace(eDel._Lface, eDel._Rface); + } + + if (eDel._Onext == eDel) + { + MeshUtils.KillVertex(eDel._Org, null); + } + else + { + // Make sure that eDel->Org and eDel->Rface point to valid half-edges + eDel._Rface._anEdge = eDel._Oprev; + eDel._Org._anEdge = eDel._Onext; + + MeshUtils.Splice(eDel, eDel._Oprev); + + if (!joiningLoops) + { + // We are splitting one loop into two -- create a new loop for eDel. + MeshUtils.MakeFace(eDel, eDel._Lface); + } + } + + // Claim: the mesh is now in a consistent state, except that eDel->Org + // may have been deleted. Now we disconnect eDel->Dst. + + if (eDelSym._Onext == eDelSym) + { + MeshUtils.KillVertex(eDelSym._Org, null); + MeshUtils.KillFace(eDelSym._Lface, null); + } + else + { + // Make sure that eDel->Dst and eDel->Lface point to valid half-edges + eDel._Lface._anEdge = eDelSym._Oprev; + eDelSym._Org._anEdge = eDelSym._Onext; + MeshUtils.Splice(eDelSym, eDelSym._Oprev); + } + + // Any isolated vertices or faces have already been freed. + MeshUtils.KillEdge(eDel); + } + + /// + /// Creates a new edge such that eNew == eOrg.Lnext and eNew.Dst is a newly created vertex. + /// eOrg and eNew will have the same left face. + /// + public MeshUtils.Edge AddEdgeVertex(MeshUtils.Edge eOrg) + { + var eNew = MeshUtils.MakeEdge(eOrg); + var eNewSym = eNew._Sym; + + // Connect the new edge appropriately + MeshUtils.Splice(eNew, eOrg._Lnext); + + // Set vertex and face information + eNew._Org = eOrg._Dst; + MeshUtils.MakeVertex(eNewSym, eNew._Org); + eNew._Lface = eNewSym._Lface = eOrg._Lface; + + return eNew; + } + + /// + /// Splits eOrg into two edges eOrg and eNew such that eNew == eOrg.Lnext. + /// The new vertex is eOrg.Dst == eNew.Org. + /// eOrg and eNew will have the same left face. + /// + public MeshUtils.Edge SplitEdge(MeshUtils.Edge eOrg) + { + var eTmp = AddEdgeVertex(eOrg); + var eNew = eTmp._Sym; + + // Disconnect eOrg from eOrg->Dst and connect it to eNew->Org + MeshUtils.Splice(eOrg._Sym, eOrg._Sym._Oprev); + MeshUtils.Splice(eOrg._Sym, eNew); + + // Set the vertex and face information + eOrg._Dst = eNew._Org; + eNew._Dst._anEdge = eNew._Sym; // may have pointed to eOrg->Sym + eNew._Rface = eOrg._Rface; + eNew._winding = eOrg._winding; // copy old winding information + eNew._Sym._winding = eOrg._Sym._winding; + + return eNew; + } + + /// + /// Creates a new edge from eOrg->Dst to eDst->Org, and returns the corresponding half-edge eNew. + /// If eOrg->Lface == eDst->Lface, this splits one loop into two, + /// and the newly created loop is eNew->Lface. Otherwise, two disjoint + /// loops are merged into one, and the loop eDst->Lface is destroyed. + /// + /// If (eOrg == eDst), the new face will have only two edges. + /// If (eOrg->Lnext == eDst), the old face is reduced to a single edge. + /// If (eOrg->Lnext->Lnext == eDst), the old face is reduced to two edges. + /// + public MeshUtils.Edge Connect(MeshUtils.Edge eOrg, MeshUtils.Edge eDst) + { + var eNew = MeshUtils.MakeEdge(eOrg); + var eNewSym = eNew._Sym; + + bool joiningLoops = false; + if (eDst._Lface != eOrg._Lface) + { + // We are connecting two disjoint loops -- destroy eDst->Lface + joiningLoops = true; + MeshUtils.KillFace(eDst._Lface, eOrg._Lface); + } + + // Connect the new edge appropriately + MeshUtils.Splice(eNew, eOrg._Lnext); + MeshUtils.Splice(eNewSym, eDst); + + // Set the vertex and face information + eNew._Org = eOrg._Dst; + eNewSym._Org = eDst._Org; + eNew._Lface = eNewSym._Lface = eOrg._Lface; + + // Make sure the old face points to a valid half-edge + eOrg._Lface._anEdge = eNewSym; + + if (!joiningLoops) + { + MeshUtils.MakeFace(eNew, eOrg._Lface); + } + + return eNew; + } + + /// + /// Destroys a face and removes it from the global face list. All edges of + /// fZap will have a NULL pointer as their left face. Any edges which + /// also have a NULL pointer as their right face are deleted entirely + /// (along with any isolated vertices this produces). + /// An entire mesh can be deleted by zapping its faces, one at a time, + /// in any order. Zapped faces cannot be used in further mesh operations! + /// + public void ZapFace(MeshUtils.Face fZap) + { + var eStart = fZap._anEdge; + + // walk around face, deleting edges whose right face is also NULL + var eNext = eStart._Lnext; + MeshUtils.Edge e, eSym; + do { + e = eNext; + eNext = e._Lnext; + + e._Lface = null; + if (e._Rface == null) + { + // delete the edge -- see TESSmeshDelete above + + if (e._Onext == e) + { + MeshUtils.KillVertex(e._Org, null); + } + else + { + // Make sure that e._Org points to a valid half-edge + e._Org._anEdge = e._Onext; + MeshUtils.Splice(e, e._Oprev); + } + eSym = e._Sym; + if (eSym._Onext == eSym) + { + MeshUtils.KillVertex(eSym._Org, null); + } + else + { + // Make sure that eSym._Org points to a valid half-edge + eSym._Org._anEdge = eSym._Onext; + MeshUtils.Splice(eSym, eSym._Oprev); + } + MeshUtils.KillEdge(e); + } + } while (e != eStart); + + /* delete from circular doubly-linked list */ + var fPrev = fZap._prev; + var fNext = fZap._next; + fNext._prev = fPrev; + fPrev._next = fNext; + + fZap.Free(); + } + + public void MergeConvexFaces(int maxVertsPerFace) + { + for (var f = _fHead._next; f != _fHead; f = f._next) + { + // Skip faces which are outside the result + if (!f._inside) + { + continue; + } + + var eCur = f._anEdge; + var vStart = eCur._Org; + + while (true) + { + var eNext = eCur._Lnext; + var eSym = eCur._Sym; + + if (eSym != null && eSym._Lface != null && eSym._Lface._inside) + { + // Try to merge the neighbour faces if the resulting polygons + // does not exceed maximum number of vertices. + int curNv = f.VertsCount; + int symNv = eSym._Lface.VertsCount; + if ((curNv + symNv - 2) <= maxVertsPerFace) + { + // Merge if the resulting poly is convex. + if (Geom.VertCCW(eCur._Lprev._Org, eCur._Org, eSym._Lnext._Lnext._Org) && + Geom.VertCCW(eSym._Lprev._Org, eSym._Org, eCur._Lnext._Lnext._Org)) + { + eNext = eSym._Lnext; + Delete(eSym); + eCur = null; + } + } + } + + if (eCur != null && eCur._Lnext._Org == vStart) + break; + + // Continue to next edge. + eCur = eNext; + } + } + } + + [Conditional("DEBUG")] + public void Check() + { + MeshUtils.Edge e; + + MeshUtils.Face fPrev = _fHead, f; + for (fPrev = _fHead; (f = fPrev._next) != _fHead; fPrev = f) + { + e = f._anEdge; + do { + Debug.Assert(e._Sym != e); + Debug.Assert(e._Sym._Sym == e); + Debug.Assert(e._Lnext._Onext._Sym == e); + Debug.Assert(e._Onext._Sym._Lnext == e); + Debug.Assert(e._Lface == f); + e = e._Lnext; + } while (e != f._anEdge); + } + Debug.Assert(f._prev == fPrev && f._anEdge == null); + + MeshUtils.Vertex vPrev = _vHead, v; + for (vPrev = _vHead; (v = vPrev._next) != _vHead; vPrev = v) + { + Debug.Assert(v._prev == vPrev); + e = v._anEdge; + do + { + Debug.Assert(e._Sym != e); + Debug.Assert(e._Sym._Sym == e); + Debug.Assert(e._Lnext._Onext._Sym == e); + Debug.Assert(e._Onext._Sym._Lnext == e); + Debug.Assert(e._Org == v); + e = e._Onext; + } while (e != v._anEdge); + } + Debug.Assert(v._prev == vPrev && v._anEdge == null); + + MeshUtils.Edge ePrev = _eHead; + for (ePrev = _eHead; (e = ePrev._next) != _eHead; ePrev = e) + { + Debug.Assert(e._Sym._next == ePrev._Sym); + Debug.Assert(e._Sym != e); + Debug.Assert(e._Sym._Sym == e); + Debug.Assert(e._Org != null); + Debug.Assert(e._Dst != null); + Debug.Assert(e._Lnext._Onext._Sym == e); + Debug.Assert(e._Onext._Sym._Lnext == e); + } + Debug.Assert(e._Sym._next == ePrev._Sym + && e._Sym == _eHeadSym + && e._Sym._Sym == e + && e._Org == null && e._Dst == null + && e._Lface == null && e._Rface == null); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LTMesh.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LTMesh.cs.meta new file mode 100644 index 00000000..91ea52d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LTMesh.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71c6f8ed26841f945bf72bd9a722a62c +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LibTessDotNetLicense.txt b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LibTessDotNetLicense.txt new file mode 100644 index 00000000..1616c76a --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LibTessDotNetLicense.txt @@ -0,0 +1,36 @@ +==== LibTessDotNet ==== +SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +Copyright 2000, Silicon Graphics, Inc. All Rights Reserved. +Copyright 2012, Google Inc. All Rights Reserved. + +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 including the dates of first publication and +either this permission notice or a reference to http://oss.sgi.com/projects/FreeB/ +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 +SILICON GRAPHICS, INC. 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. + +Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from Silicon Graphics, Inc. + +Original Code. The Original Code is: OpenGL Sample Implementation, +Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +Copyright in any portions created by third parties is as indicated +elsewhere herein. All Rights Reserved. + +Original Author: Eric Veach, July 1994. +libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LibTessDotNetLicense.txt.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LibTessDotNetLicense.txt.meta new file mode 100644 index 00000000..4f0b9304 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/LibTessDotNetLicense.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5adfeb5b25c486542af34d2069a2f4fe +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/MeshUtils.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/MeshUtils.cs new file mode 100644 index 00000000..bfe47fbb --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/MeshUtils.cs @@ -0,0 +1,475 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +#if ENABLE_IL2CPP == false +using System.Linq.Expressions; +#endif +using Real = System.Single; +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + public struct Vec3 + { + public readonly static Vec3 Zero = new Vec3(); + + public Real X, Y, Z; + + public Real this[int index] + { + get + { + if (index == 0) return X; + if (index == 1) return Y; + if (index == 2) return Z; + throw new IndexOutOfRangeException(); + } + set + { + if (index == 0) X = value; + else if (index == 1) Y = value; + else if (index == 2) Z = value; + else throw new IndexOutOfRangeException(); + } + } + + public static void Sub(ref Vec3 lhs, ref Vec3 rhs, out Vec3 result) + { + result.X = lhs.X - rhs.X; + result.Y = lhs.Y - rhs.Y; + result.Z = lhs.Z - rhs.Z; + } + + public static void Neg(ref Vec3 v) + { + v.X = -v.X; + v.Y = -v.Y; + v.Z = -v.Z; + } + + public static void Dot(ref Vec3 u, ref Vec3 v, out Real dot) + { + dot = u.X * v.X + u.Y * v.Y + u.Z * v.Z; + } + + public static void Normalize(ref Vec3 v) + { + var len = v.X * v.X + v.Y * v.Y + v.Z * v.Z; + Debug.Assert(len >= 0.0f); + len = 1.0f / (Real)Math.Sqrt(len); + v.X *= len; + v.Y *= len; + v.Z *= len; + } + + public static int LongAxis(ref Vec3 v) + { + int i = 0; + if (Math.Abs(v.Y) > Math.Abs(v.X)) i = 1; + if (Math.Abs(v.Z) > Math.Abs(i == 0 ? v.X : v.Y)) i = 2; + return i; + } + + public override string ToString() + { + return string.Format("{0}, {1}, {2}", X, Y, Z); + } + } + + internal static class MeshUtils + { + public const int Undef = ~0; + + public abstract class Pooled where T : Pooled, new() + { + private static Stack _stack; + + public abstract void Reset(); + public virtual void OnFree() {} + +#if ENABLE_IL2CPP == false + private static readonly Func OptimizedInstantiator = Expression.Lambda>( + Expression.New(typeof(T)) + ).Compile(); +#endif + + public static T Create() + { + if (_stack != null && _stack.Count > 0) + { + return _stack.Pop(); + } + return +#if ENABLE_IL2CPP == false + OptimizedInstantiator.Invoke() +#else + new T() +#endif + ; + } + + public void Free() + { + OnFree(); + Reset(); + if (_stack == null) + { + _stack = new Stack(); + } + _stack.Push((T)this); + } + } + + public class Vertex : Pooled + { + internal Vertex _prev, _next; + internal Edge _anEdge; + + internal Vec3 _coords; + internal Real _s, _t; + internal PQHandle _pqHandle; + internal int _n; + internal object _data; + + public override void Reset() + { + _prev = _next = null; + _anEdge = null; + _coords = Vec3.Zero; + _s = 0; + _t = 0; + _pqHandle = new PQHandle(); + _n = 0; + _data = null; + } + } + + public class Face : Pooled + { + internal Face _prev, _next; + internal Edge _anEdge; + + internal Face _trail; + internal int _n; + internal bool _marked, _inside; + + internal int VertsCount + { + get + { + int n = 0; + var eCur = _anEdge; + do { + n++; + eCur = eCur._Lnext; + } while (eCur != _anEdge); + return n; + } + } + + public override void Reset() + { + _prev = _next = null; + _anEdge = null; + _trail = null; + _n = 0; + _marked = false; + _inside = false; + } + } + + public struct EdgePair + { + internal Edge _e, _eSym; + + public static EdgePair Create() + { + var pair = new MeshUtils.EdgePair(); + pair._e = MeshUtils.Edge.Create(); + pair._e._pair = pair; + pair._eSym = MeshUtils.Edge.Create(); + pair._eSym._pair = pair; + return pair; + } + + public void Reset() + { + _e = _eSym = null; + } + } + + public class Edge : Pooled + { + internal EdgePair _pair; + internal Edge _next, _Sym, _Onext, _Lnext; + internal Vertex _Org; + internal Face _Lface; + internal Tess.ActiveRegion _activeRegion; + internal int _winding; + + internal Face _Rface { get { return _Sym._Lface; } set { _Sym._Lface = value; } } + internal Vertex _Dst { get { return _Sym._Org; } set { _Sym._Org = value; } } + + internal Edge _Oprev { get { return _Sym._Lnext; } set { _Sym._Lnext = value; } } + internal Edge _Lprev { get { return _Onext._Sym; } set { _Onext._Sym = value; } } + internal Edge _Dprev { get { return _Lnext._Sym; } set { _Lnext._Sym = value; } } + internal Edge _Rprev { get { return _Sym._Onext; } set { _Sym._Onext = value; } } + internal Edge _Dnext { get { return _Rprev._Sym; } set { _Rprev._Sym = value; } } + internal Edge _Rnext { get { return _Oprev._Sym; } set { _Oprev._Sym = value; } } + + internal static void EnsureFirst(ref Edge e) + { + if (e == e._pair._eSym) + { + e = e._Sym; + } + } + + public override void Reset() + { + _pair.Reset(); + _next = _Sym = _Onext = _Lnext = null; + _Org = null; + _Lface = null; + _activeRegion = null; + _winding = 0; + } + } + + /// + /// MakeEdge creates a new pair of half-edges which form their own loop. + /// No vertex or face structures are allocated, but these must be assigned + /// before the current edge operation is completed. + /// + public static Edge MakeEdge(Edge eNext) + { + Debug.Assert(eNext != null); + + var pair = EdgePair.Create(); + var e = pair._e; + var eSym = pair._eSym; + + // Make sure eNext points to the first edge of the edge pair + Edge.EnsureFirst(ref eNext); + + // Insert in circular doubly-linked list before eNext. + // Note that the prev pointer is stored in Sym->next. + var ePrev = eNext._Sym._next; + eSym._next = ePrev; + ePrev._Sym._next = e; + e._next = eNext; + eNext._Sym._next = eSym; + + e._Sym = eSym; + e._Onext = e; + e._Lnext = eSym; + e._Org = null; + e._Lface = null; + e._winding = 0; + e._activeRegion = null; + + eSym._Sym = e; + eSym._Onext = eSym; + eSym._Lnext = e; + eSym._Org = null; + eSym._Lface = null; + eSym._winding = 0; + eSym._activeRegion = null; + + return e; + } + + /// + /// Splice( a, b ) is best described by the Guibas/Stolfi paper or the + /// CS348a notes (see Mesh.cs). Basically it modifies the mesh so that + /// a->Onext and b->Onext are exchanged. This can have various effects + /// depending on whether a and b belong to different face or vertex rings. + /// For more explanation see Mesh.Splice(). + /// + public static void Splice(Edge a, Edge b) + { + var aOnext = a._Onext; + var bOnext = b._Onext; + + aOnext._Sym._Lnext = b; + bOnext._Sym._Lnext = a; + a._Onext = bOnext; + b._Onext = aOnext; + } + + /// + /// MakeVertex( eOrig, vNext ) attaches a new vertex and makes it the + /// origin of all edges in the vertex loop to which eOrig belongs. "vNext" gives + /// a place to insert the new vertex in the global vertex list. We insert + /// the new vertex *before* vNext so that algorithms which walk the vertex + /// list will not see the newly created vertices. + /// + public static void MakeVertex(Edge eOrig, Vertex vNext) + { + var vNew = MeshUtils.Vertex.Create(); + + // insert in circular doubly-linked list before vNext + var vPrev = vNext._prev; + vNew._prev = vPrev; + vPrev._next = vNew; + vNew._next = vNext; + vNext._prev = vNew; + + vNew._anEdge = eOrig; + // leave coords, s, t undefined + + // fix other edges on this vertex loop + var e = eOrig; + do { + e._Org = vNew; + e = e._Onext; + } while (e != eOrig); + } + + /// + /// MakeFace( eOrig, fNext ) attaches a new face and makes it the left + /// face of all edges in the face loop to which eOrig belongs. "fNext" gives + /// a place to insert the new face in the global face list. We insert + /// the new face *before* fNext so that algorithms which walk the face + /// list will not see the newly created faces. + /// + public static void MakeFace(Edge eOrig, Face fNext) + { + var fNew = MeshUtils.Face.Create(); + + // insert in circular doubly-linked list before fNext + var fPrev = fNext._prev; + fNew._prev = fPrev; + fPrev._next = fNew; + fNew._next = fNext; + fNext._prev = fNew; + + fNew._anEdge = eOrig; + fNew._trail = null; + fNew._marked = false; + + // The new face is marked "inside" if the old one was. This is a + // convenience for the common case where a face has been split in two. + fNew._inside = fNext._inside; + + // fix other edges on this face loop + var e = eOrig; + do { + e._Lface = fNew; + e = e._Lnext; + } while (e != eOrig); + } + + /// + /// KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym), + /// and removes from the global edge list. + /// + public static void KillEdge(Edge eDel) + { + // Half-edges are allocated in pairs, see EdgePair above + Edge.EnsureFirst(ref eDel); + + // delete from circular doubly-linked list + var eNext = eDel._next; + var ePrev = eDel._Sym._next; + eNext._Sym._next = ePrev; + ePrev._Sym._next = eNext; + + eDel.Free(); + } + + /// + /// KillVertex( vDel ) destroys a vertex and removes it from the global + /// vertex list. It updates the vertex loop to point to a given new vertex. + /// + public static void KillVertex(Vertex vDel, Vertex newOrg) + { + var eStart = vDel._anEdge; + + // change the origin of all affected edges + var e = eStart; + do { + e._Org = newOrg; + e = e._Onext; + } while (e != eStart); + + // delete from circular doubly-linked list + var vPrev = vDel._prev; + var vNext = vDel._next; + vNext._prev = vPrev; + vPrev._next = vNext; + + vDel.Free(); + } + + /// + /// KillFace( fDel ) destroys a face and removes it from the global face + /// list. It updates the face loop to point to a given new face. + /// + public static void KillFace(Face fDel, Face newLFace) + { + var eStart = fDel._anEdge; + + // change the left face of all affected edges + var e = eStart; + do { + e._Lface = newLFace; + e = e._Lnext; + } while (e != eStart); + + // delete from circular doubly-linked list + var fPrev = fDel._prev; + var fNext = fDel._next; + fNext._prev = fPrev; + fPrev._next = fNext; + + fDel.Free(); + } + + /// + /// Return signed area of face. + /// + public static Real FaceArea(Face f) + { + Real area = 0; + var e = f._anEdge; + do + { + area += (e._Org._s - e._Dst._s) * (e._Org._t + e._Dst._t); + e = e._Lnext; + } while (e != f._anEdge); + return area; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/MeshUtils.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/MeshUtils.cs.meta new file mode 100644 index 00000000..dc1c680b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/MeshUtils.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1906f51f269f2e8408b7aa54e1c8f10e +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityHeap.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityHeap.cs new file mode 100644 index 00000000..0b9b7e3c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityHeap.cs @@ -0,0 +1,241 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + internal struct PQHandle + { + public static readonly int Invalid = 0x0fffffff; + internal int _handle; + } + + internal class PriorityHeap where TValue : class + { + public delegate bool LessOrEqual(TValue lhs, TValue rhs); + + protected class HandleElem + { + internal TValue _key; + internal int _node; + } + + private LessOrEqual _leq; + private int[] _nodes; + private HandleElem[] _handles; + private int _size, _max; + private int _freeList; + private bool _initialized; + + public bool Empty { get { return _size == 0; } } + + public PriorityHeap(int initialSize, LessOrEqual leq) + { + _leq = leq; + + _nodes = new int[initialSize + 1]; + _handles = new HandleElem[initialSize + 1]; + + _size = 0; + _max = initialSize; + _freeList = 0; + _initialized = false; + + _nodes[1] = 1; + _handles[1] = new HandleElem { _key = null }; + } + + private void FloatDown(int curr) + { + int child; + int hCurr, hChild; + + hCurr = _nodes[curr]; + while (true) + { + child = curr << 1; + if (child < _size && _leq(_handles[_nodes[child + 1]]._key, _handles[_nodes[child]]._key)) + { + ++child; + } + + Debug.Assert(child <= _max); + + hChild = _nodes[child]; + if (child > _size || _leq(_handles[hCurr]._key, _handles[hChild]._key)) + { + _nodes[curr] = hCurr; + _handles[hCurr]._node = curr; + break; + } + + _nodes[curr] = hChild; + _handles[hChild]._node = curr; + curr = child; + } + } + + private void FloatUp(int curr) + { + int parent; + int hCurr, hParent; + + hCurr = _nodes[curr]; + while (true) + { + parent = curr >> 1; + hParent = _nodes[parent]; + if (parent == 0 || _leq(_handles[hParent]._key, _handles[hCurr]._key)) + { + _nodes[curr] = hCurr; + _handles[hCurr]._node = curr; + break; + } + _nodes[curr] = hParent; + _handles[hParent]._node = curr; + curr = parent; + } + } + + public void Init() + { + for (int i = _size; i >= 1; --i) + { + FloatDown(i); + } + _initialized = true; + } + + public PQHandle Insert(TValue value) + { + int curr = ++_size; + if ((curr * 2) > _max) + { + _max <<= 1; + Array.Resize(ref _nodes, _max + 1); + Array.Resize(ref _handles, _max + 1); + } + + int free; + if (_freeList == 0) + { + free = curr; + } + else + { + free = _freeList; + _freeList = _handles[free]._node; + } + + _nodes[curr] = free; + if (_handles[free] == null) + { + _handles[free] = new HandleElem { _key = value, _node = curr }; + } + else + { + _handles[free]._node = curr; + _handles[free]._key = value; + } + + if (_initialized) + { + FloatUp(curr); + } + + Debug.Assert(free != PQHandle.Invalid); + return new PQHandle { _handle = free }; + } + + public TValue ExtractMin() + { + Debug.Assert(_initialized); + + int hMin = _nodes[1]; + TValue min = _handles[hMin]._key; + + if (_size > 0) + { + _nodes[1] = _nodes[_size]; + _handles[_nodes[1]]._node = 1; + + _handles[hMin]._key = null; + _handles[hMin]._node = _freeList; + _freeList = hMin; + + if (--_size > 0) + { + FloatDown(1); + } + } + + return min; + } + + public TValue Minimum() + { + Debug.Assert(_initialized); + return _handles[_nodes[1]]._key; + } + + public void Remove(PQHandle handle) + { + Debug.Assert(_initialized); + + int hCurr = handle._handle; + Debug.Assert(hCurr >= 1 && hCurr <= _max && _handles[hCurr]._key != null); + + int curr = _handles[hCurr]._node; + _nodes[curr] = _nodes[_size]; + _handles[_nodes[curr]]._node = curr; + + if (curr <= --_size) + { + if (curr <= 1 || _leq(_handles[_nodes[curr >> 1]]._key, _handles[_nodes[curr]]._key)) + { + FloatDown(curr); + } + else + { + FloatUp(curr); + } + } + + _handles[hCurr]._key = null; + _handles[hCurr]._node = _freeList; + _freeList = hCurr; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityHeap.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityHeap.cs.meta new file mode 100644 index 00000000..222309a2 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityHeap.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e673e736d2b91564b83bbdcb63f296b7 +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityQueue.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityQueue.cs new file mode 100644 index 00000000..586633f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityQueue.cs @@ -0,0 +1,226 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + internal class PriorityQueue where TValue : class + { + private PriorityHeap.LessOrEqual _leq; + private PriorityHeap _heap; + private TValue[] _keys; + private int[] _order; + + private int _size, _max; + private bool _initialized; + + public bool Empty { get { return _size == 0 && _heap.Empty; } } + + public PriorityQueue(int initialSize, PriorityHeap.LessOrEqual leq) + { + _leq = leq; + _heap = new PriorityHeap(initialSize, leq); + + _keys = new TValue[initialSize]; + + _size = 0; + _max = initialSize; + _initialized = false; + } + + class StackItem + { + internal int p, r; + }; + + static void Swap(ref int a, ref int b) + { + int tmp = a; + a = b; + b = tmp; + } + + public void Init() + { + var stack = new Stack(); + int p, r, i, j, piv; + uint seed = 2016473283; + + p = 0; + r = _size - 1; + _order = new int[_size + 1]; + for (piv = 0, i = p; i <= r; ++piv, ++i) + { + _order[i] = piv; + } + + stack.Push(new StackItem { p = p, r = r }); + while (stack.Count > 0) + { + var top = stack.Pop(); + p = top.p; + r = top.r; + + while (r > p + 10) + { + seed = seed * 1539415821 + 1; + i = p + (int)(seed % (r - p + 1)); + piv = _order[i]; + _order[i] = _order[p]; + _order[p] = piv; + i = p - 1; + j = r + 1; + do { + do { ++i; } while (!_leq(_keys[_order[i]], _keys[piv])); + do { --j; } while (!_leq(_keys[piv], _keys[_order[j]])); + Swap(ref _order[i], ref _order[j]); + } while (i < j); + Swap(ref _order[i], ref _order[j]); + if (i - p < r - j) + { + stack.Push(new StackItem { p = j + 1, r = r }); + r = i - 1; + } + else + { + stack.Push(new StackItem { p = p, r = i - 1 }); + p = j + 1; + } + } + for (i = p + 1; i <= r; ++i) + { + piv = _order[i]; + for (j = i; j > p && !_leq(_keys[piv], _keys[_order[j - 1]]); --j) + { + _order[j] = _order[j - 1]; + } + _order[j] = piv; + } + } + +#if DEBUG + p = 0; + r = _size - 1; + for (i = p; i < r; ++i) + { + Debug.Assert(_leq(_keys[_order[i + 1]], _keys[_order[i]]), "Wrong sort"); + } +#endif + + _max = _size; + _initialized = true; + _heap.Init(); + } + + public PQHandle Insert(TValue value) + { + if (_initialized) + { + return _heap.Insert(value); + } + + int curr = _size; + if (++_size >= _max) + { + _max <<= 1; + Array.Resize(ref _keys, _max); + } + + _keys[curr] = value; + return new PQHandle { _handle = -(curr + 1) }; + } + + public TValue ExtractMin() + { + Debug.Assert(_initialized); + + if (_size == 0) + { + return _heap.ExtractMin(); + } + TValue sortMin = _keys[_order[_size - 1]]; + if (!_heap.Empty) + { + TValue heapMin = _heap.Minimum(); + if (_leq(heapMin, sortMin)) + return _heap.ExtractMin(); + } + do { + --_size; + } while (_size > 0 && _keys[_order[_size - 1]] == null); + + return sortMin; + } + + public TValue Minimum() + { + Debug.Assert(_initialized); + + if (_size == 0) + { + return _heap.Minimum(); + } + TValue sortMin = _keys[_order[_size - 1]]; + if (!_heap.Empty) + { + TValue heapMin = _heap.Minimum(); + if (_leq(heapMin, sortMin)) + return heapMin; + } + return sortMin; + } + + public void Remove(PQHandle handle) + { + Debug.Assert(_initialized); + + int curr = handle._handle; + if (curr >= 0) + { + _heap.Remove(handle); + return; + } + curr = -(curr + 1); + Debug.Assert(curr < _max && _keys[curr] != null); + + _keys[curr] = null; + while (_size > 0 && _keys[_order[_size - 1]] == null) + { + --_size; + } + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityQueue.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityQueue.cs.meta new file mode 100644 index 00000000..c1182f54 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/PriorityQueue.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 82a1a0638ccce9f42acb7e3e0c3134ba +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Sweep.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Sweep.cs new file mode 100644 index 00000000..931210d5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Sweep.cs @@ -0,0 +1,1233 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Diagnostics; + +using Real = System.Single; +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + public partial class Tess + { + internal class ActiveRegion + { + internal MeshUtils.Edge _eUp; + internal Dict.Node _nodeUp; + internal int _windingNumber; + internal bool _inside, _sentinel, _dirty, _fixUpperEdge; + } + + private ActiveRegion RegionBelow(ActiveRegion reg) + { + return reg._nodeUp._prev._key; + } + + private ActiveRegion RegionAbove(ActiveRegion reg) + { + return reg._nodeUp._next._key; + } + + /// + /// Both edges must be directed from right to left (this is the canonical + /// direction for the upper edge of each region). + /// + /// The strategy is to evaluate a "t" value for each edge at the + /// current sweep line position, given by tess->event. The calculations + /// are designed to be very stable, but of course they are not perfect. + /// + /// Special case: if both edge destinations are at the sweep event, + /// we sort the edges by slope (they would otherwise compare equally). + /// + private bool EdgeLeq(ActiveRegion reg1, ActiveRegion reg2) + { + var e1 = reg1._eUp; + var e2 = reg2._eUp; + + if (e1._Dst == _event) + { + if (e2._Dst == _event) + { + // Two edges right of the sweep line which meet at the sweep event. + // Sort them by slope. + if (Geom.VertLeq(e1._Org, e2._Org)) + { + return Geom.EdgeSign(e2._Dst, e1._Org, e2._Org) <= 0.0f; + } + return Geom.EdgeSign(e1._Dst, e2._Org, e1._Org) >= 0.0f; + } + return Geom.EdgeSign(e2._Dst, _event, e2._Org) <= 0.0f; + } + if (e2._Dst == _event) + { + return Geom.EdgeSign(e1._Dst, _event, e1._Org) >= 0.0f; + } + + // General case - compute signed distance *from* e1, e2 to event + var t1 = Geom.EdgeEval(e1._Dst, _event, e1._Org); + var t2 = Geom.EdgeEval(e2._Dst, _event, e2._Org); + return (t1 >= t2); + } + + private void DeleteRegion(ActiveRegion reg) + { + if (reg._fixUpperEdge) + { + // It was created with zero winding number, so it better be + // deleted with zero winding number (ie. it better not get merged + // with a real edge). + Debug.Assert(reg._eUp._winding == 0); + } + reg._eUp._activeRegion = null; + _dict.Remove(reg._nodeUp); + } + + /// + /// Replace an upper edge which needs fixing (see ConnectRightVertex). + /// + private void FixUpperEdge(ActiveRegion reg, MeshUtils.Edge newEdge) + { + Debug.Assert(reg._fixUpperEdge); + _mesh.Delete(reg._eUp); + reg._fixUpperEdge = false; + reg._eUp = newEdge; + newEdge._activeRegion = reg; + } + + private ActiveRegion TopLeftRegion(ActiveRegion reg) + { + var org = reg._eUp._Org; + + // Find the region above the uppermost edge with the same origin + do { + reg = RegionAbove(reg); + } while (reg._eUp._Org == org); + + // If the edge above was a temporary edge introduced by ConnectRightVertex, + // now is the time to fix it. + if (reg._fixUpperEdge) + { + var e = _mesh.Connect(RegionBelow(reg)._eUp._Sym, reg._eUp._Lnext); + FixUpperEdge(reg, e); + reg = RegionAbove(reg); + } + + return reg; + } + + private ActiveRegion TopRightRegion(ActiveRegion reg) + { + var dst = reg._eUp._Dst; + + // Find the region above the uppermost edge with the same destination + do { + reg = RegionAbove(reg); + } while (reg._eUp._Dst == dst); + + return reg; + } + + /// + /// Add a new active region to the sweep line, *somewhere* below "regAbove" + /// (according to where the new edge belongs in the sweep-line dictionary). + /// The upper edge of the new region will be "eNewUp". + /// Winding number and "inside" flag are not updated. + /// + private ActiveRegion AddRegionBelow(ActiveRegion regAbove, MeshUtils.Edge eNewUp) + { + var regNew = new ActiveRegion(); + + regNew._eUp = eNewUp; + regNew._nodeUp = _dict.InsertBefore(regAbove._nodeUp, regNew); + regNew._fixUpperEdge = false; + regNew._sentinel = false; + regNew._dirty = false; + + eNewUp._activeRegion = regNew; + + return regNew; + } + + private void ComputeWinding(ActiveRegion reg) + { + reg._windingNumber = RegionAbove(reg)._windingNumber + reg._eUp._winding; + reg._inside = Geom.IsWindingInside(_windingRule, reg._windingNumber); + } + + /// + /// Delete a region from the sweep line. This happens when the upper + /// and lower chains of a region meet (at a vertex on the sweep line). + /// The "inside" flag is copied to the appropriate mesh face (we could + /// not do this before -- since the structure of the mesh is always + /// changing, this face may not have even existed until now). + /// + private void FinishRegion(ActiveRegion reg) + { + var e = reg._eUp; + var f = e._Lface; + + f._inside = reg._inside; + f._anEdge = e; + DeleteRegion(reg); + } + + /// + /// We are given a vertex with one or more left-going edges. All affected + /// edges should be in the edge dictionary. Starting at regFirst->eUp, + /// we walk down deleting all regions where both edges have the same + /// origin vOrg. At the same time we copy the "inside" flag from the + /// active region to the face, since at this point each face will belong + /// to at most one region (this was not necessarily true until this point + /// in the sweep). The walk stops at the region above regLast; if regLast + /// is null we walk as far as possible. At the same time we relink the + /// mesh if necessary, so that the ordering of edges around vOrg is the + /// same as in the dictionary. + /// + private MeshUtils.Edge FinishLeftRegions(ActiveRegion regFirst, ActiveRegion regLast) + { + var regPrev = regFirst; + var ePrev = regFirst._eUp; + + while (regPrev != regLast) + { + regPrev._fixUpperEdge = false; // placement was OK + var reg = RegionBelow(regPrev); + var e = reg._eUp; + if (e._Org != ePrev._Org) + { + if (!reg._fixUpperEdge) + { + // Remove the last left-going edge. Even though there are no further + // edges in the dictionary with this origin, there may be further + // such edges in the mesh (if we are adding left edges to a vertex + // that has already been processed). Thus it is important to call + // FinishRegion rather than just DeleteRegion. + FinishRegion(regPrev); + break; + } + // If the edge below was a temporary edge introduced by + // ConnectRightVertex, now is the time to fix it. + e = _mesh.Connect(ePrev._Lprev, e._Sym); + FixUpperEdge(reg, e); + } + + // Relink edges so that ePrev.Onext == e + if (ePrev._Onext != e) + { + _mesh.Splice(e._Oprev, e); + _mesh.Splice(ePrev, e); + } + FinishRegion(regPrev); // may change reg.eUp + ePrev = reg._eUp; + regPrev = reg; + } + + return ePrev; + } + + /// + /// Purpose: insert right-going edges into the edge dictionary, and update + /// winding numbers and mesh connectivity appropriately. All right-going + /// edges share a common origin vOrg. Edges are inserted CCW starting at + /// eFirst; the last edge inserted is eLast.Oprev. If vOrg has any + /// left-going edges already processed, then eTopLeft must be the edge + /// such that an imaginary upward vertical segment from vOrg would be + /// contained between eTopLeft.Oprev and eTopLeft; otherwise eTopLeft + /// should be null. + /// + private void AddRightEdges(ActiveRegion regUp, MeshUtils.Edge eFirst, MeshUtils.Edge eLast, MeshUtils.Edge eTopLeft, bool cleanUp) + { + bool firstTime = true; + + var e = eFirst; do + { + Debug.Assert(Geom.VertLeq(e._Org, e._Dst)); + AddRegionBelow(regUp, e._Sym); + e = e._Onext; + } while (e != eLast); + + // Walk *all* right-going edges from e.Org, in the dictionary order, + // updating the winding numbers of each region, and re-linking the mesh + // edges to match the dictionary ordering (if necessary). + if (eTopLeft == null) + { + eTopLeft = RegionBelow(regUp)._eUp._Rprev; + } + + ActiveRegion regPrev = regUp, reg; + var ePrev = eTopLeft; + while (true) + { + reg = RegionBelow(regPrev); + e = reg._eUp._Sym; + if (e._Org != ePrev._Org) break; + + if (e._Onext != ePrev) + { + // Unlink e from its current position, and relink below ePrev + _mesh.Splice(e._Oprev, e); + _mesh.Splice(ePrev._Oprev, e); + } + // Compute the winding number and "inside" flag for the new regions + reg._windingNumber = regPrev._windingNumber - e._winding; + reg._inside = Geom.IsWindingInside(_windingRule, reg._windingNumber); + + // Check for two outgoing edges with same slope -- process these + // before any intersection tests (see example in tessComputeInterior). + regPrev._dirty = true; + if (!firstTime && CheckForRightSplice(regPrev)) + { + Geom.AddWinding(e, ePrev); + DeleteRegion(regPrev); + _mesh.Delete(ePrev); + } + firstTime = false; + regPrev = reg; + ePrev = e; + } + regPrev._dirty = true; + Debug.Assert(regPrev._windingNumber - e._winding == reg._windingNumber); + + if (cleanUp) + { + // Check for intersections between newly adjacent edges. + WalkDirtyRegions(regPrev); + } + } + + /// + /// Two vertices with idential coordinates are combined into one. + /// e1.Org is kept, while e2.Org is discarded. + /// + private void SpliceMergeVertices(MeshUtils.Edge e1, MeshUtils.Edge e2) + { + _mesh.Splice(e1, e2); + } + + /// + /// Find some weights which describe how the intersection vertex is + /// a linear combination of "org" and "dest". Each of the two edges + /// which generated "isect" is allocated 50% of the weight; each edge + /// splits the weight between its org and dst according to the + /// relative distance to "isect". + /// + private void VertexWeights(MeshUtils.Vertex isect, MeshUtils.Vertex org, MeshUtils.Vertex dst, out Real w0, out Real w1) + { + var t1 = Geom.VertL1dist(org, isect); + var t2 = Geom.VertL1dist(dst, isect); + + w0 = (t2 / (t1 + t2)) / 2.0f; + w1 = (t1 / (t1 + t2)) / 2.0f; + + isect._coords.X += w0 * org._coords.X + w1 * dst._coords.X; + isect._coords.Y += w0 * org._coords.Y + w1 * dst._coords.Y; + isect._coords.Z += w0 * org._coords.Z + w1 * dst._coords.Z; + } + + /// + /// We've computed a new intersection point, now we need a "data" pointer + /// from the user so that we can refer to this new vertex in the + /// rendering callbacks. + /// + private void GetIntersectData(MeshUtils.Vertex isect, MeshUtils.Vertex orgUp, MeshUtils.Vertex dstUp, MeshUtils.Vertex orgLo, MeshUtils.Vertex dstLo) + { + isect._coords = Vec3.Zero; + Real w0, w1, w2, w3; + VertexWeights(isect, orgUp, dstUp, out w0, out w1); + VertexWeights(isect, orgLo, dstLo, out w2, out w3); + + if (_combineCallback != null) + { + isect._data = _combineCallback( + isect._coords, + new object[] { orgUp._data, dstUp._data, orgLo._data, dstLo._data }, + new Real[] { w0, w1, w2, w3 } + ); + } + } + + /// + /// Check the upper and lower edge of "regUp", to make sure that the + /// eUp->Org is above eLo, or eLo->Org is below eUp (depending on which + /// origin is leftmost). + /// + /// The main purpose is to splice right-going edges with the same + /// dest vertex and nearly identical slopes (ie. we can't distinguish + /// the slopes numerically). However the splicing can also help us + /// to recover from numerical errors. For example, suppose at one + /// point we checked eUp and eLo, and decided that eUp->Org is barely + /// above eLo. Then later, we split eLo into two edges (eg. from + /// a splice operation like this one). This can change the result of + /// our test so that now eUp->Org is incident to eLo, or barely below it. + /// We must correct this condition to maintain the dictionary invariants. + /// + /// One possibility is to check these edges for intersection again + /// (ie. CheckForIntersect). This is what we do if possible. However + /// CheckForIntersect requires that tess->event lies between eUp and eLo, + /// so that it has something to fall back on when the intersection + /// calculation gives us an unusable answer. So, for those cases where + /// we can't check for intersection, this routine fixes the problem + /// by just splicing the offending vertex into the other edge. + /// This is a guaranteed solution, no matter how degenerate things get. + /// Basically this is a combinatorial solution to a numerical problem. + /// + private bool CheckForRightSplice(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + + if (Geom.VertLeq(eUp._Org, eLo._Org)) + { + if (Geom.EdgeSign(eLo._Dst, eUp._Org, eLo._Org) > 0.0f) + { + return false; + } + + // eUp.Org appears to be below eLo + if (!Geom.VertEq(eUp._Org, eLo._Org)) + { + // Splice eUp._Org into eLo + _mesh.SplitEdge(eLo._Sym); + _mesh.Splice(eUp, eLo._Oprev); + regUp._dirty = regLo._dirty = true; + } + else if (eUp._Org != eLo._Org) + { + // merge the two vertices, discarding eUp.Org + _pq.Remove(eUp._Org._pqHandle); + SpliceMergeVertices(eLo._Oprev, eUp); + } + } + else + { + if (Geom.EdgeSign(eUp._Dst, eLo._Org, eUp._Org) < 0.0f) + { + return false; + } + + // eLo.Org appears to be above eUp, so splice eLo.Org into eUp + RegionAbove(regUp)._dirty = regUp._dirty = true; + _mesh.SplitEdge(eUp._Sym); + _mesh.Splice(eLo._Oprev, eUp); + } + return true; + } + + /// + /// Check the upper and lower edge of "regUp", to make sure that the + /// eUp->Dst is above eLo, or eLo->Dst is below eUp (depending on which + /// destination is rightmost). + /// + /// Theoretically, this should always be true. However, splitting an edge + /// into two pieces can change the results of previous tests. For example, + /// suppose at one point we checked eUp and eLo, and decided that eUp->Dst + /// is barely above eLo. Then later, we split eLo into two edges (eg. from + /// a splice operation like this one). This can change the result of + /// the test so that now eUp->Dst is incident to eLo, or barely below it. + /// We must correct this condition to maintain the dictionary invariants + /// (otherwise new edges might get inserted in the wrong place in the + /// dictionary, and bad stuff will happen). + /// + /// We fix the problem by just splicing the offending vertex into the + /// other edge. + /// + private bool CheckForLeftSplice(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + + Debug.Assert(!Geom.VertEq(eUp._Dst, eLo._Dst)); + + if (Geom.VertLeq(eUp._Dst, eLo._Dst)) + { + if (Geom.EdgeSign(eUp._Dst, eLo._Dst, eUp._Org) < 0.0f) + { + return false; + } + + // eLo.Dst is above eUp, so splice eLo.Dst into eUp + RegionAbove(regUp)._dirty = regUp._dirty = true; + var e = _mesh.SplitEdge(eUp); + _mesh.Splice(eLo._Sym, e); + e._Lface._inside = regUp._inside; + } + else + { + if (Geom.EdgeSign(eLo._Dst, eUp._Dst, eLo._Org) > 0.0f) + { + return false; + } + + // eUp.Dst is below eLo, so splice eUp.Dst into eLo + regUp._dirty = regLo._dirty = true; + var e = _mesh.SplitEdge(eLo); + _mesh.Splice(eUp._Lnext, eLo._Sym); + e._Rface._inside = regUp._inside; + } + return true; + } + + /// + /// Check the upper and lower edges of the given region to see if + /// they intersect. If so, create the intersection and add it + /// to the data structures. + /// + /// Returns TRUE if adding the new intersection resulted in a recursive + /// call to AddRightEdges(); in this case all "dirty" regions have been + /// checked for intersections, and possibly regUp has been deleted. + /// + private bool CheckForIntersect(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + var orgUp = eUp._Org; + var orgLo = eLo._Org; + var dstUp = eUp._Dst; + var dstLo = eLo._Dst; + + Debug.Assert(!Geom.VertEq(dstLo, dstUp)); + Debug.Assert(Geom.EdgeSign(dstUp, _event, orgUp) <= 0.0f); + Debug.Assert(Geom.EdgeSign(dstLo, _event, orgLo) >= 0.0f); + Debug.Assert(orgUp != _event && orgLo != _event); + Debug.Assert(!regUp._fixUpperEdge && !regLo._fixUpperEdge); + + if( orgUp == orgLo ) + { + // right endpoints are the same + return false; + } + + var tMinUp = Math.Min(orgUp._t, dstUp._t); + var tMaxLo = Math.Max(orgLo._t, dstLo._t); + if( tMinUp > tMaxLo ) + { + // t ranges do not overlap + return false; + } + + if (Geom.VertLeq(orgUp, orgLo)) + { + if (Geom.EdgeSign( dstLo, orgUp, orgLo ) > 0.0f) + { + return false; + } + } + else + { + if (Geom.EdgeSign( dstUp, orgLo, orgUp ) < 0.0f) + { + return false; + } + } + + // At this point the edges intersect, at least marginally + + var isect = MeshUtils.Vertex.Create(); + Geom.EdgeIntersect(dstUp, orgUp, dstLo, orgLo, isect); + // The following properties are guaranteed: + Debug.Assert(Math.Min(orgUp._t, dstUp._t) <= isect._t); + Debug.Assert(isect._t <= Math.Max(orgLo._t, dstLo._t)); + Debug.Assert(Math.Min(dstLo._s, dstUp._s) <= isect._s); + Debug.Assert(isect._s <= Math.Max(orgLo._s, orgUp._s)); + + if (Geom.VertLeq(isect, _event)) + { + // The intersection point lies slightly to the left of the sweep line, + // so move it until it''s slightly to the right of the sweep line. + // (If we had perfect numerical precision, this would never happen + // in the first place). The easiest and safest thing to do is + // replace the intersection by tess._event. + isect._s = _event._s; + isect._t = _event._t; + } + // Similarly, if the computed intersection lies to the right of the + // rightmost origin (which should rarely happen), it can cause + // unbelievable inefficiency on sufficiently degenerate inputs. + // (If you have the test program, try running test54.d with the + // "X zoom" option turned on). + var orgMin = Geom.VertLeq(orgUp, orgLo) ? orgUp : orgLo; + if (Geom.VertLeq(orgMin, isect)) + { + isect._s = orgMin._s; + isect._t = orgMin._t; + } + + if (Geom.VertEq(isect, orgUp) || Geom.VertEq(isect, orgLo)) + { + // Easy case -- intersection at one of the right endpoints + CheckForRightSplice(regUp); + return false; + } + + if ( (! Geom.VertEq(dstUp, _event) + && Geom.EdgeSign(dstUp, _event, isect) >= 0.0f) + || (! Geom.VertEq(dstLo, _event) + && Geom.EdgeSign(dstLo, _event, isect) <= 0.0f)) + { + // Very unusual -- the new upper or lower edge would pass on the + // wrong side of the sweep event, or through it. This can happen + // due to very small numerical errors in the intersection calculation. + if (dstLo == _event) + { + // Splice dstLo into eUp, and process the new region(s) + _mesh.SplitEdge(eUp._Sym); + _mesh.Splice(eLo._Sym, eUp); + regUp = TopLeftRegion(regUp); + eUp = RegionBelow(regUp)._eUp; + FinishLeftRegions(RegionBelow(regUp), regLo); + AddRightEdges(regUp, eUp._Oprev, eUp, eUp, true); + return true; + } + if( dstUp == _event ) { + /* Splice dstUp into eLo, and process the new region(s) */ + _mesh.SplitEdge(eLo._Sym); + _mesh.Splice(eUp._Lnext, eLo._Oprev); + regLo = regUp; + regUp = TopRightRegion(regUp); + var e = RegionBelow(regUp)._eUp._Rprev; + regLo._eUp = eLo._Oprev; + eLo = FinishLeftRegions(regLo, null); + AddRightEdges(regUp, eLo._Onext, eUp._Rprev, e, true); + return true; + } + // Special case: called from ConnectRightVertex. If either + // edge passes on the wrong side of tess._event, split it + // (and wait for ConnectRightVertex to splice it appropriately). + if (Geom.EdgeSign( dstUp, _event, isect ) >= 0.0f) + { + RegionAbove(regUp)._dirty = regUp._dirty = true; + _mesh.SplitEdge(eUp._Sym); + eUp._Org._s = _event._s; + eUp._Org._t = _event._t; + } + if (Geom.EdgeSign(dstLo, _event, isect) <= 0.0f) + { + regUp._dirty = regLo._dirty = true; + _mesh.SplitEdge(eLo._Sym); + eLo._Org._s = _event._s; + eLo._Org._t = _event._t; + } + // leave the rest for ConnectRightVertex + return false; + } + + // General case -- split both edges, splice into new vertex. + // When we do the splice operation, the order of the arguments is + // arbitrary as far as correctness goes. However, when the operation + // creates a new face, the work done is proportional to the size of + // the new face. We expect the faces in the processed part of + // the mesh (ie. eUp._Lface) to be smaller than the faces in the + // unprocessed original contours (which will be eLo._Oprev._Lface). + _mesh.SplitEdge(eUp._Sym); + _mesh.SplitEdge(eLo._Sym); + _mesh.Splice(eLo._Oprev, eUp); + eUp._Org._s = isect._s; + eUp._Org._t = isect._t; + eUp._Org._pqHandle = _pq.Insert(eUp._Org); + if (eUp._Org._pqHandle._handle == PQHandle.Invalid) + { + throw new InvalidOperationException("PQHandle should not be invalid"); + } + GetIntersectData(eUp._Org, orgUp, dstUp, orgLo, dstLo); + RegionAbove(regUp)._dirty = regUp._dirty = regLo._dirty = true; + return false; + } + + /// + /// When the upper or lower edge of any region changes, the region is + /// marked "dirty". This routine walks through all the dirty regions + /// and makes sure that the dictionary invariants are satisfied + /// (see the comments at the beginning of this file). Of course + /// new dirty regions can be created as we make changes to restore + /// the invariants. + /// + private void WalkDirtyRegions(ActiveRegion regUp) + { + var regLo = RegionBelow(regUp); + MeshUtils.Edge eUp, eLo; + + while (true) + { + // Find the lowest dirty region (we walk from the bottom up). + while (regLo._dirty) + { + regUp = regLo; + regLo = RegionBelow(regLo); + } + if (!regUp._dirty) + { + regLo = regUp; + regUp = RegionAbove( regUp ); + if(regUp == null || !regUp._dirty) + { + // We've walked all the dirty regions + return; + } + } + regUp._dirty = false; + eUp = regUp._eUp; + eLo = regLo._eUp; + + if (eUp._Dst != eLo._Dst) + { + // Check that the edge ordering is obeyed at the Dst vertices. + if (CheckForLeftSplice(regUp)) + { + + // If the upper or lower edge was marked fixUpperEdge, then + // we no longer need it (since these edges are needed only for + // vertices which otherwise have no right-going edges). + if (regLo._fixUpperEdge) + { + DeleteRegion(regLo); + _mesh.Delete(eLo); + regLo = RegionBelow(regUp); + eLo = regLo._eUp; + } + else if( regUp._fixUpperEdge ) + { + DeleteRegion(regUp); + _mesh.Delete(eUp); + regUp = RegionAbove(regLo); + eUp = regUp._eUp; + } + } + } + if (eUp._Org != eLo._Org) + { + if( eUp._Dst != eLo._Dst + && ! regUp._fixUpperEdge && ! regLo._fixUpperEdge + && (eUp._Dst == _event || eLo._Dst == _event) ) + { + // When all else fails in CheckForIntersect(), it uses tess._event + // as the intersection location. To make this possible, it requires + // that tess._event lie between the upper and lower edges, and also + // that neither of these is marked fixUpperEdge (since in the worst + // case it might splice one of these edges into tess.event, and + // violate the invariant that fixable edges are the only right-going + // edge from their associated vertex). + if (CheckForIntersect(regUp)) + { + // WalkDirtyRegions() was called recursively; we're done + return; + } + } + else + { + // Even though we can't use CheckForIntersect(), the Org vertices + // may violate the dictionary edge ordering. Check and correct this. + CheckForRightSplice(regUp); + } + } + if (eUp._Org == eLo._Org && eUp._Dst == eLo._Dst) + { + // A degenerate loop consisting of only two edges -- delete it. + Geom.AddWinding(eLo, eUp); + DeleteRegion(regUp); + _mesh.Delete(eUp); + regUp = RegionAbove(regLo); + } + } + } + + /// + /// Purpose: connect a "right" vertex vEvent (one where all edges go left) + /// to the unprocessed portion of the mesh. Since there are no right-going + /// edges, two regions (one above vEvent and one below) are being merged + /// into one. "regUp" is the upper of these two regions. + /// + /// There are two reasons for doing this (adding a right-going edge): + /// - if the two regions being merged are "inside", we must add an edge + /// to keep them separated (the combined region would not be monotone). + /// - in any case, we must leave some record of vEvent in the dictionary, + /// so that we can merge vEvent with features that we have not seen yet. + /// For example, maybe there is a vertical edge which passes just to + /// the right of vEvent; we would like to splice vEvent into this edge. + /// + /// However, we don't want to connect vEvent to just any vertex. We don''t + /// want the new edge to cross any other edges; otherwise we will create + /// intersection vertices even when the input data had no self-intersections. + /// (This is a bad thing; if the user's input data has no intersections, + /// we don't want to generate any false intersections ourselves.) + /// + /// Our eventual goal is to connect vEvent to the leftmost unprocessed + /// vertex of the combined region (the union of regUp and regLo). + /// But because of unseen vertices with all right-going edges, and also + /// new vertices which may be created by edge intersections, we don''t + /// know where that leftmost unprocessed vertex is. In the meantime, we + /// connect vEvent to the closest vertex of either chain, and mark the region + /// as "fixUpperEdge". This flag says to delete and reconnect this edge + /// to the next processed vertex on the boundary of the combined region. + /// Quite possibly the vertex we connected to will turn out to be the + /// closest one, in which case we won''t need to make any changes. + /// + private void ConnectRightVertex(ActiveRegion regUp, MeshUtils.Edge eBottomLeft) + { + var eTopLeft = eBottomLeft._Onext; + var regLo = RegionBelow(regUp); + var eUp = regUp._eUp; + var eLo = regLo._eUp; + bool degenerate = false; + + if (eUp._Dst != eLo._Dst) + { + CheckForIntersect(regUp); + } + + // Possible new degeneracies: upper or lower edge of regUp may pass + // through vEvent, or may coincide with new intersection vertex + if (Geom.VertEq(eUp._Org, _event)) + { + _mesh.Splice(eTopLeft._Oprev, eUp); + regUp = TopLeftRegion(regUp); + eTopLeft = RegionBelow(regUp)._eUp; + FinishLeftRegions(RegionBelow(regUp), regLo); + degenerate = true; + } + if (Geom.VertEq(eLo._Org, _event)) + { + _mesh.Splice(eBottomLeft, eLo._Oprev); + eBottomLeft = FinishLeftRegions(regLo, null); + degenerate = true; + } + if (degenerate) + { + AddRightEdges(regUp, eBottomLeft._Onext, eTopLeft, eTopLeft, true); + return; + } + + // Non-degenerate situation -- need to add a temporary, fixable edge. + // Connect to the closer of eLo.Org, eUp.Org. + MeshUtils.Edge eNew; + if (Geom.VertLeq(eLo._Org, eUp._Org)) + { + eNew = eLo._Oprev; + } + else + { + eNew = eUp; + } + eNew = _mesh.Connect(eBottomLeft._Lprev, eNew); + + // Prevent cleanup, otherwise eNew might disappear before we've even + // had a chance to mark it as a temporary edge. + AddRightEdges(regUp, eNew, eNew._Onext, eNew._Onext, false); + eNew._Sym._activeRegion._fixUpperEdge = true; + WalkDirtyRegions(regUp); + } + + /// + /// The event vertex lies exacty on an already-processed edge or vertex. + /// Adding the new vertex involves splicing it into the already-processed + /// part of the mesh. + /// + private void ConnectLeftDegenerate(ActiveRegion regUp, MeshUtils.Vertex vEvent) + { + var e = regUp._eUp; + if (Geom.VertEq(e._Org, vEvent)) + { + // e.Org is an unprocessed vertex - just combine them, and wait + // for e.Org to be pulled from the queue + // C# : in the C version, there is a flag but it was never implemented + // the vertices are before beginning the tesselation + throw new InvalidOperationException("Vertices should have been merged before"); + } + + if (!Geom.VertEq(e._Dst, vEvent)) + { + // General case -- splice vEvent into edge e which passes through it + _mesh.SplitEdge(e._Sym); + if (regUp._fixUpperEdge) + { + // This edge was fixable -- delete unused portion of original edge + _mesh.Delete(e._Onext); + regUp._fixUpperEdge = false; + } + _mesh.Splice(vEvent._anEdge, e); + SweepEvent(vEvent); // recurse + return; + } + + // See above + throw new InvalidOperationException("Vertices should have been merged before"); + } + + /// + /// Purpose: connect a "left" vertex (one where both edges go right) + /// to the processed portion of the mesh. Let R be the active region + /// containing vEvent, and let U and L be the upper and lower edge + /// chains of R. There are two possibilities: + /// + /// - the normal case: split R into two regions, by connecting vEvent to + /// the rightmost vertex of U or L lying to the left of the sweep line + /// + /// - the degenerate case: if vEvent is close enough to U or L, we + /// merge vEvent into that edge chain. The subcases are: + /// - merging with the rightmost vertex of U or L + /// - merging with the active edge of U or L + /// - merging with an already-processed portion of U or L + /// + private void ConnectLeftVertex(MeshUtils.Vertex vEvent) + { + var tmp = new ActiveRegion(); + + // Get a pointer to the active region containing vEvent + tmp._eUp = vEvent._anEdge._Sym; + var regUp = _dict.Find(tmp).Key; + var regLo = RegionBelow(regUp); + if (regLo == null) + { + // This may happen if the input polygon is coplanar. + return; + } + var eUp = regUp._eUp; + var eLo = regLo._eUp; + + // Try merging with U or L first + if (Geom.EdgeSign(eUp._Dst, vEvent, eUp._Org) == 0.0f) + { + ConnectLeftDegenerate(regUp, vEvent); + return; + } + + // Connect vEvent to rightmost processed vertex of either chain. + // e._Dst is the vertex that we will connect to vEvent. + var reg = Geom.VertLeq(eLo._Dst, eUp._Dst) ? regUp : regLo; + + if (regUp._inside || reg._fixUpperEdge) + { + MeshUtils.Edge eNew; + if (reg == regUp) + { + eNew = _mesh.Connect(vEvent._anEdge._Sym, eUp._Lnext); + } + else + { + eNew = _mesh.Connect(eLo._Dnext, vEvent._anEdge)._Sym; + } + if (reg._fixUpperEdge) + { + FixUpperEdge(reg, eNew); + } + else + { + ComputeWinding(AddRegionBelow(regUp, eNew)); + } + SweepEvent(vEvent); + } + else + { + // The new vertex is in a region which does not belong to the polygon. + // We don't need to connect this vertex to the rest of the mesh. + AddRightEdges(regUp, vEvent._anEdge, vEvent._anEdge, null, true); + } + } + + /// + /// Does everything necessary when the sweep line crosses a vertex. + /// Updates the mesh and the edge dictionary. + /// + private void SweepEvent(MeshUtils.Vertex vEvent) + { + _event = vEvent; + + // Check if this vertex is the right endpoint of an edge that is + // already in the dictionary. In this case we don't need to waste + // time searching for the location to insert new edges. + var e = vEvent._anEdge; + while (e._activeRegion == null) + { + e = e._Onext; + if (e == vEvent._anEdge) + { + // All edges go right -- not incident to any processed edges + ConnectLeftVertex(vEvent); + return; + } + } + + // Processing consists of two phases: first we "finish" all the + // active regions where both the upper and lower edges terminate + // at vEvent (ie. vEvent is closing off these regions). + // We mark these faces "inside" or "outside" the polygon according + // to their winding number, and delete the edges from the dictionary. + // This takes care of all the left-going edges from vEvent. + var regUp = TopLeftRegion(e._activeRegion); + var reg = RegionBelow(regUp); + var eTopLeft = reg._eUp; + var eBottomLeft = FinishLeftRegions(reg, null); + + // Next we process all the right-going edges from vEvent. This + // involves adding the edges to the dictionary, and creating the + // associated "active regions" which record information about the + // regions between adjacent dictionary edges. + if (eBottomLeft._Onext == eTopLeft) + { + // No right-going edges -- add a temporary "fixable" edge + ConnectRightVertex(regUp, eBottomLeft); + } + else + { + AddRightEdges(regUp, eBottomLeft._Onext, eTopLeft, eTopLeft, true); + } + } + + /// + /// Make the sentinel coordinates big enough that they will never be + /// merged with real input features. + /// + /// We add two sentinel edges above and below all other edges, + /// to avoid special cases at the top and bottom. + /// + private void AddSentinel(Real smin, Real smax, Real t) + { + var e = _mesh.MakeEdge(); + e._Org._s = smax; + e._Org._t = t; + e._Dst._s = smin; + e._Dst._t = t; + _event = e._Dst; // initialize it + + var reg = new ActiveRegion(); + reg._eUp = e; + reg._windingNumber = 0; + reg._inside = false; + reg._fixUpperEdge = false; + reg._sentinel = true; + reg._dirty = false; + reg._nodeUp = _dict.Insert(reg); + } + + /// + /// We maintain an ordering of edge intersections with the sweep line. + /// This order is maintained in a dynamic dictionary. + /// + private void InitEdgeDict() + { + _dict = new Dict(EdgeLeq); + + AddSentinel(-SentinelCoord, SentinelCoord, -SentinelCoord); + AddSentinel(-SentinelCoord, SentinelCoord, +SentinelCoord); + } + + private void DoneEdgeDict() + { + int fixedEdges = 0; + + ActiveRegion reg; + while ((reg = _dict.Min().Key) != null) + { + // At the end of all processing, the dictionary should contain + // only the two sentinel edges, plus at most one "fixable" edge + // created by ConnectRightVertex(). + if (!reg._sentinel) + { + Debug.Assert(reg._fixUpperEdge); + Debug.Assert(++fixedEdges == 1); + } + Debug.Assert(reg._windingNumber == 0); + DeleteRegion(reg); + } + + _dict = null; + } + + /// + /// Remove zero-length edges, and contours with fewer than 3 vertices. + /// + private void RemoveDegenerateEdges() + { + MeshUtils.Edge eHead = _mesh._eHead, e, eNext, eLnext; + + for (e = eHead._next; e != eHead; e = eNext) + { + eNext = e._next; + eLnext = e._Lnext; + + if (Geom.VertEq(e._Org, e._Dst) && e._Lnext._Lnext != e) + { + // Zero-length edge, contour has at least 3 edges + + SpliceMergeVertices(eLnext, e); // deletes e.Org + _mesh.Delete(e); // e is a self-loop + e = eLnext; + eLnext = e._Lnext; + } + if (eLnext._Lnext == e) + { + // Degenerate contour (one or two edges) + + if (eLnext != e) + { + if (eLnext == eNext || eLnext == eNext._Sym) + { + eNext = eNext._next; + } + _mesh.Delete(eLnext); + } + if (e == eNext || e == eNext._Sym) + { + eNext = eNext._next; + } + _mesh.Delete(e); + } + } + } + + /// + /// Insert all vertices into the priority queue which determines the + /// order in which vertices cross the sweep line. + /// + private void InitPriorityQ() + { + MeshUtils.Vertex vHead = _mesh._vHead, v; + int vertexCount = 0; + + for (v = vHead._next; v != vHead; v = v._next) + { + vertexCount++; + } + // Make sure there is enough space for sentinels. + vertexCount += 8; + + _pq = new PriorityQueue(vertexCount, Geom.VertLeq); + + vHead = _mesh._vHead; + for( v = vHead._next; v != vHead; v = v._next ) { + v._pqHandle = _pq.Insert(v); + if (v._pqHandle._handle == PQHandle.Invalid) + { + throw new InvalidOperationException("PQHandle should not be invalid"); + } + } + _pq.Init(); + } + + private void DonePriorityQ() + { + _pq = null; + } + + /// + /// Delete any degenerate faces with only two edges. WalkDirtyRegions() + /// will catch almost all of these, but it won't catch degenerate faces + /// produced by splice operations on already-processed edges. + /// The two places this can happen are in FinishLeftRegions(), when + /// we splice in a "temporary" edge produced by ConnectRightVertex(), + /// and in CheckForLeftSplice(), where we splice already-processed + /// edges to ensure that our dictionary invariants are not violated + /// by numerical errors. + /// + /// In both these cases it is *very* dangerous to delete the offending + /// edge at the time, since one of the routines further up the stack + /// will sometimes be keeping a pointer to that edge. + /// + private void RemoveDegenerateFaces() + { + MeshUtils.Face f, fNext; + MeshUtils.Edge e; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = fNext) + { + fNext = f._next; + e = f._anEdge; + Debug.Assert(e._Lnext != e); + + if (e._Lnext._Lnext == e) + { + // A face with only two edges + Geom.AddWinding(e._Onext, e); + _mesh.Delete(e); + } + } + } + + /// + /// ComputeInterior computes the planar arrangement specified + /// by the given contours, and further subdivides this arrangement + /// into regions. Each region is marked "inside" if it belongs + /// to the polygon, according to the rule given by windingRule. + /// Each interior region is guaranteed to be monotone. + /// + protected void ComputeInterior() + { + // Each vertex defines an event for our sweep line. Start by inserting + // all the vertices in a priority queue. Events are processed in + // lexicographic order, ie. + // + // e1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y) + RemoveDegenerateEdges(); + InitPriorityQ(); + RemoveDegenerateFaces(); + InitEdgeDict(); + + MeshUtils.Vertex v, vNext; + while ((v = _pq.ExtractMin()) != null) + { + while (true) + { + vNext = _pq.Minimum(); + if (vNext == null || !Geom.VertEq(vNext, v)) + { + break; + } + + // Merge together all vertices at exactly the same location. + // This is more efficient than processing them one at a time, + // simplifies the code (see ConnectLeftDegenerate), and is also + // important for correct handling of certain degenerate cases. + // For example, suppose there are two identical edges A and B + // that belong to different contours (so without this code they would + // be processed by separate sweep events). Suppose another edge C + // crosses A and B from above. When A is processed, we split it + // at its intersection point with C. However this also splits C, + // so when we insert B we may compute a slightly different + // intersection point. This might leave two edges with a small + // gap between them. This kind of error is especially obvious + // when using boundary extraction (BoundaryOnly). + vNext = _pq.ExtractMin(); + SpliceMergeVertices(v._anEdge, vNext._anEdge); + } + SweepEvent(v); + } + + DoneEdgeDict(); + DonePriorityQ(); + + RemoveDegenerateFaces(); + _mesh.Check(); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Sweep.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Sweep.cs.meta new file mode 100644 index 00000000..65f144f5 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Sweep.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eef0fc2628b35374394c6de7d1de2c34 +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Tess.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Tess.cs new file mode 100644 index 00000000..5a638502 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Tess.cs @@ -0,0 +1,798 @@ +/* +** SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +** Copyright (C) 2011 Silicon Graphics, Inc. +** All Rights Reserved. +** +** 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 including the dates of first publication and either this +** permission notice or a reference to http://oss.sgi.com/projects/FreeB/ 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 SILICON GRAPHICS, INC. +** 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. +** +** Except as contained in this notice, the name of Silicon Graphics, Inc. shall not +** be used in advertising or otherwise to promote the sale, use or other dealings in +** this Software without prior written authorization from Silicon Graphics, Inc. +*/ +/* +** Original Author: Eric Veach, July 1994. +** libtess2: Mikko Mononen, http://code.google.com/p/libtess2/. +** LibTessDotNet: Remi Gillig, https://github.com/speps/LibTessDotNet +*/ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using ToolBuddy.Pooling; +using ToolBuddy.Pooling.Collections; +using ToolBuddy.Pooling.Pools; +using Real = System.Single; +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + public enum WindingRule + { + EvenOdd, + NonZero, + Positive, + Negative, + AbsGeqTwo + } + + public enum ElementType + { + Polygons, + ConnectedPolygons, + BoundaryContours + } + + public enum ContourOrientation + { + Original, + Clockwise, + CounterClockwise + } + + public struct ContourVertex + { + public Vec3 Position; + public object Data; + + public override string ToString() + { + return string.Format("{0}, {1}", Position, Data); + } + } + + public delegate object CombineCallback(Vec3 position, object[] data, Real[] weights); + + public partial class Tess + + { + private LTMesh _mesh; + private Vec3 _normal; + private Vec3 _sUnit; + private Vec3 _tUnit; + + private Real _bminX, _bminY, _bmaxX, _bmaxY; + + private WindingRule _windingRule; + + private Dict _dict; + private PriorityQueue _pq; + private MeshUtils.Vertex _event; + + private CombineCallback _combineCallback; + + private ContourVertex[] _vertices; + + private int _vertexCount; + + private SubArray? elementsList; + private int _elementCount; + + public Vec3 Normal { get { return _normal; } set { _normal = value; } } + + public Real SUnitX = 1; + public Real SUnitY = 0; + public Real SentinelCoord = 4e30f; + + /// + /// If true, will remove empty (zero area) polygons. + /// + public bool NoEmptyPolygons = false; + + /// + /// If true, will use pooling to reduce GC (compare performance with/without, can vary wildly). + /// + public bool UsePooling = false; + + public ContourVertex[] Vertices { get { return _vertices; } } + public int VertexCount { get { return _vertexCount; } } + + + /// + /// The elements list + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use ElementsArray instead")] + public int[] Elements + { + get { return elementsList?.CopyToArray(ArrayPoolsProvider.GetPool()); } + } + + /// + /// The elements list + /// + /// This getter returns a copy of the actual array. For performance reasons, use the equivalent getter returning a instance, which allows you to directly access and modify the underlying array + [Obsolete("Use ElementsArray instead")] + public IList ElementsList + { + get { return Elements; } + } + + /// + /// The elements list + /// + /// Setting a new will the current instance + public SubArray? ElementsArray + { + get { return elementsList; } + } + + public int ElementCount + { + get { return _elementCount; } + } + + public Tess() + { + _normal = Vec3.Zero; + _bminX = _bminY = _bmaxX = _bmaxY = 0; + + _windingRule = WindingRule.EvenOdd; + _mesh = null; + + _vertices = null; + _vertexCount = 0; + elementsList = null; + _elementCount = 0; + } + + private void ComputeNormal(ref Vec3 norm) + { + var v = _mesh._vHead._next; + + var minVal = new Real[3] { v._coords.X, v._coords.Y, v._coords.Z }; + var minVert = new MeshUtils.Vertex[3] { v, v, v }; + var maxVal = new Real[3] { v._coords.X, v._coords.Y, v._coords.Z }; + var maxVert = new MeshUtils.Vertex[3] { v, v, v }; + + for (; v != _mesh._vHead; v = v._next) + { + if (v._coords.X < minVal[0]) { minVal[0] = v._coords.X; minVert[0] = v; } + if (v._coords.Y < minVal[1]) { minVal[1] = v._coords.Y; minVert[1] = v; } + if (v._coords.Z < minVal[2]) { minVal[2] = v._coords.Z; minVert[2] = v; } + if (v._coords.X > maxVal[0]) { maxVal[0] = v._coords.X; maxVert[0] = v; } + if (v._coords.Y > maxVal[1]) { maxVal[1] = v._coords.Y; maxVert[1] = v; } + if (v._coords.Z > maxVal[2]) { maxVal[2] = v._coords.Z; maxVert[2] = v; } + } + + // Find two vertices separated by at least 1/sqrt(3) of the maximum + // distance between any two vertices + int i = 0; + if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) { i = 1; } + if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) { i = 2; } + if (minVal[i] >= maxVal[i]) + { + // All vertices are the same -- normal doesn't matter + norm = new Vec3 { X = 0, Y = 0, Z = 1 }; + return; + } + + // Look for a third vertex which forms the triangle with maximum area + // (Length of normal == twice the triangle area) + Real maxLen2 = 0, tLen2; + var v1 = minVert[i]; + var v2 = maxVert[i]; + Vec3 d1, d2, tNorm; + Vec3.Sub(ref v1._coords, ref v2._coords, out d1); + for (v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + Vec3.Sub(ref v._coords, ref v2._coords, out d2); + tNorm.X = d1.Y * d2.Z - d1.Z * d2.Y; + tNorm.Y = d1.Z * d2.X - d1.X * d2.Z; + tNorm.Z = d1.X * d2.Y - d1.Y * d2.X; + tLen2 = tNorm.X * tNorm.X + tNorm.Y * tNorm.Y + tNorm.Z * tNorm.Z; + if (tLen2 > maxLen2) + { + maxLen2 = tLen2; + norm = tNorm; + } + } + + if (maxLen2 <= 0.0f) + { + // All points lie on a single line -- any decent normal will do + norm = Vec3.Zero; + i = Vec3.LongAxis(ref d1); + norm[i] = 1; + } + } + + private void CheckOrientation() + { + // When we compute the normal automatically, we choose the orientation + // so that the the sum of the signed areas of all contours is non-negative. + Real area = 0.0f; + for (var f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (f._anEdge._winding <= 0) + { + continue; + } + + area += MeshUtils.FaceArea(f); + } + + if (area < 0.0f) + { + // Reverse the orientation by flipping all the t-coordinates + for (var v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + v._t = -v._t; + } + + Vec3.Neg(ref _tUnit); + } + } + + private void ProjectPolygon() + { + var norm = _normal; + + bool computedNormal = false; + if (norm.X == 0.0f && norm.Y == 0.0f && norm.Z == 0.0f) + { + ComputeNormal(ref norm); + _normal = norm; + computedNormal = true; + } + + int i = Vec3.LongAxis(ref norm); + + _sUnit[i] = 0; + _sUnit[(i + 1) % 3] = SUnitX; + _sUnit[(i + 2) % 3] = SUnitY; + + _tUnit[i] = 0; + _tUnit[(i + 1) % 3] = norm[i] > 0.0f ? -SUnitY : SUnitY; + _tUnit[(i + 2) % 3] = norm[i] > 0.0f ? SUnitX : -SUnitX; + + // Project the vertices onto the sweep plane + for (var v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + Vec3.Dot(ref v._coords, ref _sUnit, out v._s); + Vec3.Dot(ref v._coords, ref _tUnit, out v._t); + } + + if (computedNormal) + { + CheckOrientation(); + } + + // Compute ST bounds. + bool first = true; + for (var v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + if (first) + { + _bminX = _bmaxX = v._s; + _bminY = _bmaxY = v._t; + first = false; + } + else + { + if (v._s < _bminX) _bminX = v._s; + if (v._s > _bmaxX) _bmaxX = v._s; + if (v._t < _bminY) _bminY = v._t; + if (v._t > _bmaxY) _bmaxY = v._t; + } + } + } + + /// + /// TessellateMonoRegion( face ) tessellates a monotone region + /// (what else would it do??) The region must consist of a single + /// loop of half-edges (see mesh.h) oriented CCW. "Monotone" in this + /// case means that any vertical line intersects the interior of the + /// region in a single interval. + /// + /// Tessellation consists of adding interior edges (actually pairs of + /// half-edges), to split the region into non-overlapping triangles. + /// + /// The basic idea is explained in Preparata and Shamos (which I don't + /// have handy right now), although their implementation is more + /// complicated than this one. The are two edge chains, an upper chain + /// and a lower chain. We process all vertices from both chains in order, + /// from right to left. + /// + /// The algorithm ensures that the following invariant holds after each + /// vertex is processed: the untessellated region consists of two + /// chains, where one chain (say the upper) is a single edge, and + /// the other chain is concave. The left vertex of the single edge + /// is always to the left of all vertices in the concave chain. + /// + /// Each step consists of adding the rightmost unprocessed vertex to one + /// of the two chains, and forming a fan of triangles from the rightmost + /// of two chain endpoints. Determining whether we can add each triangle + /// to the fan is a simple orientation test. By making the fan as large + /// as possible, we restore the invariant (check it yourself). + /// + private void TessellateMonoRegion(MeshUtils.Face face) + { + // All edges are oriented CCW around the boundary of the region. + // First, find the half-edge whose origin vertex is rightmost. + // Since the sweep goes from left to right, face->anEdge should + // be close to the edge we want. + var up = face._anEdge; + Debug.Assert(up._Lnext != up && up._Lnext._Lnext != up); + + for (; Geom.VertLeq(up._Dst, up._Org); up = up._Lprev) ; + for (; Geom.VertLeq(up._Org, up._Dst); up = up._Lnext) ; + + var lo = up._Lprev; + + while (up._Lnext != lo) + { + if (Geom.VertLeq(up._Dst, lo._Org)) + { + // up.Dst is on the left. It is safe to form triangles from lo.Org. + // The EdgeGoesLeft test guarantees progress even when some triangles + // are CW, given that the upper and lower chains are truly monotone. + while (lo._Lnext != up && (Geom.EdgeGoesLeft(lo._Lnext) + || Geom.EdgeSign(lo._Org, lo._Dst, lo._Lnext._Dst) <= 0.0f)) + { + lo = _mesh.Connect(lo._Lnext, lo)._Sym; + } + + lo = lo._Lprev; + } + else + { + // lo.Org is on the left. We can make CCW triangles from up.Dst. + while (lo._Lnext != up && (Geom.EdgeGoesRight(up._Lprev) + || Geom.EdgeSign(up._Dst, up._Org, up._Lprev._Org) >= 0.0f)) + { + up = _mesh.Connect(up, up._Lprev)._Sym; + } + + up = up._Lnext; + } + } + + // Now lo.Org == up.Dst == the leftmost vertex. The remaining region + // can be tessellated in a fan from this leftmost vertex. + Debug.Assert(lo._Lnext != up); + while (lo._Lnext._Lnext != up) + { + lo = _mesh.Connect(lo._Lnext, lo)._Sym; + } + } + + /// + /// TessellateInterior( mesh ) tessellates each region of + /// the mesh which is marked "inside" the polygon. Each such region + /// must be monotone. + /// + private void TessellateInterior() + { + MeshUtils.Face f, next; + for (f = _mesh._fHead._next; f != _mesh._fHead; f = next) + { + // Make sure we don't try to tessellate the new triangles. + next = f._next; + if (f._inside) + { + TessellateMonoRegion(f); + } + } + } + + /// + /// DiscardExterior zaps (ie. sets to null) all faces + /// which are not marked "inside" the polygon. Since further mesh operations + /// on NULL faces are not allowed, the main purpose is to clean up the + /// mesh so that exterior loops are not represented in the data structure. + /// + private void DiscardExterior() + { + MeshUtils.Face f, next; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = next) + { + // Since f will be destroyed, save its next pointer. + next = f._next; + if( ! f._inside ) { + _mesh.ZapFace(f); + } + } + } + + /// + /// SetWindingNumber( value, keepOnlyBoundary ) resets the + /// winding numbers on all edges so that regions marked "inside" the + /// polygon have a winding number of "value", and regions outside + /// have a winding number of 0. + /// + /// If keepOnlyBoundary is TRUE, it also deletes all edges which do not + /// separate an interior region from an exterior one. + /// + private void SetWindingNumber(int value, bool keepOnlyBoundary) + { + MeshUtils.Edge e, eNext; + + for (e = _mesh._eHead._next; e != _mesh._eHead; e = eNext) + { + eNext = e._next; + if (e._Rface._inside != e._Lface._inside) + { + + /* This is a boundary edge (one side is interior, one is exterior). */ + e._winding = (e._Lface._inside) ? value : -value; + } + else + { + + /* Both regions are interior, or both are exterior. */ + if (!keepOnlyBoundary) + { + e._winding = 0; + } + else + { + _mesh.Delete(e); + } + } + } + + } + + private int GetNeighbourFace(MeshUtils.Edge edge) + { + if (edge._Rface == null) + return MeshUtils.Undef; + if (!edge._Rface._inside) + return MeshUtils.Undef; + return edge._Rface._n; + } + + private void OutputPolymesh(ElementType elementType, int polySize) + { + MeshUtils.Vertex v; + MeshUtils.Face f; + MeshUtils.Edge edge; + int maxFaceCount = 0; + int maxVertexCount = 0; + int faceVerts, i; + + if (polySize < 3) + { + polySize = 3; + } + + // Assume that the input data is triangles now. + // Try to merge as many polygons as possible + if (polySize > 3) + { + _mesh.MergeConvexFaces(polySize); + } + + // Mark unused + for (v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + v._n = MeshUtils.Undef; + + // Create unique IDs for all vertices and faces. + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + f._n = MeshUtils.Undef; + if (!f._inside) continue; + + if (NoEmptyPolygons) + { + var area = MeshUtils.FaceArea(f); + if (Math.Abs(area) < Real.Epsilon) + { + continue; + } + } + + edge = f._anEdge; + faceVerts = 0; + do { + v = edge._Org; + if (v._n == MeshUtils.Undef) + { + v._n = maxVertexCount; + maxVertexCount++; + } + + faceVerts++; + edge = edge._Lnext; + } + while (edge != f._anEdge); + + Debug.Assert(faceVerts <= polySize); + + f._n = maxFaceCount; + ++maxFaceCount; + } + + _elementCount = maxFaceCount; + if (elementType == ElementType.ConnectedPolygons) + maxFaceCount *= 2; + + ArrayPool arrayPool = ArrayPoolsProvider.GetPool(); + if (elementsList != null) + arrayPool.Free(elementsList.Value); + elementsList = arrayPool.Allocate(maxFaceCount * polySize); + + _vertexCount = maxVertexCount; + _vertices = new ContourVertex[_vertexCount]; + + // Output vertices. + for (v = _mesh._vHead._next; v != _mesh._vHead; v = v._next) + { + if (v._n != MeshUtils.Undef) + { + // Store coordinate + _vertices[v._n].Position = v._coords; + _vertices[v._n].Data = v._data; + } + } + + // Output indices. + int elementIndex = 0; + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (!f._inside) continue; + + if (NoEmptyPolygons) + { + var area = MeshUtils.FaceArea(f); + if (Math.Abs(area) < Real.Epsilon) + { + continue; + } + } + + // Store polygon + edge = f._anEdge; + faceVerts = 0; + do { + v = edge._Org; + elementsList.Value.Array[elementIndex++] = v._n; + faceVerts++; + edge = edge._Lnext; + } while (edge != f._anEdge); + + // Fill unused. + for (i = faceVerts; i < polySize; ++i) + { + elementsList.Value.Array[elementIndex++] = MeshUtils.Undef; + } + + // Store polygon connectivity + if (elementType == ElementType.ConnectedPolygons) + { + edge = f._anEdge; + do + { + elementsList.Value.Array[elementIndex++] = GetNeighbourFace(edge); + edge = edge._Lnext; + } while (edge != f._anEdge); + + // Fill unused. + for (i = faceVerts; i < polySize; ++i) + { + elementsList.Value.Array[elementIndex++] = MeshUtils.Undef; + } + } + } + } + + private void OutputContours() + { + MeshUtils.Face f; + MeshUtils.Edge edge, start; + int startVert = 0; + int vertCount = 0; + + _vertexCount = 0; + _elementCount = 0; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (!f._inside) continue; + + start = edge = f._anEdge; + do + { + ++_vertexCount; + edge = edge._Lnext; + } + while (edge != start); + + ++_elementCount; + } + + ArrayPool arrayPool = ArrayPoolsProvider.GetPool(); + if (elementsList != null) + arrayPool.Free(elementsList.Value); + elementsList = arrayPool.Allocate(_elementCount * 2); + + _vertices = new ContourVertex[_vertexCount]; + + int vertIndex = 0; + int elementIndex = 0; + + startVert = 0; + + for (f = _mesh._fHead._next; f != _mesh._fHead; f = f._next) + { + if (!f._inside) continue; + + vertCount = 0; + start = edge = f._anEdge; + do { + _vertices[vertIndex].Position = edge._Org._coords; + _vertices[vertIndex].Data = edge._Org._data; + ++vertIndex; + ++vertCount; + edge = edge._Lnext; + } while (edge != start); + + elementsList.Value.Array[elementIndex++] = startVert; + elementsList.Value.Array[elementIndex++] = vertCount; + + startVert += vertCount; + } + } + + private Real SignedArea(ContourVertex[] vertices) + { + Real area = 0.0f; + + for (int i = 0; i < vertices.Length; i++) + { + var v0 = vertices[i]; + var v1 = vertices[(i + 1) % vertices.Length]; + + area += v0.Position.X * v1.Position.Y; + area -= v0.Position.Y * v1.Position.X; + } + + return 0.5f * area; + } + + public void AddContour(ContourVertex[] vertices) + { + AddContour(vertices, ContourOrientation.Original); + } + + public void AddContour(ContourVertex[] vertices, ContourOrientation forceOrientation) + { + if (_mesh == null) + { + _mesh = new LTMesh(); + } + + bool reverse = false; + if (forceOrientation != ContourOrientation.Original) + { + var area = SignedArea(vertices); + reverse = (forceOrientation == ContourOrientation.Clockwise && area < 0.0f) || (forceOrientation == ContourOrientation.CounterClockwise && area > 0.0f); + } + + MeshUtils.Edge e = null; + for (int i = 0; i < vertices.Length; ++i) + { + if (e == null) + { + e = _mesh.MakeEdge(); + _mesh.Splice(e, e._Sym); + } + else + { + // Create a new vertex and edge which immediately follow e + // in the ordering around the left face. + _mesh.SplitEdge(e); + e = e._Lnext; + } + + int index = reverse ? vertices.Length - 1 - i : i; + // The new vertex is now e._Org. + e._Org._coords = vertices[index].Position; + e._Org._data = vertices[index].Data; + + // The winding of an edge says how the winding number changes as we + // cross from the edge's right face to its left face. We add the + // vertices in such an order that a CCW contour will add +1 to + // the winding number of the region inside the contour. + e._winding = 1; + e._Sym._winding = -1; + } + } + + public void Tessellate(WindingRule windingRule, ElementType elementType, int polySize) + { + Tessellate(windingRule, elementType, polySize, null); + } + + public void Tessellate(WindingRule windingRule, ElementType elementType, int polySize, CombineCallback combineCallback) + { + _normal = Vec3.Zero; + _vertices = null; + elementsList = null; + + _windingRule = windingRule; + _combineCallback = combineCallback; + + if (_mesh == null) + { + return; + } + + // Determine the polygon normal and project vertices onto the plane + // of the polygon. + ProjectPolygon(); + + // ComputeInterior computes the planar arrangement specified + // by the given contours, and further subdivides this arrangement + // into regions. Each region is marked "inside" if it belongs + // to the polygon, according to the rule given by windingRule. + // Each interior region is guaranteed be monotone. + ComputeInterior(); + + // If the user wants only the boundary contours, we throw away all edges + // except those which separate the interior from the exterior. + // Otherwise we tessellate all the regions marked "inside". + if (elementType == ElementType.BoundaryContours) + { + SetWindingNumber(1, true); + } + else + { + TessellateInterior(); + } + + _mesh.Check(); + + if (elementType == ElementType.BoundaryContours) + { + OutputContours(); + } + else + { + OutputPolymesh(elementType, polySize); + } + + if (UsePooling) + { + _mesh.Free(); + } + + _mesh = null; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Tess.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Tess.cs.meta new file mode 100644 index 00000000..c4aaf830 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/Tess.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9bec9383a2ce0664baaa05ed927186d6 +timeCreated: 1462028785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/UnityUtility.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/UnityUtility.cs new file mode 100644 index 00000000..39578a57 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/UnityUtility.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using ToolBuddy.Pooling; +using ToolBuddy.Pooling.Collections; +using UnityEngine; + + +namespace FluffyUnderware.Curvy.ThirdParty.LibTessDotNet +{ + public static class LibTessVector3Extension + { + public static Vec3 Vec3(this Vector3 v) + { + return new Vec3() { X = v.x, Y = v.y, Z = v.z }; + } + + public static ContourVertex ContourVertex(this Vector3 v) + { + var r = new ContourVertex(); + r.Position = v.Vec3(); + return r; + } + + } + + [Obsolete("No more used in Curvy. Will get removed. Copy it if you still need it")] + public static class LibTessV3Extension + { + public static Vector3 Vector3(this Vec3 v) + { + return new Vector3(v.X, v.Y, v.Z); + } + } + + + + + public static class UnityLibTessUtility + { + [Obsolete("No more used in Curvy. Will get removed. Copy it if you still need it")] + public static ContourVertex[] ToContourVertex(Vector3[] v, bool zeroZ = false) + { + var res = new ContourVertex[v.Length]; + for (int i = 0; i < v.Length; i++) + { + res[i].Position.X = v[i].x; + res[i].Position.Y = v[i].y; + res[i].Position.Z = (zeroZ) ? 0 : v[i].z; + } + return res; + } + + public static ContourVertex[] ToContourVertex(SubArray v, bool zeroZ = false) + { + int count = v.Count; + Vector3[] vArray = v.Array; + ContourVertex[] res = new ContourVertex[count]; + for (int i = 0; i < count; i++) + { + res[i].Position.X = vArray[i].x; + res[i].Position.Y = vArray[i].y; + res[i].Position.Z = (zeroZ) ? 0 : vArray[i].z; + } + return res; + } + + public static void FromContourVertex(ContourVertex[] v, SubArray output) + { + var count = output.Count; + var array = output.Array; + + for (int i = 0; i < count; i++) + { + array[i].x = v[i].Position.X; + array[i].y = v[i].Position.Y; + array[i].z = v[i].Position.Z; + } + } + + public static SubArray ContourVerticesToPositions(ContourVertex[] v) + { + var result = ArrayPoolsProvider.GetPool().Allocate(v.Length); + var res = result.Array; + for (int i = 0; i < result.Count; i++) + { + res[i].x = v[i].Position.X; + res[i].y = v[i].Position.Y; + res[i].z = v[i].Position.Z; + } + + return result; + } + + [Obsolete("No more used in Curvy. Will get removed. Copy it if you still need it")] + public static void SetFromContourVertex(ref Vector3[] v3Array, ref ContourVertex[] cvArray) + { + System.Array.Resize(ref v3Array, cvArray.Length); + for (int i = 0; i < v3Array.Length; i++) + { + v3Array[i].x = cvArray[i].Position.X; + v3Array[i].y = cvArray[i].Position.Y; + v3Array[i].z = cvArray[i].Position.Z; + } + } + + [Obsolete("No more used in Curvy. Will get removed. Copy it if you still need it")] + public static void SetToContourVertex(ref ContourVertex[] cvArray, ref Vector3[] v3Array) + { + System.Array.Resize(ref cvArray, v3Array.Length); + for (int i = 0; i < cvArray.Length; i++) + { + cvArray[i].Position.X = v3Array[i].x; + cvArray[i].Position.Y = v3Array[i].y; + cvArray[i].Position.Z = v3Array[i].z; + } + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/UnityUtility.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/UnityUtility.cs.meta new file mode 100644 index 00000000..445e5342 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/LibTessDotNet/UnityUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 568ec354b4db48d418238be196862ce5 +timeCreated: 1462038537 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics.meta new file mode 100644 index 00000000..7315c447 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3209fe9e76a5aa4d89a96317df30748 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/CHANGELOG.md b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/CHANGELOG.md new file mode 100644 index 00000000..0ce3a6ac --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/CHANGELOG.md @@ -0,0 +1,398 @@ +# Change log + +## [2.0.0-preview.17] - 2021-06-09 + +### Fixed + +- Fixed missing stats over vector sprite asset preview + +## [2.0.0-preview.16] - 2021-04-30 + +### Fixed + +- Fixed null-reference exception occurring in IL2CPP builds + +## [2.0.0-preview.15] - 2021-04-19 + +### Fixed + +- Fixed prefab transform reset during asset rename +- Added missing dependencies in package.json + +## [2.0.0-preview.14] - 2021-01-11 + +### Fixed + +- Fixed path arcs when the sweep angle is very small +- Sanitized tessellation options to prevent infinite loops + +## [2.0.0-preview.13] - 2020-09-08 + +### Changes + +* Moved SVGImage/SVGImageEditor to the Unity.VectorImage namespace +* Renamed UIElements assets to UI Toolkit assets +* Added support for rgba() colors + +### Fixes + +* Fixed WebGL unrepresentable float error during segment length evaluation +* Fixed image fills not working when defined later in the file + +## [2.0.0-preview.12] - 2020-02-13 + +### Changes + +* Added a "Textured Sprite" option to use the SVG's pixels per unit instead of the texture + +### Fixes + +* Fixed gradients not showing properly on Metal +* Prevent hang while evaluating segment length with large coordinates + +## [2.0.0-preview.11] - 2019-12-04 + +### Fixes + +* Fixed CSS class used on root svg element +* Properly handling referenced stop data defined later in the file +* Fixed alpha blending for UI shaders +* Fixed path corners in polygon definitions + +## [2.0.0-preview.10] - 2019-11-19 + +### Fixes + +* Added support for RectMask2D +* Fixed sRGB support for UI shaders +* Fixed unmatched BeginSample/EndSample in GenerateAtlas() + +## [2.0.0-preview.9] - 2019-11-15 + +### Fixes + +* Fixed invalid VectorExpandEdges.shader path + +## [2.0.0-preview.8] - 2019-11-06 + +### Changes + +* Added "uGUI SVGImage" asset type, which sets the proper stencil state for uGUI's masking system + +### Fixes + +* Fixed VectorImage winding order +* Fixed LibTess preprocessor-dependent namespaces + +## [2.0.0-preview.7] - 2019-10-24 + +### Changes + +* Gradient support for strokes + +## [2.0.0-preview.6] - 2019-09-23 + +### Changes + +* Changed default gradient resolution from 128 -> 64 pixels to help batching with UIElements renderer + +### Fixes + +* Using serializable VectorImageVertex (only works on 2019.3b4 and later) + +## [2.0.0-preview.5] - 2019-08-01 + +### Fixes + +* Fixed pivot wrongly computed on textured sprites when SVG origin alignement is selected (case 1172332) +* Added preserve aspect ratio in SVGImage + +## [2.0.0-preview.4] - 2019-07-08 + +### Fixes + +* Fixed ArgumentOutOfRangeException when closing paths with not enough segments +* Fixed textured-sprite import issue after a full project reimport + +## [2.0.0-preview.3] - 2019-06-26 + +### Changes + +* Added a new asset import type (UIElements Vector Image) for upcoming UIElements support in Unity 2019.3. + +### Fixes + +* Fixed 'T' path instruction not computing the proper reflected control point + +## [2.0.0-preview.2] - 2019-06-18 + +### Changes + +There are some breaking changes when going from `1.0.0-preview` to `2.0.0-preview`: + +* The deprecated API have been removed. Most notably, the removal of the `IDrawable` interface. +* The texture atlas layout for the gradient settings was changed. It now stores gradient settings in the first 3 columns of the atlas instead of the first row. This allows for a more efficient atlas packing. If you made a variant of the `Unlit/VectorGradient` shader, you may have to update it. +* The `SVGImporter` will now ignore the root `viewBox` attribute by default. Use the "Only Apply Root ViewBox" viewport option to bring back the old behavior. + +### Fixes + +* Fixed flipYAxis in FillMesh API + +## [1.0.0-preview.26] - 2019-05-01 + +### Fixes + +* Removed unused variable to fix warning + +## [1.0.0-preview.25] - 2019-05-01 + +### Changes + +* Importing SVG from editor code allows local Texture2D references +* URL scheme whitelisting on image tags +* Using next power-of-two texture size, fixes gradient issues on some Android devices + +### Fixes + +* Fixed pivot not being applied on textured sprite assets +* Fixed SVGParser rotation center in transforms + +## [1.0.0-preview.24] - 2019-04-04 + +### Fixes + +* Applying material's color in VectorGradient.shader +* Fixed duplicated points causing issues with polygons +* Added repository information to package.json + +## [1.0.0-preview.23] - 2019-01-04 + +### Changes + +* Deprecating Matrix2D.Rotate in favor of RotateRH and RotateLH +* Added support for gradient fills defined later in the file + +### Fixes + +* Fixed invalid SVG pen position when 'z' command occurs after 'm' + +## [1.0.0-preview.22] - 2018-11-16 + +### Changes + +* Proper support for styling in symbols + +### Fixes + +* Fixed precision issues with dashed strokes +* Fixed modifying node hierarchy while iterating through it +* Fixed CSS data parsing +* Clearing temp render texture when expanding edges +* Fixed instancing for gradient shader + +## [1.0.0-preview.21] - 2018-10-23 + +### Changes + +* Added support for borders (slices) for textured sprites +* SVGImageEditor is now fallback custom editor + +### Fixes + +* Fixed viewport clipping working when viewBox is applied +* Fixed dark outlines when rendering to texture +* Fixed alpha-blending in VectorGradient.shader +* Silenced obsolete warnings because of WWW usage + +## [1.0.0-preview.20] - 2018-09-26 + +### Changes + +* Removed "Per-Axis" texture wrap mode + +### Fixes + +* Fixed sprite value not being set in SVGImage's sprite property + +## [1.0.0-preview.19] - 2018-09-24 + +### Changes + +* Using viewBox for relative coordinates, when available + +### Fixes + +* Fixed issue with gradient user-units when no viewBox is specified + +## [1.0.0-preview.18] - 2018-09-21 + +### Changes + +* Improved texture import editor. Better basic tessellation defaults. +* Enabled GPU instancing, _RendererColor works out-of-the-box +* Made the auto-computed tessellation options less aggressive +* Allowing different width/height when importing to a texture +* Moved external libraries to their own namespaces +* Moved the sprite stats over the preview +* Filling atlas with opaque black to help with SVG sprite picking +* Support for sample count (for import-to-texture) +* Setting DtdProcessing to ignore + +### Fixes + +* Fixed flipped winding order when flipYAxis is false +* Fixed SVGImageEditor for 2018.1 + +## [1.0.0-preview.17] - 2018-09-13 + +### Changes + +* Support for sprite mesh type on textured sprites + +## [1.0.0-preview.16] - 2018-09-13 + +### Changes + +* Node-by-id support +* Added SVGImage for Canvas UI +* Preserve viewport option +* Support for auto-generate physics outline +* Setting Closed=true closes the path connecting the last segment to the first instead of a straight line +* First iteration of "import to texture" feature +* Deprecated Rectangle, Path, Filled and IDrawable. Only Shape remains. +* Improved SVGOrigin and pivot support +* Added support for flipYAxis in FillMesh method +* Multiple object editing improvements + +### Fixes + +* Fixed relative positioning with viewBox +* Fixed elliptical-arc-to error with large sweep angles +* Fixed polygon winding after transform +* Fixed `` always overriding fill/stroke even when not set +* Fixed "ProhibitDtd" obsolete warning on .NET 4.x backend +* Fixed issues with symbols and patterns usage +* Fixed support for empty 'd' elements +* Fixed issue when symbols are defined after `` +* Fixed invalid SVG Origin when Y-axis is fipped +* Fixed sprite editor align/pivot to not interfere with SVG origin value +* Fixed missing Apply() after atlas generation + +## [1.0.0-preview.15] - 2018-07-18 + +### Changes + +* Updated CHANGELOG.md + +## [1.0.0-preview.14] - 2018-07-17 + +### Changes + +* Added QuadraticToCubic helper method + +### Fixes + +* Taking pixels-per-unit into account to compute tessellation settings +* Fixed rgb() color attributes not parsed properly +* Early exit when trying to tessellate paths without enough segments +* Fixed viewbox computation that were lost during tessellation +* Fixed namespace issues with 2018.3+ +* Skip stroke tessellation if the width is 0 + +## [1.0.0-preview.13] - 2018-06-11 + +### Changes + +* Showing imported sprites stats + +### Fixes + +* Elements with display:none are not displayed anymore +* Fixed parse issue when loading an unsupported texture from the image tag + +## [1.0.0-preview.12] - 2018-06-07 + +### Fixes + +* Using culture invariant float parsing +* Fixed import error when using percentage sizes in svg tag + +## [1.0.0-preview.11] - 2018-06-05 + +### Fixes + +* Fixed some precision issues +* More conservative processing of 'none' for 'stroke-dasharray' +* Revert "Fixed handling of 'none' styles" + +## [1.0.0-preview.10] - 2018-05-23 + +### Fixes + +* Adjusting the triangle's winding order after scene tessellation + +## [1.0.0-preview.9] - 2018-05-15 + +### Changes + +* Renamed Third-Party Notices + +### Fixes + +* Fixed handling of 'none' styles + +## [1.0.0-preview.8] - 2018-05-05 + +### Changes + +* Support for multiple SVG editing +* Updated documentation after docs team revision + +## [1.0.0-preview.7] - 2018-04-26 + +### Changes + +* Optimized path for convex shapes + +### Fixes + +* Fixed SVG StreamReader not being closed +* Fixed polyline corners + +## [1.0.0-preview.6] - 2018-04-24 + +### Changes + +* Physics outline fixes and using preview texture for Sprite Editor, when available +* Improved sampling step distance tooltip text +* Removed skin-based animation tools + +## [1.0.0-preview.5] - 2018-04-18 + +### Changes + +* Added Third-Party Notices +* Added MakeArc_MakesArcInClockwiseDirection test + +## [1.0.0-preview.4] - 2018-04-13 + +### Changes + +* MakeArc now returns a BezierPathSegment[] instead of BezierSegment[]. Added BezierSegmentsToPath API. +* Using the new code naming conventions (CamelCase for properties) + +## [1.0.0-preview.3] - 2018-04-09 + +### Changes + +* Exposed BuildRectangleContour API + +## [1.0.0-preview.2] - 2018-04-05 + +### Changes + +* Moved SVGParser to Unity.VectorGraphics namespace + +## [1.0.0-preview.1] - 2018-04-04 + +* Initial release \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/CHANGELOG.md.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/CHANGELOG.md.meta new file mode 100644 index 00000000..808a3ea0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4169a547a111a07429dea777828b9c72 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/LICENSE.md b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/LICENSE.md new file mode 100644 index 00000000..772dbad0 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/LICENSE.md @@ -0,0 +1,5 @@ +com.unity.vectorgraphics copyright © 2020 Unity Technologies ApS + +Licensed under the Unity Companion License for Unity-dependent projects--see [Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). + +Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions. \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/LICENSE.md.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/LICENSE.md.meta new file mode 100644 index 00000000..1d1ec8e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 89ca7bd98c06842498c9fbfe75a037ca +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/README.md b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/README.md new file mode 100644 index 00000000..ba4e36ab --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/README.md @@ -0,0 +1,11 @@ +## Vector Graphics Package + +The Vector Graphics package provides an SVG file importer as well as generic vector graphics APIs. + +The SVG importer follows a subset of the [SVG 1.1 specification](https://www.w3.org/TR/SVG11/). Once an SVG file is imported, the vector data is tesselated into triangles and a sprite is generated. This sprite can then be used by the 2D system. The source for the SVG importer can be found in the `Editor` folder. + +The vector graphics APIs can be used to create and manipulate vector constructs directly in code. Read the [documentation](Documentation~/vectorgraphics.md) to get more information. The source for the vector graphics APIs can be found in the `VectorGraphics` namespace under the `Runtime` folder. + +![Vector Graphics Screenshot](Documentation~/images/screenshot.png) + +Unity version 2018.1 or later is required to use the Vector Graphics package. diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/README.md.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/README.md.meta new file mode 100644 index 00000000..1b802e74 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 584bbb607ab62b648a28feeb52b44f0f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime.meta new file mode 100644 index 00000000..32c42e2e --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe090f91a3e5c5c4c8f0e8895d01cc2b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/Matrix2D.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/Matrix2D.cs new file mode 100644 index 00000000..622d5379 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/Matrix2D.cs @@ -0,0 +1,359 @@ +using System; +using UnityEngine; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + /// A 2x3 transformation matrix used for 2D operations. + public struct Matrix2D + { + // memory layout: + // + // row no (=vertical) + // | 0 1 2 + // ---+------------ + // 0 | m00 m10 0 + // column no 1 | m01 m11 0 + // (=horiz) 2 | m02 m12 1 + + /// The matrix member at (0,0) + public float m00; + /// The matrix member at (1,0) + public float m10; + + /// The matrix member at (0,1) + public float m01; + /// The matrix member at (1,1) + public float m11; + + /// The matrix member at (0,2) + public float m02; + /// The matrix member at (1,2) + public float m12; + + /// Initializes a Matrix2D with column vectors + /// The first column + /// The second column + /// The third column + public Matrix2D(Vector2 column0, Vector2 column1, Vector2 column2) + { + this.m00 = column0.x; this.m01 = column1.x; this.m02 = column2.x; + this.m10 = column0.y; this.m11 = column1.y; this.m12 = column2.y; + } + + /// Access element at [row, column]. + /// The value at [row, column] + public float this[int row, int column] + { + get + { + return this[row + column * 2]; + } + + set + { + this[row + column * 2] = value; + } + } + + /// Access element at sequential index (0..5 inclusive). + /// The value at [index] + public float this[int index] + { + get + { + switch (index) + { + case 0: return m00; + case 1: return m10; + case 2: return m01; + case 3: return m11; + case 4: return m02; + case 5: return m12; + default: + throw new IndexOutOfRangeException("Invalid matrix index!"); + } + } + + set + { + switch (index) + { + case 0: m00 = value; break; + case 1: m10 = value; break; + case 2: m01 = value; break; + case 3: m11 = value; break; + case 4: m02 = value; break; + case 5: m12 = value; break; + + default: + throw new IndexOutOfRangeException("Invalid matrix index!"); + } + } + } + + /// Gets a hashcode of the matrix. + /// Used to allow Matrix3x3s to be used as keys in hash tables. + /// The hashcode of the matrix + public override int GetHashCode() + { + return GetColumn(0).GetHashCode() ^ (GetColumn(1).GetHashCode() << 2) ^ (GetColumn(2).GetHashCode() >> 2); + } + + /// Checks if two matrices are equal. + /// The other matrix to compare with + /// Used to allow Matrix3x3s to be used as keys in hash tables. + /// True when the matrix is equal to "other" + public override bool Equals(object other) + { + if (!(other is Matrix2D)) return false; + + Matrix2D rhs = (Matrix2D)other; + return GetColumn(0).Equals(rhs.GetColumn(0)) + && GetColumn(1).Equals(rhs.GetColumn(1)) + && GetColumn(2).Equals(rhs.GetColumn(2)); + } + + /// Multiplies two matrices. + /// The left hand side matrix of the operation + /// The right hand side matrix of the operation + /// The multiplied matrix + public static Matrix2D operator*(Matrix2D lhs, Matrix2D rhs) + { + Matrix2D res; + res.m00 = lhs.m00 * rhs.m00 + lhs.m01 * rhs.m10; + res.m01 = lhs.m00 * rhs.m01 + lhs.m01 * rhs.m11; + res.m02 = lhs.m00 * rhs.m02 + lhs.m01 * rhs.m12 + lhs.m02; + + res.m10 = lhs.m10 * rhs.m00 + lhs.m11 * rhs.m10; + res.m11 = lhs.m10 * rhs.m01 + lhs.m11 * rhs.m11; + res.m12 = lhs.m10 * rhs.m02 + lhs.m11 * rhs.m12 + lhs.m12; + + return res; + } + + /// Transforms a Vector2 by a matrix. + /// The left hand side matrix of the operation + /// The vector the matrix will be multiplied with + /// The transformed vector + public static Vector2 operator*(Matrix2D lhs, Vector2 vector) + { + Vector2 res; + res.x = lhs.m00 * vector.x + lhs.m01 * vector.y + lhs.m02; + res.y = lhs.m10 * vector.x + lhs.m11 * vector.y + lhs.m12; + return res; + } + + /// Checks if two matrices are equal. + /// The left hand side matrix of the comparison + /// The right hand side matrix of the comparison + /// True if "lhs" and "rhs" are equal, or false otherwise. + public static bool operator==(Matrix2D lhs, Matrix2D rhs) + { + // Returns false in the presence of NaN values. + return lhs.GetColumn(0) == rhs.GetColumn(0) + && lhs.GetColumn(1) == rhs.GetColumn(1) + && lhs.GetColumn(2) == rhs.GetColumn(2); + } + + /// Checks if two matrices are not equal. + /// The left hand side matrix of the comparison + /// The right hand side matrix of the comparison + /// True if "lhs" and "rhs" not are equal, or false otherwise. + public static bool operator!=(Matrix2D lhs, Matrix2D rhs) + { + // Returns true in the presence of NaN values. + return !(lhs == rhs); + } + + /// Gets a column of the matrix. + /// The column index, between 0 and 2 inclusively + /// The column at "index" + public Vector2 GetColumn(int index) + { + switch (index) + { + case 0: return new Vector2(m00, m10); + case 1: return new Vector2(m01, m11); + case 2: return new Vector2(m02, m12); + default: + throw new IndexOutOfRangeException("Invalid column index!"); + } + } + + /// Gets a row of the matrix. + /// The row index, between 0 and 1 inclusively + /// The row at "index" + public Vector3 GetRow(int index) + { + switch (index) + { + case 0: return new Vector3(m00, m01, m02); + case 1: return new Vector3(m10, m11, m12); + default: + throw new IndexOutOfRangeException("Invalid row index!"); + } + } + + /// Sets a column of the matrix. + /// The column index, between 0 and 2 inclusively + /// The column + public void SetColumn(int index, Vector2 column) + { + this[0, index] = column.x; + this[1, index] = column.y; + } + + /// Sets a row of the matrix. + /// The column index, between 0 and 1 inclusively + /// The row + public void SetRow(int index, Vector3 row) + { + this[index, 0] = row.x; + this[index, 1] = row.y; + this[index, 2] = row.z; + } + + /// Transforms a position by this matrix (effectively by 2x3). + /// The point to multiply with this matrix + /// The multiplied point + public Vector2 MultiplyPoint(Vector2 point) + { + Vector2 res; + res.x = this.m00 * point.x + this.m01 * point.y + this.m02; + res.y = this.m10 * point.x + this.m11 * point.y + this.m12; + return res; + } + + /// Transforms a direction by this matrix. + /// The direction to multiply with this matrix + /// The multiplied direction + public Vector2 MultiplyVector(Vector2 vector) + { + Vector2 res; + res.x = this.m00 * vector.x + this.m01 * vector.y; + res.y = this.m10 * vector.x + this.m11 * vector.y; + return res; + } + + /// Computes the inverse of the matrix. + /// The inverse matrix + public Matrix2D Inverse() + { + Matrix2D invMat = new Matrix2D(); + + float det = this[0, 0] * this[1, 1] - this[0, 1] * this[1, 0]; + if (Mathf.Approximately(0.0f, det)) + return zero; + + float invDet = 1.0F / det; + + invMat[0, 0] = this[1, 1] * invDet; + invMat[0, 1] = -this[0, 1] * invDet; + invMat[1, 0] = -this[1, 0] * invDet; + invMat[1, 1] = this[0, 0] * invDet; + + // Do the translation part + invMat[0, 2] = -(this[0, 2] * invMat[0, 0] + this[1, 2] * invMat[0, 1]); + invMat[1, 2] = -(this[0, 2] * invMat[1, 0] + this[1, 2] * invMat[1, 1]); + + return invMat; + } + + /// Creates a scaling matrix. + /// The scaling vector + /// The scaling matrix + public static Matrix2D Scale(Vector2 vector) + { + Matrix2D m; + m.m00 = vector.x; m.m01 = 0F; m.m02 = 0F; + m.m10 = 0F; m.m11 = vector.y; m.m12 = 0F; + return m; + } + + /// Creates a translation matrix. + /// The translation vector + /// The translation matrix + public static Matrix2D Translate(Vector2 vector) + { + Matrix2D m; + m.m00 = 1F; m.m01 = 0F; m.m02 = vector.x; + m.m10 = 0F; m.m11 = 1F; m.m12 = vector.y; + return m; + } + + /// Creates a right-hand side rotation matrix. + /// The rotation angle, in radians + /// The rotation matrix + public static Matrix2D RotateRH(float angleRadians) + { + return RotateLH(-angleRadians); + } + + /// Creates a left-hand side rotation matrix. + /// The rotation angle, in radians + /// The rotation matrix + public static Matrix2D RotateLH(float angleRadians) + { + // No SinCos? I hope the compiler optimizes this + float s = Mathf.Sin(angleRadians); + float c = Mathf.Cos(angleRadians); + + Matrix2D m; + m.m00 = c; m.m10 = -s; + m.m01 = s; m.m11 = c; + m.m02 = 0.0F; m.m12 = 0.0F; + return m; + } + + /// Creates a skew matrix on X. + /// The skew angle, in radians + /// The skew matrix + public static Matrix2D SkewX(float angleRadians) + { + Matrix2D m; + m.m00 = 1.0f; m.m01 = Mathf.Tan(angleRadians); m.m02 = 0F; + m.m10 = 0F; m.m11 = 1.0f; m.m12 = 0F; + return m; + } + + /// Creates a skew matrix on U. + /// The skew angle, in radians + /// The skew matrix + public static Matrix2D SkewY(float angleRadians) + { + Matrix2D m; + m.m00 = 1.0f; m.m01 = 0F; m.m02 = 0F; + m.m10 = Mathf.Tan(angleRadians); m.m11 = 1.0f; m.m12 = 0F; + return m; + } + + static readonly Matrix2D zeroMatrix = new Matrix2D(new Vector2(0, 0), new Vector2(0, 0), new Vector2(0, 0)); + + /// Returns a matrix with all elements set to zero (read-only). + /// The zero matrix + public static Matrix2D zero { get { return zeroMatrix; } } + + static readonly Matrix2D identityMatrix = new Matrix2D(new Vector2(1, 0), new Vector2(0, 1), new Vector2(0, 0)); + + /// Returns the identity matrix (read-only). + /// The identity matrix + public static Matrix2D identity { get { return identityMatrix; } } + + /// Returns a string representation of the matrix. + /// The matrix string representation + public override string ToString() + { + return string.Format("{0:F5}\t{1:F5}\t{2:F5}\n{3:F5}\t{4:F5}\t{5:F5}\n", m00, m01, m02, m10, m11, m12); + } + + /// Returns a string representation of the matrix using a format. + /// The format to be used for the matrix components + /// The matrix string representation + public string ToString(string format) + { + return string.Format("{0}\t{1}\t{2}\n{3}\t{4}\t{5}\n", + m00.ToString(format), m01.ToString(format), m02.ToString(format), + m10.ToString(format), m11.ToString(format), m12.ToString(format)); + } + } +} //namespace diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/Matrix2D.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/Matrix2D.cs.meta new file mode 100644 index 00000000..9aa42a30 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/Matrix2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 600ae451aa325bb479e48e4f91cf17e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGParser.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGParser.cs new file mode 100644 index 00000000..ec06fbcf --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGParser.cs @@ -0,0 +1,3334 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Globalization; +using System.Xml; +using System.Linq; +using UnityEngine; +using UnityEngine.Networking; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + /// An enum describing the viewport options to use when importing the SVG document. + public enum ViewportOptions + { + /// Don't preserve the viewport defined in the SVG document. + DontPreserve, + + /// Preserves the viewport defined in the SVG document. + PreserveViewport, + + /// Applies the root view-box defined in the SVG document (if any). + /// + /// This option will rescale the SVG asset to a unit size if a view-box is defined in the SVG document. + /// If no view-box is defined, this option will have the same behavior as `DontPreserve`. + /// It has limited use and is only available for legacy reasons. + /// + OnlyApplyRootViewBox + } + + /// Reads an SVG document and builds a vector scene. + public class SVGParser + { + /// A structure containing the SVG scene data. + public struct SceneInfo + { + internal SceneInfo(Scene scene, Rect sceneViewport, Dictionary nodeOpacities, Dictionary nodeIDs) + { + Scene = scene; + SceneViewport = sceneViewport; + NodeOpacity = nodeOpacities; + NodeIDs = nodeIDs; + } + + /// The vector scene. + public Scene Scene { get; } + + /// The position and size of the SVG document + public Rect SceneViewport { get; } + + /// A dictionary containing the opacity of the scene nodes. + public Dictionary NodeOpacity { get; } + + /// A dictionary containing the scene node for a given ID + public Dictionary NodeIDs { get; } + } + + /// Kicks off an SVG file import. + /// The reader object containing the SVG file data + /// The DPI of the SVG file, or 0 to use the device's DPI + /// How many SVG units fit in a Unity unit + /// The default with of the viewport, may be 0 + /// The default height of the viewport, may be 0 + /// Whether the vector scene should be clipped by the SVG document's viewport + /// A SceneInfo object containing the scene data + public static SceneInfo ImportSVG(TextReader textReader, float dpi = 0.0f, float pixelsPerUnit = 1.0f, int windowWidth = 0, int windowHeight = 0, bool clipViewport = false) + { + var viewportOptions = clipViewport ? ViewportOptions.PreserveViewport : ViewportOptions.DontPreserve; + return ImportSVG(textReader, viewportOptions, dpi, pixelsPerUnit, windowWidth, windowHeight); + } + + /// Kicks off an SVG file import. + /// The reader object containing the SVG file data + /// The viewport options to use + /// The DPI of the SVG file, or 0 to use the device's DPI + /// How many SVG units fit in a Unity unit + /// The default with of the viewport, may be 0 + /// The default height of the viewport, may be 0 + /// A SceneInfo object containing the scene data + public static SceneInfo ImportSVG(TextReader textReader, ViewportOptions viewportOptions, float dpi = 0.0f, float pixelsPerUnit = 1.0f, int windowWidth = 0, int windowHeight = 0) + { + var scene = new Scene(); + var settings = new XmlReaderSettings(); + settings.IgnoreComments = true; + settings.IgnoreProcessingInstructions = true; + settings.IgnoreWhitespace = true; + + // Validation and resolving can reach through HTTP to fetch and validate against schemas/DTDs, which could take ages +#if (NET_STANDARD_2_0 || NET_4_6) + settings.DtdProcessing = System.Xml.DtdProcessing.Ignore; +#else + settings.ProhibitDtd = false; +#endif + settings.ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.None; + settings.ValidationType = ValidationType.None; + settings.XmlResolver = null; + + if (dpi == 0.0f) + dpi = Screen.dpi; + + Dictionary nodeOpacities; + Dictionary nodeIDs; + + SVGDocument doc; + using (var reader = XmlReader.Create(textReader, settings)) + { + bool applyRootViewBox = + (viewportOptions == ViewportOptions.PreserveViewport) || + (viewportOptions == ViewportOptions.OnlyApplyRootViewBox); + doc = new SVGDocument(reader, dpi, scene, windowWidth, windowHeight, applyRootViewBox); + doc.Import(); + nodeOpacities = doc.NodeOpacities; + nodeIDs = doc.NodeIDs; + } + + float scale = 1.0f / pixelsPerUnit; + if ((scale != 1.0f) && (scene != null) && (scene.Root != null)) + scene.Root.Transform = scene.Root.Transform * Matrix2D.Scale(new Vector2(scale, scale)); + + if ((viewportOptions == ViewportOptions.PreserveViewport) && (scene != null) && (scene.Root != null)) + { + // Only add clipper if the scene isn't entirely contained in the viewport + var sceneBounds = VectorUtils.SceneNodeBounds(scene.Root); + if (!doc.sceneViewport.Contains(sceneBounds.min) || !doc.sceneViewport.Contains(sceneBounds.max)) + { + var rectClip = new Shape(); + VectorUtils.MakeRectangleShape(rectClip, doc.sceneViewport); + + // We cannot add the clipper directly on scene.Root since it may have a viewbox transform applied. + // The simplest is to replace the root node with the new "clipped" one, then the clipping + // rectangle can stay in the viewport space (no need to take the viewbox transform into account). + scene.Root = new SceneNode() + { + Children = new List { scene.Root }, + Clipper = new SceneNode() { Shapes = new List() { rectClip } } + }; + } + } + + return new SceneInfo(scene, doc.sceneViewport, nodeOpacities, nodeIDs); + } + } + + internal class XmlReaderIterator + { + internal class Node + { + public Node(XmlReader reader) { this.reader = reader; name = reader.Name; depth = reader.Depth; } + public string Name { get { return name; } } + public string this[string attrib] { get { return reader.GetAttribute(attrib); } } + public SVGPropertySheet GetAttributes() + { + var atts = new SVGPropertySheet(); + for (int i = 0; i < reader.AttributeCount; ++i) + { + reader.MoveToAttribute(i); + atts[reader.Name] = reader.Value; + } + reader.MoveToElement(); + return atts; + } + public SVGFormatException GetException(string message) { return new SVGFormatException(reader, message); } + public SVGFormatException GetUnsupportedAttribValException(string attrib) + { + return new SVGFormatException(reader, "Value '" + this[attrib] + "' is invalid for attribute '" + attrib + "'"); + } + + public int Depth { get { return depth; } } + XmlReader reader; + int depth; + string name; + } + + public XmlReaderIterator(XmlReader reader) { this.reader = reader; } + public bool GoToRoot(string tagName) { return reader.ReadToFollowing(tagName) && reader.Depth == 0; } + public Node VisitCurrent() { currentElementVisited = true; return new Node(reader); } + public bool IsEmptyElement() { return reader.IsEmptyElement; } + + public bool GoToNextChild(Node node) + { + if (!currentElementVisited) + return reader.Depth == node.Depth + 1; + + reader.Read(); + while ((reader.NodeType != XmlNodeType.None) && (reader.NodeType != XmlNodeType.Element)) + reader.Read(); + if (reader.NodeType != XmlNodeType.Element) + return false; + + currentElementVisited = false; + return reader.Depth == node.Depth + 1; + } + + public void SkipCurrentChildTree(Node node) + { + while (GoToNextChild(node)) + SkipCurrentChildTree(VisitCurrent()); + } + + public string ReadTextWithinElement() + { + if (reader.IsEmptyElement) + return ""; + + var text = ""; + while (reader.Read() && reader.NodeType != XmlNodeType.EndElement) + text += reader.Value; + + return text; + } + + XmlReader reader; + bool currentElementVisited; + } + + internal class SVGFormatException : Exception + { + public SVGFormatException() {} + public SVGFormatException(string message) : base(ComposeMessage(null, message)) {} + public SVGFormatException(XmlReader reader, string message) : base(ComposeMessage(reader, message)) {} + + public static SVGFormatException StackError { get { return new SVGFormatException("Vector scene construction mismatch"); } } + + static string ComposeMessage(XmlReader reader, string message) + { + IXmlLineInfo li = reader as IXmlLineInfo; + if (li != null) + return "SVG Error (line " + li.LineNumber + ", character " + li.LinePosition + "): " + message; + return "SVG Error: " + message; + } + } + + internal class SVGDictionary : Dictionary {} + internal class SVGPostponedFills : Dictionary { } + + internal class SVGDocument + { + public SVGDocument(XmlReader docReader, float dpi, Scene scene, int windowWidth, int windowHeight, bool applyRootViewBox) + { + allElems = new ElemHandler[] + { circle, defs, ellipse, g, image, line, linearGradient, path, polygon, polyline, radialGradient, clipPath, pattern, mask, rect, symbol, use, style }; + + // These elements excluded below should not be immediatelly part of the hierarchy and can only be referenced + elemsToAddToHierarchy = new HashSet(new ElemHandler[] + { circle, /*defs,*/ ellipse, g, image, line, path, polygon, polyline, rect, /*symbol,*/ svg, use }); + + this.docReader = new XmlReaderIterator(docReader); + this.scene = scene; + this.dpiScale = dpi / 90.0f; // SVG specs assume 90DPI but this machine might use something else + this.windowWidth = windowWidth; + this.windowHeight = windowHeight; + this.applyRootViewBox = applyRootViewBox; + this.svgObjects[StockBlackNonZeroFillName] = new SolidFill() { Color = new Color(0, 0, 0), Mode = FillMode.NonZero }; + this.svgObjects[StockBlackOddEvenFillName] = new SolidFill() { Color = new Color(0, 0, 0), Mode = FillMode.OddEven }; + } + + public void Import() + { + if (scene == null) throw new ArgumentNullException(); + if (!docReader.GoToRoot("svg")) + throw new SVGFormatException("Document doesn't have 'svg' root"); + + currentContainerSize.Push(new Vector2(windowWidth, windowHeight)); + + svg(); + + currentContainerSize.Pop(); + if (currentContainerSize.Count > 0) + throw SVGFormatException.StackError; + + PostProcess(scene.Root); + RemoveInvisibleNodes(); + } + + public Dictionary NodeOpacities { get { return nodeOpacity; } } + public Dictionary NodeIDs { get { return nodeIDs; } } + + internal const float SVGLengthFactor = 1.41421356f; // Used when calculating relative lengths. See http://www.w3.org/TR/SVG/coords.html#Units + static internal string StockBlackNonZeroFillName { get { return "unity_internal_black_nz"; } } + static internal string StockBlackOddEvenFillName { get { return "unity_internal_black_oe"; } } + + void ParseChildren(XmlReaderIterator.Node node, string nodeName) + { + var sceneNode = currentSceneNode.Peek(); + + var supportedChildren = subTags[nodeName]; + while (docReader.GoToNextChild(node)) + { + var child = docReader.VisitCurrent(); + + ElemHandler handler; + if (!supportedChildren.TryGetValue(child.Name, out handler)) + { + System.Diagnostics.Debug.WriteLine("Skipping over unsupported child (" + child.Name + ") of a (" + node.Name + ")"); + docReader.SkipCurrentChildTree(child); + continue; + } + + bool addToSceneHierarchy = elemsToAddToHierarchy.Contains(handler); + SceneNode childVectorNode = null; + if (addToSceneHierarchy) + { + if (sceneNode.Children == null) + sceneNode.Children = new List(); + childVectorNode = new SceneNode(); + nodeGlobalSceneState[childVectorNode] = new NodeGlobalSceneState() { ContainerSize = currentContainerSize.Peek() }; + sceneNode.Children.Add(childVectorNode); + currentSceneNode.Push(childVectorNode); + } + + styles.PushNode(child); + + if (childVectorNode != null) + { + styles.SaveLayerForSceneNode(childVectorNode); + if (styles.Evaluate("display") == "none") + invisibleNodes.Add(new NodeWithParent() { node = childVectorNode, parent = sceneNode }); + } + + handler(); + ParseChildren(child, child.Name); // Recurse + + styles.PopNode(); + + if (addToSceneHierarchy && currentSceneNode.Pop() != childVectorNode) + throw SVGFormatException.StackError; + } + } + + #region Tag handling + void circle() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + var fill = SVGAttribParser.ParseFill(node, svgObjects, postponedFills, styles); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(node, out strokeCorner, out strokeEnding); + + float cx = AttribLengthVal(node, "cx", 0.0f, DimType.Width); + float cy = AttribLengthVal(node, "cy", 0.0f, DimType.Height); + float r = AttribLengthVal(node, "r", 0.0f, DimType.Length); + + var circle = new Shape(); + VectorUtils.MakeCircleShape(circle, new Vector2(cx, cy), r); + circle.PathProps = new PathProperties() { Stroke = stroke, Head = strokeEnding, Tail = strokeEnding, Corners = strokeCorner }; + circle.Fill = fill; + + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(circle); + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void defs() + { + var node = docReader.VisitCurrent(); + var sceneNode = new SceneNode(); // A new scene node instead of one precreated for us + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, allElems); + + currentSceneNode.Push(sceneNode); + ParseChildren(node, node.Name); + if (currentSceneNode.Pop() != sceneNode) + throw SVGFormatException.StackError; + } + + void ellipse() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + var fill = SVGAttribParser.ParseFill(node, svgObjects, postponedFills, styles); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(node, out strokeCorner, out strokeEnding); + + float cx = AttribLengthVal(node, "cx", 0.0f, DimType.Width); + float cy = AttribLengthVal(node, "cy", 0.0f, DimType.Height); + float rx = AttribLengthVal(node, "rx", 0.0f, DimType.Length); + float ry = AttribLengthVal(node, "ry", 0.0f, DimType.Length); + + var ellipse = new Shape(); + VectorUtils.MakeEllipseShape(ellipse, new Vector2(cx, cy), rx, ry); + ellipse.PathProps = new PathProperties() { Stroke = stroke, Corners = strokeCorner, Head = strokeEnding, Tail = strokeEnding }; + ellipse.Fill = fill; + + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(ellipse); + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void g() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, allElems); + } + + void image() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + // Try to get the referenced image first, if we fail, we just ignore the whole thing + var url = node["xlink:href"]; + if (url != null) + { + var textureFill = new TextureFill(); + textureFill.Mode = FillMode.NonZero; + textureFill.Addressing = AddressMode.Clamp; + + var lowercaseURL = url.ToLower(); + if (lowercaseURL.StartsWith("data:")) + { + textureFill.Texture = DecodeTextureData(url); + } + else + { + if (!lowercaseURL.Contains("://")) + { + #if UNITY_EDITOR + textureFill.Texture = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/" + url); + #endif + } + else if (lowercaseURL.StartsWith("http://") || lowercaseURL.StartsWith("https://")) + { + #pragma warning disable 618 + // WWW is obsolete (replaced with UnityWebRequest), but this is the class that works best + // with editor code. We will continue to use WWW until UnityWebRequest works better in an editor + // environment. + using (WWW www = new WWW(url)) + { + while (www.keepWaiting) + System.Threading.Thread.Sleep(10); // Progress bar please... + textureFill.Texture = www.texture; + } + #pragma warning restore 618 + } + else + { + Debug.LogWarning("Unsupported URL scheme for (only http/https is supported): " + url); + } + } + + if (textureFill.Texture != null) + { + // Fills and strokes don't seem to apply to image despite what the specs say + // All browsers and editing tools seem to ignore them, so we'll just do as well + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + + var viewPort = ParseViewport(node, sceneNode, currentContainerSize.Peek()); + sceneNode.Transform = sceneNode.Transform * Matrix2D.Translate(viewPort.position); + var viewBoxInfo = new ViewBoxInfo(); + viewBoxInfo.ViewBox = new Rect(0, 0, textureFill.Texture.width, textureFill.Texture.height); + ParseViewBoxAspectRatio(node, ref viewBoxInfo); + ApplyViewBox(sceneNode, viewBoxInfo, viewPort); + + var rect = new Shape(); + VectorUtils.MakeRectangleShape(rect, new Rect(0, 0, textureFill.Texture.width, textureFill.Texture.height)); + rect.Fill = textureFill; + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(rect); + + ParseClipAndMask(node, sceneNode); + } + } + + // Resolve any previous node that was referencing this image + string id = node["id"]; + if (!string.IsNullOrEmpty(id)) + { + List refList; + if (postponedSymbolData.TryGetValue(id, out refList)) + { + foreach (var refData in refList) + ResolveReferencedNode(sceneNode, refData, true); + } + } + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void line() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(node, out strokeCorner, out strokeEnding); + + float x1 = AttribLengthVal(node, "x1", 0.0f, DimType.Width); + float y1 = AttribLengthVal(node, "y1", 0.0f, DimType.Height); + float x2 = AttribLengthVal(node, "x2", 0.0f, DimType.Width); + float y2 = AttribLengthVal(node, "y2", 0.0f, DimType.Height); + + var path = new Shape(); + path.PathProps = new PathProperties() { Stroke = stroke, Head = strokeEnding, Tail = strokeEnding }; + path.Contours = new BezierContour[] { + new BezierContour() { Segments = VectorUtils.BezierSegmentToPath(VectorUtils.MakeLine(new Vector2(x1, y1), new Vector2(x2, y2))) } + }; + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(path); + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void linearGradient() + { + var node = docReader.VisitCurrent(); + + var link = node["xlink:href"]; + var refFill = SVGAttribParser.ParseRelativeRef(link, svgObjects) as GradientFill; + var refFillData = refFill != null ? gradientExInfo[refFill] as LinearGradientExData : null; + + bool relativeToWorld = refFillData != null ? refFillData.WorldRelative : false; + switch (node["gradientUnits"]) + { + case null: + break; + + case "objectBoundingBox": + relativeToWorld = false; + break; + + case "userSpaceOnUse": + relativeToWorld = true; + break; + + default: + throw node.GetUnsupportedAttribValException("gradientUnits"); + } + + AddressMode addressing = refFill != null ? refFill.Addressing : AddressMode.Clamp; + switch (node["spreadMethod"]) + { + case null: + break; + + case "pad": + addressing = AddressMode.Clamp; + break; + + case "reflect": + addressing = AddressMode.Mirror; + break; + + case "repeat": + addressing = AddressMode.Wrap; + break; + + default: + throw node.GetUnsupportedAttribValException("spreadMethod"); + } + + var gradientTransform = SVGAttribParser.ParseTransform(node, "gradientTransform"); + + GradientFill fill = CloneGradientFill(refFill); + if (fill == null) + fill = new GradientFill() { Addressing = addressing, Type = GradientFillType.Linear }; + + LinearGradientExData fillExData = new LinearGradientExData() { WorldRelative = relativeToWorld, FillTransform = gradientTransform }; + gradientExInfo[fill] = fillExData; + + // Fills are defined outside of a shape scope, so we can't resolve relative coordinates here. + // We defer this entire operation to AdjustFills pass, but we still do value validation here + // nonetheless to give meaningful error messages to the user if any. + currentContainerSize.Push(Vector2.one); + + fillExData.X1 = node["x1"]; + fillExData.Y1 = node["y1"]; + fillExData.X2 = node["x2"]; + fillExData.Y2 = node["y2"]; + + // The calls below are ineffective but they validate the inputs and throw an error if wrong values are specified, so don't remove them + AttribLengthVal(fillExData.X1, node, "x1", 0.0f, DimType.Width); + AttribLengthVal(fillExData.Y1, node, "y1", 0.0f, DimType.Height); + AttribLengthVal(fillExData.X2, node, "x2", 1.0f, DimType.Width); + AttribLengthVal(fillExData.Y2, node, "y2", 0.0f, DimType.Height); + + currentContainerSize.Pop(); + currentGradientFill = fill; // Children stops will register to this fill now + currentGradientId = node["id"]; + currentGradientLink = SVGAttribParser.CleanIri(link); + + if (!string.IsNullOrEmpty(link) && !svgObjects.ContainsKey(link)) + { + // Reference may be defined later in the file. Save for postponed processing. + if (!postponedStopData.ContainsKey(currentGradientLink)) + postponedStopData.Add(currentGradientLink, new List()); + postponedStopData[currentGradientLink].Add(new PostponedStopData() { fill = fill }); + } + + AddToSVGDictionaryIfPossible(node, fill); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, stop); + } + + void path() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + var fill = SVGAttribParser.ParseFill(node, svgObjects, postponedFills, styles); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(node, out strokeCorner, out strokeEnding); + var pathProps = new PathProperties() { Stroke = stroke, Corners = strokeCorner, Head = strokeEnding, Tail = strokeEnding }; + + // A path may have 1 or more sub paths. Each for us is an individual vector path. + var contours = SVGAttribParser.ParsePath(node); + if ((contours != null) && (contours.Count > 0)) + { + //float pathLength = AttribFloatVal(node, "pathLength"); // This is useful for animation purposes mostly + + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(new Shape() { Contours = contours.ToArray(), Fill = fill, PathProps = pathProps }); + + AddToSVGDictionaryIfPossible(node, sceneNode); + } + + ParseClipAndMask(node, sceneNode); + + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void polygon() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + var fill = SVGAttribParser.ParseFill(node, svgObjects, postponedFills, styles); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(node, out strokeCorner, out strokeEnding); + + var pointsAttribVal = node["points"]; + var pointsString = (pointsAttribVal != null) ? pointsAttribVal.Split(whiteSpaceNumberChars, StringSplitOptions.RemoveEmptyEntries) : null; + if (pointsString != null) + { + if ((pointsString.Length & 1) == 1) + throw node.GetException("polygon 'points' must specify x,y for each coordinate"); + if (pointsString.Length < 4) + throw node.GetException("polygon 'points' do not even specify one triangle"); + + var pathProps = new PathProperties() { Stroke = stroke, Corners = strokeCorner, Head = strokeEnding, Tail = strokeEnding }; + var contour = new BezierContour() { Closed = true }; + var lastPoint = new Vector2( + AttribLengthVal(pointsString[0], node, "points", 0.0f, DimType.Width), + AttribLengthVal(pointsString[1], node, "points", 0.0f, DimType.Height)); + int maxSegments = pointsString.Length / 2; + var segments = new List(maxSegments); + for (int i = 1; i < maxSegments; i++) + { + var newPoint = new Vector2( + AttribLengthVal(pointsString[i * 2 + 0], node, "points", 0.0f, DimType.Width), + AttribLengthVal(pointsString[i * 2 + 1], node, "points", 0.0f, DimType.Height)); + if (newPoint == lastPoint) + continue; + var seg = VectorUtils.MakeLine(lastPoint, newPoint); + segments.Add(new BezierPathSegment() { P0 = seg.P0, P1 = seg.P1, P2 = seg.P2 }); + lastPoint = newPoint; + } + + if (segments.Count > 0) + { + var connect = VectorUtils.MakeLine(lastPoint, segments[0].P0); + segments.Add(new BezierPathSegment() { P0 = connect.P0, P1 = connect.P1, P2 = connect.P2 }); + contour.Segments = segments.ToArray(); + + var shape = new Shape() { Contours = new BezierContour[] { contour }, PathProps = pathProps, Fill = fill }; + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(shape); + } + } + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void polyline() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + var fill = SVGAttribParser.ParseFill(node, svgObjects, postponedFills, styles); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(node, out strokeCorner, out strokeEnding); + + var pointsAttribVal = node["points"]; + var pointsString = (pointsAttribVal != null) ? pointsAttribVal.Split(whiteSpaceNumberChars, StringSplitOptions.RemoveEmptyEntries) : null; + if (pointsString != null) + { + if ((pointsString.Length & 1) == 1) + throw node.GetException("polyline 'points' must specify x,y for each coordinate"); + if (pointsString.Length < 4) + throw node.GetException("polyline 'points' do not even specify one line"); + + var shape = new Shape() { Fill = fill }; + shape.PathProps = new PathProperties() { Stroke = stroke, Corners = strokeCorner, Head = strokeEnding, Tail = strokeEnding }; + var lastPoint = new Vector2( + AttribLengthVal(pointsString[0], node, "points", 0.0f, DimType.Width), + AttribLengthVal(pointsString[1], node, "points", 0.0f, DimType.Height)); + int maxSegments = pointsString.Length / 2; + var segments = new List(maxSegments); + for (int i = 1; i < maxSegments; i++) + { + var newPoint = new Vector2( + AttribLengthVal(pointsString[i * 2 + 0], node, "points", 0.0f, DimType.Width), + AttribLengthVal(pointsString[i * 2 + 1], node, "points", 0.0f, DimType.Height)); + if (newPoint == lastPoint) + continue; + var seg = VectorUtils.MakeLine(lastPoint, newPoint); + segments.Add(new BezierPathSegment() { P0 = seg.P0, P1 = seg.P1, P2 = seg.P2 }); + lastPoint = newPoint; + } + if (segments.Count > 0 ) + { + var connect = VectorUtils.MakeLine(lastPoint, segments[0].P0); + segments.Add(new BezierPathSegment() { P0 = connect.P0, P1 = connect.P1, P2 = connect.P2 }); + shape.Contours = new BezierContour[] { + new BezierContour() { Segments = segments.ToArray() } + }; + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(shape); + } + } + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void radialGradient() + { + var node = docReader.VisitCurrent(); + + var link = node["xlink:href"]; + var refFill = SVGAttribParser.ParseRelativeRef(link, svgObjects) as GradientFill; + var refFillData = refFill != null ? gradientExInfo[refFill] as RadialGradientExData : null; + + bool relativeToWorld = refFillData != null ? refFillData.WorldRelative : false; + switch (node["gradientUnits"]) + { + case null: + break; + + case "objectBoundingBox": + relativeToWorld = false; + break; + + case "userSpaceOnUse": + relativeToWorld = true; + break; + + default: + throw node.GetUnsupportedAttribValException("gradientUnits"); + } + + AddressMode addressing = refFill != null ? refFill.Addressing : AddressMode.Clamp; + switch (node["spreadMethod"]) + { + case null: + break; + + case "pad": + addressing = AddressMode.Clamp; + break; + + case "reflect": + addressing = AddressMode.Mirror; + break; + + case "repeat": + addressing = AddressMode.Wrap; + break; + + default: + throw node.GetUnsupportedAttribValException("spreadMethod"); + } + + var gradientTransform = SVGAttribParser.ParseTransform(node, "gradientTransform"); + + GradientFill fill = CloneGradientFill(refFill); + if (fill == null) + fill = new GradientFill() { Addressing = addressing, Type = GradientFillType.Radial }; + + RadialGradientExData fillExData = new RadialGradientExData() { WorldRelative = relativeToWorld, FillTransform = gradientTransform }; + gradientExInfo[fill] = fillExData; + + // Fills are defined outside of a shape scope, so we can't resolve relative coordinates here. + // We defer this entire operation to AdjustFills pass, but we still do value validation here + // nonetheless to give meaningful error messages to the user if any. + currentContainerSize.Push(Vector2.one); + + fillExData.Cx = node["cx"]; + fillExData.Cy = node["cy"]; + fillExData.Fx = node["fx"]; + fillExData.Fy = node["fy"]; + fillExData.R = node["r"]; + + // The calls below are ineffective but they validate the inputs and throw an error if wrong values are specified, so don't remove them + AttribLengthVal(fillExData.Cx, node, "cx", 0.5f, DimType.Width); + AttribLengthVal(fillExData.Cy, node, "cy", 0.5f, DimType.Height); + AttribLengthVal(fillExData.Fx, node, "fx", 0.5f, DimType.Width); + AttribLengthVal(fillExData.Fy, node, "fy", 0.5f, DimType.Height); + AttribLengthVal(fillExData.R, node, "r", 0.5f, DimType.Length); + + currentContainerSize.Pop(); + currentGradientFill = fill; // Children stops will register to this fill now + currentGradientId = node["id"]; + currentGradientLink = SVGAttribParser.CleanIri(link); + + if (!string.IsNullOrEmpty(link) && !svgObjects.ContainsKey(link)) + { + // Reference may be defined later in the file. Save for postponed processing. + if (!postponedStopData.ContainsKey(currentGradientLink)) + postponedStopData.Add(currentGradientLink, new List()); + postponedStopData[currentGradientLink].Add(new PostponedStopData() { fill = fill }); + } + + AddToSVGDictionaryIfPossible(node, fill); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, stop); + } + + void clipPath() + { + var node = docReader.VisitCurrent(); + string id = node["id"]; + + // A new scene node instead of one precreated for us + var clipRoot = new SceneNode() { + Transform = SVGAttribParser.ParseTransform(node) + }; + + bool relativeToWorld; + switch (node["clipPathUnits"]) + { + case null: + case "userSpaceOnUse": + relativeToWorld = true; + break; + + case "objectBoundingBox": + relativeToWorld = false; + break; + + default: + throw node.GetUnsupportedAttribValException("clipPathUnits"); + } + + clipData[clipRoot] = new ClipData() { WorldRelative = relativeToWorld }; + + AddToSVGDictionaryIfPossible(node, clipRoot); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, allElems); + + currentSceneNode.Push(clipRoot); + ParseChildren(node, node.Name); + if (currentSceneNode.Pop() != clipRoot) + throw SVGFormatException.StackError; + + // Resolve any previous node that was referencing this clipping path + if (!string.IsNullOrEmpty(id)) + { + List clips; + if (postponedClip.TryGetValue(id, out clips)) + { + foreach (var clip in clips) + ApplyClipper(clipRoot, clip.node, relativeToWorld); + } + } + + } + + void pattern() + { + var node = docReader.VisitCurrent(); + + // A new scene node instead of one precreated for us + var patternRoot = new SceneNode() { + Transform = Matrix2D.identity + }; + + bool relativeToWorld = false; + switch (node["patternUnits"]) + { + case null: + case "objectBoundingBox": + relativeToWorld = false; + break; + + case "userSpaceOnUse": + relativeToWorld = true; + break; + + default: + throw node.GetUnsupportedAttribValException("patternUnits"); + } + + bool contentRelativeToWorld = true; + switch (node["patternContentUnits"]) + { + case null: + case "userSpaceOnUse": + contentRelativeToWorld = true; + break; + + case "objectBoundingBox": + contentRelativeToWorld = false; + break; + + default: + throw node.GetUnsupportedAttribValException("patternContentUnits"); + } + + var x = AttribLengthVal(node["x"], node, "x", 0.0f, DimType.Width); + var y = AttribLengthVal(node["y"], node, "y", 0.0f, DimType.Height); + var w = AttribLengthVal(node["width"], node, "width", 0.0f, DimType.Width); + var h = AttribLengthVal(node["height"], node, "height", 0.0f, DimType.Height); + + var patternTransform = SVGAttribParser.ParseTransform(node, "patternTransform"); + + patternData[patternRoot] = new PatternData() { + WorldRelative = relativeToWorld, + ContentWorldRelative = contentRelativeToWorld, + PatternTransform = patternTransform + }; + + var fill = new PatternFill() { + Pattern = patternRoot, + Rect = new Rect(x, y, w, h) + }; + + AddToSVGDictionaryIfPossible(node, fill); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, allElems); + + currentSceneNode.Push(patternRoot); + ParseChildren(node, node.Name); + if (currentSceneNode.Pop() != patternRoot) + throw SVGFormatException.StackError; + } + + void mask() + { + var node = docReader.VisitCurrent(); + + // A new scene node instead of one precreated for us + var maskRoot = new SceneNode() { + Transform = Matrix2D.identity + }; + + bool relativeToWorld; + switch (node["maskUnits"]) + { + case null: + case "userSpaceOnUse": + relativeToWorld = true; + break; + + case "objectBoundingBox": + relativeToWorld = false; + break; + + default: + throw node.GetUnsupportedAttribValException("maskUnits"); + } + + bool contentRelativeToWorld; + switch (node["maskContentUnits"]) + { + case null: + case "userSpaceOnUse": + contentRelativeToWorld = true; + break; + + case "objectBoundingBox": + contentRelativeToWorld = false; + break; + + default: + throw node.GetUnsupportedAttribValException("maskContentUnits"); + } + + maskData[maskRoot] = new MaskData() { + WorldRelative = relativeToWorld, + ContentWorldRelative = contentRelativeToWorld, + }; + + AddToSVGDictionaryIfPossible(node, maskRoot); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, allElems); + + currentSceneNode.Push(maskRoot); + ParseChildren(node, node.Name); + if (currentSceneNode.Pop() != maskRoot) + throw SVGFormatException.StackError; + } + + void rect() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + var fill = SVGAttribParser.ParseFill(node, svgObjects, postponedFills, styles); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(node, out strokeCorner, out strokeEnding); + + float x = AttribLengthVal(node, "x", 0.0f, DimType.Width); + float y = AttribLengthVal(node, "y", 0.0f, DimType.Height); + float rx = AttribLengthVal(node, "rx", -1.0f, DimType.Length); + float ry = AttribLengthVal(node, "ry", -1.0f, DimType.Length); + float width = AttribLengthVal(node, "width", 0.0f, DimType.Length); + float height = AttribLengthVal(node, "height", 0.0f, DimType.Length); + + if ((rx < 0.0f) && (ry >= 0.0f)) + rx = ry; + else if ((ry < 0.0f) && (rx >= 0.0f)) + ry = rx; + else if ((ry < 0.0f) && (rx < 0.0f)) + rx = ry = 0.0f; + rx = Mathf.Min(rx, width * 0.5f); + ry = Mathf.Min(ry, height * 0.5f); + + var rad = new Vector2(rx, ry); + var rect = new Shape(); + VectorUtils.MakeRectangleShape(rect, new Rect(x, y, width, height), rad, rad, rad, rad); + rect.Fill = fill; + rect.PathProps = new PathProperties() { Stroke = stroke, Head = strokeEnding, Tail = strokeEnding, Corners = strokeCorner }; + sceneNode.Shapes = new List(1); + sceneNode.Shapes.Add(rect); + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void stop() + { + var node = docReader.VisitCurrent(); + System.Diagnostics.Debug.Assert(currentGradientFill != null); + + GradientStop stop = new GradientStop(); + + string stopColor = styles.Evaluate("stop-color"); + Color color = stopColor != null ? SVGAttribParser.ParseColor(stopColor) : Color.black; + + color.a = AttribFloatVal("stop-opacity", 1.0f); + stop.Color = color; + + string offsetString = styles.Evaluate("offset"); + if (!string.IsNullOrEmpty(offsetString)) + { + bool percentage = offsetString.EndsWith("%"); + if (percentage) + offsetString = offsetString.Substring(0, offsetString.Length - 1); + stop.StopPercentage = SVGAttribParser.ParseFloat(offsetString); + if (percentage) + stop.StopPercentage /= 100.0f; + + stop.StopPercentage = Mathf.Max(0.0f, stop.StopPercentage); + stop.StopPercentage = Mathf.Min(1.0f, stop.StopPercentage); + } + + // I don't like this, but hopefully there aren't many stops in a gradient + GradientStop[] newStops; + if (currentGradientFill.Stops == null || currentGradientFill.Stops.Length == 0) + newStops = new GradientStop[1]; + else + { + newStops = new GradientStop[currentGradientFill.Stops.Length + 1]; + currentGradientFill.Stops.CopyTo(newStops, 0); + } + newStops[newStops.Length - 1] = stop; + currentGradientFill.Stops = newStops; + + // Apply postponed stops if this was defined later in the file + if (!string.IsNullOrEmpty(currentGradientId) && postponedStopData.ContainsKey(currentGradientId)) + { + foreach (var postponedStop in postponedStopData[currentGradientId]) + postponedStop.fill.Stops = newStops; + } + + // Local stops overrides referenced ones + if (!string.IsNullOrEmpty(currentGradientLink) && postponedStopData.ContainsKey(currentGradientLink)) + { + var stopDataList = postponedStopData[currentGradientLink]; + foreach (var postponedStop in stopDataList) + { + if (postponedStop.fill == currentGradientFill) + { + stopDataList.Remove(postponedStop); + break; + } + } + } + + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void svg() + { + var node = docReader.VisitCurrent(); + var sceneNode = new SceneNode(); + if (scene.Root == null) // If this is the root SVG element, then we set the vector scene root as well + { + System.Diagnostics.Debug.Assert(currentSceneNode.Count == 0); + scene.Root = sceneNode; + } + + styles.PushNode(node); + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + + sceneViewport = ParseViewport(node, sceneNode, new Vector2(windowWidth, windowHeight)); + var viewBoxInfo = ParseViewBox(node, sceneNode, sceneViewport); + if (applyRootViewBox) + ApplyViewBox(sceneNode, viewBoxInfo, sceneViewport); + + currentContainerSize.Push(sceneViewport.size); + if (!viewBoxInfo.IsEmpty) + currentViewBoxSize.Push(viewBoxInfo.ViewBox.size); + + currentSceneNode.Push(sceneNode); + nodeGlobalSceneState[sceneNode] = new NodeGlobalSceneState() { ContainerSize = currentContainerSize.Peek() }; + + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, allElems); + ParseChildren(node, "svg"); + + if (currentSceneNode.Pop() != sceneNode) + throw SVGFormatException.StackError; + + if (!viewBoxInfo.IsEmpty) + currentViewBoxSize.Pop(); + currentContainerSize.Pop(); + + styles.PopNode(); + } + + void symbol() + { + var node = docReader.VisitCurrent(); + var sceneNode = new SceneNode(); // A new scene node instead of one precreated for us + string id = node["id"]; + + ParseID(node, sceneNode); + ParseOpacity(sceneNode); + sceneNode.Transform = Matrix2D.identity; + + Rect viewportRect = new Rect(Vector2.zero, currentContainerSize.Peek()); + var viewBoxInfo = ParseViewBox(node, sceneNode, viewportRect); + if (!viewBoxInfo.IsEmpty) + currentViewBoxSize.Push(viewBoxInfo.ViewBox.size); + + symbolViewBoxes[sceneNode] = viewBoxInfo; + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node, allElems); + + currentSceneNode.Push(sceneNode); + ParseChildren(node, node.Name); + if (currentSceneNode.Pop() != sceneNode) + throw SVGFormatException.StackError; + + if (!viewBoxInfo.IsEmpty) + currentViewBoxSize.Pop(); + + ParseClipAndMask(node, sceneNode); + + // Resolve any previous node that was referencing this symbol + if (!string.IsNullOrEmpty(id)) + { + List refList; + if (postponedSymbolData.TryGetValue(id, out refList)) + { + foreach (var refData in refList) + ResolveReferencedNode(sceneNode, refData, true); + } + } + } + + void use() + { + var node = docReader.VisitCurrent(); + var sceneNode = currentSceneNode.Peek(); + + ParseOpacity(sceneNode); + + var sceneViewport = ParseViewport(node, sceneNode, Vector2.zero); + var refData = new NodeReferenceData() { + node = sceneNode, + viewport = sceneViewport, + id = node["id"] + }; + + var iri = node["xlink:href"]; + var referencedNode = SVGAttribParser.ParseRelativeRef(iri, svgObjects) as SceneNode; + if (referencedNode == null && !string.IsNullOrEmpty(iri) && iri.StartsWith("#")) + { + // The referenced node may be defined later in the file, save it for later + iri = iri.Substring(1); + List refList; + if (!postponedSymbolData.TryGetValue(iri, out refList)) + { + refList = new List(); + postponedSymbolData[iri] = refList; + } + refList.Add(refData); + } + + sceneNode.Transform = SVGAttribParser.ParseTransform(node); + sceneNode.Transform = sceneNode.Transform * Matrix2D.Translate(sceneViewport.position); + + if (referencedNode != null) + ResolveReferencedNode(referencedNode, refData, false); + + ParseClipAndMask(node, sceneNode); + + AddToSVGDictionaryIfPossible(node, sceneNode); + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + + void style() + { + var node = docReader.VisitCurrent(); + var text = docReader.ReadTextWithinElement(); + + if (text.Length > 0) + styles.SetGlobalStyleSheet(SVGStyleSheetUtils.Parse(text)); + + if (ShouldDeclareSupportedChildren(node)) + SupportElems(node); // No children supported + } + #endregion + + #region Symbol Reference Processing + private void ResolveReferencedNode(SceneNode referencedNode, NodeReferenceData refData, bool isDeferred) + { + // Note we don't use the viewport size because the element doesn't establish a viewport for its referenced elements + ViewBoxInfo viewBoxInfo; + if (symbolViewBoxes.TryGetValue(referencedNode, out viewBoxInfo)) + ApplyViewBox(refData.node, viewBoxInfo, refData.viewport); // When using a symbol we need to apply the symbol's view box + + if (refData.node.Children == null) + refData.node.Children = new List(); + + SVGStyleResolver.StyleLayer rootLayer = null; + if (isDeferred) + { + // If deferred, push back the original tag style layer to be in the same "style environment" + rootLayer = styles.GetLayerForScenNode(refData.node); + if (rootLayer != null) + styles.PushLayer(rootLayer); + } + + // Activate the styles of the referenced node + var styleLayer = nodeStyleLayers[referencedNode]; + if (styleLayer != null) + styles.PushLayer(styleLayer); + + // Build a map to be able to retrieve the original node's style layer + var originalNodes = new List(10); + foreach (var child in VectorUtils.SceneNodes(referencedNode)) + originalNodes.Add(child); + + var node = CloneSceneNode(referencedNode); + + int originalIndex = 0; + foreach (var child in VectorUtils.SceneNodes(node)) + { + var nodeIndex = originalIndex++; + if (child.Shapes == null) + continue; + + var originalNode = originalNodes[nodeIndex]; + var layer = styles.GetLayerForScenNode(originalNode); + if (layer != null) + styles.PushLayer(layer); + + bool isDefaultFill; + var fill = SVGAttribParser.ParseFill(null, svgObjects, postponedFills, styles, Inheritance.Inherited, out isDefaultFill); + PathCorner strokeCorner; + PathEnding strokeEnding; + var stroke = ParseStrokeAttributeSet(null, out strokeCorner, out strokeEnding); + + foreach (var shape in child.Shapes) + { + var pathProps = shape.PathProps; + pathProps.Stroke = stroke; + pathProps.Corners = strokeCorner; + pathProps.Head = strokeEnding; + shape.PathProps = pathProps; + shape.Fill = isDefaultFill ? shape.Fill : fill; + } + + if (layer != null) + styles.PopLayer(); + } + + if (styleLayer != null) + styles.PopLayer(); + + if (rootLayer != null) + styles.PopLayer(); + + // We process the node ID here to refer to the proper scene node + if (!string.IsNullOrEmpty(refData.id)) + nodeIDs[refData.id] = node; + + refData.node.Children.Add(node); + } + #endregion + + #region Scene Node Cloning + // This is a poor man's cloning system, until we have proper serialization in VectorScene. + private SceneNode CloneSceneNode(SceneNode node) + { + if (node == null) + return null; + + List children = null; + if (node.Children != null) + { + children = new List(node.Children.Count); + foreach (var c in node.Children) + children.Add(CloneSceneNode(c)); + } + + List shapes = null; + if (node.Shapes != null) + { + shapes = new List(node.Shapes.Count); + foreach (var d in node.Shapes) + shapes.Add(CloneShape(d)); + } + + var n = new SceneNode() { + Children = children, + Shapes = shapes, + Transform = node.Transform, + Clipper = CloneSceneNode(node.Clipper) + }; + + if (nodeGlobalSceneState.ContainsKey(node)) + nodeGlobalSceneState[n] = nodeGlobalSceneState[node]; + if (nodeOpacity.ContainsKey(node)) + nodeOpacity[n] = nodeOpacity[node]; + + return n; + } + + private Shape CloneShape(Shape shape) + { + if (shape == null) + return null; + + BezierContour[] contours = null; + if (shape.Contours != null) + { + contours = new BezierContour[shape.Contours.Length]; + for (int i = 0; i < contours.Length; ++i) + contours[i] = CloneContour(shape.Contours[i]); + } + return new Shape() { + Fill = CloneFill(shape.Fill), + FillTransform = shape.FillTransform, + PathProps = ClonePathProps(shape.PathProps), + Contours = contours, + IsConvex = shape.IsConvex + }; + } + + private BezierContour CloneContour(BezierContour c) + { + BezierPathSegment[] segs = null; + if (c.Segments != null) + { + segs = new BezierPathSegment[c.Segments.Length]; + for (int i = 0; i < segs.Length; ++i) + { + var s = c.Segments[i]; + segs[i] = new BezierPathSegment() { P0 = s.P0, P1 = s.P1, P2 = s.P2 }; + } + } + return new BezierContour() { Segments = segs, Closed = c.Closed }; + } + + private IFill CloneFill(IFill fill) + { + if (fill == null) + return null; + + IFill f = null; + if (fill is SolidFill) + { + var solid = fill as SolidFill; + f = new SolidFill() { + Color = solid.Color, + Opacity = solid.Opacity, + Mode = solid.Mode + }; + } + else if (fill is GradientFill) + { + var grad = fill as GradientFill; + GradientStop[] stops = null; + if (grad.Stops != null) + { + stops = new GradientStop[grad.Stops.Length]; + for (int i = 0; i < stops.Length; ++i) + { + var stop = grad.Stops[i]; + stops[i] = new GradientStop() { Color = stop.Color, StopPercentage = stop.StopPercentage }; + } + } + var gradientFill = new GradientFill() { + Type = grad.Type, + Stops = stops, + Mode = grad.Mode, + Opacity = grad.Opacity, + Addressing = grad.Addressing, + RadialFocus = grad.RadialFocus + }; + gradientExInfo[gradientFill] = gradientExInfo[grad]; + f = gradientFill; + } + else if (fill is TextureFill) + { + var tex = fill as TextureFill; + f = new TextureFill() { + Texture = tex.Texture, + Mode = tex.Mode, + Opacity = tex.Opacity, + Addressing = tex.Addressing + }; + } + else if (fill is PatternFill) + { + var pat = fill as PatternFill; + f = new PatternFill() { + Mode = pat.Mode, + Opacity = pat.Opacity, + Pattern = CloneSceneNode(pat.Pattern), + Rect = pat.Rect + }; + } + return f; + } + + private PathProperties ClonePathProps(PathProperties props) + { + Stroke stroke = null; + if (props.Stroke != null) + { + float[] pattern = null; + if (props.Stroke.Pattern != null) + { + pattern = new float[props.Stroke.Pattern.Length]; + for (int i = 0; i < pattern.Length; ++i) + pattern[i] = props.Stroke.Pattern[i]; + } + stroke = new Stroke() { + Fill = CloneFill(props.Stroke.Fill), + FillTransform = props.Stroke.FillTransform, + HalfThickness = props.Stroke.HalfThickness, + Pattern = pattern, + PatternOffset = props.Stroke.PatternOffset, + TippedCornerLimit = props.Stroke.TippedCornerLimit + }; + } + + return new PathProperties() { + Stroke = stroke, + Head = props.Head, + Tail = props.Tail, + Corners = props.Corners + }; + } + #endregion + + #region Utilities + private GradientFill CloneGradientFill(GradientFill other) + { + if (other == null) + return null; + + // This is a very fragile gradient fill cloning used since Illustrator + // will sometimes refer to another fill using a "xlink:href" attribute. + return new GradientFill() { + Type = other.Type, + Stops = other.Stops, + Mode = other.Mode, + Opacity = other.Opacity, + Addressing = other.Addressing, + RadialFocus = other.RadialFocus + }; + } + #endregion + + #region Simple Attribute Handling + int AttribIntVal(string attribName) { return AttribIntVal(attribName, 0); } + int AttribIntVal(string attribName, int defaultVal) + { + string val = styles.Evaluate(attribName); + return (val != null) ? int.Parse(val) : defaultVal; + } + + float AttribFloatVal(string attribName) { return AttribFloatVal(attribName, 0.0f); } + float AttribFloatVal(string attribName, float defaultVal) + { + string val = styles.Evaluate(attribName); + return (val != null) ? SVGAttribParser.ParseFloat(val) : defaultVal; + } + + float AttribLengthVal(XmlReaderIterator.Node node, string attribName, DimType dimType) { return AttribLengthVal(node, attribName, 0.0f, dimType); } + float AttribLengthVal(XmlReaderIterator.Node node, string attribName, float defaultUnitVal, DimType dimType) + { + var val = styles.Evaluate(attribName); + return AttribLengthVal(val, node, attribName, defaultUnitVal, dimType); + } + + float AttribLengthVal(string val, XmlReaderIterator.Node node, string attribName, float defaultUnitVal, DimType dimType) + { + // For reference: http://www.w3.org/TR/SVG/coords.html#Units + if (val == null) return defaultUnitVal; + val = val.Trim(); + string unitType = "px"; + char lastChar = val[val.Length - 1]; + if (lastChar == '%') + { + float number = SVGAttribParser.ParseFloat(val.Substring(0, val.Length - 1)); + if (number < 0) + throw node.GetException("Number in " + attribName + " cannot be negative"); + number /= 100.0f; + + // If there's an active viewbox, this should be used as the reference size for relative coordinates. + // See https://www.w3.org/TR/SVG/coords.html#Units + Vector2 vpSize = currentViewBoxSize.Count > 0 ? currentViewBoxSize.Peek() : currentContainerSize.Peek(); + + switch (dimType) + { + case DimType.Width: return number * vpSize.x; + case DimType.Height: return number * vpSize.y; + case DimType.Length: return (number * vpSize.magnitude / SVGLengthFactor); // See http://www.w3.org/TR/SVG/coords.html#Units + } + } + else if (val.Length >= 2) + { + unitType = val.Substring(val.Length - 2); + } + + if (char.IsDigit(lastChar) || (lastChar == '.')) + return SVGAttribParser.ParseFloat(val); // No unit specified.. assume pixels (one px unit is defined to be equal to one user unit) + + float length = SVGAttribParser.ParseFloat(val.Substring(0, val.Length - 2)); + switch (unitType) + { + case "em": throw new NotImplementedException(); + case "ex": throw new NotImplementedException(); + case "px": return length; + case "in": return 90.0f * length * dpiScale; // "1in" equals "90px" (and therefore 90 user units) + case "cm": return 35.43307f * length * dpiScale; // "1cm" equals "35.43307px" (and therefore 35.43307 user units) + case "mm": return 3.543307f * length * dpiScale; // "1mm" would be "3.543307px" (3.543307 user units) + case "pt": return 1.25f * length * dpiScale; // "1pt" equals "1.25px" (and therefore 1.25 user units) + case "pc": return 15.0f * length * dpiScale; // "1pc" equals "15px" (and therefore 15 user units) + default: + throw new FormatException("Unknown length unit type (" + unitType + ")"); + } + } + + #endregion + + #region Attribute Set Handling + void AddToSVGDictionaryIfPossible(XmlReaderIterator.Node node, object vectorElement) + { + string id = node["id"]; + if (!string.IsNullOrEmpty(id)) + svgObjects[id] = vectorElement; + } + + Rect ParseViewport(XmlReaderIterator.Node node, SceneNode sceneNode, Vector2 defaultViewportSize) + { + scenePos.x = AttribLengthVal(node, "x", DimType.Width); + scenePos.y = AttribLengthVal(node, "y", DimType.Height); + sceneSize.x = AttribLengthVal(node, "width", defaultViewportSize.x, DimType.Width); + sceneSize.y = AttribLengthVal(node, "height", defaultViewportSize.y, DimType.Height); + + // The size could be all 0, in which case we should ignore the viewport sizing logic altogether + return new Rect(scenePos, sceneSize); + } + + enum ViewBoxAlign { Min, Mid, Max } + enum ViewBoxAspectRatio { DontPreserve, FitLargestDim, FitSmallestDim } + struct ViewBoxInfo { public Rect ViewBox; public ViewBoxAspectRatio AspectRatio; public ViewBoxAlign AlignX, AlignY; public bool IsEmpty; } + ViewBoxInfo ParseViewBox(XmlReaderIterator.Node node, SceneNode sceneNode, Rect sceneViewport) + { + var viewBoxInfo = new ViewBoxInfo() { IsEmpty = true }; + string viewBoxString = node["viewBox"]; + viewBoxString = viewBoxString != null ? viewBoxString.Trim() : null; + if (string.IsNullOrEmpty(viewBoxString)) + return viewBoxInfo; + + var viewBoxValues = viewBoxString.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); + if (viewBoxValues.Length != 4) + throw node.GetException("Invalid viewBox specification"); + Vector2 viewBoxMin = new Vector2( + AttribLengthVal(viewBoxValues[0], node, "viewBox", 0.0f, DimType.Width), + AttribLengthVal(viewBoxValues[1], node, "viewBox", 0.0f, DimType.Height)); + Vector2 viewBoxSize = new Vector2( + AttribLengthVal(viewBoxValues[2], node, "viewBox", sceneViewport.width, DimType.Width), + AttribLengthVal(viewBoxValues[3], node, "viewBox", sceneViewport.height, DimType.Height)); + + viewBoxInfo.ViewBox = new Rect(viewBoxMin, viewBoxSize); + ParseViewBoxAspectRatio(node, ref viewBoxInfo); + + viewBoxInfo.IsEmpty = false; + return viewBoxInfo; + } + + void ParseViewBoxAspectRatio(XmlReaderIterator.Node node, ref ViewBoxInfo viewBoxInfo) + { + viewBoxInfo.AspectRatio = ViewBoxAspectRatio.FitLargestDim; + viewBoxInfo.AlignX = ViewBoxAlign.Mid; + viewBoxInfo.AlignY = ViewBoxAlign.Mid; + + string preserveAspectRatioString = node["preserveAspectRatio"]; + preserveAspectRatioString = preserveAspectRatioString != null ? preserveAspectRatioString.Trim() : null; + bool wantNone = false; + if (!string.IsNullOrEmpty(preserveAspectRatioString)) + { + var preserveAspectRatioValues = preserveAspectRatioString.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var value in preserveAspectRatioValues) + { + switch (value) + { + case "defer": break; // This is only meaningful on that references another SVG, we don't support that + case "none": wantNone = true; break; + case "xMinYMin": viewBoxInfo.AlignX = ViewBoxAlign.Min; viewBoxInfo.AlignY = ViewBoxAlign.Min; break; + case "xMidYMin": viewBoxInfo.AlignX = ViewBoxAlign.Mid; viewBoxInfo.AlignY = ViewBoxAlign.Min; break; + case "xMaxYMin": viewBoxInfo.AlignX = ViewBoxAlign.Max; viewBoxInfo.AlignY = ViewBoxAlign.Min; break; + case "xMinYMid": viewBoxInfo.AlignX = ViewBoxAlign.Min; viewBoxInfo.AlignY = ViewBoxAlign.Mid; break; + case "xMidYMid": viewBoxInfo.AlignX = ViewBoxAlign.Mid; viewBoxInfo.AlignY = ViewBoxAlign.Mid; break; + case "xMaxYMid": viewBoxInfo.AlignX = ViewBoxAlign.Max; viewBoxInfo.AlignY = ViewBoxAlign.Mid; break; + case "xMinYMax": viewBoxInfo.AlignX = ViewBoxAlign.Min; viewBoxInfo.AlignY = ViewBoxAlign.Max; break; + case "xMidYMax": viewBoxInfo.AlignX = ViewBoxAlign.Mid; viewBoxInfo.AlignY = ViewBoxAlign.Max; break; + case "xMaxYMax": viewBoxInfo.AlignX = ViewBoxAlign.Max; viewBoxInfo.AlignY = ViewBoxAlign.Max; break; + case "meet": viewBoxInfo.AspectRatio = ViewBoxAspectRatio.FitLargestDim; break; + case "slice": viewBoxInfo.AspectRatio = ViewBoxAspectRatio.FitSmallestDim; break; + } + } + } + + if (wantNone) // Override aspect ratio no matter what other modes are chosen (meet/slice) + viewBoxInfo.AspectRatio = ViewBoxAspectRatio.DontPreserve; + } + + void ApplyViewBox(SceneNode sceneNode, ViewBoxInfo viewBoxInfo, Rect sceneViewport) + { + if ((viewBoxInfo.ViewBox.size == Vector2.zero) || (sceneViewport.size == Vector2.zero)) + return; + + Vector2 scale = Vector2.one, offset = -viewBoxInfo.ViewBox.position; + if (viewBoxInfo.AspectRatio == ViewBoxAspectRatio.DontPreserve) + { + scale = sceneViewport.size / viewBoxInfo.ViewBox.size; + } + else + { + scale.x = scale.y = sceneViewport.width / viewBoxInfo.ViewBox.width; + bool fitsOnWidth; + if (viewBoxInfo.AspectRatio == ViewBoxAspectRatio.FitLargestDim) + fitsOnWidth = viewBoxInfo.ViewBox.height * scale.y <= sceneViewport.height; + else fitsOnWidth = viewBoxInfo.ViewBox.height * scale.y > sceneViewport.height; + + Vector2 alignOffset = Vector2.zero; + if (fitsOnWidth) + { + // We fit on the width, so apply the vertical alignment rules + if (viewBoxInfo.AlignY == ViewBoxAlign.Mid) + alignOffset.y = (sceneViewport.height - viewBoxInfo.ViewBox.height * scale.y) * 0.5f; + else if (viewBoxInfo.AlignY == ViewBoxAlign.Max) + alignOffset.y = sceneViewport.height - viewBoxInfo.ViewBox.height * scale.y; + } + else + { + // We didn't fit on width, meaning we should fit on height and use the wiggle room on width + scale.x = scale.y = sceneViewport.height / viewBoxInfo.ViewBox.height; + + // Apply the horizontal alignment rules + if (viewBoxInfo.AlignX == ViewBoxAlign.Mid) + alignOffset.x = (sceneViewport.width - viewBoxInfo.ViewBox.width * scale.x) * 0.5f; + else if (viewBoxInfo.AlignX == ViewBoxAlign.Max) + alignOffset.x = sceneViewport.width - viewBoxInfo.ViewBox.width * scale.x; + } + + offset += alignOffset / scale; + } + + // Aaaaand finally, the transform + sceneNode.Transform = sceneNode.Transform * Matrix2D.Scale(scale) * Matrix2D.Translate(offset); + } + + Stroke ParseStrokeAttributeSet(XmlReaderIterator.Node node, out PathCorner strokeCorner, out PathEnding strokeEnding, Inheritance inheritance = Inheritance.Inherited) + { + var stroke = SVGAttribParser.ParseStrokeAndOpacity(node, svgObjects, styles, inheritance); + strokeCorner = PathCorner.Tipped; + strokeEnding = PathEnding.Chop; + if (stroke != null) + { + string strokeWidth = styles.Evaluate("stroke-width", inheritance); + stroke.HalfThickness = AttribLengthVal(strokeWidth, node, "stroke-width", 1.0f, DimType.Length) * 0.5f; + switch (styles.Evaluate("stroke-linecap", inheritance)) + { + case "butt": strokeEnding = PathEnding.Chop; break; + case "square": strokeEnding = PathEnding.Square; break; + case "round": strokeEnding = PathEnding.Round; break; + } + switch (styles.Evaluate("stroke-linejoin", inheritance)) + { + case "miter": strokeCorner = PathCorner.Tipped; break; + case "round": strokeCorner = PathCorner.Round; break; + case "bevel": strokeCorner = PathCorner.Beveled; break; + } + + string pattern = styles.Evaluate("stroke-dasharray", inheritance); + if (pattern != null && pattern != "none") + { + string[] entries = pattern.Split(whiteSpaceNumberChars, StringSplitOptions.RemoveEmptyEntries); + // If the pattern is odd, then we duplicate it to make it even as per the spec + int totalCount = (entries.Length & 1) == 1 ? entries.Length * 2 : entries.Length; + stroke.Pattern = new float[totalCount]; + for (int i = 0; i < entries.Length; i++) + stroke.Pattern[i] = AttribLengthVal(entries[i], node, "stroke-dasharray", 0.0f, DimType.Length); + + // Duplicate the pattern + if (totalCount > entries.Length) + { + for (int i = 0; i < entries.Length; i++) + stroke.Pattern[i + entries.Length] = stroke.Pattern[i]; + } + + var dashOffset = styles.Evaluate("stroke-dashoffset", inheritance); + stroke.PatternOffset = AttribLengthVal(dashOffset, node, "stroke-dashoffset", 0.0f, DimType.Length); + } + + var strokeMiterLimit = styles.Evaluate("stroke-miterlimit", inheritance); + stroke.TippedCornerLimit = AttribLengthVal(strokeMiterLimit, node, "stroke-miterlimit", 4.0f, DimType.Length); + if (stroke.TippedCornerLimit < 1.0f) + throw node.GetException("'stroke-miterlimit' should be greater or equal to 1"); + } // If stroke is specified + return stroke; + } + + void ParseID(XmlReaderIterator.Node node, SceneNode sceneNode) + { + string id = node["id"]; + if (!string.IsNullOrEmpty(id)) + { + nodeIDs[id] = sceneNode; + + // Store the style layer of this node since it can be referenced later by a tag + nodeStyleLayers[sceneNode] = styles.PeekLayer(); + } + } + + float ParseOpacity(SceneNode sceneNode) + { + float opacity = AttribFloatVal("opacity", 1.0f); + if (opacity != 1.0f && sceneNode != null) + nodeOpacity[sceneNode] = opacity; + return opacity; + } + + void ParseClipAndMask(XmlReaderIterator.Node node, SceneNode sceneNode) + { + ParseClip(node, sceneNode); + ParseMask(node, sceneNode); + } + + void ParseClip(XmlReaderIterator.Node node, SceneNode sceneNode) + { + string reference = null; + string clipPath = styles.Evaluate("clip-path"); + if (clipPath != null) + reference = SVGAttribParser.ParseURLRef(clipPath); + + if (reference == null) + return; + + var clipper = SVGAttribParser.ParseRelativeRef(reference, svgObjects) as SceneNode; + if (clipper == null && reference.Length > 1 && reference.StartsWith("#")) + { + // Clipper may be defined later in the file + List clips; + if (!postponedClip.TryGetValue(reference, out clips)) + clips = new List(1); + clips.Add(new PostponedClip() { node = sceneNode }); + postponedClip[reference.Substring(1)] = clips; + return; + } + var clipperRoot = clipper; + + bool worldRelative = true; + ClipData data; + if (clipData.TryGetValue(clipper, out data)) + worldRelative = data.WorldRelative; + + ApplyClipper(clipper, sceneNode, worldRelative); + } + + void ApplyClipper(SceneNode clipper, SceneNode target, bool worldRelative) + { + SceneNode clipperRoot = clipper; + if (!worldRelative) + { + // If the referenced clip path units is in bounding-box space, we add an intermediate + // node to scale the content to the correct size. + var rect = VectorUtils.SceneNodeBounds(target); + var transform = Matrix2D.Translate(rect.position) * Matrix2D.Scale(rect.size); + + clipperRoot = new SceneNode() { + Children = new List { clipper }, + Transform = transform + }; + } + target.Clipper = clipperRoot; + } + + void ParseMask(XmlReaderIterator.Node node, SceneNode sceneNode) + { + string reference = null; + string maskRef = node["mask"]; + if (maskRef != null) + reference = SVGAttribParser.ParseURLRef(maskRef); + + if (reference == null) + return; + + var maskPath = SVGAttribParser.ParseRelativeRef(reference, svgObjects) as SceneNode; + var maskRoot = maskPath; + + MaskData data; + if (maskData.TryGetValue(maskPath, out data) && !data.ContentWorldRelative) + { + // If the referenced mask units is in bounding-box space, we add an intermediate + // node to scale the content to the correct size. + var rect = VectorUtils.SceneNodeBounds(sceneNode); + var transform = Matrix2D.Translate(rect.position) * Matrix2D.Scale(rect.size); + + maskRoot = new SceneNode() { + Children = new List { maskPath }, + Transform = transform + }; + } + + sceneNode.Clipper = maskRoot; + } + + #endregion + + #region Textures + Texture2D DecodeTextureData(string dataURI) + { + int pos = 5; // Skip "data:" + int length = dataURI.Length; + + int startPos = pos; + while (pos < length && dataURI[pos] != ';' && dataURI[pos] != ',') + ++pos; + + var mediaType = dataURI.Substring(startPos, pos-startPos); + if (mediaType != "image/png" && mediaType != "image/jpeg") + return null; + + while (pos < length && dataURI[pos] != ',') + ++pos; + + ++pos; // Skip ',' + + if (pos >= length) + return null; + + var data = Convert.FromBase64String(dataURI.Substring(pos)); + + var tex = new Texture2D(1, 1); + if (tex.LoadImage(data)) + return tex; + + return null; + } + #endregion + + #region Post-processing + + void PostProcess(SceneNode root) + { + AdjustFills(root); + } + + struct HierarchyUpdate + { + public SceneNode Parent; + public SceneNode NewNode; + public SceneNode ReplaceNode; + } + + void AdjustFills(SceneNode root) + { + var hierarchyUpdates = new List(); + + // Adjust fills on all objects + foreach (var nodeInfo in VectorUtils.WorldTransformedSceneNodes(root, nodeOpacity)) + { + if (nodeInfo.Node.Shapes == null) + continue; + foreach (var shape in nodeInfo.Node.Shapes) + { + if (shape.Fill != null) + { + // This fill may be a placeholder for postponed reference, try to resolve it here. + string reference; + if (postponedFills.TryGetValue(shape.Fill, out reference)) + { + var fill = SVGAttribParser.ParseRelativeRef(reference, svgObjects) as IFill; + if (fill != null) + shape.Fill = fill; + } + } + + var stroke = shape.PathProps.Stroke; + if (stroke != null && stroke.Fill is GradientFill) + { + var fillTransform = Matrix2D.identity; + AdjustGradientFill(nodeInfo.Node, nodeInfo.WorldTransform, stroke.Fill, shape.Contours, ref fillTransform); + stroke.FillTransform = fillTransform; + } + + if (shape.Fill is GradientFill) + { + var fillTransform = Matrix2D.identity; + AdjustGradientFill(nodeInfo.Node, nodeInfo.WorldTransform, shape.Fill, shape.Contours, ref fillTransform); + shape.FillTransform = fillTransform; + } + else if (shape.Fill is PatternFill) + { + var fillNode = AdjustPatternFill(nodeInfo.Node, nodeInfo.WorldTransform, shape); + if (fillNode != null) + { + hierarchyUpdates.Add(new HierarchyUpdate() + { + Parent = nodeInfo.Parent, + NewNode = fillNode, + ReplaceNode = nodeInfo.Node + }); + } + } + } + } + + foreach (var update in hierarchyUpdates) + { + var index = update.Parent.Children.IndexOf(update.ReplaceNode); + update.Parent.Children.RemoveAt(index); + update.Parent.Children.Insert(index, update.NewNode); + } + } + + void AdjustGradientFill(SceneNode node, Matrix2D worldTransform, IFill fill, BezierContour[] contours, ref Matrix2D computedTransform) + { + var gradientFill = fill as GradientFill; + if (fill == null || contours == null || contours.Length == 0) + return; + + var min = new Vector2(float.MaxValue, float.MaxValue); + var max = new Vector2(-float.MaxValue, -float.MaxValue); + foreach (var contour in contours) + { + var bbox = VectorUtils.Bounds(contour.Segments); + min = Vector2.Min(min, bbox.min); + max = Vector2.Max(max, bbox.max); + } + + Rect bounds = new Rect(min, max - min); + + GradientExData extInfo = (GradientExData)gradientExInfo[gradientFill]; + var containerSize = nodeGlobalSceneState[node].ContainerSize; + Matrix2D gradTransform = Matrix2D.identity; + + currentContainerSize.Push(extInfo.WorldRelative ? containerSize : Vector2.one); + + // If the fill is object relative, then the dimensions will come to us in + // a normalized space, we must adjust those to the object's dimensions + if (extInfo is LinearGradientExData) + { + // In SVG, linear gradients are expressed using two vectors. A vector and normal. The vector determines + // the direction where the gradient increases. The normal determines the slant of the gradient along the vector. + // Due to transformations, it is possible that those two vectors (the gradient vector and its normal) are not + // actually perpendicular. That's why a skew transformation is involved here. + // VectorScene just maps linear gradients from 0 to 1 across the entire bounding box width, so we + // need to figure out a super transformation that takes those simply-mapped UVs and have them express + // the linear gradient with its slant and all the fun involved. + var linGradEx = (LinearGradientExData)extInfo; + Vector2 lineStart = new Vector2( + AttribLengthVal(linGradEx.X1, null, null, 0.0f, DimType.Width), + AttribLengthVal(linGradEx.Y1, null, null, 0.0f, DimType.Height)); + Vector2 lineEnd = new Vector2( + AttribLengthVal(linGradEx.X2, null, null, currentContainerSize.Peek().x, DimType.Width), + AttribLengthVal(linGradEx.Y2, null, null, 0.0f, DimType.Height)); + + var gradientVector = lineEnd - lineStart; + float gradientVectorInvLength = 1.0f / gradientVector.magnitude; + var scale = Matrix2D.Scale(new Vector2(bounds.width * gradientVectorInvLength, bounds.height * gradientVectorInvLength)); + var rotation = Matrix2D.RotateLH(Mathf.Atan2(gradientVector.y, gradientVector.x)); + var offset = Matrix2D.Translate(-lineStart); + gradTransform = scale * rotation * offset; + } + else if (extInfo is RadialGradientExData) + { + // VectorScene positions radial gradiants at the center of the bbox, and picks the radii (not one radius, but two) + // to fill the space between the center and the two edges (horizontal and vertical). So in the general case + // the radial is actually an ellipsoid. So we need to do an SRT transformation to position the radial gradient according + // to the SVG center point and radius + var radGradEx = (RadialGradientExData)extInfo; + Vector2 halfCurrentContainerSize = currentContainerSize.Peek() * 0.5f; + Vector2 center = new Vector2( + AttribLengthVal(radGradEx.Cx, null, null, halfCurrentContainerSize.x, DimType.Width), + AttribLengthVal(radGradEx.Cy, null, null, halfCurrentContainerSize.y, DimType.Height)); + Vector2 focus = new Vector2( + AttribLengthVal(radGradEx.Fx, null, null, center.x, DimType.Width), + AttribLengthVal(radGradEx.Fy, null, null, center.y, DimType.Height)); + float radius = AttribLengthVal(radGradEx.R, null, null, halfCurrentContainerSize.magnitude / SVGLengthFactor, DimType.Length); + + // This block below tells that radial focus cannot change per object, but is realized correctly for the first object + // that requests this gradient. If the gradient is using object-relative coordinates to specify the focus location, + // then only the first object will look correct, and the rest will potentially not look right. The alternative is + // to detect if it is necessary and generate a new atlas entry for it + if (!radGradEx.Parsed) + { + // VectorGradientFill radialFocus is (-1,1) relative to the outer circle + gradientFill.RadialFocus = (focus - center) / radius; + if (gradientFill.RadialFocus.sqrMagnitude > 1.0f - VectorUtils.Epsilon) + gradientFill.RadialFocus = gradientFill.RadialFocus.normalized * (1.0f - VectorUtils.Epsilon); // Stick within the unit circle + + radGradEx.Parsed = true; + } + + gradTransform = + Matrix2D.Scale(bounds.size * 0.5f / radius) * + Matrix2D.Translate(new Vector2(radius, radius) - center); + } + else + { + Debug.LogError("Unsupported gradient type: " + extInfo); + } + + currentContainerSize.Pop(); + + var uvToWorld = extInfo.WorldRelative ? Matrix2D.Translate(bounds.min) * Matrix2D.Scale(bounds.size) : Matrix2D.identity; + var boundsInv = new Vector2(1.0f / bounds.width, 1.0f / bounds.height); + computedTransform = Matrix2D.Scale(boundsInv) * gradTransform * extInfo.FillTransform.Inverse() * uvToWorld; + } + + SceneNode AdjustPatternFill(SceneNode node, Matrix2D worldTransform, Shape shape) + { + PatternFill patternFill = shape.Fill as PatternFill; + if (patternFill == null || + Mathf.Abs(patternFill.Rect.width) < VectorUtils.Epsilon || + Mathf.Abs(patternFill.Rect.height) < VectorUtils.Epsilon) + { + return null; + } + + var data = patternData[patternFill.Pattern]; + + var nodeBounds = VectorUtils.SceneNodeBounds(node); + var patternRect = patternFill.Rect; + if (!data.WorldRelative) + { + patternRect.position *= nodeBounds.size; + patternRect.size *= nodeBounds.size; + } + + // The pattern fill will create a new clipped node containing the repeating pattern + // as well as a sibling containing the original node. This will replace the original node. + var replacementNode = new SceneNode() { + Transform = node.Transform, + Children = new List(2) + }; + node.Transform = Matrix2D.identity; + + // The pattern node will be wrapped in a scaling node if content isn't world relative + var patternNode = patternFill.Pattern; + if (!data.ContentWorldRelative) + { + patternNode = new SceneNode() { + Transform = Matrix2D.Scale(nodeBounds.size), + Children = new List { patternFill.Pattern } + }; + } + + PostProcess(patternNode); // This will take care of adjusting gradients/inner-patterns + + // Duplicate the filling pattern + var grid = new SceneNode() { + Transform = data.PatternTransform, + Children = new List(20) + }; + + var fill = new SceneNode() { + Transform = Matrix2D.identity, + Children = new List { grid }, + Clipper = node + }; + + // SVG patterns are clipped in their respective "boxes" + var clippingBox = new Shape(); + VectorUtils.MakeRectangleShape(clippingBox, new Rect(0,0,patternRect.width, patternRect.height)); + + var box = new SceneNode() { + Transform = Matrix2D.identity, + Shapes = new List { clippingBox } + }; + + // Compute the bounds of the shape to be filled, taking into account the pattern transform + var bounds = VectorUtils.SceneNodeBounds(node); + var invPatternTransform = data.PatternTransform.Inverse(); + var boundVerts = new Vector2[] { + invPatternTransform * new Vector2(bounds.xMin, bounds.yMin), + invPatternTransform * new Vector2(bounds.xMax, bounds.yMin), + invPatternTransform * new Vector2(bounds.xMax, bounds.yMax), + invPatternTransform * new Vector2(bounds.xMin, bounds.yMax) + }; + bounds = VectorUtils.Bounds(boundVerts); + + const int kMaxReps = 5000; + float xCount = bounds.xMax / patternRect.width; + float yCount = bounds.yMax / patternRect.height; + if (Mathf.Abs(patternRect.width) < VectorUtils.Epsilon || + Mathf.Abs(patternRect.height) < VectorUtils.Epsilon || + (xCount*yCount) > kMaxReps) + { + Debug.LogWarning("Ignoring pattern which would result in too many repetitions"); + return null; + } + + // Start the pattern filling process + var offset = patternRect.position; + float xStart = (int)(bounds.x / patternRect.width) * patternRect.width - patternRect.width; + float yStart = (int)(bounds.y / patternRect.height) * patternRect.height - patternRect.height; + + for (float y = yStart; y < bounds.yMax; y += patternRect.height) + { + for (float x = xStart; x < bounds.xMax; x += patternRect.width) + { + var pattern = new SceneNode() { + Transform = Matrix2D.Translate(new Vector2(x, y) + offset), + Children = new List { patternNode }, + Clipper = box + }; + grid.Children.Add(pattern); + } + } + + replacementNode.Children.Add(fill); + replacementNode.Children.Add(node); + + return replacementNode; + } + + void RemoveInvisibleNodes() + { + foreach (var n in invisibleNodes) + { + if (n.parent.Children != null) + n.parent.Children.Remove(n.node); + } + } + + #endregion + + delegate void ElemHandler(); + class Handlers : Dictionary + { + public Handlers(int capacity) : base(capacity) {} + } + bool ShouldDeclareSupportedChildren(XmlReaderIterator.Node node) { return !subTags.ContainsKey(node.Name); } + void SupportElems(XmlReaderIterator.Node node, params ElemHandler[] handlers) + { + var elems = new Handlers(handlers.Length); + foreach (var h in handlers) + elems[h.Method.Name] = h; + subTags[node.Name] = elems; + } + + static char[] whiteSpaceNumberChars = " \r\n\t,".ToCharArray(); + enum DimType { Width, Height, Length }; + XmlReaderIterator docReader; + Scene scene; + float dpiScale; + int windowWidth, windowHeight; + Vector2 scenePos, sceneSize; + SVGDictionary svgObjects = new SVGDictionary(); // Named elements are looked up in this + Dictionary subTags = new Dictionary(); // For each element, the set of elements supported as its children + Dictionary gradientExInfo = new Dictionary(); + Dictionary symbolViewBoxes = new Dictionary(); + Dictionary nodeGlobalSceneState = new Dictionary(); + Dictionary nodeOpacity = new Dictionary(); + Dictionary nodeIDs = new Dictionary(); + Dictionary nodeStyleLayers = new Dictionary(); + Dictionary clipData = new Dictionary(); + Dictionary patternData = new Dictionary(); + Dictionary maskData = new Dictionary(); + Dictionary> postponedSymbolData = new Dictionary>(); + Dictionary> postponedStopData = new Dictionary>(); + Dictionary> postponedClip = new Dictionary>(); + SVGPostponedFills postponedFills = new SVGPostponedFills(); + List invisibleNodes = new List(); + Stack currentContainerSize = new Stack(); + Stack currentViewBoxSize = new Stack(); + Stack currentSceneNode = new Stack(); + GradientFill currentGradientFill; + string currentGradientId; + string currentGradientLink; + ElemHandler[] allElems; + HashSet elemsToAddToHierarchy; + SVGStyleResolver styles = new SVGStyleResolver(); + bool applyRootViewBox; + + internal Rect sceneViewport; + + struct NodeGlobalSceneState + { + public Vector2 ContainerSize; + } + + class GradientExData + { + public bool WorldRelative; + public Matrix2D FillTransform; + } + + class LinearGradientExData : GradientExData + { + public string X1, Y1, X2, Y2; + } + + class RadialGradientExData : GradientExData + { + public bool Parsed; + public string Cx, Cy, Fx, Fy, R; + } + + struct ClipData + { + public bool WorldRelative; + } + + struct PatternData + { + public bool WorldRelative; + public bool ContentWorldRelative; + public Matrix2D PatternTransform; + } + + struct MaskData + { + public bool WorldRelative; + public bool ContentWorldRelative; + } + + struct NodeWithParent + { + public SceneNode node; + public SceneNode parent; + } + + struct NodeReferenceData + { + public SceneNode node; + public Rect viewport; + public string id; + } + + struct PostponedStopData + { + public GradientFill fill; + } + + struct PostponedClip + { + public SceneNode node; + } + } + + internal enum Inheritance + { + None, + Inherited + } + + internal class SVGStyleResolver + { + public void PushNode(XmlReaderIterator.Node node) + { + var nodeData = new NodeData(); + nodeData.node = node; + nodeData.name = node.Name; + var klass = node["class"]; + if (klass != null) + nodeData.classes = node["class"].Split(' ').Select(x => x.Trim()).ToList(); + else + nodeData.classes = new List(); + nodeData.classes = SortedClasses(nodeData.classes).ToList(); + nodeData.id = node["id"]; + + var layer = new StyleLayer(); + layer.nodeData = nodeData; + layer.attributeSheet = node.GetAttributes(); + layer.styleSheet = new SVGStyleSheet(); + + var cssText = node["style"]; + if (cssText != null) + { + var props = SVGStyleSheetUtils.ParseInline(cssText); + layer.styleSheet[node.Name] = props; + } + + PushLayer(layer); + } + + public void PopNode() + { + PopLayer(); + } + + public void PushLayer(StyleLayer layer) + { + layers.Add(layer); + } + + public void PopLayer() + { + if (layers.Count == 0) + throw SVGFormatException.StackError; + + layers.RemoveAt(layers.Count - 1); + } + + public StyleLayer PeekLayer() + { + if (layers.Count == 0) + return null; + return layers[layers.Count-1]; + } + + public void SaveLayerForSceneNode(SceneNode node) + { + nodeLayers[node] = PeekLayer(); + } + + public StyleLayer GetLayerForScenNode(SceneNode node) + { + if (!nodeLayers.ContainsKey(node)) + return null; + return nodeLayers[node]; + } + + public void SetGlobalStyleSheet(SVGStyleSheet sheet) + { + foreach (var sel in sheet.selectors) + globalStyleSheet[sel] = sheet[sel]; + } + + public string Evaluate(string attribName, Inheritance inheritance = Inheritance.None) + { + for (int i = layers.Count-1; i >= 0; --i) + { + string attrib = null; + if (LookupStyleOrAttribute(layers[i], attribName, inheritance, out attrib)) + return attrib; + + if (inheritance == Inheritance.None) + break; + } + return null; + } + + private bool LookupStyleOrAttribute(StyleLayer layer, string attribName, Inheritance inheritance, out string attrib) + { + // Try to match a CSS style first + if (LookupProperty(layer.nodeData, attribName, layer.styleSheet, out attrib)) + return true; + + // Try to match a global CSS style + if (LookupProperty(layer.nodeData, attribName, globalStyleSheet, out attrib)) + return true; + + // Else, fallback on attribute + if (layer.attributeSheet.ContainsKey(attribName)) + { + attrib = layer.attributeSheet[attribName]; + return true; + } + + return false; + } + + private bool LookupProperty(NodeData nodeData, string attribName, SVGStyleSheet sheet, out string val) + { + var id = string.IsNullOrEmpty(nodeData.id) ? null : "#" + nodeData.id; + var name = string.IsNullOrEmpty(nodeData.name) ? null : nodeData.name; + + if (LookupPropertyInSheet(sheet, attribName, id, out val)) + return true; + + foreach (var c in nodeData.classes) + { + var klass = "." + c; + if (LookupPropertyInSheet(sheet, attribName, klass, out val)) + return true; + } + + if (LookupPropertyInSheet(sheet, attribName, name, out val)) + return true; + + if (LookupPropertyInSheet(sheet, attribName, "*", out val)) + return true; + + val = null; + return false; + } + + private bool LookupPropertyInSheet(SVGStyleSheet sheet, string attribName, string selector, out string val) + { + if (selector == null) + { + val = null; + return false; + } + + if (sheet.selectors.Contains(selector)) + { + var props = sheet[selector]; + if (props.ContainsKey(attribName)) + { + val = props[attribName]; + return true; + } + } + + val = null; + return false; + } + + private IEnumerable SortedClasses(List classes) + { + // We may not have parsed the global sheets yet (happens when setting a class on the root element). + if (globalStyleSheet.selectors.Count() == 0) + { + foreach (var klass in classes) + yield return klass; + } + + // We match classes in reverse order of their appearance. This isn't conformant to CSS selectors priority, + // but this works well enough for auto-generated CSS styles. + foreach (var sel in globalStyleSheet.selectors.Reverse()) + { + if (sel[0] != '.') + continue; + var klass = sel.Substring(1); + if (classes.Contains(klass)) + yield return klass; + } + } + + public struct NodeData + { + public XmlReaderIterator.Node node; + public string name; + public List classes; + public string id; + } + + public class StyleLayer + { + public SVGStyleSheet styleSheet; + public SVGPropertySheet attributeSheet; + public NodeData nodeData; + } + + private List layers = new List(); + private SVGStyleSheet globalStyleSheet = new SVGStyleSheet(); + private Dictionary nodeLayers = new Dictionary(); + } + + internal class SVGAttribParser + { + public static List ParsePath(XmlReaderIterator.Node node) + { + string path = node["d"]; + if (string.IsNullOrEmpty(path)) + return null; + + try + { + return (new SVGAttribParser(path, AttribPath.Path)).contours; + } + catch (Exception e) + { + throw node.GetException(e.Message); + } + } + + public static Matrix2D ParseTransform(XmlReaderIterator.Node node) + { + return ParseTransform(node, "transform"); + } + + public static Matrix2D ParseTransform(XmlReaderIterator.Node node, string attribName) + { + // Transforms aren't part of styling and shouldn't be evaluated, + // they have to be specified as node attributes + string transform = node[attribName]; + if (string.IsNullOrEmpty(transform)) + return Matrix2D.identity; + try + { + return (new SVGAttribParser(transform, attribName, AttribTransform.Transform)).transform; + } + catch (Exception e) + { + throw node.GetException(e.Message); + } + } + + public static IFill ParseFill(XmlReaderIterator.Node node, SVGDictionary dict, SVGPostponedFills postponedFills, SVGStyleResolver styles, Inheritance inheritance = Inheritance.Inherited) + { + bool isDefaultFill; + return ParseFill(node, dict, postponedFills, styles, inheritance, out isDefaultFill); + } + + public static IFill ParseFill(XmlReaderIterator.Node node, SVGDictionary dict, SVGPostponedFills postponedFills, SVGStyleResolver styles, Inheritance inheritance, out bool isDefaultFill) + { + string opacityAttrib = styles.Evaluate("fill-opacity", inheritance); + float opacity = (opacityAttrib != null) ? ParseFloat(opacityAttrib) : 1.0f; + string fillMode = styles.Evaluate("fill-rule", inheritance); + FillMode mode = FillMode.NonZero; + if (fillMode != null) + { + if (fillMode == "nonzero") + mode = FillMode.NonZero; + else if (fillMode == "evenodd") + mode = FillMode.OddEven; + else throw new Exception("Unknown fill-rule: " + fillMode); + } + + try + { + var fill = styles.Evaluate("fill", inheritance); + isDefaultFill = (fill == null && opacityAttrib == null); + return (new SVGAttribParser(fill, "fill", opacity, mode, dict, postponedFills)).fill; + } + catch (Exception e) + { + throw node.GetException(e.Message); + } + } + + public static Stroke ParseStrokeAndOpacity(XmlReaderIterator.Node node, SVGDictionary dict, SVGStyleResolver styles, Inheritance inheritance = Inheritance.Inherited) + { + string strokeAttrib = styles.Evaluate("stroke", inheritance); + if (string.IsNullOrEmpty(strokeAttrib)) + return null; // If stroke is not specified, no other stroke properties matter + + string opacityAttrib = styles.Evaluate("stroke-opacity", inheritance); + float opacity = (opacityAttrib != null) ? ParseFloat(opacityAttrib) : 1.0f; + + IFill strokeFill = null; + try + { + strokeFill = (new SVGAttribParser(strokeAttrib, "stroke", opacity, FillMode.NonZero, dict, null)).fill; + } + catch (Exception e) + { + throw node.GetException(e.Message); + } + + if (strokeFill == null) + return null; + + return new Stroke() { Fill = strokeFill }; + } + + public static Color ParseColor(string colorString) + { + if (colorString[0] == '#') + { + // Hex format + var hexVal = UInt32.Parse(colorString.Substring(1), NumberStyles.HexNumber); + if (colorString.Length == 4) + { + // #ABC >> #AABBCC + return new Color( + ((((hexVal >> 8) & 0xF) << 0) | (((hexVal >> 8) & 0xF) << 4)) / 255.0f, + ((((hexVal >> 4) & 0xF) << 0) | (((hexVal >> 4) & 0xF) << 4)) / 255.0f, + ((((hexVal >> 0) & 0xF) << 0) | (((hexVal >> 0) & 0xF) << 4)) / 255.0f); + } + else + { + // #ABCDEF + return new Color( + ((hexVal >> 16) & 0xFF) / 255.0f, + ((hexVal >> 8) & 0xFF) / 255.0f, + ((hexVal >> 0) & 0xFF) / 255.0f); + } + } + if (colorString.StartsWith("rgb(") && colorString.EndsWith(")")) + { + string numbersString = colorString.Substring(4, colorString.Length-5); + string[] numbers = numbersString.Split(new char[] { ',', '%' }, StringSplitOptions.RemoveEmptyEntries); + if (numbers.Length != 3) + throw new Exception("Invalid rgb() color specification"); + float divisor = colorString.Contains("%") ? 100.0f : 255.0f; + return new Color(Byte.Parse(numbers[0]) / divisor, Byte.Parse(numbers[1]) / divisor, Byte.Parse(numbers[2]) / divisor); + } + else if (colorString.StartsWith("rgba(") && colorString.EndsWith(")")) + { + string numbersString = colorString.Substring(5, colorString.Length-6); + string[] numbers = numbersString.Split(new char[] { ',', '%' }, StringSplitOptions.RemoveEmptyEntries); + if (numbers.Length != 4) + throw new Exception("Invalid rgba() color specification"); + float divisor = colorString.Contains("%") ? 100.0f : 255.0f; + return new Color( + Byte.Parse(numbers[0]) / divisor, + Byte.Parse(numbers[1]) / divisor, + Byte.Parse(numbers[2]) / divisor, + divisor == 100.0f ? Byte.Parse(numbers[3]) / divisor : ParseFloat(numbers[3])); + } + + // Named color + if (namedColors == null) + namedColors = new NamedWebColorDictionary(); + return namedColors[colorString.ToLower()]; + } + + public static string ParseURLRef(string url) + { + if (url.StartsWith("url(") && url.EndsWith(")")) + return url.Substring(4, url.Length - 5); + return null; + } + + public static object ParseRelativeRef(string iri, SVGDictionary dict) + { + if (iri == null) + return null; + + if (!iri.StartsWith("#")) + throw new Exception("Unsupported reference type (" + iri + ")"); + iri = iri.Substring(1); + object obj; + dict.TryGetValue(iri, out obj); + return obj; + } + + public static string CleanIri(string iri) + { + if (iri == null) + return null; + if (!iri.StartsWith("#")) + throw new Exception("Unsupported reference type (" + iri + ")"); + iri = iri.Substring(1); + return iri; + } + + SVGAttribParser(string attrib, AttribPath attribPath) + { + attribName = "path"; + attribString = attrib; + NextPathCommand(true); + if (pathCommand != 'm' && pathCommand != 'M') + throw new Exception("Path must start with a MoveTo pathCommand"); + + char lastCmdNoCase = '\0'; + Vector2 lastQCtrlPoint = Vector2.zero; + + while (NextPathCommand() != (char)0) + { + bool relative = (pathCommand >= 'a') && (pathCommand <= 'z'); + char cmdNoCase = char.ToLower(pathCommand); + if (cmdNoCase == 'm') // Move-to + { + penPos = NextVector2(relative); + pathCommand = relative ? 'l' : 'L'; // After a move-to, we automatically switch to a line-to of the same relativity + ConcludePath(false); + } + else if (cmdNoCase == 'z') // ClosePath + { + if (currentContour.First != null) + penPos = currentContour.First.Value.P0; + ConcludePath(true); + } + else if (cmdNoCase == 'l') // Line-to + { + var to = NextVector2(relative); + if ((to - penPos).magnitude > VectorUtils.Epsilon) + currentContour.AddLast(VectorUtils.MakeLine(penPos, to)); + penPos = to; + } + else if (cmdNoCase == 'h') // Horizontal-line-to + { + float x = relative ? penPos.x + NextFloat() : NextFloat(); + var to = new Vector2(x, penPos.y); + if ((to - penPos).magnitude > VectorUtils.Epsilon) + currentContour.AddLast(VectorUtils.MakeLine(penPos, to)); + penPos = to; + } + else if (cmdNoCase == 'v') // Vertical-line-to + { + float y = relative ? penPos.y + NextFloat() : NextFloat(); + var to = new Vector2(penPos.x, y); + if ((to - penPos).magnitude > VectorUtils.Epsilon) + currentContour.AddLast(VectorUtils.MakeLine(penPos, to)); + penPos = to; + } + else if (cmdNoCase == 'c' || cmdNoCase == 'q') // Cubic-bezier-curve or quadratic-bezier-curve + { + // If relative, the pen position is on P0 and is only moved to P3 + BezierSegment bs = new BezierSegment(); + bs.P0 = penPos; + bs.P1 = NextVector2(relative); + if (cmdNoCase == 'c') + bs.P2 = NextVector2(relative); + bs.P3 = NextVector2(relative); + + if (cmdNoCase == 'q') + { + lastQCtrlPoint = bs.P1; + var t = 2.0f/3.0f; + bs.P1 = bs.P0 + t * (lastQCtrlPoint - bs.P0); + bs.P2 = bs.P3 + t * (lastQCtrlPoint - bs.P3); + } + + penPos = bs.P3; + + if (!VectorUtils.IsEmptySegment(bs)) + currentContour.AddLast(bs); + } + else if (cmdNoCase == 's' || cmdNoCase == 't') // Smooth cubic-bezier-curve or smooth quadratic-bezier-curve + { + Vector2 reflectedP1 = penPos; + if (currentContour.Count > 0 && (lastCmdNoCase == 'c' || lastCmdNoCase == 'q' || lastCmdNoCase == 's' || lastCmdNoCase == 't')) + reflectedP1 += currentContour.Last.Value.P3 - ((lastCmdNoCase == 'q' || lastCmdNoCase == 't') ? lastQCtrlPoint : currentContour.Last.Value.P2); + + // If relative, the pen position is on P0 and is only moved to P3 + BezierSegment bs = new BezierSegment(); + bs.P0 = penPos; + bs.P1 = reflectedP1; + if (cmdNoCase == 's') + bs.P2 = NextVector2(relative); + bs.P3 = NextVector2(relative); + + if (cmdNoCase == 't') + { + lastQCtrlPoint = bs.P1; + var t = 2.0f / 3.0f; + bs.P1 = bs.P0 + t * (lastQCtrlPoint - bs.P0); + bs.P2 = bs.P3 + t * (lastQCtrlPoint - bs.P3); + } + + penPos = bs.P3; + + if (!VectorUtils.IsEmptySegment(bs)) + currentContour.AddLast(bs); + } + else if (cmdNoCase == 'a') // Elliptical-arc-to + { + Vector2 radii = NextVector2(); + float xAxisRotation = NextFloat(); + bool largeArcFlag = NextBool(); + bool sweepFlag = NextBool(); + Vector2 to = NextVector2(relative); + + if (radii.magnitude <= VectorUtils.Epsilon) + { + if ((to - penPos).magnitude > VectorUtils.Epsilon) + currentContour.AddLast(VectorUtils.MakeLine(penPos, to)); + } + else + { + var ellipsePath = VectorUtils.BuildEllipsePath(penPos, to, -xAxisRotation * Mathf.Deg2Rad, radii.x, radii.y, largeArcFlag, sweepFlag); + foreach (var seg in VectorUtils.SegmentsInPath(ellipsePath)) + currentContour.AddLast(seg); + } + + penPos = to; + } + + lastCmdNoCase = cmdNoCase; + + } // While commands exist in the string + + ConcludePath(false); + } + + SVGAttribParser(string attrib, string attribNameVal, AttribTransform attribTransform) + { + attribString = attrib; + attribName = attribNameVal; + transform = Matrix2D.identity; + while (stringPos < attribString.Length) + { + int cmdPos = stringPos; + var trasformCommand = NextStringCommand(); + if (string.IsNullOrEmpty(trasformCommand)) + return; + SkipSymbol('('); + + if (trasformCommand == "matrix") + { + Matrix2D mat = new Matrix2D(); + mat.m00 = NextFloat(); + mat.m10 = NextFloat(); + mat.m01 = NextFloat(); + mat.m11 = NextFloat(); + mat.m02 = NextFloat(); + mat.m12 = NextFloat(); + transform *= mat; + } + else if (trasformCommand == "translate") + { + float x = NextFloat(); + float y = 0; + if (!PeekSymbol(')')) + y = NextFloat(); + transform *= Matrix2D.Translate(new Vector2(x, y)); + } + else if (trasformCommand == "scale") + { + float x = NextFloat(); + float y = x; + if (!PeekSymbol(')')) + y = NextFloat(); + transform *= Matrix2D.Scale(new Vector2(x, y)); + } + else if (trasformCommand == "rotate") + { + float a = NextFloat() * Mathf.Deg2Rad; + float cx = 0, cy = 0; + if (!PeekSymbol(')')) + { + cx = NextFloat(); + cy = NextFloat(); + } + transform *= Matrix2D.Translate(new Vector2(cx, cy)) * Matrix2D.RotateLH(-a) * Matrix2D.Translate(new Vector2(-cx, -cy)); + } + else if ((trasformCommand == "skewX") || (trasformCommand == "skewY")) + { + float a = Mathf.Tan(NextFloat() * Mathf.Deg2Rad); + Matrix2D mat = Matrix2D.identity; + if (trasformCommand == "skewY") + mat.m10 = a; + else mat.m01 = a; + transform *= mat; + } + else throw new Exception("Unknown transform command at " + cmdPos + " in trasform specification"); + + SkipSymbol(')'); + } + } + + SVGAttribParser(string attrib, string attribName, float opacity, FillMode mode, SVGDictionary dict, SVGPostponedFills postponedFills, bool allowReference = true) + { + this.attribName = attribName; + if (string.IsNullOrEmpty(attrib)) + { + if (opacity < 1.0f) + fill = new SolidFill() { Color = new Color(0, 0, 0, opacity) }; + else + fill = dict[mode == FillMode.NonZero ? + SVGDocument.StockBlackNonZeroFillName : + SVGDocument.StockBlackOddEvenFillName] as IFill; + return; + } + + if (attrib == "none" || attrib == "transparent") + return; + + if (attrib == "currentColor") + { + Debug.LogError("currentColor is not supported as a " + attribName + " value"); + return; + } + + string[] paintParts = attrib.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + if (allowReference) + { + string reference = ParseURLRef(paintParts[0]); + if (reference != null) + { + fill = ParseRelativeRef(reference, dict) as IFill; + if (fill == null) + { + if (paintParts.Length > 1) + { + fill = (new SVGAttribParser(paintParts[1], attribName, opacity, mode, dict, postponedFills, false)).fill; + } + else if (postponedFills != null) + { + // The reference doesn't exist, but may be defined later in the file. + // Make a dummy fill to be replaced later. + fill = new SolidFill() { Color = Color.clear }; + postponedFills[fill] = reference; + } + } + + if (fill != null) + fill.Opacity = opacity; + + return; + } + } + + var clr = ParseColor(string.Join("", paintParts)); + clr.a *= opacity; + if (paintParts.Length > 1) + { + // TODO: Support ICC-Color + } + fill = new SolidFill() { Color = clr, Mode = mode }; + } + + void ConcludePath(bool joinEnds) + { + // No need to manually close the path with the last line. It is implied. + //if (joinEnds && currentPath.Count >= 2) + //{ + // BezierSegment bs = new BezierSegment(); + // bs.MakeLine(currentPath.Last.Value.P3, currentPath.First.Value.P0); + // currentPath.AddLast(bs); + //} + if (currentContour.Count > 0) + { + BezierContour contour = new BezierContour(); + contour.Closed = joinEnds && (currentContour.Count >= 1); + contour.Segments = new BezierPathSegment[currentContour.Count + 1]; + int index = 0; + foreach (var bs in currentContour) + contour.Segments[index++] = new BezierPathSegment() { P0 = bs.P0, P1 = bs.P1, P2 = bs.P2 }; + var connect = VectorUtils.MakeLine(currentContour.Last.Value.P3, contour.Segments[0].P0); + contour.Segments[index] = new BezierPathSegment() { P0 = connect.P0, P1 = connect.P1, P2 = connect.P2 }; + contours.Add(contour); + } + currentContour.Clear(); // Restart a new path + } + + Vector2 NextVector2(bool relative = false) + { + var v = new Vector2(NextFloat(), NextFloat()); + return relative ? v + penPos : v; + } + + float NextFloat() + { + SkipWhitespaces(); + if (stringPos >= attribString.Length) + throw new Exception(attribName + " specification ended before sufficing numbers required by the last pathCommand"); + + int startPos = stringPos; + if (attribString[stringPos] == '-') + stringPos++; // Skip over the negative sign if it exists + + bool gotPeriod = false; + bool gotE = false; + while (stringPos < attribString.Length) + { + char c = attribString[stringPos]; + if (!gotPeriod && (c == '.')) + { + gotPeriod = true; + stringPos++; + continue; + } + if (!gotE && ((c == 'e') || (c == 'E'))) + { + gotE = true; + stringPos++; + if ((stringPos < attribString.Length) && (attribString[stringPos] == '-')) + stringPos++; // Skip over the negative sign if it exists for the e + continue; + } + if (!char.IsDigit(c)) + break; + stringPos++; + } + + if ((stringPos - startPos == 0) || + ((stringPos - startPos == 1) && attribString[startPos] == '-')) + throw new Exception("Missing number at " + startPos + " in " + attribName + " specification"); + + return ParseFloat(attribString.Substring(startPos, stringPos - startPos)); + } + + internal static float ParseFloat(string s) + { + return float.Parse(s, NumberStyles.Number | NumberStyles.AllowExponent, CultureInfo.InvariantCulture); + } + + bool NextBool() + { + return Mathf.Abs(NextFloat()) > VectorUtils.Epsilon; + } + + char NextPathCommand(bool noCommandInheritance = false) + { + SkipWhitespaces(); + if (stringPos >= attribString.Length) + return (char)0; + + char newCmd = attribString[stringPos]; + if ((newCmd >= 'a' && newCmd <= 'z') || (newCmd >= 'A' && newCmd <= 'Z')) + { + pathCommand = newCmd; + stringPos++; + return newCmd; + } + + if (!noCommandInheritance && (char.IsDigit(newCmd) || (newCmd == '.') || (newCmd == '-'))) + return pathCommand; // Stepped onto a number, which means we keep the last pathCommand + throw new Exception("Unexpected character at " + stringPos + " in path specification"); + } + + string NextStringCommand() + { + SkipWhitespaces(); + if (stringPos >= attribString.Length) + return null; + + int startPos = stringPos; + while (stringPos < attribString.Length) + { + char c = attribString[stringPos]; + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) + stringPos++; + else break; + } + + if (stringPos - startPos == 0) + throw new Exception("Unexpected character at " + stringPos + " in " + attribName + " specification"); + + return attribString.Substring(startPos, stringPos - startPos); + } + + void SkipSymbol(char s) + { + SkipWhitespaces(); + if (stringPos >= attribString.Length || (attribString[stringPos] != s)) + throw new Exception("Expected " + s + " at " + stringPos + " of " + attribName + " specification"); + stringPos++; + } + + bool PeekSymbol(char s) + { + SkipWhitespaces(); + return (stringPos < attribString.Length) && (attribString[stringPos] == s); + } + + void SkipWhitespaces() + { + while (stringPos < attribString.Length) + { + switch (attribString[stringPos]) + { + case ' ': + case '\r': + case '\n': + case '\t': + case ',': + stringPos++; + break; + default: + return; + } + } + } + + enum AttribPath { Path }; + enum AttribTransform { Transform }; + enum AttribStroke { Stroke }; + + // Path data + LinkedList currentContour = new LinkedList(); + List contours = new List(); + Vector2 penPos; + string attribString; + char pathCommand; + + // Transform data + Matrix2D transform; + + // Fill data + IFill fill; + + // Parsing data + string attribName; + int stringPos; + + static NamedWebColorDictionary namedColors; + } + + class NamedWebColorDictionary : Dictionary + { + public NamedWebColorDictionary() + { + this["aliceblue"] = new Color(240.0f / 255.0f, 248.0f / 255.0f, 255.0f / 255.0f); + this["antiquewhite"] = new Color(250.0f / 255.0f, 235.0f / 255.0f, 215.0f / 255.0f); + this["aqua"] = new Color(0.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f); + this["aquamarine"] = new Color(127.0f / 255.0f, 255.0f / 255.0f, 212.0f / 255.0f); + this["azure"] = new Color(240.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f); + this["beige"] = new Color(245.0f / 255.0f, 245.0f / 255.0f, 220.0f / 255.0f); + this["bisque"] = new Color(255.0f / 255.0f, 228.0f / 255.0f, 196.0f / 255.0f); + this["black"] = new Color(0.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f); + this["blanchedalmond"] = new Color(255.0f / 255.0f, 235.0f / 255.0f, 205.0f / 255.0f); + this["blue"] = new Color(0.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f); + this["blueviolet"] = new Color(138.0f / 255.0f, 43.0f / 255.0f, 226.0f / 255.0f); + this["brown"] = new Color(165.0f / 255.0f, 42.0f / 255.0f, 42.0f / 255.0f); + this["burlywood"] = new Color(222.0f / 255.0f, 184.0f / 255.0f, 135.0f / 255.0f); + this["cadetblue"] = new Color(95.0f / 255.0f, 158.0f / 255.0f, 160.0f / 255.0f); + this["chartreuse"] = new Color(127.0f / 255.0f, 255.0f / 255.0f, 0.0f / 255.0f); + this["chocolate"] = new Color(210.0f / 255.0f, 105.0f / 255.0f, 30.0f / 255.0f); + this["coral"] = new Color(255.0f / 255.0f, 127.0f / 255.0f, 80.0f / 255.0f); + this["cornflowerblue"] = new Color(100.0f / 255.0f, 149.0f / 255.0f, 237.0f / 255.0f); + this["cornsilk"] = new Color(255.0f / 255.0f, 248.0f / 255.0f, 220.0f / 255.0f); + this["crimson"] = new Color(220.0f / 255.0f, 20.0f / 255.0f, 60.0f / 255.0f); + this["cyan"] = new Color(0.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f); + this["darkblue"] = new Color(0.0f / 255.0f, 0.0f / 255.0f, 139.0f / 255.0f); + this["darkcyan"] = new Color(0.0f / 255.0f, 139.0f / 255.0f, 139.0f / 255.0f); + this["darkgoldenrod"] = new Color(184.0f / 255.0f, 134.0f / 255.0f, 11.0f / 255.0f); + this["darkgray"] = new Color(169.0f / 255.0f, 169.0f / 255.0f, 169.0f / 255.0f); + this["darkgrey"] = new Color(169.0f / 255.0f, 169.0f / 255.0f, 169.0f / 255.0f); + this["darkgreen"] = new Color(0.0f / 255.0f, 100.0f / 255.0f, 0.0f / 255.0f); + this["darkkhaki"] = new Color(189.0f / 255.0f, 183.0f / 255.0f, 107.0f / 255.0f); + this["darkmagenta"] = new Color(139.0f / 255.0f, 0.0f / 255.0f, 139.0f / 255.0f); + this["darkolivegreen"] = new Color(85.0f / 255.0f, 107.0f / 255.0f, 47.0f / 255.0f); + this["darkorange"] = new Color(255.0f / 255.0f, 140.0f / 255.0f, 0.0f / 255.0f); + this["darkorchid"] = new Color(153.0f / 255.0f, 50.0f / 255.0f, 204.0f / 255.0f); + this["darkred"] = new Color(139.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f); + this["darksalmon"] = new Color(233.0f / 255.0f, 150.0f / 255.0f, 122.0f / 255.0f); + this["darkseagreen"] = new Color(143.0f / 255.0f, 188.0f / 255.0f, 143.0f / 255.0f); + this["darkslateblue"] = new Color(72.0f / 255.0f, 61.0f / 255.0f, 139.0f / 255.0f); + this["darkslategray"] = new Color(47.0f / 255.0f, 79.0f / 255.0f, 79.0f / 255.0f); + this["darkslategrey"] = new Color(47.0f / 255.0f, 79.0f / 255.0f, 79.0f / 255.0f); + this["darkturquoise"] = new Color(0.0f / 255.0f, 206.0f / 255.0f, 209.0f / 255.0f); + this["darkviolet"] = new Color(148.0f / 255.0f, 0.0f / 255.0f, 211.0f / 255.0f); + this["deeppink"] = new Color(255.0f / 255.0f, 20.0f / 255.0f, 147.0f / 255.0f); + this["deepskyblue"] = new Color(0.0f / 255.0f, 191.0f / 255.0f, 255.0f / 255.0f); + this["dimgray"] = new Color(105.0f / 255.0f, 105.0f / 255.0f, 105.0f / 255.0f); + this["dimgrey"] = new Color(105.0f / 255.0f, 105.0f / 255.0f, 105.0f / 255.0f); + this["dodgerblue"] = new Color(30.0f / 255.0f, 144.0f / 255.0f, 255.0f / 255.0f); + this["firebrick"] = new Color(178.0f / 255.0f, 34.0f / 255.0f, 34.0f / 255.0f); + this["floralwhite"] = new Color(255.0f / 255.0f, 250.0f / 255.0f, 240.0f / 255.0f); + this["forestgreen"] = new Color(34.0f / 255.0f, 139.0f / 255.0f, 34.0f / 255.0f); + this["fuchsia"] = new Color(255.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f); + this["gainsboro"] = new Color(220.0f / 255.0f, 220.0f / 255.0f, 220.0f / 255.0f); + this["ghostwhite"] = new Color(248.0f / 255.0f, 248.0f / 255.0f, 255.0f / 255.0f); + this["gold"] = new Color(255.0f / 255.0f, 215.0f / 255.0f, 0.0f / 255.0f); + this["goldenrod"] = new Color(218.0f / 255.0f, 165.0f / 255.0f, 32.0f / 255.0f); + this["gray"] = new Color(128.0f / 255.0f, 128.0f / 255.0f, 128.0f / 255.0f); + this["grey"] = new Color(128.0f / 255.0f, 128.0f / 255.0f, 128.0f / 255.0f); + this["green"] = new Color(0.0f / 255.0f, 128.0f / 255.0f, 0.0f / 255.0f); + this["greenyellow"] = new Color(173.0f / 255.0f, 255.0f / 255.0f, 47.0f / 255.0f); + this["honeydew"] = new Color(240.0f / 255.0f, 255.0f / 255.0f, 240.0f / 255.0f); + this["hotpink"] = new Color(255.0f / 255.0f, 105.0f / 255.0f, 180.0f / 255.0f); + this["indianred"] = new Color(205.0f / 255.0f, 92.0f / 255.0f, 92.0f / 255.0f); + this["indigo"] = new Color(75.0f / 255.0f, 0.0f / 255.0f, 130.0f / 255.0f); + this["ivory"] = new Color(255.0f / 255.0f, 255.0f / 255.0f, 240.0f / 255.0f); + this["khaki"] = new Color(240.0f / 255.0f, 230.0f / 255.0f, 140.0f / 255.0f); + this["lavender"] = new Color(230.0f / 255.0f, 230.0f / 255.0f, 250.0f / 255.0f); + this["lavenderblush"] = new Color(255.0f / 255.0f, 240.0f / 255.0f, 245.0f / 255.0f); + this["lawngreen"] = new Color(124.0f / 255.0f, 252.0f / 255.0f, 0.0f / 255.0f); + this["lemonchiffon"] = new Color(255.0f / 255.0f, 250.0f / 255.0f, 205.0f / 255.0f); + this["lightblue"] = new Color(173.0f / 255.0f, 216.0f / 255.0f, 230.0f / 255.0f); + this["lightcoral"] = new Color(240.0f / 255.0f, 128.0f / 255.0f, 128.0f / 255.0f); + this["lightcyan"] = new Color(224.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f); + this["lightgoldenrodyellow"] = new Color(250.0f / 255.0f, 250.0f / 255.0f, 210.0f / 255.0f); + this["lightgray"] = new Color(211.0f / 255.0f, 211.0f / 255.0f, 211.0f / 255.0f); + this["lightgrey"] = new Color(211.0f / 255.0f, 211.0f / 255.0f, 211.0f / 255.0f); + this["lightgreen"] = new Color(144.0f / 255.0f, 238.0f / 255.0f, 144.0f / 255.0f); + this["lightpink"] = new Color(255.0f / 255.0f, 182.0f / 255.0f, 193.0f / 255.0f); + this["lightsalmon"] = new Color(255.0f / 255.0f, 160.0f / 255.0f, 122.0f / 255.0f); + this["lightseagreen"] = new Color(32.0f / 255.0f, 178.0f / 255.0f, 170.0f / 255.0f); + this["lightskyblue"] = new Color(135.0f / 255.0f, 206.0f / 255.0f, 250.0f / 255.0f); + this["lightslategray"] = new Color(119.0f / 255.0f, 136.0f / 255.0f, 153.0f / 255.0f); + this["lightslategrey"] = new Color(119.0f / 255.0f, 136.0f / 255.0f, 153.0f / 255.0f); + this["lightsteelblue"] = new Color(176.0f / 255.0f, 196.0f / 255.0f, 222.0f / 255.0f); + this["lightyellow"] = new Color(255.0f / 255.0f, 255.0f / 255.0f, 224.0f / 255.0f); + this["lime"] = new Color(0.0f / 255.0f, 255.0f / 255.0f, 0.0f / 255.0f); + this["limegreen"] = new Color(50.0f / 255.0f, 205.0f / 255.0f, 50.0f / 255.0f); + this["linen"] = new Color(250.0f / 255.0f, 240.0f / 255.0f, 230.0f / 255.0f); + this["magenta"] = new Color(255.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f); + this["maroon"] = new Color(128.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f); + this["mediumaquamarine"] = new Color(102.0f / 255.0f, 205.0f / 255.0f, 170.0f / 255.0f); + this["mediumblue"] = new Color(0.0f / 255.0f, 0.0f / 255.0f, 205.0f / 255.0f); + this["mediumorchid"] = new Color(186.0f / 255.0f, 85.0f / 255.0f, 211.0f / 255.0f); + this["mediumpurple"] = new Color(147.0f / 255.0f, 112.0f / 255.0f, 219.0f / 255.0f); + this["mediumseagreen"] = new Color(60.0f / 255.0f, 179.0f / 255.0f, 113.0f / 255.0f); + this["mediumslateblue"] = new Color(123.0f / 255.0f, 104.0f / 255.0f, 238.0f / 255.0f); + this["mediumspringgreen"] = new Color(0.0f / 255.0f, 250.0f / 255.0f, 154.0f / 255.0f); + this["mediumturquoise"] = new Color(72.0f / 255.0f, 209.0f / 255.0f, 204.0f / 255.0f); + this["mediumvioletred"] = new Color(199.0f / 255.0f, 21.0f / 255.0f, 133.0f / 255.0f); + this["midnightblue"] = new Color(25.0f / 255.0f, 25.0f / 255.0f, 112.0f / 255.0f); + this["mintcream"] = new Color(245.0f / 255.0f, 255.0f / 255.0f, 250.0f / 255.0f); + this["mistyrose"] = new Color(255.0f / 255.0f, 228.0f / 255.0f, 225.0f / 255.0f); + this["moccasin"] = new Color(255.0f / 255.0f, 228.0f / 255.0f, 181.0f / 255.0f); + this["navajowhite"] = new Color(255.0f / 255.0f, 222.0f / 255.0f, 173.0f / 255.0f); + this["navy"] = new Color(0.0f / 255.0f, 0.0f / 255.0f, 128.0f / 255.0f); + this["oldlace"] = new Color(253.0f / 255.0f, 245.0f / 255.0f, 230.0f / 255.0f); + this["olive"] = new Color(128.0f / 255.0f, 128.0f / 255.0f, 0.0f / 255.0f); + this["olivedrab"] = new Color(107.0f / 255.0f, 142.0f / 255.0f, 35.0f / 255.0f); + this["orange"] = new Color(255.0f / 255.0f, 165.0f / 255.0f, 0.0f / 255.0f); + this["orangered"] = new Color(255.0f / 255.0f, 69.0f / 255.0f, 0.0f / 255.0f); + this["orchid"] = new Color(218.0f / 255.0f, 112.0f / 255.0f, 214.0f / 255.0f); + this["palegoldenrod"] = new Color(238.0f / 255.0f, 232.0f / 255.0f, 170.0f / 255.0f); + this["palegreen"] = new Color(152.0f / 255.0f, 251.0f / 255.0f, 152.0f / 255.0f); + this["paleturquoise"] = new Color(175.0f / 255.0f, 238.0f / 255.0f, 238.0f / 255.0f); + this["palevioletred"] = new Color(219.0f / 255.0f, 112.0f / 255.0f, 147.0f / 255.0f); + this["papayawhip"] = new Color(255.0f / 255.0f, 239.0f / 255.0f, 213.0f / 255.0f); + this["peachpuff"] = new Color(255.0f / 255.0f, 218.0f / 255.0f, 185.0f / 255.0f); + this["peru"] = new Color(205.0f / 255.0f, 133.0f / 255.0f, 63.0f / 255.0f); + this["pink"] = new Color(255.0f / 255.0f, 192.0f / 255.0f, 203.0f / 255.0f); + this["plum"] = new Color(221.0f / 255.0f, 160.0f / 255.0f, 221.0f / 255.0f); + this["powderblue"] = new Color(176.0f / 255.0f, 224.0f / 255.0f, 230.0f / 255.0f); + this["purple"] = new Color(128.0f / 255.0f, 0.0f / 255.0f, 128.0f / 255.0f); + this["rebeccapurple"] = new Color(102.0f / 255.0f, 51.0f / 255.0f, 153.0f / 255.0f); + this["red"] = new Color(255.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f); + this["rosybrown"] = new Color(188.0f / 255.0f, 143.0f / 255.0f, 143.0f / 255.0f); + this["royalblue"] = new Color(65.0f / 255.0f, 105.0f / 255.0f, 225.0f / 255.0f); + this["saddlebrown"] = new Color(139.0f / 255.0f, 69.0f / 255.0f, 19.0f / 255.0f); + this["salmon"] = new Color(250.0f / 255.0f, 128.0f / 255.0f, 114.0f / 255.0f); + this["sandybrown"] = new Color(244.0f / 255.0f, 164.0f / 255.0f, 96.0f / 255.0f); + this["seagreen"] = new Color(46.0f / 255.0f, 139.0f / 255.0f, 87.0f / 255.0f); + this["seashell"] = new Color(255.0f / 255.0f, 245.0f / 255.0f, 238.0f / 255.0f); + this["sienna"] = new Color(160.0f / 255.0f, 82.0f / 255.0f, 45.0f / 255.0f); + this["silver"] = new Color(192.0f / 255.0f, 192.0f / 255.0f, 192.0f / 255.0f); + this["skyblue"] = new Color(135.0f / 255.0f, 206.0f / 255.0f, 235.0f / 255.0f); + this["slateblue"] = new Color(106.0f / 255.0f, 90.0f / 255.0f, 205.0f / 255.0f); + this["slategray"] = new Color(112.0f / 255.0f, 128.0f / 255.0f, 144.0f / 255.0f); + this["slategrey"] = new Color(112.0f / 255.0f, 128.0f / 255.0f, 144.0f / 255.0f); + this["snow"] = new Color(255.0f / 255.0f, 250.0f / 255.0f, 250.0f / 255.0f); + this["springgreen"] = new Color(0.0f / 255.0f, 255.0f / 255.0f, 127.0f / 255.0f); + this["steelblue"] = new Color(70.0f / 255.0f, 130.0f / 255.0f, 180.0f / 255.0f); + this["tan"] = new Color(210.0f / 255.0f, 180.0f / 255.0f, 140.0f / 255.0f); + this["teal"] = new Color(0.0f / 255.0f, 128.0f / 255.0f, 128.0f / 255.0f); + this["thistle"] = new Color(216.0f / 255.0f, 191.0f / 255.0f, 216.0f / 255.0f); + this["tomato"] = new Color(255.0f / 255.0f, 99.0f / 255.0f, 71.0f / 255.0f); + this["turquoise"] = new Color(64.0f / 255.0f, 224.0f / 255.0f, 208.0f / 255.0f); + this["violet"] = new Color(238.0f / 255.0f, 130.0f / 255.0f, 238.0f / 255.0f); + this["wheat"] = new Color(245.0f / 255.0f, 222.0f / 255.0f, 179.0f / 255.0f); + this["white"] = new Color(255.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f); + this["whitesmoke"] = new Color(245.0f / 255.0f, 245.0f / 255.0f, 245.0f / 255.0f); + this["yellow"] = new Color(255.0f / 255.0f, 255.0f / 255.0f, 0.0f / 255.0f); + this["yellowgreen"] = new Color(154.0f / 255.0f, 205.0f / 255.0f, 50.0f / 255.0f); + } + } // The boring NamedWebColorDictionary class +} // namespace diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGParser.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGParser.cs.meta new file mode 100644 index 00000000..bc08bdbd --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa2162f8539d856468fef95fc49e02e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGStyleSheet.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGStyleSheet.cs new file mode 100644 index 00000000..25927849 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGStyleSheet.cs @@ -0,0 +1,269 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; +using System.Linq; +using UnityEngine; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + internal class SVGPropertySheet : Dictionary { } + + internal class SVGStyleSheet + { + private List> m_Selectors = new List>(); + + public SVGPropertySheet this[string key] + { + get + { + int i = m_Selectors.FindIndex(x => x.Key == key); + if (i != -1) + return m_Selectors[i].Value; + return null; + } + set + { + var v = new KeyValuePair(key, value); + int i = m_Selectors.FindIndex(x => x.Key == key); + if (i != -1) + m_Selectors[i] = v; + m_Selectors.Add(v); + } + } + + public IEnumerable selectors + { + get { return m_Selectors.Select(x => x.Key); } + } + + public int Count + { + get { return m_Selectors.Count; } + } + + public void Clear() + { + m_Selectors.Clear(); + } + }; + + internal static class SVGStyleSheetUtils + { + public static SVGStyleSheet Parse(string cssText) + { + var result = new SVGStyleSheet(); + var tokens = Tokenize(cssText); + + var sheet = new SVGStyleSheet(); + while (ParseSelector(tokens, sheet)) + { + foreach (var sel in sheet.selectors) + { + if (result.selectors.Contains(sel)) + CombineProperties(result[sel], sheet[sel]); + else + result[sel] = sheet[sel]; + } + sheet.Clear(); + } + + return result; + } + + public static SVGPropertySheet ParseInline(string cssText) + { + var tokens = Tokenize(cssText); + var props = new SVGPropertySheet(); + ParseProperties(tokens, props); + return props; + } + + private static bool ParseSelector(List tokens, SVGStyleSheet sheet) + { + if (tokens.Count == 0) + return false; + + var newSheet = new SVGStyleSheet(); + while (true) + { + var selectorName = PopToken(tokens); + newSheet[selectorName] = new SVGPropertySheet(); + + while (PeekToken(tokens) == ",") + PopToken(tokens); + + if (PeekToken(tokens) == "" || PeekToken(tokens) == "{") + break; + } + + var sep = PopToken(tokens); + if (sep != "{") + { + Debug.LogError("Invalid CSS selector opening bracket: \"" + sep + "\""); + return false; + } + + var props = new SVGPropertySheet(); + ParseProperties(tokens, props); + + // Transfer properties to the new selectors + foreach (var key in newSheet.selectors) + sheet[key] = CopyProperties(props); + + sep = PopToken(tokens); + if (sep != "}") + { + Debug.LogError("Invalid CSS selector closing bracket: \"" + sep + "\""); + return false; + } + + return true; + } + + private static void CombineProperties(SVGPropertySheet first, SVGPropertySheet second) + { + foreach (var key in second.Keys) + first[key] = second[key]; + } + + private static SVGPropertySheet CopyProperties(SVGPropertySheet props) + { + var newProps = new SVGPropertySheet(); + foreach (var v in props) + newProps[v.Key] = v.Value; + return newProps; + } + + private static bool ParseProperties(List tokens, SVGPropertySheet props) + { + string name; + string value; + while (ParseProperty(tokens, out name, out value)) + { + props[name] = value; + while (PeekToken(tokens) == ";") + PopToken(tokens); + } + return true; + } + + private static bool ParseProperty(List tokens, out string name, out string value) + { + name = null; + value = null; + + if (PeekToken(tokens) == "" || PeekToken(tokens) == "}") + return false; + + name = PopToken(tokens); + + var sep = PopToken(tokens); + if (sep != ":") + { + Debug.LogError("Invalid CSS property separator: \"" + sep + "\""); + return false; + } + + value = ""; + while (PeekToken(tokens) != "" && PeekToken(tokens) != ";" && PeekToken(tokens) != "}") + { + value = (value == "") ? PopToken(tokens) : value + " " + PopToken(tokens); + if (PeekToken(tokens) == "(") + value += ParseParenValue(tokens); + } + + return true; + } + + private static string ParseParenValue(List tokens) + { + var opening = PopToken(tokens); + if (opening != "(") + { + Debug.LogError("Invaid CSS value opening"); + return ""; + } + + var value = opening; + while (PeekToken(tokens) != "" && PeekToken(tokens) != ")") + value += PopToken(tokens); + + if (PeekToken(tokens) != ")") + { + Debug.LogError("Invaid CSS value closing"); + return ""; + } + + value += PopToken(tokens); + return value; + } + + /// Breaks a CSS input into tokens + /// The CSS text + /// A list of tokens + public static List Tokenize(string cssText) + { + var tokens = new List(); + + cssText = cssText.Replace(System.Environment.NewLine, ""); // Remove newlines + cssText = Regex.Replace(cssText, @"/\*.*?\*/", ""); // Remove CSS comments + cssText = Regex.Replace(cssText, @"", ""); // Remove XML comments + + int from = 0; + int to = 0; + + while (from < cssText.Length) + { + while (from < cssText.Length && IsWhitespace(cssText[from])) + ++from; + + to = from; + + while (to < cssText.Length && !IsSeparator(cssText[to])) + ++to; + + if (from == to) + { + if (from < cssText.Length) + tokens.Add(cssText[from].ToString()); + ++to; + } + else + { + tokens.Add(cssText.Substring(from, to-from)); + } + + from = to; + } + + return tokens; + } + + private static string PeekToken(List tokens) + { + if (tokens.Count == 0) + return ""; + return tokens[0]; + } + + private static string PopToken(List tokens) + { + if (tokens.Count == 0) + return ""; + var tok = tokens[0]; + tokens.RemoveAt(0); + return tok; + } + + private static bool IsSeparator(char ch) + { + return IsWhitespace(ch) || ch == ';' || ch == ':' || ch == '{' || ch == '}' || ch == '(' || ch == ')' || ch == ','; + } + + private static bool IsWhitespace(char ch) + { + return ch == ' ' || ch == '\n' || ch == '\t'; + } + } +} // namespace diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGStyleSheet.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGStyleSheet.cs.meta new file mode 100644 index 00000000..dd3b7e1b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/SVGStyleSheet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad42887d8ca6e094093524d976e32104 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorEllipse.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorEllipse.cs new file mode 100644 index 00000000..bc6707fc --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorEllipse.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + public partial class VectorUtils + { + internal static BezierPathSegment[] BuildEllipsePath(Vector2 p0, Vector2 p1, float rotation, float rx, float ry, bool largeArc, bool sweep) + { + if ((p1-p0).magnitude < VectorUtils.Epsilon) + return new BezierPathSegment[0]; + + Vector2 c; + float theta1; + float sweepTheta; + float adjustedRx; + float adjustedRy; + ComputeEllipseParameters(p0, p1, rotation, rx, ry, largeArc, sweep, out c, out theta1, out sweepTheta, out adjustedRx, out adjustedRy); + + BezierPathSegment[] path; + if (Mathf.Abs(sweepTheta) <= Mathf.Epsilon) + { + // Use a straight line if the sweep angle is tiny + path = VectorUtils.BezierSegmentToPath(VectorUtils.MakeLine(p0, p1)); + } + else + { + path = VectorUtils.MakeArc(Vector2.zero, theta1, sweepTheta, 1.0f); + + var scaling = new Vector2(adjustedRx, adjustedRy); + path = VectorUtils.TransformBezierPath(path, c, rotation, scaling); + } + + + return path; + } + + private static void ComputeEllipseParameters(Vector2 p0, Vector2 p1, float phi, float rx, float ry, bool fa, bool fs, out Vector2 c, out float theta1, out float sweepTheta, out float adjustedRx, out float adjustedRy) + { + // See https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes + var cosPhi = Mathf.Cos(phi); + var sinPhi = Mathf.Sin(phi); + + var m0 = Matrix2D.identity; + m0.m00 = cosPhi; + m0.m01 = -sinPhi; + m0.m10 = sinPhi; + m0.m11 = cosPhi; + + var m1 = m0; + m1.m01 = -m1.m01; + m1.m10 = -m1.m10; + + var pp = m0 * new Vector2((p0.x - p1.x) / 2.0f, (p0.y - p1.y) / 2.0f); + + rx = Mathf.Abs(rx); + ry = Mathf.Abs(ry); + EnsureRadiiAreLargeEnough(pp, ref rx, ref ry); + adjustedRx = rx; + adjustedRy = ry; + + var ppx2 = pp.x * pp.x; + var ppy2 = pp.y * pp.y; + var rx2 = rx * rx; + var ry2 = ry * ry; + var cp = new Vector2((rx * pp.y) / ry, -(ry * pp.x) / rx); + cp *= Mathf.Sqrt(Mathf.Abs((rx2 * ry2 - rx2 * ppy2 - ry2 * ppx2) / (rx2 * ppy2 + ry2 * ppx2))); + if (fa == fs) + cp = -cp; + + c = (m1 * cp) + new Vector2((p0.x + p1.x) / 2.0f, (p0.y + p1.y) / 2.0f); + + theta1 = Vector2.SignedAngle(new Vector2(1, 0), new Vector2((pp.x - cp.x) / rx, (pp.y - cp.y) / ry)) % 360.0f; + sweepTheta = Vector2.SignedAngle(new Vector2((pp.x - cp.x) / rx, (pp.y - cp.y) / ry), new Vector2((-pp.x - cp.x) / rx, (-pp.y - cp.y) / ry)); + + if (!fs && sweepTheta > 0) + sweepTheta -= 360; + if (fs && sweepTheta < 0) + sweepTheta += 360; + + theta1 *= Mathf.Deg2Rad; + sweepTheta *= Mathf.Deg2Rad; + } + + private static void EnsureRadiiAreLargeEnough(Vector2 p, ref float rx, ref float ry) + { + var d = (p.x * p.x) / (rx * rx) + (p.y * p.y) / (ry * ry); + if (d > 1.0f) + { + var sqrtD = Mathf.Sqrt(d); + rx *= sqrtD; + ry *= sqrtD; + } + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorEllipse.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorEllipse.cs.meta new file mode 100644 index 00000000..1f0b4b19 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorEllipse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5c16ccd991535447911bd905325bbc0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorRectangle.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorRectangle.cs new file mode 100644 index 00000000..993ee93f --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorRectangle.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + public partial class VectorUtils + { + /// Builds a BezierContour from a Rectangle. + /// The rectangle to build the contour from + /// The top-left radius of the rectangle + /// The top-right radius of the rectangle + /// The bottom-right radius of the rectangle + /// The bottom-left radius of the rectangle + /// A BezierContour that follows the rectangle contour + public static BezierContour BuildRectangleContour(Rect rect, Vector2 radiusTL, Vector2 radiusTR, Vector2 radiusBR, Vector2 radiusBL) + { + var width = rect.size.x; + var height = rect.size.y; + + var halfSize = new Vector2(width / 2.0f, height / 2.0f); + radiusTL = Vector2.Max(Vector2.Min(radiusTL, halfSize), Vector2.zero); + radiusTR = Vector2.Max(Vector2.Min(radiusTR, halfSize), Vector2.zero); + radiusBR = Vector2.Max(Vector2.Min(radiusBR, halfSize), Vector2.zero); + radiusBL = Vector2.Max(Vector2.Min(radiusBL, halfSize), Vector2.zero); + + var leftSegmentSize = height - (radiusBL.y + radiusTL.y); + var topSegmentSize = width - (radiusTL.x + radiusTR.x); + var rightSegmentSize = height - (radiusBR.y + radiusTR.y); + var bottomSegmentSize = width - (radiusBL.x + radiusBR.x); + + var segments = new List(8); + BezierPathSegment seg; + + if (leftSegmentSize > VectorUtils.Epsilon) + { + seg = MakePathLine(new Vector2(0.0f, radiusTL.y + leftSegmentSize), new Vector2(0.0f, radiusTL.y))[0]; + segments.Add(seg); + } + + if (radiusTL.magnitude > VectorUtils.Epsilon) + { + var circleArc = VectorUtils.MakeArc(Vector2.zero, -Mathf.PI, Mathf.PI / 2.0f, 1.0f); + circleArc = VectorUtils.TransformBezierPath(circleArc, radiusTL, 0.0f, radiusTL); + segments.Add(circleArc[0]); + } + + if (topSegmentSize > VectorUtils.Epsilon) + { + seg = MakePathLine(new Vector2(radiusTL.x, 0.0f), new Vector2(radiusTL.x + topSegmentSize, 0.0f))[0]; + segments.Add(seg); + } + + if (radiusTR.magnitude > VectorUtils.Epsilon) + { + var topRight = new Vector2(width - radiusTR.x, radiusTR.y); + var circleArc = VectorUtils.MakeArc(Vector2.zero, -Mathf.PI / 2.0f, Mathf.PI / 2.0f, 1.0f); + circleArc = VectorUtils.TransformBezierPath(circleArc, topRight, 0.0f, radiusTR); + segments.Add(circleArc[0]); + } + + if (rightSegmentSize > VectorUtils.Epsilon) + { + seg = MakePathLine(new Vector2(width, radiusTR.y), new Vector2(width, radiusTR.y + rightSegmentSize))[0]; + segments.Add(seg); + } + + if (radiusBR.magnitude > VectorUtils.Epsilon) + { + var bottomRight = new Vector2(width - radiusBR.x, height - radiusBR.y); + var circleArc = VectorUtils.MakeArc(Vector2.zero, 0.0f, Mathf.PI / 2.0f, 1.0f); + circleArc = VectorUtils.TransformBezierPath(circleArc, bottomRight, 0.0f, radiusBR); + segments.Add(circleArc[0]); + } + + if (bottomSegmentSize > VectorUtils.Epsilon) + { + seg = MakePathLine(new Vector2(width - radiusBR.x, height), new Vector2(width - (radiusBR.x + bottomSegmentSize), height))[0]; + segments.Add(seg); + } + + if (radiusBL.magnitude > VectorUtils.Epsilon) + { + var bottomLeft = new Vector2(radiusBL.x, height - radiusBL.y); + var circleArc = VectorUtils.MakeArc(Vector2.zero, Mathf.PI / 2.0f, Mathf.PI / 2.0f, 1.0f); + circleArc = VectorUtils.TransformBezierPath(circleArc, bottomLeft, 0.0f, radiusBL); + segments.Add(circleArc[0]); + } + + // Offset segments to position + for (int i = 0; i < segments.Count; ++i) + { + var s = segments[i]; + s.P0 += rect.position; + s.P1 += rect.position; + s.P2 += rect.position; + segments[i] = s; + } + + return new BezierContour() { Segments = segments.ToArray(), Closed = true }; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorRectangle.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorRectangle.cs.meta new file mode 100644 index 00000000..8eb73267 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorRectangle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ab9bcde9af121f45a0d120f28f80d7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorScene.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorScene.cs new file mode 100644 index 00000000..e69a154b --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorScene.cs @@ -0,0 +1,315 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + /// The gradient fill types. + public enum GradientFillType + { + /// A linear gradient. + Linear, + + /// A radial gradient, centered at the radial focus of the gradient fill. + Radial + } + + /// The path corner types, for joining path segments together. + public enum PathCorner + { + /// A tipped corner with a sharp edge. + Tipped, + + /// A rounded corner. + Round, + + /// A beveled corner. + Beveled + } + + /// The path ending types. + public enum PathEnding + { + /// A square path ending. + Chop, + + /// A square path ending with a small extrusion. + Square, + + /// A rounded path ending. + Round + } + + /// The fill mode types. + public enum FillMode + { + /// Determines the "insideness" of the shape by evaluating the direction of the edges crossed. + NonZero, + + /// Determines the "insideness" of the shape by counting the number of edges crossed. + OddEven + } + + /// The addressing mode, defining how textures or gradients behave when being addressed outside their unit range. + public enum AddressMode + { + /// Textures/gradients are wrapping around with a repeating pattern. + Wrap, + + /// Textures/gradients are clamped on the borders. + Clamp, + + /// Textures/gradients are repeated with a mirroring pattern. + Mirror + } + + /// The gradient stops used for gradient fills. + public struct GradientStop + { + /// The color of the stop. + public Color Color { get; set; } + + /// At which percentage this stop applies. Should be between 0 and 1, inclusively. + public float StopPercentage { get; set; } + } + + /// A bezier segment. + /// + /// Cubic Bezier segment starts from P0, flies in tangent to direction from P0 to P1, + /// then lands in direction from P2 to P3, to finally end exactly at P3. + /// + public struct BezierSegment + { + /// Origin point of the segment. + public Vector2 P0; + + /// First control point of the segment. + public Vector2 P1; + + /// Second control point of the segment. + public Vector2 P2; + + /// Ending point of the segment. + public Vector2 P3; + } + + /// A bezier path segment. + /// + /// Like BezierSegment but implies connectivity of segments, where segments[0].P3 is actually segments[1].P0 + /// + public struct BezierPathSegment + { + /// Origin point of the segment. + public Vector2 P0; + + /// First control point of the segment. + public Vector2 P1; + + /// Second control point of the segment. + public Vector2 P2; + } + + /// A chain of bezier paths, optionnally closed. + public struct BezierContour + { + /// An array of every path segments on the contour. + /// Closed paths should not add a dedicated closing segment. It is implied by the 'closed' property. + public BezierPathSegment[] Segments { get; set; } + + /// A boolean indicating if the contour should be closed. + /// + /// When set to true, closed path will connect the last path segment to the first path segment, by using the + /// last path segment's P1 and P2 as control points. + /// + public bool Closed { get; set; } + } + + /// The IFill interface is implemented by filling techniques (solid, texture or gradient). + public interface IFill + { + /// The filling method (non-zero or even-odd) of the fill. + FillMode Mode { get; set; } + + /// The opacity of the fill. + float Opacity { get; set; } + } + + /// Fills a shape with a single color. + public class SolidFill : IFill + { + /// The color of the fill. + public Color Color { get; set; } + + /// The opacity of the fill. + public float Opacity { get { return m_Opacity; } set { m_Opacity = value; } } + private float m_Opacity = 1.0f; + + /// The filling method (non-zero or even-odd) of the fill. + public FillMode Mode { get; set; } + } + + /// Fills a shape with a gradient. + /// + /// Size of the fill is always assumed to cover the entire element's bounding box. + /// Radial fills are centered in the element's bounding box. Its radii are half the bounding box dimensions in each direction. + /// Linear fills start from the left edge to the right edge of the element's bounding box. + /// + public class GradientFill : IFill + { + /// The fill type (linear or gradient). + public GradientFillType Type { get; set; } + + /// An array of stops defining the gradient colors. + public GradientStop[] Stops { get; set; } + + /// The filling method (non-zero or even-odd) of the fill. + public FillMode Mode { get; set; } + + /// The opacity of the fill. + public float Opacity { get { return m_Opacity; } set { m_Opacity = value; } } + private float m_Opacity = 1.0f; + + /// The adressing mode (wrap, clamp or mirror) of this fill. + public AddressMode Addressing { get; set; } + + /// A position within the unit circle (-1,1) where 0 falls in the middle of the fill. + public Vector2 RadialFocus { get; set; } + } + + /// Fills a shape with a texture. + public class TextureFill : IFill + { + /// The texture to fill the shape with. + public Texture2D Texture { get; set; } + + /// The filling method (non-zero or even-odd) of the fill. + public FillMode Mode { get; set; } + + /// The opacity of the fill. + public float Opacity { get { return m_Opacity; } set { m_Opacity = value; } } + private float m_Opacity = 1.0f; + + /// The adressing mode (wrap, clamp or mirror) of this fill. + public AddressMode Addressing { get; set; } + } + + /// Fills a shape with a pattern. + public class PatternFill : IFill + { + /// The filling method (non-zero or even-odd) of the fill. + public FillMode Mode { get; set; } + + /// The opacity of the fill. + public float Opacity { get { return m_Opacity; } set { m_Opacity = value; } } + private float m_Opacity = 1.0f; + + /// The root node of the pattern + public SceneNode Pattern { get; set; } + + /// The rectangle that is repeated + public Rect Rect { get; set; } + } + + /// Defines how strokes should be rendered. + public class Stroke + { + /// The stroke color. + public Color Color { + get { + var solidFill = Fill as SolidFill; + if (solidFill == null) return new Color(); + return solidFill.Color; + } + set { + Fill = new SolidFill() { Color = value }; + } + } + + /// The stroke fill. + public IFill Fill { get; set; } + + /// A transformation specific to the fill. + public Matrix2D FillTransform { get { return m_FillTransform; } set { m_FillTransform = value; } } + private Matrix2D m_FillTransform = Matrix2D.identity; + + /// The stroke half-thickness. + public float HalfThickness { get; set; } + + /// The stroke pattern (dashes). + /// Even entries mark a fill and odd entries mark void + public float[] Pattern { get; set; } + + /// An offset to where the pattern should start. + public float PatternOffset { get; set; } + + /// How far the tipped corners may extrude. + public float TippedCornerLimit { get; set; } + } + + /// Defines properties of paths. + public struct PathProperties + { + /// The stroke used to render the path. + public Stroke Stroke { get; set; } + + /// How the beginning of the path should be displayed. + public PathEnding Head { get; set; } + + /// How the end of the path should be displayed. + public PathEnding Tail { get; set; } + + /// How the corners of the path should be displayed. + public PathCorner Corners { get; set; } + } + + /// A generic filled shape. + public class Shape + { + /// All the contours defining the shape. + /// + /// Some of these coutours may be holes in the shape, depending on the fill mode used . + /// + public BezierContour[] Contours { get; set; } + + /// The fill used on the shape. + public IFill Fill { get; set; } + + /// A transformation specific to the fill. + public Matrix2D FillTransform { get { return m_FillTransform; } set { m_FillTransform = value; } } + private Matrix2D m_FillTransform = Matrix2D.identity; + + /// The path properties. + public PathProperties PathProps { get; set; } + + /// Whether the specified contours are convex or not + /// + /// Set this to true when you know the shape contours are convex. + /// This will allow for a faster tessellation process in some circumstances. + /// + public bool IsConvex { get; set; } + } + + /// A node inside a hierarchy. + public class SceneNode + { + /// The list of children nodes. + public List Children { get; set; } + + /// The list of shapes inside this node. + public List Shapes { get; set; } + + /// The transform of the node. + public Matrix2D Transform { get { return m_Transform; } set { m_Transform = value; } } + private Matrix2D m_Transform = Matrix2D.identity; + + /// A clipper hierarchy that will clip this node. + public SceneNode Clipper { get; set; } + } + + /// A scene contains the whole node hierarchy. + public class Scene + { + /// The root of the node hierarchy. + public SceneNode Root { get; set; } + } +} // namespace diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorScene.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorScene.cs.meta new file mode 100644 index 00000000..3e1c9ef7 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorScene.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6317336283684d540b187222a9055e78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorSprite.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorSprite.cs new file mode 100644 index 00000000..6b442662 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorSprite.cs @@ -0,0 +1,317 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using System.Linq; +using Unity.Collections; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.U2D; +#if !(UNITY_2019_3_OR_NEWER) +using UnityEngine.Experimental.U2D; +#endif +using UnityEngine.Experimental.Rendering; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + public static partial class VectorUtils + { + /// The alignement of the sprite, to determine the location of the pivot. + public enum Alignment + { + /// Center alignment. + Center = 0, + + /// Top-left alignment. + TopLeft = 1, + + /// Top-center alignment. + TopCenter = 2, + + /// Top-right alignment. + TopRight = 3, + + /// Left-center alignment. + LeftCenter = 4, + + /// Right-center alignment. + RightCenter = 5, + + /// Bottom-left alignment. + BottomLeft = 6, + + /// Bottom-center alignment. + BottomCenter = 7, + + /// Bottom-right alignment. + BottomRight = 8, + + /// Custom alignment. + /// + /// Uses a custom alignment that will be used when building the sprite using the method. + /// + Custom = 9, + + /// SVG origin alignment. + /// + /// This will use the origin of the SVG document as the origin of the sprite. + /// + SVGOrigin = 10 + } + + private static void FlipYAxis(IList vertices) + { + var bbox = Bounds(vertices); + var h = bbox.height; + for (int i = 0; i < vertices.Count; ++i) + { + var v = vertices[i]; + v.y -= bbox.position.y; + v.y = h - v.y; + v.y += bbox.position.y; + vertices[i] = v; + } + } + + internal enum WindingDir + { + CW, + CCW + } + + internal static void AdjustWinding(Vector2[] vertices, UInt16[] indices, WindingDir dir) + { + bool shouldFlip = false; + var length = indices.Length; + for (int i = 0; i < (length - 2); i += 3) + { + var v0 = (Vector3)vertices[indices[i]]; + var v1 = (Vector3)vertices[indices[i+1]]; + var v2 = (Vector3)vertices[indices[i+2]]; + var s = (v1 - v0).normalized; + var t = (v2 - v0).normalized; + float dot = Vector3.Dot(s, t); + if (s == Vector3.zero || t == Vector3.zero || dot > 0.9999f || dot < -0.9999f) + continue; + var n = Vector3.Cross(s, t); + if (n.sqrMagnitude < 0.0001f) + continue; + shouldFlip = dir == WindingDir.CCW ? n.z < 0.0f : n.z > 0.0f; + break; + } + if (shouldFlip) + { + for (int i = 0; i < (length - 2); i += 3) + { + var tmp = indices[i]; + indices[i] = indices[i+1]; + indices[i+1] = tmp; + } + } + } + + private static void FlipRangeIfNecessary(List vertices, List indices, int indexStart, int indexEnd, bool flipYAxis) + { + // For the range, find the first valid triangle and check its winding order. If that triangle needs flipping, then flip the whole range. + bool shouldFlip = false; + for (int i = indexStart; i < (indexEnd - 2); i += 3) + { + var v0 = (Vector3)vertices[indices[i]]; + var v1 = (Vector3)vertices[indices[i + 1]]; + var v2 = (Vector3)vertices[indices[i + 2]]; + var s = (v1 - v0).normalized; + var t = (v2 - v0).normalized; + float dot = Vector3.Dot(s, t); + if (s == Vector3.zero || t == Vector3.zero || dot > 0.99f || dot < -0.99f) + continue; + var n = Vector3.Cross(s, t); + if (n.sqrMagnitude < 0.001f) + continue; + shouldFlip = flipYAxis ? n.z < 0.0f : n.z > 0.0f; + break; + } + if (shouldFlip) + { + for (int i = indexStart; i < (indexEnd - 2); i += 3) + { + var tmp = indices[i + 1]; + indices[i + 1] = indices[i + 2]; + indices[i + 2] = tmp; + } + } + } + + internal static void RenderFromArrays(Vector2[] vertices, UInt16[] indices, Vector2[] uvs, Color[] colors, Vector2[] settings, Texture2D texture, Material mat, bool clear = true) + { + mat.SetTexture("_MainTex", texture); + mat.SetPass(0); + + if (clear) + GL.Clear(true, true, Color.clear); + + GL.PushMatrix(); + GL.LoadOrtho(); + GL.Color(new Color(1, 1, 1, 1)); + GL.Begin(GL.TRIANGLES); + for (int i = 0; i < indices.Length; ++i) + { + ushort index = indices[i]; + Vector2 vertex = vertices[index]; + Vector2 uv = uvs[index]; + GL.TexCoord2(uv.x, uv.y); + if (settings != null) + { + var setting = settings[index]; + GL.MultiTexCoord2(2, setting.x, setting.y); + } + if (colors != null) + GL.Color(colors[index]); + GL.Vertex3(vertex.x, vertex.y, 0); + } + GL.End(); + GL.PopMatrix(); + + mat.SetTexture("_MainTex", null); + } + + /// Draws a vector sprite using the provided material. + /// The sprite to render + /// The material used for rendering + /// If true, clear the render target before rendering + public static void RenderSprite(Sprite sprite, Material mat, bool clear = true) + { + float spriteWidth = sprite.rect.width; + float spriteHeight = sprite.rect.height; + float pixelsToUnits = sprite.rect.width / sprite.bounds.size.x; + + var uvs = sprite.uv; + var triangles = sprite.triangles; + var pivot = sprite.pivot; + + var vertices = sprite.vertices.Select(v => + new Vector2((v.x * pixelsToUnits + pivot.x)/spriteWidth, + (v.y * pixelsToUnits + pivot.y)/spriteHeight) + ).ToArray(); + + Color[] colors = null; + if (sprite.HasVertexAttribute(VertexAttribute.Color)) + colors = sprite.GetVertexAttribute(VertexAttribute.Color).Select(c => (Color)c).ToArray(); + + Vector2[] settings = null; + if (sprite.HasVertexAttribute(VertexAttribute.TexCoord2)) + settings = sprite.GetVertexAttribute(VertexAttribute.TexCoord2).ToArray(); + + RenderFromArrays(vertices, sprite.triangles, sprite.uv, colors, settings, sprite.texture, mat, clear); + } + + private static Material s_ExpandEdgesMat; + + /// Renders a vector sprite to Texture2D. + /// The sprite to render + /// The desired width of the resulting texture + /// The desired height of the resulting texture + /// The material used to render the sprite + /// The number of samples per pixel for anti-aliasing + /// When true, expand the edges to avoid a dark banding effect caused by filtering. This is slower to render and uses more graphics memory. + /// A Texture2D object containing the rendered vector sprite + public static Texture2D RenderSpriteToTexture2D(Sprite sprite, int width, int height, Material mat, int antiAliasing = 1, bool expandEdges = false) + { + if (width <= 0 || height <= 0) + return null; + + RenderTexture tex = null; + var oldActive = RenderTexture.active; + + var desc = new RenderTextureDescriptor(width, height, RenderTextureFormat.ARGB32, 0) { + msaaSamples = 1, + sRGB = QualitySettings.activeColorSpace == ColorSpace.Linear + }; + + if (expandEdges) + { + // Draw the sprite normally to be used as a background, no-antialiasing + var normalTex = RenderTexture.GetTemporary(desc); + RenderTexture.active = normalTex; + RenderSprite(sprite, mat); + + // Expand the edges and make completely transparent + if (s_ExpandEdgesMat == null) + { + var shader = Shader.Find("Hidden/VectorExpandEdges"); + if (shader == null) + { +#if UNITY_EDITOR + // Workaround for case 1167309. + // Shader.Find() seems to fail on the package shader when doing a fresh import with a clean Library folder, + // but AssetDatabase.LoadAssetAtPath() works fine though. + shader = UnityEditor.AssetDatabase.LoadAssetAtPath("Packages/com.unity.vectorgraphics/Runtime/Shaders/VectorExpandEdges.shader"); +#else + return null; +#endif + } + s_ExpandEdgesMat = new Material(shader); + } + + var expandTex = RenderTexture.GetTemporary(desc); + RenderTexture.active = expandTex; + GL.Clear(false, true, Color.clear); + Graphics.Blit(normalTex, expandTex, s_ExpandEdgesMat, 0); + RenderTexture.ReleaseTemporary(normalTex); + + // Draw the sprite again, but clear with the texture rendered in the previous step, + // this will make the bilinear filter to interpolate the colors with values different + // than "transparent black", which causes black-ish outlines around the shape. + desc.msaaSamples = antiAliasing; + tex = RenderTexture.GetTemporary(desc); + RenderTexture.active = tex; + Graphics.Blit(expandTex, tex); + RenderTexture.ReleaseTemporary(expandTex); // Use the expanded texture to clear the buffer + + RenderTexture.active = tex; + RenderSprite(sprite, mat, false); + } + else + { + desc.msaaSamples = antiAliasing; + tex = RenderTexture.GetTemporary(desc); + RenderTexture.active = tex; + RenderSprite(sprite, mat); + } + + Texture2D copy = new Texture2D(width, height, TextureFormat.RGBA32, false); + copy.hideFlags = HideFlags.HideAndDontSave; + copy.ReadPixels(new Rect(0, 0, width, height), 0, 0); + copy.Apply(); + + RenderTexture.active = oldActive; + RenderTexture.ReleaseTemporary(tex); + + return copy; + } + + internal static Vector2 GetPivot(Alignment alignment, Vector2 customPivot, Rect bbox, bool flipYAxis) + { + switch (alignment) + { + case Alignment.Center: return new Vector2(0.5f, 0.5f); + case Alignment.TopLeft: return new Vector2(0.0f, 1.0f); + case Alignment.TopCenter: return new Vector2(0.5f, 1.0f); + case Alignment.TopRight: return new Vector2(1.0f, 1.0f); + case Alignment.LeftCenter: return new Vector2(0.0f, 0.5f); + case Alignment.RightCenter: return new Vector2(1.0f, 0.5f); + case Alignment.BottomLeft: return new Vector2(0.0f, 0.0f); + case Alignment.BottomCenter: return new Vector2(0.5f, 0.0f); + case Alignment.BottomRight: return new Vector2(1.0f, 0.0f); + case Alignment.SVGOrigin: + { + var p = -bbox.position / bbox.size; + if (flipYAxis) + p.y = 1.0f - p.y; + return p; + } + case Alignment.Custom: return customPivot; + } + return Vector2.zero; + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorSprite.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorSprite.cs.meta new file mode 100644 index 00000000..41f68a3c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorSprite.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c138b02f3c416c146aa000916ae2f816 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorTessellation.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorTessellation.cs new file mode 100644 index 00000000..359b3213 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorTessellation.cs @@ -0,0 +1,861 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + public static partial class VectorUtils + { + /// + /// Structure to store the tessellation options. + /// + public struct TessellationOptions + { + private float m_MaxCordDev, m_MaxCordDevSq, m_MaxTanAngleDev, m_MaxTanAngleDevCosine, m_StepSize; + + /// + /// The uniform tessellation step distance. + /// + public float StepDistance { get; set; } // A split to happen uniformly at fixed distances + + /// + /// The maximum distance on the cord to a straight line between to points after which more tessellation will be generated. + /// To disable, specify float.MaxValue. + /// + public float MaxCordDeviation // Maximum distance allowed between a cord and its line projection + { + get { return m_MaxCordDev; } + set + { + m_MaxCordDev = Mathf.Max(value, 0.0f); + m_MaxCordDevSq = (m_MaxCordDev == float.MaxValue) ? float.MaxValue : m_MaxCordDev * m_MaxCordDev; + } + } + internal float MaxCordDeviationSquared { get { return m_MaxCordDevSq; } } + + /// + /// The maximum angle (in degrees) between the curve tangent and the next point after which more tessellation will be generated. + /// To disable, specify float.MaxValue. + /// + public float MaxTanAngleDeviation // The maximum angle allowed (in radians) between tangents before a split happens + { + get { return m_MaxTanAngleDev; } + set + { + m_MaxTanAngleDev = Mathf.Clamp(value, VectorUtils.Epsilon, Mathf.PI * 0.5f); + m_MaxTanAngleDevCosine = Mathf.Cos(m_MaxTanAngleDev); + } + } + internal float MaxTanAngleDeviationCosine { get { return m_MaxTanAngleDevCosine; } } // Cosine of the maximum angle allowed between tangents before a split happens + + /// + /// The number of samples used internally to evaluate the curves. More samples = higher quality. + /// Should be between 0 and 1 (inclusive). + /// + public float SamplingStepSize + { + get { return m_StepSize; } + set { m_StepSize = Mathf.Clamp(value, Epsilon, 1.0f); } + } + } + + /// + /// Tessellates a path. + /// + /// The path to tessellate + /// The path properties + /// The tessellation options + /// The resulting vertices + /// The resulting triangles + /// + /// The individual line segments generated during tessellation are made out of a set of ordered vertices. It is important + /// to honor this ordering so joining and and capping connect properly with the existing vertices without generating dupes. + /// The ordering assumed is as follows: + /// The last two vertices of a piece must be such that the first is generated at the end with a positive half-thickness + /// while the second vertex is at the end too but at a negative half-thickness. + /// No assumptions are enforced for other vertices before the two last vertices. + /// + public static void TessellatePath(BezierContour contour, PathProperties pathProps, TessellationOptions tessellateOptions, out Vector2[] vertices, out UInt16[] indices) + { + if (tessellateOptions.StepDistance < Epsilon) + throw new Exception("stepDistance too small"); + + if (contour.Segments.Length < 2) + { + vertices = new Vector2[0]; + indices = new UInt16[0]; + return; + } + + tessellateOptions.MaxCordDeviation = Mathf.Max(0.0001f, tessellateOptions.MaxCordDeviation); + tessellateOptions.MaxTanAngleDeviation = Mathf.Max(0.0001f, tessellateOptions.MaxTanAngleDeviation); + + UnityEngine.Profiling.Profiler.BeginSample("TessellatePath"); + + float[] segmentLengths = VectorUtils.SegmentsLengths(contour.Segments, contour.Closed); + + // Approximate the number of vertices/indices we need to store the results so we reduce memory reallocations during work + float approxTotalLength = 0.0f; + foreach (var s in segmentLengths) + approxTotalLength += s; + + int approxStepCount = Math.Max((int)(approxTotalLength / tessellateOptions.StepDistance + 0.5f), 2); + if (pathProps.Stroke.Pattern != null) + approxStepCount += pathProps.Stroke.Pattern.Length * 2; + + List verts = new List(approxStepCount * 2 + 32); // A little bit possibly for the endings + List inds = new List((int)(verts.Capacity * 1.5f)); // Usually every 4 verts represent a quad that uses 6 indices + + var patternIt = new PathPatternIterator(pathProps.Stroke.Pattern, pathProps.Stroke.PatternOffset); + var pathIt = new PathDistanceForwardIterator(contour.Segments, contour.Closed, tessellateOptions.MaxCordDeviationSquared, tessellateOptions.MaxTanAngleDeviationCosine, tessellateOptions.SamplingStepSize); + + JoiningInfo[] joiningInfo = new JoiningInfo[2]; + HandleNewSegmentJoining(pathIt, patternIt, joiningInfo, pathProps.Stroke.HalfThickness, segmentLengths); + + int rangeIndex = 0; + while (!pathIt.Ended) + { + if (patternIt.IsSolid) + TessellateRange(patternIt.SegmentLength, pathIt, patternIt, pathProps, tessellateOptions, joiningInfo, segmentLengths, approxTotalLength, rangeIndex++, verts, inds); + else + SkipRange(patternIt.SegmentLength, pathIt, patternIt, pathProps, joiningInfo, segmentLengths); + patternIt.Advance(); + } + + vertices = verts.ToArray(); + indices = inds.ToArray(); + + UnityEngine.Profiling.Profiler.EndSample(); + } + + static Vector2[] TraceShape(BezierContour contour, Stroke stroke, TessellationOptions tessellateOptions) + { + if (tessellateOptions.StepDistance < Epsilon) + throw new Exception("stepDistance too small"); + + if (contour.Segments.Length < 2) + return new Vector2[0]; + + float[] segmentLengths = VectorUtils.SegmentsLengths(contour.Segments, contour.Closed); + + // Approximate the number of vertices/indices we need to store the results so we reduce memory reallocations during work + float approxTotalLength = 0.0f; + foreach (var s in segmentLengths) + approxTotalLength += s; + + int approxStepCount = Math.Max((int)(approxTotalLength / tessellateOptions.StepDistance + 0.5f), 2); + var strokePattern = stroke != null ? stroke.Pattern : null; + var strokePatternOffset = stroke != null ? stroke.PatternOffset : 0.0f; + if (strokePattern != null) + approxStepCount += strokePattern.Length * 2; + + List verts = new List(approxStepCount); // A little bit possibly for the endings + + var patternIt = new PathPatternIterator(strokePattern, strokePatternOffset); + var pathIt = new PathDistanceForwardIterator(contour.Segments, true, tessellateOptions.MaxCordDeviationSquared, tessellateOptions.MaxTanAngleDeviationCosine, tessellateOptions.SamplingStepSize); + verts.Add(pathIt.EvalCurrent()); + + while (!pathIt.Ended) + { + float distance = patternIt.SegmentLength; + float startingLength = pathIt.LengthSoFar; + float unitsRemaining = Mathf.Min(tessellateOptions.StepDistance, distance); + bool endedEntirePath = false; + for (;;) + { + var result = pathIt.AdvanceBy(unitsRemaining, out unitsRemaining); + if (result == PathDistanceForwardIterator.Result.Ended) + { + endedEntirePath = true; + break; + } + else if (result == PathDistanceForwardIterator.Result.NewSegment) + verts.Add(pathIt.EvalCurrent()); + + if ((unitsRemaining <= Epsilon) && + !TryGetMoreRemainingUnits(ref unitsRemaining, pathIt, startingLength, distance, tessellateOptions.StepDistance)) + { + break; + } + + if (result == PathDistanceForwardIterator.Result.Stepped) + verts.Add(pathIt.EvalCurrent()); + } + + // Ending + if (endedEntirePath) + break; + else verts.Add(pathIt.EvalCurrent()); + patternIt.Advance(); + } + + if ((verts[0] - verts[verts.Count - 1]).sqrMagnitude < Epsilon) + verts.RemoveAt(verts.Count - 1); + return verts.ToArray(); // Why not return verts itself? + } + + static bool TryGetMoreRemainingUnits(ref float unitsRemaining, PathDistanceForwardIterator pathIt, float startingLength, float distance, float stepDistance) + { + float distanceCrossedSoFar = pathIt.LengthSoFar - startingLength; + float epsilon = Math.Max(Epsilon, distance * Epsilon * 100.0f); + if ((distance - distanceCrossedSoFar) <= epsilon) + return false; + if (distanceCrossedSoFar + stepDistance > distance) + unitsRemaining = distance - distanceCrossedSoFar; + else unitsRemaining = stepDistance; + return true; + } + + static void HandleNewSegmentJoining(PathDistanceForwardIterator pathIt, PathPatternIterator patternIt, JoiningInfo[] joiningInfo, float halfThickness, float[] segmentLengths) + { + joiningInfo[0] = joiningInfo[1]; + joiningInfo[1] = null; + + if (!patternIt.IsSolidAt(pathIt.LengthSoFar + segmentLengths[pathIt.CurrentSegment])) + return; // The joining center falls outside the pattern, so don't join... period + + if (pathIt.Closed && pathIt.Segments.Count <= 2) + return; // Not enough segments to do proper closing + + if (pathIt.Closed) + { + JoiningInfo closing; + if ((pathIt.CurrentSegment == 0) || (pathIt.CurrentSegment == pathIt.Segments.Count - 2)) + { + closing = ForeseeJoining( + VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.Segments.Count - 2), + VectorUtils.PathSegmentAtIndex(pathIt.Segments, 0), + halfThickness, segmentLengths[pathIt.Segments.Count - 2]); + + if (pathIt.CurrentSegment == 0) + joiningInfo[0] = closing; + else + { + joiningInfo[1] = closing; + return; + } + } + else if (pathIt.CurrentSegment > pathIt.Segments.Count - 2) + return; + } + else if (pathIt.CurrentSegment >= pathIt.Segments.Count - 2) + return; + + joiningInfo[1] = ForeseeJoining( + VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.CurrentSegment), + VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.CurrentSegment + 1), + halfThickness, segmentLengths[pathIt.CurrentSegment]); + } + + static void SkipRange( + float distance, PathDistanceForwardIterator pathIt, PathPatternIterator patternIt, + PathProperties pathProps, JoiningInfo[] joiningInfo, float[] segmentLengths) + { + float unitsRemaining = distance; + while (unitsRemaining > Epsilon) + { + var result = pathIt.AdvanceBy(unitsRemaining, out unitsRemaining); + switch (result) + { + case PathDistanceForwardIterator.Result.Ended: + return; + case PathDistanceForwardIterator.Result.Stepped: + if (unitsRemaining < Epsilon) + return; + break; + case PathDistanceForwardIterator.Result.NewSegment: + HandleNewSegmentJoining(pathIt, patternIt, joiningInfo, pathProps.Stroke.HalfThickness, segmentLengths); + break; + } + } + } + + static void TessellateRange( + float distance, PathDistanceForwardIterator pathIt, PathPatternIterator patternIt, PathProperties pathProps, + TessellationOptions tessellateOptions, JoiningInfo[] joiningInfo, float[] segmentLengths, float totalLength, int rangeIndex, List verts, List inds) + { + bool startOfLoop = pathIt.Closed && (pathIt.CurrentSegment == 0) && (pathIt.CurrentT == 0.0f); + if (startOfLoop && (joiningInfo[0] != null)) + { + GenerateJoining(joiningInfo[0], pathProps.Corners, pathProps.Stroke.HalfThickness, pathProps.Stroke.TippedCornerLimit, tessellateOptions, verts, inds); + } + else + { + var pathEnding = pathProps.Head; + + // If pattern at the end will overlap with beginning, use a chopped ending to allow merging + if (pathIt.Closed && rangeIndex == 0 && patternIt.IsSolidAt(pathIt.CurrentT) && patternIt.IsSolidAt(totalLength)) + pathEnding = PathEnding.Chop; + + GenerateTip(VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.CurrentSegment), true, pathIt.CurrentT, pathEnding, pathProps.Stroke.HalfThickness, tessellateOptions, verts, inds); + } + + float startingLength = pathIt.LengthSoFar; + float unitsRemaining = Mathf.Min(tessellateOptions.StepDistance, distance); + bool endedEntirePath = false; + for (;;) + { + var result = pathIt.AdvanceBy(unitsRemaining, out unitsRemaining); + if (result == PathDistanceForwardIterator.Result.Ended) + { + endedEntirePath = true; + break; + } + else if (result == PathDistanceForwardIterator.Result.NewSegment) + { + if (joiningInfo[1] != null) + GenerateJoining(joiningInfo[1], pathProps.Corners, pathProps.Stroke.HalfThickness, pathProps.Stroke.TippedCornerLimit, tessellateOptions, verts, inds); + else AddSegment(VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.CurrentSegment), pathIt.CurrentT, pathProps.Stroke.HalfThickness, null, pathIt.SegmentLengthSoFar, verts, inds); + HandleNewSegmentJoining(pathIt, patternIt, joiningInfo, pathProps.Stroke.HalfThickness, segmentLengths); + } + + if ((unitsRemaining <= Epsilon) && + !TryGetMoreRemainingUnits(ref unitsRemaining, pathIt, startingLength, distance, tessellateOptions.StepDistance)) + { + break; + } + + if (result == PathDistanceForwardIterator.Result.Stepped) + AddSegment(VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.CurrentSegment), pathIt.CurrentT, pathProps.Stroke.HalfThickness, joiningInfo, pathIt.SegmentLengthSoFar, verts, inds); + } + + // Ending + if (endedEntirePath && pathIt.Closed) + { + // No joining needed, the start and end of the path should just connect + inds.Add(0); + inds.Add(1); + inds.Add((UInt16)(verts.Count - 2)); + inds.Add((UInt16)(verts.Count - 1)); + inds.Add((UInt16)(verts.Count - 2)); + inds.Add(1); + } + else + { + AddSegment(VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.CurrentSegment), pathIt.CurrentT, pathProps.Stroke.HalfThickness, joiningInfo, pathIt.SegmentLengthSoFar, verts, inds); + GenerateTip(VectorUtils.PathSegmentAtIndex(pathIt.Segments, pathIt.CurrentSegment), false, pathIt.CurrentT, pathProps.Tail, pathProps.Stroke.HalfThickness, tessellateOptions, verts, inds); + } + } + + static void AddSegment(BezierSegment segment, float toT, float halfThickness, JoiningInfo[] joinInfo, float segmentLengthSoFar, List verts, List inds) + { + Vector2 tanTo, normTo; + Vector2 posTo = VectorUtils.EvalFull(segment, toT, out tanTo, out normTo); + + Vector2 posThickness = posTo + normTo * halfThickness; + Vector2 negThickness = posTo + normTo * -halfThickness; + + if (joinInfo != null) + { + if ((joinInfo[0] != null) && (segmentLengthSoFar < joinInfo[0].InnerCornerDistFromStart)) + { + if (joinInfo[0].RoundPosThickness) + negThickness = joinInfo[0].InnerCornerVertex; + else posThickness = joinInfo[0].InnerCornerVertex; + } + + if ((joinInfo[1] != null) && (segmentLengthSoFar > joinInfo[1].InnerCornerDistToEnd)) + { + if (joinInfo[1].RoundPosThickness) + negThickness = joinInfo[1].InnerCornerVertex; + else posThickness = joinInfo[1].InnerCornerVertex; + } + } + + System.Diagnostics.Debug.Assert(verts.Count >= 2); + int indexStart = verts.Count - 2; + verts.Add(posThickness); + verts.Add(negThickness); + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 3)); + inds.Add((UInt16)(indexStart + 1)); + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 3)); + } + + class JoiningInfo + { + public Vector2 JoinPos; + public Vector2 TanAtEnd, TanAtStart; + public Vector2 NormAtEnd, NormAtStart; + public Vector2 PosThicknessStart, NegThicknessStart; + public Vector2 PosThicknessEnd, NegThicknessEnd; + public Vector2 PosThicknessClosingPoint, NegThicknessClosingPoint; + public bool RoundPosThickness; + public bool SimpleJoin; + public Vector2 InnerCornerVertex; + public float InnerCornerDistToEnd, InnerCornerDistFromStart; + } + + static JoiningInfo ForeseeJoining(BezierSegment end, BezierSegment start, float halfThickness, float endSegmentLength) + { + JoiningInfo joinInfo = new JoiningInfo(); + + // The joining generates the vertices at both ends as well as the joining itself + joinInfo.JoinPos = end.P3; + joinInfo.TanAtEnd = VectorUtils.EvalTangent(end, 1.0f); + joinInfo.NormAtEnd = Vector2.Perpendicular(joinInfo.TanAtEnd); + joinInfo.TanAtStart = VectorUtils.EvalTangent(start, 0.0f); + joinInfo.NormAtStart = Vector2.Perpendicular(joinInfo.TanAtStart); + + // If the tangents are continuous at the join location, we don't have + // to generate a corner, we do a "simple" join by just connecting the vertices + // from the two segments directly + float cosAngleBetweenTans = Vector2.Dot(joinInfo.TanAtEnd, joinInfo.TanAtStart); + joinInfo.SimpleJoin = Mathf.Approximately(Mathf.Abs(cosAngleBetweenTans), 1.0f); + if (joinInfo.SimpleJoin) + return null; + + joinInfo.PosThicknessEnd = joinInfo.JoinPos + joinInfo.NormAtEnd * halfThickness; + joinInfo.NegThicknessEnd = joinInfo.JoinPos - joinInfo.NormAtEnd * halfThickness; + joinInfo.PosThicknessStart = joinInfo.JoinPos + joinInfo.NormAtStart * halfThickness; + joinInfo.NegThicknessStart = joinInfo.JoinPos - joinInfo.NormAtStart * halfThickness; + + if (joinInfo.SimpleJoin) + { + joinInfo.PosThicknessClosingPoint = Vector2.LerpUnclamped(joinInfo.PosThicknessEnd, joinInfo.PosThicknessStart, 0.5f); + joinInfo.NegThicknessClosingPoint = Vector2.LerpUnclamped(joinInfo.NegThicknessEnd, joinInfo.NegThicknessStart, 0.5f); + } + else + { + joinInfo.PosThicknessClosingPoint = VectorUtils.IntersectLines(joinInfo.PosThicknessEnd, joinInfo.PosThicknessEnd + joinInfo.TanAtEnd, joinInfo.PosThicknessStart, joinInfo.PosThicknessStart + joinInfo.TanAtStart); + joinInfo.NegThicknessClosingPoint = VectorUtils.IntersectLines(joinInfo.NegThicknessEnd, joinInfo.NegThicknessEnd + joinInfo.TanAtEnd, joinInfo.NegThicknessStart, joinInfo.NegThicknessStart + joinInfo.TanAtStart); + + if (float.IsInfinity(joinInfo.PosThicknessClosingPoint.x) || float.IsInfinity(joinInfo.PosThicknessClosingPoint.y)) + joinInfo.PosThicknessClosingPoint = joinInfo.JoinPos; + if (float.IsInfinity(joinInfo.NegThicknessClosingPoint.x) || float.IsInfinity(joinInfo.NegThicknessClosingPoint.y)) + joinInfo.NegThicknessClosingPoint = joinInfo.JoinPos; + } + + // Should we round the positive thickness side or the negative thickness side? + joinInfo.RoundPosThickness = PointOnTheLeftOfLine(Vector2.zero, joinInfo.TanAtEnd, joinInfo.TanAtStart); + + // Inner corner vertex should be calculated by intersection of the inner segments + Vector2[] startTrail = null, endTrail = null; + Vector2 intersectionOnStart = Vector2.zero, intersectionOnEnd = Vector2.zero; + if (!joinInfo.SimpleJoin) + { + BezierSegment endFlipped = VectorUtils.FlipSegment(end); + Vector2 thicknessClosingPoint = joinInfo.RoundPosThickness ? joinInfo.PosThicknessClosingPoint : joinInfo.NegThicknessClosingPoint; + Vector2 meetingPoint = end.P3; + Vector2 thicknessDiagonalEnd = meetingPoint + (thicknessClosingPoint - meetingPoint) * 10.0f; + startTrail = LineBezierThicknessIntersect( + start, joinInfo.RoundPosThickness ? -halfThickness : halfThickness, meetingPoint, thicknessDiagonalEnd, + out joinInfo.InnerCornerDistFromStart, out intersectionOnStart); + endTrail = LineBezierThicknessIntersect( + endFlipped, joinInfo.RoundPosThickness ? halfThickness : -halfThickness, meetingPoint, thicknessDiagonalEnd, + out joinInfo.InnerCornerDistToEnd, out intersectionOnEnd); + } + + bool intersectionFound = false; + if ((startTrail != null) && (endTrail != null)) + { + var intersect = VectorUtils.IntersectLines(startTrail[0], startTrail[1], endTrail[0], endTrail[1]); + var isOnStartTrail = PointOnLineIsWithinSegment(startTrail[0], startTrail[1], intersect); + var isOnEndTrail = PointOnLineIsWithinSegment(endTrail[0], endTrail[1], intersect); + if (!float.IsInfinity(intersect.x) && isOnStartTrail && isOnEndTrail) + { + var vStart = intersectionOnStart - intersect; + var vEnd = intersectionOnEnd - intersect; + joinInfo.InnerCornerDistFromStart += (vStart == Vector2.zero) ? 0.0f : vStart.magnitude; + joinInfo.InnerCornerDistToEnd += (vEnd == Vector2.zero) ? 0.0f : vEnd.magnitude; + joinInfo.InnerCornerDistToEnd = endSegmentLength - joinInfo.InnerCornerDistToEnd; + joinInfo.InnerCornerVertex = intersect; // Found it! + intersectionFound = true; + } + } + + if (!intersectionFound) + { + joinInfo.InnerCornerVertex = joinInfo.JoinPos + ((joinInfo.TanAtStart - joinInfo.TanAtEnd) / 2.0f).normalized * halfThickness; + joinInfo.InnerCornerDistFromStart = 0; + joinInfo.InnerCornerDistToEnd = endSegmentLength; + } + return joinInfo; + } + + static Vector2[] LineBezierThicknessIntersect(BezierSegment seg, float thickness, Vector2 lineFrom, Vector2 lineTo, out float distanceToIntersection, out Vector2 intersection) + { + Vector2 tan = VectorUtils.EvalTangent(seg, 0.0f); + Vector2 nrm = Vector2.Perpendicular(tan); + Vector2 lastPoint = seg.P0 + nrm * thickness; + distanceToIntersection = 0.0f; + intersection = new Vector2(float.PositiveInfinity, float.PositiveInfinity); + float stepT = 0.01f; + float t = 0; + while (t < 1.0f) + { + t += stepT; + var point = VectorUtils.EvalFull(seg, t, out tan, out nrm) + nrm * thickness; + intersection = VectorUtils.IntersectLines(lineFrom, lineTo, lastPoint, point); + if (PointOnLineIsWithinSegment(lastPoint, point, intersection)) + { + distanceToIntersection += (lastPoint - intersection).magnitude; + return new Vector2[] { lastPoint, point }; + } + distanceToIntersection += (lastPoint - point).magnitude; + lastPoint = point; + } + return null; + } + + static bool PointOnLineIsWithinSegment(Vector2 lineFrom, Vector2 lineTo, Vector2 point) + { + // Point is assumed to be already on the line, but we would like to know if it is within the segment specified + var v = (lineTo - lineFrom).normalized; + if (Vector2.Dot(point - lineFrom, v) < -Epsilon) + return false; + if (Vector2.Dot(point - lineTo, v) > Epsilon) + return false; + return true; + } + + static void GenerateJoining(JoiningInfo joinInfo, PathCorner corner, float halfThickness, float tippedCornerLimit, TessellationOptions tessellateOptions, List verts, List inds) + { + // The joining generates the vertices at both ends as well as the joining itself + if (verts.Count == 0) + { + // Starting a path with a joining (meaning a loop) + verts.Add(joinInfo.RoundPosThickness ? joinInfo.PosThicknessEnd : joinInfo.InnerCornerVertex); + verts.Add(joinInfo.RoundPosThickness ? joinInfo.InnerCornerVertex : joinInfo.NegThicknessEnd); + } + + System.Diagnostics.Debug.Assert(verts.Count >= 2); + int indexStart = verts.Count - 2; // Using the last two vertices + + // Convert a tipped corner to a beveled one if tippedCornerLimit ratio is reached + if (corner == PathCorner.Tipped && tippedCornerLimit >= 1.0f) + { + var theta = Vector2.Angle(-joinInfo.TanAtEnd, joinInfo.TanAtStart) * Mathf.Deg2Rad; + var ratio = 1.0f / Mathf.Sin(theta / 2.0f); + if (ratio > tippedCornerLimit) + corner = PathCorner.Beveled; + } + + if (joinInfo.SimpleJoin) + { + // TODO + } + else if (corner == PathCorner.Tipped) + { + verts.Add(joinInfo.PosThicknessClosingPoint); + verts.Add(joinInfo.NegThicknessClosingPoint); + verts.Add(joinInfo.RoundPosThickness ? joinInfo.PosThicknessStart : joinInfo.InnerCornerVertex); + verts.Add(joinInfo.RoundPosThickness ? joinInfo.InnerCornerVertex : joinInfo.NegThicknessStart); + + // Ending to tip + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 3)); + inds.Add((UInt16)(indexStart + 1)); + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 3)); + + // Tip to starting + inds.Add((UInt16)(indexStart + 4)); + inds.Add((UInt16)(indexStart + 3)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 4)); + inds.Add((UInt16)(indexStart + 5)); + inds.Add((UInt16)(indexStart + 3)); + + return; + } + else if (corner == PathCorner.Beveled) + { + verts.Add(joinInfo.RoundPosThickness ? joinInfo.PosThicknessEnd : joinInfo.InnerCornerVertex); // 2 + verts.Add(joinInfo.RoundPosThickness ? joinInfo.InnerCornerVertex : joinInfo.NegThicknessEnd); // 3 + verts.Add(joinInfo.RoundPosThickness ? joinInfo.PosThicknessStart : joinInfo.InnerCornerVertex); // 4 + verts.Add(joinInfo.RoundPosThickness ? joinInfo.InnerCornerVertex : joinInfo.NegThicknessStart); // 5 + + // Ending to tip + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 1)); + inds.Add((UInt16)(indexStart + 1)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 3)); + + // Bevel + if (joinInfo.RoundPosThickness) + { + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 4)); + inds.Add((UInt16)(indexStart + 3)); + } + else + { + inds.Add((UInt16)(indexStart + 3)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 5)); + } + + return; + } + + if (corner == PathCorner.Round) + { + float sweepAngle = Mathf.Acos(Vector2.Dot(joinInfo.NormAtEnd, joinInfo.NormAtStart)); + bool flipArc = false; + if (!PointOnTheLeftOfLine(Vector2.zero, joinInfo.NormAtEnd, joinInfo.NormAtStart)) + { + sweepAngle = -sweepAngle; + flipArc = true; + } + + UInt16 innerCornerVertexIndex = (UInt16)verts.Count; + verts.Add(joinInfo.InnerCornerVertex); + + int arcSegments = CalculateArcSteps(halfThickness, 0, sweepAngle, tessellateOptions); + for (int i = 0; i <= arcSegments; i++) + { + float angle = sweepAngle * (i / (float)arcSegments); + Vector2 nrm = Matrix2D.RotateLH(angle) * joinInfo.NormAtEnd; + if (flipArc) nrm = -nrm; + verts.Add(nrm * halfThickness + joinInfo.JoinPos); + + if (i == 0) + { + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 3)); + inds.Add((UInt16)(indexStart + (joinInfo.RoundPosThickness ? 2 : 1))); + + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + (joinInfo.RoundPosThickness ? 1 : 3))); + } + else + { + if (joinInfo.RoundPosThickness) + { + inds.Add((UInt16)(indexStart + i + (flipArc ? 3 : 2))); + inds.Add((UInt16)(indexStart + i + (flipArc ? 2 : 3))); + inds.Add(innerCornerVertexIndex); + } + else + { + inds.Add((UInt16)(indexStart + i + (flipArc ? 3 : 2))); + inds.Add((UInt16)(indexStart + i + (flipArc ? 2 : 3))); + inds.Add(innerCornerVertexIndex); + } + } + } + + // Manually add the last segment, maintain the expected vertex positioning + int endingVerticesIndex = verts.Count; + if (joinInfo.RoundPosThickness) + { + verts.Add(joinInfo.PosThicknessStart); + verts.Add(joinInfo.InnerCornerVertex); + } + else + { + verts.Add(joinInfo.InnerCornerVertex); + verts.Add(joinInfo.NegThicknessStart); + } + inds.Add((UInt16)(endingVerticesIndex - 1)); + inds.Add((UInt16)(endingVerticesIndex + 0)); + inds.Add(innerCornerVertexIndex); + } + } + + static void GenerateTip(BezierSegment segment, bool atStart, float t, PathEnding ending, float halfThickness, TessellationOptions tessellateOptions, List verts, List inds) + { + // The tip includes the vertices at the end itself + Vector2 tan, nrm; + var pos = VectorUtils.EvalFull(segment, t, out tan, out nrm); + int indexStart = verts.Count; + + switch (ending) + { + case PathEnding.Chop: + if (atStart) + { + verts.Add(pos + nrm * halfThickness); + verts.Add(pos - nrm * halfThickness); + } + else + { + // Not much, path segments are always expected to be generated perpendicular to the path + // at the segment point location, so we don't have to do anything for the ending + } + break; + + case PathEnding.Square: + if (atStart) + { + verts.Add(pos + nrm * halfThickness - tan * halfThickness); + verts.Add(pos - nrm * halfThickness - tan * halfThickness); + verts.Add(pos + nrm * halfThickness); + verts.Add(pos - nrm * halfThickness); + + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 3)); + inds.Add((UInt16)(indexStart + 1)); + inds.Add((UInt16)(indexStart + 0)); + inds.Add((UInt16)(indexStart + 2)); + inds.Add((UInt16)(indexStart + 3)); + } + else + { + // Relying on the last two vertices, and just adding two of our own here + verts.Add(pos + nrm * halfThickness + tan * halfThickness); + verts.Add(pos - nrm * halfThickness + tan * halfThickness); + + inds.Add((UInt16)(indexStart + 0 - 2)); + inds.Add((UInt16)(indexStart + 3 - 2)); + inds.Add((UInt16)(indexStart + 1 - 2)); + inds.Add((UInt16)(indexStart + 0 - 2)); + inds.Add((UInt16)(indexStart + 2 - 2)); + inds.Add((UInt16)(indexStart + 3 - 2)); + } + break; + + case PathEnding.Round: + float arcSign = atStart ? -1 : 1; + int arcSegments = CalculateArcSteps(halfThickness, 0, Mathf.PI, tessellateOptions); + for (int i = 1; i < arcSegments; i++) + { + float angle = Mathf.PI * (i / (float)arcSegments); + verts.Add(pos + Matrix2D.RotateLH(angle) * nrm * halfThickness * arcSign); + } + + if (atStart) + { + // Note how we maintain the last two vertices being setup for connection by the rest of the path vertices + int indexTipStart = verts.Count; + verts.Add(pos + nrm * halfThickness); + verts.Add(pos - nrm * halfThickness); + + for (int i = 1; i < arcSegments; i++) + { + inds.Add((UInt16)(indexTipStart + 1)); + inds.Add((UInt16)(indexStart + i - 1)); + inds.Add((UInt16)(indexStart + i)); + } + } + else + { + inds.Add((UInt16)(indexStart - 1)); + inds.Add((UInt16)(indexStart - 2)); + inds.Add((UInt16)(indexStart + 0)); + for (int i = 1; i < arcSegments - 1; i++) + { + inds.Add((UInt16)(indexStart - 1)); + inds.Add((UInt16)(indexStart + i - 1)); + inds.Add((UInt16)(indexStart + i)); + } + } + break; + + default: + System.Diagnostics.Debug.Assert(false); // Joining has its own function + break; + } + } + + static int CalculateArcSteps(float radius, float fromAngle, float toAngle, TessellationOptions tessellateOptions) + { + float stepDivisor = float.MaxValue; + + if (tessellateOptions.StepDistance != float.MaxValue) + stepDivisor = tessellateOptions.StepDistance / radius; + + if (tessellateOptions.MaxCordDeviation != float.MaxValue) + { + float y = radius - tessellateOptions.MaxCordDeviation; + float cordHalfLength = Mathf.Sqrt(radius * radius - y * y); + float div = Mathf.Min(stepDivisor, Mathf.Asin(cordHalfLength / radius)); + if (div > VectorUtils.Epsilon) + stepDivisor = div; + } + + if (tessellateOptions.MaxTanAngleDeviation < Mathf.PI * 0.5f) + stepDivisor = Mathf.Min(stepDivisor, tessellateOptions.MaxTanAngleDeviation * 2.0f); + + float stepsInFullCircle = (Mathf.PI * 2.0f) / stepDivisor; + float arcPercentage = Mathf.Abs(fromAngle - toAngle) / (Mathf.PI * 2.0f); + return (int)Mathf.Max(stepsInFullCircle * arcPercentage + 0.5f, 3); // Never less than 3 segments + } + + /// Tessellates a rectangle. + /// Rectangle to tessellate + /// The output vertices + /// The output triangles + public static void TessellateRect(Rect rect, out Vector2[] vertices, out UInt16[] indices) + { + vertices = new Vector2[] { + new Vector2(rect.xMin, rect.yMin), + new Vector2(rect.xMax, rect.yMin), + new Vector2(rect.xMax, rect.yMax), + new Vector2(rect.xMin, rect.yMax) + }; + indices = new UInt16[] { + 1, 0, 2, 2, 0, 3 + }; + } + + /// Tessellates a rectangle border. + /// Rectangle to tessellate + /// The half-thickness of the border + /// The output vertices + /// The output triangles + public static void TessellateRectBorder(Rect rect, float halfThickness, out Vector2[] vertices, out UInt16[] indices) + { + var verts = new List(16); + var inds = new List(24); + + // Left edge + var p0 = new Vector2(rect.x, rect.y + rect.height); + var p1 = new Vector2(rect.x, rect.y); + + var q0 = p0 + new Vector2(-halfThickness, halfThickness); + var q1 = p1 + new Vector2(-halfThickness, -halfThickness); + var q2 = p1 + new Vector2(halfThickness, halfThickness); + var q3 = p0 + new Vector2(halfThickness, -halfThickness); + + verts.Add(q0); verts.Add(q1); verts.Add(q2); verts.Add(q3); + inds.Add(0); inds.Add(3); inds.Add(2); inds.Add(2); inds.Add(1); inds.Add(0); + + // Top edge + p0 = new Vector2(rect.x, rect.y); + p1 = new Vector2(rect.x + rect.width, rect.y); + + q0 = p0 + new Vector2(-halfThickness, -halfThickness); + q1 = p1 + new Vector2(halfThickness, -halfThickness); + q2 = p1 + new Vector2(-halfThickness, halfThickness); + q3 = p0 + new Vector2(halfThickness, halfThickness); + + verts.Add(q0); verts.Add(q1); verts.Add(q2); verts.Add(q3); + inds.Add(4); inds.Add(7); inds.Add(6); inds.Add(6); inds.Add(5); inds.Add(4); + + // Right edge + p0 = new Vector2(rect.x + rect.width, rect.y); + p1 = new Vector2(rect.x + rect.width, rect.y + rect.height); + + q0 = p0 + new Vector2(halfThickness, -halfThickness); + q1 = p1 + new Vector2(halfThickness, halfThickness); + q2 = p1 + new Vector2(-halfThickness, -halfThickness); + q3 = p0 + new Vector2(-halfThickness, halfThickness); + + verts.Add(q0); verts.Add(q1); verts.Add(q2); verts.Add(q3); + inds.Add(8); inds.Add(11); inds.Add(10); inds.Add(10); inds.Add(9); inds.Add(8); + + // Bottom edge + p0 = new Vector2(rect.x + rect.width, rect.y + rect.height); + p1 = new Vector2(rect.x, rect.y + rect.height); + + q0 = p0 + new Vector2(halfThickness, halfThickness); + q1 = p1 + new Vector2(-halfThickness, halfThickness); + q2 = p1 + new Vector2(halfThickness, -halfThickness); + q3 = p0 + new Vector2(-halfThickness, -halfThickness); + + verts.Add(q0); verts.Add(q1); verts.Add(q2); verts.Add(q3); + inds.Add(12); inds.Add(15); inds.Add(14); inds.Add(14); inds.Add(13); inds.Add(12); + + vertices = verts.ToArray(); + indices = inds.ToArray(); + } + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorTessellation.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorTessellation.cs.meta new file mode 100644 index 00000000..1509a54c --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorTessellation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7946c79a48c418944bb4ac48df97c4be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorUtils.cs b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorUtils.cs new file mode 100644 index 00000000..2a8add67 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorUtils.cs @@ -0,0 +1,1337 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace ToolBuddy.ThirdParty.VectorGraphics +{ + /// + /// Provides various tools to work with vector graphics. + /// + public static partial class VectorUtils + { + /// A small value used everywhere by the vector graphics package. + public static readonly float Epsilon = 0.000001f; + + /// Convert a segments into a path. + /// The BezierSegment + /// An array of two path segments + /// The second path segment will hold the ending position of the curve. + public static BezierPathSegment[] BezierSegmentToPath(BezierSegment segment) + { + return new BezierPathSegment[] { + new BezierPathSegment() { P0 = segment.P0, P1 = segment.P1, P2 = segment.P2 }, + new BezierPathSegment() { P0 = segment.P3 } + }; + } + + /// Converts an array of BezierSegments into a connected path. + /// An array of BezierSegment + /// An array of path segments + /// If two consecutive segments are disconnected, a straight line will be added between the two endpoints. + public static BezierPathSegment[] BezierSegmentsToPath(BezierSegment[] segments) + { + if (segments.Count() == 0) + return new BezierPathSegment[0]; + + int segmentCount = segments.Length; + var path = new List(segments.Length*2 + 1); + for (int i = 0; i < segmentCount; ++i) + { + var seg = segments[i]; + path.Add(new BezierPathSegment() { P0 = seg.P0, P1 = seg.P1, P2 = seg.P2 }); + + if (i == (segmentCount-1)) + { + // Last segment, close the path + path.Add(new BezierPathSegment() { P0 = seg.P3 }); + } + else + { + // Check for connectivity, insert path to connect the endpoints when needed + var nextSeg = segments[i+1]; + if (seg.P3 != nextSeg.P0) + { + var line = VectorUtils.MakeLine(seg.P3, nextSeg.P0); + path.Add(new BezierPathSegment() { P0 = line.P0, P1 = line.P1, P2 = line.P2 }); + } + } + } + + return path.ToArray(); + } + + /// + /// Computes the BezierSegment at a given index from a list of BezierPathSegments. + /// + /// The chain of BezierPathSegments + /// The segment index + /// The BezierSegment at the given index + public static BezierSegment PathSegmentAtIndex(IList path, int index) + { + if (index < 0 || index >= (path.Count-1)) + throw new IndexOutOfRangeException("Invalid index passed to PathSegmentAtIndex"); + + return new BezierSegment() { P0 = path[index].P0, P1 = path[index].P1, P2 = path[index].P2, P3 = path[index + 1].P0 }; + } + + /// + /// Checks if the two ends of a BezierPathSegment chain are at the same location. + /// + /// The chain of BezierPathSegments + /// True if the two ends of the chain are at the same location, false otherwise + public static bool PathEndsPerfectlyMatch(IList path) + { + if (path.Count < 2) + return false; + + if ((path[0].P0 - path[path.Count - 1].P0).sqrMagnitude > Epsilon) + return false; + + return true; + } + + /// Builds a rectangle shape. + /// The shape object that will be filled with a rectangle. + /// The position and dimensions of the rectangle. + public static void MakeRectangleShape(Shape rectShape, Rect rect) + { + MakeRectangleShape(rectShape, rect, Vector2.zero, Vector2.zero, Vector2.zero, Vector2.zero); + } + + /// Builds a rectangle shape. + /// The shape object that will be filled with a rectangle. + /// The position and dimensions of the rectangle. + /// The top-left radius of the rectangle + /// The top-right radius of the rectangle + /// The bottom-right radius of the rectangle + /// The bottom-left radius of the rectangle + public static void MakeRectangleShape(Shape rectShape, Rect rect, Vector2 radiusTL, Vector2 radiusTR, Vector2 radiusBR, Vector2 radiusBL) + { + var contour = BuildRectangleContour(rect, radiusTL, radiusTR, radiusBR, radiusBL); + if (rectShape.Contours == null || rectShape.Contours.Length != 1) + rectShape.Contours = new BezierContour[1]; + rectShape.Contours[0] = contour; + rectShape.IsConvex = true; + } + + /// Builds an ellipse shape. + /// The shape object that will be filled with an ellipse. + /// The position of the circle, relative to its center. + /// The x component of the radius of the circle. + /// The y component of the radius of the circle. + public static void MakeEllipseShape(Shape ellipseShape, Vector2 pos, float radiusX, float radiusY) + { + var rect = new Rect(pos.x-radiusX, pos.y-radiusY, radiusX+radiusX, radiusY+radiusY); + var rad = new Vector2(radiusX, radiusY); + MakeRectangleShape(ellipseShape, rect, rad, rad, rad, rad); + } + + /// Builds a circle shape. + /// The shape object that will be filled with a circle. + /// The position of the circle, relative to its center. + /// The radius of the circle. + public static void MakeCircleShape(Shape circleShape, Vector2 pos, float radius) + { + MakeEllipseShape(circleShape, pos, radius, radius); + } + + /// Computes the bounds of a bezier path. + /// The path to compute the bounds from + /// A Rect containing the axis-aligned bounding-box of the contour + public static Rect Bounds(BezierPathSegment[] path) + { + var min = new Vector2(float.MaxValue, float.MaxValue); + var max = new Vector2(-float.MaxValue, -float.MaxValue); + foreach (var s in VectorUtils.SegmentsInPath(path)) + { + Vector2 segMin, segMax; + Bounds(s, out segMin, out segMax); + min = Vector2.Min(min, segMin); + max = Vector2.Max(max, segMax); + } + return (min.x != float.MaxValue) ? new Rect(min, max - min) : Rect.zero; + } + + /// Computes the bounds of a list of vertices. + /// The list of vertices to compute the bounds from + /// A Rect containing the axis-aligned bounding-box of the vertices + public static Rect Bounds(IEnumerable vertices) + { + var min = new Vector2(float.MaxValue, float.MaxValue); + var max = new Vector2(-float.MaxValue, -float.MaxValue); + foreach (var v in vertices) + { + min = Vector2.Min(min, v); + max = Vector2.Max(max, v); + } + return (min.x != float.MaxValue) ? new Rect(min, max - min) : Rect.zero; + } + + /// Builds a line segment. + /// The starting position of the line segment + /// The ending position of the line segment + /// A straight line BezierSegment + /// The control points are spaced out equally to maintain a constant speed on t + public static BezierSegment MakeLine(Vector2 from, Vector2 to) + { + return new BezierSegment() + { + P0 = from, + P1 = (to - from) / 3.0f + from, + P2 = (to - from) * 2.0f / 3.0f + from, + P3 = to + }; + } + + /// Converts a quadratic bezier to a cubic bezier + /// The starting position of the quadratic segment + /// The control position of the quadratic segment + /// The ending position of the quadratic segment + /// The resulting BezierSegment + public static BezierSegment QuadraticToCubic(Vector2 p0, Vector2 p1, Vector2 p2) + { + var p = p1; + var t = 2.0f / 3.0f; + return new BezierSegment() { + P0 = p0, + P1 = p0 + t * (p - p0), + P2 = p2 + t * (p - p2), + P3 = p2, + }; + } + + /// Builds a line path segment. + /// The starting position of the line segment + /// The ending position of the line segment + /// A BezierPathSegment array of two elements, configured in a straight line + /// The control points are spaced out equally to maintain a constant speed on t + public static BezierPathSegment[] MakePathLine(Vector2 from, Vector2 to) + { + return new BezierPathSegment[] { + new BezierPathSegment() { P0 = from, P1 = (to - from) / 3.0f + from, P2 = (to - from) * 2.0f / 3.0f + from }, + new BezierPathSegment() { P0 = to } + }; + } + + internal static BezierSegment MakeArcQuarter(Vector2 center, float startAngleRads, float sweepAngleRads) + { + // Approximation adapted from http://spencermortensen.com/articles/bezier-circle/ + float s = Mathf.Sin(sweepAngleRads); + float c = Mathf.Cos(sweepAngleRads); + Matrix2D m = Matrix2D.RotateLH(startAngleRads); + m.m02 = center.x; + m.m12 = center.y; + float f = 0.551915024494f; + return new BezierSegment() + { + P0 = m * new Vector2(1, 0), + P1 = m * new Vector2(1, f), + P2 = m * new Vector2(c + f * s, s), + P3 = m * new Vector2(c, s) + }; + } + + /// Approximates a circle arc with up to 4 segments. + /// The center of the arc + /// The starting angle of the arc, in radians + /// The "length" of the arc, in radians + /// The radius of the arc + /// An array of up to four BezierSegments holding the arc + public static BezierPathSegment[] MakeArc(Vector2 center, float startAngleRads, float sweepAngleRads, float radius) + { + bool shouldFlip = false; + if (sweepAngleRads < 0.0f) + { + startAngleRads += sweepAngleRads; + sweepAngleRads = -sweepAngleRads; + shouldFlip = true; + } + + sweepAngleRads = Mathf.Min(sweepAngleRads, Mathf.PI * 2); + + BezierSegment subSeg1; + BezierSegment subSeg2; + + var segments = new List(); + int endQuadrant = QuadrantAtAngle(sweepAngleRads); + + for (int quadrant = 0; quadrant <= endQuadrant; ++quadrant) + { + var seg = ArcSegmentForQuadrant(quadrant); + + // Check if we need to split the segment + var p0 = Vector2.zero; + var p1 = new Vector2(2.0f, 0.0f); + var intersects = FindBezierLineIntersections(seg, p0, p1); + if (quadrant != 3 && intersects.Length > 0) + { + VectorUtils.SplitSegment(seg, intersects[0], out subSeg1, out subSeg2); + seg = subSeg2; + } + + p1 = new Vector2(Mathf.Cos(sweepAngleRads), Mathf.Sin(sweepAngleRads)) * 2.0f; + intersects = FindBezierLineIntersections(seg, p0, p1); + if (intersects.Length > 0) + { + VectorUtils.SplitSegment(seg, intersects[0], out subSeg1, out subSeg2); + seg = subSeg1; + } + + if (!VectorUtils.IsEmptySegment(seg)) + segments.Add(seg); + } + + for (int i = 0; i < segments.Count; ++i) + segments[i] = TransformSegment(segments[i], center, -startAngleRads, Vector2.one * radius); + + if (shouldFlip) + { + // Path is reversed, so we should flip it now + for (int i = 0; i < segments.Count / 2; ++i) + { + int j = segments.Count - i - 1; + var seg0 = VectorUtils.FlipSegment(segments[i]); + var seg1 = VectorUtils.FlipSegment(segments[j]); + segments[i] = seg1; + segments[j] = seg0; + } + if ((segments.Count % 2) == 1) + { + int i = segments.Count / 2; + segments[i] = VectorUtils.FlipSegment(segments[i]); + } + } + + return VectorUtils.BezierSegmentsToPath(segments.ToArray()); + } + + internal static int QuadrantAtAngle(float angle) + { + angle = angle % (Mathf.PI * 2); + if (angle < 0.0f) + angle = Mathf.PI * 2 + angle; + if (angle <= Mathf.PI / 2.0f) + return 0; + else if (angle <= Mathf.PI) + return 1; + else if (angle <= Mathf.PI / 2.0f * 3.0f) + return 2; + else + return 3; + } + + internal static BezierSegment ArcSegmentForQuadrant(int quadrant) + { + switch (quadrant) + { + case 0: return VectorUtils.MakeArcQuarter(Vector2.zero, 0.0f, Mathf.PI / 2.0f); + case 1: return VectorUtils.MakeArcQuarter(Vector2.zero, -Mathf.PI / 2.0f, Mathf.PI / 2.0f); + case 2: return VectorUtils.MakeArcQuarter(Vector2.zero, -Mathf.PI, Mathf.PI / 2.0f); + case 3: return VectorUtils.MakeArcQuarter(Vector2.zero, -Mathf.PI / 2.0f * 3.0f, Mathf.PI / 2.0f); + default: return new BezierSegment(); + } + } + + /// Flips a segment direction. + /// The segment to flip + /// The flipped segment + public static BezierSegment FlipSegment(BezierSegment segment) + { + var s = segment; + + var tmp = s.P0; + s.P0 = s.P3; + s.P3 = tmp; + + tmp = s.P1; + s.P1 = s.P2; + s.P2 = tmp; + + return s; + } + + /// Computes the bounds of a segment. + /// The segment to flip + /// The output min value of the segment + /// The output max value of the segment + public static void Bounds(BezierSegment segment, out Vector2 min, out Vector2 max) + { + min = Vector2.Min(segment.P0, segment.P3); + max = Vector2.Max(segment.P0, segment.P3); + + Vector2 a = 3.0f * segment.P3 - 9.0f * segment.P2 + 9.0f * segment.P1 - 3.0f * segment.P0; + Vector2 b = 6.0f * segment.P2 - 12.0f * segment.P1 + 6.0f * segment.P0; + Vector2 c = 3.0f * segment.P1 - 3.0f * segment.P0; + + float[] solutions = new float[4]; + SolveQuadratic(a.x, b.x, c.x, out solutions[0], out solutions[1]); + SolveQuadratic(a.y, b.y, c.y, out solutions[2], out solutions[3]); + foreach (var s in solutions) + { + if (float.IsNaN(s) || (s < 0.0f) || (s > 1.0f)) + continue; + Vector2 v = Eval(segment, s); + min = Vector2.Min(min, v); + max = Vector2.Max(max, v); + } + } + + /// Evaluates the position on a curve segment. + /// The curve segment on which to evaluate the position + /// The parametric location on the curve + /// The position on the curve at parametric location "t" + public static Vector2 Eval(BezierSegment segment, float t) + { + float t2 = t * t; + float t3 = t2 * t; + return + (segment.P3 - 3.0f * segment.P2 + 3.0f * segment.P1 - segment.P0) * t3 + + (3.0f * segment.P2 - 6.0f * segment.P1 + 3.0f * segment.P0) * t2 + + (3.0f * segment.P1 - 3.0f * segment.P0) * t + + segment.P0; + } + + /// Evaluates the tangent on a curve segment. + /// The curve segment on which to evaluate the tangent + /// The parametric location on the curve + /// The tangent of the curve at parametric location "t" + public static Vector2 EvalTangent(BezierSegment segment, float t) + { + var tan = (segment.P3 - 3.0f * segment.P2 + 3.0f * segment.P1 - segment.P0) * 3.0f * t * t + + (3.0f * segment.P2 - 6.0f * segment.P1 + 3.0f * segment.P0) * 2.0f * t + + (3.0f * segment.P1 - 3.0f * segment.P0); + + // If the result is a zero vector (happens at coincident p0 and p1 or p2 and p3) try again by manual stepping + if (tan.sqrMagnitude < Epsilon) + { + if (t > 0.5f) + tan = Eval(segment, t) - Eval(segment, t - 0.01f); + else tan = Eval(segment, t + 0.01f) - Eval(segment, t); + } + return tan.normalized; + } + + /// Evalutes the normal on a curve segment. + /// The curve segment on which to evaluate the normal + /// The parametric location on the curve + /// The normal of the curve at parametric location "t" + /// + /// A positive normal at a point on the bezier curve is always on the + /// right side of the forward direction (tangent) of the curve at that point. + /// + public static Vector2 EvalNormal(BezierSegment segment, float t) + { + return Vector2.Perpendicular(EvalTangent(segment, t)); + } + + /// Evalutes both the position and tangent on a curve segment. + /// The curve segment on which to evaluate the normal + /// The parametric location on the curve + /// The output tangent at parametric location "t" + /// The position on the curve at parametric location "t" + /// + /// This is more efficient than calling "Eval" and "EvalTangent" successively. + /// + public static Vector2 EvalFull(BezierSegment segment, float t, out Vector2 tangent) + { + float t2 = t * t; + float t3 = t2 * t; + Vector2 C1 = segment.P3 - 3.0f * segment.P2 + 3.0f * segment.P1 - segment.P0; + Vector2 C2 = 3.0f * segment.P2 - 6.0f * segment.P1 + 3.0f * segment.P0; + Vector2 C3 = 3.0f * segment.P1 - 3.0f * segment.P0; + Vector2 C4 = segment.P0; + + var pos = C1 * t3 + C2 * t2 + C3 * t + C4; + tangent = ((3.0f * C1 * t2) + (2.0f * C2 * t) + C3); + + // If the result is a zero vector (happens at coincident p0 and p1 or p2 and p3) try again by manual stepping + if (tangent.sqrMagnitude < Epsilon) + { + if (t > 0.5f) + tangent = pos - Eval(segment, t - 0.01f); + else tangent = Eval(segment, t + 0.01f) - pos; + } + + tangent = tangent.normalized; + return pos; + } + + /// Evalutes the position, tangent and normal on a curve segment. + /// The curve segment on which to evaluate the normal + /// The parametric location on the curve + /// The output tangent at parametric location "t" + /// The output normal at parametric location "t" + /// The position on the curve at parametric location "t" + /// + /// This is more efficient than calling "Eval", "EvalTangent" and "EvalNormal" successively. + /// + public static Vector2 EvalFull(BezierSegment segment, float t, out Vector2 tangent, out Vector2 normal) + { + Vector2 pos = EvalFull(segment, t, out tangent); + normal = Vector2.Perpendicular(tangent); + return pos; + } + + /// Computes the individual lengths of a segment chain. + /// The segments on which to compute the lengths + /// A boolean indicating if the length of the segment joining the first and last points should be computed + /// The precision of the lengths computation + /// An array containing the lenghts of the segments + public static float[] SegmentsLengths(IList segments, bool closed, float precision = 0.001f) + { + float[] segmentLengths = new float[segments.Count - 1 + (closed ? 1 : 0)]; + int i = 0; + foreach (var segment in SegmentsInPath(segments, closed)) + segmentLengths[i++] = SegmentLength(segment, precision); + return segmentLengths; + } + + /// Computes the combined length of a segment chain. + /// The curve segments on which to evaluate the length + /// A boolean indicating if the length of the segment joining the first and last points should be computed + /// The precision of the length computation + /// The combined length of the segment chain + public static float SegmentsLength(IList segments, bool closed, float precision = 0.001f) + { + if (segments.Count < 2) + return 0.0f; + + float length = 0.0f; + foreach (var segment in SegmentsInPath(segments)) + length += SegmentLength(segment, precision); + if (closed) + length += (segments[segments.Count - 1].P0 - segments[0].P0).magnitude; + return length; + } + + /// Computes the length of a single curve segment. + /// The curve segment on which to evaluate the length + /// The precision of the length computation + /// The length of the segment + public static float SegmentLength(BezierSegment segment, float precision = 0.001f) + { + // This adaptive algorithm doesn't behave well at the limit of float precision, + // so we revert to a dummy iterative approach in this case + if (VectorUtils.HasLargeCoordinates(segment)) + { + int steps = Math.Min(100, (int)(1.0f/precision)); + return SegmentLengthIterative(segment, steps); + } + + float tmax = 0.0f; + float length = 0.0f; + while ((tmax = AdaptiveQuadraticApproxSplitPoint(segment, precision)) < 1.0f) + { + BezierSegment b1, b2; + SplitSegment(segment, tmax, out b1, out b2); + float midPointLength = MidPointQuadraticApproxLength(b1); + if (float.IsNaN(midPointLength)) // Could happen because of float precision issues + midPointLength = SegmentLengthIterative(b1); + length += midPointLength; + segment = b2; + } + length += MidPointQuadraticApproxLength(segment); + return length; + } + + internal static float SegmentLengthIterative(BezierSegment segment, int steps = 10) + { + if (steps <= 2) + return (segment.P3 - segment.P0).magnitude; + + float length = 0.0f; + var p = segment.P0; + for (int i = 1; i <= steps; ++i) + { + float t = (float)i/steps; + var q = VectorUtils.Eval(segment, t); + length += (q-p).magnitude; + p = q; + } + return length; + } + + internal static bool HasLargeCoordinates(BezierSegment segment) + { + const float kMaxCoord = 10000.0f; + return + segment.P0.x > kMaxCoord || segment.P0.y > kMaxCoord || + segment.P1.x > kMaxCoord || segment.P1.y > kMaxCoord || + segment.P2.x > kMaxCoord || segment.P2.y > kMaxCoord || + segment.P3.x > kMaxCoord || segment.P3.y > kMaxCoord; + } + + static float AdaptiveQuadraticApproxSplitPoint(BezierSegment segment, float precision) + { + float quadraticApproxDist = (segment.P3 - 3.0f * segment.P2 + 3.0f * segment.P1 - segment.P0).magnitude * 0.5f; + return Mathf.Pow((18.0f / Mathf.Sqrt(3.0f)) * precision / quadraticApproxDist, 1.0f / 3.0f); + } + + static float MidPointQuadraticApproxLength(BezierSegment segment) + { + var A = segment.P0; + var B = (3.0f * segment.P2 - segment.P3 + 3.0f * segment.P1 - segment.P0) / 4.0f; + var C = segment.P3; + + if (A == C) + return (A == B) ? 0.0f : (A - B).magnitude; + + if (B == A || B == C) + return (A - C).magnitude; + + var A0 = B - A; + var A1 = A - 2.0f * B + C; + + if (A1 != Vector2.zero) + { + double c = 4.0f * Vector2.Dot(A1, A1); + double b = 8.0f * Vector2.Dot(A0, A1); + double a = 4.0f * Vector2.Dot(A0, A0); + double q = 4.0f * a * c - b * b; + + double twoCpB = 2.0f * c + b; + double sumCBA = c + b + a; + + var l0 = (0.25f / c) * (twoCpB * Math.Sqrt(sumCBA) - b * Math.Sqrt(a)); + if (Math.Abs(q) <= VectorUtils.Epsilon) + return (float)l0; + + var l1 = (q / (8.0f * Math.Pow(c, 1.5f))) * (Math.Log(2.0f * Math.Sqrt(c * sumCBA) + twoCpB) - Math.Log(2.0f * Math.Sqrt(c * a) + b)); + return (float)(l0 + l1); + } + else return 2.0f * A0.magnitude; + } + + /// Splits a curve segment at a given parametric location. + /// The curve segment to split + /// The parametric location at which the segment will be split + /// The output of the first segment + /// The output of the second segment + public static void SplitSegment(BezierSegment segment, float t, out BezierSegment b1, out BezierSegment b2) + { + var a = Vector2.LerpUnclamped(segment.P0, segment.P1, t); + var b = Vector2.LerpUnclamped(segment.P1, segment.P2, t); + var c = Vector2.LerpUnclamped(segment.P2, segment.P3, t); + var m = Vector2.LerpUnclamped(a, b, t); + var n = Vector2.LerpUnclamped(b, c, t); + var p = Eval(segment, t); + + b1 = new BezierSegment() { P0 = segment.P0, P1 = a, P2 = m, P3 = p }; + b2 = new BezierSegment() { P0 = p, P1 = n, P2 = c, P3 = segment.P3 }; + } + + /// Transforms a curve segment by a translation, rotation and scaling. + /// The curve segment to transform + /// The translation to apply on the curve segment + /// The rotation to apply on the curve segment + /// The scaling to apply on the curve segment + /// The transformed curve segment + public static BezierSegment TransformSegment(BezierSegment segment, Vector2 translation, float rotation, Vector2 scaling) + { + var m = Matrix2D.RotateLH(rotation); + var newSeg = new BezierSegment() { + P0 = m * Vector2.Scale(segment.P0, scaling) + translation, + P1 = m * Vector2.Scale(segment.P1, scaling) + translation, + P2 = m * Vector2.Scale(segment.P2, scaling) + translation, + P3 = m * Vector2.Scale(segment.P3, scaling) + translation + }; + return newSeg; + } + + /// Transforms a curve segment by a transformation matrix. + /// The curve segment to transform + /// The transformation matrix to apply on the curve segment + /// The transformed curve segment + public static BezierSegment TransformSegment(BezierSegment segment, Matrix2D matrix) + { + var newSeg = new BezierSegment() { + P0 = matrix * segment.P0, + P1 = matrix * segment.P1, + P2 = matrix * segment.P2, + P3 = matrix * segment.P3 + }; + return newSeg; + } + + /// Transforms a path by a transformation matrix. + /// The path to transform + /// The translation to apply + /// The rotation to apply, in radians + /// The scaling to apply + /// The transformed path + public static BezierPathSegment[] TransformBezierPath(BezierPathSegment[] path, Vector2 translation, float rotation, Vector2 scaling) + { + var m = Matrix2D.RotateLH(rotation); + var newPath = new BezierPathSegment[path.Length]; + for (int i = 0; i < newPath.Length; ++i) + { + var seg = path[i]; + newPath[i] = new BezierPathSegment() + { + P0 = m * Vector2.Scale(seg.P0, scaling) + translation, + P1 = m * Vector2.Scale(seg.P1, scaling) + translation, + P2 = m * Vector2.Scale(seg.P2, scaling) + translation + }; + } + return newPath; + } + + /// Transforms a path by a transformation matrix. + /// The path to transform + /// The transformation matrix to apply on the curve segment + /// The transformed path + public static BezierPathSegment[] TransformBezierPath(BezierPathSegment[] path, Matrix2D matrix) + { + var newPath = new BezierPathSegment[path.Length]; + for (int i = 0; i < newPath.Length; ++i) + { + var seg = path[i]; + newPath[i] = new BezierPathSegment() { + P0 = matrix * seg.P0, + P1 = matrix * seg.P1, + P2 = matrix * seg.P2 + }; + } + return newPath; + } + + /// Lists every nodes under a root node. + /// The root node + /// The enumerable listing every nodes under "root", including the root itself. + public static IEnumerable SceneNodes(SceneNode root) + { + yield return root; + if (root.Children != null) + { + foreach (var c in root.Children) + { + foreach (var n in SceneNodes(c)) + yield return n; + } + } + } + + /// Structure holding the SceneNode computed transforms, opacities and enumeration path. + /// This helper structure is used by the WorldTransformedSceneNodes method. + public struct SceneNodeWorldTransform + { + /// The node we are currently visiting. + public SceneNode Node; + + /// The parent of the node we are currently visiting. + public SceneNode Parent; + + /// The accumulated world transform of this node. + public Matrix2D WorldTransform; + + /// The accumulated world opacity of this node. + public float WorldOpacity; + } + + static IEnumerable WorldTransformedSceneNodes(SceneNode child, Dictionary nodeOpacities, SceneNodeWorldTransform parent) + { + var childOpacity = 1.0f; + if (nodeOpacities == null || !nodeOpacities.TryGetValue(child, out childOpacity)) + childOpacity = 1.0f; + + var childWorldTransform = new SceneNodeWorldTransform() + { + Node = child, + WorldTransform = parent.WorldTransform * child.Transform, + WorldOpacity = parent.WorldOpacity * childOpacity, + Parent = parent.Node + }; + + yield return childWorldTransform; + + if (child.Children != null) + { + foreach (var c in child.Children) + { + foreach (var n in WorldTransformedSceneNodes(c, nodeOpacities, childWorldTransform)) + yield return n; + } + } + } + + /// Iterates through every nodes under a root with computed transform and opacities. + /// The starting node of the hierarchy + /// Storage for the resulting node opacities, may be null + /// An enumeration of every node with their pre-computed world transforms, opacities and paths. + public static IEnumerable WorldTransformedSceneNodes(SceneNode root, Dictionary nodeOpacities) + { + var rootNodeWorldTransform = new SceneNodeWorldTransform() { + Node = root, + WorldTransform = Matrix2D.identity, + WorldOpacity = 1, + Parent = null + }; + return WorldTransformedSceneNodes(root, nodeOpacities, rootNodeWorldTransform); + } + + /// Realigns the vertices (in-place) inside their axis-aligned bounding-box. + /// The vertices to realign + /// The bounds into which the vertices will be realigned + /// A boolean indicating whether to flip the coordinates on the Y axis + public static void RealignVerticesInBounds(IList vertices, Rect bounds, bool flip) + { + var p = bounds.position; + var h = bounds.height; + for (int i = 0; i < vertices.Count; ++i) + { + var v = vertices[i]; + v -= p; + if (flip) + v.y = h - v.y; + vertices[i] = v; + } + } + + /// Flip the vertices (in-place) inside their axis-aligned bounding-box. + /// The vertices to realign + /// The bounds into which the vertices will be realigned + public static void FlipVerticesInBounds(IList vertices, Rect bounds) + { + var h = bounds.height; + for (int i = 0; i < vertices.Count; ++i) + { + var v = vertices[i]; + v.y = h - v.y; + vertices[i] = v; + } + } + + internal static void ClampVerticesInBounds(IList vertices, Rect bounds) + { + for (int i = 0; i < vertices.Count; ++i) + vertices[i] = Vector2.Max(bounds.min, Vector2.Min(bounds.max, vertices[i])); + } + + /// Iterates through every segment in a list of path segments. + /// The path segments to iterate from + /// Whether to return the segment connecting the last point to the beginning of the path + /// An enumerable of every segments in the path + public static IEnumerable SegmentsInPath(IEnumerable segments, bool closed = false) + { + var e = segments.GetEnumerator(); + if (!e.MoveNext()) + yield break; + + var s1 = e.Current; + if (!e.MoveNext()) + yield break; + + do + { + var s2 = e.Current; + yield return new BezierSegment { P0 = s1.P0, P1 = s1.P1, P2 = s1.P2, P3 = s2.P0 }; + s1 = s2; + } + while (e.MoveNext()); + + if (closed) + yield return new BezierSegment { P0 = s1.P0, P1 = s1.P1, P2 = s1.P2, P3 = segments.First().P0 }; + } + + static void SolveQuadratic(float a, float b, float c, out float s1, out float s2) + { + float det = b * b - 4.0f * a * c; + if (det < 0.0f) + { + s1 = s2 = float.NaN; + return; + } + + float detSqrt = Mathf.Sqrt(det); + s1 = (-b + detSqrt) / 2.0f * a; + if (Mathf.Abs(a) > float.Epsilon) + s2 = (-b - detSqrt) / 2.0f * a; + else s2 = float.NaN; + } + + /// Finds the intersection between two infinite lines + /// The first point of the first line + /// The second point of the first line + /// The first point of the second line + /// The second point of the second line + /// The intersection point, or (float.PositiveInfinity, float.PositiveInfinity) if the lines are parallel + public static Vector2 IntersectLines(Vector2 line1Pt1, Vector2 line1Pt2, Vector2 line2Pt1, Vector2 line2Pt2) + { + var a1 = line1Pt2.y - line1Pt1.y; + var b1 = line1Pt1.x - line1Pt2.x; + + var a2 = line2Pt2.y - line2Pt1.y; + var b2 = line2Pt1.x - line2Pt2.x; + + var det = a1 * b2 - a2 * b1; + if (Mathf.Abs(det) <= Epsilon) + return new Vector2(float.PositiveInfinity, float.PositiveInfinity); // Parallel, no intersection + + var c1 = a1 * line1Pt1.x + b1 * line1Pt1.y; + var c2 = a2 * line2Pt1.x + b2 * line2Pt1.y; + var detInv = 1.0f / det; + return new Vector2((b2 * c1 - b1 * c2) * detInv, (a1 * c2 - a2 * c1) * detInv); + } + + /// Finds the intersection between two line segments + /// The first point of the first line + /// The second point of the first line + /// The first point of the second line + /// The second point of the second line + /// The intersection point, or (float.PositiveInfinity, float.PositiveInfinity) if the lines are parallel + public static Vector2 IntersectLineSegments(Vector2 line1Pt1, Vector2 line1Pt2, Vector2 line2Pt1, Vector2 line2Pt2) + { + var a1 = (line1Pt1.x - line2Pt2.x) * (line1Pt2.y - line2Pt2.y) - (line1Pt1.y - line2Pt2.y) * (line1Pt2.x - line2Pt2.x); + var a2 = (line1Pt1.x - line2Pt1.x) * (line1Pt2.y - line2Pt1.y) - (line1Pt1.y - line2Pt1.y) * (line1Pt2.x - line2Pt1.x); + if (a1 * a2 <= 0.0f) + { + var a3 = (line2Pt1.x - line1Pt1.x) * (line2Pt2.y - line1Pt1.y) - (line2Pt1.y - line1Pt1.y) * (line2Pt2.x - line1Pt1.x); + var a4 = a3 + a2 - a1; + if (a3 * a4 <= 0.0f) + { + float t = a3 / (a3 - a4); + var p = line1Pt1 + t * (line1Pt2 - line1Pt1); + return p; + } + } + return new Vector2(float.PositiveInfinity, float.PositiveInfinity); + } + + static bool PointOnTheLeftOfLine(Vector2 lineFrom, Vector2 lineTo, Vector2 point) + { + return ((lineFrom.x - lineTo.x) * (point.y - lineTo.y) - (lineFrom.y - lineTo.y) * (point.x - lineTo.x)) > 0; + } + + /// Find the intersections (up to three) between a line and a curve segment. + /// The curve segment + /// The first point + /// The second point + /// Returns the Bezier's 't' parametric values where the line p0-p1 intersects the segment, up to 3 values + public static float[] FindBezierLineIntersections(BezierSegment segment, Vector2 p0, Vector2 p1) + { + var A = p1.y - p0.y; + var B = p0.x - p1.x; + var C = p0.x * (p0.y - p1.y) + p0.y * (p1.x - p0.x); + var coeffs = BezierCoefficients(segment); + + var P = new float[4]; + P[0] = A * coeffs[0].x + B * coeffs[0].y; + P[1] = A * coeffs[1].x + B * coeffs[1].y; + P[2] = A * coeffs[2].x + B * coeffs[2].y; + P[3] = A * coeffs[3].x + B * coeffs[3].y + C; + + var roots = CubicRoots(P[0], P[1], P[2], P[3]); + var validRoots = new List(roots.Length); + + foreach (var t in roots) + { + var t2 = t * t; + var t3 = t2 * t; + var p = coeffs[0] * t3 + coeffs[1] * t2 + coeffs[2] * t + coeffs[3]; + + var s = 0.0f; + if (Mathf.Abs(p1.x - p0.x) > VectorUtils.Epsilon) + s = (p.x - p0.x) / (p1.x - p0.x); + else + s = (p.y - p0.y) / (p1.y - p0.y); + + if (t >= 0.0f && t <= 1.0f && s >= 0.0f && s <= 1.0f) + validRoots.Add(t); + } + + return validRoots.ToArray(); + } + + private static float[] CubicRoots(double a, double b, double c, double d) + { + var A = b / a; + var B = c / a; + var C = d / a; + var Q = (3 * B - Math.Pow(A, 2)) / 9; + var R = (9 * A * B - 27 * C - 2 * Math.Pow(A, 3)) / 54; + var D = Math.Pow(Q, 3) + Math.Pow(R, 2); + var Im = 0.0; + var t = new List(3); + t.AddRange(new double[] { -1.0, -1.0, -1.0 }); + + if (D >= 0) + { + var sqrtD = Math.Sqrt(D); + var S = Math.Sign(R + sqrtD) * Math.Pow(Math.Abs(R + sqrtD), 1.0 / 3.0); + var T = Math.Sign(R - sqrtD) * Math.Pow(Math.Abs(R - sqrtD), 1.0 / 3.0); + + t[0] = -A / 3 + (S + T); + t[1] = -A / 3 - (S + T) / 2; + t[2] = t[1]; + Im = Math.Abs(Math.Sqrt(3.0) * (S - T) / 2); + + if (Math.Abs(Im) > VectorUtils.Epsilon) + { + t[1] = -1; + t[2] = -1; + } + } + else + { + var th = Math.Acos(R / Math.Sqrt(-Math.Pow(Q, 3))); + var sqrtMinusQ = Math.Sqrt(-Q); + t[0] = 2 * sqrtMinusQ * Math.Cos(th / 3) - A / 3; + t[1] = 2 * sqrtMinusQ * Math.Cos((th + 2 * Math.PI) / 3) - A / 3; + t[2] = 2 * sqrtMinusQ * Math.Cos((th + 4 * Math.PI) / 3) - A / 3; + } + + for (int i = 0; i < 3; ++i) + { + if (t[i] < 0.0 || t[i] > 1.0) + t[i] = -1; + } + + // Remove -1 values which means no root was found + t.RemoveAll(x => Math.Abs(x + 1.0) < (double)Epsilon); + + return t.Select(x => (float)x).ToArray(); + } + + private static Vector2[] BezierCoefficients(BezierSegment segment) + { + var coeffs = new Vector2[4]; + coeffs[0] = -segment.P0 + 3 * segment.P1 + -3 * segment.P2 + segment.P3; + coeffs[1] = 3 * segment.P0 - 6 * segment.P1 + 3 * segment.P2; + coeffs[2] = -3 * segment.P0 + 3 * segment.P1; + coeffs[3] = segment.P0; + return coeffs; + } + + /// Computes a pretty accurate approximation of the scene bounds. + /// The root node of the hierarchy to computes the bounds from + /// An approximation of the node hierarchy axis-aligned bounding-box + /// + /// This will properly evaluate the bounds of the paths and shapes, but will ignore the paths stroke widths. + /// + #pragma warning disable 612, 618 // Silence use of deprecated IDrawable + public static Rect SceneNodeBounds(SceneNode root) + { + var min = new Vector2(float.MaxValue, float.MaxValue); + var max = new Vector2(-float.MaxValue, -float.MaxValue); + foreach (var tnode in WorldTransformedSceneNodes(root, null)) + { + var shapeMin = new Vector2(float.MaxValue, float.MaxValue); + var shapeMax = new Vector2(-float.MaxValue, -float.MaxValue); + + if (tnode.Node.Shapes != null) + { + foreach (var shape in tnode.Node.Shapes) + { + foreach (var contour in shape.Contours) + { + var bbox = Bounds(TransformBezierPath(contour.Segments, tnode.WorldTransform)); + shapeMin = Vector2.Min(shapeMin, bbox.min); + shapeMax = Vector2.Max(shapeMax, bbox.max); + } + } + } + + if (shapeMin.x != float.MaxValue) + { + min = Vector2.Min(min, shapeMin); + max = Vector2.Max(max, shapeMax); + } + } + return (min.x != float.MaxValue) ? new Rect(min, max - min) : Rect.zero; + } + + /// Computes a rough approximation of the node hierarchy bounds. + /// The root node of the hierarchy to computes the bounds from + /// An approximation of the root hierarchy axis-aligned bounding-box + /// + /// This will use the control point positions as a rough estimate of the bounds for the paths and shapes. + /// + public static Rect ApproximateSceneNodeBounds(SceneNode root) + { + var vertices = new List(100); + + foreach (var tnode in WorldTransformedSceneNodes(root, null)) + { + if (tnode.Node.Shapes != null) + { + foreach (var shape in tnode.Node.Shapes) + { + foreach (var contour in shape.Contours) + { + foreach (var seg in TransformBezierPath(contour.Segments, tnode.WorldTransform)) + { + vertices.Add(seg.P0); + vertices.Add(seg.P1); + vertices.Add(seg.P2); + } + } + } + } + } + + return Bounds(vertices); + } + #pragma warning restore 612, 618 + + internal static bool IsEmptySegment(BezierSegment bs) + { + return (bs.P0 - bs.P1).sqrMagnitude <= Epsilon && (bs.P0 - bs.P2).sqrMagnitude <= Epsilon && (bs.P0 - bs.P3).sqrMagnitude <= Epsilon; + } + } // VectorUtils class + + internal class PathDistanceForwardIterator + { + class BezierLoop : IList + { + IList OpenPath; + + public BezierLoop(IList openPath) + { + this.OpenPath = openPath; + } + + public BezierPathSegment this[int index] + { + get + { + if (index == OpenPath.Count) + return OpenPath[0]; + return OpenPath[index]; + } + set { throw new NotSupportedException(); } + } + + public int Count { get { return OpenPath.Count + 1; } } + public bool IsReadOnly { get { return true; } } + public void Add(BezierPathSegment item) { throw new NotSupportedException(); } + public void Clear() {} + public bool Contains(BezierPathSegment item) { throw new NotImplementedException(); } + public void CopyTo(BezierPathSegment[] array, int arrayIndex) { throw new NotImplementedException(); } + public IEnumerator GetEnumerator() { throw new NotImplementedException(); } + public int IndexOf(BezierPathSegment item) { throw new NotImplementedException(); } + public void Insert(int index, BezierPathSegment item) { throw new NotSupportedException(); } + public bool Remove(BezierPathSegment item) { throw new NotSupportedException(); } + public void RemoveAt(int index) { throw new NotSupportedException(); } + IEnumerator IEnumerable.GetEnumerator() { throw new NotImplementedException(); } + } + + public enum Result { Stepped, NewSegment, Ended }; + public PathDistanceForwardIterator(IList pathSegments, bool closed, float maxCordDeviationSq, float maxTanAngleDevCosine, float stepSizeT) + { + if (pathSegments.Count < 2) + throw new Exception("Cannot iterate a path with no segments in it"); + + Segments = closed && !VectorUtils.PathEndsPerfectlyMatch(pathSegments) ? new BezierLoop(pathSegments) : pathSegments; + this.closed = closed; + this.needTangentsDuringEval = maxTanAngleDevCosine < 1.0f; + this.maxCordDeviationSq = maxCordDeviationSq; + this.maxTanAngleDevCosine = maxTanAngleDevCosine; + this.stepSizeT = stepSizeT; + currentBezSeg = new BezierSegment() { P0 = pathSegments[0].P0, P1 = pathSegments[0].P1, P2 = pathSegments[0].P2, P3 = pathSegments[1].P0 }; + lastPointEval = pathSegments[0].P0; + currentTTangent = needTangentsDuringEval ? VectorUtils.EvalTangent(currentBezSeg, 0.0f) : Vector2.zero; + } + + float PointToLineDistanceSq(Vector2 point, Vector2 lineStart, Vector2 lineEnd) + { + float lineMagSq = (lineEnd - lineStart).sqrMagnitude; + if (lineMagSq < VectorUtils.Epsilon) + return (point - lineStart).sqrMagnitude; + float num = (lineEnd.y - lineStart.y) * point.x - (lineEnd.x - lineStart.x) * point.y + lineEnd.x * lineStart.y - lineEnd.y * lineStart.x; + return (num * num) / lineMagSq; + } + + public Result AdvanceBy(float units, out float unitsRemaining) + { + unitsRemaining = units; + if (Ended) + return Result.Ended; // Reached the end + + float t = currentT; + Vector2 currentTPosition = lastPointEval; + for (;;) + { + float nextT = Mathf.Min(t + stepSizeT, 1.0f); + Vector2 tangent = Vector2.zero; + Vector2 point = needTangentsDuringEval ? VectorUtils.EvalFull(currentBezSeg, nextT, out tangent) : VectorUtils.Eval(currentBezSeg, nextT); + + bool generateStepHere = false; + if (needTangentsDuringEval) + { + float tangentDiffCosAngle = Vector2.Dot(tangent, currentTTangent); + generateStepHere = tangentDiffCosAngle < this.maxTanAngleDevCosine; + } + + if (!generateStepHere && (maxCordDeviationSq != float.MaxValue)) + { + Vector2 firstPoint = currentTPosition; + float distPtToFirstSq = (point - firstPoint).sqrMagnitude; + if (distPtToFirstSq > VectorUtils.Epsilon) + { + Vector2 secondPoint = VectorUtils.Eval(currentBezSeg, Mathf.Min((nextT - currentT) * 2.0f + currentT, 1.0f)); + float midPointDistSq = PointToLineDistanceSq(point, firstPoint, secondPoint); + generateStepHere = midPointDistSq >= maxCordDeviationSq; + } + } + + float dist = (point - lastPointEval).magnitude; + if (dist > unitsRemaining) + { + nextT = t + stepSizeT * (unitsRemaining / dist); // A linear approximation, not too bad for small step sizes + dist = unitsRemaining; + point = VectorUtils.Eval(currentBezSeg, nextT); + } + + segmentLengthSoFar += dist; + lengthSoFar += dist; + unitsRemaining -= dist; + lastPointEval = point; + t = nextT; + + if (nextT < 1.0f) + { + if ((unitsRemaining > 0) && !generateStepHere) + continue; + + currentT = nextT; + currentTTangent = tangent; + + return Result.Stepped; + } + + // Crossing to a new segment + if (currentSegment + 1 == Segments.Count - 1) + { + currentT = 1.0f; + return Result.Ended; // Reached the end + } + + currentSegment++; + currentBezSeg = new BezierSegment() + { + P0 = Segments[currentSegment].P0, + P1 = Segments[currentSegment].P1, + P2 = Segments[currentSegment].P2, + P3 = Segments[currentSegment + 1].P0 + }; + segmentLengthSoFar = 0.0f; + currentT = 0.0f; + currentTTangent = tangent; + lastPointEval = currentBezSeg.P0; + + return Result.NewSegment; + } + } + + public IList Segments { get; } + public bool Closed { get { return closed; } } + public int CurrentSegment { get { return currentSegment; } } + public float CurrentT { get { return currentT; } } + public float LengthSoFar { get { return lengthSoFar; } } + public float SegmentLengthSoFar { get { return segmentLengthSoFar; } } + public bool Ended { get { return (currentT == 1.0f) && (currentSegment + 1 == Segments.Count - 1); } } + public Vector2 EvalCurrent() { return VectorUtils.Eval(currentBezSeg, currentT); } + + // Path data and settings + readonly bool closed, needTangentsDuringEval; + readonly float maxCordDeviationSq, maxTanAngleDevCosine, stepSizeT; // Quality control variables + + // State + int currentSegment; + float currentT; + float segmentLengthSoFar; // For user's tracking purposes, not really used in our calculations + float lengthSoFar; // For user's tracking purposes, not really used in our calculations + Vector2 lastPointEval, currentTTangent; + BezierSegment currentBezSeg; + } + + internal class PathPatternIterator + { + public PathPatternIterator(float[] pattern, float patternOffset = 0.0f) + { + if (pattern != null) + { + foreach (var l in pattern) + patternLength += l; + } + + if (patternLength < VectorUtils.Epsilon) + { + segmentLength = float.MaxValue; + return; + } + + this.pattern = pattern; + this.patternOffset = patternOffset; + if (patternOffset == 0.0f) + segmentLength = pattern[0]; + else this.solid = IsSolidAt(0.0f, out currentSegment, out segmentLength); + } + + public void Advance() + { + if (pattern == null) + return; + + currentSegment++; + if (currentSegment >= pattern.Length) + currentSegment = 0; + + solid = !solid; + segmentLength = pattern[currentSegment]; + } + + public bool IsSolidAt(float unitsFromPathStart) + { + int patternSegmentIndex; + float patternSegmentLength; + return IsSolidAt(unitsFromPathStart, out patternSegmentIndex, out patternSegmentLength); + } + + public bool IsSolidAt(float unitsFromPathStart, out int patternSegmentIndex, out float patternSegmentLength) + { + patternSegmentIndex = 0; + patternSegmentLength = 0; + if (pattern == null) + return true; + + bool isSolid = true; + unitsFromPathStart += patternOffset; + int hops = (int)(Mathf.Abs(unitsFromPathStart) / patternLength); + if (unitsFromPathStart < 0.0f) + { + unitsFromPathStart = patternLength - ((-unitsFromPathStart) % patternLength); + if ((pattern.Length & 1) == 1) + isSolid = (hops & 1) == 0; + } + else + { + unitsFromPathStart = unitsFromPathStart % patternLength; + if ((pattern.Length & 1) == 1) + isSolid = (hops & 1) == 1; + } + + while (unitsFromPathStart > pattern[patternSegmentIndex]) + { + unitsFromPathStart -= pattern[patternSegmentIndex++]; + isSolid = !isSolid; + } + patternSegmentLength = pattern[patternSegmentIndex] - unitsFromPathStart; + return isSolid; + } + + public float SegmentLength { get { return segmentLength; } } + public bool IsSolid { get { return solid; } } + + float[] pattern; + + int currentSegment; + bool solid = true; + float segmentLength; + float patternLength; + float patternOffset; + } +} diff --git a/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorUtils.cs.meta b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorUtils.cs.meta new file mode 100644 index 00000000..4b03c333 --- /dev/null +++ b/EintooAR/Assets/Plugins/ToolBuddy/Dependencies/Vector Graphics/Runtime/VectorUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc6ce72ebfec4b24faaee0fa9df6a984 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary.meta new file mode 100644 index 00000000..a0d394b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5317c4912d76a48828be99991f62fe81 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor.meta new file mode 100644 index 00000000..9ab0992f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2815bd3aec8ef4cdda0dd09e8ad737d2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary.meta new file mode 100644 index 00000000..c4297233 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b00880799a9f24f7b8a4c2e44c84138e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers.meta new file mode 100644 index 00000000..ce0fe896 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 36aa8feca9d884ed09e68d46a2a8a7b0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/DomainReloadManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/DomainReloadManager.cs new file mode 100644 index 00000000..b536855f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/DomainReloadManager.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEngine; + +// Credits: https://github.com/joshcamas/unity-domain-reload-helper +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class DomainReloadManager + { + #region Static fields + + private const BindingFlags kDefaultBindingAttr = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; + + #endregion + + #region Static methods + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] + private static void OnRuntimeLoad() + { + TypeCache.Rebuild(); + + SendReloadMessageToMembers(); + SendReloadMessageToMethods(); + } + + private static void SendReloadMessageToMembers() + { + var members = TypeCache.GetMembersWithAttribute( + memberTypes: MemberTypes.Field | MemberTypes.Property | MemberTypes.Event, + bindingAttr: kDefaultBindingAttr); + + foreach (var item in members) + { + var member = item.Key; + var attribute = item.Value; + if (member is FieldInfo) + { + ClearField(member as FieldInfo, attribute); + } + else if (member is PropertyInfo) + { + ClearProperty(member as PropertyInfo, attribute); + } + else if (member is EventInfo) + { + ClearEvent(member as EventInfo, attribute); + } + } + } + + private static void SendReloadMessageToMethods() + { + foreach (var item in TypeCache.GetMethodsWithAttribute(kDefaultBindingAttr)) + { + var methodInfo = item.Key; + if (methodInfo.IsGenericMethod) continue; + + DebugLogger.Log(CoreLibraryDomain.Default, $"Invoking reload method: {methodInfo.Name}."); + methodInfo.Invoke(null, new object[] { }); + } + } + + private static void ClearField(FieldInfo fieldInfo, ClearOnReloadAttribute clearAttribute) + { + var fieldType = fieldInfo.FieldType; + if (fieldType.IsGenericParameter || fieldInfo.DeclaringType.ContainsGenericParameters) + { + return; + } + + // Access attribute parameters + object resetValue = FindMemberResetValue(fieldType, clearAttribute); + + try + { + DebugLogger.Log(CoreLibraryDomain.Default, $"Clearing field {fieldInfo.Name} to value {resetValue} for type {fieldType}."); + fieldInfo.SetValue(null, resetValue); + } + catch(Exception e) + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, $"Unable to clear field {fieldInfo.Name}." + e); + } + } + + private static void ClearProperty(PropertyInfo propertyInfo, ClearOnReloadAttribute clearAttribute) + { + if (!propertyInfo.CanWrite) return; + + // Access attribute parameters + var propertyType = propertyInfo.PropertyType; + object resetValue = FindMemberResetValue(propertyType, clearAttribute); + + try + { + DebugLogger.Log(CoreLibraryDomain.Default, $"Clearing property {propertyInfo.Name} to value {resetValue}."); + propertyInfo.SetValue(null, resetValue); + } + catch + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, $"Unable to clear property {propertyInfo.Name}."); + } + } + + private static void ClearEvent(EventInfo eventInfo, ClearOnReloadAttribute clearAttribute) + { + var fieldInfo = eventInfo.DeclaringType.GetField(eventInfo.Name, kDefaultBindingAttr); + if ((fieldInfo == null) || fieldInfo.FieldType.IsGenericParameter) return; + + DebugLogger.Log(CoreLibraryDomain.Default, $"Clearing event {eventInfo.Name}."); + fieldInfo.SetValue(null, null); + } + + private static object FindMemberResetValue(Type target, ClearOnReloadAttribute clearAttribute) + { + object finalValue = null; + if (ClearOnReloadOption.Custom == clearAttribute.Option) + { + finalValue = Convert.ChangeType(clearAttribute.CustomValue, target); + if (finalValue == null) + { + Debug.LogWarning("Unable to assign value of type {valueToAssign.GetType()} to field {field.Name} of type {fieldType}."); + } + } + else if (target.IsValueType || (ClearOnReloadOption.Default == clearAttribute.Option)) + { + finalValue = Activator.CreateInstance(target); + } + return finalValue; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/DomainReloadManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/DomainReloadManager.cs.meta new file mode 100644 index 00000000..aee50c4f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/DomainReloadManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec2658a60321e44fe81b86a95e54bd8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/SettingsObjectEditorManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/SettingsObjectEditorManager.cs new file mode 100644 index 00000000..aa118cd0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/SettingsObjectEditorManager.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class SettingsObjectEditorManager + { + [InitializeOnLoadMethod] + private static void OnEditorReload() + { + var settingsObjects = AssetDatabaseUtility.FindAssetObjects(); + foreach (var obj in settingsObjects) + { + if(obj != null) + { + obj.OnEditorReload(); + } + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/SettingsObjectEditorManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/SettingsObjectEditorManager.cs.meta new file mode 100644 index 00000000..4e55afeb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Controllers/SettingsObjectEditorManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 668d41341e45a44ed8ea4d6145939d4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors.meta new file mode 100644 index 00000000..98241d09 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1207f43c46f3944158e30563ec0a499c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomEditorStyles.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomEditorStyles.cs new file mode 100644 index 00000000..69568465 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomEditorStyles.cs @@ -0,0 +1,228 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class CustomEditorStyles + { + #region Properties + + public static Color BorderColor => new Color(0.15f, 0.15f, 0.15f, 1f); + + #endregion + + #region Label styles + + public static GUIStyle Heading1Label() + { + return CreateLabel(baseStyle: EditorStyles.boldLabel, + fontSize: 18, + wordWrap: true, + richText: true, + alignment: TextAnchor.MiddleLeft); + } + + public static GUIStyle Heading2Label() + { + return CreateLabel(baseStyle: EditorStyles.boldLabel, + fontSize: 16, + wordWrap: true, + richText: true, + alignment: TextAnchor.MiddleLeft); + } + + public static GUIStyle Heading3Label() + { + return CreateLabel(baseStyle: EditorStyles.boldLabel, + fontSize: 14, + wordWrap: true, + richText: true, + alignment: TextAnchor.MiddleLeft); + } + + public static GUIStyle NormalLabel() + { + return CreateLabel(baseStyle: EditorStyles.label, + fontSize: 14, + wordWrap: true, + richText: true); + } + + public static GUIStyle OptionsLabel(bool wordWrap = true) + { + return CreateLabel(baseStyle: EditorStyles.label, + fontSize: 12, + wordWrap: wordWrap, + richText: true, + textClipping: TextClipping.Clip); + } + + public static GUIStyle LinkLabel() + { + return CreateLabel(baseStyle: "LinkLabel", + fontSize: 12, + wordWrap: true, + richText: true); + } + + public static GUIStyle MiniLabel(bool wordWrap = true) + { + return CreateLabel(baseStyle: EditorStyles.miniLabel, + fontSize: 12, + wordWrap: wordWrap, + richText: true); + } + + + public static GUIStyle SelectableLabel(FontStyle? fontStyle = null, + int? fontSize = null, + Color? textColor = null) + { + var normal = EditorStyles.label; + var baseStyle = new GUIStyle() + { + border = new RectOffset(0, 0, 0, 0), + font = normal.font, + alignment = normal.alignment, + active = normal.active, + onActive = normal.onActive, + focused = normal.focused, + onFocused = normal.onFocused, + normal = normal.normal, + onNormal = normal.onNormal, + hover = normal.hover, + onHover = normal.onHover, + }; + return CreateLabel(baseStyle, + fontStyle: fontStyle, + fontSize: fontSize ?? 14, + textColor: textColor); + } + + #endregion + + #region Button styles + + public static GUIStyle Button() + { + return CreateButton(baseStyle: "Button", + fontSize: 14); + } + + public static GUIStyle InvisibleButton() + { + return CreateButton(baseStyle: "InvisibleButton"); + } + + #endregion + + #region Background styles + + public static GUIStyle ItemBackground() + { + return CreateBackground(baseStyle: "AnimItemBackground"); + } + + public static GUIStyle GroupBackground() + { + GUIStyle baseStyle = "FrameBox"; + var baseMargin = baseStyle.margin; + return CreateBackground(baseStyle: baseStyle, + border: new RectOffset(0, 0, 0, 0), + margin: new RectOffset(baseMargin.left, baseMargin.right, baseMargin.top, 5)); + } + + #endregion + + #region Static methods + + public static GUIStyle CreateLabel(GUIStyle baseStyle, + FontStyle? fontStyle = null, + int? fontSize = null, + Color? textColor = null, + bool? wordWrap = null, + bool? richText = null, + TextAnchor? alignment = null, + TextClipping? textClipping = null) + { + var newStyle = new GUIStyle(baseStyle); + if (fontSize != null) + { + newStyle.fontSize = fontSize.Value; + } + if (fontStyle != null) + { + newStyle.fontStyle = fontStyle.Value; + } + if (textColor != null) + { + newStyle.normal.textColor = textColor.Value; + newStyle.onNormal.textColor = textColor.Value; + newStyle.active.textColor = textColor.Value; + newStyle.onActive.textColor = textColor.Value; + newStyle.focused.textColor = textColor.Value; + newStyle.onFocused.textColor = textColor.Value; + newStyle.hover.textColor = textColor.Value; + newStyle.onHover.textColor = textColor.Value; + } + if (wordWrap != null) + { + newStyle.wordWrap = wordWrap.Value; + } + if (richText != null) + { + newStyle.richText = richText.Value; + } + if (alignment != null) + { + newStyle.alignment = alignment.Value; + } + if (textClipping != null) + { + newStyle.clipping = textClipping.Value; + } + return newStyle; + } + + public static GUIStyle CreateButton(GUIStyle baseStyle, + int? fontSize = null, + int? fixedHeight = null, + TextAnchor? alignment = null) + { + var newStyle = new GUIStyle(baseStyle); + if (fontSize != null) + { + newStyle.fontSize = fontSize.Value; + } + if (fixedHeight != null) + { + newStyle.fixedHeight = fixedHeight.Value; + } + if (alignment != null) + { + newStyle.alignment = alignment.Value; + } + return newStyle; + } + + public static GUIStyle CreateBackground(GUIStyle baseStyle, + RectOffset border = null, + RectOffset margin = null) + { + var newStyle = new GUIStyle(baseStyle); + if (border != null) + { + newStyle.border = border; + } + if (margin != null) + { + newStyle.margin = margin; + } + return newStyle; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomEditorStyles.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomEditorStyles.cs.meta new file mode 100644 index 00000000..9a668488 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomEditorStyles.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e146cad3338c4e56a70c8554ed2901c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomInspector.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomInspector.cs new file mode 100644 index 00000000..8ac2d82b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomInspector.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class CustomInspector : UnityEditor.Editor + { + #region Unity methods + + protected virtual void OnEnable() + { } + + protected virtual void OnDisable() + { } + + public override void OnInspectorGUI() + { + EditorGUI.BeginChangeCheck(); + + DrawCustomInspector(); + + bool isDirty = EditorGUI.EndChangeCheck(); + if (isDirty || UnityEditorUtility.GetIsEditorDirty()) + { + serializedObject.ApplyModifiedProperties(); + UnityEditorUtility.SetIsEditorDirty(false); + } + } + + protected virtual void DrawCustomInspector() + { + var property = serializedObject.GetIterator(); + if (property.NextVisible(true)) + { + if (property.name == "m_Script") + { + GUI.enabled = false; + EditorGUILayout.PropertyField(property, true); + GUI.enabled = true; + } + while (property.NextVisible(false)) + { + EditorGUILayout.PropertyField(property, true); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomInspector.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomInspector.cs.meta new file mode 100644 index 00000000..77eae4d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/CustomInspector.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71ff8e366aef840198f173c1b05160fc +timeCreated: 1579541126 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutBuilder.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutBuilder.cs new file mode 100644 index 00000000..e06de468 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutBuilder.cs @@ -0,0 +1,527 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class EditorLayoutBuilder + { + #region Fields + + private SerializedObject m_serializedObject; + + private string[] m_tabs; + + private GetSectionsCallback m_getSectionsCallback; + + private DrawCallback m_drawTopBarCallback; + + private DrawTabViewCallback m_drawTabViewCallback; + + private DrawCallback m_drawFooterCallback; + + private string m_selectedTab; + + private EditorSectionInfo[] m_selectedTabSections; + + private EditorSectionInfo m_focusSection; + + private Vector2 m_tabBarScrollPosition; + + private Texture2D m_toggleOnIcon; + + private Texture2D m_toggleOffIcon; + + private GUIStyle m_backgroundStyle; + + private GUIStyle m_titleLabelStyle; + + private GUIStyle m_subtitleLabelStyle; + + private GUIStyle m_tabBarLabelNormalStyle; + + private GUIStyle m_tabBarLabelSelectedStyle; + + private GUIStyle m_selectableLabelStyle; + + private GUIStyle m_invisibleButtonStyle; + + #endregion + + #region Delegates + + public delegate EditorSectionInfo[] GetSectionsCallback(string tab); + + public delegate void DrawCallback(string tab); + + public delegate bool DrawTabViewCallback(string tab); + + #endregion + + #region Events + + public event Callback OnSectionStatusChange; + + public event Callback OnFocusSectionValueChange; + + #endregion + + #region Constructors + + public EditorLayoutBuilder(SerializedObject serializedObject, + string[] tabs, + GetSectionsCallback getSectionsCallback, + DrawCallback drawTopBarCallback, + DrawTabViewCallback drawTabViewCallback, + DrawCallback drawFooterCallback, + Texture2D toggleOnIcon, + Texture2D toggleOffIcon) + { + // Set properties + m_serializedObject = serializedObject; + m_tabs = tabs; + m_getSectionsCallback = getSectionsCallback; + m_drawTopBarCallback = drawTopBarCallback; + m_drawTabViewCallback = drawTabViewCallback; + m_drawFooterCallback = drawFooterCallback; + m_toggleOnIcon = toggleOnIcon; + m_toggleOffIcon = toggleOffIcon; + + LoadStyles(); + SetSelectedTab(m_tabs[0]); + } + + #endregion + + #region Static methods + + public static void DrawChildProperties(SerializedProperty property, + string prefix = null, + bool indent = true, + params string[] ignoreProperties) + { + EditorGUILayout.BeginVertical(CustomEditorStyles.GroupBackground()); + try + { + float maxWidth = 0; + //Calculate max label width first + IterateThroughValidChildren(property, ignoreProperties, (eachChildProperty) => + { + var currentDisplayName = (prefix != null) ? $"{prefix} {eachChildProperty.displayName}" : eachChildProperty.displayName; + float currentLabelWidth = GUI.skin.label.CalcSize(new GUIContent(currentDisplayName)).x; + + if(maxWidth < currentLabelWidth) + { + maxWidth = currentLabelWidth; + } + + }); + + + if (indent) + { + EditorGUI.indentLevel++; + } + + var oldLabelWidth = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = ((maxWidth / 128) + 1) * 128; //Adding some extra 128 pixels buffer. + IterateThroughValidChildren(property, ignoreProperties, (eachChildProperty) => + { + // Display the property + if (prefix != null) + { + EditorGUILayout.PropertyField(eachChildProperty, new GUIContent($"{prefix} {eachChildProperty.displayName}", eachChildProperty.tooltip), true); + } + else + { + EditorGUILayout.PropertyField(eachChildProperty, true); + } + }); + EditorGUIUtility.labelWidth = oldLabelWidth; + } + finally + { + if (indent) + { + EditorGUI.indentLevel--; + } + } + EditorGUILayout.EndVertical(); + } + + private static void IterateThroughValidChildren(SerializedProperty property, string[] ignoreProperties, Action callbackOnEachChild) + { + // Move pointer to first element + var currentProperty = property.Copy(); + var endProperty = default(SerializedProperty); + + // Start iterating through the properties + bool firstTime = true; + while (currentProperty.NextVisible(enterChildren: firstTime)) + { + if (firstTime) + { + endProperty = property.GetEndProperty(); + firstTime = false; + } + if (SerializedProperty.EqualContents(currentProperty, endProperty)) + { + break; + } + + // Exclude specified properties + if ((ignoreProperties != null) && System.Array.Exists(ignoreProperties, (item) => string.Equals(item, currentProperty.name))) + { + continue; + } + + callbackOnEachChild(currentProperty); + } + } + + #endregion + + #region Public methods + + public void DoLayout() + { + if (CanShowFocusSection()) + { + DrawFocusSection(); + } + else + { + m_drawTopBarCallback?.Invoke(m_selectedTab); + DrawTabBar(); + DrawTabView(); + m_drawFooterCallback?.Invoke(m_selectedTab); + } + m_serializedObject.ApplyModifiedProperties(); + m_serializedObject.Update(); + } + + public void DrawSection(EditorSectionInfo section, + bool showDetails = true, + bool selectable = true) + { + EditorGUILayout.BeginVertical(m_backgroundStyle); + bool expanded = DrawSectionHeader(section, + selectable); + bool endGroup = true; + if (showDetails || expanded) + { + if (section.DrawStyle == EditorSectionDrawStyle.Default) + { + endGroup = false; + EditorGUILayout.EndVertical(); + } + + if (section.DrawDetailsCallback != null) + { + section.DrawDetailsCallback(section); + } + else + { + if (section.DrawStyle == EditorSectionDrawStyle.Default) + { + endGroup = true; + EditorGUILayout.BeginVertical(m_backgroundStyle); + } + DrawSectionDetails(section); + } + } + if (endGroup) + { + EditorGUILayout.EndVertical(); + } + } + + public void DrawSectionDetails(EditorSectionInfo section) + { + bool originalGUIState = GUI.enabled; + try + { + // Update edit capability + GUI.enabled = section.IsEnabled; + + // Draw section properties + DrawChildProperties(property: section.Property, + ignoreProperties: section.IgnoreProperties); + } + finally + { + // Reset gui state + GUI.enabled = originalGUIState; + } + } + + public void BeginVertical() + { + EditorGUILayout.BeginVertical(m_backgroundStyle); + } + + public void EndVertical() + { + EditorGUILayout.EndVertical(); + } + + #endregion + + #region Private methods + + private void LoadStyles() + { + m_backgroundStyle = CustomEditorStyles.GroupBackground(); + m_titleLabelStyle = CustomEditorStyles.Heading2Label(); + m_subtitleLabelStyle = CustomEditorStyles.OptionsLabel(wordWrap: false); + m_tabBarLabelNormalStyle = CustomEditorStyles.SelectableLabel(fontSize: 16, textColor: Color.gray); + m_tabBarLabelSelectedStyle = CustomEditorStyles.SelectableLabel(fontSize: 16, fontStyle: FontStyle.Bold); + m_selectableLabelStyle = CustomEditorStyles.SelectableLabel(); + m_invisibleButtonStyle = CustomEditorStyles.InvisibleButton(); + } + + private bool CanShowFocusSection() + { + return (m_focusSection != null) && (m_focusSection.DrawStyle == EditorSectionDrawStyle.Default); + } + + private void DrawTabBar() + { + if (m_tabs.Length > 1) + { + m_tabBarScrollPosition = GUILayout.BeginScrollView(m_tabBarScrollPosition, m_backgroundStyle, GUILayout.Height(30f)); + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + for (int iter = 0; iter < m_tabs.Length; iter++) + { + var current = m_tabs[iter]; + var labelStyle = (current == m_selectedTab) ? m_tabBarLabelSelectedStyle : m_tabBarLabelNormalStyle; + if (GUILayout.Button(current, labelStyle, GUILayout.Width(80f))) + { + SetSelectedTab(current); + } + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + GUILayout.EndScrollView(); + } + } + + private void DrawTabView() + { + if ((m_drawTabViewCallback == null) || !m_drawTabViewCallback(m_selectedTab)) + { + for (int iter = 0; iter < m_selectedTabSections.Length; iter++) + { + var current = m_selectedTabSections[iter]; + DrawSection(section: current, + showDetails: (current.DrawStyle == EditorSectionDrawStyle.Expand) && (current == m_focusSection)); + } + } + } + + private bool DrawSectionHeader(EditorSectionInfo section, + bool selectable = true) + { + bool isSelected = (section == m_focusSection); + bool hasSubtitle = (section.Description != null); + float headerHeight = hasSubtitle ? 52f : 30f; + + // Draw rect + var rect = EditorGUILayout.GetControlRect(false, headerHeight); + //GUI.Box(rect, GUIContent.none, HeaderButtonStyle); + + /* + // Draw expand control + if (drawStyle == PropertyGroupDrawStyle.Expand) + { + var foldOutRect = new Rect(rect.x + 5f, rect.y, 50f, rect.height); + EditorGUI.LabelField(foldOutRect, isSelected ? "-" : "+", CustomEditorStyles.Heading3); + } + */ + + // Draw text + var titleRect = new Rect(rect.x + 5f, + rect.y + 4f, + rect.width * 0.8f, + 22f); + EditorGUI.LabelField(titleRect, section.DisplayName, m_titleLabelStyle); + if (hasSubtitle) + { + var subtitleRect = new Rect(rect.x + 5f, + rect.y + 25f, + rect.width * 0.8f, + 18f); + EditorGUI.LabelField(subtitleRect, section.Description, m_subtitleLabelStyle); + } + + // Draw selectable rect + var selectableRect = new Rect(rect.x, + rect.y, + rect.width * 0.8f, + rect.height); + if (selectable && EditorLayoutUtility.TransparentButton(selectableRect)) + { + isSelected = SetFocusSection(section); + } + + // Draw toggle button + var enabledProperty = section.EnabledProperty; + if (enabledProperty != null) + { + var toggleIcon = enabledProperty.boolValue ? m_toggleOnIcon : m_toggleOffIcon; + var iconSize = new Vector2(64f, 32f); + var toggleRect = new Rect(rect.xMax - (iconSize.x * 1.2f), + titleRect.yMin + ((titleRect.height - iconSize.y/2)), + iconSize.x, + iconSize.y); + if (GUI.Button(toggleRect, toggleIcon, m_invisibleButtonStyle)) + { + enabledProperty.boolValue = !enabledProperty.boolValue; + + // Raise an event to notify others, delay is added to ensure that modified properties are serialized + EditorApplication.delayCall += () => { OnSectionStatusChange?.Invoke(section); }; + } + } + return isSelected; + } + + private void DrawFocusSection() + { + var property = m_focusSection.Property; + EditorGUILayout.BeginHorizontal(m_backgroundStyle); + if (GUILayout.Button($"{'\u2190'} Back To Main Menu", m_titleLabelStyle)) + { + SetFocusSection(null); + return; + } + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + property.isExpanded = true; + DrawSection(section: m_focusSection, + selectable: false); + } + + #endregion + + #region Getter methods + + private EditorSectionInfo[] GetSections(string tab) + { + return m_getSectionsCallback(tab) ?? new EditorSectionInfo[0]; + } + + #endregion + + #region Setter methods + + private void SetSelectedTab(string tab) + { + // Update cached data + m_selectedTab = tab; + m_selectedTabSections = GetSections(tab); + } + + private bool SetFocusSection(EditorSectionInfo section) + { + var oldFocusSection = m_focusSection; + + // Set new value + m_focusSection = section; + + // Update selection state + if ((section != null) && (section == oldFocusSection)) + { + section.Property.isExpanded = !section.Property.isExpanded; + m_focusSection = null; + } + else + { + if (oldFocusSection != null) + { + oldFocusSection.Property.isExpanded = false; + } + if (section != null) + { + section.Property.isExpanded = true; + } + } + bool hasChanged = (oldFocusSection != m_focusSection); + if (hasChanged) + { + OnFocusSectionValueChange?.Invoke(m_focusSection); + } + return hasChanged; + } + + #endregion + } + + public class EditorSectionInfo + { + #region Properties + + public string DisplayName { get; private set; } + + public string Description { get; private set; } + + public bool IsEnabled => (EnabledProperty == null) || EnabledProperty.boolValue; + + public SerializedProperty Property { get; private set; } + + public SerializedProperty EnabledProperty { get; private set; } + + public EditorSectionDrawStyle DrawStyle { get; private set; } + + public DrawCallback DrawDetailsCallback { get; private set; } + + public string[] IgnoreProperties { get; private set; } + + public object Tag { get; private set; } + + #endregion + + #region Delegates + + public delegate void DrawCallback(EditorSectionInfo section); + + #endregion + + #region Constructors + + public EditorSectionInfo(string displayName, + SerializedProperty property, + SerializedProperty enabledProperty = null, + string description = null, + EditorSectionDrawStyle drawStyle = EditorSectionDrawStyle.Default, + DrawCallback drawDetailsCallback = null, + object tag = null, + params string[] ignoreProperties) + { + Assert.IsArgNotNull(displayName, nameof(displayName)); + Assert.IsArgNotNull(property, nameof(property)); + + // set properties + DisplayName = displayName; + Description = description; + Property = property; + EnabledProperty = enabledProperty ?? property.FindPropertyRelative("m_isEnabled"); + DrawStyle = drawStyle; + DrawDetailsCallback = drawDetailsCallback; + IgnoreProperties = ignoreProperties ?? new string[] { "m_isEnabled" }; + Tag = tag; + } + + #endregion + } + + public enum EditorSectionDrawStyle + { + Default, + + Expand, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutBuilder.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutBuilder.cs.meta new file mode 100644 index 00000000..4eb0c05c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4019dad4610704cb38751061068b7fa8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutUtility.cs new file mode 100644 index 00000000..465ae756 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutUtility.cs @@ -0,0 +1,117 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class EditorLayoutUtility + { + #region Static methods + + public static void DisableGUI() + { + GUI.enabled = false; + } + + public static void EnableGUI() + { + GUI.enabled = true; + } + + public static bool TransparentButton(Rect rect, + string label = "") + { + var originalColor = GUI.color; + try + { + GUI.color = Color.clear; + return GUI.Button(rect, label); + } + finally + { + GUI.color = originalColor; + } + } + + public static void StringPopup(int selectedIndex, + string[] options, + Callback onValueChange, + params GUILayoutOption[] layoutOptions) + { + int newValue = EditorGUILayout.Popup(selectedIndex, options, layoutOptions); + if (newValue != selectedIndex) + { + onValueChange?.Invoke(newValue); + } + } + + public static void StringPopup(SerializedProperty stringProperty, + ref int selectedIndex, + string[] displayedOptions, + Callback onValueChange = null, + params GUILayoutOption[] layoutOptions) + { + int newValue = EditorGUILayout.Popup(new GUIContent(stringProperty.displayName, stringProperty.tooltip), + selectedIndex, + displayedOptions, + layoutOptions); + if (newValue != selectedIndex) + { + selectedIndex = newValue; + stringProperty.stringValue = displayedOptions[newValue]; + + onValueChange?.Invoke(newValue); + } + } + + public static void Helpbox(string title, + string description, + System.Action drawFunc, + GUIStyle style) + { + GUILayout.BeginVertical(style); + GUILayout.Label(title, EditorStyles.boldLabel); + GUILayout.Label(description, EditorStyles.wordWrappedLabel); + drawFunc(); + GUILayout.EndVertical(); + } + + public static void Helpbox(string title, + string description, + string actionLabel, + System.Action onClick, + GUIStyle style) + { + Helpbox( + title: title, + description: description, + drawFunc: () => + { + if (GUILayout.Button(actionLabel)) + { + onClick?.Invoke(); + } + }, + style: style); + } + + public static void BeginBottomBar(Color? borderColor = null, + params GUILayoutOption[] options) + { + var bottomBarRect = EditorGUILayout.BeginHorizontal(options); + bottomBarRect.height = 1f; + if (borderColor != null) + { + EditorGUI.DrawRect(bottomBarRect, borderColor.Value); + } + } + + public static void EndBottomBar() + { + EditorGUILayout.EndHorizontal(); + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutUtility.cs.meta new file mode 100644 index 00000000..a1ff8982 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorLayoutUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c40767cd6fb464f3b83f7e68d5e47449 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorSplitView.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorSplitView.cs new file mode 100644 index 00000000..d7be1510 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorSplitView.cs @@ -0,0 +1,185 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class EditorSplitView + { + #region Fields + + private SplitDirection m_direction; + + private float m_splitRatio; + + private bool m_resize; + + private Vector2 m_firstContainerScrollPos; + + private Rect m_availableRect; + + #endregion + + #region Constructors + + private EditorSplitView(SplitDirection direction, float splitRatio) + { + m_splitRatio = splitRatio; + m_direction = direction; + } + + #endregion + + #region Static methods + + public static EditorSplitView CreateHorizontalSplitView(float splitRatio = 0.3f) + { + return new EditorSplitView(SplitDirection.Horizontal, splitRatio); + } + + public static EditorSplitView CreateVerticalSplitView(float splitRatio = 0.3f) + { + return new EditorSplitView(SplitDirection.Vertical, splitRatio); + } + + #endregion + + #region Private methods + + public void BeginArea() + { + Rect tempRect = Rect.zero; + if (m_direction == SplitDirection.Horizontal) + { + tempRect = EditorGUILayout.BeginHorizontal(); + } + else if (m_direction == SplitDirection.Vertical) + { + tempRect = EditorGUILayout.BeginVertical(); + } + if (tempRect.width > 0.0f) + { + m_availableRect = tempRect; + } + + BeginContainer(); + if (m_direction == SplitDirection.Horizontal) + { + m_firstContainerScrollPos = EditorGUILayout.BeginScrollView(m_firstContainerScrollPos, GUILayout.Width(m_availableRect.width * m_splitRatio)); + } + else if (m_direction == SplitDirection.Vertical) + { + m_firstContainerScrollPos = EditorGUILayout.BeginScrollView(m_firstContainerScrollPos, GUILayout.Height(m_availableRect.height * m_splitRatio)); + } + } + + public void Split() + { + // firstly mark that first container has ended + EditorGUILayout.EndScrollView(); + EndContainer(); + ResizeFirstContainer(); + + // initiate rendering second container + BeginContainer(); + } + + public void EndArea() + { + EndContainer(); + + if (m_direction == SplitDirection.Horizontal) + { + EditorGUILayout.EndHorizontal(); + } + else if (m_direction == SplitDirection.Vertical) + { + EditorGUILayout.EndVertical(); + } + } + + private Rect BeginContainer() + { + if (m_direction == SplitDirection.Horizontal) + { + return EditorGUILayout.BeginVertical(); + } + else if (m_direction == SplitDirection.Vertical) + { + return EditorGUILayout.BeginHorizontal(); + } + else + { + return Rect.zero; + } + } + + private void EndContainer() + { + if (m_direction == SplitDirection.Horizontal) + { + EditorGUILayout.EndVertical(); + } + else if (m_direction == SplitDirection.Vertical) + { + EditorGUILayout.EndHorizontal(); + } + } + + private void ResizeFirstContainer() + { + Rect resizeHandleRect; + if (m_direction == SplitDirection.Horizontal) + { + resizeHandleRect = new Rect(m_availableRect.width * m_splitRatio, m_availableRect.y, 1f, m_availableRect.height); + } + else + { + resizeHandleRect = new Rect(m_availableRect.x, m_availableRect.height * m_splitRatio, m_availableRect.width, 1f); + } + EditorGUI.DrawRect(resizeHandleRect, CustomEditorStyles.BorderColor); + if (m_direction == SplitDirection.Horizontal) + { + EditorGUIUtility.AddCursorRect(resizeHandleRect, MouseCursor.ResizeHorizontal); + } + else + { + EditorGUIUtility.AddCursorRect(resizeHandleRect, MouseCursor.ResizeVertical); + } + + if (Event.current.type == EventType.MouseDown && resizeHandleRect.Contains(Event.current.mousePosition)) + { + m_resize = true; + } + if (m_resize) + { + if (m_direction == SplitDirection.Horizontal) + { + m_splitRatio = Event.current.mousePosition.x / m_availableRect.width; + } + else + { + m_splitRatio = Event.current.mousePosition.y / m_availableRect.height; + } + } + if (Event.current.type == EventType.MouseUp) + { + m_resize = false; + } + } + + #endregion + + #region Nested types + + private enum SplitDirection + { + Horizontal, + + Vertical + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorSplitView.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorSplitView.cs.meta new file mode 100644 index 00000000..634a071b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorSplitView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a20197bdbee5a44b196d137503bca990 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorWindowZ.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorWindowZ.cs new file mode 100644 index 00000000..12f8516b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorWindowZ.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class EditorWindowZ : EditorWindow + { + #region Fields + + [System.NonSerialized] + private bool m_isInitialized; + + #endregion + + #region Unity methods + + protected virtual void OnGUI() + { + EnsureInitialized(); + } + + #endregion + + #region Private methods + + protected virtual void Init() + { } + + protected void EnsureInitialized() + { + if (m_isInitialized) return; + + m_isInitialized = true; + Init(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorWindowZ.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorWindowZ.cs.meta new file mode 100644 index 00000000..f96959db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EditorWindowZ.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0757cac8d21f499e80db0e955801000 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EnumMaskFieldDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EnumMaskFieldDrawer.cs new file mode 100644 index 00000000..efe41550 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EnumMaskFieldDrawer.cs @@ -0,0 +1,49 @@ +using System; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + [CustomPropertyDrawer(typeof(EnumMaskFieldAttribute))] + public class EnumMaskFieldDrawer : PropertyDrawer + { + #region Drawer Methods + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + label = EditorGUI.BeginProperty(position, label, property); + if (IsEnum()) + { + UnityEditorUtility.EnumFlagsField(position, label, property, GetEnumType()); + } + else + { + base.OnGUI(position, property, label); + } + + EditorGUI.EndProperty(); + } + + #endregion + + #region Private methods + + private Type GetEnumType() + { + return ((EnumMaskFieldAttribute)attribute).EnumType; + } + + private bool IsEnum() + { + Type type = GetEnumType(); + #if NETFX_CORE + return type.GetTypeInfo().IsEnum; + #else + return type.IsEnum; + #endif + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EnumMaskFieldDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EnumMaskFieldDrawer.cs.meta new file mode 100644 index 00000000..373cfe58 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/EnumMaskFieldDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 11e33d767c33a4a10bc1e378ed17ef72 +timeCreated: 1579074419 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FileBrowserAttributeDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FileBrowserAttributeDrawer.cs new file mode 100644 index 00000000..0e6d620a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FileBrowserAttributeDrawer.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + [CustomPropertyDrawer(typeof(FileBrowserAttribute))] + public class FileBrowserAttributeDrawer : PropertyDrawer + { + #region Base class methods + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + // draw property + var valueRect = new Rect(position.x, position.y, position.width - 50, position.height); + var buttonRect = new Rect(position.xMax - 45, position.y, 45, position.height); + + EditorGUI.PropertyField(valueRect, property, label); + if (GUI.Button(buttonRect, new GUIContent("Select"))) + { + EditorApplication.delayCall += () => + { + OpenFileBrowser(property); + }; + } + + EditorGUI.EndProperty(); + } + + #endregion + + #region Private methods + + private void OpenFileBrowser(SerializedProperty property) + { + var value = EditorUtility.OpenFilePanel("Select file", IOServices.GetAbsolutePath(property.stringValue), ((FileBrowserAttribute)attribute).Extension); + if (!string.IsNullOrEmpty(value)) + { + property.stringValue = ((FileBrowserAttribute)attribute).UsesRelativePath ? IOServices.GetRelativePath(IOServices.GetAbsolutePath(""), value) : value; + UnityEditorUtility.SetIsEditorDirty(true); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FileBrowserAttributeDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FileBrowserAttributeDrawer.cs.meta new file mode 100644 index 00000000..7192b224 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FileBrowserAttributeDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f924f934566204936b517248f5f8f4bd +timeCreated: 1576323713 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FolderBrowserAttributeDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FolderBrowserAttributeDrawer.cs new file mode 100644 index 00000000..0310cb91 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FolderBrowserAttributeDrawer.cs @@ -0,0 +1,51 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + [CustomPropertyDrawer(typeof(FolderBrowserAttribute))] + public class FolderBrowserAttributeDrawer : PropertyDrawer + { + #region Base class methods + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + // draw property + var valueRect = new Rect(position.x, position.y, position.width - 50, position.height); + var buttonRect = new Rect(position.xMax - 45, position.y, 45, position.height); + + EditorGUI.PropertyField(valueRect, property, label); + if (GUI.Button(buttonRect, new GUIContent("Select"))) + { + EditorApplication.delayCall += () => + { + OpenFolderBrowser(property); + }; + } + + EditorGUI.EndProperty(); + } + + #endregion + + #region Private methods + + private void OpenFolderBrowser(SerializedProperty property) + { + var value = EditorUtility.OpenFolderPanel("Select folder", IOServices.GetAbsolutePath(property.stringValue), string.Empty); + if (!string.IsNullOrEmpty(value)) + { + property.stringValue = ((FolderBrowserAttribute)attribute).UsesRelativePath ? IOServices.GetRelativePath(IOServices.GetAbsolutePath(""), value) : value; + UnityEditorUtility.SetIsEditorDirty(true); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FolderBrowserAttributeDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FolderBrowserAttributeDrawer.cs.meta new file mode 100644 index 00000000..897f7224 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/FolderBrowserAttributeDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cafbc9653f53348559d4e088e2014b44 +timeCreated: 1576323712 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/InterfaceFieldAttributeDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/InterfaceFieldAttributeDrawer.cs new file mode 100644 index 00000000..fb222def --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/InterfaceFieldAttributeDrawer.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + [CustomPropertyDrawer(typeof(InterfaceFieldAttribute))] + public class InterfaceFieldAttributeDrawer : PropertyDrawer + { + #region Base class methods + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + // draw property + EditorGUI.BeginChangeCheck(); + EditorGUI.PropertyField(position, property, label); + if (EditorGUI.EndChangeCheck()) + { + var reference = property.objectReferenceValue; + var interfaceType = ((InterfaceFieldAttribute)attribute).InterfaceType; + if (reference && !interfaceType.IsAssignableFrom(reference.GetType())) + { + DebugLogger.LogError(CoreLibraryDomain.Default, $"Object does not implement interface of type: {interfaceType}."); + property.objectReferenceValue = null; + } + } + + EditorGUI.EndProperty(); + } + } + + #endregion +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/InterfaceFieldAttributeDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/InterfaceFieldAttributeDrawer.cs.meta new file mode 100644 index 00000000..e90015f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/InterfaceFieldAttributeDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9c5bbe7cdfcd444908de802817480fbf +timeCreated: 1577514657 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/ReadOnlyAttributeDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/ReadOnlyAttributeDrawer.cs new file mode 100644 index 00000000..1e846a8d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/ReadOnlyAttributeDrawer.cs @@ -0,0 +1,66 @@ +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + [CustomPropertyDrawer(typeof(ReadOnlyAttribute), true)] + public class ReadOnlyAttributeDrawer : PropertyDrawer + { + private const float m_padding = 10f; + + #region Base class methods + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + var offset = GetMessageHeight(); + var fieldHeight = EditorGUI.GetPropertyHeight(property, label, true); + var fieldRect = new Rect(position.x, position.y + m_padding, position.width, fieldHeight); + var messageRect = new Rect(position.x, position.y + fieldHeight + m_padding + 2f, position.width, offset); + + GUI.enabled = false; + EditorGUI.PropertyField(fieldRect, property, label, true); + if (HasMessage()) + { + EditorGUI.LabelField(messageRect, GetMessage(), GetMessageStyle()); + } + GUI.enabled = true; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property, label, true) + GetMessageHeight() + m_padding * 2f; + } + + #endregion + + #region Utility methods + + private GUIStyle GetMessageStyle() + { + return CustomEditorStyles.MiniLabel(wordWrap: false); //TODO: Using false as calcSize is not working properly with wordwrap on. + } + + private bool HasMessage() + { + return !string.IsNullOrEmpty(GetMessage()); + } + + private string GetMessage() + { + var message = ((ReadOnlyAttribute)attribute).Message; + return message; + } + + private float GetMessageHeight() + { + var message = GetMessage(); + + if (string.IsNullOrEmpty(message)) + return 0f; + + return GetMessageStyle().CalcSize(new GUIContent(message)).y; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/ReadOnlyAttributeDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/ReadOnlyAttributeDrawer.cs.meta new file mode 100644 index 00000000..c44132ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/ReadOnlyAttributeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb5b59ba618cd4d3a97f3f6a1f7ec0c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/RuntimePlatformConstantDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/RuntimePlatformConstantDrawer.cs new file mode 100644 index 00000000..8dafedd9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/RuntimePlatformConstantDrawer.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + [CustomPropertyDrawer(typeof(RuntimePlatformConstant))] + public class RuntimePlatformConstantDrawer : PropertyDrawer + { + #region Unity methods + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUIUtility.singleLineHeight; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + // show property name label + label = EditorGUI.BeginProperty(position, label, property); + position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); + + // show property attributes + Rect platformRect = new Rect(position.x, position.y, 60f, position.height); + Rect idRect = new Rect(position.x + 65f, position.y, position.width - 65f, position.height); + int indentLevel = EditorGUI.indentLevel; + + EditorGUI.indentLevel = 0; + EditorGUI.PropertyField(platformRect, property.FindPropertyRelative("m_platform"), GUIContent.none); + EditorGUI.PropertyField(idRect, property.FindPropertyRelative("m_value"), GUIContent.none); + EditorGUI.indentLevel = indentLevel; + + EditorGUI.EndProperty(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/RuntimePlatformConstantDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/RuntimePlatformConstantDrawer.cs.meta new file mode 100644 index 00000000..c09abc82 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/RuntimePlatformConstantDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8345dac92c6c4d8e813c3a6cc3bd585 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsObjectInspector.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsObjectInspector.cs new file mode 100644 index 00000000..dbf05ac7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsObjectInspector.cs @@ -0,0 +1,244 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public abstract class SettingsObjectInspector : UnityEditor.Editor + { + #region Constants + + private static readonly ButtonMeta[] s_emptyButtonArray = new ButtonMeta[0]; + + private static readonly string[] s_ignoredProperties = new string[] { "m_Script" }; + + #endregion + + #region Fields + + private string m_productName; + + private string m_productVersion; + + // Assets + private Texture2D m_logoIcon; + + #endregion + + #region Properties + + public EditorLayoutBuilder LayoutBuilder { get; private set; } + + protected GUIStyle CustomMarginStyle { get; private set; } + + protected GUIStyle GroupBackgroundStyle { get; private set; } + + protected GUIStyle ProductNameStyle { get; private set; } + + protected GUIStyle NormalLabelStyle { get; private set; } + + protected GUIStyle OptionsLabelStyle { get; private set; } + + #endregion + + #region Abstract methods + + protected abstract UnityPackageDefinition GetOwner(); + + protected abstract string[] GetTabNames(); + + protected abstract EditorSectionInfo[] GetSectionsForTab(string tab); + + #endregion + + #region Unity methods + + protected virtual void OnEnable() + { } + + public override void OnInspectorGUI() + { + EnsurePropertiesAreSet(); + + EditorGUILayout.BeginVertical(CustomMarginStyle); + LayoutBuilder.DoLayout(); + EditorGUILayout.EndVertical(); + } + + public override bool UseDefaultMargins() + { + return false; + } + + #endregion + + #region Draw methods + + protected virtual void DrawTopBar(string tab) + { + GUILayout.BeginHorizontal(GroupBackgroundStyle); + + // logo section + GUILayout.BeginVertical(); + GUILayout.Space(2f); + GUILayout.Label(m_logoIcon, GUILayout.Height(64f), GUILayout.Width(64f)); + GUILayout.Space(2f); + GUILayout.EndVertical(); + + // product info + GUILayout.BeginVertical(); + GUILayout.Label(m_productName, ProductNameStyle); + GUILayout.Label(m_productVersion, NormalLabelStyle); + GUILayout.Label("Copyright © 2024 Voxel Busters Interactive LLP.", OptionsLabelStyle); + GUILayout.EndVertical(); + + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + } + + protected virtual bool DrawTabView(string tab) + { + return false; + } + + protected virtual void DrawFooter(string tab) + { } + + protected virtual void DrawButtonList(ButtonMeta[] buttons) + { + GUILayout.BeginVertical(); + foreach (var item in buttons) + { + if (GUILayout.Button(item.Label, GUILayout.MinHeight(80f))) + { + item?.OnClick(); + } + } + GUILayout.EndVertical(); + } + + #endregion + + #region Private methods + + private void EnsurePropertiesAreSet() + { + if (LayoutBuilder != null) return; + + LoadCustomStyles(); + LoadAssets(); + + // Set properties + var commonResourcePath = CoreLibrarySettings.Package.GetEditorResourcesPath(); + var ownerPackage = GetOwner(); + m_productName = ownerPackage.DisplayName; + m_productVersion = $"v{ownerPackage.Version}"; + LayoutBuilder = new EditorLayoutBuilder(serializedObject: serializedObject, + tabs: GetTabNames(), + getSectionsCallback: GetSectionsForTab, + drawTopBarCallback: DrawTopBar, + drawTabViewCallback: DrawTabView, + drawFooterCallback: DrawFooter, + toggleOnIcon: AssetDatabase.LoadAssetAtPath(commonResourcePath + "/Textures/toggle-on.png"), + toggleOffIcon: AssetDatabase.LoadAssetAtPath(commonResourcePath + "/Textures/toggle-off.png")); + LayoutBuilder.OnSectionStatusChange += OnSectionStatusChange; + LayoutBuilder.OnFocusSectionValueChange += OnFocusSectionValueChange; + } + + private void LoadCustomStyles() + { + CustomMarginStyle = new GUIStyle(EditorStyles.inspectorFullWidthMargins) + { + margin = new RectOffset(2, 2, 0, 0), + }; + GroupBackgroundStyle = CustomEditorStyles.GroupBackground(); + ProductNameStyle = CustomEditorStyles.Heading1Label(); + NormalLabelStyle = CustomEditorStyles.NormalLabel(); + OptionsLabelStyle = CustomEditorStyles.OptionsLabel(); + } + + private void LoadAssets() + { + // load custom assets + var ownerResourcePath = GetOwner().GetEditorResourcesPath(); + m_logoIcon = AssetDatabase.LoadAssetAtPath(ownerResourcePath + "/Textures/logo.png"); + } + + protected void EnsureChangesAreSerialized() + { + EditorUtility.SetDirty(target); + serializedObject.ApplyModifiedProperties(); + serializedObject.Update(); + } + + protected void TryApplyModifiedProperties() + { + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + serializedObject.Update(); + } + } + + #endregion + + #region Misc methods +#if NATIVE_PLUGINS_SHOW_UPM_MIGRATION + protected void ShowMigrateToUpmOption() + { + EditorLayoutUtility.Helpbox(title: "UPM Support", + description: "You can install the package on UPM.", + actionLabel: "Migrate To UPM", + onClick: GetOwner().MigrateToUpm, + style: GroupBackgroundStyle); + } +#endif + #endregion + + #region Event handler methods + + protected virtual void OnSectionStatusChange(EditorSectionInfo section) + { } + + protected virtual void OnFocusSectionValueChange(EditorSectionInfo section) + { } + + #endregion + + #region Nested types + + protected class ButtonMeta + { + #region Properties + + public string Label { get; private set; } + + public System.Action OnClick { get; private set; } + + #endregion + + #region Constructors + + public ButtonMeta(string label, System.Action onClick) + { + // set properties + Label = label; + OnClick = onClick; + } + + #endregion + } + + protected class DefaultTabs + { + public const string kGeneral = "General"; + + public const string kServices = "Services"; + + public const string kMisc = "Help"; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsObjectInspector.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsObjectInspector.cs.meta new file mode 100644 index 00000000..0521c330 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsObjectInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b40748a9ae9854787b64a0c8ccc993a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsProviderZ.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsProviderZ.cs new file mode 100644 index 00000000..c0e0d841 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsProviderZ.cs @@ -0,0 +1,89 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class SettingsProviderZ : SettingsProvider + { + #region Fields + + private SettingsObject m_settingsObject; + + private SettingsObjectInspector m_settingsObjectInspector; + + #endregion + + #region Constructors + + private SettingsProviderZ(SettingsObject settingsObject, string path, SettingsScope scopes) + : base(path, scopes) + { + // set properties + keywords = GetSearchKeywordsFromSerializedObject(new SerializedObject(settingsObject)); + m_settingsObject = settingsObject; + m_settingsObjectInspector = null; + } + + #endregion + + #region Create methods + + public static SettingsProviderZ Create(SettingsObject settingsObject, string path, SettingsScope scopes) + { + return new SettingsProviderZ(settingsObject, path, scopes); + } + + #endregion + + #region Base class methods + + public override void OnActivate(string searchContext, VisualElement rootElement) + { + base.OnActivate(searchContext, rootElement); + + m_settingsObjectInspector = UnityEditor.Editor.CreateEditor(m_settingsObject) as SettingsObjectInspector; + } + + public override void OnTitleBarGUI() + { + EditorGUILayout.InspectorTitlebar(false, m_settingsObject); + } + + public override void OnGUI(string searchContext) + { + if (m_settingsObjectInspector == null) + { + return; + } + + EditorGUILayout.BeginHorizontal(); + GUILayout.Space(10f); + EditorGUILayout.BeginVertical(); + m_settingsObjectInspector.OnInspectorGUI(); + EditorGUILayout.EndVertical(); + GUILayout.Space(10f); + EditorGUILayout.EndHorizontal(); + } + + public override void OnDeactivate() + { + base.OnDeactivate(); + + if (m_settingsObjectInspector) + { + Object.DestroyImmediate(m_settingsObjectInspector); + m_settingsObjectInspector = null; + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsProviderZ.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsProviderZ.cs.meta new file mode 100644 index 00000000..dead65fc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/SettingsProviderZ.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82c92451806c941888c94130f02c1a18 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/StringPopupAttributeDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/StringPopupAttributeDrawer.cs new file mode 100644 index 00000000..7d82f5f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/StringPopupAttributeDrawer.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + [CustomPropertyDrawer(typeof(StringPopupAttribute), true)] + public class StringPopupAttributeDrawer : PropertyDrawer + { + #region Base class methods + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + label = EditorGUI.BeginProperty(position, label, property); + + // determine whether popup is required + bool canShowPopup = true; + var popupAttribute = (StringPopupAttribute)attribute; + if (popupAttribute.PreferencePropertyName != null) + { + var preferencePropertyPath = property.propertyPath.Replace(property.name, popupAttribute.PreferencePropertyName); + var preferenceProperty = property.serializedObject.FindProperty(preferencePropertyPath); + canShowPopup = (preferenceProperty != null) && (preferenceProperty.boolValue == popupAttribute.PreferencePropertyValue); + } + + // draw property as per preference + if (canShowPopup) + { + var options = popupAttribute.Options; + int selectedIndex = Array.FindIndex(options, (item) => string.Equals(item, property.stringValue)); + selectedIndex = EditorGUI.Popup(position, label.text, selectedIndex, options); + + // assign value + property.stringValue = (selectedIndex == -1) ? string.Empty : options[selectedIndex]; + } + else + { + EditorGUI.PropertyField(position, property); + } + + EditorGUI.EndProperty(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/StringPopupAttributeDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/StringPopupAttributeDrawer.cs.meta new file mode 100644 index 00000000..bc2a5e09 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/StringPopupAttributeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a787cc0f93bc1438c845ec658e1ce1d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/UnityEditorUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/UnityEditorUtility.cs new file mode 100644 index 00000000..67d67133 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/UnityEditorUtility.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class UnityEditorUtility + { + #region Static methods + + public static bool ShowFoldableHeader(string prefKeyName, string content, string tooltip = null) + { + bool isExpanded = EditorGUILayout.Foldout(EditorPrefs.GetBool(prefKeyName, false), new GUIContent(content, tooltip)); + EditorPrefs.SetBool(prefKeyName, isExpanded); + + return isExpanded; + } + + public static bool ShowFoldableHeader(SerializedProperty property, string displayName = null) + { + bool isExpanded = EditorGUILayout.Foldout(property.isExpanded, new GUIContent(displayName ?? property.displayName, property.tooltip)); + property.isExpanded = isExpanded; + + return isExpanded; + } + + public static void SetIsEditorDirty(bool value) + { + EditorPrefs.SetBool("editor-is-dirty", value); + } + + public static bool GetIsEditorDirty() + { + return EditorPrefs.GetBool("editor-is-dirty", false); + } + + #endregion + + #region Mask field methods + + public static void EnumFlagsField(Rect position, GUIContent label, SerializedProperty property, Type type) + { + property.intValue = EnumFlagsField(position, label, property.intValue, type); + } + + public static int EnumFlagsField(Rect position, GUIContent label, int value, Type type) + { + EditorGUI.BeginChangeCheck(); +#if UNITY_2017_3_OR_NEWER + Enum newValue = EditorGUI.EnumFlagsField(position, label, GetValueAsEnum(value, type)); +#else + Enum newValue = EditorGUI.EnumMaskField(position, label, GetValueAsEnum(value, type)); +#endif + if (EditorGUI.EndChangeCheck()) + { + return GetEnumAsInt(newValue, type); + } + return value; + } + + public static T EnumFlagsField(Rect position, string label, T value) + { + return (T)(object)EnumFlagsField(position, new GUIContent(label), (int)(object)value, typeof(T)); + } + + #endregion + + #region Private static methods + + private static Array GetEnumValues(Type type) + { + return Enum.GetValues(type); + } + + private static Enum GetValueAsEnum(int value, Type type) + { + return (Enum)Enum.ToObject(type, value); + } + + private static int GetEnumAsInt(Enum value, Type type) + { + int newValueInt = Convert.ToInt32(value); + + // if "Everything" is set, force Unity to unset the extra bits by iterating through them + if (newValueInt < 0) + { + int bits = 0; + foreach (var enumValue in GetEnumValues(type)) + { + int checkBit = newValueInt & (int)enumValue; + if (checkBit != 0) + { + bits |= (int)enumValue; + } + } + newValueInt = bits; + } + return newValueInt; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/UnityEditorUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/UnityEditorUtility.cs.meta new file mode 100644 index 00000000..666315dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Inspectors/UnityEditorUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8a74bb08ae57c4ca79d5d452cffa4c63 +timeCreated: 1576323712 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc.meta new file mode 100644 index 00000000..0a386d8b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1aed5f1786094c25bd1a7e0d9ebaffb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/AddUnityPackageOperation.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/AddUnityPackageOperation.cs new file mode 100644 index 00000000..e7235364 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/AddUnityPackageOperation.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class AddUnityPackageOperation + { + #region Fields + + private string m_package; + + private Action m_callback; + + private AddRequest m_addPackageRequest; + + private ListRequest m_getPackagesRequest; + + #endregion + + #region Constructors + + public AddUnityPackageOperation(string package, System.Action callback) + { + // set properties + m_package = package; + m_callback = callback; + m_getPackagesRequest = null; + m_addPackageRequest = null; + } + + #endregion + + #region Public methods + + public void Start() + { + m_getPackagesRequest = Client.List(); + + // register for routine callbacks + EditorApplication.update += EditorUpdate; + } + + #endregion + + #region Private methods + + private void EditorUpdate() + { + // check whether dependency packages are already installed + if (m_getPackagesRequest != null) + { + if (m_getPackagesRequest.IsCompleted) + { + bool packageInstalled = false; + foreach (var item in m_getPackagesRequest.Result) + { + if (string.Equals(item.name, m_package)) + { + packageInstalled = true; + break; + } + } + + // reset state + m_getPackagesRequest = null; + + // create add request, incase if package is not installed + if (!packageInstalled) + { + Debug.LogFormat("[VoxelBusters] Creating request to add package {0}", m_package); + m_addPackageRequest = Client.Add(m_package); + } + else + { + SendCompletionCallback(); + } + } + return; + } + + // import resources after required packages are installed + if (m_addPackageRequest != null) + { + if (m_addPackageRequest.IsCompleted) + { + SendCompletionCallback(); + } + } + } + + private void SendCompletionCallback() + { + try + { + m_callback(); + } + finally + { + // reset state + m_package = null; + m_callback = null; + m_addPackageRequest = null; + m_getPackagesRequest = null; + EditorApplication.update -= EditorUpdate; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/AddUnityPackageOperation.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/AddUnityPackageOperation.cs.meta new file mode 100644 index 00000000..44d9582e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/AddUnityPackageOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a35410a8a14c41b3ae3d22ba17a44fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/ScriptingDefinesManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/ScriptingDefinesManager.cs new file mode 100644 index 00000000..feab53c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/ScriptingDefinesManager.cs @@ -0,0 +1,152 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.Build; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class ScriptingDefinesManager + { + #region Static fields + + private static Dictionary> s_addDefinesCollection; + + private static Dictionary> s_removeDefinesCollection; + + private static BuildTargetGroup[] s_supportedTargetGroups; + + + #endregion + + #region Static methods + + public static void AddDefine(string define, params BuildTargetGroup[] targetGroups) + { + EnsureInitialized(); + + AddDefineToCollection( + definesCollection: s_addDefinesCollection, + define: define, + targetGroups: GetBuildTargetGroupsOrDefault(targetGroups)); + UpdateDefineSymbolsDelayed(); + } + + public static void RemoveDefine(string define, params BuildTargetGroup[] targetGroups) + { + EnsureInitialized(); + + AddDefineToCollection( + definesCollection: s_removeDefinesCollection, + define: define, + targetGroups: GetBuildTargetGroupsOrDefault(targetGroups)); + UpdateDefineSymbolsDelayed(); + } + + private static void EnsureInitialized() + { + if (s_addDefinesCollection != null) return; + + // set properties + s_addDefinesCollection = new Dictionary>(); + s_removeDefinesCollection = new Dictionary>(); + s_supportedTargetGroups = GetSupportedBuildTargetGroups(); + } + + private static BuildTargetGroup[] GetSupportedBuildTargetGroups() + { + var newList = new List(); + foreach (BuildTarget buildTarget in System.Enum.GetValues(typeof(BuildTarget))) + { + var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); + if (BuildPipeline.IsBuildTargetSupported(buildTargetGroup, buildTarget)) + { + newList.AddUnique(buildTargetGroup); + } + } + return newList.ToArray(); + } + + private static BuildTargetGroup[] GetBuildTargetGroupsOrDefault(BuildTargetGroup[] targetGroups) + { + return ((targetGroups == null) || (targetGroups.Length == 0)) + ? s_supportedTargetGroups + : targetGroups; + } + + private static void AddDefineToCollection(Dictionary> definesCollection, string define, BuildTargetGroup[] targetGroups) + { + // add define symbol for all the specified target groups + foreach (var group in targetGroups) + { + if (!System.Array.Exists(s_supportedTargetGroups, (item) => (item == group))) + { + continue; + } + + if (!definesCollection.TryGetValue(group, out List groupDefines)) + { + var newDefines = new List(); + definesCollection.Add(group, newDefines); + + groupDefines = newDefines; + } + + groupDefines.AddUnique(define); + } + } + + private static void UpdateDefineSymbolsDelayed() + { + EditorApplication.delayCall -= UpdateDefineSymbols; + EditorApplication.delayCall += UpdateDefineSymbols; + } + + private static void UpdateDefineSymbols() + { + try + { + EnsureInitialized(); + AssetDatabase.StartAssetEditing(); + + foreach (var targetGroup in s_supportedTargetGroups) + { + var existingDefines = PlayerSettings.GetScriptingDefineSymbols(NamedBuildTarget.FromBuildTargetGroup(targetGroup)).Split(';'); + var updatedDefines = new List(existingDefines); + bool isModified = false; + if (s_addDefinesCollection.TryGetValue(targetGroup, out List addDefines)) + { + foreach (var define in addDefines) + { + isModified |= updatedDefines.AddUnique(define); + } + } + if (s_removeDefinesCollection.TryGetValue(targetGroup, out List removeDefines)) + { + foreach (var define in removeDefines) + { + isModified |= updatedDefines.Remove(define); + } + } + + // set values if there are modifications + if (isModified) + { + PlayerSettings.SetScriptingDefineSymbols(NamedBuildTarget.FromBuildTargetGroup(targetGroup), string.Join(";", updatedDefines.ToArray())); + } + } + } + finally + { + AssetDatabase.StopAssetEditing(); + + // reset properties + s_addDefinesCollection.Clear(); + s_removeDefinesCollection.Clear(); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/ScriptingDefinesManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/ScriptingDefinesManager.cs.meta new file mode 100644 index 00000000..ac6b90ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Misc/ScriptingDefinesManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef477a8c89c614881ab6594601f54f4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities.meta new file mode 100644 index 00000000..755a2aea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3046d47b6921d4f5e8210ffad4508e17 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AddUpmPackageRequest.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AddUpmPackageRequest.cs new file mode 100644 index 00000000..787009cd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AddUpmPackageRequest.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class AddUpmPackageRequest : AsyncOperation + { + #region Fields + + private AddRequest m_request; + + #endregion + + #region Properties + + public string Identifier { get; set; } + + #endregion + + #region Constructors + + public AddUpmPackageRequest(string identifier) + { + // Set properties + Identifier = identifier; + } + + #endregion + + #region Base class methods + + protected override void OnStart() + { + m_request = Client.Add(Identifier); + } + + protected override void OnUpdate() + { + if (!m_request.IsCompleted) return; + + // Process response + if (m_request.Status == StatusCode.Success) + { + Debug.Log($"Installed package: {m_request.Result.packageId} successfully."); + SetIsCompleted(StatusCode.Success); + } + else if (m_request.Status == StatusCode.Failure) + { + Debug.Log($"Failed to install package: {m_request.Result.packageId}. Error {m_request.Error.message}."); + SetIsCompleted(error: new Error(m_request.Error.message)); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AddUpmPackageRequest.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AddUpmPackageRequest.cs.meta new file mode 100644 index 00000000..13a25911 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AddUpmPackageRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a87b7bce048e1424984e245b62107603 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionData.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionData.cs new file mode 100644 index 00000000..e8b0e7a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionData.cs @@ -0,0 +1,61 @@ +using Newtonsoft.Json; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + + public partial class AssemblyDefinitionProxy + { + private struct AssemblyDefinitionData + { + #region Properties + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("references")] + public string[] References { get; set; } + + [JsonProperty("optionalUnityReferences")] + public string[] OptionalUnityReferences { get; set; } + + [JsonProperty("includePlatforms")] + public string[] IncludePlatforms { get; set; } + + [JsonProperty("excludePlatforms")] + public string[] ExcludePlatforms { get; set; } + + [JsonProperty("allowUnsafeCode")] + public bool AllowUnsafeCode { get; set; } + + [JsonProperty("overrideReferences")] + public bool OverrideReferences { get; set; } + + [JsonProperty("precompiledReferences")] + public string[] PrecompiledReferences { get; set; } + + [JsonProperty("autoReferenced")] + public bool AutoReferenced { get; set; } + + [JsonProperty("defineConstraints")] + public string[] DefineConstraints { get; set; } + + #endregion + + #region Public methods + + public static AssemblyDefinitionData Load(string dataString) + { + return JsonConvert.DeserializeObject(dataString); + } + + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + #endregion + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionData.cs.meta new file mode 100644 index 00000000..b03acc20 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6f335c720b36b4411b4d54550b2e94d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionProxy.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionProxy.cs new file mode 100644 index 00000000..c4c46748 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionProxy.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEditor.Compilation; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + + public partial class AssemblyDefinitionProxy + { + + private AssemblyDefinitionData m_data; + private string m_directoryPath; + + public AssemblyDefinitionProxy(string assemblyDirectoryPath) + { + string asmdefFile = Directory.GetFiles(assemblyDirectoryPath, "*.asmdef").FirstOrDefault(); + + if (string.IsNullOrEmpty(asmdefFile)) + { + throw new VBException($"No .asmdef file found in {assemblyDirectoryPath} directory."); + } + + m_directoryPath = assemblyDirectoryPath; + string contents = IOServices.ReadFile(asmdefFile); + m_data = AssemblyDefinitionData.Load(contents); + } + + public void IncludeAllPlatforms() + { + m_data.ExcludePlatforms = new string[0]; + m_data.IncludePlatforms = new string[0]; + } + + public void ExcludeAllPlatforms() + { + AssemblyDefinitionPlatform[] platforms = CompilationPipeline.GetAssemblyDefinitionPlatforms(); + m_data.ExcludePlatforms = platforms.Select(platform => platform.Name).ToArray(); + m_data.IncludePlatforms = new string[0]; + } + + + public void Save() + { + IOServices.CreateFile(IOServices.CombinePath(m_directoryPath, $"{m_data.Name}.asmdef"), m_data.ToJson()); + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionProxy.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionProxy.cs.meta new file mode 100644 index 00000000..c3c90e25 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionProxy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5c04f18545af4d43bfe1034aa18a54e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionServices.cs new file mode 100644 index 00000000..6a40f2f9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionServices.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class AssemblyDefinitionServices + { + #region Static methods + + public static void CreateDefinition(string path, + string name, + string[] includePlatforms = null, + string[] references = null) + { + string json = $"{{" + + $"\n\t\"name\":\"{name}\"," + + $"\n\t\"includePlatforms\":{Jsonify(includePlatforms)}," + + $"\n\t\"references\":{Jsonify(references)}" + + $"\n}}"; + + if (!IOServices.DirectoryExists(path)) + { + IOServices.CreateDirectory(path); + } + + IOServices.CreateFile(IOServices.CombinePath(path, $"{name}.asmdef"), json); + } + + private static string Jsonify(string[] array) + { + if (array == null) return "[]"; + + return $"[{string.Join(",", System.Array.ConvertAll(array, (item) => $"\"{item}\""))}]"; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionServices.cs.meta new file mode 100644 index 00000000..c9bead51 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssemblyDefinitionServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f85adcf2acaf49838d6c77837b24ca1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssetDatabaseUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssetDatabaseUtility.cs new file mode 100644 index 00000000..708a8ec6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssetDatabaseUtility.cs @@ -0,0 +1,90 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class AssetDatabaseUtility + { + #region Resources methods + + public static void CreateFolder(string folder) + { + var pathComponents = folder.Split('/'); + + string currentPath = string.Empty; + for (int iter = 0; iter < pathComponents.Length; iter++) + { + string component = pathComponents[iter]; + string newPath = Path.Combine(currentPath, component); + if (!AssetDatabase.IsValidFolder(newPath)) + { + AssetDatabase.CreateFolder(currentPath, component); + } + + // update path + currentPath = newPath; + } + } + + public static void CreateAssetAtPath(Object asset, + string assetPath) + { + // create container folder + string parentFolder = assetPath.Substring(0, assetPath.LastIndexOf('/')); + CreateFolder(parentFolder); + + // create asset + AssetDatabase.CreateAsset(asset, assetPath); + } + + public static T CreateScriptableObject(string assetPath, + System.Func createFunc = null, + System.Action onInit = null) where T : ScriptableObject + { + var instance = (createFunc != null) + ? createFunc() + : ScriptableObject.CreateInstance(); + onInit?.Invoke(instance); + + // create file + CreateAssetAtPath(instance, assetPath); + AssetDatabase.Refresh(); + + return instance; + } + + public static T LoadScriptableObject(string assetPath, + System.Action onLoad = null, + System.Func throwErrorFunc = null) where T : ScriptableObject + { + var instance = AssetDatabase.LoadAssetAtPath(assetPath); + if (instance) + { + onLoad?.Invoke(instance); + return instance; + } + + if (throwErrorFunc != null) + { + throw throwErrorFunc(); + } + + return null; + } + + public static T[] FindAssetObjects() where T : ScriptableObject + { + var guids = AssetDatabase.FindAssets($"t:{typeof(T).Name}"); + return System.Array.ConvertAll(guids, (item) => + { + string path = AssetDatabase.GUIDToAssetPath(item); + return AssetDatabase.LoadAssetAtPath(path); + }); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssetDatabaseUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssetDatabaseUtility.cs.meta new file mode 100644 index 00000000..870fd8dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/AssetDatabaseUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ab0d5c5a093844a80ae39b5d66ab9164 +timeCreated: 1576669974 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/DeleteAssetRequest.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/DeleteAssetRequest.cs new file mode 100644 index 00000000..5b6ce3d0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/DeleteAssetRequest.cs @@ -0,0 +1,39 @@ +using UnityEngine; +using System.Collections; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class DeleteAssetRequest : AsyncOperation + { + #region Properties + + public string Path { get; private set; } + + #endregion + + #region Constructors + + public DeleteAssetRequest(string path) + { + Path = path; + } + + #endregion + + #region Base class methods + + protected override void OnStart() + { + if (!AssetDatabase.DeleteAsset(Path)) + { + SetIsCompleted(new Error("File not found.")); + return; + } + SetIsCompleted(true); + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/DeleteAssetRequest.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/DeleteAssetRequest.cs.meta new file mode 100644 index 00000000..285677f6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/DeleteAssetRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2204697bc932f4f28b4dad14e5c29724 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/EditorApplicationUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/EditorApplicationUtility.cs new file mode 100644 index 00000000..8d77c0e0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/EditorApplicationUtility.cs @@ -0,0 +1,31 @@ +using UnityEditor; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class EditorApplicationUtility + { + #region Platform methods + + public static RuntimePlatform ConvertBuildTargetToRuntimePlatform(BuildTarget buildTarget) + { + switch (buildTarget) + { + case BuildTarget.iOS: + return RuntimePlatform.IPhonePlayer; + + case BuildTarget.tvOS: + return RuntimePlatform.tvOS; + + case BuildTarget.Android: + return RuntimePlatform.Android; + + default: + return (RuntimePlatform)(-1); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/EditorApplicationUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/EditorApplicationUtility.cs.meta new file mode 100644 index 00000000..9db91778 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/EditorApplicationUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f0eb0657c7f942c6a847903ed852752 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/ImportPackageRequest.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/ImportPackageRequest.cs new file mode 100644 index 00000000..7314867e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/ImportPackageRequest.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using System.Collections; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class ImportPackageRequest : VoxelBusters.CoreLibrary.AsyncOperation + { + #region Properties + + public string Path { get; private set; } + + #endregion + + #region Constructors + + public ImportPackageRequest(string path) + { + Path = path; + } + + #endregion + + #region Base class methods + + protected override void OnStart() + { + if (!IOServices.FileExists(Path)) + { + SetIsCompleted(new Error("File not found.")); + return; + } + + AssetDatabase.ImportPackage(Path, interactive: false); + SetIsCompleted(true); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/ImportPackageRequest.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/ImportPackageRequest.cs.meta new file mode 100644 index 00000000..05a2946d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/ImportPackageRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a33d068e4b51149e08021407780741d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/RemoveUpmPackageRequest.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/RemoveUpmPackageRequest.cs new file mode 100644 index 00000000..d36aa11e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/RemoveUpmPackageRequest.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class RemoveUpmPackageRequest : AsyncOperation + { + #region Fields + + private RemoveRequest m_request; + + #endregion + + #region Properties + + public string Identifier { get; set; } + + #endregion + + #region Constructors + + public RemoveUpmPackageRequest(string identifier) + { + // Set properties + Identifier = identifier; + } + + #endregion + + #region Base class methods + + protected override void OnStart() + { + m_request = Client.Remove(Identifier); + } + + protected override void OnUpdate() + { + if (!m_request.IsCompleted) return; + + // Process response + if (m_request.Status == StatusCode.Success) + { + Debug.Log($"Installed package: {m_request.PackageIdOrName} successfully."); + SetIsCompleted(m_request.Status); + } + else if (m_request.Status >= StatusCode.Failure) + { + Debug.Log($"Failed to install package: {m_request.PackageIdOrName}. Error {m_request.Error.message}."); + SetIsCompleted(error: new Error(m_request.Error.message)); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/RemoveUpmPackageRequest.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/RemoveUpmPackageRequest.cs.meta new file mode 100644 index 00000000..87a6e7f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/RemoveUpmPackageRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5ea45e566aa3452aa8db2aa084333c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/TypeCache.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/TypeCache.cs new file mode 100644 index 00000000..5f7ece94 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/TypeCache.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public class TypeCache + { + #region Static fields + + private static Dictionary s_typeMap; + + private static bool s_isDirty; + + #endregion + + #region Static methods + + public static void Rebuild() + { + // Reset properties + s_isDirty = true; + s_typeMap?.Clear(); + + EnsureCacheIsUpdated(); + } + + public static Dictionary GetMembersWithAttribute(MemberTypes memberTypes, BindingFlags bindingAttr) + where TAttribute : Attribute + { + return GetMembersWithAttribute(memberTypes, bindingAttr); + } + + public static Dictionary GetFieldsWithAttribute(BindingFlags bindingAttr) where TAttribute : Attribute + { + return GetMembersWithAttribute(MemberTypes.Field, bindingAttr); + } + + public static Dictionary GetPropertiesWithAttribute(BindingFlags bindingAttr) where TAttribute : Attribute + { + return GetMembersWithAttribute(MemberTypes.Property, bindingAttr); + } + + public static Dictionary GetEventsWithAttribute(BindingFlags bindingAttr) where TAttribute : Attribute + { + return GetMembersWithAttribute(MemberTypes.Event, bindingAttr); + } + + public static Dictionary GetMethodsWithAttribute(BindingFlags bindingAttr) where TAttribute : Attribute + { + return GetMembersWithAttribute(MemberTypes.Method, bindingAttr); + } + + #endregion + + #region Private methods + + private static void EnsureCacheIsUpdated() + { + if (!s_isDirty) return; + + // Initialize object + s_isDirty = false; + if (s_typeMap == null) + { + s_typeMap = new Dictionary(capacity: 1024); + } + + // Add types to the cache + foreach (var type in ReflectionUtility.FindAllTypes()) + { + s_typeMap.Add(type, type.FullName); + } + } + + private static Dictionary GetMembersWithAttribute(MemberTypes memberTypes, BindingFlags bindingAttr) + where TMemberInfo : MemberInfo + where TAttribute : Attribute + { + EnsureCacheIsUpdated(); + + // Find all the methods with specified attribute + var attributeType = typeof(TAttribute); + var collection = new Dictionary(); + foreach (var mapItem in s_typeMap) + { + var currentType = mapItem.Key; + + AddMembersWithRequiredAttributes(currentType); + + //When we create a "concrete" class derived from a generic class, it will internally constructs a new class (replacing generic parameters with actual types). We need to query this type for required attributes as well. + if (IsConstructedClosedGenericType(currentType.BaseType)) + { + AddMembersWithRequiredAttributes(currentType.BaseType); + } + } + return collection; + + void AddMembersWithRequiredAttributes(Type type) + { + var members = type.FindMembers(memberTypes, bindingAttr, null, null); + foreach (var memberInfo in members) + { + var attributes = memberInfo.GetCustomAttributes(attributeType, false); + if (attributes.IsNullOrEmpty()) continue; + + collection.Add(memberInfo as TMemberInfo, attributes[0] as TAttribute); + } + } + + } + + private static bool IsConstructedClosedGenericType(Type type) + { + return type != null && type.IsConstructedGenericType && !type.ContainsGenericParameters; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/TypeCache.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/TypeCache.cs.meta new file mode 100644 index 00000000..42e4a00c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/TypeCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d14cdf5aeeb847f0ac54ffd5c03ae1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/UnityPackageServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/UnityPackageServices.cs new file mode 100644 index 00000000..200f716f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/UnityPackageServices.cs @@ -0,0 +1,89 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public static class UnityPackageServices + { + #region Constants + + private static readonly string[] s_staticFolders = + { + "Essentials", + "Examples", + "Extras", + "Plugins", + "Scripts" + }; + + #endregion + + #region Static methods + + [System.Obsolete("This method is deprecated. Use MigrateToUpm instead.")] + public static void MigrateToUPM(this UnityPackageDefinition package) + { + MovePackageToUpmRecursively(package, refreshOnFinish: true); + } + + public static void MigrateToUpm(this UnityPackageDefinition package) + { + MovePackageToUpmRecursively(package, refreshOnFinish: true); + } + + private static void MovePackageToUpmRecursively(this UnityPackageDefinition package, bool refreshOnFinish) + { + try + { + // Move dependencies + foreach (var dependency in package.Dependencies) + { + MovePackageToUpmRecursively(dependency, refreshOnFinish: false); + } + + // Move main package + MovePackageToUpm(package); + } + finally + { + if (refreshOnFinish) + { + AssetDatabase.Refresh(); + } + } + } + + private static void MovePackageToUpm(UnityPackageDefinition package) + { + // Confirm that package exists in default install path + if (!package.IsInstalledWithinAssets()) return; + + // Move files and folders to new path + var sourceDirectory = new DirectoryInfo(package.DefaultInstallPath); + IOServices.CreateDirectory(package.UpmInstallPath); + foreach (var file in sourceDirectory.GetFiles()) + { + var fileName = file.Name; + if (System.Array.Exists(s_staticFolders, (item) => string.Equals(fileName, $"{item}.meta"))) + { + continue; + } + IOServices.MoveFile(file.FullName, $"{package.UpmInstallPath}/{fileName}"); + } + foreach (var subDirectory in sourceDirectory.GetDirectories()) + { + var subDirectoryName = subDirectory.Name; + if (System.Array.Exists(s_staticFolders, (item) => string.Equals(subDirectoryName, item))) + { + continue; + } + IOServices.MoveDirectory(subDirectory.FullName, $"{package.UpmInstallPath}/{subDirectoryName}"); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/UnityPackageServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/UnityPackageServices.cs.meta new file mode 100644 index 00000000..5ae39ed1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/Utilities/UnityPackageServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4667b4f0e71ec4791afd9f9d887a0c96 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/VoxelBusters.CoreLibrary.Editor.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/VoxelBusters.CoreLibrary.Editor.asmdef new file mode 100644 index 00000000..11593388 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/VoxelBusters.CoreLibrary.Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "VoxelBusters.CoreLibrary.Editor", + "references": [ + "VoxelBusters.CoreLibrary" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/VoxelBusters.CoreLibrary.Editor.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/VoxelBusters.CoreLibrary.Editor.asmdef.meta new file mode 100644 index 00000000..3984fd02 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/CoreLibrary/VoxelBusters.CoreLibrary.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2e305d2a5092a465db2a72838d17a500 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental.meta new file mode 100644 index 00000000..6859c8c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e4381b029b7441f28679a1978aee2bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors.meta new file mode 100644 index 00000000..1f19ec2a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d402a199f95044159bdc2107cdcd3334 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/InstallPath.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/InstallPath.cs new file mode 100644 index 00000000..f3780112 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/InstallPath.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.Experimental +{ + public static class InstallPath + { + #region Static properties + + public static string EssentialKit { get; private set; } = "https://link.voxelbusters.com/essential-kit"; + + public static string ScreenRecorderKit { get; private set; } = "https://link.voxelbusters.com/screen-recorder-kit"; + + public static string SocialKit { get; private set; } = "https://link.voxelbusters.com/social-kit"; + + public static string MLKit { get; private set; } = "https://link.voxelbusters.com/easy-ml-kit"; + + public static string ReportingKit { get; private set; } = "https://link.voxelbusters.com/reporting-kit"; + + public static string AdsKit { get; private set; } = "https://link.voxelbusters.com/ads-kit"; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/InstallPath.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/InstallPath.cs.meta new file mode 100644 index 00000000..2b07a2db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/InstallPath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccdff37e3ee3d41f794ef3d1b107b01d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxyMenuManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxyMenuManager.cs new file mode 100644 index 00000000..e84fe793 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxyMenuManager.cs @@ -0,0 +1,65 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor.Experimental +{ + public static class ProxyMenuManager + { + #region Constants + + private const string kMenuItemPath = "Window/Voxel Busters"; + + #endregion + + #region Static methods + +#if !ENABLE_VOXELBUSTERS_ESSENTIAL_KIT + [MenuItem(kMenuItemPath + "/Essential Kit/Learn More", priority = 0)] + public static void InstallEssentialKit() + { + OpenInstallPath(InstallPath.EssentialKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_SCREEN_RECORDER_KIT + [MenuItem(kMenuItemPath + "/Screen Recorder Kit/Learn More", priority = 0)] + public static void InstallScreenRecorderKit() + { + OpenInstallPath(InstallPath.ScreenRecorderKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_SOCIAL_KIT + [MenuItem(kMenuItemPath + "/Social Kit/Learn More", priority = 0)] + public static void InstallSocialKit() + { + OpenInstallPath(InstallPath.SocialKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_ML_KIT + [MenuItem(kMenuItemPath + "/ML Kit/Learn More", priority = 0)] + public static void InstallMLKit() + { + OpenInstallPath(InstallPath.MLKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_REPORTING_KIT + [MenuItem(kMenuItemPath + "/Reporting Kit/Learn More", priority = 0)] + public static void InstallReportingKit() + { + OpenInstallPath(InstallPath.ReportingKit); + } +#endif + + private static void OpenInstallPath(string path) + { + Application.OpenURL(path); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxyMenuManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxyMenuManager.cs.meta new file mode 100644 index 00000000..2bce9a42 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxyMenuManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d5313a9f9e1b4bcdb89c991f700da78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxySettingsProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxySettingsProvider.cs new file mode 100644 index 00000000..026eb27b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxySettingsProvider.cs @@ -0,0 +1,115 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.Experimental +{ + public class ProxySettingsProvider : SettingsProvider + { + #region Constants + + private const string kDefaultInstallMessageFormat = "In order to use {0} system you need to install the {0} package. Clicking the button below will install {0} package and allow you to configure."; + + private const string kDefaultProjectSettingsPathFormat = "Project/Voxel Busters/{0}"; + + #endregion + + #region Fields + + private string m_installMessage; + + private string m_installButtonLabel; + + private string m_installUrl; + + #endregion + + #region Constructors + + public ProxySettingsProvider(string name, + string installUrl, + string path = null, + SettingsScope scopes = SettingsScope.Project) + : base(path ?? string.Format(kDefaultProjectSettingsPathFormat, name), scopes) + { + // set properties + m_installMessage = string.Format(kDefaultInstallMessageFormat, name); + m_installButtonLabel = $"Install {name}"; + m_installUrl = installUrl; + } + + #endregion + + #region Create methods + +#if !ENABLE_VOXELBUSTERS_ESSENTIAL_KIT + [SettingsProvider] + private static SettingsProvider CreateEssentialKitSettingsProvider() + { + return new ProxySettingsProvider(name: "Essential Kit", + installUrl: InstallPath.EssentialKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_SCREEN_RECORDER_KIT + [SettingsProvider] + private static SettingsProvider CreateScreenRecorderKitSettingsProvider() + { + return new ProxySettingsProvider(name: "Screen Recorder Kit", + installUrl: InstallPath.ScreenRecorderKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_SOCIAL_KIT + [SettingsProvider] + private static SettingsProvider CreateSocialKitSettingsProvider() + { + return new ProxySettingsProvider(name: "Social Kit", + installUrl: InstallPath.SocialKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_ML_KIT + [SettingsProvider] + private static SettingsProvider CreateMLKitSettingsProvider() + { + return new ProxySettingsProvider(name: "ML Kit", + installUrl: InstallPath.MLKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_REPORTING_KIT + [SettingsProvider] + private static SettingsProvider CreateReportingKitSettingsProvider() + { + return new ProxySettingsProvider(name: "Reporting Kit", + installUrl: InstallPath.ReportingKit); + } +#endif + +#if !ENABLE_VOXELBUSTERS_ADS_KIT + [SettingsProvider] + private static SettingsProvider CreateAdsKitSettingsProvider() + { + return new ProxySettingsProvider(name: "Ads Kit", + installUrl: InstallPath.AdsKit); + } +#endif + + #endregion + + #region Base class methods + + public override void OnGUI(string searchContext) + { + EditorGUILayout.HelpBox(m_installMessage, MessageType.Info); + if (GUILayout.Button(m_installButtonLabel)) + { + Application.OpenURL(m_installUrl); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxySettingsProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxySettingsProvider.cs.meta new file mode 100644 index 00000000..d3cd2abc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/Inspectors/ProxySettingsProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3cf9ccd372c74ed1a07c9da30675268 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices.meta new file mode 100644 index 00000000..eafb076e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb5fe327595d0453e96752fdceb6dced +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices/AssetPackageDependencyResolver.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices/AssetPackageDependencyResolver.cs new file mode 100644 index 00000000..c2c9604c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices/AssetPackageDependencyResolver.cs @@ -0,0 +1,163 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.Compilation; +using System.IO; +using System; + +using JsonUtility = VoxelBusters.CoreLibrary.Parser.JsonUtility; + +namespace VoxelBusters.CoreLibrary.Editor.Experimental +{ + /* + public class UnityPackageManifestKey + { + public const string kDependencies = "dependencies"; + } + + public class AssetPackageDependencyResolver : AssetPostprocessor + { + #region Constants + + private const string kMainManifestPath = "Packages/manifest.json"; + + #endregion + + #region Fields + + private static Dictionary s_mainManifestDict; + + #endregion + + #region Static methods + + [MenuItem("Window/Voxel Busters/Asset Packages/Resolve Dependency")] + public static void Resolve() + { + var assetManifestFiles = Array.FindAll( + Array.ConvertAll(AssetDatabase.FindAssets("package"), (guid) => AssetDatabase.GUIDToAssetPath(guid)), + (assetPath) => IsPackageManifest(assetPath)); + if (assetManifestFiles.Length > 0) + { + AddMissingDependencies(assetManifestFiles); + } + } + + #endregion + + #region Private static methods + + private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + { + var assetManifestFiles = Array.FindAll( + importedAssets, + (assetPath) => IsPackageManifest(assetPath)); + AddMissingDependencies(assetManifestFiles); + } + + private static bool IsPackageManifest(string assetPath) + { + return assetPath.StartsWith("Assets") && string.Equals(Path.GetFileName(assetPath), "package.json"); + } + + private static void AddMissingDependencies(string[] assetManifestFiles) + { + // Gather all the dependencies from the packages installed in Assets + // Manually add them to project manifest file + var registeredDependencies = GetOrCreateMainManifestObject()[UnityPackageManifestKey.kDependencies] as Dictionary; + var newDependencies = new List>(); + foreach (var file in assetManifestFiles) + { + var assetManifestDict = OpenManifestAsObject(file); + if (assetManifestDict.TryGetValue(UnityPackageManifestKey.kDependencies, out object assetDependencies)) + { + var assetDependenciesDict = assetDependencies as Dictionary; + foreach (var dependency in assetDependenciesDict) + { + if (registeredDependencies.ContainsKey(dependency.Key)) continue; + + AddDependencyToList(ref newDependencies, dependency.Key, (string)dependency.Value); + } + } + } + + // Check whether we have any unregisted dependecies + if (newDependencies.Count > 0) + { + EditorApplication.delayCall += () => + { + PromptUserToMergeDependency(newDependencies); + }; + } + } + + private static void AddDependencyToList(ref List> list, string name, string versionOrPath) + { + int existingItemIndex; + if ((existingItemIndex = list.FindIndex((item) => string.Equals(item.Key, name))) == -1) + { + list.Add(new KeyValuePair(name, versionOrPath)); + } + else if (string.Compare(list[existingItemIndex].Value, versionOrPath) >= 0) + { + list[existingItemIndex] = new KeyValuePair(name, versionOrPath); + } + } + + private static Dictionary OpenManifestAsObject(string path) + { + var contents = File.ReadAllText(path); + return JsonUtility.FromJson(contents) as Dictionary; + } + + private static Dictionary GetOrCreateMainManifestObject() + { + if (s_mainManifestDict == null) + { + s_mainManifestDict = OpenManifestAsObject(kMainManifestPath); + } + return s_mainManifestDict; + } + + private static void PromptUserToMergeDependency(List> dependencies) + { + if (EditorUtility.DisplayDialog( + title: "Resolve Dependencies", + message: "System has detected that there are one or more dependecies used by the Asset-Packages that are missing from the Package-Manifest file. Do you approve adding it to the Package-Manifest file?", + ok: "Ok", + cancel: "Cancel")) + { + PerformMergeDependency(dependencies); + return; + } + } + + private static void PerformMergeDependency(List> values) + { + // Update dependency collection + var contentDict = GetOrCreateMainManifestObject(); + var dependenciesDict = contentDict[UnityPackageManifestKey.kDependencies]as Dictionary; + bool isDirty = false; + foreach (var newValue in values) + { + if (!dependenciesDict.ContainsKey(newValue.Key)) + { + dependenciesDict.Add(newValue.Key, newValue.Value); + isDirty = true; + } + } + + // Save changes + if (isDirty) + { + string jsonStr = JsonUtility.ToJson(contentDict); + File.WriteAllText(kMainManifestPath, jsonStr); + + CompilationPipeline.RequestScriptCompilation(); + } + } + + #endregion + }*/ +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices/AssetPackageDependencyResolver.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices/AssetPackageDependencyResolver.cs.meta new file mode 100644 index 00000000..c3ff42e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/PackageServices/AssetPackageDependencyResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5aafeb5c45eb14356b966fa280363556 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/VoxelBusters.CoreLibrary.Editor.Experimental.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/VoxelBusters.CoreLibrary.Editor.Experimental.asmdef new file mode 100644 index 00000000..8372c53e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/VoxelBusters.CoreLibrary.Editor.Experimental.asmdef @@ -0,0 +1,17 @@ +{ + "name": "VoxelBusters.CoreLibrary.Editor.Experimental", + "references": [ + "VoxelBusters.CoreLibrary.Parser" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/VoxelBusters.CoreLibrary.Editor.Experimental.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/VoxelBusters.CoreLibrary.Editor.Experimental.asmdef.meta new file mode 100644 index 00000000..82be3ee1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/Experimental/VoxelBusters.CoreLibrary.Editor.Experimental.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 894a53a1f4f2e4ecd8784477b7c79b98 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins.meta new file mode 100644 index 00000000..2a4c0caa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 522fe906ebbf249b7839e750de41a135 +folderAsset: yes +timeCreated: 1550135695 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline.meta new file mode 100644 index 00000000..4af5cc9b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 243da3205fe4a48788f0e8b05b4c2c2a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android.meta new file mode 100644 index 00000000..ddd56d99 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d0f996992d7a46309a6a9d544415fe9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsManager.cs new file mode 100644 index 00000000..df7afebd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsManager.cs @@ -0,0 +1,48 @@ +#if UNITY_EDITOR && UNITY_ANDROID +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor.Build; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public abstract class AndroidNativePluginsManager : NativePluginsManager + { + +#region Fields + + private AndroidNativePluginsProcessor[] m_pluginsProcessors; + +#endregion + +#region Properties + + private AndroidNativePluginsProcessor[] PluginsProcessors => m_pluginsProcessors ?? (m_pluginsProcessors = FindPluginsProcessors(this)); + +#endregion + + protected override void OnPreprocessNativePlugins() + { + // Send message to complete preprocess actions to all the NativeProcessors + var linkerFileWriter = CreateDefaultLinkXmlWriter(); + + PluginsProcessors.ForEach( + (item) => + { + item.OnCheckConfiguration(); + item.OnUpdateLinkXml(linkerFileWriter); + item.OnAddFiles(); + item.OnAddFolders(); + item.OnAddResources(); + item.OnUpdateConfiguration(); + }); + + linkerFileWriter.WriteToFile(); + } + + protected override void OnPostprocessNativePlugins() + { } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsManager.cs.meta new file mode 100644 index 00000000..d56b3d4f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25c43b475a8384fe88b39fb2a239f6ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsProcessor.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsProcessor.cs new file mode 100644 index 00000000..48a215da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsProcessor.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public abstract class AndroidNativePluginsProcessor : NativePluginsProcessor + { + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsProcessor.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsProcessor.cs.meta new file mode 100644 index 00000000..0e554b47 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/AndroidNativePluginsProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1793926f202745898b816170c7fd142 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base.meta new file mode 100644 index 00000000..6d9ad7a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8ded32878099642168dddc3f67e3c65c +folderAsset: yes +timeCreated: 1548444482 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Attribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Attribute.cs new file mode 100644 index 00000000..02da07a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Attribute.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Attribute + { + public string Key + { + get; + private set; + } + + public string Value + { + get; + private set; + } + + public Attribute(string key, string value) + { + Key = key; + Value = value; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Attribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Attribute.cs.meta new file mode 100644 index 00000000..5344afa2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Attribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 17400e3226cc646cdb12ab1c73a123f1 +timeCreated: 1548444608 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Element.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Element.cs new file mode 100644 index 00000000..dd6fb762 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Element.cs @@ -0,0 +1,83 @@ +using System.Collections; +using System.Collections.Generic; +using System.Xml; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public abstract class Element + { + private readonly string DefaultNamespace = "http://schemas.android.com/apk/res/android"; + private readonly string ToolsNamespace = "http://schemas.android.com/tools"; + + private List m_attributes; + private List m_children; + + public void AddAttribute(string key, string value) + { + if (m_attributes == null) + m_attributes = new List(); + + m_attributes.Add(new Attribute(key, value)); + } + + protected virtual XmlElement ToXml(XmlDocument xmlDocument) + { + XmlElement element = xmlDocument.CreateElement(GetName()); + if(m_attributes != null) + { + foreach(Attribute attribute in m_attributes) + { + string[] components = attribute.Key.Split(':'); + + if (attribute.Key.Contains("xmlns") || components.Length == 1) + { + element.SetAttribute(attribute.Key, attribute.Value); + } + else + { + XmlAttribute newAttribute = xmlDocument.CreateAttribute(components[0], components[1], GetNamespace(components[0])); + newAttribute.Value = attribute.Value; + element.Attributes.Append(newAttribute); + } + } + } + + if (m_children != null) + { + foreach(Element eachChild in m_children) + { + XmlElement xmlElement = eachChild.ToXml(xmlDocument); + element.AppendChild(xmlElement); + } + } + + return element; + } + + protected virtual void Add(Element element) + { + if(m_children == null) + m_children = new List(); + + m_children.Add(element); + } + + protected abstract string GetName(); + + private string GetNamespace(string key) + { + switch(key) + { + case "android": + return DefaultNamespace; + + case "tools": + return ToolsNamespace; + + default: + return DefaultNamespace; + } + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Element.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Element.cs.meta new file mode 100644 index 00000000..ef29ef6d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Base/Element.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2078df9b0a3fc451697d7360ff3f57ed +timeCreated: 1548444689 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest.meta new file mode 100644 index 00000000..019461c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0ee003c1d097842c1983476206d2e716 +folderAsset: yes +timeCreated: 1548444490 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application.meta new file mode 100644 index 00000000..1048e33f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 99c9f2098af0f486f8e0356dc1a8e12b +folderAsset: yes +timeCreated: 1548444499 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity.meta new file mode 100644 index 00000000..0463b325 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4622b6efb31304bff974d474f3e5b985 +folderAsset: yes +timeCreated: 1548483399 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Activity.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Activity.cs new file mode 100644 index 00000000..c59f1651 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Activity.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Activity : AppComponent + { + public Layout Layout + { + get; + set; + } + + protected override string GetName() + { + return "activity"; + } + } +} + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Activity.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Activity.cs.meta new file mode 100644 index 00000000..e2ad26ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Activity.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4adb85b5365824c30bebce1f978bd6e8 +timeCreated: 1548483092 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Layout.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Layout.cs new file mode 100644 index 00000000..51848ad5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Layout.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Layout : Element + { + protected override string GetName() + { + return "layout"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Layout.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Layout.cs.meta new file mode 100644 index 00000000..4117259a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Activity/Layout.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e6cbd4f6aa11042f88eaacbaec383b24 +timeCreated: 1548483310 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/ActivityAlias.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/ActivityAlias.cs new file mode 100644 index 00000000..a915c5f1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/ActivityAlias.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class ActivityAlias : Element + { + protected override string GetName() + { + return "activity-alias"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/ActivityAlias.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/ActivityAlias.cs.meta new file mode 100644 index 00000000..a56437df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/ActivityAlias.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5e9bdef9d449e4a5587b9a29db7174b2 +timeCreated: 1548483134 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/AppComponent.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/AppComponent.cs new file mode 100644 index 00000000..8b4a331d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/AppComponent.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public abstract class AppComponent : Element + { + public void Add(IntentFilter element) + { + base.Add(element); + } + + public void Add(MetaData element) + { + base.Add(element); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/AppComponent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/AppComponent.cs.meta new file mode 100644 index 00000000..38d647d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/AppComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cc0bee06d83824f4c8c52bc0e7f898dc +timeCreated: 1548491334 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Application.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Application.cs new file mode 100644 index 00000000..79547f10 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Application.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Application : Element + { + public void Add(Activity element) + { + base.Add(element); + } + + public void Add(ActivityAlias element) + { + base.Add(element); + } + + public void Add(MetaData element) + { + base.Add(element); + } + public void Add(Service element) + { + base.Add(element); + } + public void Add(Receiver element) + { + base.Add(element); + } + + public void Add(Provider element) + { + base.Add(element); + } + + public void Add(Library element) + { + base.Add(element); + } + + protected override string GetName() + { + return "application"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Application.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Application.cs.meta new file mode 100644 index 00000000..6ee5ffc5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Application.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2236ad04de1314d18b9cffdc19d6bf15 +timeCreated: 1548483051 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common.meta new file mode 100644 index 00000000..1c4923bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d86431439e58e4516b6f22c3bd435770 +folderAsset: yes +timeCreated: 1548483291 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters.meta new file mode 100644 index 00000000..eeee247b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c6bd51876a05b485bbf0cf6fdf3cb497 +folderAsset: yes +timeCreated: 1548444591 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Action.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Action.cs new file mode 100644 index 00000000..34338a60 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Action.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Action : Element + { + protected override string GetName() + { + return "action"; + } + } +} + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Action.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Action.cs.meta new file mode 100644 index 00000000..9fa2f634 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Action.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b980d757d95044a1aa597f284c415618 +timeCreated: 1548483534 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Category.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Category.cs new file mode 100644 index 00000000..6fc88fcb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Category.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Category : Element + { + protected override string GetName() + { + return "category"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Category.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Category.cs.meta new file mode 100644 index 00000000..25a068c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Category.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: baa14fb8a8b82420e813d1731048c4a3 +timeCreated: 1548483540 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Data.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Data.cs new file mode 100644 index 00000000..6a9c1fd0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Data.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Data : Element + { + protected override string GetName() + { + return "data"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Data.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Data.cs.meta new file mode 100644 index 00000000..afbcbe59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/Data.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb063e23bc367448f8102dd5dab301ee +timeCreated: 1548483545 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/IntentFilter.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/IntentFilter.cs new file mode 100644 index 00000000..a3460e95 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/IntentFilter.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class IntentFilter : Element + { + public void Add(Action action) + { + base.Add(action); + } + + public void Add(Category category) + { + base.Add(category); + } + + public void Add(Data data) + { + base.Add(data); + } + + protected override string GetName() + { + return "intent-filter"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/IntentFilter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/IntentFilter.cs.meta new file mode 100644 index 00000000..ec610a5f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/IntentFilters/IntentFilter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9272bed66e404926959c512c79b713e +timeCreated: 1548483478 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/MetaData.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/MetaData.cs new file mode 100644 index 00000000..8a22583d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/MetaData.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class MetaData : Element + { + protected override string GetName() + { + return "meta-data"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/MetaData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/MetaData.cs.meta new file mode 100644 index 00000000..e1909980 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Common/MetaData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af6a72eb2058445a4a233250af8b0a84 +timeCreated: 1548483301 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Library.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Library.cs new file mode 100644 index 00000000..a75e4eba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Library.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Library : Element + { + protected override string GetName() + { + return "uses-library"; + } + } +} + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Library.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Library.cs.meta new file mode 100644 index 00000000..699cfcf3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Library.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7deaaef3d971425a8a32b8650f21568 +timeCreated: 1548483114 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider.meta new file mode 100644 index 00000000..81ed3c10 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4741445c118a840e2b5e972866f5d3df +folderAsset: yes +timeCreated: 1548504615 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/GrantURIPermission.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/GrantURIPermission.cs new file mode 100644 index 00000000..c1e7d601 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/GrantURIPermission.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class GrantUriPermission : Element + { + protected override string GetName() + { + return "grant-uri-permission"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/GrantURIPermission.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/GrantURIPermission.cs.meta new file mode 100644 index 00000000..27dcc7f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/GrantURIPermission.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7b07cd910e6be4553a135272f91d9f07 +timeCreated: 1548504627 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/PathPermission.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/PathPermission.cs new file mode 100644 index 00000000..be70b369 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/PathPermission.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class PathPermission : Element + { + protected override string GetName() + { + return "path-permission"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/PathPermission.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/PathPermission.cs.meta new file mode 100644 index 00000000..991c560e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/PathPermission.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b6bcf71e231bf480fadab94f9ab54eb0 +timeCreated: 1548504643 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/Provider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/Provider.cs new file mode 100644 index 00000000..24d22313 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/Provider.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Provider : Element + { + public void Add(MetaData element) + { + base.Add(element); + } + + protected override string GetName() + { + return "provider"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/Provider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/Provider.cs.meta new file mode 100644 index 00000000..1b8fc0cd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Provider/Provider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e78bc9d4fdf754e07a32907facc984aa +timeCreated: 1548483109 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Receiver.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Receiver.cs new file mode 100644 index 00000000..65ad789a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Receiver.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Receiver : AppComponent + { + protected override string GetName() + { + return "receiver"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Receiver.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Receiver.cs.meta new file mode 100644 index 00000000..11633006 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Receiver.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 504b08d54874f469a9d64a4e11a612ab +timeCreated: 1548483103 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Service.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Service.cs new file mode 100644 index 00000000..2a9c82be --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Service.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Service : AppComponent + { + protected override string GetName() + { + return "service"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Service.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Service.cs.meta new file mode 100644 index 00000000..34ac66b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Application/Service.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7417a612ca54045af8a5cc32e2e90883 +timeCreated: 1548483098 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/CompatibleScreens.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/CompatibleScreens.cs new file mode 100644 index 00000000..f36407db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/CompatibleScreens.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class CompatibleScreens : Element + { + public void Add(Screen element) + { + base.Add(element); + } + protected override string GetName() + { + return "compatible-screens"; + } + + public class Screen : Element + { + protected override string GetName() + { + return "screen"; + } + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/CompatibleScreens.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/CompatibleScreens.cs.meta new file mode 100644 index 00000000..69249aee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/CompatibleScreens.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aff57dee9ad4e4bd1abe823cedafe291 +timeCreated: 1548505477 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Configuration.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Configuration.cs new file mode 100644 index 00000000..a3f42264 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Configuration.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Configuration : Element + { + protected override string GetName() + { + return "configuration"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Configuration.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Configuration.cs.meta new file mode 100644 index 00000000..d8939106 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Configuration.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e5af08ca249f147e0b318aff8ba412c5 +timeCreated: 1548481286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Feature.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Feature.cs new file mode 100644 index 00000000..9ae69fee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Feature.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Feature : Element + { + protected override string GetName() + { + return "uses-feature"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Feature.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Feature.cs.meta new file mode 100644 index 00000000..31c6a070 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Feature.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2bdb9e995965349f48ccd6dd8bcf4409 +timeCreated: 1548481308 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Instrumentation.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Instrumentation.cs new file mode 100644 index 00000000..81b633c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Instrumentation.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Instrumentation : Element + { + protected override string GetName() + { + return "instrumentation"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Instrumentation.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Instrumentation.cs.meta new file mode 100644 index 00000000..3296c086 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Instrumentation.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f2933ec077ea14403aa9fefa241e6f2d +timeCreated: 1548481247 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Manifest.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Manifest.cs new file mode 100644 index 00000000..1ac4551e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Manifest.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Collections.Generic; +using System.Xml; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Manifest : Element + { + public void Add(Application element) + { + base.Add(element); + } + + public void Add(Permission element) + { + base.Add(element); + } + + public void Add(Feature element) + { + base.Add(element); + } + + public void Add(Configuration element) + { + base.Add(element); + } + + public void Add(SupportedGLTexture element) + { + base.Add(element); + } + + public void Add(PermissionGroup element) + { + base.Add(element); + } + + public void Add(PermissionTree element) + { + base.Add(element); + } + + public void Add(Instrumentation element) + { + base.Add(element); + } + + public void Add(CompatibleScreens element) + { + base.Add(element); + } + + public void Add(SupportedScreens element) + { + base.Add(element); + } + + public void Add(SDK element) + { + base.Add(element); + } + + public void Add(Queries queries) + { + base.Add(queries); + } + + public XmlElement GenerateXml(XmlDocument xmlDocument) + { + return base.ToXml(xmlDocument); + } + + protected override string GetName() + { + return "manifest"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Manifest.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Manifest.cs.meta new file mode 100644 index 00000000..6368625a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Manifest.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8c08fc6d6e87349f99270844bbb2b4a2 +timeCreated: 1548481173 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Permission.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Permission.cs new file mode 100644 index 00000000..6866387d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Permission.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Permission : Element + { + protected override string GetName() + { + return "uses-permission"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Permission.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Permission.cs.meta new file mode 100644 index 00000000..c6335b89 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Permission.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ba24f4210505a493182a49b82df92984 +timeCreated: 1548481300 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionGroup.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionGroup.cs new file mode 100644 index 00000000..abed2047 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionGroup.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class PermissionGroup : Element + { + protected override string GetName() + { + return "permission-group"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionGroup.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionGroup.cs.meta new file mode 100644 index 00000000..d1be1140 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionGroup.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 48014ab84c2404f3e8fae4ea391bbc4d +timeCreated: 1548481261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionTree.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionTree.cs new file mode 100644 index 00000000..e978e419 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionTree.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class PermissionTree : Element + { + protected override string GetName() + { + return "permission-tree"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionTree.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionTree.cs.meta new file mode 100644 index 00000000..f12029f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/PermissionTree.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 140fa82570b9346b1878c520bec9117f +timeCreated: 1548481254 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries.meta new file mode 100644 index 00000000..09117885 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1635fc395ba504464bca2fd9a1ae1c0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Intent.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Intent.cs new file mode 100644 index 00000000..5968e28a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Intent.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Intent : Element + { + public void Add(Action action) + { + base.Add(action); + } + + public void Add(Category category) + { + base.Add(category); + } + + public void Add(Data data) + { + base.Add(data); + } + + protected override string GetName() + { + return "intent"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Intent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Intent.cs.meta new file mode 100644 index 00000000..b921f115 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Intent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eecfdba1970a94aac831832949224a96 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Package.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Package.cs new file mode 100644 index 00000000..ab0a6750 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Package.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Package : Element + { + protected override string GetName() + { + return "package"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Package.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Package.cs.meta new file mode 100644 index 00000000..7a199e68 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Package.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccb7e399fc57c4fdc8f372485ccb2c60 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Queries.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Queries.cs new file mode 100644 index 00000000..0bbacedf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Queries.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class Queries : Element + { + public void Add(Intent element) + { + base.Add(element); + } + + public void Add(Package element) + { + base.Add(element); + } + + protected override string GetName() + { + return "queries"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Queries.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Queries.cs.meta new file mode 100644 index 00000000..6699de01 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/Queries/Queries.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ce5a75f8155149eb94f53f59ba0cfed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SDK.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SDK.cs new file mode 100644 index 00000000..5b6a0b65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SDK.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class SDK : Element + { + protected override string GetName() + { + return "uses-sdk"; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SDK.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SDK.cs.meta new file mode 100644 index 00000000..5667fc3a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SDK.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 66cd7a768a80b4bb0b35b9d9d0b761cd +timeCreated: 1548481292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedGLTexture.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedGLTexture.cs new file mode 100644 index 00000000..33a7a2a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedGLTexture.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class SupportedGLTexture : Element + { + protected override string GetName() + { + return "supports-gl-texture"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedGLTexture.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedGLTexture.cs.meta new file mode 100644 index 00000000..e99e119e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedGLTexture.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a95f31e815d6946d58d3729c2051ddc5 +timeCreated: 1548481272 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedScreens.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedScreens.cs new file mode 100644 index 00000000..56f6e3df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedScreens.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Android +{ + public class SupportedScreens : Element + { + protected override string GetName() + { + return "compatible-screens"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedScreens.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedScreens.cs.meta new file mode 100644 index 00000000..67aa5122 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Android/Manifest/SupportedScreens.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 22f762cc3a0ee484a93f94d396546604 +timeCreated: 1548481239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/INativeBindingsWriter.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/INativeBindingsWriter.cs new file mode 100644 index 00000000..8f8ba9c6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/INativeBindingsWriter.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public interface INativeBindingsWriter + { + #region Methods + + void WriteStart(string product = null, + string author = null, + string copyrights = null); + + void WriteCustomTypeDeclarations(System.Type[] customTypes); + + void WriteMethod(MethodInfo method); + + void WriteEnd(out string[] files); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/INativeBindingsWriter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/INativeBindingsWriter.cs.meta new file mode 100644 index 00000000..70246a82 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/INativeBindingsWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74ea67f343f5841afa6d04d2e9cc190b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.AssemblyDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.AssemblyDefinition.cs new file mode 100644 index 00000000..387d729e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.AssemblyDefinition.cs @@ -0,0 +1,88 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public partial class LinkXmlWriter + { + private class AssemblyDefinition + { + #region Fields + + private List m_requiredNamespaces; + + private List m_ignoreNamespaces; + + private List m_requiredTypes; + + private List m_ignoreTypes; + + #endregion + + #region Properties + + public string AssemblyName { get; private set; } + + public string[] RequiredNamespaces { get { return m_requiredNamespaces.ToArray(); } } + + public string[] IgnoreNamespaces { get { return m_ignoreNamespaces.ToArray(); } } + + public string[] RequiredTypes { get { return m_requiredTypes.ToArray(); } } + + public string[] IgnoredTypes { get { return m_ignoreTypes.ToArray(); } } + + #endregion + + #region Constructors + + public AssemblyDefinition(string assembly) + { + // set default properties + AssemblyName = assembly; + m_requiredNamespaces = new List(); + m_ignoreNamespaces = new List(); + m_requiredTypes = new List(); + m_ignoreTypes = new List(); + } + + #endregion + + #region Public methods + + public void AddRequiredNamespace(string name) + { + AddValueIfNotFound(m_requiredNamespaces, name); + } + + public void AddIgnoreNamespace(string name) + { + AddValueIfNotFound(m_ignoreNamespaces, name); + } + + public void AddRequiredType(string name) + { + AddValueIfNotFound(m_requiredTypes, name); + } + + public void AddIgnoreType(string name) + { + AddValueIfNotFound(m_ignoreTypes, name); + } + + #endregion + + #region Private methods + + private void AddValueIfNotFound(List list, string value) + { + if (!list.Contains(value)) + { + list.Add(value); + } + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.AssemblyDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.AssemblyDefinition.cs.meta new file mode 100644 index 00000000..53b46a59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.AssemblyDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5c70580980a9457aa8221741f447079 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.cs new file mode 100644 index 00000000..ed707bb9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.cs @@ -0,0 +1,183 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public partial class LinkXmlWriter + { + #region Fields + + private List m_assemblies; + + private string m_savePath; + + #endregion + + #region Constructors + + public LinkXmlWriter(string path) + { + // set properties + m_savePath = path; + m_assemblies = new List(); + } + + #endregion + + #region Private static methods + + private static void WriteNamespace(XmlWriter writer, string name, bool preserve) + { + writer.WriteStartElement("namespace"); + writer.WriteAttributeString("fullname", name); + writer.WriteAttributeString("preserve", preserve ? "all" : "nothing"); + writer.WriteEndElement(); + } + + private static void WriteType(XmlWriter writer, string name, bool preserve) + { + writer.WriteStartElement("type"); + writer.WriteAttributeString("fullname", name); + writer.WriteAttributeString("preserve", preserve ? "all" : "nothing"); + writer.WriteEndElement(); + } + + #endregion + + #region Public methods + + private AssemblyDefinition GetOrCreateAssemblyDefinition(string assembly) + { + var targetDefinition = m_assemblies.Find((item) => string.Equals(assembly, item.AssemblyName)); + if (targetDefinition == null) + { + var newDefinition = new AssemblyDefinition(assembly); + m_assemblies.Add(newDefinition); + + return newDefinition; + } + return targetDefinition; + } + + public void AddConfiguration(string name, NativeFeatureRuntimeConfiguration runtimeConfiguration, RuntimePlatform platform, bool useFallbackPackage) + { + var packageConfiguration = runtimeConfiguration.GetPackageForPlatform(platform); + var fallbackConfiguration = runtimeConfiguration.FallbackPackage; + + if (useFallbackPackage && fallbackConfiguration != null) + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, $"Using fallback configuration for : {name}."); + + AddRequiredType(fallbackConfiguration.Assembly, fallbackConfiguration.NativeInterfaceType); + if(packageConfiguration != null) + { + AddIgnoreType(packageConfiguration.Assembly, packageConfiguration.NativeInterfaceType); + } + + return; + } + + if(packageConfiguration != null) + { + AddRequiredNamespace(packageConfiguration.Assembly, packageConfiguration.Namespace); + } + } + + public void AddConfiguration(NativeFeatureRuntimeConfiguration runtimeConfiguration) + { + + var packages = runtimeConfiguration.Packages; + + foreach(var eachPackage in packages) + { + AddRequiredType(eachPackage.Assembly, eachPackage.NativeInterfaceType); + } + + var fallbackPackage = runtimeConfiguration.FallbackPackage; + + if(fallbackPackage != null) + { + AddRequiredType(fallbackPackage.Assembly, fallbackPackage.NativeInterfaceType); + } + } + + public void AddRequiredNamespace(string assembly, string ns) + { + GetOrCreateAssemblyDefinition(assembly) + .AddRequiredNamespace(ns); + } + + public void AddIgnoreNamespace(string assembly, string ns) + { + GetOrCreateAssemblyDefinition(assembly) + .AddIgnoreNamespace(ns); + } + + public void AddRequiredType(string assembly, string type) + { + GetOrCreateAssemblyDefinition(assembly) + .AddRequiredType(type); + } + + public void AddIgnoreType(string assembly, string type) + { + GetOrCreateAssemblyDefinition(assembly) + .AddIgnoreType(type); + } + + public void WriteToFile() + { + // remove existing file + if (IOServices.FileExists(m_savePath)) + { + IOServices.DeleteFile(m_savePath); + } + + // create new + var settings = new XmlWriterSettings(); + settings.Encoding = new System.Text.UTF8Encoding(true); + settings.ConformanceLevel = ConformanceLevel.Document; + settings.OmitXmlDeclaration = true; + settings.Indent = true; + using (var writer = XmlWriter.Create(m_savePath, settings)) + { + writer.WriteStartDocument(); + + writer.WriteStartElement("linker"); + foreach (var item in m_assemblies) + { + // write ignored namespace + writer.WriteStartElement("assembly"); + writer.WriteAttributeString("fullname", item.AssemblyName); + foreach (string namespaceValue in item.RequiredNamespaces) + { + WriteNamespace(writer, namespaceValue, true); + } + foreach (string namespaceValue in item.IgnoreNamespaces) + { + WriteNamespace(writer, namespaceValue, false); + } + foreach (string type in item.RequiredTypes) + { + WriteType(writer, type, true); + } + foreach (string type in item.IgnoredTypes) + { + WriteType(writer, type, false); + } + writer.WriteEndElement(); + } + writer.WriteEndElement(); + + writer.WriteEndDocument(); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.cs.meta new file mode 100644 index 00000000..016896eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/LinkXmlWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c15509cba6a7c484a81ba9e9502ed2fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativeBindingsGenerator.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativeBindingsGenerator.cs new file mode 100644 index 00000000..f18d7da0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativeBindingsGenerator.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public enum NativeBindingsGeneratorOptions + { + Header = 1 << 0, + + Source = 1 << 1, + } + + public class NativeBindingsGenerator + { + #region Properties + + private string m_output; + + private NativeBindingsGeneratorOptions m_options; + + private string m_product; + + private string m_author; + + private string m_copyrights; + + #endregion + + #region Constructors + + public NativeBindingsGenerator(string outputPath, + NativeBindingsGeneratorOptions options) + { + // Set properties + m_output = IOServices.GetAbsolutePath(outputPath); + m_options = options; + } + + #endregion + + #region Static methods + + public static INativeBindingsWriter CreateBindingsWriter(string path, + string fileName, + NativeBindingsGeneratorOptions options, + BuildTarget buildTarget) + { + switch (buildTarget) + { + case BuildTarget.iOS: + return new ObjectiveCBindingsWriter(path, fileName, options); + + default: + throw new NotSupportedException(); + } + } + + #endregion + + #region Public methods + + public NativeBindingsGenerator SetProduct(string value) + { + // Set value + m_product = value; + + return this; + } + + public NativeBindingsGenerator SetAuthor(string value) + { + // Set value + m_author = value; + + return this; + } + + public NativeBindingsGenerator SetCopyrights(string value) + { + // Set value + m_copyrights = value; + + return this; + } + + public void Generate(Type cScriptType, + string fileName, + BuildTarget buildTarget, + Type[] customTypes, + out string[] files) + { + // Create output folder + IOServices.CreateDirectory(m_output, false); + + // Create native files + var bindingsWriter = CreateBindingsWriter(m_output, + fileName, + m_options, + buildTarget); + try + { + var externMethods = Array.FindAll(cScriptType.GetMethods(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public), + (method) => (method.GetMethodBody() == null) && method.IsStatic); + bindingsWriter.WriteStart(m_product, + m_author, + m_copyrights); + if (!customTypes.IsNullOrEmpty()) + { + bindingsWriter.WriteCustomTypeDeclarations(customTypes); + } + foreach (var method in externMethods) + { + bindingsWriter.WriteMethod(method); + } + } + finally + { + bindingsWriter.WriteEnd(out files); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativeBindingsGenerator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativeBindingsGenerator.cs.meta new file mode 100644 index 00000000..9c878ed8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativeBindingsGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f46f80088620f499c821d1d293724797 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObject.cs new file mode 100644 index 00000000..d7634d01 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObject.cs @@ -0,0 +1,92 @@ +using System; +using UnityEngine; +using UnityEngine.Serialization; +using UnityEditor; +using System.Collections.Generic; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [Serializable] + public partial class NativePluginsExporterObject : ScriptableObject + { + #region Constants + + private const string kBaseExporterName = "Base"; + + #endregion + + #region Fields + + [SerializeField] + private NativePluginsExporterObjectGroup m_group; + + [SerializeField] + private bool m_isEnabled = true; + + #endregion + + #region Properties + + public NativePluginsExporterObjectGroup Group + { + get { return m_group; } + set { m_group = value; } + } + + public bool IsEnabled + { + get { return m_isEnabled; } + set + { + m_isEnabled = value; + UpdateInternalState(value); + } + } + + #endregion + + #region Static methods + + public static T[] FindObjects(bool includeInactive = false) where T : NativePluginsExporterObject + { + var availableObjects = AssetDatabaseUtility.FindAssetObjects(); + + // Filter assets to required type objects + bool hasActiveObjects = false; + var baseExporterObject = default(T); + var finalObjectList = new List(availableObjects.Length); + foreach (var exporterObject in availableObjects) + { + bool isBaseObject = string.Equals(exporterObject.name, kBaseExporterName); + if (includeInactive || exporterObject.IsEnabled) + { + finalObjectList.Add(exporterObject); + } + // Track object status + if (isBaseObject) + { + baseExporterObject = exporterObject; + } + hasActiveObjects |= !isBaseObject && exporterObject.IsEnabled; + } + + // Ensure base type is included + if (!includeInactive) + { + baseExporterObject.IsEnabled = true; + finalObjectList.AddUnique(baseExporterObject); + } + + return finalObjectList.ToArray(); + } + + #endregion + + #region Private methods + + protected virtual void UpdateInternalState(bool active) + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObject.cs.meta new file mode 100644 index 00000000..96021869 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4eeec00769cc43f2a21921915f8fa89 +timeCreated: 1549459341 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectEditor.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectEditor.cs new file mode 100644 index 00000000..154b7c61 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectEditor.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary.Editor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [CustomEditor(typeof(NativePluginsExporterObject))] + public class NativePluginsExporterObjectEditor : CustomInspector + { } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectEditor.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectEditor.cs.meta new file mode 100644 index 00000000..19cf364b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bad85a568bb154ae285eb827aa08ce10 +timeCreated: 1579541166 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectGroup.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectGroup.cs new file mode 100644 index 00000000..155deae2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectGroup.cs @@ -0,0 +1,28 @@ +using System; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [CreateAssetMenu(fileName = "NativePluginsExporterObjectGroup", menuName = "Native Plugins/Exporter Object Group", order = 0)] + public class NativePluginsExporterObjectGroup : ScriptableObject + { + #region Fields + + [SerializeField] + private string m_name; + + [SerializeField] + private bool m_usesNestedHeierarchy = true; + + #endregion + + #region Properties + + public string Name => m_name; + + public bool UsesNestedHeierarchy => m_usesNestedHeierarchy; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectGroup.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectGroup.cs.meta new file mode 100644 index 00000000..7bb17467 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsExporterObjectGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8494aa9edfa214a818449f2dea39a05a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsManager.cs new file mode 100644 index 00000000..0cd9a0f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsManager.cs @@ -0,0 +1,112 @@ +using System; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public abstract class NativePluginsManager : IPreprocessBuildWithReport, IPostprocessBuildWithReport + { + #region Proprerties + + public BuildReport Report { get; private set; } + + public BuildTarget BuildTarget => Report.summary.platform; + + public string OutputPath => Report.summary.outputPath; + + public bool IsPreprocessing { get; set; } + + public bool IsPostprocessing { get; set; } + + #endregion + + #region Static methods + + protected static T[] FindPluginsProcessors(NativePluginsManager manager) where T : NativePluginsProcessor + { + var baseClassType = typeof(T); + var targetTypes = ReflectionUtility.FindAllTypes((type) => !type.IsAbstract && type.IsSubclassOf(baseClassType)); + return Array.ConvertAll( + targetTypes, + (type) => + { + var processor = ReflectionUtility.CreateInstance(type) as T; + processor.SetPropertyValue("Manager", manager); + return processor; + }); + } + + protected static LinkXmlWriter CreateDefaultLinkXmlWriter() + { + var defaultPath = IOServices.GetAbsolutePath("Assets/Plugins/VoxelBusters/link.xml"); + return new LinkXmlWriter(defaultPath); + } + + #endregion + + #region Base class methods + + protected virtual bool IsSupported(BuildTarget target) => true; + + protected abstract void OnPreprocessNativePlugins(); + + protected abstract void OnPostprocessNativePlugins(); + + #endregion + + #region IPreprocessBuildWithReport implementation + + int IOrderedCallback.callbackOrder => int.MaxValue; + + void IPreprocessBuildWithReport.OnPreprocessBuild(BuildReport report) + { + if (!IsSupported(target: report.summary.platform)) return; + + try + { + // Set properties + Report = report; + IsPreprocessing = true; + + // Send appropriate message + OnPreprocessNativePlugins(); + } + catch(Exception e) + { + throw new BuildFailedException(e); + } + finally + { + // Reset properties + IsPreprocessing = false; + } + } + + #endregion + + #region IPostprocessBuildWithReport implementation + + void IPostprocessBuildWithReport.OnPostprocessBuild(BuildReport report) + { + if (!IsSupported(target: report.summary.platform)) return; + + try + { + // Set properties + Report = report; + IsPostprocessing = true; + + // Send appropriate messages + OnPostprocessNativePlugins(); + } + finally + { + // Reset properties + IsPostprocessing = false; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsManager.cs.meta new file mode 100644 index 00000000..6610a837 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b1f94ff40b114a6d9b20a8d49bb3cf4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsProcessor.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsProcessor.cs new file mode 100644 index 00000000..61790403 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsProcessor.cs @@ -0,0 +1,53 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.Build.Reporting; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public class NativePluginsProcessor + { + #region Properties + + public NativePluginsManager Manager { get; private set; } + + public BuildReport BuildReport => Manager.Report; + + public BuildTarget BuildTarget => BuildReport.summary.platform; + + public string OutputPath => BuildReport.summary.outputPath; + + #endregion + + #region Preprocess message methods + + + public virtual void OnCheckConfiguration() + { } + + public virtual void OnUpdateExporterObjects() + { } + + public virtual void OnUpdateLinkXml(LinkXmlWriter writer) + { } + + #endregion + + #region Postprocess message methods + + public virtual void OnAddFiles() + { } + + public virtual void OnAddFolders() + { } + + public virtual void OnAddResources() + { } + + public virtual void OnUpdateConfiguration() + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsProcessor.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsProcessor.cs.meta new file mode 100644 index 00000000..46bd98ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/NativePluginsProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17f208e59b9fa42469d21728809e5556 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/TargetBuilder.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/TargetBuilder.cs new file mode 100644 index 00000000..dd690f60 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/TargetBuilder.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public class TargetBuilder + { +#if NATIVE_PLUGINS_DEBUG + [MenuItem("Tools/Make Build")] +#endif + public static void Build() + { +#if UNITY_IOS + BuildIos(); +#elif UNITY_ANDROID + BuildAndroid(); +#elif UNITY_STANDALONE_WIN + BuildWindows(); +#elif UNITY_STANDALONE_OSX + BuildOsx(); +#elif UNITY_STANDALONE_LINUX + BuildLinux(); +#elif UNITY_WEBGL + BuildLinux(); +#else + Debug.LogError("No platform target defined!"); +#endif + } + + private static void BuildIos() + { + Build(BuildTargetGroup.iOS, BuildTarget.iOS, null); + } + + private static void BuildAndroid() + { + EditorUserBuildSettings.exportAsGoogleAndroidProject = true; + PlayerSettings.SetScriptingBackend(NamedBuildTarget.Android, ScriptingImplementation.IL2CPP); + PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64; + if (EditorUserBuildSettings.development) + { +#if !UNITY_2019_1_OR_NEWER + PlayerSettings.Android.targetArchitectures |= AndroidArchitecture.X86; +#endif + } + + Build(BuildTargetGroup.Android, BuildTarget.Android, null, /*BuildOptions.AcceptExternalModificationsToPlayer |*/ BuildOptions.AllowDebugging); + } + + private static void BuildWindows() + { + Build(BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows64, "exe"); + } + + private static void BuildOsx() + { + Build(BuildTargetGroup.Standalone, BuildTarget.StandaloneOSX, "app"); + } + + private static void BuildLinux() + { + Build(BuildTargetGroup.Standalone, BuildTarget.StandaloneLinux64, null); + } + + private static void BuildWebGl() + { + Build(BuildTargetGroup.WebGL, BuildTarget.WebGL, null); + } + + private static void BuildAllPlatforms() + { + BuildMobilePlatforms(); + BuildNonMobilePlatforms(); + } + + private static void BuildMobilePlatforms() + { + BuildIos(); + BuildAndroid(); + } + + private static void BuildNonMobilePlatforms() + { + BuildOsx(); + BuildWindows(); + BuildLinux(); + BuildWebGl(); + } + + private static void Build(BuildTargetGroup targetGroup, BuildTarget target, string extension, BuildOptions options = BuildOptions.None) + { + string platform = GetPlatformName(target); + + //Set values from environment variables + LoadEnvironmentVariables(target); + + //Switch to active target + bool isSwitchSuccess = EditorUserBuildSettings.SwitchActiveBuildTarget(targetGroup, target); + + if (!isSwitchSuccess) + Debug.LogError(string.Format("Failed switching to platform : {0}", platform)); + + //Build +#if UNITY_2019_3_OR_NEWER + string targetPath = (extension != null) ? string.Format("../builds/{0}.{1}", platform, extension) : string.Format("../builds/{0}/{1}", platform, PlayerSettings.productName); +#else + string targetPath = (extension != null) ? string.Format("../builds/{0}.{1}", platform, extension) : string.Format("../builds/{0}", platform); +#endif + BuildReport report = UnityEditor.BuildPipeline.BuildPlayer(EditorBuildSettings.scenes, targetPath, target, options); + BuildSummary summary = report.summary; + + if (summary.result == BuildResult.Succeeded) + { + Debug.Log(string.Format("Finished building for {0} : {1}", platform, targetPath)); + } + else if (summary.result == BuildResult.Failed) + { + Debug.LogError(string.Format("Failed building for {0} : {1}", platform, targetPath)); + } + else if (summary.result == BuildResult.Cancelled) + { + Debug.LogError(string.Format("Cancelled building for {0} : {1}", platform, targetPath)); + } + else + { + Debug.LogError(string.Format("Failed building for {0} : {1}", platform, targetPath)); + } + } + + private static string GetPlatformName(BuildTarget target) + { + switch (target) + { + case BuildTarget.iOS: + return "ios"; + case BuildTarget.Android: + return "android"; + case BuildTarget.StandaloneLinux64: + return "linux"; + case BuildTarget.StandaloneWindows64: + return "windows"; + case BuildTarget.StandaloneOSX: + return "osx"; + case BuildTarget.WebGL: + return "webgl"; + default: + throw new System.Exception("Platform name not set!"); + } + } + + private static void LoadEnvironmentVariables(BuildTarget target) + { + PlayerSettings.productName = GetEnvironmentVariable("PRODUCT_NAME", PlayerSettings.productName); + PlayerSettings.bundleVersion = GetEnvironmentVariable("PRODUCT_VERSION", PlayerSettings.bundleVersion); + PlayerSettings.companyName = GetEnvironmentVariable("PRODUCT_COMPANY_NAME", PlayerSettings.companyName); + + switch (target) + { + case BuildTarget.Android: + PlayerSettings.applicationIdentifier = GetEnvironmentVariable("ANDROID_PACKAGE_NAME", PlayerSettings.applicationIdentifier); + break; + case BuildTarget.iOS: + PlayerSettings.applicationIdentifier = GetEnvironmentVariable("IOS_BUNDLE_IDENTIFIER", PlayerSettings.applicationIdentifier); + break; + } + + } + + private static T GetEnvironmentVariable(string key, T defaultValue) where T : IConvertible + { + object value = System.Environment.GetEnvironmentVariable(key); + if (value != null) + return (T)Convert.ChangeType(value, typeof(T)); + else + return defaultValue; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/TargetBuilder.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/TargetBuilder.cs.meta new file mode 100644 index 00000000..8e45b98e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/TargetBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 789382482b4a044b1a1415d340cd8a83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsManager.cs new file mode 100644 index 00000000..b6af1078 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsManager.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public class UnsupportedPlatformNativePluginsManager : NativePluginsManager + { + #region Base class methods + + protected override bool IsSupported(BuildTarget target) + { + return !((target == BuildTarget.iOS) || + (target == BuildTarget.tvOS) || + (target == BuildTarget.Android)); + } + + protected override void OnPreprocessNativePlugins() + { + var pluginsProcessors = FindPluginsProcessors(this); + var linkerFileWriter = CreateDefaultLinkXmlWriter(); + pluginsProcessors.ForEach( + (item) => + { + item.OnUpdateLinkXml(linkerFileWriter); + }); + linkerFileWriter.WriteToFile(); + } + + protected override void OnPostprocessNativePlugins() + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsManager.cs.meta new file mode 100644 index 00000000..a50f8df6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d319604252a9a46c2ba87927ae8aa64b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsProcessor.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsProcessor.cs new file mode 100644 index 00000000..dd6848d8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsProcessor.cs @@ -0,0 +1,9 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public class UnsupportedPlatformNativePluginsProcessor : NativePluginsProcessor + { } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsProcessor.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsProcessor.cs.meta new file mode 100644 index 00000000..b86e449e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/UnsupportedPlatformNativePluginsProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a538b642cf6b46f08de15578c2be800 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode.meta new file mode 100644 index 00000000..6cf3a002 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b9bf66a06f5534f7282e87258614cd70 +folderAsset: yes +timeCreated: 1579785814 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/BuildConfigurationKey.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/BuildConfigurationKey.cs new file mode 100644 index 00000000..e57b94b7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/BuildConfigurationKey.cs @@ -0,0 +1,25 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public static class BuildConfigurationKey + { + public const string kBuildSettings = "buildSettings"; + + public const string kHeaderSearchPaths = "HEADER_SEARCH_PATHS"; + + public const string kLibrarySearchPaths = "LIBRARY_SEARCH_PATHS"; + + public const string kFrameworkSearchPaths = "FRAMEWORK_SEARCH_PATHS"; + + public const string kOtherCFlags = "OTHER_CFLAGS"; + + public const string kOtherLDFlags = "OTHER_LDFLAGS"; + + public const string kCodeSignEntitlements = "CODE_SIGN_ENTITLEMENTS"; + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/BuildConfigurationKey.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/BuildConfigurationKey.cs.meta new file mode 100644 index 00000000..1d490eb7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/BuildConfigurationKey.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: acb0fb6205f0e487a8196435917cf8b6 +timeCreated: 1578831698 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/InfoPlistKey.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/InfoPlistKey.cs new file mode 100644 index 00000000..2379c6f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/InfoPlistKey.cs @@ -0,0 +1,43 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public static class InfoPlistKey + { + #region Constants + + public const string kNSContactsUsage = "NSContactsUsageDescription"; + + public const string kNSCameraUsage = "NSCameraUsageDescription"; + + public const string kNSPhotoLibraryUsage = "NSPhotoLibraryUsageDescription"; + + public const string kNSPhotoLibraryAdd = "NSPhotoLibraryAddUsageDescription"; + + public const string kNSMicrophoneUsage = "NSMicrophoneUsageDescription"; + + public const string kNSLocationWhenInUse = "NSLocationWhenInUseUsageDescription"; + + public const string kNSAppTransportSecurity = "NSAppTransportSecurity"; + + public const string kNSAllowsArbitraryLoads = "NSAllowsArbitraryLoads"; + + public const string kNSQuerySchemes = "LSApplicationQueriesSchemes"; + + public const string kNSDeviceCapablities = "UIRequiredDeviceCapabilities"; + + public const string kCFBundleURLTypes = "CFBundleURLTypes"; + + public const string kCFBundleURLName = "CFBundleURLName"; + + public const string kCFBundleURLSchemes = "CFBundleURLSchemes"; + + public const string kNSGKFriendListUsage = "NSGKFriendListUsageDescription"; + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/InfoPlistKey.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/InfoPlistKey.cs.meta new file mode 100644 index 00000000..cea05470 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/InfoPlistKey.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4f2e3899f884c419a9bac4f482c312e2 +timeCreated: 1563179772 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/MacroDefinitionsManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/MacroDefinitionsManager.cs new file mode 100644 index 00000000..cb8e0375 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/MacroDefinitionsManager.cs @@ -0,0 +1,65 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public class MacroDefinitionsManager + { + #region Fields + + private string m_savePath; + + private string m_headerComments; + + private List m_requiredMacros; + + #endregion + + #region Constructors + + public MacroDefinitionsManager(string path, string headerComments) + { + // Set properties + m_savePath = path; + m_headerComments = headerComments; + m_requiredMacros = new List(); + } + + #endregion + + #region Public methods + + public void AddMacro(params string[] values) + { + foreach (var value in values) + { + m_requiredMacros.AddUnique(value); + } + } + + public void WriteToFile() + { + // Build content + var stringBuilder = new System.Text.StringBuilder(256); + if (m_headerComments != null) + { + stringBuilder.AppendLine(m_headerComments) + .AppendLine(); + } + stringBuilder.AppendLine("#pragma once") + .AppendLine(); + foreach (var definition in m_requiredMacros) + { + stringBuilder.AppendLine($"#define {definition}"); + } + + // Serialize changes + IOServices.CreateFile(m_savePath, stringBuilder.ToString()); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/MacroDefinitionsManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/MacroDefinitionsManager.cs.meta new file mode 100644 index 00000000..5e9d9953 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/MacroDefinitionsManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 72d1def92e47d4fc08fff42c01b0b8f7 +timeCreated: 1596395226 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXAssociatedDomainsEntitlement.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXAssociatedDomainsEntitlement.cs new file mode 100644 index 00000000..6ed4003d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXAssociatedDomainsEntitlement.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [Serializable] + public class PBXAssociatedDomainsEntitlement + { + #region Fields + + [SerializeField] + private string[] m_domains; + + #endregion + + #region Properties + + public string[] Domains => m_domains; + + #endregion + + #region Constructors + + public PBXAssociatedDomainsEntitlement(string[] domains) + { + // set properties + m_domains = domains; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXAssociatedDomainsEntitlement.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXAssociatedDomainsEntitlement.cs.meta new file mode 100644 index 00000000..f24d7e3c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXAssociatedDomainsEntitlement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef89706a136bb48fab2345a3dc3acf34 +timeCreated: 1586429981 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapability.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapability.cs new file mode 100644 index 00000000..f9d43081 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapability.cs @@ -0,0 +1,72 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [Serializable] + public class PBXCapability + { + #region Fields + + [SerializeField] + private PBXCapabilityType m_type; + + [SerializeField] + private PBXAssociatedDomainsEntitlement m_associatedDomainsEntitlement; + + #endregion + + #region Properties + + public PBXCapabilityType Type => m_type; + + public PBXAssociatedDomainsEntitlement AssociatedDomainsEntitlement => m_associatedDomainsEntitlement; + + #endregion + + #region Create methods + + public static PBXCapability iCloud() + { + return new PBXCapability() + { + m_type = PBXCapabilityType.iCloud, + }; + } + + public static PBXCapability InAppPurchase() + { + return new PBXCapability() + { + m_type = PBXCapabilityType.InAppPurchase, + }; + } + + public static PBXCapability GameCenter() + { + return new PBXCapability() + { + m_type = PBXCapabilityType.GameCenter, + }; + } + + public static PBXCapability PushNotifications() + { + return new PBXCapability() + { + m_type = PBXCapabilityType.PushNotifications, + }; + } + + public static PBXCapability AssociatedDomains(string[] domains) + { + return new PBXCapability() + { + m_type = PBXCapabilityType.AssociatedDomains, + m_associatedDomainsEntitlement = new PBXAssociatedDomainsEntitlement(domains), + }; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapability.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapability.cs.meta new file mode 100644 index 00000000..3ac61f8f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapability.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3a0c3b4ae180f4694bf5fec6c8e3c2d2 +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapabilityType.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapabilityType.cs new file mode 100644 index 00000000..6f61047a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapabilityType.cs @@ -0,0 +1,15 @@ +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public enum PBXCapabilityType + { + GameCenter = 1, + + InAppPurchase, + + iCloud, + + PushNotifications, + + AssociatedDomains, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapabilityType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapabilityType.cs.meta new file mode 100644 index 00000000..50c15282 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXCapabilityType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c9db54d699ec9461187c77cf6639c105 +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFIle.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFIle.cs new file mode 100644 index 00000000..8f7ef22d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFIle.cs @@ -0,0 +1,40 @@ +using System.IO; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [System.Serializable] + public class PBXFile + { + #region Fields + + [SerializeField] + private Object m_reference; + + [SerializeField] + private string m_compileFlags; + + #endregion + + #region Properties + + public string RelativePath => AssetDatabase.GetAssetPath(m_reference); + + public string AbsoultePath => Path.GetFullPath(RelativePath); + + public string[] CompileFlags + { + get + { + return m_compileFlags.Split(','); + } + set + { + m_compileFlags = string.Join(",", value); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFIle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFIle.cs.meta new file mode 100644 index 00000000..1b86506c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFIle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 987a0da92031341349193308b63a379d +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFileDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFileDrawer.cs new file mode 100644 index 00000000..d74573db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFileDrawer.cs @@ -0,0 +1,37 @@ +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [CustomPropertyDrawer(typeof(PBXFile))] + public class PBXFileDrawer : PropertyDrawer + { + #region Unity methods + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUIUtility.singleLineHeight; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + // show property name label + label = EditorGUI.BeginProperty(position, label, property); + position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), GUIContent.none); + + // show property attributes + Rect refRect = new Rect(position.x, position.y, position.width * 0.6f, position.height); + Rect flagsRect = new Rect(refRect.xMax + 5f, position.y, position.width - refRect.width - 5f, position.height); + int indentLevel = EditorGUI.indentLevel; + + EditorGUI.indentLevel = 0; + EditorGUI.PropertyField(refRect, property.FindPropertyRelative("m_reference"), GUIContent.none); + EditorGUI.PropertyField(flagsRect, property.FindPropertyRelative("m_compileFlags"), GUIContent.none); + EditorGUI.indentLevel = indentLevel; + + EditorGUI.EndProperty(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFileDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFileDrawer.cs.meta new file mode 100644 index 00000000..da88a83c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFileDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 182fe8e658a3e4deaba3ffd7dc799ad8 +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFramework.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFramework.cs new file mode 100644 index 00000000..92b9cbce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFramework.cs @@ -0,0 +1,77 @@ +using System; +using UnityEngine; +using UnityEngine.Serialization; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [Serializable] + public class PBXFramework + { + #region Fields + + [SerializeField, PBXFrameworkName] + private string m_name; + + [SerializeField, EnumMaskField(typeof(PBXTargetMembership))] + private PBXTargetMembership m_target; + + [SerializeField, FormerlySerializedAs("m_isWeak")] + private bool m_isOptional; + + #endregion + + #region Properties + + public string Name + { + get => m_name; + private set => m_name = value; + } + + public PBXTargetMembership Target + { + get => m_target; + private set => m_target = value; + } + + public bool IsOptional + { + get => m_isOptional; + private set => m_isOptional = value; + } + + #endregion + + #region Constructors + + public PBXFramework(string name, PBXTargetMembership target = (PBXTargetMembership)0, + bool isOptional = false) + { + // Set properties + Name = name; + Target = target; + IsOptional = isOptional; + } + + #endregion + + #region Base class methods + + public override bool Equals(object obj) + { + if (obj is PBXFramework) + { + return string.Equals(m_name, ((PBXFramework)obj).m_name); + } + + return base.Equals(obj); + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFramework.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFramework.cs.meta new file mode 100644 index 00000000..22bfe8ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFramework.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5fb405b9534404452b2e471c3b9acccb +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkDrawer.cs new file mode 100644 index 00000000..d96b30eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkDrawer.cs @@ -0,0 +1,41 @@ +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [CustomPropertyDrawer(typeof(PBXFramework))] + public class PBXFrameworkDrawer : PropertyDrawer + { + #region Unity methods + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUIUtility.singleLineHeight; + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + // show property name label + label = EditorGUI.BeginProperty(position, label, property); + position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), GUIContent.none); + + // show property attributes + float maxWidth = position.width * .3f; + float offset = position.width * .01f; + Rect nameRect = new Rect(position.x, position.y, maxWidth, position.height); + Rect targetRect = new Rect(nameRect.xMax + offset, position.y, maxWidth, position.height); + Rect optionalRect = new Rect(targetRect.xMax + offset, position.y, maxWidth, position.height); + int indentLevel = EditorGUI.indentLevel; + + EditorGUI.indentLevel = 0; + EditorGUI.PropertyField(nameRect, property.FindPropertyRelative("m_name"), GUIContent.none); + EditorGUI.PropertyField(targetRect, property.FindPropertyRelative("m_target"), GUIContent.none); + EditorGUI.PropertyField(optionalRect, property.FindPropertyRelative("m_isOptional"), GUIContent.none); + EditorGUI.indentLevel = indentLevel; + + EditorGUI.EndProperty(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkDrawer.cs.meta new file mode 100644 index 00000000..dc09cd4c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cdab6c6b4610e43ec88fb480aed37db6 +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttribute.cs new file mode 100644 index 00000000..80fef1af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttribute.cs @@ -0,0 +1,40 @@ +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public class PBXFrameworkNameAttribute : PropertyAttribute + { + #region Static fields + + private static readonly string[] s_frameworkNames = new string[] + { + "Accounts.framework", + "AVFoundation.framework", + "Contacts.framework", + "CloudKit.framework", + "GameKit.framework", + "MessageUI.framework", + "MobileCoreServices.framework", + "Photos.framework", + "Social.framework", + "StoreKit.framework", + "SystemConfiguration.framework", + "UserNotifications.framework", + "WebKit.framework", + "ReplayKit.framework", + "PhotosUI.framework", + "UniformTypeIdentifiers.framework" + }; + + #endregion + + #region Public Methods + + public string[] GetFrameworkNames() + { + return s_frameworkNames; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttribute.cs.meta new file mode 100644 index 00000000..60ffae45 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 23bdd93a72b5d49aa9d5ab80767468db +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttributeDrawer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttributeDrawer.cs new file mode 100644 index 00000000..b47126ab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttributeDrawer.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [CustomPropertyDrawer(typeof(PBXFrameworkNameAttribute))] + public class PBXFrameworkNameAttributeDrawer : PropertyDrawer + { + #region Unity methods + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + label = EditorGUI.BeginProperty(position, label, property); + + // show popup + string[] options = ((PBXFrameworkNameAttribute)attribute).GetFrameworkNames(); + int selectedIndex = Array.FindIndex(options, (item) => string.Equals(item, property.stringValue)); + selectedIndex = EditorGUI.Popup(position, label.text, selectedIndex, options); + + // assign value + property.stringValue = (selectedIndex == -1) ? options[0] : options[selectedIndex]; + + EditorGUI.EndProperty(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttributeDrawer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttributeDrawer.cs.meta new file mode 100644 index 00000000..679d7249 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXFrameworkNameAttributeDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3d275d2e014054d1d9a26557b5cbd7b6 +timeCreated: 1578832973 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsExporterObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsExporterObject.cs new file mode 100644 index 00000000..38dd6cd1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsExporterObject.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [Serializable, CreateAssetMenu(fileName = "PBXNativePluginsExporterObject", menuName = "Native Plugins/PBX Exporter Object", order = 0)] + public class PBXNativePluginsExporterObject : NativePluginsExporterObject + { + #region Fields + + [SerializeField] + private string[] m_compileFlags; + + [SerializeField] + private List m_headerPaths = new List(); + + [SerializeField] + private List m_frameworks = new List(); + + [SerializeField] + private List m_capabilities = new List(); + + [SerializeField] + private List m_macros = new List(); + + [SerializeField] + private List m_buildProperties = new List(); + + #endregion + + #region Properties + + public string[] CompileFlags => m_compileFlags; + + public PBXFile[] HeaderPaths => m_headerPaths.ToArray(); + + public PBXFramework[] Frameworks => m_frameworks.ToArray(); + + public PBXCapability[] Capabilities => m_capabilities.ToArray(); + + public StringKeyValuePair[] Macros => m_macros.ToArray(); + + public StringKeyValuePair[] BuildProperties => m_buildProperties.ToArray(); + + #endregion + + #region Public methods + + public void SetCompilerFlags(params string[] flags) + { + m_compileFlags = flags; + } + + public void AddCapability(PBXCapability value) + { + m_capabilities.Add(value); + } + + public void RemoveCapability(PBXCapability value) + { + m_capabilities.Remove(value); + } + + public void ClearCapabilities() + { + m_capabilities.Clear(); + } + + public void AddMacro(string name, string value) + { + var keyValuePair = new StringKeyValuePair(name, value); + m_macros.AddOrReplace( + keyValuePair, + (item) => string.Equals(item.Key, name)); + } + + public void RemoveMacro(string name) + { + m_macros.Remove((item) => string.Equals(item.Key, name)); + } + + public void ClearMacros() + { + m_macros.Clear(); + } + + public void AddFramework(PBXFramework value) + { + m_frameworks.Add(value); + } + + public void RemoveFramework(PBXFramework value) + { + m_frameworks.Remove(value); + } + + public void ClearFrameworks() + { + m_frameworks.Clear(); + } + + public void AddBuildProperty(string name, string value) + { + var keyValuePair = new StringKeyValuePair(name, value); + m_buildProperties.AddOrReplace( + keyValuePair, + (item) => string.Equals(item.Key, name)); + } + + public void RemoveBuildProperty(string name) + { + m_buildProperties.Remove((item) => string.Equals(item.Key, name)); + } + + public void ClearBuildProperties() + { + m_buildProperties.Clear(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsExporterObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsExporterObject.cs.meta new file mode 100644 index 00000000..6435887d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsExporterObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4ef977ceb472480b934e1aee1b94354 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsManager.cs new file mode 100644 index 00000000..171820f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsManager.cs @@ -0,0 +1,585 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEditor.iOS.Xcode; +using UnityEditor.iOS.Xcode.Extensions; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public class PBXNativePluginsManager : NativePluginsManager, IPostprocessBuildWithReport + { + +#region Constants + + private const string kPluginRelativePath = "VoxelBusters/"; + + private static readonly string kPreprocessorFilePath = NativePluginsPackageLayout.IosPluginPath + "/NPConfig.h"; + + private static readonly string[] kIgnoreFileExtensions = new string[] + { + ".meta", + ".pdf", + ".DS_Store", + ".mdown", + ".asset", + ".cs" + }; + +#endregion + +#region Fields + + private PBXProject m_project; + + private List m_librarySearchPaths; + + private List m_frameworkSearchPaths; + + private PBXNativePluginsProcessor[] m_pluginsProcessors; + +#endregion + +#region Properties + + public PBXProject Project => ObjectHelper.CreateInstanceIfNull( + ref m_project, + () => + { + PBXProject project = null; + if (IsPostprocessing) + { + project = new PBXProject(); + project.ReadFromFile(ProjectFilePath); + } + return project; + }); + + private PBXNativePluginsProcessor[] PluginsProcessors => ObjectHelper.CreateInstanceIfNull( + ref m_pluginsProcessors, + () => FindPluginsProcessors(this)); + + private PBXNativePluginsExporterObject[] ActiveExporterObjects { get; set; } + + private string ProjectFilePath => PBXProject.GetPBXProjectPath(OutputPath); + +#endregion + +#region Base class methods + + protected override bool IsSupported(BuildTarget target) + { + return (BuildTarget.iOS == target) || (BuildTarget.tvOS == target); + } + + protected override void OnPreprocessNativePlugins() + { + // Send message to complete preprocess actions to all the NativeProcessors + var linkerFileWriter = CreateDefaultLinkXmlWriter(); + PluginsProcessors.ForEach( + (item) => + { + item.OnCheckConfiguration(); + item.OnUpdateExporterObjects(); + item.OnUpdateLinkXml(linkerFileWriter); + }); + linkerFileWriter.WriteToFile(); + } + + protected override void OnPostprocessNativePlugins() + { + // Set properties + m_librarySearchPaths = new List(); + m_frameworkSearchPaths = new List(); + ActiveExporterObjects = NativePluginsExporterObject.FindObjects(); + + ClearPluginsData(); + UpdateProjectConfiguation(); + } + +#endregion + +#region Public methods + + public void AddFile(string sourceFilePath, string parentGroup, string[] compileFlags) + { + AddFileToProject( + Project, + sourceFilePath, + Project.GetFrameworkGuid(), + parentGroup, + compileFlags); + } + +#endregion + +#region Private methods + + private void UpdateProjectConfiguation() + { + LinkNativeAssets(); + UpdateInfoPlistDocument(); + UpdateProjectCapabilities(); + UpdateMacroDefinitions(); + UpdateEntitlementsPlistDocument(); + + // Apply changes + File.WriteAllText(ProjectFilePath, Project.WriteToString()); + } + + private void LinkNativeAssets() + { + DebugLogger.Log(CoreLibraryDomain.Default, "Linking native files."); + + // Open project file for editing + string projectFilePath = ProjectFilePath; + var project = Project; + string mainTargetGuid = project.GetMainTargetGuid(); + string frameworkTargetGuid = project.GetFrameworkGuid(); + DebugLogger.Log(CoreLibraryDomain.NativePlugins, $"Project File Path: {projectFilePath} targetGuid: {frameworkTargetGuid} ProjectPath: {OutputPath}"); + + //@@ fix for "does not refer to a file in a known build section" + project.AddSourcesBuildPhase(frameworkTargetGuid); + project.AddHeadersBuildPhase(frameworkTargetGuid); + + // Read exporter settings for adding native files + foreach (var exporterObject in ActiveExporterObjects) + { + DebugLogger.Log(CoreLibraryDomain.Default, $"Is feature: {exporterObject.name} enabled:{exporterObject.IsEnabled}."); + string exporterFilePath = Path.GetFullPath(AssetDatabase.GetAssetPath(exporterObject)); + string exporterFolder = Path.GetDirectoryName(exporterFilePath); + string exporterGroup = GetExportGroupPath(exporterObject: exporterObject, prefixPath: kPluginRelativePath); + string parentFolder = IOServices.GetDirectoryName(AssetDatabase.GetAssetPath(exporterObject)); + + // Add files + AddFolderToProject(project, parentFolder, frameworkTargetGuid, exporterGroup, exporterObject.CompileFlags); + + // Add headerpaths + foreach (var pathInfo in exporterObject.HeaderPaths) + { + string destinationPath = GetFilePathInProject(pathInfo.AbsoultePath, exporterFolder, exporterGroup); + string formattedPath = FormatFilePathInProject(destinationPath); + project.AddHeaderSearchPath(frameworkTargetGuid, formattedPath); + } + + // Add frameworks + foreach (var framework in exporterObject.Frameworks) + { + if (framework.Target.HasFlag(PBXTargetMembership.UnityIphone)) + { + project.AddFrameworkToProject(mainTargetGuid, framework.Name, framework.IsOptional); + } + if (framework.Target.HasFlag(PBXTargetMembership.UnityFramework)) + { + project.AddFrameworkToProject(frameworkTargetGuid, framework.Name, framework.IsOptional); + } + } + + // Add build properties + foreach (var property in exporterObject.BuildProperties) + { + project.AddBuildProperty(frameworkTargetGuid, property.Key, property.Value); + } + } + + // Add header search paths + foreach (string path in m_librarySearchPaths) + { + project.AddLibrarySearchPath(frameworkTargetGuid, FormatFilePathInProject(path)); + } + + // Add framework search paths + foreach (string path in m_frameworkSearchPaths) + { + project.AddFrameworkSearchPath(frameworkTargetGuid, FormatFilePathInProject(path)); + } + + // Add resources + CopyAssetsFromStreamingAssets(); + + // Send message to all the NativeProcessors + PluginsProcessors.ForEach( + (item) => + { + item.OnAddFiles(); + item.OnAddFolders(); + item.OnAddResources(); + item.OnUpdateConfiguration(); + }); + } + + private string GetExportGroupPath(NativePluginsExporterObject exporterObject, string prefixPath) + { + string groupPath = prefixPath; + bool usesNestedHierarchy = true; + if (exporterObject.Group != null) + { + groupPath += exporterObject.Group.Name + "/"; + usesNestedHierarchy = exporterObject.Group.UsesNestedHeierarchy; + } + if (usesNestedHierarchy) + { + groupPath += exporterObject.name + "/"; + } + return groupPath; + } + + private void AddFileToProject(PBXProject project, string sourceFilePath, string targetGuid, string parentGroup, string[] compileFlags) + { + // Convert relative path to absolute path + if (!Path.IsPathRooted(sourceFilePath)) + { + sourceFilePath = Path.GetFullPath(sourceFilePath); + } + + // Copy the file to the project directory + string fileName = Path.GetFileName(sourceFilePath); + string destinationFilePath = sourceFilePath; + if (!IOServices.IsSubDirectory(OutputPath, destinationFilePath)) + { + string destinationFolder = IOServices.CombinePath(OutputPath, parentGroup); + destinationFilePath = CopyFileToProject(sourceFilePath, destinationFolder); + DebugLogger.Log(CoreLibraryDomain.Default, $"Adding file {fileName} to project."); + } + + // Add copied file to the project + string fileGuid = project.AddFile(FormatFilePathInProject(destinationFilePath, rooted: false), parentGroup + fileName); + project.AddFileToBuildWithFlags( + targetGuid, + fileGuid, + compileFlags.IsNullOrEmpty() ? string.Empty : string.Join(" ", compileFlags)); + + // Add search path project + string fileExtension = Path.GetExtension(destinationFilePath); + if (string.Equals(fileExtension, ".a", StringComparison.InvariantCultureIgnoreCase)) + { + CacheLibrarySearchPath(destinationFilePath); + } + else if (string.Equals(fileExtension, ".framework", StringComparison.InvariantCultureIgnoreCase)) + { + CacheFrameworkSearchPath(destinationFilePath); + project.AddFileToEmbedFrameworks(Project.GetMainTargetGuid(), fileGuid); + //@@project.AddFileToBuildSection(targetGuid, project.GetFrameworksBuildPhaseByTarget(targetGuid), fileGuid); + } + } + + private void AddFolderToProject(PBXProject project, string sourceFolder, string targetGuid, string parentGroup, string[] compileFlags) + { + // Check whether given folder is valid + var sourceFolderInfo = new DirectoryInfo(sourceFolder); + if (!sourceFolderInfo.Exists) return; + + // Add files placed within this folder + foreach (var fileInfo in FindFiles(sourceFolderInfo)) + { + AddFileToProject( + project, + fileInfo.FullName, + targetGuid, + parentGroup, + compileFlags); + } + + // add folders placed within this folder + foreach (var subFolderInfo in sourceFolderInfo.GetDirectories()) + { + if(subFolderInfo.Name.EndsWith(".framework")) + { + AddFileToProject( + project, + subFolderInfo.FullName, + targetGuid, + parentGroup, + compileFlags); + } + else + { + string folderGroup = parentGroup + subFolderInfo.Name + "/"; + + AddFolderToProject( + project, + subFolderInfo.FullName, + targetGuid, + folderGroup, + compileFlags); + } + } + } + + private string CopyFileToProject(string filePath, string targetFolder) + { +#if NATIVE_PLUGINS_DEBUG + return filePath; +#else + // create target folder directory, incase if it doesn't exist + if (!IOServices.DirectoryExists(targetFolder)) + { + IOServices.CreateDirectory(targetFolder); + } + + // copy specified file + string fileName = Path.GetFileName(filePath); + string destPath = Path.Combine(targetFolder, fileName); + + DebugLogger.Log(CoreLibraryDomain.NativePlugins, $"Copying file {filePath} to {destPath}."); + FileUtil.CopyFileOrDirectory(filePath, destPath); + + return destPath; +#endif + } + + private string GetFilePathInProject(string sourcePath, string parentFolder, string parentGroup) + { +#if NATIVE_PLUGINS_DEBUG + return sourcePath; +#else + string relativePath = IOServices.GetRelativePath(parentFolder, sourcePath); + string destinationFolder = IOServices.CombinePath(OutputPath, parentGroup); + return IOServices.CombinePath(destinationFolder, relativePath); +#endif + } + + private string FormatFilePathInProject(string path, bool rooted = true) + { +#if NATIVE_PLUGINS_DEBUG + return path; +#else + if (path.Contains("$(inherited)")) + { + return path; + } + + string relativePathToProject = IOServices.GetRelativePath(OutputPath, path); + return rooted ? Path.Combine("$(SRCROOT)", relativePathToProject) : relativePathToProject; +#endif + } + + private void CacheLibrarySearchPath(string path) + { + string directoryPath = Path.GetDirectoryName(path); + m_librarySearchPaths.AddUnique(directoryPath); + } + + private void CacheFrameworkSearchPath(string path) + { + string directoryPath = Path.GetDirectoryName(path); + m_frameworkSearchPaths.AddUnique(directoryPath); + } + + private FileInfo[] FindFiles(DirectoryInfo folder) + { + return folder.GetFiles().Where((fileInfo) => + { + string fileExtension = fileInfo.Extension; + return !Array.Exists(kIgnoreFileExtensions, (ignoreExt) => string.Equals(fileExtension, ignoreExt, StringComparison.InvariantCultureIgnoreCase)); + }).ToArray(); + } + + // Added for supporting notification services custom sound files + private void CopyAssetsFromStreamingAssets() + { + string mainTargetGuid = Project.GetMainTargetGuid(); + + // Copy audio files from streaming assets if any to Raw folder + string path = UnityEngine.Application.streamingAssetsPath; + if (IOServices.DirectoryExists(path)) + { + var files = System.IO.Directory.GetFiles(path); + string destinationFolder = OutputPath; + + var formats = new string[] + { + ".mp3", + ".wav", + ".ogg", + ".aiff" + }; + for (int i=0; i< files.Length; i++) + { + string extension = IOServices.GetExtension(files[i]); + if (formats.Contains(extension.ToLower())) + { + string destinationRelativePath = files[i].Replace(path, "."); + IOServices.CopyFile(files[i], IOServices.CombinePath(destinationFolder, IOServices.GetFileName(files[i]))); + DebugLogger.Log(CoreLibraryDomain.NativePlugins, $"Coping asset with relativePath: {destinationRelativePath}."); + Project.AddFileToBuild(mainTargetGuid, Project.AddFile(destinationRelativePath, destinationRelativePath)); + } + } + } + } + +#endregion + +#region Misc methods + + private void UpdateInfoPlistDocument() + { + DebugLogger.Log(CoreLibraryDomain.Default, "Updating plist configuration."); + + // Open the file + string plistPath = $"{OutputPath}/Info.plist"; + var plistDoc = new PlistDocument(); + plistDoc.ReadFromString(File.ReadAllText(plistPath)); + + // Send message to all the NativeProcessors + PluginsProcessors.ForEach( + (item) => + { + item.OnUpdateInfoPlist(plistDoc); + }); + + // Save changes + plistDoc.WriteToFile(plistPath); + } + + private void UpdateEntitlementsPlistDocument() + { + DebugLogger.Log(CoreLibraryDomain.Default, "Updating entitlements plist configuration."); + + // Open the file + string plistPath = Path.Combine(OutputPath, GetEntitlementsPath()); + var plistDoc = new PlistDocument(); + plistDoc.ReadFromString(File.ReadAllText(plistPath)); + + // Send message to all the NativeProcessors + PluginsProcessors.ForEach( + (item) => + { + item.OnUpdateEntitlementsPlist(plistDoc); + }); + + // Save changes + plistDoc.WriteToFile(plistPath); + } + + + private void UpdateProjectCapabilities() + { + var capabilityManager = new ProjectCapabilityManager( + ProjectFilePath, + GetEntitlementsPath(), + Project.GetMainTargetName(), + Project.GetMainTargetGuid()); + + // Add the capabilities specified in the Exporters + foreach (var exporterObject in ActiveExporterObjects) + { + if (!exporterObject.IsEnabled) continue; + + foreach (var capability in exporterObject.Capabilities) + { + switch (capability.Type) + { + case PBXCapabilityType.GameCenter: + capabilityManager.AddGameCenter(); + break; + + case PBXCapabilityType.iCloud: + capabilityManager.AddiCloud(enableKeyValueStorage: true, enableiCloudDocument: false, enablecloudKit: false, addDefaultContainers: false, customContainers: null); + break; + + case PBXCapabilityType.InAppPurchase: + capabilityManager.AddInAppPurchase(); + break; + + case PBXCapabilityType.PushNotifications: + capabilityManager.AddPushNotifications(Debug.isDebugBuild); + capabilityManager.AddBackgroundModes(BackgroundModesOptions.RemoteNotifications); + break; + + case PBXCapabilityType.AssociatedDomains: + var associatedDomainsEntitlement = capability.AssociatedDomainsEntitlement; + capabilityManager.AddAssociatedDomains(domains: associatedDomainsEntitlement.Domains); + break; + + default: + throw VBException.SwitchCaseNotImplemented(capability.Type); + } + } + } + + // Send message to all the NativeProcessors + PluginsProcessors.ForEach( + (item) => + { + item.OnUpdateCapabilities(capabilityManager); + }); + + // Save changes + capabilityManager.WriteToFile(); + } + + private void UpdateMacroDefinitions() + { + var preprocessorDirectivesManager = new MacroDefinitionsManager( + path: kPreprocessorFilePath, + headerComments: "// NPConfig.h" + + "// Native Plugins" + + "//" + + "// Created by Ashwin kumar" + + "// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved." + + "//"); + + // Add macros from Settings file + foreach (var exporterObject in ActiveExporterObjects) + { + var macros = exporterObject.Macros; + foreach (var entry in macros) + { + preprocessorDirectivesManager.AddMacro($"{entry.Key} {entry.Value}"); + } + } + + // Send message to add macros to all the Processor instances + PluginsProcessors.ForEach((item) => item.OnUpdateMacroDefinitions(preprocessorDirectivesManager)); + + // Serialize + preprocessorDirectivesManager.WriteToFile(); + } + + private string GetEntitlementsPath() + { + var mainTargetGuid = Project.GetMainTargetGuid(); + var mainTargetName = Project.GetMainTargetName(); + + var relativePath = Project.GetBuildPropertyForAnyConfig(mainTargetGuid, BuildConfigurationKey.kCodeSignEntitlements); + if (relativePath != null) + { + var fullPath = Path.Combine(OutputPath, relativePath); + if (IOServices.FileExists(fullPath)) + { + return relativePath;//This should be relative path (if we pass full path it behaves differently on windows as internally PBXPath.Combine only checks for starting / but not windows style) + } + } + + // Make new file + var entitlementsPath = Path.Combine(OutputPath, mainTargetName, $"{mainTargetName}.entitlements"); + var entitlementsPlist = new PlistDocument(); + entitlementsPlist.WriteToFile(entitlementsPath); + + // Copy the entitlement file to the xcode project + var entitlementFileName = Path.GetFileName(entitlementsPath); + var relativeDestination = $"{mainTargetName}/{entitlementFileName}"; + + // Add the pbx configs to include the entitlements files on the project + Project.AddFile(relativeDestination, entitlementFileName); + Project.SetBuildProperty(mainTargetGuid, BuildConfigurationKey.kCodeSignEntitlements, relativeDestination); + + return relativeDestination; + } + + private void ClearPluginsData() + { + string pluginExportPath = Path.Combine(OutputPath, kPluginRelativePath); + IOServices.DeleteDirectory(pluginExportPath); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsManager.cs.meta new file mode 100644 index 00000000..8aa3fc48 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a56154e6bd4cf4a30b3d500cab5bf553 +timeCreated: 1596392066 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsProcessor.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsProcessor.cs new file mode 100644 index 00000000..ce784717 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsProcessor.cs @@ -0,0 +1,31 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEditor.iOS.Xcode; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public abstract class PBXNativePluginsProcessor : NativePluginsProcessor + { +#region Postprocess message methods + + public virtual void OnUpdateInfoPlist(PlistDocument doc) + { } + + public virtual void OnUpdateEntitlementsPlist(PlistDocument doc) + { } + + public virtual void OnUpdateCapabilities(ProjectCapabilityManager capabilityManager) + { } + + public virtual void OnUpdateMacroDefinitions(MacroDefinitionsManager manager) + { } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsProcessor.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsProcessor.cs.meta new file mode 100644 index 00000000..76b1069f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXNativePluginsProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cdde9fcb9dc7547eeb61c6fafbee3906 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXProjectExtensions.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXProjectExtensions.cs new file mode 100644 index 00000000..7d785a69 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXProjectExtensions.cs @@ -0,0 +1,87 @@ +#if UNITY_IOS || UNITY_TVOS +using System.IO; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor.iOS.Xcode; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public static class PBXProjectExtensions + { + #region Search paths + + public static void AddHeaderSearchPath(this PBXProject project, string targetGuid, string headerSearchPath) + { + AddBuildProperty(project, targetGuid, BuildConfigurationKey.kHeaderSearchPaths, GetPlatformCompatiblePath(headerSearchPath)); + } + + public static void AddLibrarySearchPath(this PBXProject project, string targetGuid, string librarySearchPath) + { + AddBuildProperty(project, targetGuid, BuildConfigurationKey.kLibrarySearchPaths, GetPlatformCompatiblePath(librarySearchPath), false, false); + } + + public static void AddFrameworkSearchPath(this PBXProject project, string targetGuid, string frameworkSearchPath) + { + AddBuildProperty(project, targetGuid, BuildConfigurationKey.kFrameworkSearchPaths, GetPlatformCompatiblePath(frameworkSearchPath), false, false); + } + + private static void AddBuildProperty(PBXProject project, string targetGuid, string key, string value, bool recursive = true, bool quoted = true) + { + // add recursive symbol for folder paths + if (recursive) + { + value = value.TrimEnd('/') + "/**"; + } + + // xcode uses space as the delimiter here, so if there's a space in the filename, we must add quote + if (quoted) + { + if (value.EndsWith("/**")) + { + value = "\"" + value.Replace("/**", "/\"/**"); + } + else + { + value = "\"" + value + "\""; + } + } + + project.AddBuildProperty(targetGuid, key, value); + } + + private static string GetPlatformCompatiblePath(string path) + { + path = path.Replace("\\", "/"); + return path; + } + + #endregion + + #region Target methods + + public static string GetMainTargetName(this PBXProject project) +#if UNITY_2019_3_OR_NEWER + => "Unity-iPhone"; +#else + => PBXProject.GetUnityTargetName(); +#endif + + + public static string GetMainTargetGuid(this PBXProject project) +#if UNITY_2019_3_OR_NEWER + => project.GetUnityMainTargetGuid(); +#else + => project.TargetGuidByName(PBXProject.GetUnityTargetName()); +#endif + + public static string GetFrameworkGuid(this PBXProject project) +#if UNITY_2019_3_OR_NEWER + => project.GetUnityFrameworkTargetGuid(); +#else + => project.TargetGuidByName(PBXProject.GetUnityTargetName()); +#endif + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXProjectExtensions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXProjectExtensions.cs.meta new file mode 100644 index 00000000..39a3a33a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXProjectExtensions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8b30711eaf30a4280a3aa9769c8dc2bf +timeCreated: 1578831715 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXTargetMembership.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXTargetMembership.cs new file mode 100644 index 00000000..46913de3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXTargetMembership.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + [System.Flags] + public enum PBXTargetMembership + { + UnityIphone = 1 << 0, + + UnityIphoneTests = 1 << 1, + + UnityFramework = 1 << 2, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXTargetMembership.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXTargetMembership.cs.meta new file mode 100644 index 00000000..80832766 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PBXTargetMembership.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7dcbdc94d28c5497cb93ba60167f4c8a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PlistUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PlistUtility.cs new file mode 100644 index 00000000..a2562cca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PlistUtility.cs @@ -0,0 +1,76 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections.Generic; +using UnityEngine; +using UnityEditor.iOS.Xcode; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public static class PlistUtility + { + #region Plist extensions + + public static bool TryGetElement(this PlistElementDict dict, string key, out T element) where T : PlistElement + { + IDictionary dictionary = dict.values; + PlistElement value; + if (dictionary.TryGetValue(key, out value)) + { + element = (T)value; + return true; + } + + element = default(T); + return false; + } + + public static bool Contains(this PlistElementArray array, string value) + { + List valueList = array.values; + for (int iter = 0; iter < valueList.Count; iter++) + { + if (valueList[iter].AsString() == value) + { + return true; + } + } + + return false; + } + + public static void AddUniqueString(this PlistElementArray array, string value) + { + foreach (PlistElement each in array.values) + { + if (each is PlistElementString) + { + string existingValue = each.AsString(); + if (!string.IsNullOrEmpty(existingValue) && existingValue.Equals(value)) + { + return; + } + } + } + + // We reached here as value doesn't exist + array.AddString(value); + } + + // This add new array if the key doesn't exist. If exists, returns it. + public static PlistElementArray GetArray(this PlistElementDict source, string key) + { + PlistElementArray array = null; + if (source.values.ContainsKey(key)) + { + array = source.values[key] as PlistElementArray; + } + if (array == null) + { + array = source.CreateArray(key); + } + return array; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PlistUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PlistUtility.cs.meta new file mode 100644 index 00000000..dc11eace --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/PlistUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2db1aba3287b94a7cad66d73f74f5c29 +timeCreated: 1576070995 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/ProjectCapabilityManagerExtensions.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/ProjectCapabilityManagerExtensions.cs new file mode 100644 index 00000000..1aee4712 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/ProjectCapabilityManagerExtensions.cs @@ -0,0 +1,48 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEditor.iOS.Xcode; +using UnityEngine; + +using CapabilityType = UnityEditor.iOS.Xcode.PBXCapabilityType; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build.Xcode +{ + public static class ProjectCapabilityManagerExtensions + { + private const BindingFlags NonPublicInstanceBinding = BindingFlags.NonPublic | BindingFlags.Instance; + + public static void ForceAddInAppPurchase(this ProjectCapabilityManager manager) + { + AddCapability(manager, "com.apple.InAppPurchase", true, "StoreKit.framework", false); + } + + public static void ForceAddGameCenter(this ProjectCapabilityManager manager) + { + AddCapability(manager, "com.apple.GameCenter.iOS", true, "GameKit.framework", false); + } + + private static void AddCapability(this ProjectCapabilityManager manager, string id, bool requiresEntitlements, string framework = "", bool optionalFramework = false) + { + var managerType = typeof(ProjectCapabilityManager); + var projectField = managerType.GetField("project", NonPublicInstanceBinding); + var targetGuidField = managerType.GetField("m_TargetGuid", NonPublicInstanceBinding); + + if (projectField == null || targetGuidField == null) return; + + var project = projectField.GetValue(manager) as PBXProject; + if (project != null) + { + var mainTargetGuid = targetGuidField.GetValue(manager) as string; + var type = typeof(CapabilityType); + var types = new [] { typeof(string), typeof(bool), typeof(string), typeof (bool) }; + var parameters = new object[] { id, requiresEntitlements, framework, optionalFramework }; + var pbxCapabilityType = (CapabilityType)type.GetConstructor(NonPublicInstanceBinding, null, types, null).Invoke(parameters); + project.AddCapability(mainTargetGuid, pbxCapabilityType); + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/ProjectCapabilityManagerExtensions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/ProjectCapabilityManagerExtensions.cs.meta new file mode 100644 index 00000000..182b5f32 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/BuildPipeline/Xcode/ProjectCapabilityManagerExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb1eb60d5919f46368453bcd159b6680 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit.meta new file mode 100644 index 00000000..c37dbc91 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e8e8e5516925c4111b4eb085e5f79844 +folderAsset: yes +timeCreated: 1577520307 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit/EditorDemoManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit/EditorDemoManager.cs new file mode 100644 index 00000000..0cb81a04 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit/EditorDemoManager.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.DemoKit +{ + public class EditorDemoManager : MonoBehaviour + { + [UnityEditor.Callbacks.DidReloadScripts] + private static void OnScriptsReloaded() + { + if (EditorApplication.isPlaying) + { + DemoPanel panel = FindFirstObjectByType(); + if (panel != null) + { + panel.Invoke(nameof(DemoPanel.Rebuild), 5f); + } + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit/EditorDemoManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit/EditorDemoManager.cs.meta new file mode 100644 index 00000000..af852dce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/DemoKit/EditorDemoManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 595bcac18d85a4e45b8ea5ddf0c887ba +timeCreated: 1577520359 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/NativePluginsPackageLayout.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/NativePluginsPackageLayout.cs new file mode 100644 index 00000000..57513cf8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/NativePluginsPackageLayout.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins +{ + public static class NativePluginsPackageLayout + { + public static string ExtrasPath { get { return "Assets/Plugins/VoxelBusters/CoreLibrary"; } } + + public static string IosPluginPath { get { return ExtrasPath + "/Plugins/iOS"; } } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/NativePluginsPackageLayout.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/NativePluginsPackageLayout.cs.meta new file mode 100644 index 00000000..0f5458e0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/NativePluginsPackageLayout.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd2cbbb02770345a08fd2cb055bf6717 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/ObjectiveCBindingsGenerator.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/ObjectiveCBindingsGenerator.cs new file mode 100644 index 00000000..7762316c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/ObjectiveCBindingsGenerator.cs @@ -0,0 +1,340 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.Build +{ + public class ObjectiveCBindingsWriter : INativeBindingsWriter + { + #region Static fields + + private static Dictionary s_dataTypeMap = new Dictionary() + { + { typeof(void), "void" }, + { typeof(bool), "bool" }, + { typeof(int), "int" }, + { typeof(long), "long" }, + { typeof(float), "float" }, + { typeof(double), "double" }, + { typeof(string), "const char*" }, + { typeof(IntPtr), "NPIntPtr" }, + { typeof(Delegate), "void*" }, + }; + + private static Dictionary s_defaultMethodImplMap = new Dictionary() + { + { typeof(void), "" }, + { typeof(bool), "return false;" }, + { typeof(int), "return 0;" }, + { typeof(long), "return 0;" }, + { typeof(float), "return 0;" }, + { typeof(double), "return 0;" }, + { typeof(string), "return nil;" }, + { typeof(IntPtr), "return nil;" }, + { typeof(Delegate), "return nil;" }, + }; + + #endregion + + #region Fields + + private string m_headerFilePath; + + private StreamWriter m_headerFileWriter; + + private string m_implementationFilePath; + + private StreamWriter m_implementationFileWriter; + + private NativeBindingsGeneratorOptions m_options; + + #endregion + + #region Constructors + + public ObjectiveCBindingsWriter(string path, + string fileName, + NativeBindingsGeneratorOptions options) + { + // Set properties + m_options = options; + if (NeedsHeaderFile()) + { + m_headerFilePath = IOServices.CombinePath(path, $"{fileName}.h"); + m_headerFileWriter = new StreamWriter(m_headerFilePath, append: false); + } + if (NeedsSourceFile()) + { + m_implementationFilePath = IOServices.CombinePath(path, $"{fileName}.mm"); + m_implementationFileWriter = new StreamWriter(m_implementationFilePath, append: false); + } + } + + #endregion + + #region Static methods + + private static bool IsStructType(Type type) => type.IsValueType && !type.IsPrimitive && !type.IsEnum; + + #endregion + + #region Private methods + + private bool NeedsHeaderFile() => m_options.HasFlag(NativeBindingsGeneratorOptions.Header); + + private bool NeedsSourceFile() => m_options.HasFlag(NativeBindingsGeneratorOptions.Source); + + #endregion + + #region INativeBindingsGenerator implementation + + public void WriteStart(string product = null, + string author = null, + string copyrights = null) + { + // Header file + string headerName = null; + if (NeedsHeaderFile()) + { + headerName = IOServices.GetFileName(m_headerFilePath); + WriteHeaderComments(m_headerFileWriter, + headerName, + product, + author, + copyrights); + m_headerFileWriter.WriteLine(); + + WriteHeaderImports(m_headerFileWriter, + "#import ", + "#import \"NPDefines.h\"", + "#import \"NPUnityDataTypes.h\""); + m_headerFileWriter.WriteLine(); + } + + // Implementation file + if (NeedsSourceFile()) + { + var implementationName = IOServices.GetFileName(m_implementationFilePath); + WriteHeaderComments(m_implementationFileWriter, + implementationName, + product, + author, + copyrights); + m_implementationFileWriter.WriteLine(); + + if (headerName != null) + { + WriteHeaderImports(m_implementationFileWriter, + $"#import \"{headerName}\""); + } + WriteHeaderImports(m_implementationFileWriter, + "#import \"NPDefines.h\"", + "#import \"NPUnityDataTypes.h\""); + m_implementationFileWriter.WriteLine(); + } + } + + public void WriteCustomTypeDeclarations(Type[] customTypes) + { + var writer = m_headerFileWriter ?? m_implementationFileWriter; + if (writer == null) return; + + for (int iter = 0; iter < customTypes.Length; iter++) + { + var item = customTypes[iter]; + if (iter != 0) + { + writer.WriteLine(); + } + + if (IsStructType(item)) + { + WriteStructTypeDeclaration(writer, item); + } + } + writer.WriteLine(); + } + + public void WriteMethod(MethodInfo method) + { + var returnTypeName = GetTypeDefinition(method.ReturnType); + string methodName = method.Name; + var parameters = Array.ConvertAll(method.GetParameters(), + (pItem) => GetParameterDefinition(pItem)); + var methodBody = GetDefaultMethodBodyDefinition(method.ReturnType); + var methodSignature = $"{returnTypeName} {methodName}({string.Join(", ", parameters)})"; + + // Header section + if (NeedsHeaderFile()) + { + m_headerFileWriter.WriteLine($"{methodSignature};"); + } + + // Implementation section + if (NeedsSourceFile()) + { + m_implementationFileWriter.WriteLine($"NPBINDING DONTSTRIP {methodSignature}\n{methodBody}"); + m_implementationFileWriter.WriteLine(); + } + } + + public void WriteEnd(out string[] files) + { + var fileList = new List(); + if (NeedsHeaderFile()) + { + fileList.Add(m_headerFilePath); + m_headerFileWriter.Close(); + } + if (NeedsSourceFile()) + { + fileList.Add(m_implementationFilePath); + m_implementationFileWriter.Close(); + } + + // Set reference values + files = fileList.ToArray(); + } + + #endregion + + #region Write methods + + private void WriteHeaderComments(StreamWriter writer, + string fileName, + string product, + string author, + string copyrights) + { + writer.WriteLine("//"); + writer.WriteLine($"// {fileName}"); + writer.WriteLine($"// {product}"); + writer.WriteLine("//"); + if (author != null) + { + writer.WriteLine($"// Created by {author} on {DateTime.Now.ToString("d")}."); + } + if (copyrights != null) + { + writer.WriteLine($"// {copyrights}"); + } + writer.WriteLine("//"); + } + + private void WriteHeaderImports(StreamWriter writer, + params string[] files) + { + foreach (var item in files) + { + writer.WriteLine($"{item}"); + } + } + + private void WriteStructTypeDeclaration(StreamWriter writer, + Type structType) + { + if(!TryGetBuiltinTypeName(structType, out string nativeTypeName)) + { + nativeTypeName = structType.Name; + } + + writer.WriteLine($"struct {nativeTypeName}"); + writer.WriteLine("{"); + writer.WriteLine("};"); + writer.WriteLine($"typedef struct {nativeTypeName} {nativeTypeName};"); + } + + #endregion + + #region Private methods + + private string GetTypeDefinition(Type type) + { + // Resolve the type to the suitable representation + if (typeof(Delegate).IsAssignableFrom(type)) + { + type = typeof(Delegate); + } + + // Match type to its representation in objective c + if (type.IsArray || type.IsByRef) + { + return GetTypeDefinition(type.GetElementType()) + "*"; + } + if (type.IsEnum) + { + return "int"; + } + + if (s_dataTypeMap.TryGetValue(type, out string typeName)) + { + return typeName; + } + if (TryGetBuiltinTypeName(type, out string nativeTypeName)) + { + return nativeTypeName; + } + return type.Name; + } + + private string GetParameterDefinition(ParameterInfo param) + { + var paramType = GetTypeDefinition(param.ParameterType); + var paramName = param.Name; + return $"{paramType} {paramName}"; + } + + public string GetDefaultMethodBodyDefinition(Type returnType) + { + string methodBody = null; + if (returnType.IsEnum) + { + returnType = typeof(int); + } + + if (!s_defaultMethodImplMap.TryGetValue(returnType, out methodBody)) + { + if (TryGetBuiltinTypeName(returnType, out string nativeType)) + { + if (returnType.IsValueType) + { + methodBody = $"return {nativeType}();"; + } + } + } + return string.IsNullOrEmpty(methodBody) + ? "{ }" + : $"{{\n\t{methodBody}\n}}"; + } + + private bool TryGetBuiltinTypeName(Type type, out string nativeType) + { + nativeType = null; + + if (type.FullName.StartsWith("VoxelBusters")) + { + if (IsStructType(type)) + { + string typeName = type.Name; + if (typeName.StartsWith("Unity")) + { + nativeType = $"NP{typeName}"; + return true; + } + if (typeName.StartsWith("Native")) + { + nativeType = typeName.Replace("Native", "NP"); + return true; + } + } + } + return false; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/ObjectiveCBindingsGenerator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/ObjectiveCBindingsGenerator.cs.meta new file mode 100644 index 00000000..1b96d70b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/ObjectiveCBindingsGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49cf1f2da22e64129b00da78026ab7a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/PluginFeatureObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/PluginFeatureObject.cs new file mode 100644 index 00000000..455995e6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/PluginFeatureObject.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.Compilation; +using UnityEngine; +using VoxelBusters.CoreLibrary.Editor.NativePlugins.Build; + +namespace VoxelBusters.CoreLibrary.Editor +{ + public abstract class PluginFeatureObject : ScriptableObject + { + #region + + [SerializeField] + protected bool m_isEnabled = true; + + #endregion + + #region Public methods + + public void EnableFeature(BuildTarget[] allowedImplementationTargets = null) + { + /* allowedImplementationTargets + * We will look into the Implementations/iOS or Android or Windows and enable those libraries alone and disable rest. + * + */ + m_isEnabled = true; + UpdateAsmdef((AssemblyDefinitionProxy proxy) => proxy.IncludeAllPlatforms()); + GenerateLinkXml(); + } + + public void DisableFeature() + { + m_isEnabled = false; + UpdateAsmdef((AssemblyDefinitionProxy proxy) => proxy.ExcludeAllPlatforms()); + } + + #endregion + + + #region Protected methods + + protected virtual void UpdateLinkXmlWriter(LinkXmlWriter xml) { } + + #endregion + + #region Private methods + + private AssemblyDefinitionProxy GetAsmdefProxy() + { + string directory = GetFeatureDirectory(); + var proxy = new AssemblyDefinitionProxy(directory); + return proxy; + } + + private string GetFeatureDirectory() + { + var path = AssetDatabase.GetAssetPath(this); + return IOServices.GetDirectoryName(path); + } + + private void UpdateAsmdef(Action action) + { + var proxy = GetAsmdefProxy(); + action.Invoke(proxy); + proxy.Save(); + } + + private void GenerateLinkXml() + { + string directory = GetFeatureDirectory(); + var linkXml = new LinkXmlWriter(IOServices.CombinePath(directory, "link.xml")); + UpdateLinkXmlWriter(linkXml); + linkXml.WriteToFile(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/PluginFeatureObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/PluginFeatureObject.cs.meta new file mode 100644 index 00000000..b40e28d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/PluginFeatureObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8c6efc950e3e4442b19e7bc63fe685a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.Database.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.Database.cs new file mode 100644 index 00000000..5b67c20c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.Database.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins +{ + public partial class SimulatorServices + { + [Serializable] + public class Database + { + #region Fields + + [SerializeField] + private List m_dataItems = new List(); + + #endregion + + #region Data methods + + public void SetObject(string key, object obj) + { + // convert object to serialized form + string serializedData = JsonUtility.ToJson(obj); + var newItem = new StringKeyValuePair() { Key = key, Value = serializedData }; + + // check whether key exists + int keyIndex = FindItemIndex(key); + if (keyIndex == -1) + { + m_dataItems.Add(newItem); + } + else + { + m_dataItems[keyIndex] = newItem; + } + } + + public T GetObject(string key) + { + int keyIndex = FindItemIndex(key); + if (keyIndex != -1) + { + string serializedData = m_dataItems[keyIndex].Value; + return JsonUtility.FromJson(serializedData); + } + + return default(T); + } + + public void RemoveObject(string key) + { + int keyIndex = FindItemIndex(key); + if (keyIndex != -1) + { + m_dataItems.RemoveAt(keyIndex); + } + } + + public void RemoveAllObjects() + { + // remove existing data + m_dataItems.Clear(); + } + + #endregion + + #region Private methods + + private int FindItemIndex(string key) + { + return m_dataItems.FindIndex((item) => string.Equals(item.Key, key)); + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.Database.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.Database.cs.meta new file mode 100644 index 00000000..419e9886 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.Database.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4f2bd32a288dd4c8b8fb30e1d32f0eed +timeCreated: 1576668119 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.cs new file mode 100644 index 00000000..08d0b2f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.cs @@ -0,0 +1,102 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.Editor; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins +{ + public partial class SimulatorServices + { + #region Constants + + private const string kSimulatorDataFilePath = "Library/VoxelBusters/NativePlugins/SimulatorData.json"; + + #endregion + + #region Static + + private static Database s_database; + + #endregion + + #region Public methods + + public static Texture2D GetRandomImage() + { + // select a random image file + var textureGuids = AssetDatabase.FindAssets("t:texture"); + int randomIndex = Random.Range(0, textureGuids.Length); + var imagePath = AssetDatabase.GUIDToAssetPath(textureGuids[randomIndex]); + + // create file from texture data + var fileData = IOServices.ReadFileData(imagePath); + var texture = new Texture2D(2, 2); + texture.LoadImage(fileData, false); + + return texture; + } + + #endregion + + #region Data management methods + + public static void SetObject(string key, object obj) + { + InitIfRequired(); + + s_database.SetObject(key, obj); + SetDirty(); + } + + public static T GetObject(string key) + { + InitIfRequired(); + + return s_database.GetObject(key); + } + + public static void RemoveObject(string key) + { + InitIfRequired(); + + s_database.RemoveObject(key); + SetDirty(); + } + + public static void RemoveAllObjects() + { + InitIfRequired(); + + s_database.RemoveAllObjects(); + SetDirty(); + } + + #endregion + + #region Private methods + + private static void InitIfRequired() + { + if (s_database != null) return; + + // check whether serialized data exists + s_database = IOServices.FileExists(kSimulatorDataFilePath) + ? JsonUtility.FromJson(IOServices.ReadFile(kSimulatorDataFilePath)) + : new Database(); + } + + private static void SetDirty() + { + var parentFolder = IOServices.GetDirectoryName(kSimulatorDataFilePath); + IOServices.CreateDirectory(parentFolder, overwrite: false); + + // serializes the data + var fileData = JsonUtility.ToJson(s_database); + IOServices.CreateFile(kSimulatorDataFilePath, fileData); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.cs.meta new file mode 100644 index 00000000..14946fd1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/SimulatorServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 35ce05fae80b848a68c14b6ccc305276 +timeCreated: 1576668119 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI.meta new file mode 100644 index 00000000..c4cd6837 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb314720b73d244a59985796625485ea +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI/UnityUIEditorUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI/UnityUIEditorUtility.cs new file mode 100644 index 00000000..a303c5b9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI/UnityUIEditorUtility.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary.Editor; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.UnityUI; + +namespace VoxelBusters.CoreLibrary.Editor.NativePlugins.UnityUI +{ + public static class UnityUIEditorUtility + { + #region Static methods + + public static UnityUIRenderer LoadRendererPrefab() + { + return LoadPrefab("UnityUIRenderer.prefab"); + } + + public static UnityUIAlertDialog LoadAlertDialogPrefab() + { + return LoadPrefab("UnityUIAlertDialog.prefab"); + } + + private static T LoadPrefab(string name) where T : Object + { + string prefabPath = CoreLibrarySettings.Package.GetFullPath($"Prefabs/{name}"); + return AssetDatabase.LoadAssetAtPath(prefabPath); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI/UnityUIEditorUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI/UnityUIEditorUtility.cs.meta new file mode 100644 index 00000000..a4f0db23 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/UnityUI/UnityUIEditorUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a0e4454dec3164cec87995fda698d0be +timeCreated: 1578296765 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/VoxelBusters.CoreLibrary.Editor.NativePlugins.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/VoxelBusters.CoreLibrary.Editor.NativePlugins.asmdef new file mode 100644 index 00000000..59e6bd24 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/VoxelBusters.CoreLibrary.Editor.NativePlugins.asmdef @@ -0,0 +1,18 @@ +{ + "name": "VoxelBusters.CoreLibrary.Editor.NativePlugins", + "references": [ + "VoxelBusters.CoreLibrary", + "VoxelBusters.CoreLibrary.Editor", + "VoxelBusters.CoreLibrary.NativePlugins" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/VoxelBusters.CoreLibrary.Editor.NativePlugins.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/VoxelBusters.CoreLibrary.Editor.NativePlugins.asmdef.meta new file mode 100644 index 00000000..d846a775 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Editor/NativePlugins/VoxelBusters.CoreLibrary.Editor.NativePlugins.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b26b55e8c8c3048eebf8103d71fd130c +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources.meta new file mode 100644 index 00000000..f1b8f128 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d113a24f748704384af00b11520c8d62 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures.meta new file mode 100644 index 00000000..d63bc906 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86bb6eec12d0f4d908b44114e42e7848 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-off.png b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-off.png new file mode 100644 index 00000000..2ef3f78c Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-off.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-off.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-off.png.meta new file mode 100644 index 00000000..cd308837 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-off.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: 83c76dd713f944d49b6658d19511efca +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-on.png b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-on.png new file mode 100644 index 00000000..9177bfd4 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-on.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-on.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-on.png.meta new file mode 100644 index 00000000..a8df2d86 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/EditorResources/Textures/toggle-on.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: ba3d6a006944a449789813ea5f087c3b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras.meta new file mode 100644 index 00000000..ce818d8e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3654df5d282e405ab04e2a50e0e2e23 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers.meta new file mode 100644 index 00000000..6d3ce7a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a32f58ee149ab423abc73d74d4ae7e5e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultJsonServiceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultJsonServiceProvider.cs new file mode 100644 index 00000000..b565949f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultJsonServiceProvider.cs @@ -0,0 +1,44 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +using JsonUtility = VoxelBusters.CoreLibrary.Parser.JsonUtility; + +namespace VoxelBusters.CoreLibrary.Helpers +{ + public class DefaultJsonServiceProvider : IJsonServiceProvider + { + #region Static methods + +#if UNITY_EDITOR + [UnityEditor.InitializeOnLoadMethod] +#endif + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void OnLoad() + { + if (ExternalServiceProvider.JsonServiceProvider != null) + { + return; + } + + // set default service provider + ExternalServiceProvider.JsonServiceProvider = new DefaultJsonServiceProvider(); + } + + #endregion + + #region IJsonServiceProvider implementation + + public string ToJson(object obj) + { + return JsonUtility.ToJson(obj); + } + + public object FromJson(string jsonString) + { + return JsonUtility.FromJson(jsonString); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultJsonServiceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultJsonServiceProvider.cs.meta new file mode 100644 index 00000000..ea1a9b16 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultJsonServiceProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f5c1b36bdb714b7dafa07c41c9932c2 +timeCreated: 1579703881 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultLocalisationServiceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultLocalisationServiceProvider.cs new file mode 100644 index 00000000..a29e1e35 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultLocalisationServiceProvider.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Helpers +{ + public class DefaultLocalisationServiceProvider : ILocalisationServiceProvider + { + #region Static methods + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void OnLoad() + { + if (ExternalServiceProvider.LocalisationServiceProvider != null) + { + return; + } + + // set default service provider + ExternalServiceProvider.LocalisationServiceProvider = new DefaultLocalisationServiceProvider(); + } + + #endregion + + #region ILocalisationServiceProvider implementation + + public string GetLocalisedString(string key, string defaultValue) + { + return defaultValue; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultLocalisationServiceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultLocalisationServiceProvider.cs.meta new file mode 100644 index 00000000..f9deca9c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultLocalisationServiceProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 844b91e0406484dfeab3f65932a1aac4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultSaveServiceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultSaveServiceProvider.cs new file mode 100644 index 00000000..8d929789 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultSaveServiceProvider.cs @@ -0,0 +1,94 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.Helpers +{ + public class DefaultSaveServiceProvider : ISaveServiceProvider + { + #region Static methods + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void OnLoad() + { + if (ExternalServiceProvider.SaveServiceProvider != null) + { + return; + } + + // set default service provider + ExternalServiceProvider.SaveServiceProvider = new DefaultSaveServiceProvider(); + } + + #endregion + + #region ISaveServiceProvider implementation + + public int GetInt(string key, int defaultValue = 0) + { + return PlayerPrefs.GetInt(key, defaultValue); + } + + public float GetFloat(string key, float defaultValue = 0f) + { + return PlayerPrefs.GetFloat(key, defaultValue); + } + + public string GetString(string key, string defaultValue = null) + { + return PlayerPrefs.GetString(key, defaultValue); + } + + public string[] GetStringArray(string key, string[] defaultValue = null) + { + string arrayStr = PlayerPrefs.GetString(key, null); + if (!string.IsNullOrEmpty(arrayStr)) + { + IList jsonList = (IList)ExternalServiceProvider.JsonServiceProvider.FromJson(arrayStr); + + // convert to string array + string[] array = new string[jsonList.Count]; + for (int iter = 0; iter < jsonList.Count; iter++) + { + array[iter] = (string)jsonList[iter]; + } + return array; + } + + return null; + } + + public void SetInt(string key, int value) + { + PlayerPrefs.SetInt(key, value); + } + + public void SetFloat(string key, float value) + { + PlayerPrefs.SetFloat(key, value); + } + + public void SetString(string key, string value) + { + PlayerPrefs.SetString(key, value); + } + + public void SetStringArray(string key, string[] value) + { + string arrayStr = (null == value) ? null : ExternalServiceProvider.JsonServiceProvider.ToJson(value); + PlayerPrefs.SetString(key, arrayStr); + } + + public void RemoveKey(string key) + { + PlayerPrefs.DeleteKey(key); + } + + public void Save() + { + PlayerPrefs.Save(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultSaveServiceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultSaveServiceProvider.cs.meta new file mode 100644 index 00000000..84500dc4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Extras/Helpers/DefaultSaveServiceProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b4f01a076e9304e249847cfa914a928e +timeCreated: 1579703881 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts.meta new file mode 100644 index 00000000..55fa7a62 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e19966c47dd847799984055c12681e1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts/Lato-Regular.ttf b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts/Lato-Regular.ttf new file mode 100644 index 00000000..33eba8b1 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts/Lato-Regular.ttf differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts/Lato-Regular.ttf.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts/Lato-Regular.ttf.meta new file mode 100644 index 00000000..f7d61817 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Fonts/Lato-Regular.ttf.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: e418537621d284969acce413dd1c8c27 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Lato + fontNames: + - Lato + fallbackFontReferences: + - {fileID: 12800000, guid: a5b008dd8a21646b79c906018e024b87, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins.meta new file mode 100644 index 00000000..ebe30c43 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4b93811607564754a3451225934186f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS.meta new file mode 100644 index 00000000..2fa9fdbe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 87d965fce72ea4c0586f9790ec4ebea2 +folderAsset: yes +timeCreated: 1578293808 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Base.asset b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Base.asset new file mode 100644 index 00000000..375bea91 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Base.asset @@ -0,0 +1,28 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: Base + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 4702987cd52d14b4c8c5530706e3c833, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: MobileCoreServices.framework + m_target: 4 + m_isOptional: 0 + - m_name: StoreKit.framework + m_target: 4 + m_isOptional: 0 + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Base.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Base.asset.meta new file mode 100644 index 00000000..7d0b58f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Base.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c2f2c3a01863542eaaf464deb7b3d549 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks.meta new file mode 100644 index 00000000..84d19ce8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56cef3f31ab5646dcae2232b05fe9f05 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework.meta new file mode 100644 index 00000000..27af3f23 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: 651851110e1c64a8d92165210194d9dc +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Headers/VBCoreLibrary-Swift.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Headers/VBCoreLibrary-Swift.h new file mode 100644 index 00000000..8320b986 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Headers/VBCoreLibrary-Swift.h @@ -0,0 +1,315 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 6.0.2 effective-5.10 (swiftlang-6.0.2.1.2 clang-1600.0.26.4) +#ifndef VBCORELIBRARY_SWIFT_H +#define VBCORELIBRARY_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#pragma clang diagnostic pop +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" +#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="VBCoreLibrary",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Headers/VBCoreLibrary.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Headers/VBCoreLibrary.h new file mode 100644 index 00000000..dca8ca76 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Headers/VBCoreLibrary.h @@ -0,0 +1,11 @@ +// +// VBCoreLibrary.h +// VBCoreLibrary +// +// Created by Ayyappa on 28/03/24. +// + +#pragma once + +#define NPBINDING extern "C" __attribute__((visibility ("default"))) +#define DONTSTRIP __attribute__((used)) diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Info.plist b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Info.plist new file mode 100644 index 00000000..827e2b7d Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Info.plist differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo new file mode 100644 index 00000000..dfbcea20 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.abi.json b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 00000000..d2f988e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "NO_MODULE", + "printedName": "NO_MODULE", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftdoc b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 00000000..60867279 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftmodule b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftmodule new file mode 100644 index 00000000..6e587515 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/module.modulemap b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/module.modulemap new file mode 100644 index 00000000..cc175f22 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module VBCoreLibrary { + umbrella header "VBCoreLibrary.h" + export * + + module * { export * } +} + +module VBCoreLibrary.Swift { + header "VBCoreLibrary-Swift.h" + requires objc +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/VBCoreLibrary b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/VBCoreLibrary new file mode 100644 index 00000000..2c6619a6 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/VBCoreLibrary differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/_CodeSignature/CodeResources b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/_CodeSignature/CodeResources new file mode 100644 index 00000000..ab75d634 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/Frameworks/VBCoreLibrary.framework/_CodeSignature/CodeResources @@ -0,0 +1,179 @@ + + + + + files + + Headers/VBCoreLibrary-Swift.h + + Hjdqx8WxHOvG9hzlOg7nZRtw+Vo= + + Headers/VBCoreLibrary.h + + xQM6IhfaOY9SnPpTxFUD1eAKXiw= + + Info.plist + + pxo5gtPQWRFPCoOE8Gl4uo9iwvg= + + Modules/VBCoreLibrary.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + esth/aIvb7qQZYwjTaReVCL3fPs= + + Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.abi.json + + gcwBsH4BgyFY4sVtNt+/xOKS3vY= + + Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftdoc + + JOvwORQkDM+/MNGPMdJUBUkPgqs= + + Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftmodule + + h+4O81uw4s9EyQeIipgYg5onn40= + + Modules/module.modulemap + + Nq5Mevxbr/FCDD/KqYaLsJL4AXo= + + + files2 + + Headers/VBCoreLibrary-Swift.h + + hash2 + + tVGO+jGwI7HIKW4WEQ4l605l4nUpQcp9iVLqnJmUjeg= + + + Headers/VBCoreLibrary.h + + hash2 + + GP1JBTjVGnbdNnPsojUytDxFPn/gEPPwVFMtUMZdXc0= + + + Modules/VBCoreLibrary.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + hash2 + + /GDWOviRaSlDIr+e85UjwA9i0wr4UwKQLvY7oWCg37c= + + + Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.abi.json + + hash2 + + Qnesa0n4URGWAopawg9bGx36dUwkYV00BoCJ8LFzlyg= + + + Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftdoc + + hash2 + + EZV99gTgcNlcE/M3FBcb9E/8eoctajeSCkFoFONBZHg= + + + Modules/VBCoreLibrary.swiftmodule/arm64-apple-ios.swiftmodule + + hash2 + + zzOdzP8tXFR13Twnwa0CSsvJ7G5ZXrZiXRtVzmBUQZY= + + + Modules/module.modulemap + + hash2 + + 1rYakAp5I9b0pp9Kp7XBAbf6FZQ0H9spG1LQDnCFerk= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.h new file mode 100644 index 00000000..c7be586b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.h @@ -0,0 +1,70 @@ +// +// NPBindingHelper.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import +#import "NPDefines.h" +#import "NPUnityDataTypes.h" + +// common functions +char* NPCreateCStringFromNSString(NSString* nsString); +char* NPCreateCStringCopyFromNSString(NSString* nsString); +char* NPCreateCStringFromNSError(NSError* error); +char* NPCreateCStringCopyFromNSError(NSError* error); +NSArray* NPCreateArrayOfNSString(const char** array, int length); +NSString* NPCreateNSStringFromCString(const char* cString); +NSURL* NPCreateNSURLFromCString(const char* cString); +NPArray* NPCreateArrayOfCString(NSArray* array); +NSString* NPExtractTokenFromNSData(id token); +NPError NPCreateError(int code, NSString* description); +NPError NPCreateError(NSError* error); +NPError NPNullError(); + +// array opearations +NPArray* NPCreateNativeArrayFromNSArray(NSArray* array); + +// image operations +NSData* NPEncodeImageAsData(UIImage* image, UIImageEncodeType encodeType); +UIImage* NPCaptureScreenshotAsImage(); +NSData* NPCaptureScreenshotAsData(UIImageEncodeType encodeType); +UIImage* NPCreateImage(void* dataArrayPtr, int dataLength); +UIImage* LoadImageFromResources(NSString* name, NSString* extension); + +// convertor operations +NSString* NPConvertMimeTypeToUTType(NSString* mimeType); + +// JSON methods +NSString* NPToJson(id object, NSError** error); +id NPFromJson(NSString* jsonString, NSError** error); + +// formatter +NSNumberFormatter* NPGetBillingPriceFormatter(NSLocale* locale); +NSString* NPCreateNSStringFromNSDate(NSDate* date); +NSDate* NPCreateNSDateFromNSString(NSString* dateStr); + +// rect +CGPoint GetLastTouchPosition(); +void SetLastTouchPosition(CGPoint position); +CGRect NPConvertScreenSpaceRectToNormalisedRect(CGRect frame); +CGRect NPConvertNormalisedRectToScreenSpaceRect(CGRect normalisedRect); +NPUnityRect NPRectMake(CGRect rect); +CGPoint NPConverToNativePosition(float posX, float posY); + +// color methods +NPUnityColor NPColorMake(float r, float g, float b, float a); +NPUnityColor NPColorCreateFromUIColor(UIColor* color); + +// converter +NSString* NPGetTextEncodingName(NPUnityTextEncodingFormat format); +NPSize NPCreateSizeFromCGSize(CGSize size); + +// briding methods +void* NPRetainWithOwnershipTransfer(id object); +void* NPRetain(void* objectPtr); +void NPRelease(void* objectPtr); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.h.meta new file mode 100644 index 00000000..8b89b8b7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.h.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: 92d95ca87268841a3b4846d01cd619bc +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.mm new file mode 100644 index 00000000..af3b74eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.mm @@ -0,0 +1,606 @@ +// +// NPBindingHelper.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPBindingHelper.h" +#import "NPDefines.h" +#import "UnityView.h" + +#if !defined(MAKE_UNITY_VERSION) +#define MAKE_UNITY_VERSION(ver, maj, min) ((ver)*10000 + (maj)*100 + (min)) +#endif + +static NSMutableDictionary* _referenceHistory = nil; +static CGPoint _lastTouchPosition = CGPointMake(0, 0); + +UIImage* NPFixOrientation(UIImage* image, BOOL isOpaque); + +#pragma mark - String operations + +char* NPCreateCStringFromNSString(NSString* nsString) +{ + if (nsString) + { + return (char*)[nsString UTF8String]; + } + + return nil; +} + +char* NPCreateCStringCopyFromNSString(NSString* nsString) +{ + if (nsString) + { + // create copy + const char* cString = [nsString UTF8String]; + char* copy = (char*)malloc(strlen(cString) + 1); + strcpy(copy, cString); + return copy; + } + + return nil; +} + +char* NPCreateCStringFromNSError(NSError* error) +{ + if (error) + { + return (char*)[[error localizedDescription] UTF8String]; + } + + return nil; +} + +NPError NPCreateError(int code, NSString* description) +{ + NPError error; + error.code = code; + error.description = (void*)[description UTF8String]; + return error; +} + +NPError NPCreateError(NSError* error) +{ + if (error) + { + return NPCreateError((int) error.code, error.localizedDescription); + } + else + { + return NPNullError(); + } +} + +NPError NPNullError() +{ + NPError error = {-1, NULL}; + return error; +} + + +char* NPCreateCStringCopyFromNSError(NSError* error) +{ + if (error) + { + return NPCreateCStringCopyFromNSString([error localizedDescription]); + } + + return nil; +} + +NSArray* NPCreateArrayOfNSString(const char** array, int length) +{ + if (array) + { + NSMutableArray* nativeArray = [NSMutableArray arrayWithCapacity:length]; + for (int iter = 0; iter < length; iter++) + { + const char* cValue = array[iter]; + [nativeArray addObject:[NSString stringWithUTF8String:cValue]]; + } + + return nativeArray; + } + + return nil; +} + +NSString* NPCreateNSStringFromCString(const char* cString) +{ + if (cString) + { + return [NSString stringWithUTF8String:cString]; + } + + return nil; +} + +NSURL* NPCreateNSURLFromCString(const char* cString) +{ + if (cString) + { + NSString* urlString = [NSString stringWithUTF8String:cString]; + return [NSURL URLWithString:urlString]; + } + + return nil; +} + +NPArray* NPCreateArrayOfCString(NSArray* array) +{ + if (array) + { + int length = (int)[array count]; + NPArray* nativeArray = new NPArray(length); + for (int iter = 0; iter < length; iter++) + { + const char* item = [[array objectAtIndex:iter] UTF8String]; + nativeArray->setObjectAtIndex(iter, (void*)item); + } + + return nativeArray; + } + else + { + return new NPArray(-1); + } +} + +NSString* NPConvertDataToHexString(NSData* data) +{ + NSUInteger len = data.length; + if (len == 0) + { + return nil; + } + + const unsigned char* buffer = (const unsigned char*)[data bytes]; + NSMutableString* hexString = [NSMutableString stringWithCapacity:(len * 2)]; + for (int i = 0; i < len; ++i) + { + [hexString appendFormat:@"%02x", buffer[i]]; + } + return [hexString copy]; +} + +NSString* NPExtractTokenFromNSData(id token) +{ + if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"13")) + { + return NPConvertDataToHexString(token); + } + else + { + NSString* tokenStr = [token description]; + tokenStr = [tokenStr stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; + tokenStr = [tokenStr stringByReplacingOccurrencesOfString:@" " withString:@""]; + return tokenStr; + } +} + +#pragma mark - Array operations + +NPArray* NPCreateNativeArrayFromNSArray(NSArray* array) +{ + //It's not possible to create an empty array (with no elements) with calloc/malloc and in that place need to use null. But it beats the purpose as there can be empty arrays. So better to use NPArrayWrapper which is not a dynamic struct in those cases. + //Note on managed side, Length with zero is different from Length with -1. Length with zero means empty collection, where as length with -1 means no array exists. + if (array)// && [array count] > 0 + { + int length = (int)[array count]; + NPArray* nativeArray = new NPArray(length); + + for (int iter = 0; iter < length; iter++) + { + if([array[iter] isKindOfClass:[NSValue class]]) + { + NSValue *value = (NSValue*)array[iter]; + nativeArray->setObjectAtIndex(iter, value.pointerValue); + } + else + { + nativeArray->setObjectAtIndex(iter, (__bridge void*)array[iter]); + } + } + + return nativeArray; + } + else + { + return new NPArray(-1); + } +} + +#pragma mark - Image operations + +NSData* NPEncodeImageAsData(UIImage* image, UIImageEncodeType encodeType) +{ + switch (encodeType) + { + case UIImageEncodeTypePNG: + return UIImagePNGRepresentation(NPFixOrientation(image, false)); + + case UIImageEncodeTypeJPEG: + return UIImageJPEGRepresentation(NPFixOrientation(image, true), 1); + + default: + return nil; + } +} + +UIImage* NPFixOrientation(UIImage* image, bool isOpaque) //This is used as unity fails to consider exif flags for jpegs and also UIImageRepresentation fails to save orientation info when saved in png format. One shot - Two birds :D +{ + if (image.imageOrientation == UIImageOrientationUp) return image; + CGSize size = image.size; + float scale = image.scale; + + UIGraphicsBeginImageContextWithOptions(size, isOpaque, scale); + [image drawInRect:(CGRect){0, 0, size}]; + UIImage *orientedImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return orientedImage; +} + +UIImage* NPCaptureScreenshotAsImage() +{ + UIView* glView = UnityGetGLView(); + CGRect bounds = glView.bounds; + + // write contents of view to context and create image using it + UIGraphicsBeginImageContextWithOptions(bounds.size, YES, 0.0); + [glView drawViewHierarchyInRect:bounds afterScreenUpdates:YES]; + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + return image; +} + +NSData* NPCaptureScreenshotAsData(UIImageEncodeType encodeType) +{ + switch (encodeType) + { + case UIImageEncodeTypePNG: + return UIImagePNGRepresentation(NPCaptureScreenshotAsImage()); + + case UIImageEncodeTypeJPEG: + return UIImageJPEGRepresentation(NPCaptureScreenshotAsImage(), 1); + + default: + return nil; + } +} + +UIImage* NPCreateImage(void* dataArrayPtr, int dataLength) +{ + NSData* data = [NSData dataWithBytes:dataArrayPtr length:dataLength]; + return [UIImage imageWithData:data]; +} + +UIImage* LoadImageFromResources(NSString* name, NSString* extension) +{ +#if UNITY_VERSION < MAKE_UNITY_VERSION(2019,3,0) + return [UIImage imageNamed:[NSString stringWithFormat:@"%@.%@", name, extension]]; +#else + NSBundle* bundle = [NSBundle bundleForClass:[UnityView class]]; + NSString* resourcePath = [bundle pathForResource:name ofType:extension]; + return [UIImage imageWithContentsOfFile:resourcePath]; +#endif +} + +#pragma mark - Converter operations + +NSString* NPConvertMimeTypeToUTType(NSString* mimeType) +{ + if ([mimeType isEqualToString:kMimeTypePNG]) + { + return (NSString*)kUTTypePNG; + } + if ([mimeType isEqualToString:kMimeTypeJPG]) + { + return (NSString*)kUTTypeJPEG; + } + + return NULL; +} + +#pragma mark - JSON utility methods + +NSString* NPToJson(id object, NSError** error) +{ + if (object) + { + NSData* jsonData = [NSJSONSerialization dataWithJSONObject:object + options:0 + error:error]; + + if (*error == nil) + { + return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + } + } + + return nil; +} + +id NPFromJson(NSString* jsonString, NSError** error) +{ + if (jsonString) + { + NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; + if (jsonData) + { + id object = [NSJSONSerialization JSONObjectWithData:jsonData + options:0 + error:error]; + if (*error == nil) + { + return object; + } + } + } + + return nil; +} + +#pragma mark - Formatters + +static NSNumberFormatter* _billingPriceFormatter = nil; +NSNumberFormatter* NPGetBillingPriceFormatter(NSLocale* locale) +{ + static dispatch_once_t sharedBlock; + dispatch_once(&sharedBlock, ^{ + NSNumberFormatter* priceFormatter = [[NSNumberFormatter alloc] init]; + [priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; + [priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; + [priceFormatter setLocale:locale]; + + // store reference + _billingPriceFormatter = priceFormatter; + }); + + return _billingPriceFormatter; +} + +static NSDateFormatter* _dateFormatter = nil; +NSDateFormatter* GetDateFormatter() +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; + [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; + + // save reference + _dateFormatter = dateFormatter; + }); + + return _dateFormatter; +} + +NSString* NPCreateNSStringFromNSDate(NSDate* date) +{ + if (date) + { + __weak NSDateFormatter* dateFormatter = GetDateFormatter(); + return [dateFormatter stringFromDate:date]; + } + + return nil; +} + +NSDate* NPCreateNSDateFromNSString(NSString* dateStr) +{ + if (dateStr) + { + __weak NSDateFormatter* dateFormatter = GetDateFormatter(); + return [dateFormatter dateFromString:dateStr]; + } + + return nil; +} + +#pragma mark - Rect functions + +CGFloat GetStatusBarHeight() +{ + UIApplication* sharedApplication = [UIApplication sharedApplication]; + if (![sharedApplication isStatusBarHidden]) + { + CGRect statusBarFrame = [sharedApplication statusBarFrame]; + return statusBarFrame.size.height; + } + + return 0; +} + +CGPoint GetLastTouchPosition() +{ + return _lastTouchPosition; +} + +void SetLastTouchPosition(CGPoint position) +{ + _lastTouchPosition = position; +} + +CGRect NPConvertScreenSpaceRectToNormalisedRect(CGRect frame) +{ + CGRect screenBounds = [[UIScreen mainScreen] bounds]; + // convert frame to normalised rect + CGRect normalisedRect; + normalisedRect.origin.x = (CGRectGetMinX(frame) - CGRectGetMinX(screenBounds)) / CGRectGetWidth(screenBounds); + normalisedRect.origin.y = (CGRectGetMinY(frame) - CGRectGetMinY(screenBounds)) / CGRectGetHeight(screenBounds); + normalisedRect.size.width = CGRectGetWidth(frame) / CGRectGetWidth(screenBounds); + normalisedRect.size.height = CGRectGetHeight(frame) / CGRectGetHeight(screenBounds); + + return normalisedRect; +} + +CGRect NPConvertNormalisedRectToScreenSpaceRect(CGRect normalisedRect) +{ + CGRect screenBounds = [[UIScreen mainScreen] bounds]; + // calculate frame + CGRect newFrame; + newFrame.origin.x = (CGRectGetMinX(normalisedRect) * CGRectGetWidth(screenBounds)) + CGRectGetMinX(screenBounds); + newFrame.origin.y = (CGRectGetMinY(normalisedRect) * CGRectGetHeight(screenBounds)) + CGRectGetMinY(screenBounds); + newFrame.size.width = CGRectGetWidth(normalisedRect) * CGRectGetWidth(screenBounds); + newFrame.size.height = CGRectGetHeight(normalisedRect) * CGRectGetHeight(screenBounds); + + return newFrame; +} + +NPUnityRect NPRectMake(CGRect rect) +{ + NPUnityRect npRect; + npRect.x = rect.origin.x; + npRect.y = rect.origin.y; + npRect.width = rect.size.width; + npRect.height = rect.size.height; + + return npRect; +} + +CGPoint NPConverToNativePosition(float posX, float posY) +{ + float contentScale = [[UIScreen mainScreen] scale]; + return CGPointMake(posX / contentScale, posY / contentScale); +} + +#pragma mark - Color methods + +NPUnityColor NPColorMake(float r, float g, float b, float a) +{ + NPUnityColor npColor; + npColor.r = r; + npColor.g = g; + npColor.b = b; + npColor.a = a; + return npColor; +} + +NPUnityColor NPColorCreateFromUIColor(UIColor* color) +{ + CGFloat r, g, b, a; + [color getRed:&r green:&g blue:&b alpha:&a]; + return NPColorMake((float)r, (float)g , (float)b, (float)a); +} + +#pragma mark - Converter methods + +NSString* NPGetTextEncodingName(NPUnityTextEncodingFormat format) +{ + if ([format isEqualToString:NPUnityTextEncodingFormatUTF8]) + { + return @"utf-8"; + } + if ([format isEqualToString:NPUnityTextEncodingFormatUTF16]) + { + return @"utf-16"; + } + if ([format isEqualToString:NPUnityTextEncodingFormatUTF32]) + { + return @"utf-32"; + } + + return nil; +} + +NPSize NPCreateSizeFromCGSize(CGSize size) +{ + NPSize npSize; + npSize.width = size.width; + npSize.height = size.height; + + return npSize; +} + +#pragma mark - Reference management methods + +void AddObjectReference(void* object, bool* isNew) +{ + // ensure that collection object is valid + if (_referenceHistory == nil) + { + _referenceHistory = [NSMutableDictionary dictionary]; + } + + // add object to collection + id key = [NSValue valueWithPointer:(const void*)object]; + NSNumber* value = [_referenceHistory objectForKey:key]; + if (value == nil) + { + [_referenceHistory setObject:[NSNumber numberWithInt:1] forKey:key]; + *isNew = true; + } + else + { + [_referenceHistory setObject:[NSNumber numberWithInt:[value intValue] + 1] forKey:key]; + *isNew = false; + } +} + +void* NPRetainWithOwnershipTransfer(id object) +{ + void* objectPtr; + bool isNew; + AddObjectReference((__bridge void*)object, &isNew); + if (isNew) + { + objectPtr = (void*)CFBridgingRetain(object); + } + else + { + objectPtr = (void*)CFRetain((__bridge CFTypeRef)object); + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + NSLog(@"[NativePlugins] Retaining ownership for pointer %@.", objectPtr); +#endif + + return objectPtr; +} + +void* NPRetain(void* objectPtr) +{ + return NPRetainWithOwnershipTransfer((__bridge id)objectPtr); +} + +void NPRelease(void* objectPtr) +{ + if (_referenceHistory == nil) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + NSLog(@"[NativePlugins] Fatal error! Collection object is not initialised. It seems like Release is called, before retain."); +#endif + return; + } + + id key = [NSValue valueWithPointer:(const void*)objectPtr]; + NSNumber* value = [_referenceHistory objectForKey:key]; + if (value == nil) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + NSLog(@"[NativePlugins] Fatal error! Object not found. It seems like Release is called, before retain."); +#endif + return; + } + + // check value + if ([value intValue] == 1) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + NSLog(@"[NativePlugins] Release object ownership for pointer %@.", objectPtr); +#endif + CFBridgingRelease(objectPtr); + [_referenceHistory removeObjectForKey:key]; + return; + } + + // update reference table + CFRelease(objectPtr); + [_referenceHistory setObject:[NSNumber numberWithInt:[value intValue] - 1] forKey:key]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.mm.meta new file mode 100644 index 00000000..c38ca32a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPBindingHelper.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: a7e81a6e20d054aeb8d3da56a68291ec +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPConfig.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPConfig.h new file mode 100644 index 00000000..172fd677 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPConfig.h @@ -0,0 +1,7 @@ +// NPConfig.h// Native Plugins//// Created by Ashwin kumar// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved.// + +#pragma once + +#define NATIVE_PLUGINS_USES_DEEP_LINK 1 +#define NATIVE_PLUGINS_USES_NOTIFICATION 1 +#define NATIVE_PLUGINS_USES_PUSH_NOTIFICATION 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPConfig.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPConfig.h.meta new file mode 100644 index 00000000..952ce297 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPConfig.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 111af326d79b34f52a5199aa000f56e5 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPDefines.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPDefines.h new file mode 100644 index 00000000..807b0b1f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPDefines.h @@ -0,0 +1,31 @@ +// +// NPDefines.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#pragma once + +#define NPBINDING extern "C" __attribute__((visibility ("default"))) +#define DONTSTRIP __attribute__((used)) +#define NPIntPtr void* +#define NPString char* + +#ifdef DEBUG + #define NPLog(fmt, ...) NSLog((fmt), ##__VA_ARGS__) +#else + #define NPLog(fmt, ...) +#endif + +#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) +#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) +#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) + +#define IsIpadInterface (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + +static NSString* const kMimeTypeJPG = @"image/jpeg"; +static NSString* const kMimeTypePNG = @"image/png"; diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPDefines.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPDefines.h.meta new file mode 100644 index 00000000..70087607 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPDefines.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: b55094604645d46369df45927a004790 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPKit.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPKit.h new file mode 100644 index 00000000..71652aa1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPKit.h @@ -0,0 +1,14 @@ +// +// NPKit.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#pragma once + +#import "NPDefines.h" +#import "NPUnityDataTypes.h" +#import "NPBindingHelper.h" +#import "NPConfig.h" diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPKit.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPKit.h.meta new file mode 100644 index 00000000..ef0e2d72 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPKit.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 8409ff84ada1e44f1b6788a198a41df9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.h new file mode 100644 index 00000000..68753c6f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.h @@ -0,0 +1,17 @@ +// +// ListenerWrapperBase.h +// Unity-iPhone +// +// Created by Ayyappa J on 06/10/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NPListenerWrapperBase : NSObject +@property (nonatomic, assign) void* tag; +-(id) initWithTag:(void*) tag; +@end + +NS_ASSUME_NONNULL_END diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.h.meta new file mode 100644 index 00000000..186c6048 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.h.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: c7966ae9023d34fcb9980b8ea50cc136 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.mm new file mode 100644 index 00000000..c8ec1bf8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.mm @@ -0,0 +1,20 @@ +// +// ListenerWrapperBase.m +// Unity-iPhone +// +// Created by Ayyappa J on 06/10/22. +// + +#import "NPListenerWrapperBase.h" + +@implementation NPListenerWrapperBase +@synthesize tag; + +-(id) initWithTag:(void*) tag +{ + self = [super init]; + self.tag = tag; + + return self; +} +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.mm.meta new file mode 100644 index 00000000..4354886a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPListenerWrapperBase.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 84af00a4bcd9e4023a5c0a7befd8f55a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.h new file mode 100644 index 00000000..97c2c03a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.h @@ -0,0 +1,19 @@ +// +// NPManagedPointerCache.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import + +@interface NPManagedPointerCache : NSObject + ++ (NPManagedPointerCache*)sharedInstance; + +- (void)addPointer:(void*)pointer forKey:(id)object; +- (void*)pointerForKey:(id)object; +- (void)removePointerForKey:(id)object; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.h.meta new file mode 100644 index 00000000..c0eb986c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.h.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: c6bd0f922b07841d0aa8c938322f23a1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.mm new file mode 100644 index 00000000..cb073814 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.mm @@ -0,0 +1,62 @@ +// +// NPManagedPointerCache.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPManagedPointerCache.h" + +// static fields +static NPManagedPointerCache* _sharedInstance = nil; + +@interface NPManagedPointerCache () + +@property(nonatomic, strong) NSMutableDictionary* tagCollection; + +@end + +@implementation NPManagedPointerCache + +@synthesize tagCollection = _tagCollection; + ++ (NPManagedPointerCache*)sharedInstance +{ + if (nil == _sharedInstance) + { + _sharedInstance = [[NPManagedPointerCache alloc] init]; + } + + return _sharedInstance; +} + +- (id)init +{ + self = [super init]; + if (self) + { + // initialise + self.tagCollection = [[NSMutableDictionary alloc] init]; + } + + return self; +} + +- (void)addPointer:(void*)pointer forKey:(id)object +{ + [self.tagCollection setObject:[NSValue valueWithPointer:pointer] forKey:[NSValue valueWithNonretainedObject:object]]; +} + +- (void*)pointerForKey:(id)object +{ + NSValue* value = [self.tagCollection objectForKey:[NSValue valueWithNonretainedObject:object]]; + return [value pointerValue]; +} + +- (void)removePointerForKey:(id)object +{ + [self.tagCollection removeObjectForKey:[NSValue valueWithNonretainedObject:object]]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.mm.meta new file mode 100644 index 00000000..b0493451 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPManagedPointerCache.mm.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 4bb0042cbd61f4e139d3c15785897351 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.h new file mode 100644 index 00000000..63e292de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.h @@ -0,0 +1,29 @@ +// +// NPUnityAppController.h +// Unity-iPhone +// +// Created by Ashwin Kumar on 09/04/20. +// + +#import +#import "AppDelegateListener.h" +#import "UnityAppController.h" +#include "NPConfig.h" + +#if NATIVE_PLUGINS_USES_DEEP_LINK +// callback signatures +typedef bool (*HandleUrlSchemeCallback)(const char* url); +typedef bool (*HandleUniversalLinkCallback)(const char* url); +#endif + +@interface NPUnityAppController : UnityAppController + +#if NATIVE_PLUGINS_USES_DEEP_LINK +// set handlers methods ++ (void)registerUrlSchemeHandler:(HandleUrlSchemeCallback)callback; ++ (void)registerUniversalLinkHandler:(HandleUniversalLinkCallback)callback; + +- (void)initDeepLinkServices; +#endif + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.h.meta new file mode 100644 index 00000000..be6a1964 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.h.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: dbaa49345a0bb4952aa88a1ff50f3929 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.mm new file mode 100644 index 00000000..386483b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.mm @@ -0,0 +1,145 @@ +// +// NPUnityAppController.mm +// Unity-iPhone +// +// Created by Ashwin Kumar on 09/04/20. +// + +#import "NPUnityAppController.h" +#import "NPKit.h" + +#if NATIVE_PLUGINS_USES_DEEP_LINK +static HandleUrlSchemeCallback _handleUrlSchemeCallback = nil; +static HandleUniversalLinkCallback _handleUniversalLinkCallback = nil; +#endif + +@interface NPUnityAppController () + +#if NATIVE_PLUGINS_USES_DEEP_LINK +@property(nonatomic) bool isDeepLinkServiceInitialised; +@property(nonatomic, copy) NSURL* cachedUrlScheme; +@property(nonatomic, copy) NSURL* cachedUniversalLink; +#endif + +@end + +@implementation NPUnityAppController + +#if NATIVE_PLUGINS_USES_DEEP_LINK +@synthesize isDeepLinkServiceInitialised = _isDeepLinkServiceInitialised; +@synthesize cachedUrlScheme = _cachedUrlScheme; +@synthesize cachedUniversalLink = _cachedUniversalLink; +#endif + +#pragma mark - Static methods + +#if NATIVE_PLUGINS_USES_DEEP_LINK ++ (void)registerUrlSchemeHandler:(HandleUrlSchemeCallback)callback; +{ + _handleUrlSchemeCallback = callback; +} + ++ (void)registerUniversalLinkHandler:(HandleUniversalLinkCallback)callback +{ + _handleUniversalLinkCallback = callback; +} + +- (void)initDeepLinkServices +{ + // update status + self.isDeepLinkServiceInitialised = true; + + // dispatch events + if (self.cachedUrlScheme) + { + [self handleUrlScheme:self.cachedUrlScheme]; + self.cachedUrlScheme = nil; + } + if (self.cachedUniversalLink) + { + [self handleUniversalLink:self.cachedUniversalLink]; + self.cachedUniversalLink = nil; + } +} + +- (bool)handleUrlScheme:(NSURL*)url +{ + if (_handleUrlSchemeCallback != nil) + { + return _handleUrlSchemeCallback(NPCreateCStringFromNSString([url absoluteString])); + } + + return false; +} + +- (bool)handleUniversalLink:(NSURL*)url +{ + if (_handleUniversalLinkCallback != nil) + { + return _handleUniversalLinkCallback(NPCreateCStringFromNSString([url absoluteString])); + } + + return false; +} + +- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url options:(NSDictionary *)options +{ + // forward callback to parent class + bool originalResult = false; + if ([super respondsToSelector:@selector(application:openURL:options:)]) + { + originalResult = [super application:application openURL:url options:options]; + } + else if ([super respondsToSelector:@selector(application:openURL:sourceApplication:annotation:)]) + { + NSString* sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey]; + originalResult = [super application:application openURL:url sourceApplication:sourceApplication annotation:[NSDictionary dictionary]]; + } + + // check the availability of the service and process the incoming request + // store the event information for later usage incase if the service is not active + if (self.isDeepLinkServiceInitialised) + { + return [self handleUrlScheme:url]; + } + self.cachedUrlScheme = url; + + return originalResult; +} + +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler +{ + // forward callback to parent class + bool originalResult = false; + if ([super respondsToSelector:@selector(application:continueUserActivity:restorationHandler:)]) + { + originalResult = [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; + } + + // check whether this event is concerned with web activity + if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) + { + NSURL* url = userActivity.webpageURL; + if (url) + { + // check whether the embedded link can be handled by our application + // store the event information for later usage incase if the service is not active + if (self.isDeepLinkServiceInitialised) + { + return [self handleUniversalLink:url]; + } + + self.cachedUniversalLink = url; + } + } + + return originalResult; +} +#endif + +@end + +#if NATIVE_PLUGINS_USES_DEEP_LINK +// inform Unity to use UnityDeeplinksAppController as the main app controller: +IMPL_APP_CONTROLLER_SUBCLASS(NPUnityAppController) +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.mm.meta new file mode 100644 index 00000000..d7c4374a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityAppController.mm.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 8b43456b3fd58411da7aef01d9b2c028 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.h new file mode 100644 index 00000000..525ca99b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.h @@ -0,0 +1,108 @@ +// +// NPUnityDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#include "NPDefines.h" +#include "NPUnityDateComponents.h" + +typedef enum : NSInteger +{ + UIImageEncodeTypePNG, + UIImageEncodeTypeJPEG, +} UIImageEncodeType; + +struct NPUnityCircularRegion +{ + double latitude; + double longitude; + float radius; + NPIntPtr regionIdPtr; +}; +typedef struct NPUnityCircularRegion NPUnityCircularRegion; + +struct NPUnityAttachment +{ + int dataArrayLength; + NPIntPtr dataArrayPtr; + NPIntPtr mimeTypePtr; + NPIntPtr fileNamePtr; +}; +typedef struct NPUnityAttachment NPUnityAttachment; + +struct NPUnityRect +{ + float x; + float y; + float width; + float height; +}; +typedef struct NPUnityRect NPUnityRect; + +struct NPUnityColor +{ + float r; + float g; + float b; + float a; +}; +typedef struct NPUnityColor NPUnityColor; + +struct NPArray +{ + NPIntPtr* ptr; + int length; + + // constructors + NPArray(int length); + ~NPArray(); + + // methods + void setObjectAtIndex(int index, void* obj); +}; +typedef struct NPArray NPArray; + +// For multi dimentional array +struct NPArrayProxy +{ + NPIntPtr* ptr; + int length; +}; +typedef struct NPArrayProxy NPArrayProxy; + +// If allocation is continous use this. +struct NPArrayWrapper +{ + NPIntPtr ptr; + int length; +}; +typedef struct NPArrayWrapper NPArrayWrapper; + + +struct NPError +{ + int code; + NPIntPtr description; +}; +typedef struct NPError NPError; + +struct NPSize +{ + float width; + float height; +}; +typedef struct NPSize NPSize; + +typedef NSString* NPUnityTextEncodingFormat NS_EXTENSIBLE_STRING_ENUM; + +/// Encodes characters using the UTF-8 encoding. (Readonly) +FOUNDATION_EXPORT NPUnityTextEncodingFormat const NPUnityTextEncodingFormatUTF8; + +/// Encodes characters using the UTF-16 encoding. (Readonly) +FOUNDATION_EXPORT NPUnityTextEncodingFormat const NPUnityTextEncodingFormatUTF16; + +/// Encodes characters using the UTF-32 encoding. (Readonly) +FOUNDATION_EXPORT NPUnityTextEncodingFormat const NPUnityTextEncodingFormatUTF32; diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.h.meta new file mode 100644 index 00000000..b2f7f3ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: c31d4b2bdd80c401ebe8fc9523ea61a1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.mm new file mode 100644 index 00000000..3091f08c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.mm @@ -0,0 +1,34 @@ +// +// NPUnityDataTypes.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPUnityDataTypes.h" + +NPUnityTextEncodingFormat const NPUnityTextEncodingFormatUTF8 = @"utf8"; + +/// Encodes characters using the UTF-16 encoding. (Readonly) +NPUnityTextEncodingFormat const NPUnityTextEncodingFormatUTF16 = @"utf16"; + +/// Encodes characters using the UTF-32 encoding. (Readonly) +NPUnityTextEncodingFormat const NPUnityTextEncodingFormatUTF32 = @"utf32"; + + +NPArray::NPArray(int length) +{ + this->length = length; + this->ptr = length > 0 ? (void**)calloc(length, sizeof(void*)) : nil; +} + +NPArray::~NPArray() +{ + free(ptr); +} + +void NPArray::setObjectAtIndex(int index, void* obj) +{ + this->ptr[index] = obj; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.mm.meta new file mode 100644 index 00000000..a7d156d0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDataTypes.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 4acef6bf79cc04dc7a3bba82caeb1850 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.h new file mode 100644 index 00000000..e62343da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.h @@ -0,0 +1,53 @@ +// +// NPUnityDateComponents.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +// custom types +typedef enum : int +{ + CalendarGregorian, + CalendarBuddhist = 1, + CalendarChinese, + CalendarCoptic, + CalendarEthiopicAmeteMihret, + CalendarEthiopicAmeteAlem, + CalendarIso8601, + CalendarHebrew, + CalendarIndian, + CalendarIslamic, + CalendarIslamicCivil, + CalendarJapanese, + CalendarPersian, + CalendarRepublicOfChina, + CalendarIslamicTabular, + CalendarIslamicUmmAlQura, +} Calendar; + +// methods +NSCalendarIdentifier NPGetCalendarIdentifier(Calendar calendar); +Calendar NPGetCalendarEnum(NSCalendarIdentifier identifier); + +struct NPUnityDateComponents +{ + // fields + Calendar calendar; + long year; + long month; + long day; + long hour; + long minute; + long second; + long nanosecond; + long weekday; + long weekOfMonth; + long weekOfYear; + + // methods + void CopyProperties(NSDateComponents* dateComponents); + NSDateComponents* ToNSDateComponents(); +}; +typedef struct NPUnityDateComponents NPUnityDateComponents; diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.h.meta new file mode 100644 index 00000000..1d16ec29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 219d6b45352964a8ea2056d454a085cd +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.mm new file mode 100644 index 00000000..5bda7732 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.mm @@ -0,0 +1,202 @@ +// +// NPUnityDateComponents.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPUnityDateComponents.h" + +NSCalendarIdentifier NPGetCalendarIdentifier(Calendar calendar) +{ + switch (calendar) { + case CalendarBuddhist: + return NSCalendarIdentifierBuddhist; + + case CalendarChinese: + return NSCalendarIdentifierChinese; + + case CalendarCoptic: + return NSCalendarIdentifierCoptic; + + case CalendarEthiopicAmeteAlem: + return NSCalendarIdentifierEthiopicAmeteAlem; + + case CalendarEthiopicAmeteMihret: + return NSCalendarIdentifierEthiopicAmeteMihret; + + case CalendarGregorian: + return NSCalendarIdentifierGregorian; + + case CalendarHebrew: + return NSCalendarIdentifierHebrew; + + case CalendarIndian: + return NSCalendarIdentifierIndian; + + case CalendarIslamic: + return NSCalendarIdentifierIslamic; + + case CalendarIslamicCivil: + return NSCalendarIdentifierIslamicCivil; + + case CalendarIslamicTabular: + return NSCalendarIdentifierIslamicTabular; + + case CalendarIslamicUmmAlQura: + return NSCalendarIdentifierIslamicUmmAlQura; + + case CalendarIso8601: + return NSCalendarIdentifierISO8601; + + case CalendarJapanese: + return NSCalendarIdentifierJapanese; + + case CalendarPersian: + return NSCalendarIdentifierPersian; + + case CalendarRepublicOfChina: + return NSCalendarIdentifierRepublicOfChina; + + default: + break; + } +} + +Calendar NPGetCalendarEnum(NSCalendarIdentifier identifier) +{ + if ([identifier isEqualToString:NSCalendarIdentifierBuddhist]) + { + return CalendarBuddhist; + } + if ([identifier isEqualToString:NSCalendarIdentifierChinese]) + { + return CalendarChinese; + } + if ([identifier isEqualToString:NSCalendarIdentifierCoptic]) + { + return CalendarCoptic; + } + if ([identifier isEqualToString:NSCalendarIdentifierEthiopicAmeteAlem]) + { + return CalendarEthiopicAmeteAlem; + } + if ([identifier isEqualToString:NSCalendarIdentifierEthiopicAmeteMihret]) + { + return CalendarEthiopicAmeteMihret; + } + if ([identifier isEqualToString:NSCalendarIdentifierGregorian]) + { + return CalendarGregorian; + } + if ([identifier isEqualToString:NSCalendarIdentifierHebrew]) + { + return CalendarHebrew; + } + if ([identifier isEqualToString:NSCalendarIdentifierIndian]) + { + return CalendarIndian; + } + if ([identifier isEqualToString:NSCalendarIdentifierIslamic]) + { + return CalendarIslamic; + } + if ([identifier isEqualToString:NSCalendarIdentifierIslamicCivil]) + { + return CalendarIslamicCivil; + } + if ([identifier isEqualToString:NSCalendarIdentifierIslamicTabular]) + { + return CalendarIslamicTabular; + } + if ([identifier isEqualToString:NSCalendarIdentifierIslamicUmmAlQura]) + { + return CalendarIslamicUmmAlQura; + } + if ([identifier isEqualToString:NSCalendarIdentifierISO8601]) + { + return CalendarIso8601; + } + if ([identifier isEqualToString:NSCalendarIdentifierJapanese]) + { + return CalendarJapanese; + } + if ([identifier isEqualToString:NSCalendarIdentifierPersian]) + { + return CalendarPersian; + } + if ([identifier isEqualToString:NSCalendarIdentifierRepublicOfChina]) + { + return CalendarRepublicOfChina; + } + + return (Calendar)0; +} + +void NPUnityDateComponents::CopyProperties(NSDateComponents* dateComponents) +{ + this->calendar = NPGetCalendarEnum([[dateComponents calendar] calendarIdentifier]); + this->year = [dateComponents year]; + this->month = [dateComponents month]; + this->day = [dateComponents day]; + this->hour = [dateComponents hour]; + this->minute = [dateComponents minute]; + this->second = [dateComponents second]; + this->nanosecond = [dateComponents nanosecond]; + this->weekday = [dateComponents weekday] == 1 ? 7 : [dateComponents weekday] - 1; //Converting from 1(SUNDAY) to 7(SATURDAY) => 1(MONDAY) to 7(SUNDAY) + this->weekOfMonth = [dateComponents weekOfMonth]; + this->weekOfYear = [dateComponents weekOfYear]; +} + +NSDateComponents* NPUnityDateComponents::ToNSDateComponents() +{ + NSDateComponents* dateComponents = [[NSDateComponents alloc] init]; + if ((int)calendar != 0) + { + NSCalendar* nsCalendar = [NSCalendar calendarWithIdentifier:NPGetCalendarIdentifier(this->calendar)]; + [dateComponents setCalendar:nsCalendar]; + } + if (this->year != -1) + { + [dateComponents setYear:this->year]; + } + if (this->month != -1) + { + [dateComponents setMonth:this->month]; + } + if (this->day != -1) + { + [dateComponents setDay:this->day]; + } + if (this->hour != -1) + { + [dateComponents setHour:this->hour]; + } + if (this->minute != -1) + { + [dateComponents setMinute:this->minute]; + } + if (this->second != -1) + { + [dateComponents setSecond:this->second]; + } + if (this->nanosecond != -1) + { + [dateComponents setNanosecond:this->nanosecond]; + } + if (this->weekday != -1) + { + [dateComponents setWeekday: (this->weekday == 7) ? 1 : this->weekday + 1]; //Input will be from 1(MONDAY) to 7(SUNDAY) => 1(SUNDAY) to 7(SATURDAY) + } + if (this->weekOfMonth != -1) + { + [dateComponents setWeekOfMonth:this->weekOfMonth]; + } + if (this->weekOfYear != -1) + { + [dateComponents setWeekOfYear:this->weekOfYear]; + } + + return dateComponents; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.mm.meta new file mode 100644 index 00000000..64633353 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUnityDateComponents.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: f5c5940323677482483e2cb8491a103c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.h new file mode 100644 index 00000000..df0bdfd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.h @@ -0,0 +1,13 @@ +// +// NPUtilityBinding.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import + +// callback signatures +typedef void (*LoadImageNativeCallback)(void* dataArrayPtr, int dataLength, void* tagPtr); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.h.meta new file mode 100644 index 00000000..e91a9e2a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.h.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: 3db404738ff284021b9dbdad3253c02c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.mm new file mode 100644 index 00000000..f0722974 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.mm @@ -0,0 +1,78 @@ +// +// NPUtilityBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPUtilityBinding.h" +#import "NPKit.h" + +// static fields +static LoadImageNativeCallback _loadImageCallback = nil; + +#pragma mark - Utility methods + +void LoadTextureData(NSData* imageData, void* tagPtr) +{ + if (imageData) + { + _loadImageCallback((void *)[imageData bytes], (int)[imageData length], tagPtr); + } + else + { + _loadImageCallback(nil, 0, tagPtr); + } +} + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP void NPUtilityRegisterCallbacks(LoadImageNativeCallback loadImageCallback) +{ + // cache + _loadImageCallback = loadImageCallback; +} + +NPBINDING DONTSTRIP void NPUtilityLoadImage(void* nativeDataPtr, void* tagPtr) +{ + NSData* imageData = (__bridge NSData*)nativeDataPtr; + LoadTextureData(imageData, tagPtr); +} + +NPBINDING DONTSTRIP void NPUtilityTakeScreenshot(void* tagPtr) +{ + NSData* imageData = NPCaptureScreenshotAsData(UIImageEncodeTypePNG); + LoadTextureData(imageData, tagPtr); +} + +NPBINDING DONTSTRIP void NPUtilityRetainObject(void* nativePtr) +{ + NPRetain(nativePtr); +} + +NPBINDING DONTSTRIP void NPUtilityReleaseObject(void* nativePtr) +{ + NPRelease(nativePtr); +} + +NPBINDING DONTSTRIP void NPUtilityOpenSettings() +{ + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] + options:@{} + completionHandler:^(BOOL success) { + // done + }]; +} + +NPBINDING DONTSTRIP void NPUtilityFreeCPointerObject(NPIntPtr nativePtr) +{ + free(nativePtr); +} + +NPBINDING DONTSTRIP void NPUtilitySetLastTouchPosition(float posX, float posY) +{ + SetLastTouchPosition(NPConverToNativePosition(posX, posY)); +} + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.mm.meta new file mode 100644 index 00000000..e3989c9e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NPUtilityBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: a93f083e6713d4ee598fe76e08d113ef +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.h new file mode 100644 index 00000000..9d0bd9a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.h @@ -0,0 +1,25 @@ +// +// UIViewController+Presentation.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import + + +#define ErrorWithDomain(domain, code, description) [NSError createWithDomain: domain withCode: code withDescription: description] +#define CreateFromError(error, domain, code) [NSError createFromError: error withDomain: domain withCode: code] + +@interface NSError (Utility) + ++ (NSError*)createWithDomain:(NSString*) domain + withCode:(int) code + withDescription:(NSString*) description; + ++ (NSError*)createFromError:(NSError*) error + withDomain:(NSString*) domain + withCode:(int) code; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.h.meta new file mode 100644 index 00000000..f15798c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.h.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: 233102e263301407dade7bf90c4afd9f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.mm new file mode 100644 index 00000000..d9d27001 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.mm @@ -0,0 +1,36 @@ +// +// UIViewController+Presentation.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NSError+Utility.h" + +@implementation NSError (Utility) + ++ (NSError*)createWithDomain:(NSString*) domain + withCode:(int) code + withDescription:(NSString*) description +{ + NSError* error = [NSError errorWithDomain:domain + code:code + userInfo: @{NSLocalizedDescriptionKey: description}]; + return error; +} + + ++ (id)createFromError:(NSError*) error + withDomain:(NSString*) domain + withCode:(int) code +{ + if(error == nil) + return nil; + + return [self errorWithDomain:domain + code:code + userInfo: @{NSLocalizedDescriptionKey: error.description}]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.mm.meta new file mode 100644 index 00000000..e4dc6487 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NSError+Utility.mm.meta @@ -0,0 +1,85 @@ +fileFormatVersion: 2 +guid: 0ce7faeacf6f44568914f19f8e007dcc +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NativePluginsBaseGroup.asset b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NativePluginsBaseGroup.asset new file mode 100644 index 00000000..0428c24b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NativePluginsBaseGroup.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: 8494aa9edfa214a818449f2dea39a05a, type: 3} + m_Name: NativePluginsBaseGroup + m_EditorClassIdentifier: + m_name: NativePluginsBase + m_usesNestedHeierarchy: 0 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NativePluginsBaseGroup.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NativePluginsBaseGroup.asset.meta new file mode 100644 index 00000000..93923ed7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/NativePluginsBaseGroup.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4702987cd52d14b4c8c5530706e3c833 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.h new file mode 100644 index 00000000..7af37ee7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.h @@ -0,0 +1,16 @@ +// +// UIView+LayoutConstraints.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import + +@interface UIView (LayoutConstraints) + +- (void)removeExistingConstraints; + +@end + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.h.meta new file mode 100644 index 00000000..e2ab5d29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.h.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: 397567c4cc95840b3a5eb33acd7a49be +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.mm new file mode 100644 index 00000000..30f17762 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.mm @@ -0,0 +1,27 @@ +// +// UIView+LayoutConstraints.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "UIView+LayoutConstraints.h" + +@implementation UIView (LayoutConstraints) + +- (void)removeExistingConstraints +{ + __weak UIView* parentView = self.superview; + __weak UIView* view = self; + for (NSLayoutConstraint* constraint in parentView.constraints) + { + if (constraint.firstItem == view) + { + constraint.active = false; + [parentView removeConstraint:constraint]; + } + } +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.mm.meta new file mode 100644 index 00000000..3a343bf7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIView+LayoutConstraints.mm.meta @@ -0,0 +1,115 @@ +fileFormatVersion: 2 +guid: 0760a008559634d1b98d2c80c2351f2b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.h b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.h new file mode 100644 index 00000000..6169486a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.h @@ -0,0 +1,29 @@ +// +// UIViewController+Presentation.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import + +@interface UIViewController (Presentation) + +- (void)presentViewControllerInPopoverStyleIfRequired:(UIViewController*)viewControllerToPresent + withDelegate:(id)delegate + fromPosition:(CGPoint)position + animated:(BOOL)flag + completion:(void (^)())completion; + +- (void)presentViewControllerInPopoverStyleIfRequired:(UIViewController*)viewControllerToPresent + withDelegate:(id)delegate + fromPosition:(CGPoint)position + permittedArrowDirections:(UIPopoverArrowDirection)direction + animated:(BOOL)flag + completion:(void (^)())completion; + +- (void)presentViewControllerInFullScreen: (UIViewController*)viewControllerToPresent + animated: (BOOL)flag + completion: (void (^)())completion; +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.h.meta new file mode 100644 index 00000000..f4f10a7b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 4d321181095c844b48ca4573ce35aad1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.mm b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.mm new file mode 100644 index 00000000..e4473733 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.mm @@ -0,0 +1,78 @@ +// +// UIViewController+Presentation.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "UIViewController+Presentation.h" + +@implementation UIViewController (Presentation) + +- (void)presentViewControllerInPopoverStyleIfRequired:(UIViewController*)viewControllerToPresent + withDelegate:(id)delegate + fromPosition:(CGPoint)position + animated:(BOOL)flag + completion:(void (^)())completion +{ + [self presentViewControllerInPopoverStyleIfRequired:viewControllerToPresent + withDelegate:delegate + fromPosition:position + permittedArrowDirections:0 + animated:flag + completion:completion]; +} + +- (void)presentViewControllerInPopoverStyleIfRequired:(UIViewController*)viewControllerToPresent + withDelegate:(id)delegate + fromPosition:(CGPoint)position + permittedArrowDirections:(UIPopoverArrowDirection)direction + animated:(BOOL)flag + completion:(void (^)())completion +{ + // change presentation style to popover for iPad device + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + { + viewControllerToPresent.modalPresentationStyle = UIModalPresentationPopover; + + UIPopoverPresentationController* popoverPresentationController = viewControllerToPresent.popoverPresentationController; + popoverPresentationController.delegate = delegate; + popoverPresentationController.sourceView = self.view; + popoverPresentationController.sourceRect = CGRectMake(position.x, position.y, 1, 1); + popoverPresentationController.permittedArrowDirections = direction; + } + else + { + [viewControllerToPresent setPresentationSettings]; + } + + if(![viewControllerToPresent isKindOfClass:[UIAlertController class]]) + { + viewControllerToPresent.presentationController.delegate = delegate; + } + + // present specified object + [self presentViewController:viewControllerToPresent animated:flag completion:completion]; +} + +- (void)setPresentationSettings +{ + if (@available(iOS 13.0, *)) { + self.modalPresentationStyle = UIModalPresentationAutomatic; + } else { + // Fallback on earlier versions + self.modalPresentationStyle = UIModalPresentationFullScreen; + } +} + +- (void)presentViewControllerInFullScreen: (UIViewController*)viewControllerToPresent + animated: (BOOL)flag + completion: (void (^)())completion +{ + self.modalPresentationStyle = UIModalPresentationFullScreen; + + // present specified object + [self presentViewController:viewControllerToPresent animated:flag completion:completion]; +} +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.mm.meta new file mode 100644 index 00000000..5d0fd535 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Plugins/iOS/UIViewController+Presentation.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: e90d4d6f4fc974ebd86ce76cb9eeb047 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs.meta new file mode 100644 index 00000000..a7926619 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 88728744e6e5543ea80e4b69bd594444 +folderAsset: yes +timeCreated: 1578145851 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples.meta new file mode 100644 index 00000000..3e6c2748 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 10b7809ee425c4fb68a29d7b7d54c662 +folderAsset: yes +timeCreated: 1547647481 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ActionPanel.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ActionPanel.prefab new file mode 100644 index 00000000..d831c145 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ActionPanel.prefab @@ -0,0 +1,294 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1383244600673324 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224754109732942086} + - component: {fileID: 114458823125844134} + - component: {fileID: 222301520386526820} + - component: {fileID: 114044915492134002} + - component: {fileID: 114483481525253056} + m_Layer: 5 + m_Name: ActionPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224754109732942086 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383244600673324} + 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_Children: + - {fileID: 224291371103355398} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -200, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114458823125844134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383244600673324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 224464102030571442} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 224291371103355398} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &222301520386526820 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383244600673324} + m_CullTransparentMesh: 0 +--- !u!114 &114044915492134002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383244600673324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9245283, g: 0.9201673, b: 0.9201673, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114483481525253056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383244600673324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 0.8 + m_FlexibleHeight: 1 + m_LayoutPriority: 1 +--- !u!1 &1654873636067368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224291371103355398} + - component: {fileID: 114671148024326956} + - component: {fileID: 222696952570705116} + - component: {fileID: 114270695033652748} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224291371103355398 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1654873636067368} + 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_Children: + - {fileID: 224464102030571442} + m_Father: {fileID: 224754109732942086} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &114671148024326956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1654873636067368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &222696952570705116 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1654873636067368} + m_CullTransparentMesh: 0 +--- !u!114 &114270695033652748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1654873636067368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &1843181782701574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224464102030571442} + - component: {fileID: 114983446567434222} + - component: {fileID: 114060847495336644} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224464102030571442 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1843181782701574} + 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_Children: [] + m_Father: {fileID: 224291371103355398} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &114983446567434222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1843181782701574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 50 + m_Right: 50 + m_Top: 30 + m_Bottom: 30 + m_ChildAlignment: 1 + m_Spacing: 15 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114060847495336644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1843181782701574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ActionPanel.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ActionPanel.prefab.meta new file mode 100644 index 00000000..3113357e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ActionPanel.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2e0ca81b3691d4221b2204056b220040 +timeCreated: 1562303402 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/BackButton.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/BackButton.prefab new file mode 100644 index 00000000..52ccb2ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/BackButton.prefab @@ -0,0 +1,233 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1225259909145202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224035219049407068} + - component: {fileID: 222450307957982428} + - component: {fileID: 114385090189785120} + - component: {fileID: 114872307879632310} + - component: {fileID: 114772039989283150} + - component: {fileID: 114284364595003524} + m_Layer: 5 + m_Name: BackButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224035219049407068 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225259909145202} + 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_Children: + - {fileID: 224573545078175188} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222450307957982428 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225259909145202} + m_CullTransparentMesh: 0 +--- !u!114 &114385090189785120 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225259909145202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114872307879632310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225259909145202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114385090189785120} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114772039989283150 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225259909145202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &114284364595003524 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1225259909145202} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: acfc8ba4fff24474a9995469ae741b3c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1410395622577962 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224573545078175188} + - component: {fileID: 222941698648888652} + - component: {fileID: 114766746790446206} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224573545078175188 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1410395622577962} + 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_Children: [] + m_Father: {fileID: 224035219049407068} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222941698648888652 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1410395622577962} + m_CullTransparentMesh: 0 +--- !u!114 &114766746790446206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1410395622577962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 25 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Back diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/BackButton.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/BackButton.prefab.meta new file mode 100644 index 00000000..f49786fd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/BackButton.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 976e185699ff140fdb61f269f556fe93 +timeCreated: 1562303594 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Button.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Button.prefab new file mode 100644 index 00000000..930987bd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Button.prefab @@ -0,0 +1,220 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1430593560333864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224952746328586062} + - component: {fileID: 222390527291107986} + - component: {fileID: 114860196457914472} + - component: {fileID: 114567474638298420} + - component: {fileID: 114464621491982878} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224952746328586062 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1430593560333864} + 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_Children: + - {fileID: 224801287003026676} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -200, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222390527291107986 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1430593560333864} + m_CullTransparentMesh: 0 +--- !u!114 &114860196457914472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1430593560333864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114567474638298420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1430593560333864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114860196457914472} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114464621491982878 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1430593560333864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1831795015738404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224801287003026676} + - component: {fileID: 222102832875962158} + - component: {fileID: 114822244254790652} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224801287003026676 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831795015738404} + 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_Children: [] + m_Father: {fileID: 224952746328586062} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222102832875962158 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831795015738404} + m_CullTransparentMesh: 0 +--- !u!114 &114822244254790652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1831795015738404} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 16 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Button.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Button.prefab.meta new file mode 100644 index 00000000..cdb4eae8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Button.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0ae52c31935f040969ff0c680344702b +timeCreated: 1547647503 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ConsolePanel.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ConsolePanel.prefab new file mode 100644 index 00000000..b3f025f9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ConsolePanel.prefab @@ -0,0 +1,464 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1043365091775690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224230393480343426} + - component: {fileID: 222635698714245778} + - component: {fileID: 114087859162682762} + - component: {fileID: 114761511105016240} + - component: {fileID: 114395380185171680} + m_Layer: 5 + m_Name: ConsolePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224230393480343426 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043365091775690} + 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_Children: + - {fileID: 224217292865860958} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &222635698714245778 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043365091775690} + m_CullTransparentMesh: 0 +--- !u!114 &114087859162682762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043365091775690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114761511105016240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043365091775690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 030d6e213de734b1ab4bfb8f6a416dc9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_text: {fileID: 114082688468709384} + m_textScroller: {fileID: 114305235823970096} +--- !u!114 &114395380185171680 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043365091775690} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 160 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1266210483889168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224217292865860958} + - component: {fileID: 114305235823970096} + - component: {fileID: 222213325961543016} + - component: {fileID: 114092120971635258} + m_Layer: 5 + m_Name: ScrollRect + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224217292865860958 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266210483889168} + 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_Children: + - {fileID: 224369000439747256} + m_Father: {fileID: 224230393480343426} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114305235823970096 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266210483889168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 224164935523170058} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 224369000439747256} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &222213325961543016 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266210483889168} + m_CullTransparentMesh: 0 +--- !u!114 &114092120971635258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1266210483889168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &1308015201791370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224369000439747256} + - component: {fileID: 114346359527998570} + - component: {fileID: 222997546077947360} + - component: {fileID: 114981987312976902} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224369000439747256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1308015201791370} + 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_Children: + - {fileID: 224164935523170058} + m_Father: {fileID: 224217292865860958} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 12.399902, y: -10} + m_SizeDelta: {x: -24.8, y: -17.2} + m_Pivot: {x: 0, y: 1} +--- !u!114 &114346359527998570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1308015201791370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &222997546077947360 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1308015201791370} + m_CullTransparentMesh: 0 +--- !u!114 &114981987312976902 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1308015201791370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &1620636455641208 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224818425575037616} + - component: {fileID: 222113324207946846} + - component: {fileID: 114082688468709384} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224818425575037616 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1620636455641208} + 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_Children: [] + m_Father: {fileID: 224164935523170058} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222113324207946846 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1620636455641208} + m_CullTransparentMesh: 0 +--- !u!114 &114082688468709384 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1620636455641208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Console +--- !u!1 &1739254653831132 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224164935523170058} + - component: {fileID: 114107015515134430} + - component: {fileID: 114351036584141900} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224164935523170058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739254653831132} + 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_Children: + - {fileID: 224818425575037616} + m_Father: {fileID: 224369000439747256} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.09967924} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &114107015515134430 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739254653831132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &114351036584141900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739254653831132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ConsolePanel.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ConsolePanel.prefab.meta new file mode 100644 index 00000000..3acd28eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/ConsolePanel.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 36fd405962f494477b184f84fbd9a337 +timeCreated: 1562303414 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoPanel.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoPanel.prefab new file mode 100644 index 00000000..a2fc637e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoPanel.prefab @@ -0,0 +1,157 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1090748803265720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224871454335544214} + - component: {fileID: 114694957018523678} + m_Layer: 5 + m_Name: DemoPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224871454335544214 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1090748803265720} + 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_Children: + - {fileID: 224353115767227546} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114694957018523678 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1090748803265720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1 &1866383764505280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224353115767227546} + - component: {fileID: 222364469615282034} + - component: {fileID: 114827569583914414} + - component: {fileID: 114137109017026640} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224353115767227546 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866383764505280} + 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_Children: [] + m_Father: {fileID: 224871454335544214} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222364469615282034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866383764505280} + m_CullTransparentMesh: 0 +--- !u!114 &114827569583914414 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866383764505280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114137109017026640 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1866383764505280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoPanel.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoPanel.prefab.meta new file mode 100644 index 00000000..e52b59bd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoPanel.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9cb60866b172b415da39c73dad3999e8 +timeCreated: 1562303428 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoResources.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoResources.prefab new file mode 100644 index 00000000..35906a59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoResources.prefab @@ -0,0 +1,60 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1976543427182744} + m_IsPrefabParent: 1 +--- !u!1 &1976543427182744 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4074120279433260} + - component: {fileID: 114540387559500602} + m_Layer: 0 + m_Name: DemoResources + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4074120279433260 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1976543427182744} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114540387559500602 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1976543427182744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 940266f63b2ee41128e43647609f80f8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_images: + - {fileID: 2800000, guid: 5adf67eb430f548418876cfedad78a9a, type: 3} + m_urls: + - https://www.google.com + m_texts: + - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoResources.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoResources.prefab.meta new file mode 100644 index 00000000..5a5db232 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/DemoResources.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 353a001434f7343b4bd6ea715e28562f +timeCreated: 1563447691 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Dropdown.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Dropdown.prefab new file mode 100644 index 00000000..0f590fe0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Dropdown.prefab @@ -0,0 +1,797 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1023892561578514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224016064779405710} + - component: {fileID: 222005949596316690} + - component: {fileID: 114046355294249188} + - component: {fileID: 114656726428466140} + m_Layer: 5 + m_Name: Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &224016064779405710 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023892561578514} + 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: 224743043863863404} + m_Father: {fileID: 224158029084090604} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 0, y: 120} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &222005949596316690 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023892561578514} + m_CullTransparentMesh: 0 +--- !u!114 &114046355294249188 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023892561578514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114656726428466140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023892561578514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 224318144167479604} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 224743043863863404} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1045175234636876 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224514434835063082} + - component: {fileID: 222463721787903378} + - component: {fileID: 114776005954242994} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224514434835063082 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045175234636876} + 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: 224158029084090604} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7.5, y: -0.5} + m_SizeDelta: {x: -35, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222463721787903378 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045175234636876} + m_CullTransparentMesh: 0 +--- !u!114 &114776005954242994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1045175234636876} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Option A +--- !u!1 &1065878302462128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224743043863863404} + - component: {fileID: 114333908284456814} + - component: {fileID: 222640113378206898} + - component: {fileID: 114089421562210144} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224743043863863404 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065878302462128} + 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: 224318144167479604} + m_Father: {fileID: 224016064779405710} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &114333908284456814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065878302462128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &222640113378206898 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065878302462128} + m_CullTransparentMesh: 0 +--- !u!114 &114089421562210144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065878302462128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1094942323768938 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224685884398706474} + - component: {fileID: 114779507134661336} + m_Layer: 5 + m_Name: Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224685884398706474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094942323768938} + 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: 224767923176248100} + - {fileID: 224132635888509720} + m_Father: {fileID: 224318144167479604} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 40} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &114779507134661336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1094942323768938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.9245283, g: 0.9201673, b: 0.9201673, a: 1} + m_HighlightedColor: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_PressedColor: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_SelectedColor: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114327894200692156} + toggleTransition: 1 + graphic: {fileID: 0} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1193824002270256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224158029084090604} + - component: {fileID: 222997439124120942} + - component: {fileID: 114945614848403610} + - component: {fileID: 114339634453116536} + - component: {fileID: 114435843442480086} + m_Layer: 5 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224158029084090604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193824002270256} + 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: 224514434835063082} + - {fileID: 224808553636828290} + - {fileID: 224016064779405710} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 40} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &222997439124120942 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193824002270256} + m_CullTransparentMesh: 0 +--- !u!114 &114945614848403610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193824002270256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114339634453116536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193824002270256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114945614848403610} + m_Template: {fileID: 224016064779405710} + m_CaptionText: {fileID: 114776005954242994} + m_CaptionImage: {fileID: 0} + m_ItemText: {fileID: 114449367318763852} + m_ItemImage: {fileID: 0} + m_Value: 0 + m_Options: + m_Options: + - m_Text: Option A + m_Image: {fileID: 0} + - m_Text: Option B + m_Image: {fileID: 0} + - m_Text: Option C + m_Image: {fileID: 0} + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_AlphaFadeSpeed: 0.15 +--- !u!114 &114435843442480086 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193824002270256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 160 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1209149006041006 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224767923176248100} + - component: {fileID: 222355603195166402} + - component: {fileID: 114327894200692156} + m_Layer: 5 + m_Name: Item Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224767923176248100 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1209149006041006} + 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: 224685884398706474} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222355603195166402 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1209149006041006} + m_CullTransparentMesh: 0 +--- !u!114 &114327894200692156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1209149006041006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9245283, g: 0.9201673, b: 0.9201673, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1227429266343698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224132635888509720} + - component: {fileID: 222684907768796092} + - component: {fileID: 114449367318763852} + m_Layer: 5 + m_Name: Item Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224132635888509720 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227429266343698} + 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: 224685884398706474} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 5, y: -0.5} + m_SizeDelta: {x: -30, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222684907768796092 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227429266343698} + m_CullTransparentMesh: 0 +--- !u!114 &114449367318763852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227429266343698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Option A +--- !u!1 &1321823248984956 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224808553636828290} + - component: {fileID: 222673429768263828} + - component: {fileID: 114784797724014900} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224808553636828290 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1321823248984956} + 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: 224158029084090604} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -15, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222673429768263828 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1321823248984956} + m_CullTransparentMesh: 0 +--- !u!114 &114784797724014900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1321823248984956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 8452141070dc84588a81dcd4997c35d1, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1577877957623102 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224318144167479604} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224318144167479604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1577877957623102} + 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: 224685884398706474} + m_Father: {fileID: 224743043863863404} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 40} + m_Pivot: {x: 0.5, y: 1} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Dropdown.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Dropdown.prefab.meta new file mode 100644 index 00000000..39ac7efe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Dropdown.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f6d2bd773e6664015bcea0a44da91f8d +timeCreated: 1549355756 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Grid.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Grid.prefab new file mode 100644 index 00000000..dd2ffb52 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Grid.prefab @@ -0,0 +1,70 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1729283381912644} + m_IsPrefabParent: 1 +--- !u!1 &1729283381912644 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224913561361295354} + - component: {fileID: 114442734718446736} + m_Layer: 5 + m_Name: Grid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114442734718446736 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1729283381912644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2095666955, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 320, y: 60} + m_Spacing: {x: 0, y: 0} + m_Constraint: 0 + m_ConstraintCount: 1 +--- !u!224 &224913561361295354 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1729283381912644} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Grid.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Grid.prefab.meta new file mode 100644 index 00000000..442bc287 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Grid.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 49cd706acfe6d466296dddcacc8c1b80 +timeCreated: 1549313181 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Header.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Header.prefab new file mode 100644 index 00000000..42df2dcc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Header.prefab @@ -0,0 +1,177 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1166363502238262 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224101732043339844} + - component: {fileID: 222703062519739966} + - component: {fileID: 114546785299107946} + - component: {fileID: 114731851738737184} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224101732043339844 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1166363502238262} + 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_Children: + - {fileID: 224083689230385278} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &222703062519739966 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1166363502238262} + m_CullTransparentMesh: 0 +--- !u!114 &114546785299107946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1166363502238262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114731851738737184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1166363502238262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 80 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1386125318761082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224083689230385278} + - component: {fileID: 222221176673892098} + - component: {fileID: 114267771407102612} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224083689230385278 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1386125318761082} + 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_Children: [] + m_Father: {fileID: 224101732043339844} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -240, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222221176673892098 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1386125318761082} + m_CullTransparentMesh: 0 +--- !u!114 &114267771407102612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1386125318761082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 14 + m_FontStyle: 1 + m_BestFit: 1 + m_MinSize: 0 + m_MaxSize: 32 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Title diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Header.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Header.prefab.meta new file mode 100644 index 00000000..8c3584b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Header.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 642edd1adfa1d478ebaa2d75fa490d52 +timeCreated: 1562303385 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/InputField.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/InputField.prefab new file mode 100644 index 00000000..bdebfd94 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/InputField.prefab @@ -0,0 +1,322 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1338051371335932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224955589825798102} + - component: {fileID: 222973406624162998} + - component: {fileID: 114155734850734234} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224955589825798102 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338051371335932} + 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_Children: [] + m_Father: {fileID: 224540353099770882} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222973406624162998 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338051371335932} + m_CullTransparentMesh: 0 +--- !u!114 &114155734850734234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338051371335932} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 20 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter text... +--- !u!1 &1526539212069634 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224440253791260236} + - component: {fileID: 222865832714574392} + - component: {fileID: 114270666603452436} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224440253791260236 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1526539212069634} + 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_Children: [] + m_Father: {fileID: 224540353099770882} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222865832714574392 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1526539212069634} + m_CullTransparentMesh: 0 +--- !u!114 &114270666603452436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1526539212069634} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!1 &1537348704010034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224540353099770882} + - component: {fileID: 222996081364213050} + - component: {fileID: 114205020239875918} + - component: {fileID: 114469949788325500} + - component: {fileID: 114163320315824386} + m_Layer: 5 + m_Name: InputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224540353099770882 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537348704010034} + 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_Children: + - {fileID: 224955589825798102} + - {fileID: 224440253791260236} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -85, y: 0} + m_SizeDelta: {x: -170, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222996081364213050 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537348704010034} + m_CullTransparentMesh: 0 +--- !u!114 &114205020239875918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537348704010034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114469949788325500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537348704010034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114205020239875918} + m_TextComponent: {fileID: 114270666603452436} + m_Placeholder: {fileID: 114155734850734234} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &114163320315824386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537348704010034} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 600 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/InputField.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/InputField.prefab.meta new file mode 100644 index 00000000..e28f0c59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/InputField.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0faea64126a0946a2a229dc5c67a892b +timeCreated: 1562303997 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Label.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Label.prefab new file mode 100644 index 00000000..9206e2ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Label.prefab @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1743733418358568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224181412554927584} + - component: {fileID: 222817667157265376} + - component: {fileID: 114304789178456594} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224181412554927584 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743733418358568} + 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_Children: [] + m_Father: {fileID: 224880110391763244} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 20, y: 0} + m_SizeDelta: {x: -40, y: -10} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &222817667157265376 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743733418358568} + m_CullTransparentMesh: 0 +--- !u!114 &114304789178456594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743733418358568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5647059, g: 0.5647059, b: 0.5647059, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Label +--- !u!1 &1745382843081832 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224880110391763244} + - component: {fileID: 114640770555796246} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224880110391763244 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745382843081832} + 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_Children: + - {fileID: 224181412554927584} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &114640770555796246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745382843081832} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Label.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Label.prefab.meta new file mode 100644 index 00000000..1d1ac77e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Label.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a5f545e2922b4f979c3a40c7ea220ce +timeCreated: 1562229135 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row (Horizontal).prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row (Horizontal).prefab new file mode 100644 index 00000000..f038bce4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row (Horizontal).prefab @@ -0,0 +1,105 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1729283381912644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224913561361295354} + - component: {fileID: 114484300395288958} + - component: {fileID: -9146562865070377635} + - component: {fileID: -9061008655249065994} + m_Layer: 5 + m_Name: Row (Horizontal) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224913561361295354 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1729283381912644} + 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_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114484300395288958 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1729283381912644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!222 &-9146562865070377635 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1729283381912644} + m_CullTransparentMesh: 1 +--- !u!114 &-9061008655249065994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1729283381912644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.09411765} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row (Horizontal).prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row (Horizontal).prefab.meta new file mode 100644 index 00000000..673f7b7c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row (Horizontal).prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c3f90658978844a229ed44d672b70a93 +timeCreated: 1549313181 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row.prefab new file mode 100644 index 00000000..4999fd44 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row.prefab @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1729283381912644} + m_IsPrefabParent: 1 +--- !u!1 &1729283381912644 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224913561361295354} + m_Layer: 5 + m_Name: Row + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224913561361295354 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1729283381912644} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row.prefab.meta new file mode 100644 index 00000000..31a4217e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Row.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 53106115b89de4cc6a667adc369f97b8 +timeCreated: 1549313181 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Section.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Section.prefab new file mode 100644 index 00000000..0e8cdbee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Section.prefab @@ -0,0 +1,198 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1105364963865442 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224563612419213160} + - component: {fileID: 222647657039145556} + - component: {fileID: 114553031757334108} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224563612419213160 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105364963865442} + 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_Children: [] + m_Father: {fileID: 224150235456743208} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 20, y: 0} + m_SizeDelta: {x: -40, y: -10} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &222647657039145556 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105364963865442} + m_CullTransparentMesh: 0 +--- !u!114 &114553031757334108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1105364963865442} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5647059, g: 0.5647059, b: 0.5647059, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Section +--- !u!1 &1370956973664342 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224804570984248434} + - component: {fileID: 114946616376835068} + m_Layer: 5 + m_Name: Section + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224804570984248434 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1370956973664342} + 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_Children: + - {fileID: 224150235456743208} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114946616376835068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1370956973664342} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 4 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1 &1786111478595968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224150235456743208} + - component: {fileID: 114483417859780178} + m_Layer: 5 + m_Name: SubTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224150235456743208 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1786111478595968} + 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_Children: + - {fileID: 224563612419213160} + m_Father: {fileID: 224804570984248434} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &114483417859780178 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1786111478595968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Section.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Section.prefab.meta new file mode 100644 index 00000000..618f3bd3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Section.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d7ff5e20ef7484e159eb8894a8465de0 +timeCreated: 1562305585 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SelectableButton.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SelectableButton.prefab new file mode 100644 index 00000000..6f6fdcb3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SelectableButton.prefab @@ -0,0 +1,299 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1457602808629010 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224468145109842630} + - component: {fileID: 222278369463802492} + - component: {fileID: 114843381117437088} + m_Layer: 5 + m_Name: Checked + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224468145109842630 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1457602808629010} + 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_Children: [] + m_Father: {fileID: 224246396564361528} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222278369463802492 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1457602808629010} + m_CullTransparentMesh: 0 +--- !u!114 &114843381117437088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1457602808629010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &1590734985891500 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224734417071291362} + - component: {fileID: 222698511777421920} + - component: {fileID: 114019987726141092} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224734417071291362 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590734985891500} + 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_Children: [] + m_Father: {fileID: 224246396564361528} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222698511777421920 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590734985891500} + m_CullTransparentMesh: 0 +--- !u!114 &114019987726141092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590734985891500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 16 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!1 &1791280990977722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224246396564361528} + - component: {fileID: 222731597850991564} + - component: {fileID: 114688525463478710} + - component: {fileID: 114017956030511436} + - component: {fileID: 114280077302381444} + m_Layer: 5 + m_Name: SelectableButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224246396564361528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791280990977722} + 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_Children: + - {fileID: 224468145109842630} + - {fileID: 224734417071291362} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222731597850991564 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791280990977722} + m_CullTransparentMesh: 0 +--- !u!114 &114688525463478710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791280990977722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9245283, g: 0.9201673, b: 0.9201673, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &114017956030511436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791280990977722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114688525463478710} + toggleTransition: 1 + graphic: {fileID: 114843381117437088} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IsOn: 0 +--- !u!114 &114280077302381444 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791280990977722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SelectableButton.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SelectableButton.prefab.meta new file mode 100644 index 00000000..22196ee7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SelectableButton.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b705253d9d4224c17a4157333f3226b6 +timeCreated: 1562305190 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubHeader.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubHeader.prefab new file mode 100644 index 00000000..f4a48bb2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubHeader.prefab @@ -0,0 +1,156 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1616264777658218 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224112343938402096} + - component: {fileID: 222848848218035406} + - component: {fileID: 114236370472595554} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224112343938402096 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616264777658218} + 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_Children: [] + m_Father: {fileID: 224104657789406318} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222848848218035406 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616264777658218} + m_CullTransparentMesh: 0 +--- !u!114 &114236370472595554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616264777658218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 0 + m_MaxSize: 20 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Mail Composer +--- !u!1 &1762802492619682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224104657789406318} + - component: {fileID: 222994696516698790} + - component: {fileID: 114476633020109748} + m_Layer: 5 + m_Name: SubHeader + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224104657789406318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1762802492619682} + 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_Children: + - {fileID: 224112343938402096} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222994696516698790 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1762802492619682} + m_CullTransparentMesh: 0 +--- !u!114 &114476633020109748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1762802492619682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.672} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubHeader.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubHeader.prefab.meta new file mode 100644 index 00000000..e05334f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubHeader.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d436a6bd3c43c4064bb5b0487f71ecda +timeCreated: 1547647566 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubTitle.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubTitle.prefab new file mode 100644 index 00000000..40ab1c61 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubTitle.prefab @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1743733418358568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224181412554927584} + - component: {fileID: 222817667157265376} + - component: {fileID: 114304789178456594} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224181412554927584 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743733418358568} + 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_Children: [] + m_Father: {fileID: 224880110391763244} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 20, y: 0} + m_SizeDelta: {x: -40, y: -10} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &222817667157265376 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743733418358568} + m_CullTransparentMesh: 0 +--- !u!114 &114304789178456594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1743733418358568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5647059, g: 0.5647059, b: 0.5647059, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 24 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Label +--- !u!1 &1745382843081832 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224880110391763244} + - component: {fileID: 114640770555796246} + m_Layer: 5 + m_Name: SubTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224880110391763244 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745382843081832} + 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_Children: + - {fileID: 224181412554927584} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &114640770555796246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1745382843081832} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 60 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubTitle.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubTitle.prefab.meta new file mode 100644 index 00000000..df69bf81 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/SubTitle.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8c0a1d0702e8d4c60b5f7cfd69c54073 +timeCreated: 1562229135 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Toggle.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Toggle.prefab new file mode 100644 index 00000000..f2a8bd2a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Toggle.prefab @@ -0,0 +1,383 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1115347289783676 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224026794194396316} + - component: {fileID: 222428208889105814} + - component: {fileID: 114606141039276814} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224026794194396316 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115347289783676} + 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: 224863752380380678} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222428208889105814 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115347289783676} + m_CullTransparentMesh: 0 +--- !u!114 &114606141039276814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1115347289783676} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1436292188102720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224863752380380678} + - component: {fileID: 222784111643753116} + - component: {fileID: 114012976300579226} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224863752380380678 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1436292188102720} + 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: 224026794194396316} + m_Father: {fileID: 224973839754196500} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222784111643753116 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1436292188102720} + m_CullTransparentMesh: 0 +--- !u!114 &114012976300579226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1436292188102720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1847481865867428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224973839754196500} + - component: {fileID: 114691862735848880} + - component: {fileID: 114597546877301324} + - component: {fileID: 1056081746664844487} + - component: {fileID: 6641174690089426959} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224973839754196500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847481865867428} + 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: 224863752380380678} + - {fileID: 224207624468828976} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114691862735848880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847481865867428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114012976300579226} + toggleTransition: 1 + graphic: {fileID: 114606141039276814} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!114 &114597546877301324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847481865867428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: 120 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &1056081746664844487 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847481865867428} + m_CullTransparentMesh: 1 +--- !u!114 &6641174690089426959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847481865867428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.09411765} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1967550993301098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224207624468828976} + - component: {fileID: 222843106342474602} + - component: {fileID: 114818449290004172} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224207624468828976 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1967550993301098} + 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: 224973839754196500} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 24} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &222843106342474602 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1967550993301098} + m_CullTransparentMesh: 0 +--- !u!114 &114818449290004172 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1967550993301098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Label diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Toggle.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Toggle.prefab.meta new file mode 100644 index 00000000..b35547c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/Examples/Toggle.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a71d99f82f5cb4d7e8703e58527ed9bd +timeCreated: 1549313487 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIAlertDialog.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIAlertDialog.prefab new file mode 100644 index 00000000..6435e6f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIAlertDialog.prefab @@ -0,0 +1,787 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1212668156388774} + m_IsPrefabParent: 1 +--- !u!1 &1134199821205146 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224026503092109950} + - component: {fileID: 222798798132884822} + - component: {fileID: 114264837080710380} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1212668156388774 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224961064885394582} + - component: {fileID: 222855421965438568} + - component: {fileID: 114719650402599042} + m_Layer: 5 + m_Name: UnityUIAlertDialog + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1444912029132066 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224890410505311336} + - component: {fileID: 222871979494986796} + - component: {fileID: 114437939104182950} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1491521136401092 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224993442107416342} + - component: {fileID: 222660402211604342} + - component: {fileID: 114426906830461430} + - component: {fileID: 114633366171141876} + m_Layer: 5 + m_Name: Ok + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1578316838075366 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224427291746790018} + - component: {fileID: 222290285530892906} + - component: {fileID: 114340610768889040} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1795177363468906 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224614295017793080} + - component: {fileID: 222313725694417170} + - component: {fileID: 114283677234356648} + - component: {fileID: 114847601616134896} + m_Layer: 5 + m_Name: Cancel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1858732617179576 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224624371019735436} + - component: {fileID: 114583720595074066} + m_Layer: 5 + m_Name: ButtonGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1888375275847344 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224498473314747022} + - component: {fileID: 222655936121240924} + - component: {fileID: 114508959082617160} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1893706790752728 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224731969598681650} + - component: {fileID: 222079337800444530} + - component: {fileID: 114661597482121632} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1910709274486492 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224478732637988690} + - component: {fileID: 222591068814091094} + - component: {fileID: 114047670138849628} + m_Layer: 5 + m_Name: Message + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114047670138849628 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1910709274486492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Message +--- !u!114 &114264837080710380 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1134199821205146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!114 &114283677234356648 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1795177363468906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.5647059} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114340610768889040 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1578316838075366} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.566} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114426906830461430 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1491521136401092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.5647059} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114437939104182950 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1444912029132066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Title +--- !u!114 &114508959082617160 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1888375275847344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Button +--- !u!114 &114583720595074066 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1858732617179576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 20 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 +--- !u!114 &114633366171141876 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1491521136401092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} + m_PressedColor: {r: 1, g: 1, b: 1, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114426906830461430} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114661597482121632 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1893706790752728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.17647058, g: 0.17647058, b: 0.17647058, a: 0.478} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114719650402599042 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1212668156388774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4392aa7fb54714d2786e9582d0601cae, type: 3} + m_Name: + m_EditorClassIdentifier: + m_title: {fileID: 114437939104182950} + m_message: {fileID: 114047670138849628} + m_buttons: + - {fileID: 114633366171141876} + - {fileID: 114847601616134896} +--- !u!114 &114847601616134896 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1795177363468906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} + m_PressedColor: {r: 1, g: 1, b: 1, a: 1} + m_DisabledColor: {r: 1, g: 1, b: 1, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114283677234356648} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &222079337800444530 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1893706790752728} +--- !u!222 &222290285530892906 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1578316838075366} +--- !u!222 &222313725694417170 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1795177363468906} +--- !u!222 &222591068814091094 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1910709274486492} +--- !u!222 &222655936121240924 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1888375275847344} +--- !u!222 &222660402211604342 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1491521136401092} +--- !u!222 &222798798132884822 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1134199821205146} +--- !u!222 &222855421965438568 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1212668156388774} +--- !u!222 &222871979494986796 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1444912029132066} +--- !u!224 &224026503092109950 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1134199821205146} + 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_Children: [] + m_Father: {fileID: 224614295017793080} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224427291746790018 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1578316838075366} + 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_Children: + - {fileID: 224890410505311336} + - {fileID: 224478732637988690} + - {fileID: 224624371019735436} + m_Father: {fileID: 224961064885394582} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 640, y: 400} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224478732637988690 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1910709274486492} + 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_Children: [] + m_Father: {fileID: 224427291746790018} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 10} + m_SizeDelta: {x: -80, y: 120} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224498473314747022 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1888375275847344} + 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_Children: [] + m_Father: {fileID: 224993442107416342} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224614295017793080 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1795177363468906} + 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_Children: + - {fileID: 224026503092109950} + m_Father: {fileID: 224624371019735436} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 197, y: 58} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224624371019735436 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1858732617179576} + 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_Children: + - {fileID: 224614295017793080} + - {fileID: 224993442107416342} + m_Father: {fileID: 224427291746790018} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: -110} + m_SizeDelta: {x: 0, y: 58} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224731969598681650 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1893706790752728} + 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_Children: [] + m_Father: {fileID: 224961064885394582} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224890410505311336 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1444912029132066} + 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_Children: [] + m_Father: {fileID: 224427291746790018} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 112} + m_SizeDelta: {x: -80, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224961064885394582 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1212668156388774} + 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_Children: + - {fileID: 224731969598681650} + - {fileID: 224427291746790018} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224993442107416342 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1491521136401092} + 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_Children: + - {fileID: 224498473314747022} + m_Father: {fileID: 224624371019735436} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 197, y: 58} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIAlertDialog.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIAlertDialog.prefab.meta new file mode 100644 index 00000000..6476f0a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIAlertDialog.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0bea496bdcd2d41ebb1104db0fd905dc +timeCreated: 1547476928 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIRenderer.prefab b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIRenderer.prefab new file mode 100644 index 00000000..e07d751b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIRenderer.prefab @@ -0,0 +1,114 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1338797265575942 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224957196374820768} + - component: {fileID: 223815083016734448} + - component: {fileID: 114202664212081364} + - component: {fileID: 114813343446744758} + - component: {fileID: 114882653979984282} + m_Layer: 5 + m_Name: UnityUIRenderer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224957196374820768 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338797265575942} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &223815083016734448 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338797265575942} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 1000 + m_TargetDisplay: 0 +--- !u!114 &114202664212081364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338797265575942} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &114813343446744758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338797265575942} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &114882653979984282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1338797265575942} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aac1689022e104e26a05af7729a092ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_displayOrder: 0 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIRenderer.prefab.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIRenderer.prefab.meta new file mode 100644 index 00000000..cbf6d974 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Prefabs/UnityUIRenderer.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b8b2730da8ec14db686316d122a0939e +timeCreated: 1547474282 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/README.md b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/README.md new file mode 100644 index 00000000..39af52c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/README.md @@ -0,0 +1,29 @@ +# README # + +This README would normally document whatever steps are necessary to get your application up and running. + +### What is this repository for? ### + +* Quick summary +* Version +* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo) + +### How do I get set up? ### + +* Summary of set up +* Configuration +* Dependencies +* Database configuration +* How to run tests +* Deployment instructions + +### Contribution guidelines ### + +* Writing tests +* Code review +* Other guidelines + +### Who do I talk to? ### + +* Repo owner or admin +* Other community or team contact \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/README.md.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/README.md.meta new file mode 100644 index 00000000..9524bbe6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6821e77581cba42709aed902773c2d92 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime.meta new file mode 100644 index 00000000..2ce32d83 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2c5f40ac65e5b44a8bb645fccb961a15 +folderAsset: yes +timeCreated: 1576064798 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary.meta new file mode 100644 index 00000000..50b62dca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea5576c413096416d93b2ec8c0c7fa2b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AssemblyInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AssemblyInfo.cs new file mode 100644 index 00000000..c3e080cc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AssemblyInfo.cs @@ -0,0 +1,25 @@ +using System.Runtime.CompilerServices; + +// make it visible for internal modules +[assembly: InternalsVisibleTo("VoxelBusters.CoreLibrary.NativePlugins")] +[assembly: InternalsVisibleTo("VoxelBusters.CoreLibrary.Editor")] +[assembly: InternalsVisibleTo("VoxelBusters.CoreLibrary.Editor.NativePlugins")] + +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.Editor")] + +[assembly: InternalsVisibleTo("VoxelBusters.ScreenRecorderKit")] +[assembly: InternalsVisibleTo("VoxelBusters.ScreenRecorderKit.Editor")] + +[assembly: InternalsVisibleTo("VoxelBusters.ReportingKit")] +[assembly: InternalsVisibleTo("VoxelBusters.ReportingKit.Editor")] + +[assembly: InternalsVisibleTo("VoxelBusters.EasyMLKit")] +[assembly: InternalsVisibleTo("VoxelBusters.EasyMLKit.Editor")] + +[assembly: InternalsVisibleTo("VoxelBusters.SocialKit")] +[assembly: InternalsVisibleTo("VoxelBusters.SocialKit.Editor")] + +// AdsKit +[assembly: InternalsVisibleTo("VoxelBusters.AdsKit")] +[assembly: InternalsVisibleTo("VoxelBusters.AdsKit.Editor")] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AssemblyInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AssemblyInfo.cs.meta new file mode 100644 index 00000000..91700f6b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f5661c7f11324611b509f9f0aada138 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations.meta new file mode 100644 index 00000000..44f98690 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f239ec3dc7484d988ea6c2d5e639796 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperation.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperation.cs new file mode 100644 index 00000000..5d3d8dd1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperation.cs @@ -0,0 +1,217 @@ +using System.Collections; + +namespace VoxelBusters.CoreLibrary +{ + [IncludeInDocs] + public abstract class AsyncOperation : IAsyncOperation, IAsyncOperation, IAsyncOperationUpdateHandler + { + #region Events + + private event Callback OnProgressTypeless; + + private event Callback OnCompleteTypeless; + + #endregion + + #region Constructors + + protected AsyncOperation() + { + // Set initial values + Status = AsyncOperationStatus.NotStarted; + IsDone = false; + Error = null; + OnComplete = null; + } + + #endregion + + #region Public methods + + public void Start() + { + // Check whether operation is already started + if (!IsCurrentStatus(AsyncOperationStatus.NotStarted)) + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, "The requested operation could not be started."); + return; + } + + SetStarted(); + } + + public void Abort() + { + // Check whether operation is already completed + if (!IsCurrentStatus(AsyncOperationStatus.InProgress)) + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, "The requested operation could not be cancelled."); + return; + } + + OnAbort(); + SetIsCompleted(error: new Error("Async operation was cancelled!")); + } + + #endregion + + #region Private methods + + private bool IsCurrentStatus(AsyncOperationStatus status) + { + return (Status == status); + } + + private void SetStarted() + { + // Update instance state + Status = AsyncOperationStatus.InProgress; + + // Register instance to the scheduler + AsyncOperationManager.ScheduleUpdate(this); + + // Send state specific message + OnStart(); + } + + protected virtual void SetIsCompleted(T result = default(T)) + { + SetIsCompletedInternal( + result: result, + error: null, + status: AsyncOperationStatus.Succeeded); + } + + protected virtual void SetIsCompleted(Error error) + { + Assert.IsArgNotNull(error, nameof(error)); + + SetIsCompletedInternal( + result: default(T), + error: error, + status: AsyncOperationStatus.Failed); + } + + private void SetIsCompletedInternal(T result, Error error, AsyncOperationStatus status) + { + // Check whether status can be updated + if (!IsCurrentStatus(AsyncOperationStatus.InProgress)) + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, "The requested operation could not be marked as completed."); + return; + } + + // Unregister object from scheduler + AsyncOperationManager.UnscheduleUpdate(this); + + // Update instance state + IsDone = true; + Result = result; + Error = error; + Status = status; + + // Send state specific message + OnEnd(); + + SendCompleteEvent(); + } + + private void SendProgressEvent() + { + OnProgressTypeless?.Invoke(this); + OnProgress?.Invoke(this); + } + + private void SendCompleteEvent() + { + OnCompleteTypeless?.Invoke(this); + OnComplete?.Invoke(this); + } + + #endregion + + #region State messages + + protected virtual void OnStart() + { } + + protected virtual void OnUpdate() + { } + + protected virtual void OnEnd() + { } + + protected virtual void OnAbort() + { } + + #endregion + + #region IAsyncOperation implementation + + public AsyncOperationStatus Status { get; private set; } + + public bool IsDone { get; private set; } + + object IAsyncOperation.Result => Result; + + public Error Error { get; private set; } + + public float Progress { get; protected set; } + + event Callback IAsyncOperation.OnProgress + { + add { OnProgressTypeless += value; } + remove { OnProgressTypeless -= value; } + } + + event Callback IAsyncOperation.OnComplete + { + add { OnCompleteTypeless += value; } + remove { OnCompleteTypeless -= value; } + } + + public T Result { get; private set; } + + public event Callback> OnProgress; + + public event Callback> OnComplete; + + object IEnumerator.Current => null; + + bool IEnumerator.MoveNext() + { + if (IsCurrentStatus(AsyncOperationStatus.NotStarted)) + { + SetStarted(); + } + + return !IsDone; + } + + public virtual void Reset() + { + // Reset properties + Status = AsyncOperationStatus.NotStarted; + IsDone = false; + Error = null; + Progress = 0f; + } + + #endregion + + #region IAsyncOperationUpdateHandler implemetation + + void IAsyncOperationUpdateHandler.Update() + { + // Execute start method instructions when operation begins + if (IsCurrentStatus(AsyncOperationStatus.InProgress)) + { + OnUpdate(); + SendProgressEvent(); + return; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperation.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperation.cs.meta new file mode 100644 index 00000000..8b652341 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c54782cb90eb43a2a52fb6c1f232928 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationHandle.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationHandle.cs new file mode 100644 index 00000000..c3a8f951 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationHandle.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class AsyncOperationHandle : IAsyncOperationHandle, IEquatable> + { + #region Events + + private event Callback OnProgressTypeless; + + private event Callback OnCompleteTypeless; + + #endregion + + #region IAsyncOperationHandle implementation + + public IAsyncOperation InternalOp { get; private set; } + + public AsyncOperationStatus Status => InternalOp.Status; + + public bool IsDone => InternalOp.IsDone; + + public float Progress => InternalOp.Progress; + + object IAsyncOperationHandle.Result => Result; + + public Error Error => InternalOp.Error; + + public T Result => InternalOp.Result; + + event Callback IAsyncOperationHandle.OnProgress + { + add { OnProgressTypeless += value; } + remove { OnProgressTypeless -= value; } + } + + event Callback IAsyncOperationHandle.OnComplete + { + add { OnCompleteTypeless += value; } + remove { OnCompleteTypeless -= value; } + } + + public event Callback> OnProgress; + + public event Callback> OnComplete; + + #endregion + + #region Constructors + + public AsyncOperationHandle(IAsyncOperation op) + { + Assert.IsArgNotNull(op, nameof(op)); + + // Set properties + InternalOp = op; + OnProgress = null; + OnComplete = null; + RegisterForCallbacks(); + + // Manually invoke the events incase if the operation is already completed + if (op.IsDone) + { + SurrogateCoroutine.WaitForEndOfFrameAndInvoke(action: () => + { + HandleOnProgress(op); + HandleOnComplete(op); + }); + } + } + + #endregion + + #region Private methods + + private void RegisterForCallbacks() + { + if (InternalOp == null) return; + + InternalOp.OnProgress += HandleOnProgress; + InternalOp.OnComplete += HandleOnComplete; + } + + private void UnregisterCallbacks() + { + if (InternalOp == null) return; + + InternalOp.OnProgress -= HandleOnProgress; + InternalOp.OnComplete -= HandleOnComplete; + } + + #endregion + + #region Event handler methods + + private void HandleOnProgress(IAsyncOperation asyncOperation) + { + // Forward event callback + OnProgressTypeless?.Invoke(this); + OnProgress?.Invoke(this); + } + + private void HandleOnComplete(IAsyncOperation asyncOperation) + { + // Forward event callback + OnCompleteTypeless?.Invoke(this); + OnComplete?.Invoke(this); + + UnregisterCallbacks(); + } + + #endregion + + #region IEnumerator implementation + + public object Current => null; + + public bool MoveNext() => !InternalOp.IsDone; + + public void Reset() => InternalOp?.Reset(); + + #endregion + + #region IEquatable implemetation + + public bool Equals(AsyncOperationHandle other) + { + if ((other == null) || (other.InternalOp == null)) return false; + + if (InternalOp == null) return false; + + return (InternalOp == other.InternalOp); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationHandle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationHandle.cs.meta new file mode 100644 index 00000000..2cdb123b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e04d669bab9834f0480f59e447829367 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationManager.cs new file mode 100644 index 00000000..b322b5b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationManager.cs @@ -0,0 +1,74 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + internal static class AsyncOperationManager + { + #region Properties + + [ClearOnReload] + private static List s_targets; + + #endregion + + #region Static methods + + public static void ScheduleUpdate(IAsyncOperationUpdateHandler target) + { + Assert.IsArgNotNull(target, nameof(target)); + + EnsureInitialised(); + + s_targets.Add(target); + } + + public static void UnscheduleUpdate(IAsyncOperationUpdateHandler target) + { + Assert.IsArgNotNull(target, nameof(target)); + + EnsureInitialised(); + + s_targets.Remove(target); + } + + #endregion + + #region Unity methods + + private static void Update() + { + UpdateTargets(); + } + + #endregion + + #region Private methods + + private static void EnsureInitialised() + { + if (s_targets != null) return; + + // Set properties + s_targets = new List(8); + + // Register for callbacks + Scheduler.Update += Update; + } + + private static void UpdateTargets() + { + for (int iter = 0; iter < s_targets.Count; iter++) + { + var target = s_targets[iter]; + if (target != null) + { + target.Update(); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationManager.cs.meta new file mode 100644 index 00000000..59b92005 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56f544199d23646cfb42341c091f51f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationResultContainer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationResultContainer.cs new file mode 100644 index 00000000..e5d13078 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationResultContainer.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class AsyncOperationResultContainer : IAsyncOperationResultContainer, IAsyncOperationResultContainer where TError : Error + { + #region Fields + + private TData m_data; + + private TError m_error; + + #endregion + + #region Constructors + + public AsyncOperationResultContainer() + { + // set properties + m_data = default(TData); + m_error = default(TError); + } + + #endregion + + #region Setter methods + + protected void SetDataInternal(TData data) + { + // set value + m_data = data; + } + + protected void SetErrorInternal(TError error) + { + // set value + m_error = error; + } + + #endregion + + #region IAsyncOperationResultContainer implementation + + public bool IsError() + { + return (m_error != null); + } + + public string GetErrorDescription() + { + return IsError() ? m_error.Description : null; + } + + Error IAsyncOperationResultContainer.GetError() + { + return GetError(); + } + + object IAsyncOperationResultContainer.GetData() + { + return GetData(); + } + + public string GetDataAsText() + { + throw new NotSupportedException(); + } + + #endregion + + #region Generic IAsyncOperationResultContainer implementation + + public TError GetError() + { + return m_error; + } + + public TData GetData() + { + return m_data; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationResultContainer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationResultContainer.cs.meta new file mode 100644 index 00000000..7a5c6679 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationResultContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b5efd7c0165f481794514c551a99183 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationStatus.cs new file mode 100644 index 00000000..881b2b9c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationStatus.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public enum AsyncOperationStatus + { + NotStarted = 0, + + InProgress, + + Succeeded, + + Failed, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationStatus.cs.meta new file mode 100644 index 00000000..f0782fe9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/AsyncOperationStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 787d2e2a95b20456dace21f5c4a6a125 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/ChainedOperation.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/ChainedOperation.cs new file mode 100644 index 00000000..988ef31d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/ChainedOperation.cs @@ -0,0 +1,148 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class ChainedOperation : AsyncOperation + { + #region Fields + + private int m_operationCount; + + private bool m_abortOnError; + + private IAsyncOperation m_activeOperation; + + private int m_activeOperationIndex; + + #endregion + + #region Properties + + public IAsyncOperation[] Operations { get; private set; } + + #endregion + + #region Constructors + + public ChainedOperation(bool abortOnError = false, params IAsyncOperation[] operations) + { + Assert.IsArgNotNull(operations, nameof(operations)); + + int count = operations.Length; + Assert.IsNotZero(count, "Array is empty."); + + // set properties + Operations = operations; + m_operationCount = count; + m_abortOnError = abortOnError; + m_activeOperationIndex = -1; + } + + #endregion + + #region Base class methods + + public override void Reset() + { + base.Reset(); + + // reset properties + for (int iter = 0; iter < m_operationCount; iter++) + { + Operations[iter].Reset(); + } + m_activeOperation = null; + m_activeOperationIndex = -1; + } + + protected override void OnStart() + { + base.OnStart(); + + // start first operation + StartOperation(index: 0); + } + + protected override void OnUpdate() + { + base.OnUpdate(); + + // check whether current operation is completed + if (m_activeOperation == null) + { + SetIsCompleted(error: new Error("Unknown error!")); + return; + } + + if (m_activeOperation.IsDone) + { + if (m_abortOnError && (m_activeOperation.Status == AsyncOperationStatus.Failed)) + { + SetIsCompleted(error: m_activeOperation.Error); + return; + } + // proceed to the next operation + if (!StartOperation(index: (m_activeOperationIndex + 1))) + { + SetIsCompleted(result: null); + return; + } + } + else + { + UpdateProgress(); + } + } + + protected override void SetIsCompleted(object result) + { + // set final progress value + Progress = 1f; + + base.SetIsCompleted(result); + } + + protected override void SetIsCompleted(Error error) + { + // set final progress value + Progress = 0f; + + base.SetIsCompleted(error); + } + + #endregion + + #region Private methods + + private bool StartOperation(int index) + { + if (index < m_operationCount) + { + m_activeOperation = Operations[index]; + m_activeOperationIndex = index; + m_activeOperation.Start(); + + return true; + } + + return false; + } + + private void UpdateProgress() + { + // find cumulative progress + float progress = 0f; + for (int iter = 0; iter < m_operationCount; iter++) + { + progress += Operations[iter].Progress; + } + + // set normalized value + Progress = (progress / m_operationCount); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/ChainedOperation.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/ChainedOperation.cs.meta new file mode 100644 index 00000000..c19295be --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/ChainedOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d368eed805b7a4000a07da8f5dc6f061 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/GroupOperation.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/GroupOperation.cs new file mode 100644 index 00000000..65c2b313 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/GroupOperation.cs @@ -0,0 +1,161 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class GroupOperation : AsyncOperation + { + #region Fields + + private int m_operationCount; + + private bool m_abortOnError; + + #endregion + + #region Properties + + public IAsyncOperation[] Operations { get; private set; } + + #endregion + + #region Constructors + + public GroupOperation(bool abortOnError = false, params IAsyncOperation[] operations) + { + Assert.IsArgNotNull(operations, nameof(operations)); + + int count = operations.Length; + Assert.IsNotZero(count, "Array is empty."); + + // set properties + Operations = operations; + m_operationCount = count; + m_abortOnError = abortOnError; + } + + #endregion + + #region Base class methods + + public override void Reset() + { + base.Reset(); + + // reset properties + for (int iter = 0; iter < m_operationCount; iter++) + { + Operations[iter].Reset(); + } + } + + protected override void OnStart() + { + base.OnStart(); + + // start all operations + for (int iter = 0; iter < m_operationCount; iter++) + { + var current = Operations[iter]; + current.Start(); + } + } + + protected override void OnUpdate() + { + base.OnUpdate(); + + // iterate through the list and check current status of participating operations + bool isDone = true; + Error error = null; + for (int iter = 0; iter < m_operationCount; iter++) + { + // check whether operation has completed + var current = Operations[iter]; + if (!current.IsDone) + { + isDone = false; + break; + } + + if (AsyncOperationStatus.Failed == current.Status) + { + if (m_abortOnError) + { + error = current.Error; + break; + } + } + } + + // update state based on operation results + if (isDone) + { + if (error != null) + { + if (m_abortOnError) + { + AbortActiveOperations(); + } + SetIsCompleted(error: error); + } + else + { + SetIsCompleted(result: null); + } + } + else + { + UpdateProgress(); + } + } + + protected override void SetIsCompleted(object result) + { + // set final progress value + Progress = 1f; + + base.SetIsCompleted(result); + } + + protected override void SetIsCompleted(Error error) + { + // set final progress value + Progress = 0f; + + base.SetIsCompleted(error); + } + + #endregion + + #region Private methods + + private void UpdateProgress() + { + // find cumulative progress + float progress = 0f; + for (int iter = 0; iter < m_operationCount; iter++) + { + progress += Operations[iter].Progress; + } + + // set normalized value + Progress = (progress / m_operationCount); + } + + private void AbortActiveOperations() + { + for (int iter = 0; iter < m_operationCount; iter++) + { + var current = Operations[iter]; + if (!current.IsDone) + { + current.Abort(); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/GroupOperation.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/GroupOperation.cs.meta new file mode 100644 index 00000000..5b2fc5a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/GroupOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4281fd4f764e94111b3fc11840f471d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperation.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperation.cs new file mode 100644 index 00000000..26f592e7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperation.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface IAsyncOperation : IEnumerator + { + #region Properties + + AsyncOperationStatus Status { get; } + + bool IsDone { get; } + + object Result { get; } + + Error Error { get; } + + float Progress { get; } + + #endregion + + #region Methods + + void Start(); + + void Abort(); + + #endregion + + #region Events + + event Callback OnProgress; + + event Callback OnComplete; + + #endregion + } + + public interface IAsyncOperation : IAsyncOperation + { + #region Properties + + new T Result { get; } + + #endregion + + #region Events + + new event Callback> OnProgress; + + new event Callback> OnComplete; + + #endregion + } + + public interface IAsyncOperationUpdateHandler + { + void Update(); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperation.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperation.cs.meta new file mode 100644 index 00000000..4ac86f67 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8f74c276e800437b8310588926a5b51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationHandle.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationHandle.cs new file mode 100644 index 00000000..41dbdd1c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationHandle.cs @@ -0,0 +1,48 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface IAsyncOperationHandle : IEnumerator + { + #region Properties + + AsyncOperationStatus Status { get; } + + bool IsDone { get; } + + object Result { get; } + + Error Error { get; } + + float Progress { get; } + + #endregion + + #region Events + + event Callback OnProgress; + + event Callback OnComplete; + + #endregion + } + + public interface IAsyncOperationHandle : IAsyncOperationHandle + { + #region Properties + + new T Result { get; } + + #endregion + + #region Events + + new event Callback> OnProgress; + + new event Callback> OnComplete; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationHandle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationHandle.cs.meta new file mode 100644 index 00000000..99b97b87 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationHandle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7869d21d008749068884a317745d5bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationResultContainer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationResultContainer.cs new file mode 100644 index 00000000..5eb3a9b8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationResultContainer.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface IAsyncOperationResultContainer + { + #region Methods + + bool IsError(); + + string GetErrorDescription(); + + Error GetError(); + + object GetData(); + + string GetDataAsText(); + + #endregion + } + + public interface IAsyncOperationResultContainer : IAsyncOperationResultContainer where TError : Error + { + #region Methods + + new TError GetError(); + + new TData GetData(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationResultContainer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationResultContainer.cs.meta new file mode 100644 index 00000000..4e91ebf5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/AsyncOperations/IAsyncOperationResultContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 11dc72c5107f445179f18a5a78b83d05 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes.meta new file mode 100644 index 00000000..cd79e40e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1030d3800bbfd491ea826259732186c8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ClearOnReloadAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ClearOnReloadAttribute.cs new file mode 100644 index 00000000..638f09dd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ClearOnReloadAttribute.cs @@ -0,0 +1,56 @@ +using System; +// Credits: https://github.com/joshcamas/unity-domain-reload-helper + +namespace VoxelBusters.CoreLibrary +{ + public enum ClearOnReloadOption + { + None, + + Default, + + Custom, + } + + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Event)] + public class ClearOnReloadAttribute : Attribute + { + #region Properties + + public ClearOnReloadOption Option { get; private set; } + + public object CustomValue { get; private set; } + + #endregion + + #region Properties + + /// + /// Marks field of property to be cleared and assigned given value on reload. + /// + public ClearOnReloadAttribute() + : this(ClearOnReloadOption.None, null) + { } + + /// + /// Marks field of property to be cleared and assigned given value on reload. + /// + /// Explicit value which will be assigned to field/property on reload. + public ClearOnReloadAttribute(object customValue) + : this(ClearOnReloadOption.Custom, customValue) + { } + + /// + /// Marks field of property to be cleared and assigned given value on reload. + /// + /// Option to be used. + /// Explicit value which will be assigned to field/property on reload. + public ClearOnReloadAttribute(ClearOnReloadOption option, object customValue = null) + { + Option = option; + CustomValue = customValue; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ClearOnReloadAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ClearOnReloadAttribute.cs.meta new file mode 100644 index 00000000..107fdc35 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ClearOnReloadAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c99f4ee533eb349b09cc34a8fcc1528e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/DefaultAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/DefaultAttribute.cs new file mode 100644 index 00000000..4dccba6d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/DefaultAttribute.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class DefaultValueAttribute : Attribute + { + #region Fields + + private bool? m_boolValue; + + private int? m_int32Value; + + private float? m_singleValue; + + private string m_stringValue; + + #endregion + + #region Properties + + public bool BoolValue => m_boolValue.GetValueOrDefault(); + + public int Int32Value => m_int32Value.GetValueOrDefault(); + + public float SingleValue => m_singleValue.GetValueOrDefault(); + + public string StringValue => m_stringValue; + + #endregion + + #region Constructors + + public DefaultValueAttribute(bool value) + { + // set properties + m_boolValue = value; + } + + public DefaultValueAttribute(int value) + { + // set properties + m_int32Value = value; + } + + public DefaultValueAttribute(float value) + { + // set properties + m_singleValue = value; + } + + public DefaultValueAttribute(string value) + { + // set properties + m_stringValue = value; + } + + #endregion + + #region Public methods + + public T GetValue() + { + return (T)GetValue(typeof(T)); + } + + public object GetValue(Type type) + { + switch (Type.GetTypeCode(type)) + { + case TypeCode.Boolean: + return BoolValue; + + case TypeCode.Int32: + return Int32Value; + + case TypeCode.Single: + return SingleValue; + + case TypeCode.String: + return StringValue; + + default: + return null; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/DefaultAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/DefaultAttribute.cs.meta new file mode 100644 index 00000000..84b35853 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/DefaultAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 666901cb9fe5441f198888ba97da19b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/EnumMaskFieldAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/EnumMaskFieldAttribute.cs new file mode 100644 index 00000000..d0eb1f0a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/EnumMaskFieldAttribute.cs @@ -0,0 +1,30 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class EnumMaskFieldAttribute : PropertyAttribute + { + #region Properties + + public Type EnumType + { + get; + private set; + } + + #endregion + + #region Constructors + + private EnumMaskFieldAttribute() + {} + + public EnumMaskFieldAttribute(Type type) + { + EnumType = type; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/EnumMaskFieldAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/EnumMaskFieldAttribute.cs.meta new file mode 100644 index 00000000..2ee20346 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/EnumMaskFieldAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3a6eb93874bc5406ea64339972b667ad +timeCreated: 1579074419 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ExecuteOnReloadAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ExecuteOnReloadAttribute.cs new file mode 100644 index 00000000..42684174 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ExecuteOnReloadAttribute.cs @@ -0,0 +1,15 @@ +using System; +// Credits: https://github.com/joshcamas/unity-domain-reload-helper + +namespace VoxelBusters.CoreLibrary +{ + [AttributeUsage(AttributeTargets.Method)] + public class ExecuteOnReloadAttribute : Attribute + { + /// + /// Marks method to be executed on reload. + /// + public ExecuteOnReloadAttribute() + { } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ExecuteOnReloadAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ExecuteOnReloadAttribute.cs.meta new file mode 100644 index 00000000..a6bc1aca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ExecuteOnReloadAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 558d91a3fc718409abcafe24bed90c1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FileBrowserAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FileBrowserAttribute.cs new file mode 100644 index 00000000..e4de7307 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FileBrowserAttribute.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class FileBrowserAttribute : PropertyAttribute + { + #region Properties + + public bool UsesRelativePath { get; private set; } + + public string Extension { get; private set; } + + #endregion + + #region Constructors + + public FileBrowserAttribute(bool usesRelativePath, string extension = null) + { + // set properties + UsesRelativePath = usesRelativePath; + Extension = extension; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FileBrowserAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FileBrowserAttribute.cs.meta new file mode 100644 index 00000000..a871f9ed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FileBrowserAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eb3faba3081ee40a7a091fb6423f3492 +timeCreated: 1576323712 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FolderBrowserAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FolderBrowserAttribute.cs new file mode 100644 index 00000000..40c0eed9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FolderBrowserAttribute.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class FolderBrowserAttribute : PropertyAttribute + { + #region Properties + + public bool UsesRelativePath { get; private set; } + + #endregion + + #region Constructors + + public FolderBrowserAttribute(bool usesRelativePath) + { + // set properties + UsesRelativePath = usesRelativePath; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FolderBrowserAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FolderBrowserAttribute.cs.meta new file mode 100644 index 00000000..df91ce26 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/FolderBrowserAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fd0b85bdf9d0042159e0caacf2196490 +timeCreated: 1576323713 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/IncludeInDocsAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/IncludeInDocsAttribute.cs new file mode 100644 index 00000000..8e9615d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/IncludeInDocsAttribute.cs @@ -0,0 +1,9 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class IncludeInDocsAttribute : System.Attribute + { } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/IncludeInDocsAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/IncludeInDocsAttribute.cs.meta new file mode 100644 index 00000000..310a611d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/IncludeInDocsAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f2c7e1aa6af34f20884dc715ac25bd9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/InterfaceFieldAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/InterfaceFieldAttribute.cs new file mode 100644 index 00000000..d62a5a17 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/InterfaceFieldAttribute.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class InterfaceFieldAttribute : PropertyAttribute + { + #region Properties + + public Type InterfaceType + { + get; + private set; + } + + #endregion + + #region Constructors + + public InterfaceFieldAttribute(Type interfaceType) + { + // set properties + InterfaceType = interfaceType; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/InterfaceFieldAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/InterfaceFieldAttribute.cs.meta new file mode 100644 index 00000000..1491ed1b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/InterfaceFieldAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 31f63c1f822124d4bb5ea7f9c49cbfd0 +timeCreated: 1577514104 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ReadOnlyAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ReadOnlyAttribute.cs new file mode 100644 index 00000000..1a28ddd4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ReadOnlyAttribute.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class ReadOnlyAttribute : PropertyAttribute + { + public string Message + { + get; + private set; + } + + + /// + /// Marks field to be read-only in the inspector. + /// + public ReadOnlyAttribute(string message = null) + { + Message = message; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ReadOnlyAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ReadOnlyAttribute.cs.meta new file mode 100644 index 00000000..723dea85 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/ReadOnlyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c19cb0d4b4f745b18fbe9734b0fd057 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/StringPopupAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/StringPopupAttribute.cs new file mode 100644 index 00000000..2ce4a0ec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/StringPopupAttribute.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Base class to create custom string popup field in the inspector. + /// + [IncludeInDocs] + public class StringPopupAttribute : PropertyAttribute + { + #region Static fields + + private static readonly string[] s_emptyOptions = new string[0]; + + #endregion + + #region Fields + + private readonly string[] m_fixedOptions; + + private readonly bool m_usesFixedOptions; + + #endregion + + #region Properties + + public string PreferencePropertyName { get; private set; } + + public bool PreferencePropertyValue { get; private set; } + + public string[] Options => m_usesFixedOptions ? m_fixedOptions : GetDynamicOptions(); + + #endregion + + #region Constructors + + public StringPopupAttribute(string preferencePropertyName = null, + bool preferencePropertyValue = true, + params string[] fixedOptions) + { + // set properties + PreferencePropertyName = preferencePropertyName; + PreferencePropertyValue = preferencePropertyValue; + m_fixedOptions = fixedOptions; + m_usesFixedOptions = !fixedOptions.IsNullOrEmpty(); + } + + #endregion + + #region Private methods + + protected virtual string[] GetDynamicOptions() => s_emptyOptions; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/StringPopupAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/StringPopupAttribute.cs.meta new file mode 100644 index 00000000..b06ef8b6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Attributes/StringPopupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8e2dda3cd19542bf98c1644cce52d81 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components.meta new file mode 100644 index 00000000..e6bd52be --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e638ac5554f2457688cc94da0c82081 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ActionTriggerComponent.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ActionTriggerComponent.cs new file mode 100644 index 00000000..d514ebc8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ActionTriggerComponent.cs @@ -0,0 +1,158 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public abstract class ActionTriggerComponent : MonoBehaviour + { + #region Fields + + [SerializeField] + private ActionTriggerType m_triggerOn; + + #endregion + + #region Properties + + public bool IsDone { get; protected set; } + + #endregion + + #region Abstract members + + public abstract void ExecuteAction(); + + #endregion + + #region Unity methods + + private void Start() + { + TryExecuteAction(triggerType: ActionTriggerType.Start); + } + + private void OnEnable() + { + TryExecuteAction(triggerType: ActionTriggerType.OnEnable); + } + + private void OnDisable() + { + TryExecuteAction(triggerType: ActionTriggerType.OnDisable); + } + + private void OnDestroy() + { + TryExecuteAction(triggerType: ActionTriggerType.Destroy); + } + + private void Update() + { + if (!IsDone) + { + TryExecuteAction(triggerType: ActionTriggerType.Update); + } + } + + private void OnTriggerEnter(Collider other) + { + TryExecuteAction(triggerType: ActionTriggerType.TriggerEnter); + } + + private void OnTriggerExit(Collider other) + { + TryExecuteAction(triggerType: ActionTriggerType.TriggerExit); + } + + private void OnCollisionEnter(Collision collision) + { + TryExecuteAction(triggerType: ActionTriggerType.CollisionEnter); + } + + private void OnCollisionExit(Collision collision) + { + TryExecuteAction(triggerType: ActionTriggerType.CollisionExit); + } + + private void OnTriggerEnter2D(Collider2D collision) + { + TryExecuteAction(triggerType: ActionTriggerType.TriggerEnter2D); + } + + private void OnTriggerExit2D(Collider2D collision) + { + TryExecuteAction(triggerType: ActionTriggerType.TriggerExit2D); + } + + private void OnCollisionEnter2D(Collision2D collision) + { + TryExecuteAction(triggerType: ActionTriggerType.CollisionEnter2D); + } + + private void OnCollisionExit2D(Collision2D collision) + { + TryExecuteAction(triggerType: ActionTriggerType.CollisionExit2D); + } + + #endregion + + #region Public methods + + public virtual void Reset() + { + IsDone = false; + } + + #endregion + + #region Private methods + + private bool TryExecuteAction(ActionTriggerType triggerType) + { + if (!IsDone && (triggerType == m_triggerOn)) + { + ExecuteAction(); + return true; + } + return false; + } + + #endregion + + #region Nested types + + public enum ActionTriggerType + { + Start = 1, + + Destroy, + + OnEnable, + + OnDisable, + + Update, + + TriggerEnter, + + TriggerExit, + + CollisionEnter, + + CollisionExit, + + TriggerEnter2D, + + TriggerExit2D, + + CollisionEnter2D, + + CollisionExit2D, + + Custom, + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ActionTriggerComponent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ActionTriggerComponent.cs.meta new file mode 100644 index 00000000..8f8ef73a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ActionTriggerComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cafe526d8f7d4487a8c51c21c2d036be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/CallbackDispatcher.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/CallbackDispatcher.cs new file mode 100644 index 00000000..96088808 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/CallbackDispatcher.cs @@ -0,0 +1,228 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Generic callback definition for operations. + /// + public delegate void Callback(); + + /// + /// Generic callback definition for events. + /// + public delegate void Callback(TArg arg); + + /// + /// Generic callback definition for events. + /// + public delegate void SuccessCallback(TResult result); + + /// + /// Generic callback definition for operations. + /// + public delegate void ErrorCallback(Error error); + + /// + /// Generic callback definition for operations. + /// + public delegate void CompletionCallback(bool success, Error error); + + /// + /// Generic callback definition for events. + /// + public delegate void CompletionCallback(TResult result, Error error); + + /// + /// Generic callback definition for operations. + /// + public delegate void EventCallback(TResult result, Error error); + + public class CallbackDispatcher : PrivateSingletonBehaviour + { + #region Fields + + private Queue m_queue; + private readonly object queueLock = new object(); + + #endregion + + #region Static methods + + public static CallbackDispatcher Initialize() + { + return GetSingleton(); + } + + public static void InvokeOnMainThread(Callback callback) + { + // validate arguments + if (callback == null) + { + //DebugLogger.LogWarning("Callback is null."); + return; + } + + // add request to queue + var manager = GetSingleton(); + if (manager) + { + manager.AddAction(action: () => callback.Invoke()); + } + } + + public static void InvokeOnMainThread(Callback callback, TArg arg) + { + // validate arguments + if (callback == null) + { + //DebugLogger.LogWarning("Callback is null."); + return; + } + + // add request to queue + var manager = GetSingleton(); + if (manager) + { + manager.AddAction(() => callback.Invoke(arg)); + } + } + + public static void InvokeOnMainThread(SuccessCallback callback, TResult result) + { + // validate arguments + if (callback == null) + { + //DebugLogger.LogWarning("Callback is null."); + return; + } + + // add request to queue + var manager = GetSingleton(); + if (manager) + { + manager.AddAction(() => callback.Invoke(result)); + } + } + + public static void InvokeOnMainThread(ErrorCallback callback, Error error) + { + // validate arguments + if (callback == null) + { + //DebugLogger.LogWarning("Callback is null."); + return; + } + + // add request to queue + var manager = GetSingleton(); + if (manager) + { + manager.AddAction(() => callback.Invoke(error)); + } + } + + public static void InvokeOnMainThread(CompletionCallback callback, bool success, Error error) + { + // validate arguments + if (callback == null) + { + //DebugLogger.LogWarning("Callback is null."); + return; + } + + // add request to queue + var manager = GetSingleton(); + if (manager) + { + manager.AddAction(action: () => callback.Invoke(success, error)); + } + } + + public static void InvokeOnMainThread(CompletionCallback callback, TResult result, Error error) + { + // validate arguments + if (callback == null) + { + //DebugLogger.LogWarning("Callback is null."); + return; + } + + // add request to queue + var manager = GetSingleton(); + if (manager) + { + manager.AddAction(() => callback.Invoke(result, error)); + } + } + + public static void InvokeOnMainThread(EventCallback callback, IOperationResultContainer resultContainer) + { + InvokeOnMainThread(callback, resultContainer.GetResult(), resultContainer.GetError()); + } + + public static void InvokeOnMainThread(EventCallback callback, TResult result, Error error) + { + // validate arguments + if (callback == null) + { + //DebugLogger.LogWarning("Callback is null."); + return; + } + + // add request to queue + var manager = GetSingleton(); + if (manager) + { + manager.AddAction(() => callback.Invoke(result, error)); + } + } + + #endregion + + #region Unity methods + + protected override void OnSingletonAwake() + { + base.OnSingletonAwake(); + + // Set properties + m_queue = new Queue(capacity: 16); + } + + private void LateUpdate() + { + try + { + lock(queueLock) + { + // execute pending actions + while (m_queue.Count > 0) + { + var action = m_queue.Dequeue(); + action(); + } + } + } + catch (Exception expection) + { + DebugLogger.LogException(CoreLibraryDomain.Default, expection); + } + } + + #endregion + + #region Private methods + + private void AddAction(Action action) + { + lock(queueLock) + { + m_queue.Enqueue(action); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/CallbackDispatcher.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/CallbackDispatcher.cs.meta new file mode 100644 index 00000000..a8a9519c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/CallbackDispatcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9db01c621d5964115aa41c1003a45c6c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/EditorScheduler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/EditorScheduler.cs new file mode 100644 index 00000000..9e8a8fb6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/EditorScheduler.cs @@ -0,0 +1,91 @@ +#if UNITY_EDITOR +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + internal class EditorScheduler : IScheduler + { + #region Fields + + private List m_activeCoroutines; + + #endregion + + #region Constructors + + public EditorScheduler() + { + // Set properties + m_activeCoroutines = new List(); + + // Register for callback + UnityEditor.EditorApplication.update += EditorUpdate; + } + + ~EditorScheduler() + { + // Unregister from callback + UnityEditor.EditorApplication.update -= EditorUpdate; + } + + #endregion + + #region Private methods + + private void EditorUpdate() + { + UpdateCoroutines(); + SendUpdateEvent(); + } + + private void UpdateCoroutines() + { + for (int iter = 0; iter < m_activeCoroutines.Count; iter++) + { + var routine = m_activeCoroutines[iter]; + if (routine == null) continue; + + if (!routine.MoveNext()) + { + m_activeCoroutines.RemoveAt(iter); + iter--; + } + } + } + + private void SendUpdateEvent() + { + Update?.Invoke(); + } + + #endregion + + #region IScheduler implementation + + public event Callback Update; + + public void StartCoroutine(IEnumerator routine) + { + if (routine == null) return; + + m_activeCoroutines.AddUnique(routine); + } + + public void StopCoroutine(IEnumerator routine) + { + if (routine == null) return; + + m_activeCoroutines.Remove(routine); + } + + public void StopAllCoroutines() + { + m_activeCoroutines.Clear(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/EditorScheduler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/EditorScheduler.cs.meta new file mode 100644 index 00000000..dc5a2272 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/EditorScheduler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01c2a792f31c94b71bdb94f2a2eb2c8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IOperationResultContainer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IOperationResultContainer.cs new file mode 100644 index 00000000..44c6fa74 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IOperationResultContainer.cs @@ -0,0 +1,17 @@ +namespace VoxelBusters.CoreLibrary +{ + public interface IOperationResultContainer + { + #region Methods + + bool IsError(); + + Error GetError(); + + TData GetResult(); + + string GetResultAsText(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IOperationResultContainer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IOperationResultContainer.cs.meta new file mode 100644 index 00000000..622ecc06 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IOperationResultContainer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4b40772b73da541d68f2a099bb788cd9 +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IScheduler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IScheduler.cs new file mode 100644 index 00000000..4cec3ab8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IScheduler.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface IScheduler + { + #region Events + + event Callback Update; + + #endregion + + #region Methods + + void StartCoroutine(IEnumerator routine); + + void StopCoroutine(IEnumerator routine); + + void StopAllCoroutines(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IScheduler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IScheduler.cs.meta new file mode 100644 index 00000000..01acdb37 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/IScheduler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05eb539b685444e3185b32e65e8a3d2d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ISchedulerUpdateHandler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ISchedulerUpdateHandler.cs new file mode 100644 index 00000000..4138c041 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ISchedulerUpdateHandler.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface ISchedulerUpdateHandler + { + #region Methods + + void Update(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ISchedulerUpdateHandler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ISchedulerUpdateHandler.cs.meta new file mode 100644 index 00000000..65e87997 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/ISchedulerUpdateHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bae940cc7f1a54e49b4b9122a76974be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/MonoBehaviourZ.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/MonoBehaviourZ.cs new file mode 100644 index 00000000..2074568f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/MonoBehaviourZ.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class MonoBehaviourZ : MonoBehaviour + { + #region Fields + + private bool m_isInitialisedInternal = false; + + #endregion + + #region Unity methods + + private void Awake() + { + EnsureInitialised(); + } + + protected virtual void Start() + { } + + protected virtual void OnEnable() + { } + + protected virtual void OnDisable() + { } + + protected virtual void OnDestroy() + { } + + #endregion + + #region Private methods + + protected void EnsureInitialised() + { + if (m_isInitialisedInternal) return; + + m_isInitialisedInternal = true; + + Init(); + } + + protected virtual void Init() + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/MonoBehaviourZ.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/MonoBehaviourZ.cs.meta new file mode 100644 index 00000000..d4da1397 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/MonoBehaviourZ.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 808f0313735c64ec5989f9ad2564abf1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/PersistentObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/PersistentObject.cs new file mode 100644 index 00000000..ce62aaf9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/PersistentObject.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class PersistentObject : MonoBehaviour + { + #region Unity methods + + private void Awake() + { + DontDestroyOnLoad(gameObject); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/PersistentObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/PersistentObject.cs.meta new file mode 100644 index 00000000..5df2583c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/PersistentObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c89bacc55c95b410bbe311261e447720 +timeCreated: 1576350560 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/RuntimeScheduler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/RuntimeScheduler.cs new file mode 100644 index 00000000..1a9ccaa6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/RuntimeScheduler.cs @@ -0,0 +1,67 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace VoxelBusters.CoreLibrary +{ + internal class RuntimeScheduler : PrivateSingletonBehaviour, IScheduler + { + #region Fields + + private event Callback UpdateEvent; + + #endregion + + #region Static methods + + public static RuntimeScheduler Initialize() + { + return GetSingleton(); + } + + #endregion + + #region Unity methods + + private void Update() + { + SendUpdateEvent(); + } + + #endregion + + #region Private methods + + private void SendUpdateEvent() + { + UpdateEvent?.Invoke(); + } + + #endregion + + #region IScheduler implementation + + event Callback IScheduler.Update + { + add { UpdateEvent += value; } + remove { UpdateEvent -= value; } + } + + void IScheduler.StartCoroutine(IEnumerator routine) + { + StartCoroutine(routine); + } + + void IScheduler.StopCoroutine(IEnumerator routine) + { + StopCoroutine(routine); + } + + void IScheduler.StopAllCoroutines() + { + StopAllCoroutines(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/RuntimeScheduler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/RuntimeScheduler.cs.meta new file mode 100644 index 00000000..5e0b801b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/RuntimeScheduler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8805e4e754ad4c4cbe890a68d47b559 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/Scheduler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/Scheduler.cs new file mode 100644 index 00000000..bb917394 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/Scheduler.cs @@ -0,0 +1,75 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class Scheduler + { + #region Static fields + + [ClearOnReload] + private static IScheduler s_scheduler; + + #endregion + + #region Static events + + public static event Callback Update + { + add + { + EnsureInitialised(); + s_scheduler.Update += value; + } + remove + { + EnsureInitialised(); + s_scheduler.Update -= value; + } + } + + #endregion + + #region Static methods + + public static void StartCoroutine(IEnumerator routine) + { + EnsureInitialised(); + + s_scheduler.StartCoroutine(routine); + } + + public static void StopCoroutine(IEnumerator routine) + { + EnsureInitialised(); + + s_scheduler.StopCoroutine(routine); + } + + public static void StopAllCoroutines() + { + EnsureInitialised(); + + s_scheduler.StopAllCoroutines(); + } + + private static void EnsureInitialised() + { + if (s_scheduler != null) return; + + #if UNITY_EDITOR + if (!UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode) + { + s_scheduler = new EditorScheduler(); + } + else + #endif + { + s_scheduler = RuntimeScheduler.Initialize(); //Need to find out why RuntimeScheduler when using Singleton base class not working with domain reload, but PrivateSingleton do work. + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/Scheduler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/Scheduler.cs.meta new file mode 100644 index 00000000..74a7598a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/Scheduler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a8fbb53372594131b4ac644c3492130 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/SurrogateCoroutine.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/SurrogateCoroutine.cs new file mode 100644 index 00000000..3af2a795 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/SurrogateCoroutine.cs @@ -0,0 +1,80 @@ +using System.Collections; +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class SurrogateCoroutine + { + #region Static methods + + public static void StartCoroutine(IEnumerator routine) + { + Scheduler.StartCoroutine(routine); + } + + public static void StopCoroutine(IEnumerator routine) + { + Scheduler.StopCoroutine(routine); + } + + public static void WaitUntilAndInvoke(Func predicate, Action action) + { + Scheduler.StartCoroutine(WaitUntilAndInvokeInternal(predicate, action)); + } + + public static void WaitUntilAndInvoke(IEnumerator coroutine, Action action) + { + Scheduler.StartCoroutine(WaitUntilAndInvokeInternal(coroutine, action)); + } + + public static void WaitUntilAndInvoke(YieldInstruction instruction, Action action) + { + Scheduler.StartCoroutine(WaitUntilAndInvokeInternal(instruction, action)); + } + + public static void WaitForEndOfFrameAndInvoke(Action action) + { + Scheduler.StartCoroutine(WaitUntilAndInvokeInternal(new WaitForEndOfFrame(), action)); + } + + public static void Invoke(Action action, float delay) + { + Scheduler.StartCoroutine(WaitUntilAndInvokeInternal(new WaitForSeconds(delay), action)); + } + + #endregion + + #region Private static methods + + private static IEnumerator WaitUntilAndInvokeInternal(Func predicate, Action action) + { + yield return new WaitUntil(predicate); + + action(); + } + + private static IEnumerator WaitUntilAndInvokeInternal(IEnumerator coroutine, Action action) + { + yield return coroutine; + + action(); + } + + private static IEnumerator WaitUntilAndInvokeInternal(YieldInstruction instruction, Action action) + { + yield return instruction; + + action(); + } + + private static IEnumerator InvokeInternal(Action action, float delay) + { + yield return new WaitForSeconds(delay); + + action(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/SurrogateCoroutine.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/SurrogateCoroutine.cs.meta new file mode 100644 index 00000000..bfb4f7fa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Components/SurrogateCoroutine.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1538ec2986b674b359f11e25b2defd03 +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants.meta new file mode 100644 index 00000000..62a097fb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 443366c8b588841c4884161095ccb277 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ConsentStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ConsentStatus.cs new file mode 100644 index 00000000..4a25ba1a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ConsentStatus.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public enum ConsentStatus + { + NotDetermined = 0, + + Denied, + + Authorized, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ConsentStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ConsentStatus.cs.meta new file mode 100644 index 00000000..08a7a0f9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ConsentStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79a1e0121158d489eb9d02bbd798418d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ContentRating.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ContentRating.cs new file mode 100644 index 00000000..b22ae4b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ContentRating.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using System.Collections; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Enum specifying the level of content maturity for an app. + /// + /// + /// This enum is used to specify the level of content maturity for an app. + /// + public enum ContentRating + { + Unspecified = 0, + + /// Content suitable for general audiences, including families. + GeneralAudience, + + /// Content suitable only for mature audiences. + MatureAudience, + + /// Content suitable for most audiences with parental guidance. + ParentalGuidance, + + /// Content suitable for teen and older audiences. + TeensAndOlder, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ContentRating.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ContentRating.cs.meta new file mode 100644 index 00000000..8653f388 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/ContentRating.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc7d3d7d0b03e464abf742058c6ac9b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/CoreLibraryDomain.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/CoreLibraryDomain.cs new file mode 100644 index 00000000..68face05 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/CoreLibraryDomain.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class CoreLibraryDomain + { + public static string Default => "VoxelBusters.CoreLibrary"; + + public static string NativePlugins => "VoxelBusters.CoreLibrary.NativePlugins"; + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/CoreLibraryDomain.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/CoreLibraryDomain.cs.meta new file mode 100644 index 00000000..b3022fc7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/CoreLibraryDomain.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38ad3155306284d48b2aa55aed6bdec5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/MimeType.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/MimeType.cs new file mode 100644 index 00000000..36cdf886 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/MimeType.cs @@ -0,0 +1,153 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// The MimeType class is a collection of most commonly used MIME types. + /// + /// + /// MIME types enable apps to recognize the filetype of a file. + /// + public static class MimeType + { + #region Constants + + /// The MIME value used to determine any file. (Readonly) + public const string kAny = "*/*"; + + /// The MIME value used to determine plain text file. (Readonly) + public const string kPlainText = "text/plain"; + + /// The MIME value used to determine normal web pages. (Readonly) + public const string kHtmlText = "text/html"; + + /// The MIME value used to determine javascript content. (Readonly) + public const string kJavaScriptText = "text/javascript"; + + /// The MIME value used to determine all image files. (Readonly) + public const string kAllImages = "image/*"; + + /// The MIME value used to determine jpg image file. (Readonly) + public const string kJPGImage = "image/jpeg"; + + /// The MIME value used to determine png image file. (Readonly) + public const string kPNGImage = "image/png"; + + /// The MIME value used to determine gif image file. (Readonly) + public const string kGIFImage = "image/gif"; + + /// The MIME value used to determine Adobe® PDF documents. (Readonly) + public const string kPDF = "application/pdf"; + + + /// The MIME value used to determine all video files. (Readonly) + public const string kAllVideos = "video/*"; + + /// The MIME value used to determine mp4 video. (Readonly) + public const string kMP4Video = "video/mp4"; + + /// The MIME value used to determine all audio files. (Readonly) + public const string kAllAudio = "audio/*"; + + #endregion + + #region Static methods + + public static string GetTypeForExtension(string extension) + { + extension = extension.TrimStart('.'); + if (string.Equals(extension, "txt", StringComparison.InvariantCultureIgnoreCase)) + { + return kPlainText; + } + else if (string.Equals(extension, "html", StringComparison.InvariantCultureIgnoreCase)) + { + return kHtmlText; + } + else if (string.Equals(extension, "js", StringComparison.InvariantCultureIgnoreCase)) + { + return kJavaScriptText; + } + else if (string.Equals(extension, "jpg", StringComparison.InvariantCultureIgnoreCase) || + string.Equals(extension, "jpeg", StringComparison.InvariantCultureIgnoreCase)) + { + return kJPGImage; + } + else if (string.Equals(extension, "png", StringComparison.InvariantCultureIgnoreCase)) + { + return kPNGImage; + } + else if (string.Equals(extension, "gif", StringComparison.InvariantCultureIgnoreCase)) + { + return kGIFImage; + } + else if (string.Equals(extension, "pdf", StringComparison.InvariantCultureIgnoreCase)) + { + return kPDF; + } + else if (string.Equals(extension, "mp4", StringComparison.InvariantCultureIgnoreCase)) + { + return kMP4Video; + } + + DebugLogger.LogWarning(CoreLibraryDomain.Default, $"Unknown MIME type for extension: {extension}"); + return kPlainText; + } + + public static string GetExtensionForType(string mimeType) + { + if (string.Equals(mimeType, kPlainText, StringComparison.InvariantCultureIgnoreCase)) + { + return "txt"; + } + else if (string.Equals(mimeType, kHtmlText, StringComparison.InvariantCultureIgnoreCase)) + { + return "html"; + } + else if (string.Equals(mimeType, kJavaScriptText, StringComparison.InvariantCultureIgnoreCase)) + { + return "js"; + } + else if (string.Equals(mimeType, kJPGImage, StringComparison.InvariantCultureIgnoreCase)) + { + return "jpg"; + } + else if (string.Equals(mimeType, kPNGImage, StringComparison.InvariantCultureIgnoreCase)) + { + return "png"; + } + else if (string.Equals(mimeType, kGIFImage, StringComparison.InvariantCultureIgnoreCase)) + { + return "gif"; + } + else if (string.Equals(mimeType, kPDF, StringComparison.InvariantCultureIgnoreCase)) + { + return "pdf"; + } + else if (string.Equals(mimeType, kMP4Video, StringComparison.InvariantCultureIgnoreCase)) + { + return "mp4"; + } + else if (string.Equals(mimeType, kAllImages, StringComparison.InvariantCultureIgnoreCase)) //Defaults to png + { + return "png"; + } + else if (string.Equals(mimeType, kAllVideos, StringComparison.InvariantCultureIgnoreCase)) //Defaults to mp4 + { + return "mp4"; + } + else if (string.Equals(mimeType, kAllAudio, StringComparison.InvariantCultureIgnoreCase)) //Defaults to wav + { + return "wav"; + } + + DebugLogger.LogWarning(CoreLibraryDomain.Default, $"Unknown extension for MIME type : {mimeType}"); + return kPlainText; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/MimeType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/MimeType.cs.meta new file mode 100644 index 00000000..376002b6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/MimeType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d68885bd49dd540488b1c06ecfb83cf6 +timeCreated: 1576146562 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextEncodingFormat.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextEncodingFormat.cs new file mode 100644 index 00000000..f8428932 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextEncodingFormat.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class TextEncodingFormat + { + #region Constants + + /// Encodes characters using the UTF-8 encoding. (Readonly) + public const string kUTF8 = "utf8"; + + /// Encodes characters using the UTF-16 encoding. (Readonly) + public const string kUTF16 = "utf16"; + + /// Encodes characters using the UTF-32 encoding. (Readonly) + public const string kUTF32 = "utf32"; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextEncodingFormat.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextEncodingFormat.cs.meta new file mode 100644 index 00000000..d7654f94 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextEncodingFormat.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c0728fce467ac4c4aa2450ac0ebb6bd9 +timeCreated: 1576146562 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextureEncodingFormat.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextureEncodingFormat.cs new file mode 100644 index 00000000..009cf467 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextureEncodingFormat.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// This enum is used to define the texture encoding technique to be used by the plugin. + /// + public enum TextureEncodingFormat + { + /// Encodes the given texture into PNG format. + PNG, + + /// Encodes the given texture into JPEG format. + JPG, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextureEncodingFormat.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextureEncodingFormat.cs.meta new file mode 100644 index 00000000..083df586 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Constants/TextureEncodingFormat.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f3a28b85765d945bdb9550927d1fdde9 +timeCreated: 1576146562 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels.meta new file mode 100644 index 00000000..7e23fbf6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 60ac130d5072a4f95908150f5ad4d242 +folderAsset: yes +timeCreated: 1576063243 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationPrivacyConfiguration.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationPrivacyConfiguration.cs new file mode 100644 index 00000000..eb131a58 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationPrivacyConfiguration.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using System.Collections; + +namespace VoxelBusters.CoreLibrary +{ + public class ApplicationPrivacyConfiguration + { + #region Properties + + public ConsentStatus UsageConsent { get; private set; } + + public bool? IsAgeRestrictedUser { get; private set; } + + public ContentRating? PreferredContentRating { get; private set; } + + public string Version { get; private set; } + + #endregion + + #region Constructors + + public ApplicationPrivacyConfiguration(ConsentStatus usageConsent, + bool? isAgeRestrictedUser = null, + ContentRating? preferredContentRating = null, + string version = null) + { + // Set properties + UsageConsent = usageConsent; + IsAgeRestrictedUser = isAgeRestrictedUser; + PreferredContentRating = preferredContentRating; + Version = version; + } + + #endregion + + #region Public methods + + public bool? IsCoppaApplicable() + { + if (IsAgeRestrictedUser == null) return null; + + return (IsAgeRestrictedUser.Value == true) || (UsageConsent != ConsentStatus.Authorized); + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationPrivacyConfiguration.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationPrivacyConfiguration.cs.meta new file mode 100644 index 00000000..a4aaccd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationPrivacyConfiguration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 71301b2b0cd8345c9a4613989e8bdba8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationUser.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationUser.cs new file mode 100644 index 00000000..0e62b558 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationUser.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class User + { + #region Properties + + public string UserId { get; private set; } + + public string Email { get; private set; } + + public string FirstName { get; private set; } + + public string LastName { get; private set; } + + public UserGender Gender { get; private set; } + + public DateTime? DateOfBirth { get; private set; } + + public int? Age + { + get + { + if (DateOfBirth.HasValue) + { + var today = DateTime.Today; + var bday = DateOfBirth.Value; + int age = today.Year - bday.Year; + if (bday > today.AddYears(-age)) + { + age--; + } + return age; + } + return null; + } + } + + public bool IsGuest { get; private set; } + + #endregion + + #region Constructors + + public User(string userId, string email = null, + string firstName = null, string lastName = null, + UserGender gender = UserGender.Undefined, DateTime? dob = null, + bool isGuest = false) + { + // set properties + UserId = userId; + Email = email; + FirstName = firstName; + LastName = lastName; + DateOfBirth = dob; + Gender = gender; + IsGuest = isGuest; + } + + #endregion + + #region Nested types + + public enum UserGender + { + Undefined = 0, + + Male, + + Female, + + Others, + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationUser.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationUser.cs.meta new file mode 100644 index 00000000..c3b8e4a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ApplicationUser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67da540a5aeda4477a763979cda8e7a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Asset.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Asset.cs new file mode 100644 index 00000000..69bb80f0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Asset.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + [System.Serializable] + public class Asset + { + #region Properties + + public byte[] Data { get; private set; } + + public string MimeType { get; private set; } + + public string Name { get; private set; } + + #endregion + + #region Constructors + + public Asset(byte[] data, string mimeType, string name) + { + // set properties + Data = data; + MimeType = mimeType; + Name = name; + } + + #endregion + + #region Create methods + + public static Asset CreatePNGAsset(byte[] data, string name) + { + return new Asset(data, CoreLibrary.MimeType.kPNGImage, name); + } + + public static Asset CreateJPGAsset(byte[] data, string name) + { + return new Asset(data, CoreLibrary.MimeType.kJPGImage, name); + } + + public static Asset CreateMP4Asset(byte[] data, string name) + { + return new Asset(data, CoreLibrary.MimeType.kMP4Video, name); + } + + public static Asset CreatePDFAsset(byte[] data, string name) + { + return new Asset(data, CoreLibrary.MimeType.kPDF, name); + } + + public static Asset CreateTextAsset(byte[] data, string name) + { + return new Asset(data, CoreLibrary.MimeType.kPlainText, name); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Asset.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Asset.cs.meta new file mode 100644 index 00000000..1108af39 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Asset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b981393de27a540ad9ddbc3361a51776 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Error.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Error.cs new file mode 100644 index 00000000..8f85dd97 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Error.cs @@ -0,0 +1,68 @@ +using System; + +namespace VoxelBusters.CoreLibrary +{ + public class Error + { + #region Properties + + /// + /// A description of the error occured (read-only). + /// + /// The description of the error. + public string Domain { get; private set; } + + /// + /// A value indicating the type of error occured (read-only). + /// + /// The error code. + public int Code { get; private set; } + + /// + /// A description of the error occured (read-only). + /// + /// The description of the error. + public string Description { get; private set; } + + #endregion + + #region Constructors + + public Error(string description) + : this(domain: null, code: 0, description: description) + { } + + public Error(string domain, int code, string description) + { + // set properties + Domain = domain; + Code = code; + Description = description; + } + + #endregion + + #region Static methods + + public static Error CreateNullableError(string description) + { + if (description == null) + { + return null; + } + + return new Error(description); + } + + #endregion + + #region Base class methods + + public override string ToString() + { + return string.Format("Error Domain: {0} Code: {1} Description: {2}", Domain, Code, Description); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Error.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Error.cs.meta new file mode 100644 index 00000000..49c95d18 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/Error.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88d065ed06b734f9485e7024314b6843 +timeCreated: 1596311572 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/KeyValueDataStore.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/KeyValueDataStore.cs new file mode 100644 index 00000000..3841da0a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/KeyValueDataStore.cs @@ -0,0 +1,226 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Object represents a container to store key-value pairs. + /// + public class KeyValueDataStore + { + #region Fields + + private Dictionary m_dataCollection; + + private string m_savePath; + + #endregion + + #region Constructors + + /// + /// Create a new instance. + /// + /// The file path to save contents. + public KeyValueDataStore(string savePath) + { + // set properties + m_dataCollection = LoadDataFromPath(savePath) ?? new Dictionary(); + m_savePath = savePath; + } + + #endregion + + #region Get value methods + + /// + /// Returns the boolean value associated with the specified key. + /// + /// A string used to identify the value stored in the data store. + /// Default value. + /// + public bool GetBool(string key, bool defaultValue = default) + { + if (m_dataCollection.TryGetValue(key, out object value)) + { + return bool.Parse(value.ToString()); + } + return defaultValue; + } + + /// + /// Returns the long value associated with the specified key. + /// + /// A string used to identify the value stored in the data store. + /// Default value. + /// + public long GetLong(string key, long defaultValue = default) + { + if (m_dataCollection.TryGetValue(key, out object value)) + { + return long.Parse(value.ToString()); + } + return defaultValue; + } + + /// + /// Returns the double value associated with the specified key. + /// + /// A string used to identify the value stored in the data store. + /// Default value. + /// + public double GetDouble(string key, double defaultValue = default) + { + if (m_dataCollection.TryGetValue(key, out object value)) + { + return double.Parse(value.ToString()); + } + return defaultValue; + } + + /// + /// Returns the string value associated with the specified key. + /// + /// A string used to identify the value stored in the data store. + /// Default value. + /// + public string GetString(string key, string defaultValue = default) + { + if (m_dataCollection.TryGetValue(key, out object value)) + { + return value.ToString(); + } + return defaultValue; + } + + /// + /// Returns the byte array object associated with the specified key. + /// + /// A string used to identify the value stored in the data store. + /// Default value. + /// + public byte[] GetByteArray(string key, byte[] defaultValue = default) + { + if (m_dataCollection.TryGetValue(key, out object value)) + { + return System.Convert.FromBase64String(value.ToString()); + } + return defaultValue; + } + + /// + /// Returns the complete snapshot of data. + /// + /// Returns IDictionary with snapshot data + public IDictionary GetSnapshot() + { + return m_dataCollection; + } + + #endregion + + #region Set value methods + + /// + /// Sets a boolean value for the specified key in the data store. + /// + /// The key under which to store the value. + /// The boolean value to store. + public void SetBool(string key, bool value) + { + // save value + m_dataCollection[key] = value.ToString(); + } + + /// + /// Sets a long value for the specified key in the data store. + /// + /// The key under which to store the value. + /// The long value to store. + public void SetLong(string key, long value) + { + // save value + m_dataCollection[key] = value.ToString(); + } + + /// + /// Sets a double value for the specified key in the data store. + /// + /// The key under which to store the value. + /// The double value to store. + public void SetDouble(string key, double value) + { + // save value + m_dataCollection[key] = value.ToString(); + } + + /// + /// Sets a string value for the specified key in the data store. + /// + /// The key under which to store the value. + /// The string value to store. + public void SetString(string key, string value) + { + // save value + m_dataCollection[key] = value; + } + + /// + /// Sets a byte array value for the specified key in the data store. + /// + /// The key under which to store the value. + /// The long value to store. + public void SetByteArray(string key, byte[] value) + { + // save value + m_dataCollection[key] = System.Convert.ToBase64String(value); + } + + #endregion + + #region Misc methods + + /// + /// Explicitly synchronizes in-memory data with those stored on disk. + /// + public void Synchronize() + { + string jsonContent = ExternalServiceProvider.JsonServiceProvider.ToJson(m_dataCollection); + IOServices.CreateFile(m_savePath, jsonContent); + } + + /// + /// Removes all the entries from the data store. + /// + public void Clear() + { + m_dataCollection.Clear(); + Synchronize(); + } + + /// + /// Removes the value associated with the specified key from the data store. + /// + /// The key corresponding to the value you want to remove. + public bool RemoveKey(string key) + { + return m_dataCollection.Remove(key); + } + + #endregion + + #region Private methods + + private Dictionary LoadDataFromPath(string path) + { + if (!IOServices.FileExists(path)) return null; + + var jsonContent = IOServices.ReadFile(path); + return ExternalServiceProvider.JsonServiceProvider.FromJson(jsonContent) as Dictionary; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/KeyValueDataStore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/KeyValueDataStore.cs.meta new file mode 100644 index 00000000..c239b7bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/KeyValueDataStore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbc1c5c10cdf245869b8f63107d3b39f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ReadableId.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ReadableId.cs new file mode 100644 index 00000000..9a5e504f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ReadableId.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + [System.Serializable] + public class ReadableId + { + #region Fields + + [SerializeField] + private string m_name; + + [SerializeField] + private string m_id; + + #endregion + + #region Properties + + public string Name => m_name; + + public string Id => m_id; + + #endregion + + #region Constructors + + public ReadableId(string name, string id) + { + // set properties + m_name = name; + m_id = id; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ReadableId.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ReadableId.cs.meta new file mode 100644 index 00000000..7e0aa319 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ReadableId.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75dea0c9d6fd74981bc4bc02a408bde7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstant.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstant.cs new file mode 100644 index 00000000..9f8354a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstant.cs @@ -0,0 +1,115 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Object represents an immutable, read-only object that combines a string value with a platform. + /// + [Serializable] + public class RuntimePlatformConstant + { + #region Fields + + [SerializeField] + private RuntimePlatform m_platform; + + [SerializeField] + private string m_value = string.Empty; + + #endregion + + #region Properties + + /// + /// Gets the runtime platform associated with string value. + /// + /// The enum value indicates the platform to which string value belongs. + public RuntimePlatform Platform => m_platform; + + /// + /// Gets the string value. + /// + /// The string value. + public string Value => m_value; + + #endregion + + #region Constructors + + public RuntimePlatformConstant(RuntimePlatform platform, string value) + { + // set properties + m_platform = platform; + m_value = value; + } + + #endregion + + #region Static methods + + /// + /// Returns a new instance of , containing a string value functional only on iOS platform. + /// + /// The instance of . + /// The string value associated with iOS platform. + public static RuntimePlatformConstant iOS(string value) + { + return new RuntimePlatformConstant(RuntimePlatform.IPhonePlayer, value); + } + + /// + /// Returns a new instance of , containing a string value functional only on tvOS platform. + /// + /// The instance of . + /// The string value associated with tvOS platform. + public static RuntimePlatformConstant tvOS(string value) + { + return new RuntimePlatformConstant(RuntimePlatform.tvOS, value); + } + + /// + /// Returns a new instance of , containing a string value functional only on Android platform. + /// + /// The instance of . + /// The string value associated with Android platform. + public static RuntimePlatformConstant Android(string value) + { + return new RuntimePlatformConstant(RuntimePlatform.Android, value); + } + + /// + /// Returns a new instance of , containing a string value associated with active platform. + /// + /// The instance of . + /// The string value associated with active platform. + public static RuntimePlatformConstant Current(string value) + { + var currentPlatform = ApplicationServices.GetActiveOrSimulationPlatform(); + return new RuntimePlatformConstant(currentPlatform, value); + } + + #endregion + + #region Public methods + + public bool IsEqualToPlatform(RuntimePlatform other) + { + if (other == m_platform) return true; + + // Special case for Editor + return other.IsEditor() && m_platform.IsEditor(); + } + + #endregion + + #region Base class methods + + public override string ToString() + { + return m_value; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstant.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstant.cs.meta new file mode 100644 index 00000000..652dc668 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstant.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a656b13371a454661b01a2100b68c285 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstantSet.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstantSet.cs new file mode 100644 index 00000000..350baa86 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstantSet.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + [Serializable] + public class RuntimePlatformConstantSet + { + #region Fields + + [SerializeField] + private string m_ios; + + [SerializeField] + private string m_tvos; + + [SerializeField] + private string m_android; + + #endregion + + #region Constructors + + public RuntimePlatformConstantSet(string ios = null, string tvos = null, string android = null) + { + // set properties + m_ios = ios?.Trim(); + m_tvos = tvos?.Trim(); + m_android = android?.Trim(); + } + + #endregion + + #region Public methods + + public string GetConstantForActivePlatform(string defaultValue = null) + { + var platform = ApplicationServices.GetActivePlatform(); + return GetConstantForPlatform(platform, defaultValue); + } + + public string GetConstantForActiveOrSimulationPlatform(string defaultValue = null)//Why this is not used? + { + var platform = ApplicationServices.GetActiveOrSimulationPlatform(); + return GetConstantForPlatform(platform, defaultValue); + } + + public string GetConstantForPlatform(RuntimePlatform platform, string defaultValue = null) + { + string targetValue; + switch (platform) + { + case RuntimePlatform.IPhonePlayer: + targetValue = m_ios; + break; + + case RuntimePlatform.tvOS: + targetValue = m_tvos; + break; + + case RuntimePlatform.Android: + targetValue = m_android; + break; + + default: + targetValue = defaultValue; + break; + } + + return string.IsNullOrEmpty(targetValue) ? defaultValue : targetValue; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstantSet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstantSet.cs.meta new file mode 100644 index 00000000..b6b4d48e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/RuntimePlatformConstantSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eef8c656560ba4996ba11c3f8a327d5a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/SerializableKeyValuePair.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/SerializableKeyValuePair.cs new file mode 100644 index 00000000..4cb1e029 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/SerializableKeyValuePair.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + [Serializable] + public class SerializableKeyValuePair : IEquatable> + { + #region Fields + + [SerializeField] + private TKey m_key; + + [SerializeField] + private TValue m_value; + + #endregion + + #region Properties + + public TKey Key + { + get => m_key; + set => m_key = value; + } + + public TValue Value + { + get => m_value; + set => m_value = value; + } + + #endregion + + #region Constructors + + protected SerializableKeyValuePair(TKey key = default(TKey), TValue value = default(TValue)) + { + // set properties + m_key = key; + m_value = value; + } + + #endregion + + #region IEquatable implementation + + bool IEquatable>.Equals(SerializableKeyValuePair other) + { + if (other == null) return false; + + return EqualityComparer.Default.Equals(Key, other.Key) && + EqualityComparer.Default.Equals(Value, other.Value); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/SerializableKeyValuePair.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/SerializableKeyValuePair.cs.meta new file mode 100644 index 00000000..4025c75d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/SerializableKeyValuePair.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 019f38b07624b4d45a787002d72c43cc +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/StringKeyValuePair.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/StringKeyValuePair.cs new file mode 100644 index 00000000..ff1b45fa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/StringKeyValuePair.cs @@ -0,0 +1,16 @@ +using System; + +namespace VoxelBusters.CoreLibrary +{ + [Serializable] + public class StringKeyValuePair : SerializableKeyValuePair + { + #region Constructors + + public StringKeyValuePair(string key = null, string value = null) + : base(key, value) + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/StringKeyValuePair.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/StringKeyValuePair.cs.meta new file mode 100644 index 00000000..842751db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/StringKeyValuePair.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: df95b47cf01434be8b102b93aa72ea33 +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/TextureData.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/TextureData.cs new file mode 100644 index 00000000..2b77038a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/TextureData.cs @@ -0,0 +1,83 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class TextureData + { + #region Fields + + private byte[] m_rawData; + + private Texture2D m_texture; + + #endregion + + #region Constructors + + public TextureData(byte[] rawData) + { + // set properties + m_rawData = rawData; + m_texture = null; + } + + public TextureData(Texture2D texture) + { + // set properties + m_rawData = null; + m_texture = texture; + } + + #endregion + + #region Public methods + + public byte[] GetBytes(TextureEncodingFormat format) + { + if (m_rawData != null) + { + return m_rawData; + } + else if (m_texture != null) + { + switch (format) + { + case TextureEncodingFormat.JPG: + return m_texture.EncodeToJPG(); + + default: + return m_texture.EncodeToPNG(); + } + } + + throw new VBException("Unknown error"); + } + + public Texture2D GetTexture() + { + if (m_texture != null) + { + return m_texture; + } + else if (m_rawData != null) + { + m_texture = CreateTexture(m_rawData); + return m_texture; + } + + throw new VBException("Unknown error"); + } + + private Texture2D CreateTexture(byte[] data) + { + var newTexture = new Texture2D(4, 4); + newTexture.LoadImage(data); + newTexture.Apply(); + + return newTexture; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/TextureData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/TextureData.cs.meta new file mode 100644 index 00000000..ccec60b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/TextureData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9d502c99a53b34565aa536c6d09642cb +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/URLString.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/URLString.cs new file mode 100644 index 00000000..4defe078 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/URLString.cs @@ -0,0 +1,95 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Struct value to represent the location of a resource, such as an item on a remote server or the path to a local file. + /// + public struct URLString + { + #region Fields + + private string m_value; + + #endregion + + #region Properties + + /// + /// Gets a value indicating whether this is valid. + /// + /// true if is valid; otherwise, false. + public bool IsValid { get; private set; } + + public bool IsFilePath { get; private set; } + + #endregion + + #region Static methods + + /// + /// Returns a newly created object as a http URL with specified path. + /// + /// The path should be a valid web URL path. + public static URLString URLWithPath(string path) + { + // validate arguments + Assert.IsNotNullOrEmpty(path, "path"); + Assert.IsFalse(path.StartsWith("file"), "Input value is not http path."); + + // format value if required + if (false == path.StartsWith("http")) + { + path = string.Concat("http://", path); + } + + return new URLString() { m_value = path, IsValid = true }; + } + + /// + /// Returns a newly created object as a file URL with a specified path. + /// + /// The path should be a valid system path. + public static URLString FileURLWithPath(string path) + { + // validate arguments + Assert.IsNotNullOrEmpty(path, "path"); + Assert.IsFalse(path.StartsWith("http"), "Input value is not local file path."); + + // format value if required + if (false == path.StartsWith("file") +#if UNITY_ANDROID + && false == path.StartsWith("jar:file") +#endif + ) + { + path = string.Concat("file://", path); + } + + return new URLString() { m_value = path, IsValid = true, IsFilePath = true, }; + } + + #endregion + + #region Public methods + + /// + /// Returns the URL representation in string format. This value is null, if given URL is invalid. + /// + /// The URL string. + public override string ToString() + { + if (IsValid) + { + return m_value; + } + + return null; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/URLString.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/URLString.cs.meta new file mode 100644 index 00000000..9cef0493 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/URLString.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3db1a4e89276140efb55332ad4b03434 +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/UnityPackageDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/UnityPackageDefinition.cs new file mode 100644 index 00000000..0d540c0f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/UnityPackageDefinition.cs @@ -0,0 +1,92 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + [System.Serializable] + public class UnityPackageDefinition + { + #region Fields + + private string m_persistentDataRelativePath; + + #endregion + + #region Properties + + public string Name { get; private set; } + + public string DisplayName { get; private set; } + + public string Version { get; private set; } + + public string DefaultInstallPath { get; private set; } + + public string UpmInstallPath { get; private set; } + + public string MutableResourcesPath { get; private set; } + + public string MutableResourcesRelativePath { get; private set; } + + public string PersistentDataRelativePath + { + get + { + EnsurePersistentDataPathExists(); + return m_persistentDataRelativePath; + } + } + + public string PersistentDataPath + { + get + { + EnsurePersistentDataPathExists(); + return GetPersistentDataPathInternal(); + } + } + + public UnityPackageDefinition[] Dependencies { get; private set; } + + #endregion + + #region Constructors + + public UnityPackageDefinition(string name, string displayName, + string version, string defaultInstallPath = null, + string mutableResourcesPath = "Assets/Resources", string persistentDataRelativePath = null, + params UnityPackageDefinition[] dependencies) + { + // Set properties + Name = name; + DisplayName = displayName; + Version = version; + DefaultInstallPath = defaultInstallPath ?? $"Assets/{Name}"; + UpmInstallPath = $"Packages/{Name}"; + MutableResourcesPath = mutableResourcesPath; + Dependencies = dependencies; + + // Derived properties + MutableResourcesRelativePath = mutableResourcesPath.Replace("Assets/Resources", "").TrimStart('/'); + m_persistentDataRelativePath = persistentDataRelativePath ?? $"VoxelBusters/{string.Join("", displayName.Split(' '))}"; + } + + #endregion + + #region Private methods + + private void EnsurePersistentDataPathExists() + { + var fullPath = GetPersistentDataPathInternal(); + IOServices.CreateDirectory(fullPath, overwrite: false); + } + + private string GetPersistentDataPathInternal() + { + return IOServices.CombinePath(Application.persistentDataPath, m_persistentDataRelativePath); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/UnityPackageDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/UnityPackageDefinition.cs.meta new file mode 100644 index 00000000..6e4a6200 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/UnityPackageDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82b361b76bebe4d0a903cecf540fb732 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/VBException.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/VBException.cs new file mode 100644 index 00000000..30ca8a72 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/VBException.cs @@ -0,0 +1,59 @@ +using System; + +namespace VoxelBusters.CoreLibrary +{ + public class VBException : Exception + { + #region Properties + + public string Domain { get; private set; } + + public int ErrorCode { get; private set; } + + #endregion + + #region Constructors + + public VBException(string message, int errorCode = -1, Exception innerException = null) + : base(message, innerException) + { + // set properties + ErrorCode = errorCode; + } + + public VBException(string message, Exception innerException) + : this(message, -1, innerException) + { } + + #endregion + + #region Create methods + + public static VBException NotImplemented(string messsage = "Not implemented.") + { + return new VBException(messsage); + } + + public static VBException NotSupported(string messsage = "Not supported.") + { + return new VBException(messsage); + } + + public static VBException InvalidOperation(string messsage = "Invalid operation.") + { + return new VBException(messsage); + } + + public static VBException ArgumentNull(string property) + { + return new VBException(string.Format("{0} is null.", property)); + } + + public static VBException SwitchCaseNotImplemented(object value) + { + return new VBException(string.Format("Switch case for {0} is not implemented.", value)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/VBException.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/VBException.cs.meta new file mode 100644 index 00000000..144b510f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/VBException.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 996d9b17d37854d94ae153f0efe8a652 +timeCreated: 1596314726 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ValidationResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ValidationResult.cs new file mode 100644 index 00000000..b2a3e3c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ValidationResult.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class ValidationResult + { + #region Static properties + + public static ValidationResult Success { get; private set;} + + #endregion + + #region Properties + + public bool IsValid { get; private set; } + + public Error Error { get; private set; } + + #endregion + + #region Constructors + + static ValidationResult() + { + // set static property values + Success = new ValidationResult(isValid: true, error: null); + } + + private ValidationResult(bool isValid, Error error = null) + { + // set properties + IsValid = isValid; + Error = error; + } + + #endregion + + #region Create methods + + public static ValidationResult CreateError(Error error) + { + return new ValidationResult( + isValid: false, + error: error); + } + + public static ValidationResult CreateError(string domain = null, int code = -1, string description = "") + { + return new ValidationResult( + isValid: false, + error: new Error(domain, code, description)); + } + + #endregion + + #region Base class methods + + public override string ToString() + { + return $"(IsValid: {IsValid} Error: {Error})"; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ValidationResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ValidationResult.cs.meta new file mode 100644 index 00000000..5affe975 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DataModels/ValidationResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 464bc3697d6e443e79eba11ae189f5af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns.meta new file mode 100644 index 00000000..a882615e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8a3bcee99b5cf4b2288bfe0ffd59b4ec +folderAsset: yes +timeCreated: 1547778314 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/PrivateSingletonBehaviour.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/PrivateSingletonBehaviour.cs new file mode 100644 index 00000000..a6f2c444 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/PrivateSingletonBehaviour.cs @@ -0,0 +1,197 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public abstract class PrivateSingletonBehaviour : MonoBehaviour where T : MonoBehaviour + { + #region Static fields + + [ClearOnReload] + private static T s_sharedInstance = null; + + [ClearOnReload(ClearOnReloadOption.Default)] + private static readonly object s_objectLock = new object(); + + [ClearOnReload(customValue: false)] + private static bool s_isDestroyed = false; + + #endregion + + #region Fields + + [SerializeField] + private bool m_isPersistent = true; + + private bool m_isInitialised = false; + + private bool m_forcedDestroy = false; + + #endregion + + #region Static properties + + public static bool IsSingletonActive => (s_sharedInstance != null); + + #endregion + + #region Static methods + + protected static T GetSingleton() + { + var objectType = typeof(T); + if (s_isDestroyed) + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, $"{objectType} instance is already destroyed."); + return null; + } + + lock (s_objectLock) + { + if (s_sharedInstance == null) + { + // find all the instances that exist in the screen + var sceneInstances = FindObjectsByType(objectType, FindObjectsSortMode.None) as T[]; + if (sceneInstances.Length > 0) + { + // save first element and remove others + s_sharedInstance = sceneInstances[0]; + for (int iter = 1; iter < sceneInstances.Length; iter++) + { + Destroy(sceneInstances[iter].gameObject); + } + } + // create new instance + else if (s_sharedInstance == null) + { + string singletonName = objectType.Name; + s_sharedInstance = new GameObject(singletonName).AddComponent(); + } + } + } + + // make sure object passed is initialised + var instance = (PrivateSingletonBehaviour)(object)s_sharedInstance; + if (!instance.m_isInitialised) + { + instance.Init(); + } + + return s_sharedInstance; + } + + protected static bool TryGetSingleton(out T singleton) + { + singleton = GetSingleton(); + + return (singleton != null); + } + + #endregion + + #region Unity methods + + private void Awake() + { + if (!m_isInitialised) + { + Init(); + } + } + + private void Start() + { + if (s_sharedInstance == this) + { + OnSingletonStart(); + } + } + + private void OnDestroy() + { + if (s_sharedInstance == this) + { + s_sharedInstance = null; + s_isDestroyed = !m_forcedDestroy; + OnSingletonDestroy(); + } + } + + #endregion + + #region Lifecycle methods + + protected virtual void OnSingletonAwake() + { } + + protected virtual void OnSingletonStart() + { } + + protected virtual void OnSingletonDestroy() + { } + + #endregion + + #region Private methods + + private void Init() + { + // update flag indicating that instance is initialised + m_isInitialised = true; + + // resolve singleton reference + if (s_sharedInstance == null) + { + s_sharedInstance = this as T; + } + else if (s_sharedInstance != this) + { + Destroy(gameObject); + return; + } + + // invoke internal awake method + OnSingletonAwake(); + + // mark object as persistent, if specified + if (m_isPersistent) + { + DontDestroyOnLoad(gameObject); + } + } + + #endregion + + #region ISingletonBehaviour implementation + + public bool IsPersistent + { + get + { + return m_isPersistent; + } + set + { + m_isPersistent = value; + } + } + + public void DestorySingleton(bool immediate = true) + { + if (s_sharedInstance == this) + { + m_forcedDestroy = true; + if (immediate) + { + DestroyImmediate(gameObject); + } + else + { + Destroy(gameObject); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/PrivateSingletonBehaviour.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/PrivateSingletonBehaviour.cs.meta new file mode 100644 index 00000000..083b42a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/PrivateSingletonBehaviour.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4b9151ffe47f14def86de74a01351995 +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonBehaviour.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonBehaviour.cs new file mode 100644 index 00000000..b4abb748 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonBehaviour.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public abstract class SingletonBehaviour : PrivateSingletonBehaviour where T : MonoBehaviour + { + #region Static properties + + /// + /// Returns the singleton instance. + /// + /// The instance. + public static T Instance => GetSingleton(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonBehaviour.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonBehaviour.cs.meta new file mode 100644 index 00000000..92dd2484 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonBehaviour.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 86bc6b7ce122a492fa170d576be4fef2 +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonObject.cs new file mode 100644 index 00000000..d4004788 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonObject.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class SingletonObject where T : class + { + #region Static fields + + [ClearOnReload] + private static T s_sharedInstance = null; + + #endregion + + #region Static properties + + public static T Instance => ObjectHelper.CreateInstanceIfNull( + ref s_sharedInstance, + CreateInstance); + + #endregion + + #region Private static methods + + private static T CreateInstance() + { + // get non-public constructors + var ctors = typeof(T).GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic); + if (!Array.Exists(ctors, (ci) => ci.GetParameters().Length == 0)) + { + throw new VBException("Non-public ctor() note found."); + } + + // get reference to default non-public constructor. + var ctor = Array.Find(ctors, (ci) => ci.GetParameters().Length == 0); + + // invoke constructor and return resulting object. + return ctor.Invoke(new object[] {}) as T; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonObject.cs.meta new file mode 100644 index 00000000..7d4da54a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/DesignPatterns/SingletonObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6fd5341cccf6d4932ab66c7d464d434a +timeCreated: 1576677030 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events.meta new file mode 100644 index 00000000..70327585 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c351d0072c38447938ecc73f29085f7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/EventHandlerCollection.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/EventHandlerCollection.cs new file mode 100644 index 00000000..6806fa99 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/EventHandlerCollection.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class EventHandlerCollection where T : IEventHandler + { + #region Fields + + private List m_handlers = new List(); + + #endregion + + #region Delegates + + public delegate void EventFunction(T item); + + #endregion + + #region Public methods + + public int IndexOf(T obj) + { + // precondition + Assert.IsArgNotNull(obj, nameof(obj)); + + for (int iter = 0; iter < m_handlers.Count; iter++) + { + if (EqualityComparer.Default.Equals(m_handlers[iter], obj)) + { + return iter; + } + } + return -1; + } + + public bool Contains(T obj) + { + return (-1 != IndexOf(obj)); + } + + public bool Add(T obj) + { + // precondition + Assert.IsArgNotNull(obj, nameof(obj)); + + // add object + if (!Contains(obj)) + { + int index = m_handlers.BinarySearch(obj); + if (index < 0) + { + m_handlers.Insert(~index, obj); + } + else + { + m_handlers.Insert(index, obj); + } + + return true; + } + + return false; + } + + public bool Remove(T handler) + { + // precondition + Assert.IsArgNotNull(handler, nameof(handler)); + + // remove object + int index = IndexOf(handler); + if (index != -1) + { + m_handlers.RemoveAt(index); + return true; + } + return false; + } + + public void SendEvent(EventFunction function) + { + // precondition + Assert.IsArgNotNull(function, nameof(function)); + + // invoke action on every compatible object + var array = m_handlers.ToArray(); + int count = m_handlers.Count; + for (int iter = 0; iter < count; iter++) + { + try + { + var current = array[iter]; + if (current != null) + { + function(current); + } + } + catch (Exception exception) + { + DebugLogger.LogException(CoreLibraryDomain.Default, exception); + } + } + } + + #endregion + + #region Nested types + + private class EventHandlerComparer : IComparer + { + #region IComparer implementation + + public int Compare(T x, T y) + { + if (x == null) + { + if (y == null) + { + return 0; + } + else + { + return -1; + } + } + else + { + if (y == null) + { + return 1; + } + else + { + return x.CallbackOrder.CompareTo(y.CallbackOrder); + } + } + } + + #endregion + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/EventHandlerCollection.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/EventHandlerCollection.cs.meta new file mode 100644 index 00000000..73840a2d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/EventHandlerCollection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d9f68cb6c25ca4a26842648e93568575 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/IEventHandler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/IEventHandler.cs new file mode 100644 index 00000000..73995703 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/IEventHandler.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Base interface that all event handlers inherit from. + /// + [IncludeInDocs] + public interface IEventHandler + { + int CallbackOrder { get; } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/IEventHandler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/IEventHandler.cs.meta new file mode 100644 index 00000000..e2a9a380 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Events/IEventHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6326ebca5027d4ee7b2e168a41b01535 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces.meta new file mode 100644 index 00000000..9981d7b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d09b55026caf4dc586cc604917a643b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ExternalServiceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ExternalServiceProvider.cs new file mode 100644 index 00000000..742cd05e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ExternalServiceProvider.cs @@ -0,0 +1,82 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Provides an interface to connect external services used by the plugin. + /// + public static class ExternalServiceProvider + { + #region Static properties + + private static IJsonServiceProvider s_jsonServiceProvider; + + private static ISaveServiceProvider s_saveServiceProvider; + + private static ILocalisationServiceProvider s_localisationServiceProvider; + + #endregion + + #region Static fields + + /// + /// Gets or sets the JSON service provider. + /// + /// The JSON service provider. + public static IJsonServiceProvider JsonServiceProvider + { + get + { + return s_jsonServiceProvider; + } + set + { + // validate property + Assert.IsPropertyNotNull(value, "value"); + + // set value + s_jsonServiceProvider = value; + } + } + + /// + /// Gets or sets the save service provider. + /// + /// The save service provider. + public static ISaveServiceProvider SaveServiceProvider + { + get + { + return s_saveServiceProvider; + } + set + { + // validate property + Assert.IsPropertyNotNull(value, "value"); + + // set value + s_saveServiceProvider = value; + } + } + + public static ILocalisationServiceProvider LocalisationServiceProvider + { + get + { + return s_localisationServiceProvider; + } + set + { + // validate property + Assert.IsPropertyNotNull(value, "value"); + + // set value + s_localisationServiceProvider = value; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ExternalServiceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ExternalServiceProvider.cs.meta new file mode 100644 index 00000000..a92309dd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ExternalServiceProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: add81dcba5652491caa73048e9bee1b1 +timeCreated: 1550517833 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IJsonServiceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IJsonServiceProvider.cs new file mode 100644 index 00000000..83431196 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IJsonServiceProvider.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Adapter interface for supporting json conversion compatible with the plugin. + /// + public interface IJsonServiceProvider + { + #region Methods + + /// + /// Generate a JSON representation of the given object. + /// + /// The json. + /// Object. + string ToJson(object obj); + + /// + /// Create an object from specified JSON representation. + /// + /// The object. + /// Json string. + object FromJson(string jsonString); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IJsonServiceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IJsonServiceProvider.cs.meta new file mode 100644 index 00000000..bc3f515f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IJsonServiceProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c3225614eed7647a3a416754ef6ea830 +timeCreated: 1550517846 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ILocalisationServiceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ILocalisationServiceProvider.cs new file mode 100644 index 00000000..a39f8a9d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ILocalisationServiceProvider.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface ILocalisationServiceProvider + { + string GetLocalisedString(string key, string defaultValue); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ILocalisationServiceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ILocalisationServiceProvider.cs.meta new file mode 100644 index 00000000..fd708f0c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ILocalisationServiceProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f3d4b29cb44b49d7ade649008c9e4de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ISaveServiceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ISaveServiceProvider.cs new file mode 100644 index 00000000..c1520f9a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ISaveServiceProvider.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + /// + /// Adapter interface for supporting save service compatible with the plugin. + /// + public interface ISaveServiceProvider + { + #region Methods + + int GetInt(string key, int defaultValue = 0); + + float GetFloat(string key, float defaultValue = 0f); + + string GetString(string key, string defaultValue = null); + + string[] GetStringArray(string key, string[] defaultValue = null); + + void SetInt(string key, int value); + + void SetFloat(string key, float value); + + void SetString(string key, string value); + + void SetStringArray(string key, string[] value); + + void RemoveKey(string key); + + void Save(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ISaveServiceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ISaveServiceProvider.cs.meta new file mode 100644 index 00000000..8f8d548b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/ISaveServiceProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 292e03e286b8d4a2c80cece8fa14ff54 +timeCreated: 1552894294 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IValidator.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IValidator.cs new file mode 100644 index 00000000..f6a97583 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IValidator.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface IValidator + { + #region Methods + + /// + /// Validate this instance. + /// + /// The validation result. + ValidationResult Validate(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IValidator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IValidator.cs.meta new file mode 100644 index 00000000..c2651fab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Interfaces/IValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b04d72e3421d643078c6df509e6ce27b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers.meta new file mode 100644 index 00000000..edadc7f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 84927570c65be4c65807cabdb839d13e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/CommandProcessor.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/CommandProcessor.cs new file mode 100644 index 00000000..7952dcaf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/CommandProcessor.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; + +namespace VoxelBusters.CoreLibrary +{ + public class CommandProcessor + { + #region Fields + + private List m_inprogressCommands; + + private List m_pendingCommands; + + #endregion + + #region Properties + + public CommandExecutionOrder ExecutionOrder { get; private set; } + + #endregion + + #region Events + + public event Callback OnCompletion; + + #endregion + + #region Constructors + + public CommandProcessor(CommandExecutionOrder order) + { + // set properties + m_inprogressCommands = new List(); + m_pendingCommands = new List(); + ExecutionOrder = order; + } + + #endregion + + #region Command methods + + public void AddCommand(ICommand command) + { + Assert.IsArgNotNull(command, nameof(command)); + + if (CommandExecutionOrder.None == ExecutionOrder) + { + ProcessCommandInternal(command); + } + else if (CommandExecutionOrder.Sequential == ExecutionOrder) + { + // add command to queue + m_pendingCommands.Add(command); + } + } + + public void InvalidateAll() + { + m_pendingCommands.Clear(); + } + + #endregion + + #region Public methods + + public void Update() + { + if (CommandExecutionOrder.None == ExecutionOrder) + { + ProcessInprogressCommands(); + } + else if (CommandExecutionOrder.Sequential == ExecutionOrder) + { + ProcessCommandsInSequentialOrder(); + } + } + + #endregion + + #region Private methods + + private void ProcessCommandInternal(ICommand command) + { + // add item to the tracker + m_inprogressCommands.Add(command); + + // execute action associated with the command + command.Execute(); + } + + private void ProcessInprogressCommands() + { + // parse through the inprogress commands and remove the completed ones + for (int iter = 0; iter < m_inprogressCommands.Count; iter++) + { + var command = m_inprogressCommands[iter]; + if (command.IsDone) + { + m_inprogressCommands.RemoveAt(iter); + iter--; + + // send completion event + PostCommandCompleteEvent(command); + } + } + } + + private void ProcessCommandsInSequentialOrder() + { + // check whether active command is processed + if (m_inprogressCommands.Count > 0) + { + var command = m_inprogressCommands[0]; + if (!command.IsDone) + { + return; + } + + // notify that command is completed + m_inprogressCommands.RemoveAt(0); + PostCommandCompleteEvent(command); + } + + // execute command available in the pool + if (m_pendingCommands.Count > 0) + { + var newCommand = m_pendingCommands[0]; + m_pendingCommands.RemoveAt(0); + + ProcessCommandInternal(newCommand); + } + } + + private void PostCommandCompleteEvent(ICommand command) + { + OnCompletion?.Invoke(command); + } + + #endregion + + #region Nested types + + [Serializable] + public class CommandEvent : UnityEvent + { } + + public enum CommandExecutionOrder + { + None, + + Sequential, + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/CommandProcessor.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/CommandProcessor.cs.meta new file mode 100644 index 00000000..91e839ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/CommandProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 705d21dd94a3a4304998c44f34fab18a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/ICommand.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/ICommand.cs new file mode 100644 index 00000000..be3b8c6b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/ICommand.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public interface ICommand + { + #region Properties + + bool IsDone { get; } + + Error Error { get; } + + #endregion + + #region Methods + + void Execute(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/ICommand.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/ICommand.cs.meta new file mode 100644 index 00000000..ab3dd534 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Managers/ICommand.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee1b33b1e7223438bad27e46264abad6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc.meta new file mode 100644 index 00000000..2b0ce3ce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e208fb9bf46b403cbbe6846c27b1438 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/Assert.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/Assert.cs new file mode 100644 index 00000000..b39cc219 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/Assert.cs @@ -0,0 +1,107 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class Assert + { + #region Static methods + + public static void IsNotNull(object obj, string message) + { + if (obj == null) + { + throw new VBException(message); + } + } + + public static void IsNull(object obj, string message) + { + if (obj != null) + { + throw new VBException(message); + } + } + + public static void IsPropertyNotNull(object obj, string property) + { + if (obj == null) + { + throw new VBException(string.Format("{0} is null.", property)); + } + } + + public static void IsArgNotNull(object obj, string argName) + { + if (obj == null) + { + throw new VBException(string.Format("Arg {0} is null.", argName)); + } + } + + public static void AreNotEqual(object obj1, object obj2, string message) + { + if (obj1 == obj2) + { + throw new VBException(message); + } + } + + public static void AreNotEqual(T value, T target, string message) + { + if (EqualityComparer.Default.Equals(value, target)) + { + throw new VBException(message); + } + } + + public static void AreEqual(T value, T target, string message) + { + if (!EqualityComparer.Default.Equals(value, target)) + { + throw new VBException(message); + } + } + + public static void IsTrue(bool status, string message) + { + if (!status) + { + throw new VBException(message); + } + } + + public static void IsFalse(bool status, string message) + { + if (status) + { + throw new VBException(message); + } + } + + public static void IsNotZero(int value, string message) + { + AreNotEqual(value, 0, message); + } + + public static void IsNotNullOrEmpty(string value, string message) + { + IsFalse(string.IsNullOrEmpty(value), message); + } + + public static void IsNotNullOrEmpty(T[] array, string name) + { + if (array == null) + { + throw new VBException(string.Format("{0} is null.", name)); + } + if (0 == array.Length) + { + throw new VBException(string.Format("{0} is empty.", name)); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/Assert.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/Assert.cs.meta new file mode 100644 index 00000000..07ca9d24 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/Assert.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e783dcfe5edcf4e0db2dd73c5f7c5f9e +timeCreated: 1596367778 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/DebugLogger.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/DebugLogger.cs new file mode 100644 index 00000000..ef698630 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/DebugLogger.cs @@ -0,0 +1,194 @@ +using System.Collections.Generic; +using UnityEngine; + +using Exception = System.Exception; + +namespace VoxelBusters.CoreLibrary +{ + public static class DebugLogger + { + #region Constants + + private const string kDefaultTag = "VoxelBusters"; + + #endregion + + #region Static properties + + private static Dictionary TagLevelMap { get; set; } + + private static LogLevel DefaultLogLevel { get; set; } + + #endregion + + #region Constructors + + static DebugLogger() + { + // Set properties + TagLevelMap = new Dictionary(); + DefaultLogLevel = LogLevel.Critical; + } + + #endregion + + #region Static methods + + public static void SetLogLevel(LogLevel value, params string[] tags) + { + // Set value + if (tags.IsNullOrEmpty()) + { + DefaultLogLevel = value; + return; + } + + // Update tag based settings + foreach (var tag in tags) + { + TagLevelMap[tag] = value; + } + } + + #endregion + + #region Log methods + + public static void Log(string message, Object context = null) + { + Log(kDefaultTag, message, context); + } + + public static void Log(string tag, string message, Object context = null) + { + // Check whether the specified request is allowed + if (IgnoreLog(LogLevel.Info, tag)) return; + + Debug.Log($"[{tag}] {message}", context); + } + + public static void LogWarning(string message, Object context = null) + { + LogWarning(kDefaultTag, message, context); + } + + public static void LogWarning(string tag, string message, Object context = null) + { + // Check whether the specified request is allowed + if (IgnoreLog(LogLevel.Warning, tag)) return; + + Debug.LogWarning($"[{tag}] {message}", context); + } + + public static void LogError(string message, Object context = null) + { + LogError(kDefaultTag, message, context); + } + + public static void LogError(string tag, string message, Object context = null) + { + // Check whether the specified request is allowed + if (IgnoreLog(LogLevel.Error, tag)) return; + + Debug.LogError($"[{tag}] {message}", context); + } + + public static void LogException(Exception exception, Object context = null) + { + LogException(kDefaultTag, exception, context); + } + + public static void LogException(string tag, Exception exception, Object context = null) + { + // Check whether the specified request is allowed + if (IgnoreLog(LogLevel.Critical, tag)) return; + + Debug.LogError($"[{tag}] {exception}", context); + } + + #endregion + + #region Obsolete methods + + [System.Obsolete("This method is deprecated. Use Log instead.", false)] + public static void LogFormat(string format, params object[] arguments) + { + LogFormat(null, format, kDefaultTag, arguments); + } + + [System.Obsolete("This method is deprecated. Use Log instead.", false)] + public static void LogFormat(Object context, string format, params object[] arguments) + { + // Check whether logging is required + if (IgnoreLog(LogLevel.Info)) return; + + var formattedMessage = $"[VoxelBusters] {string.Format(format, arguments)}"; + Debug.Log(formattedMessage, context); + } + + [System.Obsolete("This method is deprecated. Use LogWarning instead.", false)] + public static void LogWarningFormat(string format, params object[] arguments) + { + LogWarningFormat(null, format, arguments); + } + + [System.Obsolete("This method is deprecated. Use LogWarning instead.", false)] + public static void LogWarningFormat(Object context, string format, params object[] arguments) + { + // Check whether logging is required + if (IgnoreLog(LogLevel.Warning)) return; + + var formattedMessage = "[VoxelBusters] " + string.Format(format, arguments); + Debug.LogWarning(formattedMessage, context); + } + + [System.Obsolete("This method is deprecated. Use LogError instead.", false)] + public static void LogErrorFormat(string format, params object[] arguments) + { + LogErrorFormat(null, format, arguments); + } + + [System.Obsolete("This method is deprecated. Use LogError instead.", false)] + public static void LogErrorFormat(Object context, string format, params object[] arguments) + { + // Check whether logging is required + if (IgnoreLog(LogLevel.Error)) return; + + var formattedMessage = "[VoxelBusters] " + string.Format(format, arguments); + Debug.LogError(formattedMessage, context); + } + + #endregion + + #region Private static methods + + private static bool IgnoreLog(LogLevel level, string tag = null) + { + if ((tag == null) || !TagLevelMap.TryGetValue(tag, out LogLevel allowedLogLevel)) + { + allowedLogLevel = DefaultLogLevel; + } + + return (level < allowedLogLevel); + } + + #endregion + + #region Nested types + + public enum LogLevel + { + Info = 0, + + Warning, + + Error, + + Critical, + + None + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/DebugLogger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/DebugLogger.cs.meta new file mode 100644 index 00000000..d4037219 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/DebugLogger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b418785d5aa4a4bc7bc51eb1078e6799 +timeCreated: 1575981659 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ListPool{T}.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ListPool{T}.cs new file mode 100644 index 00000000..976667d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ListPool{T}.cs @@ -0,0 +1,57 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class ListPool + { + #region Static fields + + private static ObjectPool> s_listObjectPool; + + #endregion + + #region Static methods + + public static List Get() + { + EnsureInitialized(); + + return s_listObjectPool.Get(); + } + + public static void Release(List obj) + { + EnsureInitialized(); + + s_listObjectPool.Add(obj); + } + + #endregion + + #region Private static methods + + private static void EnsureInitialized() + { + if (s_listObjectPool != null) return; + + s_listObjectPool = new ObjectPool>( + createFunc: OnCreateItem, + actionOnGet: null, + actionOnAdd: OnReleaseItem); + } + + private static List OnCreateItem() + { + return new List(capacity: 8); + } + + private static void OnReleaseItem(List item) + { + item.Clear(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ListPool{T}.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ListPool{T}.cs.meta new file mode 100644 index 00000000..af228166 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ListPool{T}.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d202487821edb44b8b3c334e1f4d02a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ObjectPool{T}.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ObjectPool{T}.cs new file mode 100644 index 00000000..babaf57b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ObjectPool{T}.cs @@ -0,0 +1,96 @@ +// credits: https://bitbucket.org/Unity-Technologies/ui/src/31cbc456efd5ed74cba398ec1a101a31f66716db/UnityEngine.UI/UI/Core/Utility/ObjectPool.cs +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class ObjectPool where T : class + { + #region Fields + + private readonly Stack m_stack; + + private readonly System.Func m_createFunc; + + private readonly Callback m_actionOnGet; + + private readonly Callback m_actionOnAdd; + + private readonly Callback m_actionOnRelease; + + #endregion + + #region Properties + + public int CountAll { get; private set; } + + public int CountActive { get { return CountAll - CountInactive; } } + + public int CountInactive { get { return m_stack.Count; } } + + #endregion + + #region Constructors + + public ObjectPool(System.Func createFunc, Callback actionOnGet = null, + Callback actionOnAdd = null, Callback actionOnRelease = null) + { + m_stack = new Stack(capacity: 16); + m_createFunc = createFunc; + m_actionOnGet = actionOnGet; + m_actionOnAdd = actionOnAdd; + m_actionOnRelease = actionOnRelease; + } + + #endregion + + #region Public methods + + public T Get() + { + // remove item + T element; + if (m_stack.Count == 0) + { + element = m_createFunc(); + CountAll++; + } + else + { + element = m_stack.Pop(); + } + + // send event + m_actionOnGet?.Invoke(element); + + return element; + } + + public void Add(T element) + { + if (m_stack.Count > 0 && ReferenceEquals(m_stack.Peek(), element)) + { + Debug.LogError("Internal error. Trying to destroy object that is already released to pool."); + } + + // send event + m_actionOnAdd?.Invoke(element); + + // add item + m_stack.Push(element); + } + + public void Reset() + { + CountAll = 0; + while (m_stack.Count > 0) + { + var item = m_stack.Pop(); + m_actionOnRelease?.Invoke(item); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ObjectPool{T}.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ObjectPool{T}.cs.meta new file mode 100644 index 00000000..655d7045 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Misc/ObjectPool{T}.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a1033bddacd44cb48c1fc9292cc984a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking.meta new file mode 100644 index 00000000..be3afee0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4dc3bbb6c530d4fc687fc6dc1f1c7ba3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking/RestClient.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking/RestClient.cs new file mode 100644 index 00000000..0c48e485 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking/RestClient.cs @@ -0,0 +1,82 @@ +using System.Collections; +using System.Collections.Generic; +using Newtonsoft.Json; +using UnityEngine; +using UnityEngine.Networking; + +namespace VoxelBusters.CoreLibrary +{ + internal class RestClient + { + #region Static fields + + [ClearOnReload] + private static RestClient s_sharedInstance; + + #endregion + + #region Static properties + + public static RestClient SharedInstance => ObjectHelper.CreateInstanceIfNull( + ref s_sharedInstance, + () => new RestClient()); + + #endregion + + #region Constructors + + public RestClient() + { + var settings = new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore, + Formatting = Formatting.None, + MissingMemberHandling = MissingMemberHandling.Ignore, + }; + JsonConvert.DefaultSettings = () => settings; + } + + #endregion + + #region Static methods + + public static string EscapeUrl(string url) + { + return System.Uri.EscapeUriString(url); + } + + #endregion + + #region Public methods + + public void StartWebRequest(UnityWebRequest request, System.Action onSuccess, + System.Action onError) + { + DebugLogger.Log(CoreLibraryDomain.Default, $"Starting web request: {request.url}."); + request.SendWebRequest().completed += (obj) => + { + // Parse response + if ((request.responseCode >= 200) && (request.responseCode <= 301)) + { + DebugLogger.Log(CoreLibraryDomain.Default, $"Status: {request.responseCode} Result: {request.downloadHandler.text}."); + var result = JsonConvert.DeserializeObject(request.downloadHandler.text); + onSuccess(result); + } + else + { + var error = request.downloadHandler.text; + DebugLogger.LogError(CoreLibraryDomain.Default, $"Status: {request.responseCode} Error: {error}."); + onError(error); + } + }; + } + + public byte[] ConvertObjectToBytes(TData data) + { + var jsonStr = JsonConvert.SerializeObject(data); + return System.Text.Encoding.UTF8.GetBytes(jsonStr); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking/RestClient.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking/RestClient.cs.meta new file mode 100644 index 00000000..85176e0a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Networking/RestClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a15ecf7c2e0a54e5b9b99ab8d4db67f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup.meta new file mode 100644 index 00000000..75912317 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9991300776ae94a94a300daff99f90c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/CoreLibrarySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/CoreLibrarySettings.cs new file mode 100644 index 00000000..17b233f1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/CoreLibrarySettings.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// A common library for all Voxel Busters's plugins. +/// +namespace VoxelBusters.CoreLibrary +{ + public class CoreLibrarySettings + { + #region Static fields + + private static UnityPackageDefinition s_package; + + #endregion + + #region Static properties + + internal static UnityPackageDefinition Package => ObjectHelper.CreateInstanceIfNull( + ref s_package, + () => + { + return new UnityPackageDefinition( + name: "com.voxelbusters.corelibrary", + displayName: "Core Library", + version: "1.0.0", + defaultInstallPath: $"Assets/Plugins/VoxelBusters/CoreLibrary"); + }); + + public static string Name => Package.Name; + + public static string DisplayName => Package.DisplayName; + + public static string Version => Package.Version; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/CoreLibrarySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/CoreLibrarySettings.cs.meta new file mode 100644 index 00000000..6251b561 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/CoreLibrarySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f69cc138576446bdb236b719f3a744c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsObject.cs new file mode 100644 index 00000000..edaf7686 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsObject.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class SettingsObject : ScriptableObject + { + #region Events + + public event Callback OnSettingsUpdated; + + #endregion + + #region Base methods + + protected virtual void OnValidate() + { + OnSettingsUpdated?.Invoke(); + } + + #endregion + + #region Private methods + + protected virtual void UpdateLoggerSettings() { } + + internal virtual void OnEditorReload() + { + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsObject.cs.meta new file mode 100644 index 00000000..00f147be --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ab434722b943d44019b2e12eb1e64e18 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsPropertyGroup.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsPropertyGroup.cs new file mode 100644 index 00000000..228dd5a2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsPropertyGroup.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + [SerializeField] + public abstract class SettingsPropertyGroup + { + #region Fields + + [SerializeField] + [HideInInspector] + private bool m_isEnabled = true; + + #endregion + + #region Properties + + public bool IsEnabled + { + get + { + return m_isEnabled; + } + set + { + m_isEnabled = value; + } + } + + public string Name { get; private set; } + + #endregion + + #region Constructors + + protected SettingsPropertyGroup(string name, bool isEnabled = true) + { + // set properties + m_isEnabled = isEnabled; + Name = name; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsPropertyGroup.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsPropertyGroup.cs.meta new file mode 100644 index 00000000..0c4a56ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Setup/SettingsPropertyGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88b33b3a6141c4b25a5b29bdc48f93a6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities.meta new file mode 100644 index 00000000..913eccc4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6981b02092dc848a489e2800c0cd4e90 +folderAsset: yes +timeCreated: 1562583572 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationLifecycleObserver.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationLifecycleObserver.cs new file mode 100644 index 00000000..3c751ef1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationLifecycleObserver.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class ApplicationLifecycleObserver : SingletonBehaviour + { + [ClearOnReload(ClearOnReloadOption.Default)] + List m_listeners = new List(); + + #region Public methods + + public static ApplicationLifecycleObserver Initialize() + { + return GetSingleton(); + } + + public void AddListener(IApplicationLifecycleListener listener) + { + m_listeners.Add(listener); + } + + public void RemoveListener(IApplicationLifecycleListener listener) + { + m_listeners.Remove(listener); + } + #endregion + + private void OnApplicationFocus(bool hasFocus) + { + foreach(var listener in m_listeners) + { + listener.OnApplicationFocus(hasFocus); + } + } + + private void OnApplicationPause(bool pauseStatus) + { + foreach(var listener in m_listeners) + { + listener.OnApplicationPause(pauseStatus); + } + } + + private void OnApplicationQuit() + { + foreach(var listener in m_listeners) + { + listener.OnApplicationQuit(); + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationLifecycleObserver.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationLifecycleObserver.cs.meta new file mode 100644 index 00000000..ddbd9a37 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationLifecycleObserver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 267b9d3c66a104583ab37cbc4e6e3a8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationServices.cs new file mode 100644 index 00000000..3bab9af7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationServices.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class ApplicationServices + { + #region Static fields + + //public static float OriginalTimeScale { get; set; } + private static float s_originalTimeScale; + + #endregion + + #region Constructors + + static ApplicationServices() + { + Initialize(); + } + + #endregion + + #region Static methods + + [ExecuteOnReload] + private static void Initialize() + { + //OriginalTimeScale = Time.timeScale; + } + + public static void SetApplicationPaused(bool pause) + { + if (pause) + { + // cache original value + //OriginalTimeScale = Time.timeScale; + s_originalTimeScale = Time.timeScale; + + // set new value + Time.timeScale = 0f; + } + else + { + //Time.timeScale = OriginalTimeScale; + Time.timeScale = s_originalTimeScale; + } + } + + public static RuntimePlatform GetActivePlatform() + { + return Application.platform; + } + + public static RuntimePlatform GetActiveOrSimulationPlatform() + { +#if UNITY_EDITOR + return ConvertBuildTargetToRuntimePlatform(UnityEditor.EditorUserBuildSettings.activeBuildTarget); +#else + return Application.platform; +#endif + } + + public static bool IsPlayingOrSimulatingMobilePlatform() + { +#if UNITY_EDITOR + var platform = GetActiveOrSimulationPlatform(); + return (platform == RuntimePlatform.Android) || (platform == RuntimePlatform.IPhonePlayer); +#else + return Application.isMobilePlatform; +#endif + } + +#if UNITY_EDITOR + public static RuntimePlatform ConvertBuildTargetToRuntimePlatform(UnityEditor.BuildTarget buildTarget) + { + switch (buildTarget) + { + case UnityEditor.BuildTarget.iOS: + return RuntimePlatform.IPhonePlayer; + + case UnityEditor.BuildTarget.tvOS: + return RuntimePlatform.tvOS; + + case UnityEditor.BuildTarget.Android: + return RuntimePlatform.Android; + + case UnityEditor.BuildTarget.StandaloneOSX: + return RuntimePlatform.OSXPlayer; + + case UnityEditor.BuildTarget.StandaloneWindows: + case UnityEditor.BuildTarget.StandaloneWindows64: + return RuntimePlatform.WindowsPlayer; + + case UnityEditor.BuildTarget.WebGL: + return RuntimePlatform.WebGLPlayer; + + default: + return Application.platform; + } + } +#endif + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationServices.cs.meta new file mode 100644 index 00000000..1321a447 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ApplicationServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d504bedbd29942489d9921a68180697 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/CollectionUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/CollectionUtility.cs new file mode 100644 index 00000000..5fcccc5e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/CollectionUtility.cs @@ -0,0 +1,252 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class CollectionUtility + { + #region Extension methods + + public static bool IsNullOrEmpty(this IList list) + { + return (list == null) || (list.Count == 0); + } + + public static bool AddUnique(this IList list, T item) + { + if (null == list) return false; + + if (!list.Contains(item)) + { + list.Add(item); + return true; + } + return false; + } + + public static IList Add(this IList list, System.Func condition, System.Func getItem) + { + if ((list != null) && condition()) + { + list.Add(getItem()); + } + return list; + } + + public static void AddOrReplace(this List list, T item, System.Predicate match) + { + int replaceIndex = list.FindIndex(match); + if (-1 == replaceIndex) + { + list.Add(item); + } + else + { + list[replaceIndex] = item; + } + } + + public static bool Remove(this List list, System.Predicate match) + { + int targetIndex = list.FindIndex(match); + if (targetIndex != -1) + { + list.RemoveAt(targetIndex); + return true; + } + return false; + } + + public static T GetItemAt(this IList list, int index, bool throwError = true) + { + // Check whether item is within bounds + if (throwError || ((index >= 0) && (index < list.Count))) + { + return list[index]; + } + return default(T); + } + + public static void AddFirst(this IList list, T item) + { + list.Insert(0, item); + } + + public static void AddLast(this IList list, T item) + { + list.Add(item); + } + + public static T PopFirst(this IList list) + { + var item = list[0]; + list.RemoveAt(0); + + return item; + } + + public static T PopLast(this IList list) + { + int lastIndex = list.Count - 1; + var item = list[lastIndex]; + list.RemoveAt(lastIndex); + + return item; + } + + public static void ForEach(this IList list, System.Action action) + { + foreach (var item in list) + { + action(item); + } + } + + public static TOutput[] ConvertAll(this IList source, System.Converter converter, System.Predicate match = null) + { + var newList = new List(source.Count); + foreach (var item in source) + { + if ((match != null) && !match(item)) continue; + + var convertedItem = converter(item); + newList.Add(convertedItem); + } + return newList.ToArray(); + } + + #endregion + + #region IDictionary methods + + public static bool IsNullOrEmpty(this IDictionary dict) + { + return (dict == null) || (dict.Count == 0); + } + + public static bool ContainsKeyPath(this IDictionary dictionary, string keyPath) + { + if (string.IsNullOrEmpty(keyPath)) return false; + + try + { + var pathComponents = keyPath.Split('/'); + int count = pathComponents.Length; + var currentDict = dictionary; + + for (int pIter = 0; pIter < count; pIter++) + { + string key = pathComponents[pIter]; + if (currentDict == null || !currentDict.Contains(key)) + { + return false; + } + + // Update reference to object at current key path + currentDict = currentDict[key] as IDictionary; + } + return true; + } + catch (System.Exception exception) + { + Debug.LogWarning($"[CoreLibrary] {exception.Message}"); + return false; + } + } + + public static T GetIfAvailable(this IDictionary dictionary, string key, T defaultValue = default(T)) + { + if (key == null || !dictionary.Contains(key)) return defaultValue; + + object value = dictionary[key]; + var targetType = typeof(T); + + if (value == null) + { + return defaultValue; + } + if (targetType.IsInstanceOfType(value)) + { + return (T)value; + } + +#if !NETFX_CORE + if (targetType.IsEnum) +#else + if (targetType.GetTypeInfo().IsEnum) +#endif + { + return (T)System.Enum.ToObject(targetType, value); + } + else + { + return (T)System.Convert.ChangeType(value, targetType); + } + } + + public static T GetIfAvailable(this IDictionary dictionary, string key, string path) + { + // Trim path at start + if (path != null) + { + // Trim start and end slash if exists. + path = path.TrimStart('/').TrimEnd('/'); + } + + if (!string.IsNullOrEmpty(key)) + { + if (string.IsNullOrEmpty(path)) + { + return dictionary.GetIfAvailable(key); + } + else + { + var pathComponents = path.Split('/'); + var currentDict = dictionary; + + // Here traverse to the path + foreach (string each in pathComponents) + { + if (currentDict.Contains(each)) + { + currentDict = currentDict[each] as IDictionary; + } + else + { + Debug.LogError($"[CoreLibrary]Path not found. Path={path}"); + return default(T); + } + } + return currentDict.GetIfAvailable(key); + } + } + else + { + return default(T); + } + } + + public static string GetKey(this IDictionary dictionary, T value) + { + string key = null; + if (value != null) + { + var keys = dictionary.Keys; + foreach (string eachKey in keys) + { + var eachValue = dictionary[eachKey] as object; + if (eachValue != null && eachValue.Equals(value)) + { + key = eachKey; + break; + } + } + } + + return key; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/CollectionUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/CollectionUtility.cs.meta new file mode 100644 index 00000000..d41802ed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/CollectionUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 087f3ca9621e347e29c8666e1db6f153 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ComponentUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ComponentUtility.cs new file mode 100644 index 00000000..aed8393b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ComponentUtility.cs @@ -0,0 +1,88 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class ComponentUtility + { + #region Static methods + + public static T AddComponentIfNotFound(this GameObject gameObject) where T : Component + { + var component = gameObject.GetComponent(); + if (null == component) + { + component = gameObject.AddComponent(); + } + return component; + } + + public static TBase AddUniqueComponent(this GameObject gameObject, System.Type type) where TBase : Component + { + // remove components except the specified type + var components = gameObject.GetComponents(); + var targetComponent = default(TBase); + foreach (var item in components) + { + if (item.GetType() == type) + { + targetComponent = item; + continue; + } + Object.DestroyImmediate(item); + } + + // create a new instance if component does not exist + if (type != null) + { + return (targetComponent != null) + ? targetComponent + : gameObject.AddComponent(type) as TBase; + } + else + { + return null; + } + } + + public static T GetComponentInPredecessor(this MonoBehaviour monoBehaviour) where T : Component + { + var parentTransform = monoBehaviour.transform.parent; + while (parentTransform) + { + var targetComponent = parentTransform.GetComponent(); + if (targetComponent) + { + return targetComponent; + } + parentTransform = parentTransform.parent; + } + + return null; + } + + public static T[] GetComponentsInChildren(this Component component, bool includeParent, bool includeInactive) where T : Component + { + var components = component.GetComponentsInChildren(includeInactive); + if (includeParent) + { + return components; + } + else + { + var childComponents = new List(); + foreach (var item in components) + { + if (item.transform != component.transform) + { + childComponents.Add(item); + } + } + + return childComponents.ToArray(); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ComponentUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ComponentUtility.cs.meta new file mode 100644 index 00000000..de73f58b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ComponentUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ca1ad03ecec0340abaec203005bb94f4 +timeCreated: 1575981712 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/EnumUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/EnumUtility.cs new file mode 100644 index 00000000..207a5174 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/EnumUtility.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class EnumUtility + { + #region Static methods + + public static string[] GetEnumNames(Type enumType, bool ignoreDefault = false) + { + var list = new List(); + foreach (var item in Enum.GetValues(enumType)) + { + list.Add(item.ToString()); + } + if (ignoreDefault) + { + list.RemoveAt(0); + } + return list.ToArray(); + } + + public static T[] GetEnumValues(bool ignoreDefault = false) + { + var list = new List(); + foreach (var item in Enum.GetValues(typeof(T))) + { + list.Add((T)item); + } + if (ignoreDefault) + { + list.RemoveAt(0); + } + return list.ToArray(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/EnumUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/EnumUtility.cs.meta new file mode 100644 index 00000000..df9778c5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/EnumUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e1abfa1e0b07f48619b6beabe63b3c83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/GameObjectUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/GameObjectUtility.cs new file mode 100644 index 00000000..a4d8ef90 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/GameObjectUtility.cs @@ -0,0 +1,109 @@ +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class GameObjectUtility + { + #region Static methods + + public static GameObject Instantiate(GameObject prefab, Transform parent = null) + { + var newGO = Object.Instantiate(prefab, parent: parent); + newGO.name = prefab.name; + + return newGO; + } + + public static GameObject Instantiate(GameObject prefab, System.Action onBeforeAwake) + { + var tempGO = new GameObject("Temp"); + tempGO.SetActive(false); + + var newInstance = Object.Instantiate(prefab, tempGO.transform); + newInstance.name = prefab.name; + + try + { + // call the onBeforeAwake method + onBeforeAwake(newInstance); + + return newInstance; + } + finally + { + // reset gameobject state + newInstance.transform.SetParent(null); + + // destroy temp object + Object.Destroy(tempGO); + } + } + + public static GameObject CreateChild(string childName, Transform parent) + { + return CreateChild(childName, Vector3.zero, Quaternion.identity, Vector3.one, parent); + } + + public static GameObject CreateChild(string childName, Vector3 localPosition, Quaternion localRotation, Vector3 localScale, Transform parent) + { + var containerGO = (parent is RectTransform) ? new GameObject(childName, typeof(RectTransform)) : new GameObject(childName); + + // set transform properties + var containerTrans = containerGO.transform; + containerTrans.SetParent(parent); + containerTrans.localPosition = localPosition; + containerTrans.localRotation = localRotation; + containerTrans.localScale = localScale; + + return containerGO; + } + + public static GameObject CreateGameObject(string name, System.Action onBeforeActive = null) + { + var gameObject = new GameObject(name); + try + { + if (onBeforeActive != null) + { + gameObject.SetActive(false); + onBeforeActive(gameObject); + } + } + finally + { + if (!gameObject.activeSelf) + { + gameObject.SetActive(true); + } + } + return gameObject; + } + + public static T CreateGameObjectWithComponent(string name, System.Action onBeforeAwake = null) where T : Component + { + var gameObject = new GameObject(name); + T component = default; + try + { + gameObject.SetActive(false); + component = gameObject.AddComponent(); + onBeforeAwake?.Invoke(component); + } + finally + { + gameObject.SetActive(true); + } + return component; + } + + public static void SetActive(this GameObject[] gameObjects, bool value) + { + for (int iter = 0; iter < gameObjects.Length; iter++) + { + gameObjects[iter].SetActive(value); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/GameObjectUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/GameObjectUtility.cs.meta new file mode 100644 index 00000000..c6c6294b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/GameObjectUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d162b9a2bfab04c2781ef252b67ef848 +timeCreated: 1575981712 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IApplicationLifecycleListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IApplicationLifecycleListener.cs new file mode 100644 index 00000000..b438e614 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IApplicationLifecycleListener.cs @@ -0,0 +1,9 @@ +namespace VoxelBusters.CoreLibrary +{ + public interface IApplicationLifecycleListener + { + void OnApplicationFocus(bool hasFocus); + void OnApplicationPause(bool pauseStatus); + void OnApplicationQuit(); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IApplicationLifecycleListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IApplicationLifecycleListener.cs.meta new file mode 100644 index 00000000..4c0ff0a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IApplicationLifecycleListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0025684c1ed374fe59ae77c0f232db24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IOServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IOServices.cs new file mode 100644 index 00000000..8b5ccaa5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IOServices.cs @@ -0,0 +1,279 @@ +using System; +using System.IO; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class IOServices + { + #region Static methods + + public static string CombinePath(params string[] paths) + { + return Path.Combine(paths); + } + + public static string GetAbsolutePath(string path) + { + if (string.IsNullOrEmpty(path)) + { + return Environment.CurrentDirectory; + } + + return Path.GetFullPath(path); + } + + public static string GetRelativePath(string referencePath, string path) + { + // folders must end in a slash + string directorySeparatorChar = Path.DirectorySeparatorChar.ToString(); + if (!referencePath.EndsWith(directorySeparatorChar)) + { + referencePath += Path.DirectorySeparatorChar; + // hack to stop getting unusual results + if (referencePath.StartsWith(directorySeparatorChar)) + { + referencePath += "a.tmp"; + } + } + + var referenceUri = new Uri(referencePath); + var pathUri = new Uri(path); + var relativeUri = referenceUri.MakeRelativeUri(pathUri); + return Uri.UnescapeDataString(relativeUri.ToString().Replace('/', Path.DirectorySeparatorChar)); + } + + #endregion + + #region Directory operations + + public static bool IsDirectory(string path) + { + var attr = File.GetAttributes(path); + return ((attr & FileAttributes.Directory) == FileAttributes.Directory); + } + + public static bool CreateDirectory(string path, bool overwrite = false) + { + if (DirectoryExists(path)) + { + if (!overwrite) + { + return false; + } + + DeleteDirectory(path, true); + } + + Directory.CreateDirectory(path); + return true; + } + + public static void DeleteDirectory(string path, bool recursive = true, bool throwError = false) + { + var directoryInfo = new DirectoryInfo(path); + if (!directoryInfo.Exists) + { + if (throwError) + { + throw new FileNotFoundException(); + } + return; + } + + directoryInfo.Delete(recursive); + } + + public static void ClearDirectory(string path) + { + var directoryInfo = new DirectoryInfo(path); + if (directoryInfo.Exists) + { + foreach (var file in directoryInfo.GetFiles()) + { + file.Delete(); + } + foreach (var dir in directoryInfo.GetDirectories()) + { + dir.Delete(true); + } + } + } + + public static string GetDirectoryName(string path) + { + return Path.GetDirectoryName(path); + } + + public static void CopyDirectory(string root, string dest, bool recursive, string filePattern = null) + { + // create sub folders + if (recursive) + { + foreach (var directory in Directory.GetDirectories(root)) + { + string dirName = Path.GetFileName(directory); + if (!Directory.Exists(Path.Combine(dest, dirName))) + { + Directory.CreateDirectory(Path.Combine(dest, dirName)); + } + CopyDirectory(directory, Path.Combine(dest, dirName), recursive, filePattern); + } + } + + // copy files + var files = (filePattern == null) ? Directory.GetFiles(root) : Directory.GetFiles(root, filePattern); + foreach (var file in files) + { + File.Copy(file, Path.Combine(dest, Path.GetFileName(file))); + } + } + + public static void MoveDirectory(string source, string destination) + { + try + { + var parent = Directory.GetParent(destination); + CreateDirectory(parent.FullName); + + Directory.Move(source, destination); + } + catch (Exception e) + { + Debug.LogException(e); + } + } + + public static bool DirectoryExists(string path) + { + return Directory.Exists(path); + } + + public static bool IsSubDirectory(string parent, string path) + { + var parentUri = new Uri(GetUriSafePath(parent)); + var childUri = new Uri(GetUriSafePath(Path.GetDirectoryName(path))); + return (parentUri != childUri) && parentUri.IsBaseOf(childUri); + } + + private static string GetUriSafePath(string path) + { + if(IsDirectory(path)) + { + return Path.Combine(path, $"{Path.PathSeparator}"); + } + + return path; + } + + public static string GetUniquePath(string path) + { + string uniquePath = path; + int tryCount = 0; + while (Directory.Exists(uniquePath)) + { + uniquePath = string.Format("{0}{1}", path, ++tryCount); + } + + return uniquePath; + } + + public static string GenerateFileName(string prefix, string extension) + { + return $"{prefix}_{DateTime.Now:yyyyMMddHHmmssfff}.{extension}"; + } + + #endregion + + #region File operations + + public static bool FileExists(string path) + { + return File.Exists(path); + } + + public static string GetFileName(string path) + { + return Path.GetFileName(path); + } + + public static void CreateFile(string path, string contents) + { + File.WriteAllText(path, contents); + } + + public static void CreateFile(string path, byte[] contents) + { + File.WriteAllBytes(path, contents); + } + + public static string ReadFile(string path) + { + return File.ReadAllText(path); + } + + public static byte[] ReadFileData(string path) + { + return File.ReadAllBytes(path); + } + + public static void CopyFile(string source, string destination, bool overwrite = true) + { + File.Copy(source, destination, overwrite); + } + + public static void MoveFile(string source, string destination) + { + if(File.Exists(source)) + { + File.Move(source, destination); + } + } + + public static void DeleteFile(string path, bool throwError = false) + { + if (!FileExists(path)) + { + if (throwError) + { + throw new FileNotFoundException(); + } + return; + } + + File.Delete(path); + } + + #endregion + + #region Hybrid methods + + public static void DeleteFileOrDirectory(string path, bool throwError = false) + { + var fileInfo = new FileInfo(path); + if (fileInfo.Exists) + { + if ((fileInfo.Attributes & FileAttributes.Directory) != 0) + { + DeleteDirectory(path, true, throwError); + } + else + { + DeleteFile(path, throwError); + } + } + } + + public static string GetFileNameWithoutExtension(string path) + { + return Path.GetFileNameWithoutExtension(path); + } + + public static string GetExtension(string path) + { + return Path.GetExtension(path); + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IOServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IOServices.cs.meta new file mode 100644 index 00000000..a5c69b1d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/IOServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f03251a97128b4f1c95bc72d0e6c0ca2 +timeCreated: 1595269876 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ObjectHelper.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ObjectHelper.cs new file mode 100644 index 00000000..4dec775e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ObjectHelper.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class ObjectHelper + { + #region Static methods + + public static T CreateInstanceIfNull(ref T reference, System.Func createFunc) where T : class + { + if (reference == null) + { + reference = createFunc(); + } + return reference; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ObjectHelper.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ObjectHelper.cs.meta new file mode 100644 index 00000000..7017ce8a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ObjectHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01a41eaf37cf94688b89e33c036289dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/PropertyHelper.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/PropertyHelper.cs new file mode 100644 index 00000000..7d3620cd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/PropertyHelper.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq.Expressions; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class PropertyHelper + { + #region Static methods + + public static string GetValueOrDefault(string value, string defaultValue = default) + { + if (string.IsNullOrEmpty(value)) return defaultValue; + + return value; + } + + public static string GetValueOrDefault(TInstance instance, Expression> fieldAccess, string value) + { + if (!string.IsNullOrEmpty(value)) return value; + + // Find default value using reflection + var fieldName = ReflectionUtility.GetFieldName(fieldAccess); + var fieldInfo = ReflectionUtility.GetField(typeof(TInstance), fieldName); + var attribute = ReflectionUtility.GetAttribute(fieldInfo); + return attribute.StringValue; + } + + public static TValue GetValueOrDefault(TInstance instance, Expression> fieldAccess, Nullable value) where TValue : struct + { + if (value != null) return value.GetValueOrDefault(); + + // Find default value using reflection + var fieldName = ReflectionUtility.GetFieldName(fieldAccess); + var fieldInfo = ReflectionUtility.GetField(typeof(TInstance), fieldName); + var attribute = ReflectionUtility.GetAttribute(fieldInfo); + return attribute.GetValue(); + } + + public static int GetConstrainedValue(TInstance instance, Expression> fieldAccess, int value) + { + var fieldName = ReflectionUtility.GetFieldName(fieldAccess); + var fieldInfo = ReflectionUtility.GetField(typeof(TInstance), fieldName); + var attribute = ReflectionUtility.GetAttribute(fieldInfo); + return Mathf.Clamp(value, (int)attribute.min, (int)attribute.max); + } + + public static float GetConstrainedValue(TInstance instance, Expression> fieldAccess, float value) + { + var fieldName = ReflectionUtility.GetFieldName(fieldAccess); + var fieldInfo = ReflectionUtility.GetField(typeof(TInstance), fieldName); + var attribute = ReflectionUtility.GetAttribute(fieldInfo); + return Mathf.Clamp(value, attribute.min, attribute.max); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/PropertyHelper.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/PropertyHelper.cs.meta new file mode 100644 index 00000000..a375eedc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/PropertyHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 153ea3dabf0e645058dbce17fc67436e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ReflectionUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ReflectionUtility.cs new file mode 100644 index 00000000..2e6e4aff --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ReflectionUtility.cs @@ -0,0 +1,298 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Reflection; +using UnityEngine; +using System.Linq; + +namespace VoxelBusters.CoreLibrary +{ + public static class SystemAssemblyName + { + public const string kCSharpFirstPass = "Assembly-CSharp-firstpass"; + public const string kCSharp = "Assembly-CSharp"; + } + + public static class ReflectionUtility + { + #region Type methods + + [System.Obsolete("Use method GetTypeFromAssemblyCSharp instead.", false)] + public static Type GetTypeFromCSharpAssembly(string typeName) + { + return GetType(SystemAssemblyName.kCSharp, typeName); + } + + [System.Obsolete("Use method GetTypeFromAssemblyCSharp instead.", false)] + public static Type GetTypeFromCSharpFirstPassAssembly(string typeName) + { + return GetType(SystemAssemblyName.kCSharpFirstPass, typeName); + } + + public static Type GetTypeFromAssemblyCSharp(string typeName, bool includeFirstPass = false) + { + Type targetType = null; + if (includeFirstPass) + { + targetType = GetType(SystemAssemblyName.kCSharpFirstPass, typeName); + }; + if (targetType == null) + { + targetType = GetType(SystemAssemblyName.kCSharp, typeName); + } + return targetType; + } + + public static Type GetType(string assemblyName, string typeName) + { + var targetAssembly = FindAssemblyWithName(assemblyName); + if (targetAssembly != null) + { + return targetAssembly.GetType(typeName, false); + } + + return null; + } + + public static Assembly FindAssemblyWithName(string assemblyName) + { + return Array.Find(AppDomain.CurrentDomain.GetAssemblies(), (item) => + { + return string.Equals(item.GetName().Name, assemblyName); + }); + } + + public static Type[] FindAllTypes(Predicate predicate = null) + { + var typeList = new List(); + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + foreach (var type in GetLoadableTypes(assembly)) + { + if ((predicate == null) || predicate(type)) + { + typeList.Add(type); + } + } + } + return typeList.ToArray(); + } + + public static bool TryGetCustomAttriute(this MethodInfo methodInfo, + Type attributeType, + out Attribute attribute, + bool inherit = false) + { + // Set default value + attribute = null; + + // Find custom attributes + var attributes = methodInfo.GetCustomAttributes(attributeType, inherit); + if (attributes.Length > 0) + { + attribute = attributes[0] as Attribute; + return true; + } + return false; + } + + public static bool TryGetCustomAttriute(this MethodInfo methodInfo, + out TAttribute attribute, + bool inherit = false) where TAttribute : Attribute + { + bool value = TryGetCustomAttriute(methodInfo: methodInfo, + attributeType: typeof(TAttribute), + attribute: out Attribute genericAttr, + inherit: inherit); + attribute = genericAttr as TAttribute; + return value; + } + + #endregion + + #region Create instance methods + + public static object CreateInstance(Type type, bool nonPublic = true) + { + return Activator.CreateInstance(type, nonPublic); + } + + public static object CreateInstance(Type type, params object[] args) + { + return Activator.CreateInstance(type, args); + } + + #endregion + + #region Attribute methods + + public static Dictionary FindTypesWithAttribute(Type attributeType, bool inherit = false) + { + var collection = new Dictionary(); + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + foreach (var type in GetLoadableTypes(assembly)) + { + if (type.IsClass == false) continue; + + var customAttributes = type.GetCustomAttributes(attributeType, inherit); + if (customAttributes.Length == 0) continue; + + collection.Add(type, Array.ConvertAll(customAttributes, (item) => item as Attribute)); + } + } + return collection; + } + + /* + public static Type[] FindTypesWithAttributes(Type attributeType, System.Func typeFilter = null, + System.Func methodFilter = null) + { + var targetTypes = new List(); + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + foreach (var type in assembly.GetTypes()) + { + if ((typeFilter != null) && !typeFilter(type)) continue; + + foreach (var method in type.GetRuntimeMethods()) + { + + } + + } + } + + return targetTypes.ToArray(); + } + */ + + #endregion + + #region Invoke methods + + public static object InvokeStaticMethod(this Type type, string method, params object[] parameters) + { + return type.GetMethod(method, BindingFlags.Public | BindingFlags.Static).Invoke(null, parameters); + } + + public static T InvokeStaticMethod(this Type type, string method, params object[] parameters) + { + return (T)InvokeStaticMethod(type, method, parameters); + } + + #endregion + + #region Modifier methods + + public static void SetPropertyValue(this object obj, string name, object value) + { + var type = obj.GetType(); + var bindingAttr = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; + var property = type.GetProperty(name, bindingAttr); + if (property != null) + { + if (property.DeclaringType != type) + { + property.DeclaringType.GetProperty(name, bindingAttr).SetValue(obj, value); + } + else + { + property.SetValue(obj, value); + } + } + } + + #endregion + + #region Constraints methods + + // Credits: Thomas Hourdel + public static string GetFieldName(Expression> fieldAccess) + { + var memberExpression = fieldAccess.Body as MemberExpression; + if (memberExpression != null) + { + return memberExpression.Member.Name; + } + throw new InvalidOperationException("Member expression expected"); + } + + public static FieldInfo GetField(Type type, string fieldName) + { + return type.GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance); + } + + public static TAttribute GetAttribute(FieldInfo field) where TAttribute : Attribute + { + return (TAttribute)Attribute.GetCustomAttribute(field, typeof(TAttribute)); + } + + // MinAttribute + public static void ConstrainMin(TInstance instance, Expression> fieldAccess, float value) + { + var fieldName = GetFieldName(fieldAccess); + var fieldInfo = GetField(typeof(TInstance), fieldName); + fieldInfo.SetValue(instance, Mathf.Max(value, GetAttribute(fieldInfo).min)); + } + + public static void ConstrainMin(TInstance instance, Expression> fieldAccess, int value) + { + var fieldName = GetFieldName(fieldAccess); + var fieldInfo = GetField(typeof(TInstance), fieldName); + fieldInfo.SetValue(instance, (int)Mathf.Max(value, GetAttribute(fieldInfo).min)); + } + + // RangeAttribute + public static void ConstrainRange(TInstance instance, Expression> fieldAccess, float value) + { + var fieldName = GetFieldName(fieldAccess); + var fieldInfo = GetField(typeof(TInstance), fieldName); + var attribute = GetAttribute(fieldInfo); + fieldInfo.SetValue(instance, Mathf.Clamp(value, attribute.min, attribute.max)); + } + + public static void ConstrainRange(TInstance instance, Expression> fieldAccess, int value) + { + var fieldName = GetFieldName(fieldAccess); + var fieldInfo = GetField(typeof(TInstance), fieldName); + var attribute = GetAttribute(fieldInfo); + fieldInfo.SetValue(instance, (int)Mathf.Clamp(value, attribute.min, attribute.max)); + } + + public static void ConstrainDefault(TInstance instance, Expression> fieldAccess, Func condition = null) + { + if ((condition != null) && !condition()) return; + + var fieldName = GetFieldName(fieldAccess); + var fieldInfo = GetField(typeof(TInstance), fieldName); + var attribute = GetAttribute(fieldInfo); + if (attribute != null) + { + fieldInfo.SetValue(instance, attribute.GetValue(fieldInfo.FieldType)); + } + } + + public static void ConstrainDefault(TInstance instance, Expression> fieldAccess, string value) + { + if (!string.IsNullOrEmpty(value)) return; + + ConstrainDefault(instance, fieldAccess); + } + + #endregion + + #region Private methods + + private static IEnumerable GetLoadableTypes(Assembly assembly) { + if (assembly == null) throw new ArgumentNullException("assembly"); + try { + return assembly.GetTypes(); + } catch (ReflectionTypeLoadException e) { + return e.Types.Where(t => t != null); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ReflectionUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ReflectionUtility.cs.meta new file mode 100644 index 00000000..cbdbb0c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ReflectionUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b8e3dad17bea4adba258ad4293b2ed6 +timeCreated: 1576213852 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ResourcesUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ResourcesUtility.cs new file mode 100644 index 00000000..bc18f5a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ResourcesUtility.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class ResourcesUtility + { + #region Static methods + + public static T LoadBuiltinAsset(string name) where T : Object + { + return Resources.Load(name); + } + + public static T LoadAsset(this UnityPackageDefinition package, string name) where T : Object + { + string path = $"{package.GetMutableResourcesPath()}/{name}"; + return Resources.Load(path); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ResourcesUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ResourcesUtility.cs.meta new file mode 100644 index 00000000..72e37338 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ResourcesUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a946811916dd488ba03ca679c9eaeff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformConstantUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformConstantUtility.cs new file mode 100644 index 00000000..b03ecb51 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformConstantUtility.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class RuntimePlatformConstantUtility + { + #region Static methods + + public static RuntimePlatformConstant FindConstantForActivePlatform(RuntimePlatformConstant[] array) + { + var activePlatform = ApplicationServices.GetActiveOrSimulationPlatform(); + return FindConstantForPlatform(array, activePlatform); + } + + public static RuntimePlatformConstant FindConstantForPlatform(RuntimePlatformConstant[] array, RuntimePlatform platform) + { + if (array != null) + { + return Array.Find(array, (item) => item.IsEqualToPlatform(platform)); + } + + return null; + } + + public static string GetConstantValueForActivePlatform(RuntimePlatformConstant[] array) + { + var targetConstant = FindConstantForActivePlatform(array); + return targetConstant?.Value; + } + + public static string GetConstantValueForPlatform(RuntimePlatformConstant[] array, RuntimePlatform platform) + { + var targetConstant = FindConstantForPlatform(array, platform); + return targetConstant?.Value; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformConstantUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformConstantUtility.cs.meta new file mode 100644 index 00000000..ec46103a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformConstantUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62434b2c5f2a4444582f820fe7c72d12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformUtility.cs new file mode 100644 index 00000000..1c2d1558 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformUtility.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class RuntimePlatformUtility + { + public static bool IsEditor(this RuntimePlatform other) + { + return (other == RuntimePlatform.OSXEditor) || + (other == RuntimePlatform.WindowsEditor) || + (other == RuntimePlatform.OSXEditor); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformUtility.cs.meta new file mode 100644 index 00000000..1497c8ec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/RuntimePlatformUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e40aaa960ac24750b85b0b753d4aa61 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ScreenUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ScreenUtility.cs new file mode 100644 index 00000000..9b3a4103 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ScreenUtility.cs @@ -0,0 +1,54 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public class ScreenUtility : PrivateSingletonBehaviour + { + #region Fields + + private bool m_captureFrame = false; + + private Callback m_callback = null; + + #endregion + + #region Static methods + + public static void CaptureFrame(Callback callback) + { + var instance = GetSingleton(); + instance.m_captureFrame = true; + instance.m_callback += callback; + } + + #endregion + + #region Unity methods + + private void LateUpdate() + { + if (m_captureFrame) + { + m_captureFrame = false; + StartCoroutine(CaptureFrameRoutine()); + } + } + + private IEnumerator CaptureFrameRoutine() + { + yield return new WaitForEndOfFrame(); + var texture = ScreenCapture.CaptureScreenshotAsTexture(); + + // send data + m_callback?.Invoke(texture); + + // cleanup + m_callback = null; + Object.Destroy(texture); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ScreenUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ScreenUtility.cs.meta new file mode 100644 index 00000000..919f6733 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/ScreenUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3bab61dc3fccd4c749247992476003d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/SystemUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/SystemUtility.cs new file mode 100644 index 00000000..0a86c7c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/SystemUtility.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using UnityEngine; +using UnityEngine.Networking; + +namespace VoxelBusters.CoreLibrary +{ + public static class SystemUtility + { + #region String methods + + public static string EscapeString(string value) + { + return UnityWebRequest.EscapeURL(value).Replace("+", "%20"); + } + + #endregion + + #region List methods + + public static object[] ConvertListToArray(IList list) + { + int count = list.Count; + var array = new object[count]; + for (int iter = 0; iter < count; iter++) + { + array[iter] = list[iter]; + } + + return array; + } + + public static TOutput[] ConvertEnumeratorItems(IEnumerator enumerator, Converter converter, bool includeNullObjects) + { + Assert.IsNotNull(enumerator, "Enumerator is null."); + + // create original data array from native data + var outputObjects = new List(capacity: 8); + while (enumerator.MoveNext()) + { + var inputObject = enumerator.Current; + var outputObject = converter(inputObject); + if (EqualityComparer.Default.Equals(outputObject, default(TOutput)) && !includeNullObjects) + { + DebugLogger.LogWarning(CoreLibraryDomain.Default, $"Failed to convert object with data {inputObject}."); + continue; + } + + // add object to list + outputObjects.Add(outputObject); + } + + return outputObjects.ToArray(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/SystemUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/SystemUtility.cs.meta new file mode 100644 index 00000000..301cf889 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/SystemUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e186d5a1769064da6b38b8014df4f562 +timeCreated: 1576146223 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TextureUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TextureUtility.cs new file mode 100644 index 00000000..0f25b185 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TextureUtility.cs @@ -0,0 +1,126 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class TextureUtility + { + #region Encode methods + + public static string GetMimeType(TextureEncodingFormat encodeFormat) + { + switch (encodeFormat) + { + case TextureEncodingFormat.JPG: + return MimeType.kJPGImage; + + case TextureEncodingFormat.PNG: + return MimeType.kPNGImage; + + default: + throw VBException.SwitchCaseNotImplemented(encodeFormat); + } + } + + public static byte[] Encode(this Texture2D texture) + { + string mimeType; + return Encode(texture, out mimeType); + } + + public static byte[] Encode(this Texture2D texture, out string mimeType) + { + switch (texture.format) + { + case TextureFormat.Alpha8: + case TextureFormat.ARGB32: + case TextureFormat.ARGB4444: + case TextureFormat.RGBA32: + case TextureFormat.RGBA4444: + case TextureFormat.BGRA32: + case TextureFormat.RGBAHalf: + case TextureFormat.RGBAFloat: + case TextureFormat.PVRTC_RGBA2: + case TextureFormat.PVRTC_RGBA4: + mimeType = MimeType.kPNGImage; + return texture.EncodeToPNG(); + + default: + mimeType = MimeType.kJPGImage; + return texture.EncodeToJPG(); + } + } + + public static byte[] Encode(this Texture2D texture, TextureEncodingFormat encodeFormat) + { + switch (encodeFormat) + { + case TextureEncodingFormat.JPG: + return ImageConversion.EncodeToJPG(texture); + + case TextureEncodingFormat.PNG: + return ImageConversion.EncodeToPNG(texture); + + default: + throw VBException.SwitchCaseNotImplemented(encodeFormat); + } + } + + public static byte[] Encode(this Texture2D texture, TextureEncodingFormat encodeFormat, out string mimeType) + { + string textEncodingName; + return Encode(texture, encodeFormat, out mimeType, out textEncodingName); + } + + public static byte[] Encode(this Texture2D texture, TextureEncodingFormat encodeFormat, out string mimeType, out string textEncodingName) + { + // set default values + mimeType = null; + textEncodingName = TextEncodingFormat.kUTF8; + + // convert to specified format + byte[] data = null; + switch (encodeFormat) + { + case TextureEncodingFormat.PNG: + data = texture.EncodeToPNG(); + mimeType = MimeType.kPNGImage; + break; + + case TextureEncodingFormat.JPG: + data = texture.EncodeToJPG(); + mimeType = MimeType.kJPGImage; + break; + } + + return data; + } + + #endregion + + #region Static methods + + public static string TakeScreenshot(string fileName) + { + return TakeScreenshot(Application.persistentDataPath, fileName); + } + + public static string TakeScreenshot(string directory, string fileName) + { + string filePath = directory + "/" + fileName; + + IOServices.CreateDirectory(directory); + + // delete existing file + IOServices.DeleteFileOrDirectory(filePath); + + // start Capturing + ScreenCapture.CaptureScreenshot(fileName); + + return filePath; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TextureUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TextureUtility.cs.meta new file mode 100644 index 00000000..c3516fa7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TextureUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e04b39855b3f04773a15f0de7df8ec9d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TransformUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TransformUtility.cs new file mode 100644 index 00000000..217c1d5e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TransformUtility.cs @@ -0,0 +1,49 @@ +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class TransformUtility + { + #region Extension methods + + public static Transform[] GetImmediateChildren(Transform transform) + { + int childCount = transform.childCount; + var children = new Transform[childCount]; + for (int iter = 0; iter < childCount; iter++) + { + children[iter] = transform.GetChild(iter); + } + return children; + } + + public static T FindComponentInChildren(GameObject gameObject, string name) + { + return gameObject.transform.Find(name).GetComponent(); + } + + public static void RemoveAllChilds(this Transform parent) + { + RemoveChildren(parent); + } + + public static void RemoveChildren(this Transform parent) + { + var children = GetImmediateChildren(parent); + for (int iter = 0; iter < children.Length; iter++) + { + Object.Destroy(children[iter].gameObject); + } + } + + public static bool RemoveChild(this Transform parent, int index) + { + if ((index < 0) || (index >= parent.childCount)) return false; + + Object.Destroy(parent.GetChild(index).gameObject); + return true; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TransformUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TransformUtility.cs.meta new file mode 100644 index 00000000..8a7c2a5c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/TransformUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 229d7d1e6da8f438c928f26c2380c443 +timeCreated: 1575981712 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityEngineUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityEngineUtility.cs new file mode 100644 index 00000000..b43d1d22 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityEngineUtility.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary +{ + public static class UnityEngineUtility + { + #region Screen methods + + public static Vector2 InvertScreenPosition(Vector2 position, bool invertX = true, bool invertY = true) + { + if (invertX) + { + position.x = Screen.width - position.x; + } + if (invertY) + { + position.y = Screen.height - position.y; + } + + return position; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityEngineUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityEngineUtility.cs.meta new file mode 100644 index 00000000..1021a442 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityEngineUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 10c0b5322ab5d4fa4911a13be90cf142 +timeCreated: 1576146571 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityPackagePathResolver.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityPackagePathResolver.cs new file mode 100644 index 00000000..04d0ccbd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityPackagePathResolver.cs @@ -0,0 +1,102 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace VoxelBusters.CoreLibrary +{ + public static class UnityPackagePathResolver + { + #region Static methods + + public static bool IsInstalledWithinAssets(this UnityPackageDefinition package) + { + return IOServices.DirectoryExists(package.DefaultInstallPath) && + IOServices.FileExists($"{package.DefaultInstallPath}/package.json"); + } + + public static string GetInstallPath(this UnityPackageDefinition package) + { + if (IsSupported()) + { + return IsInstalledWithinAssets(package) ? package.DefaultInstallPath : package.UpmInstallPath; + } + return null; + } + + public static string GetRuntimeScriptsPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: GetInstallPath(package), pathB: "Runtime"); + } + + public static string GetEditorScriptsPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: GetInstallPath(package), pathB: "Editor"); + } + + public static string GetEditorResourcesPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: GetInstallPath(package), pathB: "EditorResources"); + } + + public static string GetMutableResourcesPath(this UnityPackageDefinition package) + { + return package.MutableResourcesPath; + } + + public static string GetImmutableResourcesPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: GetInstallPath(package), pathB: "Resources"); + } + + public static string GetPackageResourcesPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: GetInstallPath(package), pathB: "PackageResources"); + } + + public static string GetFullPath(this UnityPackageDefinition package, string relativePath) + { + return CombinePath(pathA: GetInstallPath(package), pathB: relativePath); + } + + public static string GetMutableResourceRelativePath(this UnityPackageDefinition package, string name) + { + return CombinePath(pathA: package.MutableResourcesRelativePath, pathB: name); + } + + public static string GetExtrasPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: package.DefaultInstallPath, pathB: "Extras"); + } + + public static string GetEssentialsPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: package.DefaultInstallPath, pathB: "Essentials"); + } + + public static string GetGeneratedPath(this UnityPackageDefinition package) + { + return CombinePath(pathA: package.DefaultInstallPath, pathB: "Generated"); + } + + private static bool IsSupported() => Application.isEditor; + + private static string CombinePath(string pathA, string pathB) + { + if (pathA == null) + { + return null; + } + else if (pathA == "") + { + return pathB; + } + else + { + return $"{pathA}/{pathB}"; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityPackagePathResolver.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityPackagePathResolver.cs.meta new file mode 100644 index 00000000..6cddbc5c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/Utilities/UnityPackagePathResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94536336db51e46a1a20ed360ccd155f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/VoxelBusters.CoreLibrary.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/VoxelBusters.CoreLibrary.asmdef new file mode 100644 index 00000000..788137c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/VoxelBusters.CoreLibrary.asmdef @@ -0,0 +1,12 @@ +{ + "name": "VoxelBusters.CoreLibrary", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/VoxelBusters.CoreLibrary.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/VoxelBusters.CoreLibrary.asmdef.meta new file mode 100644 index 00000000..075e2436 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/CoreLibrary/VoxelBusters.CoreLibrary.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 46ee17e5fcc7f436f9df354a1efda6a4 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins.meta new file mode 100644 index 00000000..70c07ee0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 88f0438e9840c4f628aff17d6eb40019 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android.meta new file mode 100644 index 00000000..b3ebcea6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c0c933458bcaa4dfb865d7680c1741c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common.meta new file mode 100644 index 00000000..babaeae6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43a4fb87f52614e0e86314e33e590c42 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/JNIUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/JNIUtility.cs new file mode 100644 index 00000000..1f52bf01 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/JNIUtility.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public static class JNIUtility + { + public delegate T NativeJavaObjectConverter(AndroidJavaObject nativeObject); + + public static List GetList(this AndroidJavaObject nativeObject, NativeJavaObjectConverter converter) + { + if (nativeObject == null) + return null; + + int size = nativeObject.Call("size"); + + List list = new List(); + for (int eachIndex = 0; eachIndex < size; eachIndex++) + { + AndroidJNI.PushLocalFrame(128); + using (AndroidJavaObject eachNativeObject = nativeObject.Call("get", eachIndex)) + { + T newObject = converter(eachNativeObject); + list.Add(newObject); + } + AndroidJNI.PopLocalFrame(IntPtr.Zero); + } + + return list; + } + + + public static List GetList(this AndroidJavaObject nativeObject) + { + if (nativeObject == null) + return null; + + T[] array = AndroidJNIHelper.ConvertFromJNIArray(nativeObject.GetRawObject()); + return new List(array); + } + + public static string GetString(this AndroidJavaObject javaObject) + { + if (javaObject == null) + return null; + + return javaObject.Call("toString"); + } + + public static T Get(this AndroidJavaObject nativeObject, string getterName) + { + if (nativeObject == null) + return default(T); + + T value = nativeObject.Call(getterName); + return value; + } + + public static T GetArray(this AndroidJavaObject nativeObject) + { + + if (nativeObject == null) + return default(T); + + T value = AndroidJNIHelper.ConvertFromJNIArray(nativeObject.GetRawObject()); + return value; + } + + public static T GetEnum(this AndroidJavaObject nativeObject) where T:struct + { + int value = nativeObject.Call("ordinal"); + return (T)(object)value; + } + + public static Color GetColor(this AndroidJavaObject nativeObject) + { + float red = nativeObject.Call("getRed") / 255; + float green = nativeObject.Call("getRed") / 255; + float blue = nativeObject.Call("getRed") / 255; + float alpha = nativeObject.Call("alpha") / 255.0f; + + return new Color(red, green, blue, alpha); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/JNIUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/JNIUtility.cs.meta new file mode 100644 index 00000000..f3d94587 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/JNIUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 16d56bee7bda84a7c87d48ad8d648586 +timeCreated: 1547729646 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeActivity.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeActivity.cs new file mode 100644 index 00000000..b301bb00 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeActivity.cs @@ -0,0 +1,27 @@ +#if UNITY_ANDROID +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeActivity : NativeAndroidJavaObjectWrapper + { + public NativeActivity(AndroidJavaObject javaObject) : base("android.app.Activity", javaObject) + { + } + public NativeActivity(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + + public void RunOnUiThread(Action action) + { + m_nativeObject.Call("runOnUiThread", new AndroidJavaRunnable(() => + { + action(); + })); + } + + + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeActivity.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeActivity.cs.meta new file mode 100644 index 00000000..034d4a6f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeActivity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf0150c256d0841d39afa0fe600952ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeAndroidJavaObjectWrapper.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeAndroidJavaObjectWrapper.cs new file mode 100644 index 00000000..9664e30e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeAndroidJavaObjectWrapper.cs @@ -0,0 +1,116 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public abstract class NativeAndroidJavaObjectWrapper + { + protected AndroidJavaObject m_nativeObject; + protected string m_className; + + public AndroidJavaObject NativeObject + { + get + { + return m_nativeObject; + } + } + + public NativeAndroidJavaObjectWrapper(string className, params object[] args) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log(string.Format("Creating {0}", this.GetType())); +#endif + m_className = className; + m_nativeObject = new AndroidJavaObject(className, args); + } + + public NativeAndroidJavaObjectWrapper(string className, AndroidJavaObject androidJavaObject) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log(string.Format("Creating from AndroidJavaObject : {0}", this.GetType())); +#endif + m_className = className; + m_nativeObject = androidJavaObject; + } + + public NativeAndroidJavaObjectWrapper(NativeAndroidJavaObjectWrapper wrapper) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log(string.Format("Creating from wrapper : {0}", this.GetType())); +#endif + m_className = wrapper.GetClassName(); + m_nativeObject = wrapper.NativeObject; + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeAndroidJavaObjectWrapper() + { + //DebugLogger.Log("Destructor for " + this.GetType()); + } +#endif + + public static AndroidJavaObject CreateFromStatic(string className, string methodName, params object[] args) + { + AndroidJavaClass cls = new AndroidJavaClass(className); + AndroidJavaObject androidJavaObject = cls.CallStatic(methodName, args); + return androidJavaObject; + } + + public bool IsNull() + { + return m_nativeObject == null; + } + + protected T Get(string fieldName) + { + return m_nativeObject.Get(fieldName); + } + + protected void Set(string fieldName, T val) + { + m_nativeObject.Set(fieldName, val); + } + + protected void Call(string methodName, params object[] args) + { + if(!IsNull()) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + Debug.Log(string.Format("[Class : {0}] [Method : {1}]", this.GetType(), methodName)); +#endif + m_nativeObject.Call(methodName, args); + } + else + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + Debug.Log(string.Format("Null Call [Class : {0}] [Method : {1}]", this.GetType(), methodName)); +#endif + } + } + + protected T Call(string methodName, params object[] args) + { + if(!IsNull()) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + Debug.Log(string.Format("[Class : {0}] [Method : {1}]", this.GetType(), methodName)); +#endif + return m_nativeObject.Call(methodName, args); + } + else + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + Debug.Log(string.Format("Null Call [Class : {0}] [Method : {1}]", this.GetType(), methodName)); +#endif + return default(T); + } + } + + protected string GetClassName() + { + return m_className; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeAndroidJavaObjectWrapper.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeAndroidJavaObjectWrapper.cs.meta new file mode 100644 index 00000000..069147ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeAndroidJavaObjectWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aee0d2c592981459e851b12ada679d40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeArrayBuffer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeArrayBuffer.cs new file mode 100644 index 00000000..1bef615d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeArrayBuffer.cs @@ -0,0 +1,73 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeArrayBuffer : NativeAndroidJavaObjectWrapper + { + public NativeArrayBuffer(AndroidJavaObject androidJavaObject) : base("com.voxelbusters.android.essentialkit.common.ArrayBuffer", androidJavaObject) + { + } + + public int Size() + { + return m_nativeObject.Call("size"); + } + + public T Get(int index) + { + if (m_nativeObject == null) + return default(T); + + T instance; + if(IsStringOrPrimitive(typeof(T))) + { + instance = Call("get", index); + } + else + { + AndroidJavaObject androidJavaObject = Call("get", index); + instance = (T)Activator.CreateInstance(typeof(T), new object[] { androidJavaObject }); + } + + return instance; + } + + public T[] GetArray() + { + if (NativeObject == null) + return default(T[]); + + List list = new List(); + int size = Size(); + for (int i = 0; i < size; i++) + { + T each = Get(i); + list.Add(each); + } + + return list.ToArray(); + } + + private static bool IsStringOrPrimitive(Type type) + { + // Check if the type is string + if (type == typeof(string)) + { + return true; + } + + // Check if the type is a primitive type + if (type.IsPrimitive) + { + return true; + } + + return false; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeArrayBuffer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeArrayBuffer.cs.meta new file mode 100644 index 00000000..b71d38f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeArrayBuffer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a52488425b5bc4c80b4bb039aadb50c0 +timeCreated: 1581450433 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeByteBuffer.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeByteBuffer.cs new file mode 100644 index 00000000..62c2d716 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeByteBuffer.cs @@ -0,0 +1,68 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeByteBuffer : NativeAndroidJavaObjectWrapper + { +#region Fields + + private const string kClassName = "java.nio.ByteBuffer"; + private byte[] m_cachedBytes; + +#endregion + + public NativeByteBuffer(AndroidJavaObject androidJavaObject) : base(kClassName, androidJavaObject) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("Creating from android native object : " + androidJavaObject.GetRawObject()); +#endif + } + + public static NativeByteBuffer Wrap(byte[] array) + { + if(array == null) + return null; + + return Wrap(array.ToSBytes()); + } + + public static NativeByteBuffer Wrap(sbyte[] data) + { + if(data == null) + return null; + + NativeByteBuffer nativeByteBuffer = new NativeByteBuffer(CreateFromStatic(kClassName, "wrap", data)); + return nativeByteBuffer; + } + + public byte[] GetBytes() + { + if (m_nativeObject == null) + return default(byte[]); + + if(m_cachedBytes == null) + { + sbyte[] sbyteArray = Call("array"); + m_cachedBytes = sbyteArray.ToBytes(); + } + + return m_cachedBytes; + } + + public int size() + { + byte[] bytes = GetBytes(); + + if(bytes == null) + return 0; + + return bytes.Length; + } + + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeByteBuffer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeByteBuffer.cs.meta new file mode 100644 index 00000000..8cae680a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeByteBuffer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: af135a033c56e42e0a1b65e9c17e7f25 +timeCreated: 1581450433 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeContext.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeContext.cs new file mode 100644 index 00000000..3b5b2d38 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeContext.cs @@ -0,0 +1,13 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeContext : NativeAndroidJavaObjectWrapper + { + public NativeContext(AndroidJavaObject javaObject) : base("android.content.Context", javaObject) + { + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeContext.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeContext.cs.meta new file mode 100644 index 00000000..8436f86e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeContext.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fba83798072dc401eb1572b0d0202645 +timeCreated: 1581450433 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeDate.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeDate.cs new file mode 100644 index 00000000..e6e831d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeDate.cs @@ -0,0 +1,43 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeDate : NativeAndroidJavaObjectWrapper + { + private const string kClassName = "java.util.Date"; + public NativeDate() : base(kClassName) + { + m_nativeObject = new AndroidJavaObject(kClassName); + } + public NativeDate(AndroidJavaObject nativeObject) : base(kClassName, nativeObject) + { + } + + public void SetDateTime(DateTime dateTime) + { + DateTime epochReference = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + long epoch = Convert.ToInt64((dateTime - epochReference).TotalMilliseconds); + m_nativeObject.Call("setTime", epoch); + } + + public DateTime GetDateTime() + { + long epoch = m_nativeObject.Call("getTime")/1000; + DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + return dateTime.AddSeconds(epoch); + } + + public DateTime? GetDateTimeOptional(DateTime? defaultValue = null) + { + if(IsNull()) + return defaultValue; + + return GetDateTime(); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeDate.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeDate.cs.meta new file mode 100644 index 00000000..79be8150 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeDate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7ef75fbaca24c45aeb9babf47794f6c3 +timeCreated: 1581450433 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfo.cs new file mode 100644 index 00000000..683d7c40 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfo.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeErrorInfo : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeErrorInfo(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeErrorInfo(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeErrorInfo(int code, string description) : base(Native.kClassName ,code, description) + { + } + public NativeErrorInfo(string description) : base(Native.kClassName ,description) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeErrorInfo() + { + DebugLogger.Log("Disposing NativeErrorInfo"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public int GetCode() + { + return Call(Native.Method.kGetCode); + } + public string GetDescription() + { + return Call(Native.Method.kGetDescription); + } + public override string ToString() + { + return Call(Native.Method.kToString); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.utilities.common.ErrorInfo"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kGetCode = "getCode"; + internal const string kGetDescription = "getDescription"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfo.cs.meta new file mode 100644 index 00000000..6fe9bafd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e539da62bb21417e9d35885ea7a66e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfoExtensions.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfoExtensions.cs new file mode 100644 index 00000000..88092706 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfoExtensions.cs @@ -0,0 +1,14 @@ +#if UNITY_ANDROID +using System; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public static class NativeErrorInfoExtensions + { + public static Error Convert(this NativeErrorInfo nativeError, string domain = null) + { + return new Error(domain, nativeError.GetCode(), nativeError.GetDescription()); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfoExtensions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfoExtensions.cs.meta new file mode 100644 index 00000000..79b4ca32 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeErrorInfoExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91d2713f2f415490881b49d41d2374bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeException.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeException.cs new file mode 100644 index 00000000..229ffb87 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeException.cs @@ -0,0 +1,26 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeException : NativeAndroidJavaObjectWrapper + { + public NativeException(AndroidJavaObject androidJavaObject) : base("java.lang.Exception", androidJavaObject) + { + } + + public string GetMessage() + { + return m_nativeObject.Call("getMessage"); + } + + public void PrintStackTrace() + { + m_nativeObject.Call("printStackTrace"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeException.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeException.cs.meta new file mode 100644 index 00000000..3aaac7aa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeException.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49493f240600d4811af386b86122d57b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeFloat.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeFloat.cs new file mode 100644 index 00000000..e0c45de8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeFloat.cs @@ -0,0 +1,19 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeFloat : NativeAndroidJavaObjectWrapper + { + public NativeFloat(AndroidJavaObject javaObject) : base("android.lang.Float", javaObject) + { + } + + public float GetFloatValue() + { + float value = m_nativeObject.Call("floatValue"); + return value; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeFloat.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeFloat.cs.meta new file mode 100644 index 00000000..7001fe7e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeFloat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2f8dead3fff848ab9c31b0fbe8e9505 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeInteger.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeInteger.cs new file mode 100644 index 00000000..43a7c234 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeInteger.cs @@ -0,0 +1,19 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeInteger : NativeAndroidJavaObjectWrapper + { + public NativeInteger(AndroidJavaObject javaObject) : base("android.lang.Integer", javaObject) + { + } + + public int GetIntValue() + { + int value = m_nativeObject.Call("intValue"); + return value; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeInteger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeInteger.cs.meta new file mode 100644 index 00000000..cf5eb66f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeInteger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3f53da493eaf45c79617b8967119d3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeJSONObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeJSONObject.cs new file mode 100644 index 00000000..99c98922 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeJSONObject.cs @@ -0,0 +1,20 @@ +#if UNITY_ANDROID +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeJSONObject : NativeAndroidJavaObjectWrapper + { + public NativeJSONObject(AndroidJavaObject androidJavaObject) : base("org.json.JSONObject", androidJavaObject) + { + } + + public override string ToString() + { + return m_nativeObject.Call("toString"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeJSONObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeJSONObject.cs.meta new file mode 100644 index 00000000..8cc93277 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeJSONObject.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fc00b0292cce342b290bdd6496e360ca +timeCreated: 1547810936 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeList.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeList.cs new file mode 100644 index 00000000..7c2fe13c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeList.cs @@ -0,0 +1,37 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeList : NativeAndroidJavaObjectWrapper + { + public NativeList(AndroidJavaObject androidJavaObject) : base("java.util.List", androidJavaObject) + { + } + + public int Size() + { + return m_nativeObject.Call("size"); + } + + public List Get() + { + int size = Size(); + List list = new List(); + for (int eachIndex = 0; eachIndex < size; eachIndex++) + { + AndroidJNI.PushLocalFrame(128); + AndroidJavaObject eachNativeObject = m_nativeObject.Call("get", eachIndex); + var instance = (T)Activator.CreateInstance(typeof(T), new object[] { eachNativeObject }); + list.Add(instance); + AndroidJNI.PopLocalFrame(IntPtr.Zero); + } + + return list; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeList.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeList.cs.meta new file mode 100644 index 00000000..34b0653d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeList.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 98ed585e287844fabbbf2de65a052029 +timeCreated: 1581450433 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeObject.cs new file mode 100644 index 00000000..b946a8e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeObject.cs @@ -0,0 +1,13 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeObject : NativeAndroidJavaObjectWrapper + { + public NativeObject(AndroidJavaObject javaObject) : base("android.lang.Object", javaObject) + { + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeObject.cs.meta new file mode 100644 index 00000000..58eced72 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afd3edefd056c4b6d8d745b6a97dee1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeParcel.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeParcel.cs new file mode 100644 index 00000000..25e9d6c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeParcel.cs @@ -0,0 +1,13 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeParcel : NativeAndroidJavaObjectWrapper + { + public NativeParcel(AndroidJavaObject javaObject) : base("android.os.Parcel", javaObject) + { + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeParcel.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeParcel.cs.meta new file mode 100644 index 00000000..3f3178e0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeParcel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0785fa9caa0d44034a62ff5fb58ad1a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePoint.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePoint.cs new file mode 100644 index 00000000..b7e53d08 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePoint.cs @@ -0,0 +1,134 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativePoint : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public int X + { + get + { + return Get("x"); + } + + set + { + Set("x", value); + } + } + + + public int Y + { + get + { + return Get("y"); + } + + set + { + Set("y", value); + } + } + + + public const int CONTENTS_FILE_DESCRIPTOR = 1; + + public const int PARCELABLE_WRITE_RETURN_VALUE = 1; + + #endregion + + #region Constructor + + // Wrapper constructors + public NativePoint(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + + public NativePoint(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + + public NativePoint() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativePoint() + { + DebugLogger.Log("Disposing NativePoint"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public int DescribeContents() + { + return Call(Native.Method.kDescribeContents); + } + public bool Equals(NativeObject arg0) + { + return Call(Native.Method.kEquals, arg0.NativeObject); + } + public int HashCode() + { + return Call(Native.Method.kHashCode); + } + public void ReadFromParcel(NativeParcel arg0) + { + Call(Native.Method.kReadFromParcel, arg0.NativeObject); + } + public void Set(int arg0, int arg1) + { + Call(Native.Method.kSet, arg0, arg1); + } + public new string ToString() + { + return Call(Native.Method.kToString); + } + public void WriteToParcel(NativeParcel arg0, int arg1) + { + Call(Native.Method.kWriteToParcel, arg0.NativeObject, arg1); + } + + #endregion + + internal class Native + { + internal const string kClassName = "android.graphics.Point"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kHashCode = "hashCode"; + internal const string kWriteToParcel = "writeToParcel"; + internal const string kReadFromParcel = "readFromParcel"; + internal const string kEquals = "equals"; + internal const string kDescribeContents = "describeContents"; + internal const string kSet = "set"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePoint.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePoint.cs.meta new file mode 100644 index 00000000..ac833463 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db32d3ddeecf34f5ea9b94f4b917a45c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePointF.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePointF.cs new file mode 100644 index 00000000..d7bcfba5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePointF.cs @@ -0,0 +1,134 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativePointF : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public float X + { + get + { + return Get("x"); + } + + set + { + Set("x", value); + } + } + + + public float Y + { + get + { + return Get("y"); + } + + set + { + Set("y", value); + } + } + + + public const int CONTENTS_FILE_DESCRIPTOR = 1; + + public const int PARCELABLE_WRITE_RETURN_VALUE = 1; + + #endregion + + #region Constructor + + // Wrapper constructors + public NativePointF(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + + public NativePointF(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + + public NativePointF() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativePointF() + { + DebugLogger.Log("Disposing NativePointF"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static float Length(float arg0, float arg1) + { + return GetClass().CallStatic(Native.Method.kLength, arg0, arg1); + } + + #endregion + #region Public methods + + public int DescribeContents() + { + return Call(Native.Method.kDescribeContents); + } + public bool Equals(NativeObject arg0) + { + return Call(Native.Method.kEquals, arg0.NativeObject); + } + public int HashCode() + { + return Call(Native.Method.kHashCode); + } + public void ReadFromParcel(NativeParcel arg0) + { + Call(Native.Method.kReadFromParcel, arg0.NativeObject); + } + public new string ToString() + { + return Call(Native.Method.kToString); + } + public void WriteToParcel(NativeParcel arg0, int arg1) + { + Call(Native.Method.kWriteToParcel, arg0.NativeObject, arg1); + } + + #endregion + + internal class Native + { + internal const string kClassName = "android.graphics.PointF"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kHashCode = "hashCode"; + internal const string kWriteToParcel = "writeToParcel"; + internal const string kReadFromParcel = "readFromParcel"; + internal const string kLength = "length"; + internal const string kEquals = "equals"; + internal const string kDescribeContents = "describeContents"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePointF.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePointF.cs.meta new file mode 100644 index 00000000..fd4549af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativePointF.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13fbbbdbad7ee4ed1985df4da7241a58 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeProxy.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeProxy.cs new file mode 100644 index 00000000..86c5288e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeProxy.cs @@ -0,0 +1,31 @@ +#if UNITY_ANDROID +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public abstract class NativeProxyBase : AndroidJavaProxy + { + public NativeProxyBase(string interfaceName) : base(interfaceName) + { + } + + protected void DispatchOnMainThread(Callback action) + { + // Dispatch on Unity Thread + CallbackDispatcher.InvokeOnMainThread(action); + } + } + + public class NativeProxy : NativeProxyBase + { + protected T m_callback; + + public NativeProxy(T m_callback, string interfaceName) : base(interfaceName) + { + this.m_callback = m_callback; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeProxy.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeProxy.cs.meta new file mode 100644 index 00000000..af1623e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeProxy.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d05d6febe7ca94928964d47f5efe9c13 +timeCreated: 1547810936 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRect.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRect.cs new file mode 100644 index 00000000..f24c9d25 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRect.cs @@ -0,0 +1,299 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeRect : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public int Bottom + { + get + { + return Get("bottom"); + } + + set + { + Set("bottom", value); + } + } + + + public int Left + { + get + { + return Get("left"); + } + + set + { + Set("left", value); + } + } + + + public int Right + { + get + { + return Get("right"); + } + + set + { + Set("right", value); + } + } + + + public int Top + { + get + { + return Get("top"); + } + + set + { + Set("top", value); + } + } + + + public const int CONTENTS_FILE_DESCRIPTOR = 1; + + public const int PARCELABLE_WRITE_RETURN_VALUE = 1; + + #endregion + + #region Constructor + + // Wrapper constructors + public NativeRect(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + + public NativeRect(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + + public NativeRect() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeRect() + { + DebugLogger.Log("Disposing NativeRect"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static bool Intersects(NativeRect arg0, NativeRect arg1) + { + return GetClass().CallStatic(Native.Method.kIntersects, arg0.NativeObject, arg1.NativeObject); + } + public static NativeRect UnflattenFromString(string arg0) + { + AndroidJavaObject nativeObj = GetClass().CallStatic(Native.Method.kUnflattenFromString, arg0); + if(nativeObj != null) + { + NativeRect data = new NativeRect(nativeObj); + return data; + } + else + { + return default(NativeRect); + } + } + + #endregion + #region Public methods + + public int CenterX() + { + return Call(Native.Method.kCenterX); + } + public int CenterY() + { + return Call(Native.Method.kCenterY); + } + public bool Contains(int arg0, int arg1) + { + return Call(Native.Method.kContains, arg0, arg1); + } + public bool Contains(int arg0, int arg1, int arg2, int arg3) + { + return Call(Native.Method.kContains, arg0, arg1, arg2, arg3); + } + public bool Contains(NativeRect arg0) + { + return Call(Native.Method.kContains, arg0.NativeObject); + } + public int DescribeContents() + { + return Call(Native.Method.kDescribeContents); + } + public bool Equals(NativeObject arg0) + { + return Call(Native.Method.kEquals, arg0.NativeObject); + } + public float ExactCenterX() + { + return Call(Native.Method.kExactCenterX); + } + public float ExactCenterY() + { + return Call(Native.Method.kExactCenterY); + } + public string FlattenToString() + { + return Call(Native.Method.kFlattenToString); + } + public int HashCode() + { + return Call(Native.Method.kHashCode); + } + public int Height() + { + return Call(Native.Method.kHeight); + } + public void Inset(int arg0, int arg1) + { + Call(Native.Method.kInset, arg0, arg1); + } + public bool Intersect(NativeRect arg0) + { + return Call(Native.Method.kIntersect, arg0.NativeObject); + } + public bool Intersect(int arg0, int arg1, int arg2, int arg3) + { + return Call(Native.Method.kIntersect, arg0, arg1, arg2, arg3); + } + public bool Intersects(int arg0, int arg1, int arg2, int arg3) + { + return Call(Native.Method.kIntersects, arg0, arg1, arg2, arg3); + } + public bool IsEmpty() + { + return Call(Native.Method.kIsEmpty); + } + public void Offset(int arg0, int arg1) + { + Call(Native.Method.kOffset, arg0, arg1); + } + public void OffsetTo(int arg0, int arg1) + { + Call(Native.Method.kOffsetTo, arg0, arg1); + } + public void ReadFromParcel(NativeParcel arg0) + { + Call(Native.Method.kReadFromParcel, arg0.NativeObject); + } + public void Set(int arg0, int arg1, int arg2, int arg3) + { + Call(Native.Method.kSet, arg0, arg1, arg2, arg3); + } + public void Set(NativeRect arg0) + { + Call(Native.Method.kSet, arg0.NativeObject); + } + public void SetEmpty() + { + Call(Native.Method.kSetEmpty); + } + public bool SetIntersect(NativeRect arg0, NativeRect arg1) + { + return Call(Native.Method.kSetIntersect, arg0.NativeObject, arg1.NativeObject); + } + public void Sort() + { + Call(Native.Method.kSort); + } + public string ToShortString() + { + return Call(Native.Method.kToShortString); + } + public new string ToString() + { + return Call(Native.Method.kToString); + } + public void Union(int arg0, int arg1, int arg2, int arg3) + { + Call(Native.Method.kUnion, arg0, arg1, arg2, arg3); + } + public void Union(NativeRect arg0) + { + Call(Native.Method.kUnion, arg0.NativeObject); + } + public void Union(int arg0, int arg1) + { + Call(Native.Method.kUnion, arg0, arg1); + } + public int Width() + { + return Call(Native.Method.kWidth); + } + public void WriteToParcel(NativeParcel arg0, int arg1) + { + Call(Native.Method.kWriteToParcel, arg0.NativeObject, arg1); + } + + #endregion + + internal class Native + { + internal const string kClassName = "android.graphics.Rect"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kContains = "contains"; + internal const string kHashCode = "hashCode"; + internal const string kSetEmpty = "setEmpty"; + internal const string kOffsetTo = "offsetTo"; + internal const string kExactCenterX = "exactCenterX"; + internal const string kExactCenterY = "exactCenterY"; + internal const string kSetIntersect = "setIntersect"; + internal const string kWriteToParcel = "writeToParcel"; + internal const string kToShortString = "toShortString"; + internal const string kUnflattenFromString = "unflattenFromString"; + internal const string kIsEmpty = "isEmpty"; + internal const string kCenterX = "centerX"; + internal const string kCenterY = "centerY"; + internal const string kIntersects = "intersects"; + internal const string kIntersect = "intersect"; + internal const string kReadFromParcel = "readFromParcel"; + internal const string kFlattenToString = "flattenToString"; + internal const string kHeight = "height"; + internal const string kOffset = "offset"; + internal const string kEquals = "equals"; + internal const string kDescribeContents = "describeContents"; + internal const string kWidth = "width"; + internal const string kUnion = "union"; + internal const string kInset = "inset"; + internal const string kSort = "sort"; + internal const string kSet = "set"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRect.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRect.cs.meta new file mode 100644 index 00000000..390c3821 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6ff68bdc3ecd4704a99099727d6678a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRectF.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRectF.cs new file mode 100644 index 00000000..c6e02272 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRectF.cs @@ -0,0 +1,260 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EasyMLKit.NativePlugins.Android +{ + public class NativeRectF : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public float Bottom + { + get + { + return Get("bottom"); + } + + set + { + Set("bottom", value); + } + } + + + public float Left + { + get + { + return Get("left"); + } + + set + { + Set("left", value); + } + } + + + public float Right + { + get + { + return Get("right"); + } + + set + { + Set("right", value); + } + } + + + public float Top + { + get + { + return Get("top"); + } + + set + { + Set("top", value); + } + } + + + public const int CONTENTS_FILE_DESCRIPTOR = 1; + + public const int PARCELABLE_WRITE_RETURN_VALUE = 1; + + #endregion + + #region Constructor + + // Wrapper constructors + public NativeRectF(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + + public NativeRectF(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + + public NativeRectF() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG + ~NativeRectF() + { + DebugLogger.Log("Disposing NativeRectF"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static bool Intersects(NativeRectF arg0, NativeRectF arg1) + { + return GetClass().CallStatic(Native.Method.kIntersects, arg0.NativeObject, arg1.NativeObject); + } + + #endregion + #region Public methods + + public bool Contains(NativeRectF arg0) + { + return Call(Native.Method.kContains, arg0.NativeObject); + } + public bool Contains(float arg0, float arg1) + { + return Call(Native.Method.kContains, arg0, arg1); + } + public bool Contains(float arg0, float arg1, float arg2, float arg3) + { + return Call(Native.Method.kContains, arg0, arg1, arg2, arg3); + } + public int DescribeContents() + { + return Call(Native.Method.kDescribeContents); + } + public bool Equals(NativeObject arg0) + { + return Call(Native.Method.kEquals, arg0.NativeObject); + } + public int HashCode() + { + return Call(Native.Method.kHashCode); + } + public void Inset(float arg0, float arg1) + { + Call(Native.Method.kInset, arg0, arg1); + } + public bool Intersect(float arg0, float arg1, float arg2, float arg3) + { + return Call(Native.Method.kIntersect, arg0, arg1, arg2, arg3); + } + public bool Intersect(NativeRectF arg0) + { + return Call(Native.Method.kIntersect, arg0.NativeObject); + } + public bool Intersects(float arg0, float arg1, float arg2, float arg3) + { + return Call(Native.Method.kIntersects, arg0, arg1, arg2, arg3); + } + public void Offset(float arg0, float arg1) + { + Call(Native.Method.kOffset, arg0, arg1); + } + public void OffsetTo(float arg0, float arg1) + { + Call(Native.Method.kOffsetTo, arg0, arg1); + } + public void ReadFromParcel(NativeParcel arg0) + { + Call(Native.Method.kReadFromParcel, arg0.NativeObject); + } + public void Round(NativeRect arg0) + { + Call(Native.Method.kRound, arg0.NativeObject); + } + public void RoundOut(NativeRect arg0) + { + Call(Native.Method.kRoundOut, arg0.NativeObject); + } + public void Set(NativeRectF arg0) + { + Call(Native.Method.kSet, arg0.NativeObject); + } + public void Set(NativeRect arg0) + { + Call(Native.Method.kSet, arg0.NativeObject); + } + public void Set(float arg0, float arg1, float arg2, float arg3) + { + Call(Native.Method.kSet, arg0, arg1, arg2, arg3); + } + public void SetEmpty() + { + Call(Native.Method.kSetEmpty); + } + public bool SetIntersect(NativeRectF arg0, NativeRectF arg1) + { + return Call(Native.Method.kSetIntersect, arg0.NativeObject, arg1.NativeObject); + } + public void Sort() + { + Call(Native.Method.kSort); + } + public string ToShortString() + { + return Call(Native.Method.kToShortString); + } + public new string ToString() + { + return Call(Native.Method.kToString); + } + public void Union(float arg0, float arg1, float arg2, float arg3) + { + Call(Native.Method.kUnion, arg0, arg1, arg2, arg3); + } + public void Union(float arg0, float arg1) + { + Call(Native.Method.kUnion, arg0, arg1); + } + public void Union(NativeRectF arg0) + { + Call(Native.Method.kUnion, arg0.NativeObject); + } + public void WriteToParcel(NativeParcel arg0, int arg1) + { + Call(Native.Method.kWriteToParcel, arg0.NativeObject, arg1); + } + + #endregion + + internal class Native + { + internal const string kClassName = "android.graphics.RectF"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kContains = "contains"; + internal const string kHashCode = "hashCode"; + internal const string kRoundOut = "roundOut"; + internal const string kSetEmpty = "setEmpty"; + internal const string kOffsetTo = "offsetTo"; + internal const string kSetIntersect = "setIntersect"; + internal const string kWriteToParcel = "writeToParcel"; + internal const string kToShortString = "toShortString"; + internal const string kIntersects = "intersects"; + internal const string kIntersect = "intersect"; + internal const string kReadFromParcel = "readFromParcel"; + internal const string kOffset = "offset"; + internal const string kEquals = "equals"; + internal const string kDescribeContents = "describeContents"; + internal const string kRound = "round"; + internal const string kUnion = "union"; + internal const string kInset = "inset"; + internal const string kSort = "sort"; + internal const string kSet = "set"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRectF.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRectF.cs.meta new file mode 100644 index 00000000..3804e726 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeRectF.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f34ff82721d3e4f89be31b14ff23c1d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeUnityPluginUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeUnityPluginUtility.cs new file mode 100644 index 00000000..d3c6a74c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeUnityPluginUtility.cs @@ -0,0 +1,72 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using System; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeUnityPluginUtility + { + private static AndroidJavaObject s_context = null; + private static NativeContext s_nativeContext = null; + private static NativeActivity s_nativeActivity = null; + private static NativeViewGroup s_decorRootView = null; + + public static NativeActivity GetActivity() + { + if(s_nativeActivity == null) + { + s_nativeActivity = new NativeActivity(GetUnityActivity()); + } + return s_nativeActivity; + } + + public static NativeContext GetContext() + { + if (s_nativeContext == null) + { + s_nativeContext = new NativeContext(GetUnityActivity()); + } + return s_nativeContext; + } + + public static To[] Map(List fromList) + { + List list = new List(); + foreach (From each in fromList) + { + list.Add((To)Activator.CreateInstance(typeof(To), new object[] { each })); + } + + return list.ToArray(); + } + + public static NativeViewGroup GetDecorRootView() + { + if(s_decorRootView == null) + { + AndroidJavaObject activity = GetUnityActivity(); + AndroidJavaObject window = activity.Call("getWindow"); + AndroidJavaObject decorView = window.Call("getDecorView"); + AndroidJavaObject rootView = decorView.Call("getRootView"); + s_decorRootView = new NativeViewGroup(rootView); + } + + return s_decorRootView; + } + + private static AndroidJavaObject GetUnityActivity() + { + if (s_context == null) + { + AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + s_context = jc.GetStatic("currentActivity"); + } + return s_context; + } + + //Get root view group + } +} +#endif + \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeUnityPluginUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeUnityPluginUtility.cs.meta new file mode 100644 index 00000000..34894f7d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeUnityPluginUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20cb40962cc9d49309f241198d4206a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeViewGroup.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeViewGroup.cs new file mode 100644 index 00000000..52f3ca0c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeViewGroup.cs @@ -0,0 +1,13 @@ +#if UNITY_ANDROID +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public class NativeViewGroup : NativeAndroidJavaObjectWrapper + { + public NativeViewGroup(AndroidJavaObject javaObject) : base("android.view.ViewGroup", javaObject) + { + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeViewGroup.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeViewGroup.cs.meta new file mode 100644 index 00000000..505dc080 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/NativeViewGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25053421ab095450496f748113f49af3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/Utility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/Utility.cs new file mode 100644 index 00000000..1ffa27f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/Utility.cs @@ -0,0 +1,50 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins.Android +{ + public static class Utility + { + public static sbyte[] ToSBytes(this byte[] from) + { + if (from == null) + return null; + + return (sbyte[])(Array)from; + } + + public static byte[] ToBytes(this sbyte[] from) + { + if (from == null) + return null; + + return (byte[])(Array)from; + } + + public static Color GetColor(this AndroidJavaObject nativeObject) + { + float red = nativeObject.Call("getRed") / 255; + float green = nativeObject.Call("getRed") / 255; + float blue = nativeObject.Call("getRed") / 255; + float alpha = nativeObject.Call("alpha") / 255.0f; + + return new Color(red, green, blue, alpha); + } + + public static void TakeScreenshot(Action callback) + { + SurrogateCoroutine.WaitForEndOfFrameAndInvoke(() => + { + Texture2D texture = ScreenCapture.CaptureScreenshotAsTexture(); + string mimeType; + byte[] data = texture.Encode(TextureEncodingFormat.JPG, out mimeType); + callback(data, mimeType); + }); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/Utility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/Utility.cs.meta new file mode 100644 index 00000000..a9de1549 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/Common/Utility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a199715aa7deb4eadb5522575b05e8ff +timeCreated: 1547729646 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/VoxelBusters.CoreLibrary.NativePlugins.AndroidModule.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/VoxelBusters.CoreLibrary.NativePlugins.AndroidModule.asmdef new file mode 100644 index 00000000..7027d274 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/VoxelBusters.CoreLibrary.NativePlugins.AndroidModule.asmdef @@ -0,0 +1,18 @@ +{ + "name": "VoxelBusters.CoreLibrary.NativePlugins.AndroidModule", + "references": [ + "VoxelBusters.CoreLibrary", + "VoxelBusters.CoreLibrary.NativePlugins" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Android", + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/VoxelBusters.CoreLibrary.NativePlugins.AndroidModule.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/VoxelBusters.CoreLibrary.NativePlugins.AndroidModule.asmdef.meta new file mode 100644 index 00000000..71ad17bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Android/VoxelBusters.CoreLibrary.NativePlugins.AndroidModule.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 347661ae03c1d4bb2a47971c48c56a6c +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/AssemblyInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/AssemblyInfo.cs new file mode 100644 index 00000000..32027a9c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System.Runtime.CompilerServices; + +// make it visible for internal modules +[assembly: InternalsVisibleTo("VoxelBusters.CoreLibrary.NativePlugins.iOSModule")] +[assembly: InternalsVisibleTo("VoxelBusters.CoreLibrary.Editor.NativePlugins")] + +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.Editor")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.iOSModule")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.AndroidModule")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.SimulatorModule")] + +[assembly: InternalsVisibleTo("VoxelBusters.ScreenRecorderKit")] +[assembly: InternalsVisibleTo("VoxelBusters.ScreenRecorderKit.Editor")] +[assembly: InternalsVisibleTo("VoxelBusters.ScreenRecorderKit.iOSModule")] +[assembly: InternalsVisibleTo("VoxelBusters.ScreenRecorderKit.AndroidModule")] + + +[assembly: InternalsVisibleTo("VoxelBusters.EasyMLKit")] +[assembly: InternalsVisibleTo("VoxelBusters.EasyMLKit.Editor")] \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/AssemblyInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/AssemblyInfo.cs.meta new file mode 100644 index 00000000..c3de40b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0cb462a3026a542da8abdc2eaa87b069 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core.meta new file mode 100644 index 00000000..fff3883d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c7936da04c2c44be8c241463590eeec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base.meta new file mode 100644 index 00000000..2201394c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2362ac1fb376448ec8ba7dd5f704b848 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureActivator.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureActivator.cs new file mode 100644 index 00000000..7e26b14a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureActivator.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class NativeFeatureActivator + { + #region Static properties + + public static INativeFeatureInterfaceProvider InterfaceProvider { get; set; } + + #endregion + + #region Static methods + + public static TFeatureInterface CreateInterface(NativeFeatureRuntimeConfiguration runtimeConfiguration, bool isAvailable, params object[] args) where TFeatureInterface : INativeFeatureInterface + { + Assert.IsArgNotNull(runtimeConfiguration, "packageConfiguration"); + + object interfaceObject = null; + if (isAvailable) + { + var currentPlatform = Application.platform; + + // try creating interface object using custom interface provider + if (InterfaceProvider != null) + { + interfaceObject = InterfaceProvider.CreateInterface(typeof(TFeatureInterface), currentPlatform); + } + + // incase if no implementation is found, system retracts to default activation methods + if (interfaceObject == null) + { + var packageType = runtimeConfiguration.GetPackageForPlatform(currentPlatform); + if (packageType != null) + { + interfaceObject = CreateInstance(packageType.Assembly, packageType.NativeInterfaceType, args); + } + } + } + + // fallback case, create default type object incase if specified type is not found + if (interfaceObject == null) + { + var packageType = runtimeConfiguration.FallbackPackage; + interfaceObject = CreateInstance(packageType.Assembly, packageType.NativeInterfaceType, args); + } + + DebugLogger.Log(CoreLibraryDomain.NativePlugins, $"Created native interface of type: {interfaceObject}"); + return (TFeatureInterface)interfaceObject; + } + + public static TFeatureInterface CreateNativeInterfaceComponent(this GameObject gameObject, NativeFeatureRuntimeConfiguration runtimeConfiguration, bool isEnabled) where TFeatureInterface : INativeFeatureInterface + { + object interfaceObject = null; + if (isEnabled) + { + var targetPackage = runtimeConfiguration.GetPackageForPlatform(Application.platform); + var targetType = ReflectionUtility.GetType(assemblyName: targetPackage.Assembly, typeName: targetPackage.NativeInterfaceType); + interfaceObject = gameObject.AddComponent(targetType); + } + + // fallback case, create default type object incase if specified type is not found + if (interfaceObject == null) + { + var fallbackPackage = runtimeConfiguration.FallbackPackage; + var fallbackType = ReflectionUtility.GetType(assemblyName: fallbackPackage.Assembly, typeName: fallbackPackage.NativeInterfaceType); + interfaceObject = gameObject.AddComponent(fallbackType); + } + + return (TFeatureInterface)interfaceObject; + } + + #endregion + + #region Private static methods + + private static object CreateInstance(string assemblyName, string typeName, object[] arguments) + { + Type targetType = null; + try + { + targetType = ReflectionUtility.GetType(assemblyName, typeName); + if (targetType == null) + { + targetType = ReflectionUtility.GetTypeFromAssemblyCSharp(typeName, includeFirstPass: true); + } + + if (arguments == null) + { + return ReflectionUtility.CreateInstance(targetType); + } + else + { + return ReflectionUtility.CreateInstance(targetType, arguments); + } + } + catch (Exception e) + { + DebugLogger.LogError(CoreLibraryDomain.NativePlugins, $"Failed when creating instance. Assembly: {assemblyName} Type: {typeName} TargetType: {targetType} Error: {e.InnerException?.Message ?? e.Message}"); + return null; + } + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureActivator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureActivator.cs.meta new file mode 100644 index 00000000..dd6886b9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureActivator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3904366438314c5fb0a7422a5622022 +timeCreated: 1582637352 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureBehaviour.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureBehaviour.cs new file mode 100644 index 00000000..c603047a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureBehaviour.cs @@ -0,0 +1,86 @@ +using System; +using System.Reflection; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public abstract class NativeFeatureBehaviour : MonoBehaviour + { + #region Fields + + private bool m_isInitialised = false; + + #endregion + + #region Abstract methods + + public abstract bool IsAvailable(); + + protected abstract string GetFeatureName(); + + #endregion + + #region Static methods + + public static T CreateInstance(string name = "GameObject") where T : NativeFeatureBehaviour + { + return CreateInstanceInternal(name, null); + } + + protected static T CreateInstanceInternal(string name, params object[] args) where T : NativeFeatureBehaviour + { + T instance = new GameObject(name).AddComponent(); + instance.AwakeInternal(args); + + return instance; + } + + #endregion + + #region Unity methods + + private void Awake() + { } + + private void Start() + { + // check feature availablity + if (!IsAvailable()) + { + Diagnostics.LogNotSupported(featureName: GetFeatureName()); + return; + } + + StartInternal(); + } + + protected void OnDestroy() + { + DebugLogger.Log(CoreLibraryDomain.NativePlugins, $"Destroying native feature behaviour: {name}."); + DestroyInternal(); + } + + #endregion + + #region Lifecycle methods + + protected virtual void AwakeInternal(object[] args) + { + // check component status + Assert.IsFalse(m_isInitialised, "Initialisation error"); + + // update state + m_isInitialised = true; + } + + protected virtual void StartInternal() + { } + + protected virtual void DestroyInternal() + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureBehaviour.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureBehaviour.cs.meta new file mode 100644 index 00000000..b68492e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureBehaviour.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 767f56cafb4a049cf86968c934f05dde +timeCreated: 1576506889 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureInterfaceBase.cs new file mode 100644 index 00000000..a99d3884 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureInterfaceBase.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public abstract class NativeFeatureInterfaceBase : NativeObjectBase, INativeFeatureInterface + { + #region Constructors + + protected NativeFeatureInterfaceBase(bool isAvailable, NativeObjectRef nativeObjectRef = null) + : base(nativeObjectRef) + { + // set properties + IsAvailable = isAvailable; + } + + ~NativeFeatureInterfaceBase() + { + Dispose(false); + } + + #endregion + + #region INativeFeatureInterface implementation + + public bool IsAvailable + { + get; + private set; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureInterfaceBase.cs.meta new file mode 100644 index 00000000..374dad2f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureInterfaceBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4668d85eaef144adaa92aee7bc630781 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimeConfiguration.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimeConfiguration.cs new file mode 100644 index 00000000..d4332659 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimeConfiguration.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public class NativeFeatureRuntimeConfiguration + { + #region Properties + + public NativeFeatureRuntimePackage[] Packages { get; private set; } + + public NativeFeatureRuntimePackage SimulatorPackage { get; private set; } + + public NativeFeatureRuntimePackage FallbackPackage { get; private set; } + + #endregion + + #region Constructors + + public NativeFeatureRuntimeConfiguration(NativeFeatureRuntimePackage[] packages, NativeFeatureRuntimePackage simulatorPackage = null, + NativeFeatureRuntimePackage fallbackPackage = null) + { + // Set properties + Packages = packages; + SimulatorPackage = simulatorPackage; + FallbackPackage = fallbackPackage; + } + + #endregion + + #region Public methods + + public NativeFeatureRuntimePackage GetPackageForPlatform(RuntimePlatform platform) + { + switch (platform) + { + case RuntimePlatform.OSXEditor: + case RuntimePlatform.WindowsEditor: + case RuntimePlatform.LinuxEditor: + return SimulatorPackage; + + default: + return Array.Find(Packages, (item) => item.SupportsPlatform(platform)); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimeConfiguration.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimeConfiguration.cs.meta new file mode 100644 index 00000000..1d762377 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimeConfiguration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f7b35262a6654f8793a5bc9ddee1a22 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimePackage.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimePackage.cs new file mode 100644 index 00000000..baafad29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimePackage.cs @@ -0,0 +1,153 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [System.Serializable] + public class NativeFeatureRuntimePackage + { + #region Fields + + private readonly RuntimePlatform[] m_platforms; + + private readonly string m_custom; + + #endregion + + #region Properties + + public string Assembly { get; private set; } + + public string Namespace { get; private set; } + + public string NativeInterfaceType { get; private set; } + + public string[] BindingTypes { get; private set; } + + #endregion + + #region Constructors + + private NativeFeatureRuntimePackage(string assembly, string ns, + string nativeInterfaceType, string[] bindingTypes = null, + string custom = null, params RuntimePlatform[] platforms) + { + // Set properties + m_platforms = platforms; + m_custom = custom; + Assembly = assembly; + Namespace = ns; + NativeInterfaceType = GetTypeFullName(ns, nativeInterfaceType); + BindingTypes = (bindingTypes != null) + ? System.Array.ConvertAll(bindingTypes, (type) => GetTypeFullName(ns, type)) + : new string[0]; + } + + #endregion + + #region Static methods + + public static NativeFeatureRuntimePackage Generic(string assembly, string ns, + string nativeInterfaceType, string[] bindingTypes = null) + { + return new NativeFeatureRuntimePackage( + assembly: assembly, + ns: ns, + nativeInterfaceType: nativeInterfaceType, + bindingTypes: bindingTypes); + } + + public static NativeFeatureRuntimePackage Android(string assembly, string ns, + string nativeInterfaceType, string[] bindingTypes = null) + { + return new NativeFeatureRuntimePackage( + assembly: assembly, + ns: ns, + nativeInterfaceType: nativeInterfaceType, + bindingTypes: bindingTypes, + platforms: RuntimePlatform.Android); + } + + public static NativeFeatureRuntimePackage IPhonePlayer(string assembly, string ns, + string nativeInterfaceType, string[] bindingTypes = null) + { + return new NativeFeatureRuntimePackage( + assembly: assembly, + ns: ns, + nativeInterfaceType: nativeInterfaceType, + bindingTypes: bindingTypes, + platforms: RuntimePlatform.IPhonePlayer); + } + + public static NativeFeatureRuntimePackage TvOS(string assembly, string ns, + string nativeInterfaceType, string[] bindingTypes = null) + { + return new NativeFeatureRuntimePackage( + assembly: assembly, + ns: ns, + nativeInterfaceType: nativeInterfaceType, + bindingTypes: bindingTypes, + platforms: RuntimePlatform.tvOS); + } + + public static NativeFeatureRuntimePackage iOS(string assembly, string ns, + string nativeInterfaceType, string[] bindingTypes = null) + { + return new NativeFeatureRuntimePackage( + assembly: assembly, + ns: ns, + nativeInterfaceType: nativeInterfaceType, + bindingTypes: bindingTypes, + platforms: new RuntimePlatform[] { RuntimePlatform.IPhonePlayer, RuntimePlatform.tvOS }); + } + + public static NativeFeatureRuntimePackage Custom(string custom, string assembly, + string ns, string nativeInterfaceType, + string[] bindingTypes = null) + { + return new NativeFeatureRuntimePackage( + assembly: assembly, + ns: ns, + nativeInterfaceType: nativeInterfaceType, + bindingTypes: bindingTypes, + custom: custom); + } + + private static string GetTypeFullName(string ns, string type) => $"{ns}.{type}"; + + #endregion + + #region Public methods + + public System.Type[] GetBindingTypeReferences() + { + var assembly = ReflectionUtility.FindAssemblyWithName(Assembly); + return System.Array.ConvertAll(BindingTypes, (item) => + { + System.Type type = assembly.GetType(item); + if(type == null) + { + DebugLogger.LogError($"Expected type missing for {item}. Contact developer."); + } + return type; + }); + } + + public bool IsMatch(RuntimePlatform platform, string custom) + { + if ((custom != null) && string.Equals(m_custom, custom)) + { + return true; + } + return SupportsPlatform(platform); + } + + public bool SupportsPlatform(RuntimePlatform platform) + { + return (m_platforms == null) || System.Array.Exists(m_platforms, (value) => (value == platform)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimePackage.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimePackage.cs.meta new file mode 100644 index 00000000..5e7cb1af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureRuntimePackage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5da41611b7e7b47fdbf18a8ec6cb3c0c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionDefinition.cs new file mode 100644 index 00000000..743846de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionDefinition.cs @@ -0,0 +1,78 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Serialization; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [Serializable] + public class NativeFeatureUsagePermissionDefinition + { + #region Fields + + [SerializeField] + private string m_description; + + [SerializeField] + private RuntimePlatformConstantSet m_descriptionOverrides; + + #endregion + + #region Constructors + + public NativeFeatureUsagePermissionDefinition(string description = null, RuntimePlatformConstantSet descriptionOverrides = null) + { + // set properties + m_description = description; + m_descriptionOverrides = descriptionOverrides ?? new RuntimePlatformConstantSet(); + } + + #endregion + + #region Public methods + + public string GetDescriptionForActivePlatform() + { + return GetDescription(ApplicationServices.GetActiveOrSimulationPlatform()); + } + + public string GetDescription(RuntimePlatform platform) + { + // check whether overrides are available + string targetValue = m_descriptionOverrides.GetConstantForPlatform(platform, m_description); + if (targetValue == null) + { + DebugLogger.LogError(CoreLibraryDomain.NativePlugins, "Permission is not defined."); + return null; + } + else + { + return FormatDescription(targetValue, platform); + } + } + + #endregion + + #region Private methods + + private string FormatDescription(string description, RuntimePlatform targetPlatform) + { + switch (targetPlatform) + { + case RuntimePlatform.IPhonePlayer: + case RuntimePlatform.tvOS: + return description.Replace("$productName", "$(PRODUCT_NAME)"); + + case RuntimePlatform.Android: + return description.Replace("$productName", "%app_name%"); + + default: + return description; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionDefinition.cs.meta new file mode 100644 index 00000000..8cb65b96 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5fc6140c0d697442c811e30d35b4be13 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionHandler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionHandler.cs new file mode 100644 index 00000000..0ff7e090 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionHandler.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class NativeFeatureUsagePermissionHandler + { + #region Staic properties + + public static INativeFeatureUsagePermissionHandler Default { get; set; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionHandler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionHandler.cs.meta new file mode 100644 index 00000000..c3adbb07 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeFeatureUsagePermissionHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b98aa52511283458daebda671fe88c4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectBase.cs new file mode 100644 index 00000000..d179a532 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectBase.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public abstract class NativeObjectBase : INativeObject + { + #region Properties + + protected bool IsDisposed { get; private set; } + + #endregion + + #region Constructors + + protected NativeObjectBase(NativeObjectRef nativeObjectRef = null) + { + // set properties + NativeObjectRef = nativeObjectRef; + IsDisposed = false; + } + + ~NativeObjectBase() + { + Dispose(false); + } + + #endregion + + #region INativeInterface implementation + + public NativeObjectRef NativeObjectRef { get; protected set; } + + public IntPtr AddrOfNativeObject() + { + return (NativeObjectRef == null) ? IntPtr.Zero : NativeObjectRef.Pointer; + } + + #endregion + + #region IDisposable implementation + + public void Dispose() + { + Dispose(true); + } + + protected virtual void Dispose(bool disposing) + { + // check object state + if (IsDisposed) + { + return; + } + +#if NATIVE_PLUGINS_DEBUG && !UNITY_ANDROID + DebugLogger.Log(CoreLibraryDomain.NativePlugins, $"Disposing native object: {GetType()}."); +#endif + + if (disposing) + { + // dispose managed state (managed objects) + } + + // free unmanaged resources (unmanaged objects) + if (NativeObjectRef != null) + { + NativeObjectRef.Dispose(); + } + + // mark that object is released + IsDisposed = true; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectBase.cs.meta new file mode 100644 index 00000000..9cda49da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c26198a4c0c74137b309cbbfc92d5c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectRef.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectRef.cs new file mode 100644 index 00000000..0ea63c41 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectRef.cs @@ -0,0 +1,89 @@ +using System; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public class NativeObjectRef : IDisposable + { + #region Fields + + private bool m_disposed; + + #endregion + + #region Properties + + public IntPtr Pointer { get; private set; } + + #endregion + + #region Constructors + + public NativeObjectRef(IntPtr ptr, bool autoRetain) + { + // check argument valuie + Assert.IsFalse(ptr == IntPtr.Zero, "Ptr is null."); + + // set properties + Pointer = ptr; + m_disposed = false; + + if (autoRetain) + { + Retain(); + } + } + + ~NativeObjectRef() + { + Dispose(false); + } + + #endregion + + #region Memory management methods + + private void Retain() + { + RetainInternal(Pointer); + } + + private void Release() + { + ReleaseInternal(Pointer); + } + + protected virtual void RetainInternal(IntPtr ptr) + { } + + protected virtual void ReleaseInternal(IntPtr ptr) + { } + + #endregion + + #region IDisposable implementation + + public void Dispose() + { + Dispose(true); + } + + private void Dispose(bool disposing) + { + if (!m_disposed) + { + DebugLogger.Log(CoreLibraryDomain.NativePlugins, "Disposing native object."); + if (disposing) + { + // dispose managed state (managed objects). + } + + // free unmanaged resources (unmanaged objects) + Release(); + m_disposed = true; + } + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectRef.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectRef.cs.meta new file mode 100644 index 00000000..cc679d3a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Base/NativeObjectRef.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e7f9350b37144545b727770b965bdb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants.meta new file mode 100644 index 00000000..e549fd3a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 49b3df04feaa34d0489f9ae385445504 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/Calendar.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/Calendar.cs new file mode 100644 index 00000000..632077ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/Calendar.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + /// + /// An enumeration for the available calendars. + /// + public enum Calendar + { + // Identifier for the Buddhist calendar. + Buddhist = 1, + + // Identifier for the Chinese calendar. + Chinese, + + // Identifier for the Coptic calendar. + Coptic, + + // Identifier for the Ethiopic (Amete Alem) calendar. + EthiopicAmeteAlem, + + // Identifier for the Ethiopic (Amete Mihret) calendar. + EthiopicAmeteMihret, + + // Identifier for the Gregorian calendar. + Gregorian, + + // Identifier for the Hebrew calendar. + Hebrew, + + // Identifier for the Indian calendar. + Indian, + + // Identifier for the Islamic calendar. + Islamic, + + // Identifier for the Islamic civil calendar. + IslamicCivil, + + // Identifier for the tabular Islamic calendar. + IslamicTabular, + + // Identifier for the Islamic Umm al-Qura calendar, as used in Saudi Arabia. + IslamicUmmAlQura, + + // Identifier for the ISO8601 calendar. + Iso8601, + + // Identifier for the Japanese calendar. + Japanese, + + // Identifier for the Persian calendar. + Persian, + + // Identifier for the Republic of China (Taiwan) calendar. + RepublicOfChina, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/Calendar.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/Calendar.cs.meta new file mode 100644 index 00000000..ec13643b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/Calendar.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4aca1aa19e3a84647bf445e172fe5b77 +timeCreated: 1576157724 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/NativePlatform.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/NativePlatform.cs new file mode 100644 index 00000000..21b286b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/NativePlatform.cs @@ -0,0 +1,25 @@ +using System; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + /// + /// The enum is used to indicate the platform application is running. + /// + [Flags] + public enum NativePlatform + { + /// The runtime platform could not be determined. + Unknown = 0, + + /// The runtime platform is iOS. + iOS = 1 << 0, + + /// The runtime platform is tvOS. + tvOS = 1 << 1, + + /// The runtime platform is Android. + Android = 1 << 2, + + All = iOS | tvOS | Android, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/NativePlatform.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/NativePlatform.cs.meta new file mode 100644 index 00000000..dfe85d3a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Constants/NativePlatform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ff7dcb4297b74826a7416f29c3334e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers.meta new file mode 100644 index 00000000..6654a466 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0a18063511f747ac803092d817acb1e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers/TouchScreenKeyboardController.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers/TouchScreenKeyboardController.cs new file mode 100644 index 00000000..4b27d34e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers/TouchScreenKeyboardController.cs @@ -0,0 +1,172 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +using UnityTouchScreenKeyboard = UnityEngine.TouchScreenKeyboard; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public class TouchScreenKeyboardController : MonoBehaviour + { + #region Static fields + + [ClearOnReload] + private static TouchScreenKeyboardController s_sharedInstance = null; + + #endregion + + #region Fields + +#if UNITY_EDITOR + private bool m_simulateInEditor = false; + private float m_editorKeyboardHeightRatio = 0.4f; +#endif + + #endregion + + #region Static properties + + public static bool IsSupported => UnityTouchScreenKeyboard.isSupported; + + public static bool IsVisible { get; private set; } + + #endregion + + #region Static events + + [ClearOnReload] + public static event Callback OnKeyboardDidShow = null; + + [ClearOnReload] + public static event Callback OnKeyboardWillHide = null; + + #endregion + + #region Static methods + + public static int GetKeyboardHeight(bool includeInput) + { +#if UNITY_EDITOR + return (s_sharedInstance && s_sharedInstance.m_simulateInEditor) ? (int)(Screen.height * s_sharedInstance.m_editorKeyboardHeightRatio) : 0; +#elif UNITY_IOS + return (int)TouchScreenKeyboard.area.height; +#elif UNITY_ANDROID + using (AndroidJavaClass unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) + { + AndroidJavaObject unityPlayer = unityClass.GetStatic("currentActivity").Get("mUnityPlayer"); + AndroidJavaObject view = unityPlayer.Call("getView"); + AndroidJavaObject dialog = unityPlayer.Get("mSoftInputDialog"); + if (view == null || dialog == null) + return 0; + var decorHeight = 0; + if (includeInput) + { + AndroidJavaObject decorView = dialog.Call("getWindow").Call("getDecorView"); + if (decorView != null) + decorHeight = decorView.Call("getHeight"); + } + using (AndroidJavaObject rect = new AndroidJavaObject("android.graphics.Rect")) + { + view.Call("getWindowVisibleDisplayFrame", rect); + return Screen.height - rect.Call("height") + decorHeight; + } + } +#else + return 0; +#endif + } + + private static bool IsKeyboardVisibleInternal() + { +#if UNITY_EDITOR + return (s_sharedInstance != null) && s_sharedInstance.m_simulateInEditor; +#elif UNITY_IOS || UNITY_ANDROID + return UnityTouchScreenKeyboard.visible; +#else + return false; +#endif + } + + private static bool IsKeyboardActiveInternal() + { + if (Application.platform == RuntimePlatform.IPhonePlayer) + { + return GetKeyboardHeight(includeInput: false) > 0; + } + + return IsKeyboardVisibleInternal(); + } + + #endregion + + #region Unity methods + + private void Awake() + { + // set shared instance + s_sharedInstance = this; +#if UNITY_EDITOR + IsVisible = (Application.isEditor && m_simulateInEditor); +#endif + } + + private void Start() + { + // check whether this feature is supported + if (!IsSupported) + { + enabled = false; + } + } + + private void Update() + { + if (IsKeyboardVisibleInternal()) + { + if (!IsVisible && IsKeyboardActiveInternal()) + { + IsVisible = true; + + SendKeyboardDidShow(); + } + } + else if (IsVisible) + { + IsVisible = false; + + SendKeyboardWillHide(); + } + } + + private void OnDestroy() + { + // reset shared instance + if (s_sharedInstance == this) + { + s_sharedInstance = null; + } + } + + #endregion + + #region Private methods + + private void SendKeyboardDidShow() + { + if (OnKeyboardDidShow != null) + { + OnKeyboardDidShow.Invoke(); + } + } + + private void SendKeyboardWillHide() + { + if (OnKeyboardWillHide != null) + { + OnKeyboardWillHide.Invoke(); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers/TouchScreenKeyboardController.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers/TouchScreenKeyboardController.cs.meta new file mode 100644 index 00000000..1f23bf74 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Controllers/TouchScreenKeyboardController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 867485d1ec0ad48129d30cf6cb2e276b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels.meta new file mode 100644 index 00000000..1c8fd09d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3480eb129209e4b8db3f89becd938afc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/CircularRegion.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/CircularRegion.cs new file mode 100644 index 00000000..10e20584 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/CircularRegion.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + /// + /// A circular geographic region, specified as a center point and radius. + /// + [Serializable] + public struct CircularRegion + { + #region Fields + + [SerializeField] + private LocationCoordinate m_center; + + [SerializeField] + private float m_radius; + + [SerializeField] + private string m_regionId; + + #endregion + + #region Properties + + /// + /// The center point of the geographic region to monitor. + /// + public LocationCoordinate Center + { + get => m_center; + set => m_center = value; + } + + /// + /// The distance (measured in meters) from the center point of the geographic region to the edge of the circular boundary. + /// + public float Radius + { + get => m_radius; + set => m_radius = value; + } + + /// + /// The identifier for the region object. + /// + public string RegionId + { + get => m_regionId; + set => m_regionId = value; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/CircularRegion.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/CircularRegion.cs.meta new file mode 100644 index 00000000..594ad67e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/CircularRegion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2a6ea98fae6a4ba8bde124af2b661f4 +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/DateComponents.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/DateComponents.cs new file mode 100644 index 00000000..c0959848 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/DateComponents.cs @@ -0,0 +1,214 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + /// + /// A date or time specified in terms of units (such as year, month, day, hour, and minute) to be evaluated in a calendar system and time zone. + /// + [Serializable] + public class DateComponents + { + #region Fields + + [SerializeField] + private Calendar m_calendar; + + [SerializeField] + private int m_year; + + [SerializeField] + private int m_month; + + [SerializeField] + private int m_day; + + [SerializeField] + private int m_hour; + + [SerializeField] + private int m_minute; + + [SerializeField] + private int m_second; + + [SerializeField] + private int m_nanosecond; + + [SerializeField] + private int m_weekday; + + [SerializeField] + private int m_weekOfMonth; + + [SerializeField] + private int m_weekOfYear; + + #endregion + + #region Properties + + /// + /// Gets or sets the calendar. + /// + /// The calendar. + public Calendar Calendar + { + get => m_calendar; + set => m_calendar = value; + } + + /// + /// Gets or sets the year. + /// + /// The year. + public int Year + { + get => m_year; + set => m_year = value; + } + + /// + /// Gets or sets the month. + /// + /// The month. + public int Month + { + get => m_month; + set => m_month = value; + } + + /// + /// Gets or sets the day. + /// + /// The day. + public int Day + { + get => m_day; + set => m_day = value; + } + + /// + /// Gets or sets the hour. + /// + /// The hour. + public int Hour + { + get => m_hour; + set => m_hour = value; + } + + /// + /// Gets or sets the minute. + /// + /// The minute. + public int Minute + { + get => m_minute; + set => m_minute = value; + } + + /// + /// Gets or sets the second. + /// + /// The second. + public int Second + { + get => m_second; + set => m_second = value; + } + + /// + /// Gets or sets the nanosecond. + /// + /// The nanosecond. + public int Nanosecond + { + get => m_nanosecond; + set => m_nanosecond = value; + } + + /// + /// Gets or sets the weekday. + /// Note: Weekday starts from Monday(1) to Sunday(7) - As per ISO 8601 standard + /// + /// The weekday. + [Obsolete("Use DayOfWeek property instead", true)] + public int Weekday + { + get => m_weekday; + + set + { + if(value == 0) + { + DebugLogger.LogError(CoreLibraryDomain.NativePlugins, "Weekday cannot be 0. Weekday starts from Monday(1) to Sunday(7)"); + } + + m_weekday = value; + } + } + + /// + /// Gets or sets the weekday. + /// Note: DayOfWeek starts from Monday(1) to Sunday(7) - As per ISO 8601 standard + /// + /// The day of the week. + public int DayOfWeek + { + get => m_weekday; + + set + { + if(value == 0) + { + DebugLogger.LogError(CoreLibraryDomain.NativePlugins, "DayOfWeek cannot be 0. DayOfWeek starts from Monday(1) to Sunday(7) (ISO 8601 standard)"); + } + + m_weekday = value; + } + } + + /// + /// Gets or sets the week of month. + /// + /// The week of month. + public int WeekOfMonth + { + get => m_weekOfMonth; + set => m_weekOfMonth = value; + } + + /// + /// Gets or sets the week of year. + /// + /// The week of year. + public int WeekOfYear + { + get => m_weekOfYear; + set => m_weekOfYear = value; + } + + #endregion + + #region Constructors + + public DateComponents() + { + // set default values + m_calendar = (Calendar)0; + m_year = -1; + m_month = -1; + m_day = -1; + m_hour = -1; + m_minute = -1; + m_second = -1; + m_nanosecond = -1; + m_weekday = -1; + m_weekOfMonth = -1; + m_weekOfYear = -1; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/DateComponents.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/DateComponents.cs.meta new file mode 100644 index 00000000..c0e343a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/DateComponents.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7c9275e3d5c9040bd81845e9659841bc +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/LocationCoordinate.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/LocationCoordinate.cs new file mode 100644 index 00000000..748d80c7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/LocationCoordinate.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [Serializable] + public struct LocationCoordinate + { + #region Fields + + [SerializeField] + private double m_latitude; + + [SerializeField] + private double m_longitude; + + #endregion + + #region Properties + + /// + /// The latitude in degrees. + /// + public double Latitude + { + get => m_latitude; + set => m_latitude = value; + } + + /// + /// The longitude in degrees. + /// + public double Longitude + { + get => m_longitude; + set => m_longitude = value; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/LocationCoordinate.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/LocationCoordinate.cs.meta new file mode 100644 index 00000000..e14c500f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/LocationCoordinate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 776bfa20243a0448b8e0b6f8679945f5 +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/NativePlatformConstantSet.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/NativePlatformConstantSet.cs new file mode 100644 index 00000000..746087f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/NativePlatformConstantSet.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [Serializable, Obsolete("This class is deprecated. Instead use RuntimePlatformConstantSet.", true)] + public class NativePlatformConstantSet + { + #region Fields + + [SerializeField] + private string m_ios; + + [SerializeField] + private string m_tvos; + + [SerializeField] + private string m_android; + + #endregion + + #region Constructors + + public NativePlatformConstantSet(string ios = null, string tvos = null, string android = null) + { + // set properties + m_ios = ios; + m_tvos = tvos; + m_android = android; + } + + #endregion + + #region Public methods + + public string GetConstantForActivePlatform(string defaultValue = null) + { + var platform = PlatformMappingServices.GetActivePlatform(); + return GetConstantForPlatform(platform, defaultValue); + } + + public string GetConstantForPlatform(NativePlatform platform, string defaultValue = null) + { + string targetValue = null; + switch (platform) + { + case NativePlatform.iOS: + targetValue = m_ios; + break; + + case NativePlatform.tvOS: + targetValue = m_tvos; + break; + + case NativePlatform.Android: + targetValue = m_android; + break; + + default: + throw VBException.SwitchCaseNotImplemented(platform); + } + + return string.IsNullOrEmpty(targetValue) ? defaultValue : targetValue; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/NativePlatformConstantSet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/NativePlatformConstantSet.cs.meta new file mode 100644 index 00000000..a1ad76c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/NativePlatformConstantSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41ed7eccdda15444aa9e0a6e413bbfca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/PlatformConstant.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/PlatformConstant.cs new file mode 100644 index 00000000..555f1ac6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/PlatformConstant.cs @@ -0,0 +1,130 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + /// + /// Object represents an immutable, read-only object that combines a string value with a platform. + /// + [Serializable, Obsolete("This class is deprecated. Instead use RuntimePlatformConstant.", true)] + public class PlatformConstant + { + #region Fields + + [SerializeField] + private NativePlatform m_platform = NativePlatform.Unknown; + + [SerializeField] + private string m_value = string.Empty; + + #endregion + + #region Properties + + /// + /// Gets the runtime platform associated with string value. + /// + /// The enum value indicates the platform to which string value belongs. + public NativePlatform Platform + { + get => m_platform; + private set => m_platform = value; + } + + /// + /// Gets the string value. + /// + /// The string value. + public string Value + { + get => m_value; + private set => m_value = value; + } + + #endregion + + #region Constructors + + public PlatformConstant(NativePlatform platform, string value) + { + // set properties + m_platform = platform; + m_value = value; + } + + #endregion + + #region Static methods + + /// + /// Returns a new instance of , containing a string value functional only on iOS platform. + /// + /// The instance of . + /// The string value associated with iOS platform. + public static PlatformConstant iOS(string value) + { + return new PlatformConstant(NativePlatform.iOS, value); + } + + /// + /// Returns a new instance of , containing a string value functional only on tvOS platform. + /// + /// The instance of . + /// The string value associated with tvOS platform. + public static PlatformConstant tvOS(string value) + { + return new PlatformConstant(NativePlatform.tvOS, value); + } + + /// + /// Returns a new instance of , containing a string value functional only on Android platform. + /// + /// The instance of . + /// The string value associated with Android platform. + public static PlatformConstant Android(string value) + { + return new PlatformConstant(NativePlatform.Android, value); + } + + /// + /// Returns a new instance of , containing a string value functional on all supported platform. + /// + /// The instance of . + /// The string value associated with all supported platforms. + public static PlatformConstant All(string value) + { + return new PlatformConstant(NativePlatform.All, value); + } + + /// + /// Returns a new instance of , containing a string value associated with active platform. + /// + /// The instance of . + /// The string value associated with active platform. + public static PlatformConstant Current(string value) + { + var currentPlatform = PlatformMappingServices.GetActivePlatform(); + return new PlatformConstant(currentPlatform, value); + } + + #endregion + + #region Public methods + + public bool IsEqualToPlatform(NativePlatform other) + { + return ((other & m_platform) != 0); + } + + #endregion + + #region Base class methods + + public override string ToString() + { + return m_value; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/PlatformConstant.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/PlatformConstant.cs.meta new file mode 100644 index 00000000..fd0daa1b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/DataModels/PlatformConstant.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41d8b8d5e6d154b8483e8852a1576cd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces.meta new file mode 100644 index 00000000..1299137c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6446a8969499a4ddbbe44b75c2b1efbb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterface.cs new file mode 100644 index 00000000..fb9bb47d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterface.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public interface INativeFeatureInterface : INativeObject + { + #region Properties + + bool IsAvailable { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterface.cs.meta new file mode 100644 index 00000000..9c7f3217 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c94273cdd69cf45f79888beedf3d4ef7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterfaceProvider.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterfaceProvider.cs new file mode 100644 index 00000000..00bbfda8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterfaceProvider.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public interface INativeFeatureInterfaceProvider + { + INativeFeatureInterface CreateInterface(Type interfaceType, RuntimePlatform platform); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterfaceProvider.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterfaceProvider.cs.meta new file mode 100644 index 00000000..bc82741d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureInterfaceProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 35b1f5a2d9a8645a0ae651a699f3a594 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureUsagePermissionHandler.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureUsagePermissionHandler.cs new file mode 100644 index 00000000..0fffe22a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureUsagePermissionHandler.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public interface INativeFeatureUsagePermissionHandler + { + void ShowPrepermissionDialog(string permissionType, Callback onAllowCallback, Callback onDenyCallback); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureUsagePermissionHandler.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureUsagePermissionHandler.cs.meta new file mode 100644 index 00000000..90ae0641 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeFeatureUsagePermissionHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 27e6f057169d34e1e93b6ade55a7eb7d +timeCreated: 1590818662 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeObject.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeObject.cs new file mode 100644 index 00000000..a5f08f5b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeObject.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public interface INativeObject : IDisposable + { + #region Properties + + NativeObjectRef NativeObjectRef { get; } + + #endregion + + #region Methods + + IntPtr AddrOfNativeObject(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeObject.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeObject.cs.meta new file mode 100644 index 00000000..b3c27776 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Interfaces/INativeObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88e8c8b8bb8644860be7a19fff49ee9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc.meta new file mode 100644 index 00000000..687e3267 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1fe5ec3cda7e342b6b71849ff61e3099 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/Diagnostics.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/Diagnostics.cs new file mode 100644 index 00000000..f5087bc6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/Diagnostics.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class Diagnostics + { + #region Constants + + public static readonly Error kFeatureNotSupported = new Error(description: "The requested operation could not be completed because this feature is not supported on current platform."); + + public const string kCreateNativeObjectError = "Failed to create native object."; + + #endregion + + #region Exception methods + + public static VBException PluginNotConfiguredException(string name = "Native") + { + return new VBException($"Please configure {name} plugin, before you start using it in your project."); + } + + #endregion + + #region Log methods + + public static void LogNotSupportedInEditor(string featureName = "This") + { + DebugLogger.LogWarning(CoreLibraryDomain.NativePlugins, $"{featureName} feature is not supported by simulator."); + } + + public static void LogNotSupported(string featureName = "This") + { + DebugLogger.LogWarning(CoreLibraryDomain.NativePlugins, $"{featureName} feature is not supported."); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/Diagnostics.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/Diagnostics.cs.meta new file mode 100644 index 00000000..10f8969e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/Diagnostics.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d39da2d9f38df4eea8716af130b9bb33 +timeCreated: 1596368684 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/ManagedObjectReferencePool.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/ManagedObjectReferencePool.cs new file mode 100644 index 00000000..bcec4cd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/ManagedObjectReferencePool.cs @@ -0,0 +1,50 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + internal static class ManagedObjectReferencePool + { + #region Static fields + + [ClearOnReload] + private static List s_objectList; + + #endregion + + #region Static methods + + public static void Retain(object obj) + { + // Validate arguments + Assert.IsArgNotNull(obj, "obj"); + + EnsureInitialized(); + s_objectList.Add(obj); + } + + public static void Release(object obj) + { + // Validate arguments + Assert.IsArgNotNull(obj, "obj"); + + EnsureInitialized(); + s_objectList.Remove(obj); + } + + #endregion + + #region Private static methods + + private static void EnsureInitialized() + { + if (s_objectList != null) return; + + s_objectList = new List(capacity: 8); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/ManagedObjectReferencePool.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/ManagedObjectReferencePool.cs.meta new file mode 100644 index 00000000..7f6c3df2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Misc/ManagedObjectReferencePool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07e137e50cc514c1589bc07411d60d9f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged.meta new file mode 100644 index 00000000..930084ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: af612c1e8ec284a528a1c4baa7a8bbb0 +folderAsset: yes +timeCreated: 1576156074 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeArray.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeArray.cs new file mode 100644 index 00000000..8cb6e0a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeArray.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct NativeArray + { + #region Properties + + public IntPtr Pointer { get; set; } + + public int Length { get; set; } + + #endregion + + #region Public methods + + public T[] GetStructArray() where T : struct + { + if (Pointer == IntPtr.Zero) + { + return null; + } + + T[] structArray = new T[Length]; + + // copy data to managed array + var managedArray = new IntPtr[Length]; + Marshal.Copy(Pointer, managedArray, 0, Length); + + for (int i = 0; i < Length; i++) + { + structArray[i] = MarshalUtility.PtrToStructure(managedArray[i]); + } + return structArray; + } + + public string[] GetStringArray() + { + // Marshal ptr to array + return MarshalUtility.CreateStringArray(Pointer, Length); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeArray.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeArray.cs.meta new file mode 100644 index 00000000..c6bb0727 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeArray.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1dee3e63646dc48399a88782207714e8 +timeCreated: 1578652458 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeError.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeError.cs new file mode 100644 index 00000000..fab5c922 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeError.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct NativeError + { + #region Properties + + public int Code { get; set; } + + public IntPtr DescriptionPtr { get; set; } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeError.cs.meta new file mode 100644 index 00000000..1113a3f6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c238f39ac276047e2b72c8a2cff60d38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeErrorExtensions.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeErrorExtensions.cs new file mode 100644 index 00000000..04d6df65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeErrorExtensions.cs @@ -0,0 +1,17 @@ +using System; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class NativeErrorExtensions + { + public static Error Convert(this NativeError nativeError, string domain = null) + { + if(nativeError.DescriptionPtr == IntPtr.Zero) + { + return null; + } + + return new Error(domain, nativeError.Code, nativeError.DescriptionPtr.AsString()); + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeErrorExtensions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeErrorExtensions.cs.meta new file mode 100644 index 00000000..431b5d5f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeErrorExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 613ef4643e3ea4946ae9c26c065198e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeInstanceMap.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeInstanceMap.cs new file mode 100644 index 00000000..10365cc1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeInstanceMap.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class NativeInstanceMap + { + #region Static fields + + [ClearOnReload] + private static Dictionary s_instanceMap; + + #endregion + + #region Constructors + + static NativeInstanceMap() + { + Initialize(); + } + + #endregion + + #region Static methods + + public static void AddInstance(IntPtr nativePtr, object owner) + { + s_instanceMap.Add(nativePtr, owner); + } + + public static bool RemoveInstance(IntPtr nativePtr) + { + return s_instanceMap.Remove(nativePtr); + } + + public static T GetOwner(IntPtr nativePtr) where T : class + { + s_instanceMap.TryGetValue(nativePtr, out object owner); + + return owner as T; + } + + #endregion + + #region Private static methods + + [ExecuteOnReload] + private static void Initialize() + { + // Set properties + s_instanceMap = new Dictionary(capacity: 4); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeInstanceMap.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeInstanceMap.cs.meta new file mode 100644 index 00000000..01b52ca3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeInstanceMap.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cf1da258f945f4d67afd6d8cb6483c37 +timeCreated: 1554526179 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeSize.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeSize.cs new file mode 100644 index 00000000..fee11bc8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeSize.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct NativeSize + { + #region Properties + + public float Width { get; set; } + + public float Height { get; set; } + + #endregion + + #region Constructors + + public NativeSize(float width, float height) + { + Width = width; + Height = height; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeSize.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeSize.cs.meta new file mode 100644 index 00000000..4d8fd369 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/NativeSize.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44b8264bf69004a9bb6827fb203f9a27 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityAttachment.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityAttachment.cs new file mode 100644 index 00000000..7e58b9a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityAttachment.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct UnityAttachment + { + #region Properties + + public int DataArrayLength { get; set; } + + public IntPtr DataArrayPtr { get; set; } + + public IntPtr MimeTypePtr { get; set; } + + public IntPtr FileNamePtr { get; set; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityAttachment.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityAttachment.cs.meta new file mode 100644 index 00000000..3c43d04d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityAttachment.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e80263f11eaf5435cbe9e5a12216fbc3 +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityCircularRegion.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityCircularRegion.cs new file mode 100644 index 00000000..a1508a07 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityCircularRegion.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct UnityCircularRegion + { + #region Properties + + public double Latitude { get; set; } + + public double Longitude { get; set; } + + public float Radius { get; set; } + + public IntPtr RegionIdPtr { get; set; } + + #endregion + + #region Operator methods + + public static implicit operator UnityCircularRegion(CircularRegion circularRegion) + { + return new UnityCircularRegion() + { + Latitude = circularRegion.Center.Latitude, + Longitude = circularRegion.Center.Longitude, + Radius = circularRegion.Radius, + RegionIdPtr = circularRegion.RegionId == null ? IntPtr.Zero : Marshal.StringToHGlobalAuto(circularRegion.RegionId), + }; + } + + public static implicit operator CircularRegion(UnityCircularRegion circularRegion) + { + return new CircularRegion() + { + Center = new LocationCoordinate() { Latitude = circularRegion.Latitude, Longitude = circularRegion.Longitude }, + Radius = circularRegion.Radius, + RegionId = MarshalUtility.ToString(circularRegion.RegionIdPtr), + }; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityCircularRegion.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityCircularRegion.cs.meta new file mode 100644 index 00000000..5cf78cce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityCircularRegion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 608db460057f2437495e09818bd1f88d +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityColor.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityColor.cs new file mode 100644 index 00000000..b3155441 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityColor.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct UnityColor + { + #region Properties + + public float Red { get; set; } + + public float Green { get; set; } + + public float Blue { get; set; } + + public float Alpha { get; set; } + + #endregion + + #region Operators + + public static implicit operator Color(UnityColor nativeColor) + { + return new Color(nativeColor.Red, nativeColor.Green, nativeColor.Blue, nativeColor.Alpha); + } + + public static explicit operator UnityColor(Color color) + { + return new UnityColor() + { + Red = color.r, + Green = color.g, + Blue = color.b, + Alpha = color.a, + }; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityColor.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityColor.cs.meta new file mode 100644 index 00000000..708d53b4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityColor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f16ac326669ac4f82a08e4aaf35122ce +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityDateComponent.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityDateComponent.cs new file mode 100644 index 00000000..ed7b0097 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityDateComponent.cs @@ -0,0 +1,78 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct UnityDateComponents + { + #region Properties + + public Calendar Calendar { get; set; } + + public long Year { get; set; } + + public long Month { get; set; } + + public long Day { get; set; } + + public long Hour { get; set; } + + public long Minute { get; set; } + + public long Second { get; set; } + + public long Nanosecond { get; set; } + + public long DayOfWeek { get; set; } + + public long WeekOfMonth { get; set; } + + public long WeekOfYear { get; set; } + + #endregion + + #region Operator methods + + public static implicit operator UnityDateComponents(DateComponents dateComponents) + { + return new UnityDateComponents() + { + Calendar = dateComponents.Calendar, + Year = dateComponents.Year, + Month = dateComponents.Month, + Day = dateComponents.Day, + Hour = dateComponents.Hour, + Minute = dateComponents.Minute, + Second = dateComponents.Second, + Nanosecond = dateComponents.Nanosecond, + DayOfWeek = dateComponents.DayOfWeek, + WeekOfMonth = dateComponents.WeekOfMonth, + WeekOfYear = dateComponents.WeekOfYear, + }; + } + + public static implicit operator DateComponents(UnityDateComponents dateComponents) + { + return new DateComponents() + { + Calendar = dateComponents.Calendar, + Year = (int)dateComponents.Year, + Month = (int)dateComponents.Month, + Day = (int)dateComponents.Day, + Hour = (int)dateComponents.Hour, + Minute = (int)dateComponents.Minute, + Second = (int)dateComponents.Second, + Nanosecond = (int)dateComponents.Nanosecond, + DayOfWeek = (int)dateComponents.DayOfWeek, + WeekOfMonth = (int)dateComponents.WeekOfMonth, + WeekOfYear = (int)dateComponents.WeekOfYear, + }; + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityDateComponent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityDateComponent.cs.meta new file mode 100644 index 00000000..c1a554bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityDateComponent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8c2328e7413e9460b95a51b3f3d8b645 +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityRect.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityRect.cs new file mode 100644 index 00000000..48d8f788 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityRect.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [StructLayout(LayoutKind.Sequential)] + public struct UnityRect + { + #region Properties + + public float X { get; set; } + + public float Y { get; set; } + + public float Width { get; set; } + + public float Height { get; set; } + + #endregion + + #region Operators + + public static implicit operator Rect(UnityRect nativeRect) + { + return new Rect(nativeRect.X, nativeRect.Y, nativeRect.Width, nativeRect.Height); + } + + public static explicit operator UnityRect(Rect rect) + { + return new UnityRect() + { + X = rect.x, + Y = rect.y, + Width = rect.width, + Height = rect.height, + }; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityRect.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityRect.cs.meta new file mode 100644 index 00000000..da665fcf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Unmanaged/UnityRect.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 497b88e3e95064649b6f4f73c7b48907 +timeCreated: 1576157288 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities.meta new file mode 100644 index 00000000..1a938d3a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fda0bc5760ce84e3b9fd93c18bbc3eeb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/IntPtrUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/IntPtrUtility.cs new file mode 100644 index 00000000..ccbc04d9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/IntPtrUtility.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class IntPtrUtility + { + private const string kZuluFormat = "yyyy-MM-dd HH:mm:ss zzz"; + + public static string AsString(this IntPtr ptr) + { + return MarshalUtility.ToString(ptr); + } + + public static DateTime AsDateTime(this IntPtr ptr) + { + var value = ptr.AsString(); + + if (value != null) + { + return DateTime.ParseExact(value, kZuluFormat, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToUniversalTime(); + } + + return default; + } + + public static DateTime? AsOptionalDateTime(this IntPtr ptr) + { + if(ptr == IntPtr.Zero) + return null; + + return AsDateTime(ptr); + } + + public static T AsStruct(this IntPtr ptr) where T : struct + { + return MarshalUtility.PtrToStructure(ptr); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/IntPtrUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/IntPtrUtility.cs.meta new file mode 100644 index 00000000..777f17df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/IntPtrUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 187b0939526b04e8abbd980d291bb1c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/MarshalUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/MarshalUtility.cs new file mode 100644 index 00000000..2d5fe258 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/MarshalUtility.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class MarshalUtility + { + #region Marshalling methods + + public static string ToString(IntPtr stringPtr) + { + if (IntPtr.Zero == stringPtr) + { + return null; + } + + return Marshal.PtrToStringAuto(stringPtr); + } + + public static IntPtr GetIntPtr(object value) + { + if (null == value) + { + return IntPtr.Zero; + } + + return GCHandle.ToIntPtr(value: GCHandle.Alloc(value)); + } + + public static void FreeUnmanagedStringArray(IntPtr unmanagedArrayPtr, int count) + { + DebugLogger.Log(CoreLibraryDomain.NativePlugins, $"Releasing unmanaged array: {unmanagedArrayPtr}."); + + // release each strings allocated in unmanaged space + var unmanagedArrayHandle = GCHandle.FromIntPtr(unmanagedArrayPtr); + var dataArray = (IntPtr[])unmanagedArrayHandle.Target; + for (int iter = 0; iter < count; iter++) + { + Marshal.FreeHGlobal(dataArray[iter]); + } + + // release handle + unmanagedArrayHandle.Free(); + } + + public static IntPtr CreateUnmanagedArray(IntPtr[] managedArray) + { + int arrayLength = managedArray.Length; + int size = Marshal.SizeOf(managedArray[0]) * arrayLength; + var unmanagedPtr = Marshal.AllocHGlobal(size); + + // copy + Marshal.Copy(managedArray, 0, unmanagedPtr, arrayLength); + + return unmanagedPtr; + } + + public static void ReleaseUnmanagedArray(IntPtr unmanagedArrayPtr) + { + Marshal.FreeHGlobal(unmanagedArrayPtr); + } + + public static IntPtr[] CreateManagedArray(IntPtr arrayPtr, int length) + { + // check whether array is valid + if (length == -1) //Not checking arrayPtr is zero or not - as it's possible to have an array with no elements too. If null needs to be created, length needs to be -1. + { + return null; + } + + // copy data to managed array + var managedArray = new IntPtr[length]; + Marshal.Copy(arrayPtr, managedArray, 0, length); + + return managedArray; + } + + public static string[] CreateStringArray(IntPtr arrayPtr, int length) + { + if (length == -1) //Not checking arrayPtr is zero or not - as it's possible to have an array with no elements too. If null needs to be created, length needs to be -1. + { + return null; + } + + // create array + var managedArray = new IntPtr[length]; + Marshal.Copy(arrayPtr, managedArray, 0, length); + + var stringArray = new string[length]; + for (int iter = 0; iter < length; iter++) + { + stringArray[iter] = ToString(managedArray[iter]); + } + + return stringArray; + } + + #endregion + + #region Structures + + public static T PtrToStructure(IntPtr ptr) where T : struct + { + return (T)Marshal.PtrToStructure(ptr, typeof(T)); + } + + public static TOutput[] ConvertNativeArrayItems(IntPtr arrayPtr, int length, Converter converter, bool includeNullObjects) + where TInput : struct + where TOutput : class + { + if (IntPtr.Zero == arrayPtr) + { + return null; + } + + // create original data array from native data + var outputObjects = new List(length); + int sizeOfInputObject = Marshal.SizeOf(typeof(TInput)); + long arrayPtrAddr = arrayPtr.ToInt64(); + int offset = 0; + for (int iter = 0; iter < length; iter++) + { + var inputObject = PtrToStructure(new IntPtr(arrayPtrAddr + offset)); + var outputObject = converter(inputObject); + if (EqualityComparer.Default.Equals(outputObject, default(TOutput)) && !includeNullObjects) + { + DebugLogger.LogWarning(CoreLibraryDomain.NativePlugins, $"Failed to convert object with data {inputObject}."); + continue; + } + + // add object to list + outputObjects.Add(outputObject); + + // update pointer + offset += sizeOfInputObject; + } + + return outputObjects.ToArray(); + } + + public static TOutput[] ConvertNativeArrayItems(IntPtr arrayPtr, int length, Converter converter, bool includeNullObjects) + where TOutput : class + { + // check whether array is valid + if (arrayPtr == IntPtr.Zero) + { + return null; + } + + // copy data to managed array + var managedArray = new IntPtr[length]; + Marshal.Copy(arrayPtr, managedArray, 0, length); + + // convert items to specified type using converter method + var outputObjects = new List(length); + for (int iter = 0; iter < length; iter++) + { + var nativePtr = managedArray[iter]; + var outputObject = converter(nativePtr); + if (EqualityComparer.Default.Equals(outputObject, default(TOutput)) && !includeNullObjects) + { + DebugLogger.LogWarning(CoreLibraryDomain.NativePlugins, $"Failed to convert object with data {nativePtr}."); + continue; + } + + // add object to list + outputObjects.Add(outputObject); + } + + return outputObjects.ToArray(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/MarshalUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/MarshalUtility.cs.meta new file mode 100644 index 00000000..bb727907 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/MarshalUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef4d5675c6e30431484773e937db4147 +timeCreated: 1550585821 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformConstantUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformConstantUtility.cs new file mode 100644 index 00000000..d696e657 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformConstantUtility.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + [Obsolete("This class is deprecated. Instead use RuntimePlatformConstantUtility.", true)] + public static class PlatformConstantUtility + { + #region Static methods + + public static PlatformConstant FindConstantForActivePlatform(PlatformConstant[] array) + { + var activePlatform = PlatformMappingServices.GetActivePlatform(); + return FindConstantForPlatform(array, activePlatform); + } + + public static PlatformConstant FindConstantForPlatform(PlatformConstant[] array, NativePlatform platform) + { + if (array != null) + { + return Array.Find(array, (item) => item.IsEqualToPlatform(platform)); + } + + return null; + } + + public static string GetActivePlatformConstantValue(PlatformConstant[] array) + { + var targetConstant = FindConstantForActivePlatform(array); + return (targetConstant != null) ? targetConstant.Value : null; + } + + public static string GetPlatformConstantValue(PlatformConstant[] array, NativePlatform platform) + { + var targetConstant = FindConstantForPlatform(array, platform); + return (targetConstant != null) ? targetConstant.Value : null; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformConstantUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformConstantUtility.cs.meta new file mode 100644 index 00000000..73b3352e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformConstantUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f529ce1b5ec1e4834a33da7f8e53fdab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformMappingServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformMappingServices.cs new file mode 100644 index 00000000..fadca70a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformMappingServices.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace VoxelBusters.CoreLibrary.NativePlugins +{ + public static class PlatformMappingServices + { + #region Platform methods + + public static NativePlatform GetActivePlatform() + { + return ConvertRuntimePlatformToNativePlatform(Application.platform); + } + + public static NativePlatform ConvertRuntimePlatformToNativePlatform(RuntimePlatform platform) + { + switch (platform) + { +#if UNITY_EDITOR + case RuntimePlatform.OSXEditor: + case RuntimePlatform.WindowsEditor: + case RuntimePlatform.LinuxEditor: + return ConvertBuildTargetToNativePlatform(EditorUserBuildSettings.activeBuildTarget); +#endif + case RuntimePlatform.IPhonePlayer: + return NativePlatform.iOS; + + case RuntimePlatform.tvOS: + return NativePlatform.tvOS; + + case RuntimePlatform.Android: + return NativePlatform.Android; + + default: + return NativePlatform.Unknown; + } + } + + #endregion + + #region Editor methods + +#if UNITY_EDITOR + public static NativePlatform ConvertBuildTargetToNativePlatform(BuildTarget buildTarget) + { + switch (buildTarget) + { + case BuildTarget.iOS: + return NativePlatform.iOS; + + case BuildTarget.tvOS: + return NativePlatform.tvOS; + + case BuildTarget.Android: + return NativePlatform.Android; + + default: + return NativePlatform.Unknown; + } + } +#endif + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformMappingServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformMappingServices.cs.meta new file mode 100644 index 00000000..ab4d7826 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/Core/Utilities/PlatformMappingServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c8eede7cc82e45cd9e8b7ff46a26463 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit.meta new file mode 100644 index 00000000..8271ada5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2807845595d714aafab40c3bc2bb2cfd +folderAsset: yes +timeCreated: 1576851380 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/ConsoleRect.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/ConsoleRect.cs new file mode 100644 index 00000000..bd44ae3d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/ConsoleRect.cs @@ -0,0 +1,73 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace VoxelBusters.CoreLibrary.NativePlugins.DemoKit +{ + public class ConsoleRect : MonoBehaviour + { + #region Constants + private const int MAX_LENGTH = 10000; + + #endregion + + #region Properties + + [SerializeField] + private Text m_text = null; + + [SerializeField] + private ScrollRect m_textScroller = null; + + #endregion + + #region Unity methods + + private void Awake() + { + Reset(); + } + + #endregion + + #region Public methods + + public void Log(string message, bool append) + { + if (append && m_text.text.Length < MAX_LENGTH) + { + m_text.text = m_text.text + "\n---------------\n" + message; + } + else + { + m_text.text = message; + } + + StartCoroutine(MoveScrollerToBottom()); + } + + #endregion + + #region Private methods + + private IEnumerator MoveScrollerToBottom() + { + yield return null; + + // set position + m_textScroller.verticalNormalizedPosition = 0; + } + + private void Reset() + { + if (m_text) + { + m_text.text = "Console"; + } + } + + #endregion + } + +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/ConsoleRect.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/ConsoleRect.cs.meta new file mode 100644 index 00000000..297f04a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/ConsoleRect.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 030d6e213de734b1ab4bfb8f6a416dc9 +timeCreated: 1549317823 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionBehaviour.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionBehaviour.cs new file mode 100644 index 00000000..7b66bc9b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionBehaviour.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.UI; +using UnityEngine.Serialization; + +namespace VoxelBusters.CoreLibrary.NativePlugins.DemoKit +{ + public class DemoActionBehaviour : MonoBehaviour where TActionType : struct, IConvertible + { + #region Fields + + [SerializeField] + private TActionType m_actionType = default(TActionType); + + #endregion + + #region Properties + + public Selectable Selectable + { + get; + private set; + } + + public TActionType ActionType + { + get + { + return m_actionType; + } + } + + #endregion + + #region Events + + [SerializeField, FormerlySerializedAs("onSelect")] + private SelectEvent m_onSelect = new SelectEvent(); + public SelectEvent OnSelect + { + get + { + return m_onSelect; + } + } + + #endregion + + #region Unity methods + + private void Awake() + { + // cache components + Selectable = GetComponent(); + + RegisterForCallback(Selectable); + } + + #endregion + + #region Private methods + + private void RegisterForCallback(Selectable selectable) + { + // cache component + if (selectable is Button) + { + ((Button)selectable).onClick.AddListener(OnSelectInternal); + } + if (selectable is Toggle) + { + ((Toggle)selectable).onValueChanged.AddListener((value) => OnSelectInternal()); + } + if (selectable is Dropdown) + { + ((Dropdown)selectable).onValueChanged.AddListener((value) => OnSelectInternal()); + } + } + + private void OnSelectInternal() + { + // send event + if (m_onSelect != null) + { + m_onSelect.Invoke(Selectable); + } + } + + #endregion + + #region Nested types + + [Serializable] + public class SelectEvent : UnityEvent + { } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionBehaviour.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionBehaviour.cs.meta new file mode 100644 index 00000000..83d224cd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionBehaviour.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2753d359fc4064fa5ad1bdc2c1d95d9a +timeCreated: 1562570180 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionPanelBase{TAction,TActionType}.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionPanelBase{TAction,TActionType}.cs new file mode 100644 index 00000000..ef7a5418 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionPanelBase{TAction,TActionType}.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.CoreLibrary.NativePlugins.DemoKit +{ + public abstract class DemoActionPanelBase : DemoPanel where TAction : DemoActionBehaviour where TActionType : struct, System.IConvertible + { + #region Constants + + private const string kLogCreateInstance = "Create instance by calling {0})"; + + #endregion + + #region Fields + + private ConsoleRect m_consoleRect = null; + + private TAction[] m_actions = null; + + #endregion + + #region Unity methods + + protected virtual void Awake() + { + // set properties + m_consoleRect = GetComponentInChildren(); + m_actions = GetComponentsInChildren(); + + // init + SetActionCallbacks(); + } + + protected virtual void Start() + { } + + protected virtual void OnEnable() + { } + + protected virtual void OnDisable() + { } + + #endregion + + #region Base methods + + public override void Rebuild() + { + SetActionCallbacks(); + } + + #endregion + + #region Private methods + + protected virtual string GetCreateInstanceCodeSnippet() + { + throw VBException.NotImplemented(); + } + + protected TAction FindActionOfType(TActionType actionType) + { + return Array.Find(m_actions, (item) => EqualityComparer.Default.Equals(actionType, item.ActionType)); + } + + protected void Log(string message, bool append = true) + { + #if NATIVE_PLUGINS_DEBUG + Debug.Log(message); + #endif + m_consoleRect.Log(message, append); + } + + protected void LogMissingInstance(bool append = true) + { + m_consoleRect.Log(string.Format(kLogCreateInstance, GetCreateInstanceCodeSnippet()), append); + } + + protected bool AssertPropertyIsValid(string property, string value) + { + return AssertPropertyIsValid(property, () => string.IsNullOrEmpty(value)); + } + + protected bool AssertPropertyIsValid(string property, Func condition) + { + if (condition()) + { + m_consoleRect.Log($"Property \"{property}\" value is invalid.", append: true); + return false; + } + return true; + } + + private void SetActionCallbacks() + { + // set button property + foreach (TAction actionButton in m_actions) + { + var selectEvent = actionButton.OnSelect; + selectEvent.RemoveAllListeners(); + selectEvent.AddListener(OnActionSelect); + } + } + + #endregion + + #region UI callback methods + + public void OnActionSelect(Selectable selectable) + { + TAction selectedAction = Array.Find(m_actions, (item) => selectable == item.Selectable); + if (selectedAction) + { + OnActionSelectInternal(selectedAction); + } + } + + protected virtual void OnActionSelectInternal(TAction selectedAction) + {} + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionPanelBase{TAction,TActionType}.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionPanelBase{TAction,TActionType}.cs.meta new file mode 100644 index 00000000..75f2f86d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoActionPanelBase{TAction,TActionType}.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad5a6450a250245f288f781b63435f20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoBackButton.cs b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoBackButton.cs new file mode 100644 index 00000000..55f7038b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/CoreLibrary/Runtime/NativePlugins/DemoKit/DemoBackButton.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.SceneManagement; + +namespace VoxelBusters.CoreLibrary.NativePlugins.DemoKit +{ + [RequireComponent(typeof(Button))] + public class DemoBackButton : MonoBehaviour + { + #region Unity methods + + private void Awake() + { + // set button + GetComponent + Deep Link Services Testing + + +Open Deep Link + + \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/SampleFiles/DeepLinkTest.html.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/SampleFiles/DeepLinkTest.html.meta new file mode 100644 index 00000000..4a82513f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/SampleFiles/DeepLinkTest.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4c2ecbf85529e4d0db8c053f4facabbe +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures.meta new file mode 100644 index 00000000..2f6d2ec6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a306ce3af952346f39ab329660ce960a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-coloured.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-coloured.png new file mode 100644 index 00000000..0f2ca97a Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-coloured.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-coloured.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-coloured.png.meta new file mode 100644 index 00000000..e128ca81 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-coloured.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 172518a7066f749cd90e6078d2f6c483 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-white.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-white.png new file mode 100644 index 00000000..675e3ef1 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-white.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-white.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-white.png.meta new file mode 100644 index 00000000..07db3ae3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/app-icon-custom-white.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 5e5c49e840cf84a8488e6309b2517f63 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/down-arrow-icon.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/down-arrow-icon.png new file mode 100644 index 00000000..52fe2cd0 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/down-arrow-icon.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/down-arrow-icon.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/down-arrow-icon.png.meta new file mode 100644 index 00000000..a56afee4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/down-arrow-icon.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: 8452141070dc84588a81dcd4997c35d1 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 049abab46f83842dca78bd7d7c25716d + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-bg.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-bg.png new file mode 100644 index 00000000..73f1add7 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-bg.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-bg.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-bg.png.meta new file mode 100644 index 00000000..20cc9a99 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-bg.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 2ebc399b3ad7a4c888db8962ee95ef3f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-fg.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-fg.png new file mode 100644 index 00000000..31f4598c Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-fg.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-fg.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-fg.png.meta new file mode 100644 index 00000000..ab61fdd5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo-fg.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: f65852847649b447eb3006273367c344 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo.png new file mode 100644 index 00000000..e613f488 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo.png.meta new file mode 100644 index 00000000..4fa6d214 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/EditorResources/Textures/logo.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 7ee3449395e5b47f59853a7497a4260b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials.meta new file mode 100644 index 00000000..26b60bc8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 55c01c40849734ef5b2e001f73696762 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor.meta new file mode 100644 index 00000000..eb2364d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72c72daba719d4cb6bc5c981431ea001 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml new file mode 100644 index 00000000..f576e093 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml.meta new file mode 100644 index 00000000..80877850 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Essentials/Editor/CrossPlatformEssentialKitDependencies.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 04fc0026af1164316bc7fad41f9172d4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples.meta new file mode 100644 index 00000000..dae2dfb3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d4a38c1bac96a417f9189b7db373c5ac +folderAsset: yes +timeCreated: 1547647244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images.meta new file mode 100644 index 00000000..f22f6830 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9dc3cbc9028584b99a57e30e1281cce0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images/profile-picture-placeholder.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images/profile-picture-placeholder.png new file mode 100644 index 00000000..558482ac Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images/profile-picture-placeholder.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images/profile-picture-placeholder.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images/profile-picture-placeholder.png.meta new file mode 100644 index 00000000..2fdf4202 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Images/profile-picture-placeholder.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 2901797ce0fc540fb806cf83aec0b2e9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes.meta new file mode 100644 index 00000000..67a8d99e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2acf4a1065a2146c9a6be14751c27a32 +folderAsset: yes +timeCreated: 1547647208 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AddressBookDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AddressBookDemo.unity new file mode 100644 index 00000000..efbefa9c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AddressBookDemo.unity @@ -0,0 +1,3258 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 4890085278179872738, guid: 0f40a4f983a8440fabc4f4038abd78b9, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &59770744 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 828221274} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: MustIncludeName + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: Name + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!1001 &172546815 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_images.Array.data[0] + value: + objectReference: {fileID: 2800000, guid: 2901797ce0fc540fb806cf83aec0b2e9, type: 3} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1 &223808891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 223808892} + - component: {fileID: 223808894} + - component: {fileID: 223808893} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &223808892 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 223808891} + 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: 1755014808} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -7.5, y: 26.6815} + m_SizeDelta: {x: -35, y: -26.9561} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &223808893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 223808891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.16037738, g: 0.16037738, b: 0.16037738, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: e418537621d284969acce413dd1c8c27, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Limit +--- !u!222 &223808894 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 223808891} + m_CullTransparentMesh: 0 +--- !u!1001 &233312356 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Address Book Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &239982850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1 &253718509 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1258982659} + m_PrefabAsset: {fileID: 0} +--- !u!114 &253718511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 253718509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b60377b3e0114aef93449c43b723084, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &388078517 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Permission + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Permission + objectReference: {fileID: 0} + - target: {fileID: 114946616376835068, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Padding.m_Left + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 114946616376835068, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Padding.m_Right + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &388078518 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 388078517} + m_PrefabAsset: {fileID: 0} +--- !u!114 &415383313 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 565652239} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &420477217 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 1573999222} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &565652239 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1207195952} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResetOffset + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Reset Offset + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1001 &592536713 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Read + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Read Contacts + objectReference: {fileID: 0} + - target: {fileID: 114946616376835068, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Spacing + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &592536714 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 592536713} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &683840962 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 592536714} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ReadContacts + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ReadContacts() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &683840963 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 683840962} + m_PrefabAsset: {fileID: 0} +--- !u!114 &683840964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 683840963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b60377b3e0114aef93449c43b723084, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &757321830 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 1160181136} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &828221273 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1074604621} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: AllOptions + objectReference: {fileID: 0} + - target: {fileID: 114484300395288958, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_ChildForceExpandWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &828221274 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 828221273} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1074604620 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 592536714} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: Options + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1074604621 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1074604620} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1126518423 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1074604621} + m_Modifications: + - target: {fileID: 1745382843081832, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} + propertyPath: m_Name + value: Label + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Text + value: Options + objectReference: {fileID: 0} + - target: {fileID: 114640770555796246, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114640770555796246, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_PreferredWidth + value: 250 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} +--- !u!1001 &1160181136 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 828221274} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: MustIncludeEmail + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: Email + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1207195951 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 592536714} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: Control + objectReference: {fileID: 0} + - target: {fileID: 114484300395288958, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Spacing + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1207195952 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1207195951} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1218960401 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetContactsAccessStatus + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetContactsAccessStatus() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1218960402 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1218960401} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1218960403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1218960402} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b60377b3e0114aef93449c43b723084, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1258982659 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2092678215} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1001 &1332339662 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1332339663 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1332339664 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1332339665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332339664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d023d341a68db4f20b0a2f2ac53cfa62, type: 3} + m_Name: + m_EditorClassIdentifier: + m_limit: {fileID: 1755014810} + m_mustIncludeNameOption: {fileID: 1795232993} + m_mustIncludeEmailOption: {fileID: 757321830} + m_mustIncludePhoneNumberOption: {fileID: 420477217} + m_resetOffset: {fileID: 415383313} +--- !u!1001 &1342111199 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1332339663} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1492365118 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.000012385343 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224369000439747256, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 12.400391 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1573999222 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 828221274} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: MustIncludePhoneNumber + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: Phone Num + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 18 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!1001 &1650269480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 114983446567434222, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Spacing + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 114983446567434222, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_ChildControlWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114983446567434222, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_ChildForceExpandWidth + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00010090598 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1650269481 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1650269480} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1716001540 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 828221274} + m_Modifications: + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: Limit + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[0].m_Text + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[1].m_Text + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[2].m_Text + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 114776005954242994, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Text + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!224 &1755014808 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 1716001540} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1755014810 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 1716001540} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1795232993 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 59770744} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &2092678215 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1342111199} + m_PrefabAsset: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AddressBookDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AddressBookDemo.unity.meta new file mode 100644 index 00000000..29fbbb3c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AddressBookDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f83c8baad6de242df98e3012ab452054 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AlertDialogDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AlertDialogDemo.unity new file mode 100644 index 00000000..5cca8cf3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AlertDialogDemo.unity @@ -0,0 +1,4045 @@ +%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: 1, g: 0.66666687, b: 0, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &60378217 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1395086926} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: SetMessage + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &60378218 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 60378217} + m_PrefabAsset: {fileID: 0} +--- !u!1 &60378219 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 60378217} + m_PrefabAsset: {fileID: 0} +--- !u!114 &60378220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 60378219} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &98562105 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &98562106 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 98562105} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &103928735 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 271151724} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Button Label + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Ok + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &103928736 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 103928735} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &216326927 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &216326928 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 216326927} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &271151723 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1395086926} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: AddButton + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &271151724 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 271151723} + m_PrefabAsset: {fileID: 0} +--- !u!1 &271151725 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 271151723} + m_PrefabAsset: {fileID: 0} +--- !u!114 &271151726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271151725} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &376578923 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1395086926} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetTitle + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetTitle() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &376578924 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 376578923} + m_PrefabAsset: {fileID: 0} +--- !u!114 &376578925 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376578924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!1001 &405890480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 271151724} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddButton() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &405890481 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 405890480} + m_PrefabAsset: {fileID: 0} +--- !u!114 &405890482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 405890481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 +--- !u!1001 &426873312 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1395086926} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetMessage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetMessage() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &426873313 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 426873312} + m_PrefabAsset: {fileID: 0} +--- !u!114 &426873314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 426873313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 +--- !u!1001 &431907080 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00004548305 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &431907081 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 431907080} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &464117600 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Alert Dialog Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &607541005 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 802472127} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Cancel Button Label + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Cancel + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &607541006 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 607541005} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &790081008 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &790081009 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 790081008} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &802472126 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1395086926} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: AddCancel + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &802472127 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 802472126} + m_PrefabAsset: {fileID: 0} +--- !u!1 &802472128 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 802472126} + m_PrefabAsset: {fileID: 0} +--- !u!114 &802472129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 802472128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &848691303 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2074474585} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Title + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Demo + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &848691304 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 848691303} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &928597081 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000011063129 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1327137653 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1327137654 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1327137653} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1327137655 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1327137653} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1327137656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327137655} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46db39bae016445dc915b76fe4000ea8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_titleInputField: {fileID: 848691304} + m_messageInputField: {fileID: 1484314408} + m_buttonLabelInputField: {fileID: 103928736} + m_cancelButtonLabelInputField: {fileID: 607541006} + m_configureSection: {fileID: 1395086926} + m_presentationSection: {fileID: 790081009} +--- !u!1001 &1395086925 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1395086926 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1395086925} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1404177876 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 60378218} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetMessage() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1404177877 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1404177876} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1404177878 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1404177877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 +--- !u!1001 &1408959055 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 216326928} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1408959056 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1408959055} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1408959057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1408959056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 8 +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1327137654} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1484314407 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 60378218} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Message + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Lorem ipsum dolor sit amet, consectetur adipiscing elit + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1484314408 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1484314407} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1598308410 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &1685203508 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 790081009} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Show + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Show() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1685203509 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1685203508} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1685203510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685203509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 +--- !u!1001 &1875335592 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 802472127} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddCancelButton() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1875335593 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1875335592} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1875335594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1875335593} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 +--- !u!1001 &1877627574 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &2052716984 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2074474585} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetTitle() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2052716985 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2052716984} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2052716986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2052716985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 +--- !u!1001 &2074474584 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1395086926} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: SetTitle + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &2074474585 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 2074474584} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2074474586 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 2074474584} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2074474587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074474586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &2085352764 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 98562106} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AlertDialog.CreateInstance() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2085352765 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2085352764} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2085352766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2085352765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e61b36b97be2442f977c7ecf3bb9cfb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AlertDialogDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AlertDialogDemo.unity.meta new file mode 100644 index 00000000..0c45904f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AlertDialogDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ed715b7cf82d41d8b86fec32e244127 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AppUpdaterDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AppUpdaterDemo.unity new file mode 100644 index 00000000..f3ba58ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AppUpdaterDemo.unity @@ -0,0 +1,2094 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 165404793} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &32189651 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 967451425} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: ForceUpdate + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Text + value: Force Update? + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.y + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.x + value: 13.4 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 114597546877301324, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!224 &32189652 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + m_PrefabInstance: {fileID: 32189651} + m_PrefabAsset: {fileID: 0} +--- !u!114 &32189655 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + m_PrefabInstance: {fileID: 32189651} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &113502816 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2074797602} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 113502819} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &113502818 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 113502816} + m_PrefabAsset: {fileID: 0} +--- !u!114 &113502819 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 113502816} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113502818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &113502820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113502818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b307e2b3e306f4e2baa16bacd150321c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!850595691 &165404793 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 4 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 +--- !u!1001 &213434590 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 967451425} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: AllowInstallationIfDownloaded + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_IsOn + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Text + value: 'AllowInstallation + + IfDownloaded' + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_FontData.m_MinSize + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_FontData.m_FontSize + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_SizeDelta.x + value: 224 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.x + value: -0.32127 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.y + value: -6.7 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.x + value: 13.4 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 114597546877301324, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!224 &213434591 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + m_PrefabInstance: {fileID: 213434590} + m_PrefabAsset: {fileID: 0} +--- !u!114 &213434592 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + m_PrefabInstance: {fileID: 213434590} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &700891022 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1109339248} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: RequestUpdateInfo + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 700891023} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 700891024} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: RequestUpdateInfo + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &700891023 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 700891022} + m_PrefabAsset: {fileID: 0} +--- !u!114 &700891024 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 700891022} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 700891023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &700891025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 700891023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b307e2b3e306f4e2baa16bacd150321c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &743835504 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1109339248} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: PromptUpdate + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 743835506} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: PromptUpdate() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &743835505 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} +--- !u!114 &743835506 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &743835507 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b307e2b3e306f4e2baa16bacd150321c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &811925639 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &811925640 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + m_PrefabInstance: {fileID: 811925639} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &891824168 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Text + value: App Updater Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1 &967451424 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 967451425} + - component: {fileID: 967451426} + - component: {fileID: 967451427} + m_Layer: 5 + m_Name: Options + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &967451425 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967451424} + 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: 32189652} + - {fileID: 213434591} + m_Father: {fileID: 1109339248} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &967451426 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967451424} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 70 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &967451427 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 967451424} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &1109339247 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 811925640} + m_Modifications: + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Text + value: Methods + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1109339248 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + m_PrefabInstance: {fileID: 1109339247} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1899286833} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1764806949 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &1899286832 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1899286833 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 1899286832} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1899286834 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 1899286832} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1899286835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899286834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 158a4b562bae940c5811e04b2f33313a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_isForceUpdateToggle: {fileID: 32189655} + m_allowInstallationIfDownloaded: {fileID: 213434592} +--- !u!1001 &1988601105 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00006420907 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &2074797601 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 811925640} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &2074797602 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + m_PrefabInstance: {fileID: 2074797601} + m_PrefabAsset: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AppUpdaterDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AppUpdaterDemo.unity.meta new file mode 100644 index 00000000..97dd96d9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/AppUpdaterDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6b806d4c2af640f9b7d456ac4cdb0e9 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/BillingServicesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/BillingServicesDemo.unity new file mode 100644 index 00000000..689790d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/BillingServicesDemo.unity @@ -0,0 +1,3799 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 4890085278179872738, guid: a3c9e0f52d2c0400cb87d641302603ab, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &35037468 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1271684614} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetTransactions + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 35037470} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 35037471} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetTransactions() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &35037470 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 35037468} + m_PrefabAsset: {fileID: 0} +--- !u!114 &35037471 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 35037468} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 35037470} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &35037472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 35037470} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &70124258 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1174983905} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Products + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Your Products + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &70124259 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 70124258} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &110394453 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 70124259} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 49cd706acfe6d466296dddcacc8c1b80, type: 3} + propertyPath: m_Name + value: Products + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 49cd706acfe6d466296dddcacc8c1b80, type: 3} +--- !u!224 &110394454 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + m_PrefabInstance: {fileID: 110394453} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &162578270 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1271684614} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsProductPurchased + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 162578272} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 162578273} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsProductPurchased() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &162578272 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 162578270} + m_PrefabAsset: {fileID: 0} +--- !u!114 &162578273 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 162578270} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162578272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &162578274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162578272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &364369446 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1271684614} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: BuyProduct + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 364369448} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 364369449} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: BuyProduct() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &364369448 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 364369446} + m_PrefabAsset: {fileID: 0} +--- !u!114 &364369449 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 364369446} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 364369448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &364369450 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 364369448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &394679012 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 476008523} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 394679015} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &394679014 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 394679012} + m_PrefabAsset: {fileID: 0} +--- !u!114 &394679015 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 394679012} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394679014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &394679016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394679014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &476008522 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1174983905} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &476008523 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 476008522} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &522512116 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &581308868 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1174983905} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Init + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Initialize + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &581308869 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 581308868} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &726392986 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1289262678} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: RestorePurchases + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: 250 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 726392987} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 726392988} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: RestorePurchases() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &726392987 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 726392986} + m_PrefabAsset: {fileID: 0} +--- !u!114 &726392988 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 726392986} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 726392987} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &726392989 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 726392987} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!224 &726392990 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 726392986} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &743835504 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 581308869} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: InitializeStore + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 743835506} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: InitializeStore() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &743835505 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} +--- !u!114 &743835506 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &743835508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &991373729 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1377677356} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &1174983904 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1377677356} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.0000031935174 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1174983905 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1174983904} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1271684613 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1174983905} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Payments + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Purchase + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1271684614 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1271684613} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1289262677 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1289262678} + - component: {fileID: 1289262679} + m_Layer: 5 + m_Name: Group + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1289262678 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1289262677} + 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: 1813966060} + - {fileID: 726392990} + m_Father: {fileID: 1337588200} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1289262679 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1289262677} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &1337588199 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1174983905} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Restore + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Restore + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1337588200 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1337588199} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1377677355 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000061035156 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1377677356 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1377677355} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1377677357 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1377677355} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1377677358 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377677357} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 92fc85c19085c497698f470b5cbaacd7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_yourProductsNode: {fileID: 110394454} + m_productsDependentObjects: + - {fileID: 70124259} + - {fileID: 1271684614} + - {fileID: 1337588200} + m_productPrefab: {fileID: 114017956030511436, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + m_forceRefreshRestorePurchases: {fileID: 1813966061} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1377677356} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1506670199 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1377677356} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000050477807 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1553520171 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1271684614} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: FinishTransactions + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1553520173} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1553520174} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: FinishTransactions() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1553520173 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1553520171} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1553520174 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1553520171} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553520173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1553520175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1553520173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1813966059 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1289262678} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: ForceRefresh + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: Force Refresh? + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!224 &1813966060 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 1813966059} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1813966061 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 1813966059} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1856934441 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1271684614} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: CanMakePayments + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1856934443} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1856934444} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: CanMakePayments() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1856934443 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1856934441} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1856934444 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1856934441} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856934443} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1856934445 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856934443} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b98e12146feb148108051efc425400ee, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1891695640 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1377677356} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Billing Services Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/BillingServicesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/BillingServicesDemo.unity.meta new file mode 100644 index 00000000..48cdc7eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/BillingServicesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a74e560ee387b496e80823cef4e7c118 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/CloudServicesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/CloudServicesDemo.unity new file mode 100644 index 00000000..7865bbfa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/CloudServicesDemo.unity @@ -0,0 +1,4874 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 4890085278179872738, guid: 560a896f5af4c4c71b3e6160f54c0778, type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &52142878 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 888523565} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Get + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 52142879} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 52142880} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: GetLong() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &52142879 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 52142878} + m_PrefabAsset: {fileID: 0} +--- !u!114 &52142880 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 52142878} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52142879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &52142881 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 52142879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &207811028 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 644605572} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Text + value: Cloud Services Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &346248740 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: String + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &346248741 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 346248740} + m_PrefabAsset: {fileID: 0} +--- !u!1 &346248742 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 346248740} + m_PrefabAsset: {fileID: 0} +--- !u!114 &346248743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 346248742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &394679012 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1079915937} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Synchronize + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 394679015} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: Synchronize() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &394679014 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 394679012} + m_PrefabAsset: {fileID: 0} +--- !u!114 &394679015 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 394679012} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394679014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &394679016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 394679014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 10 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &530890552 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: HasKey + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 530890554} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: HasKey() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &530890553 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 530890552} + m_PrefabAsset: {fileID: 0} +--- !u!114 &530890554 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 530890552} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530890553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &530890555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 530890553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 11 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &536174182 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: ByteArray + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &536174183 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 536174182} + m_PrefabAsset: {fileID: 0} +--- !u!1 &536174184 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 536174182} + m_PrefabAsset: {fileID: 0} +--- !u!114 &536174185 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 536174184} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &644605571 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &644605572 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 644605571} + m_PrefabAsset: {fileID: 0} +--- !u!1 &644605573 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 644605571} + m_PrefabAsset: {fileID: 0} +--- !u!114 &644605574 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 644605573} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 862c943271de14b2ea3161241abbca45, type: 3} + m_Name: + m_EditorClassIdentifier: + m_keyField: {fileID: 1305870108} + m_valueField: {fileID: 1704854053} +--- !u!1001 &651309408 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1891042486} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Get + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 651309409} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 651309410} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: GetDouble() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &651309409 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 651309408} + m_PrefabAsset: {fileID: 0} +--- !u!114 &651309410 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 651309408} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651309409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &651309411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 651309409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &743835504 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1498863146} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Get + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 743835506} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: GetBool() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &743835505 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} +--- !u!114 &743835506 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &743835508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &888523564 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Long + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &888523565 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 888523564} + m_PrefabAsset: {fileID: 0} +--- !u!1 &888523566 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 888523564} + m_PrefabAsset: {fileID: 0} +--- !u!114 &888523567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888523566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &979694887 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 536174183} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Get + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 979694888} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 979694889} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: GetByteArray() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &979694888 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 979694887} + m_PrefabAsset: {fileID: 0} +--- !u!114 &979694889 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 979694887} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979694888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &979694890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 979694888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 8 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1079915936 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1230894574} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Sync + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Text + value: Sync + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1079915937 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + m_PrefabInstance: {fileID: 1079915936} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1177779392 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 536174183} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Set + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1177779393} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1177779394} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: SetByteArray() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1177779393 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1177779392} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1177779394 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1177779392} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177779393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1177779395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177779393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 9 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1230894573 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 644605572} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00004395074 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1230894574 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + m_PrefabInstance: {fileID: 1230894573} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1298360845 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 346248741} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Get + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1298360846} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1298360847} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: GetString() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1298360846 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1298360845} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1298360847 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1298360845} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298360846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1298360848 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298360846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1305870107 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1807774327} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Key + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Text + value: Enter Key + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Text + value: + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1305870108 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + m_PrefabInstance: {fileID: 1305870107} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1357259459 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: RemoveKey + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1357259462} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: RemoveKey() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1357259461 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1357259459} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1357259462 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1357259459} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1357259461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1357259463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1357259461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 12 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 644605572} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1446906173 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetSnapshot + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1446906175} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: GetSnapshot() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1446906174 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1446906173} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1446906175 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1446906173} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1446906174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1446906176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1446906174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 13 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1492428597 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1891042486} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Set + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1492428598} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1492428599} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: SetDouble() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1492428598 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1492428597} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1492428599 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 1492428597} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1492428598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1492428600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1492428598} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1498863145 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Bool + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &1498863146 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 1498863145} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1498863147 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 1498863145} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1498863148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498863147} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &1594164726 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &1704854052 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1807774327} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Value + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Text + value: Enter Value + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1704854053 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + m_PrefabInstance: {fileID: 1704854052} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1807774326 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1230894574} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Input + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Text + value: Input + objectReference: {fileID: 0} + - target: {fileID: 114946616376835068, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_ChildAlignment + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114946616376835068, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_ChildForceExpandWidth + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1807774327 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + m_PrefabInstance: {fileID: 1807774326} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1844089389 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 644605572} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000043692988 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224369000439747256, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.x + value: 12.400391 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1891042485 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1971154176} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Double + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &1891042486 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 1891042485} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1891042487 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + m_PrefabInstance: {fileID: 1891042485} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1891042488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891042487} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &1910853719 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1230894574} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Text + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1910853720 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + m_PrefabInstance: {fileID: 1910853719} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1971154175 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1230894574} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Modify + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Text + value: Operations + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1971154176 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + m_PrefabInstance: {fileID: 1971154175} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1974340862 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 644605572} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &2079368478 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 346248741} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Set + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 2079368479} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2079368480} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: SetString() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2079368479 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2079368478} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2079368480 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2079368478} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079368479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2079368481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2079368479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &2081661976 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1910853720} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2081661979} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2081661978 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2081661976} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2081661979 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2081661976} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2081661978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2081661980 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2081661978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 14 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &2091901867 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1498863146} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Set + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 2091901868} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2091901869} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: SetBool() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2091901868 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2091901867} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2091901869 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2091901867} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091901868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2091901870 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091901868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &2125164273 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 888523565} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Set + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 2125164274} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2125164275} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: SetLong() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2125164274 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2125164273} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2125164275 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 2125164273} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2125164274} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2125164276 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2125164274} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80808c89d4b2c43f7b4bcae4046ac3c0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 + m_onSelect: + m_PersistentCalls: + m_Calls: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/CloudServicesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/CloudServicesDemo.unity.meta new file mode 100644 index 00000000..854f93d0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/CloudServicesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1d5f4f628d4d47c0af716db3baf242f +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DatePickerDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DatePickerDemo.unity new file mode 100644 index 00000000..ab0503db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DatePickerDemo.unity @@ -0,0 +1,2140 @@ +%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: 1, g: 0.66666687, b: 0, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &98562105 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &98562106 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 98562105} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &216326927 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &216326928 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 216326927} + m_PrefabAsset: {fileID: 0} +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &431907080 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00005423423 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &431907081 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 431907080} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &464117600 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Date Picker Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &790081008 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &790081009 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 790081008} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &928597081 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000011870305 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1327137653 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1327137654 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1327137653} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1327137655 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1327137653} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1327137657 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1327137655} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 45523654d2ffb45bf8bb51b85a1b1649, type: 3} + m_Name: + m_EditorClassIdentifier: + m_presentationSection: {fileID: 790081009} + m_mode: {fileID: 1607550426} +--- !u!1001 &1395086925 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 431907081} + m_Modifications: + - target: {fileID: 1105364963865442, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Configure Mode + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1395086926 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1395086925} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1408959055 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 216326928} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1408959056 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1408959055} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1408959057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1408959056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d0946b0907ee4c6ba7626f03eef3e38, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1327137654} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1598308410 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &1607550425 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1395086926} + m_Modifications: + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: Dropdown + objectReference: {fileID: 0} + - target: {fileID: 114776005954242994, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Text + value: Mode + objectReference: {fileID: 0} + - target: {fileID: 114784797724014900, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 21300000, guid: 8452141070dc84588a81dcd4997c35d1, + type: 3} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!114 &1607550426 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 1607550425} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1685203508 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 790081009} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Show + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Show() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1685203509 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1685203508} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1685203510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685203509} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d0946b0907ee4c6ba7626f03eef3e38, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 +--- !u!1001 &1877627574 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1327137654} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &2085352764 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 98562106} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: DatePicker.CreateInstance() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2085352765 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2085352764} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2085352766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2085352765} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d0946b0907ee4c6ba7626f03eef3e38, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DatePickerDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DatePickerDemo.unity.meta new file mode 100644 index 00000000..c6bfbecb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DatePickerDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e381fcec245947308b45288300bab9f +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DeepLinkServicesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DeepLinkServicesDemo.unity new file mode 100644 index 00000000..c6ce036d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DeepLinkServicesDemo.unity @@ -0,0 +1,1325 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 165404793} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &113502816 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2074797602} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 113502819} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &113502818 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 113502816} + m_PrefabAsset: {fileID: 0} +--- !u!114 &113502819 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + m_PrefabInstance: {fileID: 113502816} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113502818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &113502820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113502818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 914144c298b5e482dac63d5f17b709ae, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!850595691 &165404793 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 4 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &811925639 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &811925640 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + m_PrefabInstance: {fileID: 811925639} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &891824168 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Text + value: Deep Link Services Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &1109339247 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 811925640} + m_Modifications: + - target: {fileID: 1786111478595968, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Text + value: Methods + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 446.71497 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1899286833} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1764806949 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &1899286832 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1899286833 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 1899286832} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1899286834 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 1899286832} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1899286835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899286834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 95de158cbc3e14c609614eadf55c09a5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1988601105 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00006420907 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &2074797601 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 811925640} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &2074797602 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + m_PrefabInstance: {fileID: 2074797601} + m_PrefabAsset: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DeepLinkServicesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DeepLinkServicesDemo.unity.meta new file mode 100644 index 00000000..a6f94452 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DeepLinkServicesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3761e0f2b9c80411da28d6f63f85a6e6 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DemoMenu.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DemoMenu.unity new file mode 100644 index 00000000..4f3edfa5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DemoMenu.unity @@ -0,0 +1,802 @@ +%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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 4890085278179872738, guid: ffcb0687f7460467cad865eefc36088d, type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &294543837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 294543839} + - component: {fileID: 294543838} + 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 &294543838 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 294543837} + 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.802082 + 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 &294543839 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 294543837} + 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_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1001 &495021386 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1917475796} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Text + value: Cross Platform Essential Kit + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1 &944200653 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 944200657} + - component: {fileID: 944200656} + - component: {fileID: 944200655} + - component: {fileID: 944200654} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &944200654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944200653} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &944200655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944200653} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &944200656 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944200653} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &944200657 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944200653} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1917475796} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1028725954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1028725957} + - component: {fileID: 1028725956} + - component: {fileID: 1028725955} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1028725955 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028725954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1028725956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028725954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1028725957 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028725954} + 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_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1148377162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1148377167} + - component: {fileID: 1148377166} + - component: {fileID: 1148377164} + - component: {fileID: 1148377163} + 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 &1148377163 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148377162} + m_Enabled: 1 +--- !u!124 &1148377164 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148377162} + m_Enabled: 1 +--- !u!20 &1148377166 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148377162} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &1148377167 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148377162} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1727553442 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1917475796} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000008118638 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1727553443 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} + m_PrefabInstance: {fileID: 1727553442} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1917475795 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 944200657} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1917475796 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 1917475795} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1917475797 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + m_PrefabInstance: {fileID: 1917475795} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1917475798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1917475797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 04fafc3922ee64e4dbc6f894562ed4c1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_optionsRect: {fileID: 1727553443} + m_options: + - displayName: Address Book + sceneName: AddressBookDemo + - displayName: Alert Dialog + sceneName: AlertDialogDemo + - displayName: App Updater + sceneName: AppUpdaterDemo + - displayName: Date Picker + sceneName: DatePickerDemo + - displayName: Deep Link Services + sceneName: DeepLinkServicesDemo + - displayName: Billing Services + sceneName: BillingServicesDemo + - displayName: Cloud Services + sceneName: CloudServicesDemo + - displayName: Game Services + sceneName: GameServicesDemo + - displayName: Mail Composer + sceneName: MailComposerDemo + - displayName: Media Services + sceneName: MediaServicesDemo + - displayName: Message Composer + sceneName: MessageComposerDemo + - displayName: Network Services + sceneName: NetworkServicesDemo + - displayName: Notification Services + sceneName: NotificationServicesDemo + - displayName: Rate My App + sceneName: RateMyAppDemo + - displayName: Share Sheet + sceneName: ShareSheetDemo + - displayName: Social Share Composer + sceneName: SocialShareComposerDemo + - displayName: Utilities + sceneName: UtilitiesDemo + - displayName: Web View + sceneName: WebViewDemo + m_optionButtonPrefab: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, type: 3} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DemoMenu.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DemoMenu.unity.meta new file mode 100644 index 00000000..ec193858 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/DemoMenu.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da59bc017da8c40aba71c41ff276f950 +timeCreated: 1549375031 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/GameServicesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/GameServicesDemo.unity new file mode 100644 index 00000000..b8d07ac8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/GameServicesDemo.unity @@ -0,0 +1,6082 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 357954727} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &86250716 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1190431403} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadServerCredentials + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadServerCredentials + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &86250717 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 86250716} + m_PrefabAsset: {fileID: 0} +--- !u!114 &86250718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86250717} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 12 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &125761181 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 909102020} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.000011760777 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &163235740 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 164646128} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Percentage Completed + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &163235741 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 163235740} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &164646127 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 940038145} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: ReportAchievementProgress + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &164646128 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 164646127} + m_PrefabAsset: {fileID: 0} +--- !u!1 &164646129 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 164646127} + m_PrefabAsset: {fileID: 0} +--- !u!114 &164646130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164646129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &198828969 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1066710903} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &212845519 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1816418569} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Signout + objectReference: {fileID: 0} + - target: {fileID: 1831795015738404, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Signout + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Signout() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &212845520 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 212845519} + m_PrefabAsset: {fileID: 0} +--- !u!114 &212845521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212845520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &276971469 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 940038145} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadAchievements + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadAchievements() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &276971470 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 276971469} + m_PrefabAsset: {fileID: 0} +--- !u!114 &276971471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276971470} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &288995770 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1461117754} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadTopScores + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadTopScores() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &288995771 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 288995770} + m_PrefabAsset: {fileID: 0} +--- !u!114 &288995772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 288995771} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 15 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!850595691 &357954727 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 4 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &381556679 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1060116339} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AddFriend + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SendFriendRequest + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &381556680 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 381556679} + m_PrefabAsset: {fileID: 0} +--- !u!114 &381556681 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381556680} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 14 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &424905282 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 970305430} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 49cd706acfe6d466296dddcacc8c1b80, type: 3} + propertyPath: m_Name + value: Items + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 49cd706acfe6d466296dddcacc8c1b80, type: 3} +--- !u!224 &424905283 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + m_PrefabInstance: {fileID: 424905282} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &434087374 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 909102020} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Game Services Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &442972544 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 564066123} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Progress + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &442972545 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 442972544} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &465548625 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1461117754} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadLeaderboards + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadLeaderboards() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &465548626 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 465548625} + m_PrefabAsset: {fileID: 0} +--- !u!114 &465548627 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 465548626} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &559109170 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 940038145} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ShowAchievementView + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ShowAchievements() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &559109171 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 559109170} + m_PrefabAsset: {fileID: 0} +--- !u!114 &559109172 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 559109171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 11 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!224 &559109173 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 559109170} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &564066122 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1461117754} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: ReportScore + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &564066123 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 564066122} + m_PrefabAsset: {fileID: 0} +--- !u!1 &564066124 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 564066122} + m_PrefabAsset: {fileID: 0} +--- !u!114 &564066125 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564066124} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &674928778 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 674928779} + m_Layer: 5 + m_Name: Space + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &674928779 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 674928778} + 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: 1461117754} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &734731330 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 164646128} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ReportAchievementProgress() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &734731332 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 734731330} + m_PrefabAsset: {fileID: 0} +--- !u!114 &734731333 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 734731332} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 8 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &909102019 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} + propertyPath: m_Name + value: DemoPanel + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &909102020 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 909102019} + m_PrefabAsset: {fileID: 0} +--- !u!1 &909102021 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 909102019} + m_PrefabAsset: {fileID: 0} +--- !u!114 &909102022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 909102021} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 187d388aca3774719bfec89d909da67a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_authDependentObjects: + - {fileID: 1461117754} + - {fileID: 940038145} + - {fileID: 1190431403} + - {fileID: 1060116339} + m_leaderboardsNode: {fileID: 1430102421} + m_leaderboardDependentObjects: + - {fileID: 1072516124} + - {fileID: 564066123} + - {fileID: 1347430574} + m_leaderboardScoreInput: {fileID: 442972545} + m_yourAchivementsNode: {fileID: 424905283} + m_achievementDescriptionDependentObjects: + - {fileID: 970305430} + - {fileID: 164646128} + - {fileID: 559109173} + m_achievementProgressInput: {fileID: 163235741} + m_selectableItemPrefab: {fileID: 114017956030511436, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + m_texturePreview: {fileID: 1856481003} +--- !u!1001 &940038144 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Achievements + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Achievements + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &940038145 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 940038144} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &959585751 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 909102020} + m_Modifications: + - target: {fileID: 224291371103355398, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000045639328 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &959585752 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 959585751} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &970305429 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: YourAchievements + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Your Achievements + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &970305430 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 970305429} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &985042773 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1596119451} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &985042774 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 985042773} + m_PrefabAsset: {fileID: 0} +--- !u!114 &985042775 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 985042774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 17 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1042155867 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1816418569} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LocalPlayer + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LocalPlayer + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1042155868 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1042155867} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1042155869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042155868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1060116338 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Friends + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Friends + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1060116339 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1060116338} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1066710903 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 564066123} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ReportScore() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!114 &1066710905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 198828969} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1072516123 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: YourLeaderboards + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Your Leaderboards + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1072516124 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1072516123} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1103517702 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 940038145} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadAchievementDescriptions + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadAchievementDescriptions() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1103517703 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1103517702} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1103517704 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103517703} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1117755106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1117755107} + m_Layer: 5 + m_Name: Space + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1117755107 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1117755106} + 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: 1461117754} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &1126909769 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1430102421} + m_Modifications: + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1001 &1183476306 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1816418569} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsAuthenticated + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsAuthenticated + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1183476307 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1183476306} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1183476308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183476307} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1190431402 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Server Credentials + objectReference: {fileID: 0} + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Server Credentials + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1190431403 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1190431402} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1241401225 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 940038145} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetNumOfStepsRequired + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetNumOfStepsRequiredToUnlockAchievement() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1241401226 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1241401225} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1241401227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1241401226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 9 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1272834638 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 424905283} + m_Modifications: + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1001 &1307475260 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1060116339} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadFriends + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadFriends + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1307475261 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1307475260} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1307475262 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307475261} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 13 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1347430571 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1461117754} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ShowLeaderboardView + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ShowLeaderboards() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1347430572 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1347430571} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1347430573 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1347430572} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 10 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!224 &1347430574 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1347430571} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1430102420 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1072516124} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 49cd706acfe6d466296dddcacc8c1b80, type: 3} + propertyPath: m_Name + value: Items + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 49cd706acfe6d466296dddcacc8c1b80, type: 3} +--- !u!224 &1430102421 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 49cd706acfe6d466296dddcacc8c1b80, + type: 3} + m_PrefabInstance: {fileID: 1430102420} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 909102020} + - {fileID: 1856481002} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1461117753 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Leaderboards + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Leaderboards + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1461117754 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1461117753} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1593995252 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1816418569} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Authenticate + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Authenticate() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1593995253 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1593995252} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1593995254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1593995253} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1596119450 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1596119451 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1596119450} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1606840178 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &1778743843 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1461117754} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadPlayerCenteredScores + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadPlayerCenteredScores() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1778743844 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1778743843} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1778743845 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1778743844} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0c3c7869d200f4507b8b58ab60ab4cb1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 16 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1816418568 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959585752} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: LocalUser + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Local User + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1816418569 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1816418568} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1856481001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1856481002} + - component: {fileID: 1856481004} + - component: {fileID: 1856481003} + m_Layer: 5 + m_Name: TexturePreview + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1856481002 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856481001} + 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: 1431019556} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -50, y: 50} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1856481003 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856481001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8867924, g: 0.8867924, b: 0.8867924, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &1856481004 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856481001} + m_CullTransparentMesh: 1 +--- !u!1001 &2009793172 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 909102020} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/GameServicesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/GameServicesDemo.unity.meta new file mode 100644 index 00000000..57ed1450 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/GameServicesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f002499860b3e4a7f950aa7c6580edd4 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MailComposerDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MailComposerDemo.unity new file mode 100644 index 00000000..233aebdc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MailComposerDemo.unity @@ -0,0 +1,5384 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &16424598 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2054002385} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AddScreenshot + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 855927651} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 16424600} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddScreenshot() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!114 &16424600 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 16424598} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855927651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &31175295 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1086115061} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000029099765 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &172835337 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2054002385} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Bcc + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &172835338 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 172835337} + m_PrefabAsset: {fileID: 0} +--- !u!1 &172835339 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 172835337} + m_PrefabAsset: {fileID: 0} +--- !u!114 &172835340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 172835339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &211211544 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 640478799} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &211211545 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 211211544} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &224455667 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1544243526} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetToRecipients() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &224455668 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 224455667} + m_PrefabAsset: {fileID: 0} +--- !u!114 &224455669 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 224455668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!114 &224455670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 224455668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 256 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &382266024 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 640478799} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &382266025 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 382266024} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &404403867 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 472900175} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: IsHtml + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: Is HTML + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!114 &404403868 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 404403867} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &422199137 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 942342377} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: CanSendMail + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1875424339} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 422199139} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: MailComposer.CanSendMail() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!114 &422199139 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 422199137} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1875424339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &447442110 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1086115061} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &472900174 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2054002385} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Body + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &472900175 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 472900174} + m_PrefabAsset: {fileID: 0} +--- !u!1 &472900176 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 472900174} + m_PrefabAsset: {fileID: 0} +--- !u!114 &472900177 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 472900176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &480326998 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 910150488} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Cc + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &480326999 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 480326998} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &640478798 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1086115061} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &640478799 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 640478798} + m_PrefabAsset: {fileID: 0} +--- !u!1 &673475436 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2037399609} + m_PrefabAsset: {fileID: 0} +--- !u!114 &673475437 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673475436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 8 +--- !u!1 &756412238 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1370690056} + m_PrefabAsset: {fileID: 0} +--- !u!114 &756412239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756412238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 +--- !u!1 &855927651 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 16424598} + m_PrefabAsset: {fileID: 0} +--- !u!114 &855927652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855927651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 +--- !u!1 &859944289 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1399508104} + m_PrefabAsset: {fileID: 0} +--- !u!114 &859944290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 859944289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 9 +--- !u!1001 &910150487 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2054002385} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Cc + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &910150488 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 910150487} + m_PrefabAsset: {fileID: 0} +--- !u!1 &910150489 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 910150487} + m_PrefabAsset: {fileID: 0} +--- !u!114 &910150490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 910150489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &942342376 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 640478799} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Status + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Status + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &942342377 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 942342376} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1035821082 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 211211545} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1875424339} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1035821086} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1035821084 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1035821082} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1035821085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035821084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 10 +--- !u!114 &1035821086 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1035821082} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035821084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1056394044 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 172835338} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetBccRecipients() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1056394045 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1056394044} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1056394046 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1056394045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 +--- !u!114 &1056394047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1056394045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 256 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1001 &1086115060 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1086115061 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1086115060} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1086115062 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1086115060} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1086115063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086115062} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 182221a3b00b147b3973cf2923ab7040, type: 3} + m_Name: + m_EditorClassIdentifier: + m_instanceDependentObjects: + - {fileID: 2054002385} + - {fileID: 1378942096} + m_toInputField: {fileID: 1520573768} + m_ccInputField: {fileID: 480326999} + m_bccInputField: {fileID: 2147133917} + m_subjectInputField: {fileID: 1207326365} + m_bodyInputField: {fileID: 1647305171} + m_isHtmlToggle: {fileID: 404403868} +--- !u!1001 &1106746766 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 910150488} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetCcRecipients() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1106746767 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1106746766} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1106746768 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106746767} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 +--- !u!114 &1106746769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1106746767} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 256 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1207326364 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1523191490} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Subject + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Demo + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1207326365 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1207326364} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1265504349 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_images.Array.data[0] + value: + objectReference: {fileID: 2800000, guid: 2901797ce0fc540fb806cf83aec0b2e9, type: 3} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &1290802534 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 472900175} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetBody() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1290802535 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1290802534} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1290802536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290802535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 +--- !u!114 &1290802537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290802535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 256 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1001 &1370690056 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 382266025} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 756412238} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1370690058} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: MailComposer.CreateInstance() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!114 &1370690058 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1370690056} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 756412238} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1378942095 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 640478799} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1378942096 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1378942095} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1399508104 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1378942096} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Show + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 859944289} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1399508106} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Show() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!114 &1399508106 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1399508104} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 859944289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1086115061} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1520573767 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1544243526} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Text + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1520573768 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1520573767} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1523191489 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2054002385} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Subject + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &1523191490 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1523191489} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1523191491 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1523191489} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1523191492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1523191491} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &1544243525 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2054002385} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: To + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &1544243526 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1544243525} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1544243527 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1544243525} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1544243528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544243527} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &1647305170 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 472900175} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Body + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Lorem ipsum dolor sit amet, consectetur adipiscing elit + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1647305171 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1647305170} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1875424339 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 422199137} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1875424340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1875424339} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 +--- !u!1001 &1984951768 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1523191490} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetSubject() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1984951769 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1984951768} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1984951770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984951769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a025d61dd93f841679f8e54afb797093, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 +--- !u!114 &1984951771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1984951769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 256 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1001 &2037399609 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2054002385} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AddImage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 673475436} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2037399611} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddImage() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!114 &2037399611 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2037399609} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673475436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2050554046 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1086115061} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Mail Composer Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &2054002384 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 640478799} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &2054002385 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 2054002384} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2147133916 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 172835338} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Bcc + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &2147133917 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 2147133916} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MailComposerDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MailComposerDemo.unity.meta new file mode 100644 index 00000000..a9f979e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MailComposerDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2bcdd828690f948a2b4063c203217b94 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MediaServicesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MediaServicesDemo.unity new file mode 100644 index 00000000..673c730d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MediaServicesDemo.unity @@ -0,0 +1,3548 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 1139095161} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &25431478 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 718037902} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: SaveMediaContent + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SaveMediaContent() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &25431479 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 25431478} + m_PrefabAsset: {fileID: 0} +--- !u!114 &25431480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 25431479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b81680210e181441a9f70f94ec2bc784, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &193149116 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 642648169} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &193149117 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 193149116} + m_PrefabAsset: {fileID: 0} +--- !u!114 &193149118 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193149117} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b81680210e181441a9f70f94ec2bc784, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &233312356 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Media Services Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &239982850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &284287535 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1078000852} + m_Modifications: + - target: {fileID: 1023892561578514, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: CaptureType + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[0].m_Text + value: IMAGE + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[1].m_Text + value: VIDEO + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[2].m_Text + value: image/jpg + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[3].m_Text + value: video/* + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[4].m_Text + value: video/mp4 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[5].m_Text + value: application/pdf + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[6].m_Text + value: plain/text + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[7].m_Text + value: '*.*' + objectReference: {fileID: 0} + - target: {fileID: 114776005954242994, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Text + value: image/* + objectReference: {fileID: 0} + - target: {fileID: 114784797724014900, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114784797724014900, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!224 &284287536 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 284287535} + m_PrefabAsset: {fileID: 0} +--- !u!114 &284287537 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 284287535} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &567479744 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 742963286} + m_Modifications: + - target: {fileID: 1023892561578514, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: MimeType + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.size + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[0].m_Text + value: image/* + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[1].m_Text + value: image/png + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[2].m_Text + value: image/jpg + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[3].m_Text + value: video/* + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[4].m_Text + value: video/mp4 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[5].m_Text + value: application/pdf + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[6].m_Text + value: plain/text + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[7].m_Text + value: '*.*' + objectReference: {fileID: 0} + - target: {fileID: 114784797724014900, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114784797724014900, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!224 &567479745 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 567479744} + m_PrefabAsset: {fileID: 0} +--- !u!114 &567479746 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 567479744} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &642648168 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &642648169 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 642648168} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &683840962 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1141456631} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetCameraAccessStatus + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetCameraAccessStatus() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &683840963 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 683840962} + m_PrefabAsset: {fileID: 0} +--- !u!114 &683840964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 683840963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b81680210e181441a9f70f94ec2bc784, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &718037901 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Save + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Save + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &718037902 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 718037901} + m_PrefabAsset: {fileID: 0} +--- !u!1 &742963285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 742963286} + - component: {fileID: 742963287} + m_Layer: 5 + m_Name: SelectContentMediaOptions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &742963286 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742963285} + 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: 567479745} + - {fileID: 1758120800} + m_Father: {fileID: 1572803775} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &742963287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742963285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &959023213 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_images.Array.data[0] + value: + objectReference: {fileID: 2800000, guid: 2901797ce0fc540fb806cf83aec0b2e9, type: 3} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &1001217325 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1572803775} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: SelectMediaContent + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SelectMediaContent() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1001217326 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1001217325} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1001217327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1001217326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b81680210e181441a9f70f94ec2bc784, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1078000851 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1078000852} + - component: {fileID: 1078000853} + m_Layer: 5 + m_Name: CaptureContentMediaOptions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1078000852 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1078000851} + 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: 284287536} + m_Father: {fileID: 1224902261} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1078000853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1078000851} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!850595691 &1139095161 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 4 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 +--- !u!1001 &1141456630 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: QueryStatus + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Query Status + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1141456631 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1141456630} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1224902260 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Capture + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Capture + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1224902261 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1224902260} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1237726539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1237726540} + - component: {fileID: 1237726542} + - component: {fileID: 1237726541} + m_Layer: 5 + m_Name: TexturePreview + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1237726540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1237726539} + 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: 1431019556} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -37, y: 37} + m_SizeDelta: {x: 70, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1237726541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1237726539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7924528, g: 0.7924528, b: 0.7924528, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 0} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &1237726542 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1237726539} + m_CullTransparentMesh: 1 +--- !u!1001 &1332339662 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1332339663 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1332339664 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1332339665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332339664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f290c1888e48d4b59a3c6d1f4037b0aa, type: 3} + m_Name: + m_EditorClassIdentifier: + m_selectMediaContentOptionsMimeTypeDropdown: {fileID: 567479746} + m_selectMediaContentOptionsMaxAllowedDropdown: {fileID: 1758120801} + m_captureMediaContentOptionsCaptureTypeDropDown: {fileID: 284287537} + m_texturePreview: {fileID: 1237726541} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1332339663} + - {fileID: 1237726540} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1444336899 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1141456631} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetGalleryAccessStatus + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetGalleryAccessStatus() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1444336900 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1444336899} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1444336901 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444336900} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b81680210e181441a9f70f94ec2bc784, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1492365118 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000057509067 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224369000439747256, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 12.400391 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1572803774 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Selection + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Selection + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1572803775 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1572803774} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1588225928 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1224902261} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: CaptureMediaContent + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: CaptureMediaContent() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999994 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1588225929 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1588225928} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1588225930 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588225929} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b81680210e181441a9f70f94ec2bc784, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1650269480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00003018158 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1650269481 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1650269480} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1758120799 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 742963286} + m_Modifications: + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: MaxAllowed + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[0].m_Text + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[1].m_Text + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[2].m_Text + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[3].m_Text + value: video/mp4 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[4].m_Text + value: application/pdf + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[5].m_Text + value: plain/text + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[6].m_Text + value: '*.*' + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[7].m_Text + value: '*.*' + objectReference: {fileID: 0} + - target: {fileID: 114776005954242994, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Text + value: image/* + objectReference: {fileID: 0} + - target: {fileID: 114784797724014900, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114784797724014900, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Sprite + value: + objectReference: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!224 &1758120800 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 1758120799} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1758120801 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 1758120799} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MediaServicesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MediaServicesDemo.unity.meta new file mode 100644 index 00000000..1f2b5563 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MediaServicesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec02001bcc2b04074b0ba9b48befacd2 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MessageComposerDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MessageComposerDemo.unity new file mode 100644 index 00000000..4c817fd8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MessageComposerDemo.unity @@ -0,0 +1,3839 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &130186480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1578406040} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 900.24603 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 9.947469 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetSubject() + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &130186481 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 130186480} + m_PrefabAsset: {fileID: 0} +--- !u!114 &130186482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 130186481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf17ed18e43454f8ab424e04753ab145, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 +--- !u!1001 &150720104 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2098243301} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Body + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &150720105 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 150720104} + m_PrefabAsset: {fileID: 0} +--- !u!1 &150720106 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 150720104} + m_PrefabAsset: {fileID: 0} +--- !u!114 &150720107 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150720106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1001 &259338244 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 912462623} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: MessageComposer.CreateInstance() + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 259338246} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 259338247} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &259338246 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 259338244} + m_PrefabAsset: {fileID: 0} +--- !u!114 &259338247 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 259338244} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 259338246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &259338248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 259338246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf17ed18e43454f8ab424e04753ab145, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!1001 &304447044 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1143986369} + m_Modifications: + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &304447045 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 304447044} + m_PrefabAsset: {fileID: 0} +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &497753588 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2098243301} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Recipients + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &497753589 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 497753588} + m_PrefabAsset: {fileID: 0} +--- !u!1 &497753590 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 497753588} + m_PrefabAsset: {fileID: 0} +--- !u!114 &497753591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 497753590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1001 &542167945 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1143986369} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &673941015 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1143986369} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000038948627 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &703228456 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1296223045} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: CanSendText + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: MessageComposer.CanSendText() + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 703228457} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 703228458} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &703228457 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 703228456} + m_PrefabAsset: {fileID: 0} +--- !u!114 &703228458 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 703228456} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703228457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &703228460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 703228457} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf17ed18e43454f8ab424e04753ab145, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 +--- !u!1001 &888993762 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 304447045} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &888993763 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 888993762} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &892185308 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 497753589} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetRecipients() + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &892185309 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 892185308} + m_PrefabAsset: {fileID: 0} +--- !u!114 &892185310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892185309} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf17ed18e43454f8ab424e04753ab145, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 +--- !u!1001 &912462622 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 304447045} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &912462623 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 912462622} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1143986368 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000061035156 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1143986369 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1143986368} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1143986370 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1143986368} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1143986371 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1143986370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7eb33d74adcca414da722cd2734fdb2e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_instanceDependentObjects: + - {fileID: 2098243301} + - {fileID: 1578572715} + m_recipientsInputField: {fileID: 1925541034} + m_subjectInputField: {fileID: 2050139772} + m_bodyInputField: {fileID: 1905959682} +--- !u!1001 &1197438819 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 150720105} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetBody() + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1197438820 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1197438819} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1197438821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197438820} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf17ed18e43454f8ab424e04753ab145, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1242519258 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1578572715} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Show + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Show() + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1242519260} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1242519261} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1242519260 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1242519258} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1242519261 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1242519258} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242519260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1242519262 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242519260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf17ed18e43454f8ab424e04753ab145, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 +--- !u!1001 &1296223044 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 304447045} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Status + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Status + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1296223045 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1296223044} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1143986369} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1578406039 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2098243301} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: Subject + objectReference: {fileID: 0} + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -140 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 905.21967 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &1578406040 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1578406039} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1578406041 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1578406039} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1578406042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1578406041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1001 &1578572714 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 304447045} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1578572715 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1578572714} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1794821474 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1143986369} + m_Modifications: + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Message Composer Demo + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &1905959681 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 150720105} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Body + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Demo + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1905959682 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1905959681} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1925541033 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 497753589} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Text + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1925541034 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1925541033} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2050139771 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1578406040} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Subject + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 302.60983 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 605.21967 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &2050139772 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 2050139771} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2098243300 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 304447045} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &2098243301 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 2098243300} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2128761726 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 888993763} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 703228457} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 2128761729} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2128761728 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2128761726} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2128761729 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2128761726} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128761728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2128761730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128761728} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf17ed18e43454f8ab424e04753ab145, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MessageComposerDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MessageComposerDemo.unity.meta new file mode 100644 index 00000000..f8f61a4e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MessageComposerDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4cc062bb976b6447e9bb1c6b7f7fb520 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NetworkServicesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NetworkServicesDemo.unity new file mode 100644 index 00000000..c6193758 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NetworkServicesDemo.unity @@ -0,0 +1,2244 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &182614046 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 861786610} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: StopNotifier + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: StopNotifier() + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &182614047 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 182614046} + m_PrefabAsset: {fileID: 0} +--- !u!114 &182614048 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 182614047} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b8157adecae4475b9548975cb57a883, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 +--- !u!1001 &193149116 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 642648169} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &193149117 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 193149116} + m_PrefabAsset: {fileID: 0} +--- !u!114 &193149118 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193149117} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b8157adecae4475b9548975cb57a883, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 +--- !u!1001 &233312356 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Network Services Demo + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &239982850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &388078517 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Status + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Status + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &388078518 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 388078517} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &578482054 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsNotifierActive + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999917 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999917 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999917 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsNotifierActive + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &578482055 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 578482054} + m_PrefabAsset: {fileID: 0} +--- !u!114 &578482056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578482055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b8157adecae4475b9548975cb57a883, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 +--- !u!1001 &642648168 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &642648169 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 642648168} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &683840962 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsHostReachable + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsHostReachable + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &683840963 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 683840962} + m_PrefabAsset: {fileID: 0} +--- !u!114 &683840964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 683840963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b8157adecae4475b9548975cb57a883, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 +--- !u!1001 &759937129 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 861786610} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: StartNotifier + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: StartNotifier() + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &759937130 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 759937129} + m_PrefabAsset: {fileID: 0} +--- !u!114 &759937131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 759937130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b8157adecae4475b9548975cb57a883, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!1001 &861786609 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Methods + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Methods + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &861786610 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 861786609} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1218960401 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsInternetActive + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsInternetActive + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1218960402 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1218960401} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1218960403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1218960402} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b8157adecae4475b9548975cb57a883, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 +--- !u!1001 &1332339662 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1332339663 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1332339664 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1332339665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332339664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59b241134bd6a4af4815dbd2f0e02444, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1332339663} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1492365118 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00003302649 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1650269480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1650269481 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1650269480} + m_PrefabAsset: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NetworkServicesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NetworkServicesDemo.unity.meta new file mode 100644 index 00000000..7f5fa378 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NetworkServicesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d14012fab82bc42e6bdf3464bebf0e63 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NotificationServicesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NotificationServicesDemo.unity new file mode 100644 index 00000000..a70b5ba3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NotificationServicesDemo.unity @@ -0,0 +1,7951 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 4890085278179872738, guid: 5a3d3bf9166eb4db3abdbc59c0523e04, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &43271107 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: RemoteNotifications + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Remote Notifications + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &43271108 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 43271107} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &105356955 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1975393869} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ScheduleNotification-CalendarTrigger + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &105356956 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 105356955} + m_PrefabAsset: {fileID: 0} +--- !u!114 &105356957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 105356956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 14 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &160145530 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 43271108} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: UnregisterForRemoteNotifications + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: UnregisterForRemoteNotifications() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &160145531 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 160145530} + m_PrefabAsset: {fileID: 0} +--- !u!114 &160145532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160145531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 12 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &190863547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 190863548} + - component: {fileID: 190863550} + - component: {fileID: 190863551} + m_Layer: 5 + m_Name: TimeIntervalTrigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &190863548 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 190863547} + 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: 810423977} + - {fileID: 1984385226} + m_Father: {fileID: 1721050672} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &190863550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 190863547} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 40 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &190863551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 190863547} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &193149116 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 642648169} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &193149117 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 193149116} + m_PrefabAsset: {fileID: 0} +--- !u!114 &193149118 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193149117} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 15 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &227724121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 227724122} + - component: {fileID: 227724123} + m_Layer: 5 + m_Name: Hour, Minute, Second + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &227724122 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 227724121} + 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: 236021487} + - {fileID: 1246705614} + - {fileID: 1069823960} + m_Father: {fileID: 1516477723} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &227724123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 227724121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &229610757 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 412798177} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: CancelScheduledNotification() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &229610758 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 229610757} + m_PrefabAsset: {fileID: 0} +--- !u!114 &229610759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 229610758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &233312356 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Notification Services Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &235979170 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 43271108} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: RegisterForRemoteNotifications + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: RegisterForRemoteNotifications() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &235979171 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 235979170} + m_PrefabAsset: {fileID: 0} +--- !u!114 &235979172 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235979171} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 11 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &236021486 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 227724122} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Hour + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Hour(0-23) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &236021487 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 236021486} + m_PrefabAsset: {fileID: 0} +--- !u!114 &236021488 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 236021486} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &239982850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &381469399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 381469400} + - component: {fileID: 381469401} + m_Layer: 5 + m_Name: DayOfWeek, WeekOfMonth, WeekOfYear, + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &381469400 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381469399} + 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: 915302767} + - {fileID: 776092856} + - {fileID: 2010261461} + m_Father: {fileID: 1516477723} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &381469401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381469399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &388078517 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Permission + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Permissions + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &388078518 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 388078517} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &412798176 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: CancelScheduledNotification + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &412798177 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 412798176} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &461287832 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ScheduleNotificationNow + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ScheduleNotificationNow() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &461287833 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 461287832} + m_PrefabAsset: {fileID: 0} +--- !u!114 &461287834 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 461287833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &515291890 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: CancelAllScheduledNotifications + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: CancelAllScheduledNotifications() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &515291891 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 515291890} + m_PrefabAsset: {fileID: 0} +--- !u!114 &515291892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 515291891} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &523869747 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1288256851} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Title + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Title + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Demo + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &523869748 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 523869747} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &642648168 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &642648169 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 642648168} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &683840962 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetSettings + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetSettings() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &683840963 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 683840962} + m_PrefabAsset: {fileID: 0} +--- !u!114 &683840964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 683840963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &756746391 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 412798177} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Notification Id + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &756746392 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 756746391} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &776092855 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 381469400} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: WeekOfMonth + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: WeekOfMonth(1-5) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &776092856 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 776092855} + m_PrefabAsset: {fileID: 0} +--- !u!114 &776092857 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 776092855} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &810423976 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 190863548} + m_Modifications: + - target: {fileID: 1745382843081832, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} + propertyPath: m_Name + value: Info + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Text + value: Time Interval Trigger + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 487.73065 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} +--- !u!224 &810423977 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + m_PrefabInstance: {fileID: 810423976} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &869303339 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetScheduledNotifications + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetScheduledNotifications() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &869303340 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 869303339} + m_PrefabAsset: {fileID: 0} +--- !u!114 &869303341 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 869303340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &890408653 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2065111353} + m_Modifications: + - target: {fileID: 1745382843081832, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} + propertyPath: m_Name + value: Label + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Text + value: Priority + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 114640770555796246, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114640770555796246, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_PreferredWidth + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: -27.4255 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 7.4255 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} +--- !u!1001 &915302766 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 381469400} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: DayOfWeek + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: DayOfWeek(1-7) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &915302767 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 915302766} + m_PrefabAsset: {fileID: 0} +--- !u!114 &915302768 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 915302766} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1069823959 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 227724122} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Second + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Second(0-59) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &1069823960 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1069823959} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1069823961 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1069823959} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1083480690 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: LocalNotifications + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Local Notifications + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1083480691 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1083480690} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1085555412 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 43271108} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsRegisteredForRemoteNotifications + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsRegisteredForRemoteNotifications() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1085555413 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1085555412} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1085555414 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085555413} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 13 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1149653036 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1430946763} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ScheduleNotification-TimeIntervalTrigger + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1149653037 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1149653036} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1149653038 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1149653037} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1178881576 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1959678225} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Year + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Year + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!1001 &1197536070 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2065111353} + m_Modifications: + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: Dropdown + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Value + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.size + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[0].m_Text + value: Low + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[1].m_Text + value: Medium + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[2].m_Text + value: High + objectReference: {fileID: 0} + - target: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Options.m_Options.Array.data[3].m_Text + value: Max + objectReference: {fileID: 0} + - target: {fileID: 114435843442480086, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_PreferredWidth + value: 200 + objectReference: {fileID: 0} + - target: {fileID: 114776005954242994, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Text + value: Medium + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!114 &1197536071 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 1197536070} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1218960401 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: RequestForPermission + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: RequestForPermission() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1218960402 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1218960401} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1218960403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1218960402} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1223760416 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1959678225} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Day + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Day (1-31) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &1223760417 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1223760416} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1223760418 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1223760416} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1246705613 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 227724122} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Minute + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Minute(0-59) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &1246705614 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1246705613} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1246705615 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1246705613} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1285116731 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1285116732} + - component: {fileID: 1285116734} + - component: {fileID: 1285116733} + m_Layer: 5 + m_Name: Priority, Repeat + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1285116732 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1285116731} + 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: 2065111353} + - {fileID: 1489131490} + m_Father: {fileID: 1288256851} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1285116733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1285116731} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1285116734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1285116731} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1001 &1288256850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: CreateNotification + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Notification Data + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1288256851 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1288256850} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1332339662 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1332339663 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1332339664 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1332339665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332339664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e31442104c6494906b844f01a587e5de, type: 3} + m_Name: + m_EditorClassIdentifier: + m_accessDependentObjects: + - {fileID: 1288256851} + - {fileID: 1083480691} + - {fileID: 43271108} + m_idInputField: {fileID: 1644934278} + m_titleInputField: {fileID: 523869748} + m_timeIntervalInputField: {fileID: 1984385225} + m_calendarTriggerFields: {fileID: 1516477726} + m_cancelNotificationIdInputField: {fileID: 756746392} + m_notificationPriorityDropdown: {fileID: 1197536071} + m_repeatToggle: {fileID: 1489131491} +--- !u!1001 &1373846613 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1959678225} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Month + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Month (1-12) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &1373846614 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1373846613} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1373846615 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1373846613} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1430946762 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: ScheduleTimeIntervalTriggerNotification + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1430946763 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1430946762} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1332339663} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1455995803 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: RemoveAllDeliveredNotifications + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: RemoveAllDeliveredNotifications() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1455995804 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1455995803} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1455995805 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1455995804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 9 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1489131489 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1285116732} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: Repeat + objectReference: {fileID: 0} + - target: {fileID: 114597546877301324, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_PreferredWidth + value: 150 + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: Repeat? + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Color.b + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Color.g + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Color.r + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_FontData.m_Alignment + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: -25.4014 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: -12.7007 + objectReference: {fileID: 0} + - target: {fileID: 224207624468828976, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 12 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: -10 + objectReference: {fileID: 0} + - target: {fileID: 224863752380380678, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!224 &1489131490 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 1489131489} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1489131491 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 1489131489} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1492365118 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000027366528 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1 &1516477722 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1516477723} + - component: {fileID: 1516477725} + - component: {fileID: 1516477724} + - component: {fileID: 1516477726} + m_Layer: 5 + m_Name: CalendarTrigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1516477723 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516477722} + 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: 1692070112} + - {fileID: 1959678225} + - {fileID: 227724122} + - {fileID: 381469400} + m_Father: {fileID: 1721050672} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1516477724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516477722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 200 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1516477725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516477722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1516477726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516477722} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0844d39e737c144c1bba9a45523887e5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_day: {fileID: 1223760418} + m_month: {fileID: 1373846615} + m_year: {fileID: 1967089365} + m_hour: {fileID: 236021488} + m_minute: {fileID: 1246705615} + m_second: {fileID: 1069823961} + m_dayOfWeek: {fileID: 915302768} + m_weekOfMonth: {fileID: 776092857} + m_weekOfYear: {fileID: 2010261462} +--- !u!1001 &1583181105 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: GetDeliveredNotifications + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: GetDeliveredNotifications() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1583181106 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1583181105} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1583181107 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1583181106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 8 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1616121855 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 43271108} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: DeviceToken + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: DeviceToken + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1616121856 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1616121855} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1616121857 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616121856} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: de6803a10a5684b549b8e0e83fc32836, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 10 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &1644934277 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1288256851} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Id + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: NotificationId + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: demoId + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1644934278 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1644934277} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1650269480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1650269481 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1650269480} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1692070111 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1516477723} + m_Modifications: + - target: {fileID: 1745382843081832, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} + propertyPath: m_Name + value: Info + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Text + value: 'Calendar Trigger + + Set -1 or leave the fields if you don''t + want to set' + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114640770555796246, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_PreferredHeight + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} +--- !u!224 &1692070112 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + m_PrefabInstance: {fileID: 1692070111} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1721050671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1721050672} + - component: {fileID: 1721050676} + - component: {fileID: 1721050675} + - component: {fileID: 1721050674} + m_Layer: 5 + m_Name: Triggers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1721050672 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721050671} + 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: 190863548} + - {fileID: 1516477723} + m_Father: {fileID: 1288256851} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1721050674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721050671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 30 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1721050675 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721050671} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 200 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &1721050676 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1721050671} + m_CullTransparentMesh: 1 +--- !u!1001 &1941483025 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1 &1959678224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1959678225} + - component: {fileID: 1959678226} + m_Layer: 5 + m_Name: Day, Month, Year + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1959678225 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959678224} + 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: 1223760417} + - {fileID: 1373846614} + - {fileID: 1967089364} + m_Father: {fileID: 1516477723} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1959678226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1959678224} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!224 &1967089364 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1178881576} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1967089365 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1178881576} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1975393868 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1083480691} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: ScheduleCalendarTriggerNotification + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1975393869 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1975393868} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1984385224 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 190863548} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: Interval + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Time Interval in Seconds + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredHeight + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 487.73065 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1984385225 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1984385224} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &1984385226 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1984385224} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2010261460 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 381469400} + m_Modifications: + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_Name + value: WeekOfYear + objectReference: {fileID: 0} + - target: {fileID: 1537348704010034, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: WeekOfYear(1-53) + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_MinSize + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FontData.m_FontSize + value: 16 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_ContentType + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_KeyboardType + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_CharacterValidation + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!224 &2010261461 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 2010261460} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2010261462 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 2010261460} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2065111352 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1285116732} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: Priority + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &2065111353 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 2065111352} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2065111354 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 2065111352} + m_PrefabAsset: {fileID: 0} +--- !u!222 &2065111355 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2065111354} + m_CullTransparentMesh: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NotificationServicesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NotificationServicesDemo.unity.meta new file mode 100644 index 00000000..8eadff8d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/NotificationServicesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f426002b5b2b42de9d7a86dfd50b75f +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/RateMyAppDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/RateMyAppDemo.unity new file mode 100644 index 00000000..37255388 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/RateMyAppDemo.unity @@ -0,0 +1,1910 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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: 165404793} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &113502816 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2074797602} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 113502819} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &113502818 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 113502816} + m_PrefabAsset: {fileID: 0} +--- !u!114 &113502819 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 113502816} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113502818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &113502820 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 113502818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d937d28509da4a109f8e6f8a9fd344c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!850595691 &165404793 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 4 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &700891022 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1109339248} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsAllowedToRate + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 700891023} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 700891024} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsAllowedToRate() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &700891023 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 700891022} + m_PrefabAsset: {fileID: 0} +--- !u!114 &700891024 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 700891022} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 700891023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &700891025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 700891023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d937d28509da4a109f8e6f8a9fd344c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &743835504 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1109339248} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AskForReview + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 743835505} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 743835506} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AskForReviewNow() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &743835505 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} +--- !u!114 &743835506 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 743835504} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &743835508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 743835505} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3d937d28509da4a109f8e6f8a9fd344c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 + m_onSelect: + m_PersistentCalls: + m_Calls: [] +--- !u!1001 &811925639 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &811925640 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 811925639} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &891824168 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Rate My App Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &1109339247 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 811925640} + m_Modifications: + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Methods + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1109339248 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1109339247} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1899286833} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1764806949 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &1899286832 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1899286833 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1899286832} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1899286834 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1899286832} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1899286835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899286834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64814fd37bda846a48d4ee14470f9f9a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1988601105 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1899286833} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00006420907 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &2074797601 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 811925640} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &2074797602 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 2074797601} + m_PrefabAsset: {fileID: 0} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/RateMyAppDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/RateMyAppDemo.unity.meta new file mode 100644 index 00000000..de95bb83 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/RateMyAppDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08ed5e4259af342f1900b754aadff0e9 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/ShareSheetDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/ShareSheetDemo.unity new file mode 100644 index 00000000..646b674a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/ShareSheetDemo.unity @@ -0,0 +1,3606 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &113607021 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1465885766} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &113607022 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 113607021} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &250581321 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1434727697} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 250581324} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &250581323 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 250581321} + m_PrefabAsset: {fileID: 0} +--- !u!114 &250581324 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 250581321} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 250581323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &250581325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 250581323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2fedf93cd545ba80c54307c608c0e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &424312406 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &424312407 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 424312406} + m_PrefabAsset: {fileID: 0} +--- !u!1 &424312408 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 424312406} + m_PrefabAsset: {fileID: 0} +--- !u!114 &424312409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 424312408} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1210905f0541841418175c9e6a8429d8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_instanceDependentObjects: + - {fileID: 646863932} + - {fileID: 1386392282} + m_textInputField: {fileID: 751568418} + m_urlInputField: {fileID: 549736044} + m_isLocalPathToggle: {fileID: 1419566430} +--- !u!1001 &549736043 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1735908553} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: 'URL eg: www.google.com' + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: www.google.com + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &549736044 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 549736043} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &582968283 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 779723462} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddText() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &582968284 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 582968283} + m_PrefabAsset: {fileID: 0} +--- !u!114 &582968285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 582968284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2fedf93cd545ba80c54307c608c0e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 +--- !u!1001 &646863931 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1465885766} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &646863932 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 646863931} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &751568417 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 779723462} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Text + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Demo + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &751568418 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 751568417} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &767532702 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 424312407} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000028901586 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &779723461 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 646863932} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: AddText + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &779723462 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 779723461} + m_PrefabAsset: {fileID: 0} +--- !u!1 &779723463 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 779723461} + m_PrefabAsset: {fileID: 0} +--- !u!114 &779723464 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779723463} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &1054009844 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 646863932} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AddImage + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1054009846} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1054009847} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddImage() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1054009846 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1054009844} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1054009847 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1054009844} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054009846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1054009848 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1054009846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2fedf93cd545ba80c54307c608c0e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1288000190 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 646863932} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AddScreenshot + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1288000192} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1288000193} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddScreenshot() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1288000192 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1288000190} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1288000193 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1288000190} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1288000192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1288000194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1288000192} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2fedf93cd545ba80c54307c608c0e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!1001 &1307675735 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 424312407} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Share Sheet Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &1354631845 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 424312407} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &1386392281 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1465885766} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1386392282 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1386392281} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1419566429 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1735908553} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: IsLocal + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: 'Is Local + +' + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!114 &1419566430 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 1419566429} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 424312407} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1434727696 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1465885766} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1434727697 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1434727696} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1465885765 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 424312407} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1465885766 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1465885765} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1735908552 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 646863932} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: AddURL + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &1735908553 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1735908552} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1735908554 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1735908552} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1735908555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735908554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &1885982172 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 113607022} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1885982174} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1885982175} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ShareSheet.CreateInstance() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1885982174 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1885982172} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1885982175 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1885982172} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885982174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1885982176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1885982174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2fedf93cd545ba80c54307c608c0e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 +--- !u!1001 &1891041438 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1735908553} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddURL() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1891041439 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1891041438} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1891041440 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1891041439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2fedf93cd545ba80c54307c608c0e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 +--- !u!1001 &1893617970 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1386392282} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Show + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1893617972} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1893617973} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Show() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1893617972 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1893617970} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1893617973 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1893617970} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1893617972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1893617974 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1893617972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2fedf93cd545ba80c54307c608c0e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 +--- !u!1001 &1916392977 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_images.Array.data[0] + value: + objectReference: {fileID: 2800000, guid: 2901797ce0fc540fb806cf83aec0b2e9, type: 3} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/ShareSheetDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/ShareSheetDemo.unity.meta new file mode 100644 index 00000000..c5aa9065 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/ShareSheetDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 688613dba58dd4334a08cbfbab78d92b +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/SocialShareComposerDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/SocialShareComposerDemo.unity new file mode 100644 index 00000000..23b02aec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/SocialShareComposerDemo.unity @@ -0,0 +1,4601 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &163166859 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 720842439} + m_Modifications: + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: Dropdown + objectReference: {fileID: 0} + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114435843442480086, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114435843442480086, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_PreferredWidth + value: 300 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!114 &163166860 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 163166859} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &198026485 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 844364910} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &198026486 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 198026485} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &253463232 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1601017796} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: IsLocal + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: 'Is Local + +' + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!114 &253463233 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 253463232} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &271196317 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 397627731} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: AddText + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &271196318 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 271196317} + m_PrefabAsset: {fileID: 0} +--- !u!1 &271196319 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 271196317} + m_PrefabAsset: {fileID: 0} +--- !u!114 &271196320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271196319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &342722136 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 271196318} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Text + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Demo + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &342722137 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 342722136} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &377931788 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 844364910} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Status + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Status + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &377931789 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 377931788} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &397627730 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 844364910} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &397627731 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 397627730} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &439326241 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &439326242 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 439326241} + m_PrefabAsset: {fileID: 0} +--- !u!1 &439326243 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 439326241} + m_PrefabAsset: {fileID: 0} +--- !u!114 &439326244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 439326243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76b94f176260f4917890f715140184d3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_instanceDependentObjects: + - {fileID: 397627731} + - {fileID: 923806609} + m_typeDropdown: {fileID: 163166860} + m_textInputField: {fileID: 342722137} + m_urlInputField: {fileID: 1763147227} + m_isLocalPathToggle: {fileID: 253463233} +--- !u!1001 &456916142 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 397627731} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AddImage + objectReference: {fileID: 0} + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 456916144} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 456916145} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddImage() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &456916144 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 456916142} + m_PrefabAsset: {fileID: 0} +--- !u!114 &456916145 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 456916142} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 456916144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &456916146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 456916144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 +--- !u!1001 &471593407 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 923806609} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Show + objectReference: {fileID: 0} + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 471593409} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 471593410} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Show() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &471593409 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 471593407} + m_PrefabAsset: {fileID: 0} +--- !u!114 &471593410 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 471593407} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471593409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &471593411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471593409} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 +--- !u!1001 &493349188 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1152226543} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 493349190} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 493349191} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SocialShareComposer.CreateInstance() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &493349190 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 493349188} + m_PrefabAsset: {fileID: 0} +--- !u!114 &493349191 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 493349188} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493349190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &493349192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493349190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 +--- !u!1001 &627476112 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 844364910} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: UserInput + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: User Input + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &627476113 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 627476112} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &720842438 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 627476113} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: SelectComposer + objectReference: {fileID: 0} + - target: {fileID: 114484300395288958, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Spacing + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &720842439 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 720842438} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &840848131 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_images.Array.data[0] + value: + objectReference: {fileID: 2800000, guid: 2901797ce0fc540fb806cf83aec0b2e9, type: 3} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &844364909 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 439326242} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.00004022349 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &844364910 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 844364909} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &887635633 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 377931789} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsComposerAvailable + objectReference: {fileID: 0} + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 887635635} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 887635636} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsComposerAvailable() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &887635635 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 887635633} + m_PrefabAsset: {fileID: 0} +--- !u!114 &887635636 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 887635633} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887635635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &887635637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 887635635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 +--- !u!1001 &923806608 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 844364910} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &923806609 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 923806608} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &998377885 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 439326242} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000035504505 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1023829548 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 720842439} + m_Modifications: + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Text + value: 'Select Composer:' + objectReference: {fileID: 0} + - target: {fileID: 114640770555796246, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} +--- !u!1 &1023829549 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1745382843081832, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + m_PrefabInstance: {fileID: 1023829548} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1023829550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023829549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &1042298660 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1601017796} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddURL() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1042298661 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1042298660} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1042298662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1042298661} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 +--- !u!1001 &1152226542 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 844364910} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1152226543 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1152226542} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1361590556 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 397627731} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: AddScreenshot + objectReference: {fileID: 0} + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1361590558} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1361590559} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: AddScreenshot() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1361590558 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1361590556} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1361590559 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1361590556} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1361590558} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1361590560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1361590558} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 +--- !u!1001 &1411632970 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 198026486} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnButtonPress + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 1411632973} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.UI.Button, UnityEngine.UI + objectReference: {fileID: 0} + - target: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1411632972 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1411632970} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1411632973 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114567474638298420, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1411632970} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1411632972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1411632974 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1411632972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 439326242} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1601017795 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 397627731} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: AddURL + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &1601017796 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1601017795} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1601017797 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 1601017795} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1601017798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1601017797} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &1763147226 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1601017796} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: 'URL eg: www.google.com' + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: www.google.com + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1763147227 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1763147226} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1846578114 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 439326242} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &1879788921 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 439326242} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Social Share Composer Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &2027273532 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 271196318} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetText() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2027273533 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2027273532} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2027273534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2027273533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 15e5d56d912bc4641885dc70f570ce78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/SocialShareComposerDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/SocialShareComposerDemo.unity.meta new file mode 100644 index 00000000..2751f232 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/SocialShareComposerDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e98b4d92b889d4260a2a4b36f1e0b1c0 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/UtilitiesDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/UtilitiesDemo.unity new file mode 100644 index 00000000..40bc5839 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/UtilitiesDemo.unity @@ -0,0 +1,2159 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &165717948 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 241558428} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: OpenAppStorePage() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &165717949 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 165717948} + m_PrefabAsset: {fileID: 0} +--- !u!114 &165717950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165717949} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b959751cc0ef54eec8d90d0d5db0ebe8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 1 +--- !u!1001 &172546815 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &233312356 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Utilities Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &239982850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &241558427 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} + propertyPath: m_Name + value: OpenCustomAppStorePage + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 53106115b89de4cc6a667adc369f97b8, type: 3} +--- !u!224 &241558428 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 241558427} + m_PrefabAsset: {fileID: 0} +--- !u!1 &241558429 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1729283381912644, guid: 53106115b89de4cc6a667adc369f97b8, + type: 3} + m_PrefabInstance: {fileID: 241558427} + m_PrefabAsset: {fileID: 0} +--- !u!114 &241558430 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241558429} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &272220794 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 241558428} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Application Id + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &388078517 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: AppStore + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: App Store + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &388078518 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 388078517} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &628956955 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: OpenAppStorePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: OpenAppStorePage() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &628956956 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 628956955} + m_PrefabAsset: {fileID: 0} +--- !u!114 &628956957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 628956956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b959751cc0ef54eec8d90d0d5db0ebe8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 +--- !u!1001 &708976586 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &708976587 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 708976586} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &798373250 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 708976587} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &798373251 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 798373250} + m_PrefabAsset: {fileID: 0} +--- !u!114 &798373252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 798373251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b959751cc0ef54eec8d90d0d5db0ebe8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1332339662 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1332339663 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1332339664 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1332339665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332339664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88fb5361371b1420599a705233226fe5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_idInputField: {fileID: 1923155059} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1332339663} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1492365118 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.000030943334 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1650269480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -0.00004254677 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1650269481 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1650269480} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1923155059 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 272220794} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &2020397427 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: OpenApplicationSettings + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: OpenApplicationSettings() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2020397428 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2020397427} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2020397429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2020397428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b959751cc0ef54eec8d90d0d5db0ebe8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/UtilitiesDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/UtilitiesDemo.unity.meta new file mode 100644 index 00000000..5bb89a77 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/UtilitiesDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13afb6d6e6ccc40298c9b382537e2a56 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/WebViewDemo.unity b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/WebViewDemo.unity new file mode 100644 index 00000000..04a17a36 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/WebViewDemo.unity @@ -0,0 +1,6936 @@ +%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: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + 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_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &46090746 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1384146894} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: URL + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: URL + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 226.30492 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &46090747 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 46090746} + m_PrefabAsset: {fileID: 0} +--- !u!114 &46090748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 46090747} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 7 +--- !u!1001 &86681737 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 810574475} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: IsLoading + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: IsLoading + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 678.91473 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &86681738 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 86681737} + m_PrefabAsset: {fileID: 0} +--- !u!114 &86681739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86681738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 10 +--- !u!1001 &151789009 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Load + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Load + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &151789010 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 151789009} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &154887148 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1822540378} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Show + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Show() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &154887149 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 154887148} + m_PrefabAsset: {fileID: 0} +--- !u!114 &154887150 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154887149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 11 +--- !u!1001 &193149116 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 642648169} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ResourcePage + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Resource Page + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &193149117 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 193149116} + m_PrefabAsset: {fileID: 0} +--- !u!114 &193149118 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193149117} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 22 +--- !u!1001 &223367855 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Extensions + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Extensions + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &223367856 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 223367855} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &233312356 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 114267771407102612, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Text + value: Web View Demo + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_Pivot.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224101732043339844, guid: 642edd1adfa1d478ebaa2d75fa490d52, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 642edd1adfa1d478ebaa2d75fa490d52, type: 3} +--- !u!1001 &239172610 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1757521886} + m_Modifications: + - target: {fileID: 1847481865867428, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} + propertyPath: m_Name + value: IsLocal + objectReference: {fileID: 0} + - target: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_IsOn + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114818449290004172, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Text + value: 'Is Local + +' + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224973839754196500, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a71d99f82f5cb4d7e8703e58527ed9bd, type: 3} +--- !u!114 &239172611 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114691862735848880, guid: a71d99f82f5cb4d7e8703e58527ed9bd, + type: 3} + m_PrefabInstance: {fileID: 239172610} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &239982850 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224035219049407068, guid: 976e185699ff140fdb61f269f556fe93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 976e185699ff140fdb61f269f556fe93, type: 3} +--- !u!1001 &270683984 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1119118096} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Enter Html string + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Lorem ipsum dolor sit amet, consectetur adipiscing elit + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &270683985 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 270683984} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &314235637 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1806829101} + m_Modifications: + - target: {fileID: 114304789178456594, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Text + value: 'Control Style:' + objectReference: {fileID: 0} + - target: {fileID: 114640770555796246, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224181412554927584, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224880110391763244, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0a5f545e2922b4f979c3a40c7ea220ce, type: 3} +--- !u!1 &314235638 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1745382843081832, guid: 0a5f545e2922b4f979c3a40c7ea220ce, + type: 3} + m_PrefabInstance: {fileID: 314235637} + m_PrefabAsset: {fileID: 0} +--- !u!114 &314235639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 314235638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1001 &335522742 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Configure + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &335522743 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 335522742} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &346253885 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1297409472} + m_Modifications: + - target: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, type: 3} + propertyPath: m_Name + value: CanBounce + objectReference: {fileID: 0} + - target: {fileID: 114019987726141092, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Text + value: CanBounce + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b705253d9d4224c17a4157333f3226b6, type: 3} +--- !u!1 &346253887 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + m_PrefabInstance: {fileID: 346253885} + m_PrefabAsset: {fileID: 0} +--- !u!114 &346253889 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 346253887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 5 +--- !u!1 &370003482 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 370003487} + - component: {fileID: 370003486} + - component: {fileID: 370003484} + - component: {fileID: 370003483} + 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 &370003483 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!124 &370003484 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 +--- !u!20 &370003486 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &370003487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 370003482} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &388078517 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Create + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &388078518 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 388078517} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &408435484 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 151789010} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: RunJavaScript + objectReference: {fileID: 0} + - target: {fileID: 114484300395288958, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_ChildControlWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.x + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.y + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.z + value: 0.9999999 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &408435485 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 408435484} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &438888393 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1119118096} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredHeight + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadHtmlString() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &438888394 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 438888393} + m_PrefabAsset: {fileID: 0} +--- !u!114 &438888395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438888394} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 14 +--- !u!1001 &642648168 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Misc + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Misc. + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &642648169 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 642648168} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &674772721 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 408435485} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Enter Html string + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &674772722 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 674772721} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &810574474 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1635195686} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: Row (Horizontal) (1) + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 905.21967 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -100 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &810574475 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 810574474} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &875680822 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1806829101} + m_Modifications: + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_Name + value: Dropdown + objectReference: {fileID: 0} + - target: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114435843442480086, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114435843442480086, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_PreferredWidth + value: 300 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224158029084090604, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f6d2bd773e6664015bcea0a44da91f8d, type: 3} +--- !u!1 &875680823 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1193824002270256, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 875680822} + m_PrefabAsset: {fileID: 0} +--- !u!114 &875680824 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 875680823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 2 +--- !u!114 &875680825 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114339634453116536, guid: f6d2bd773e6664015bcea0a44da91f8d, + type: 3} + m_PrefabInstance: {fileID: 875680822} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 875680823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &928027293 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1757521886} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadURL() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &928027294 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 928027293} + m_PrefabAsset: {fileID: 0} +--- !u!114 &928027295 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 928027294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 13 +--- !u!1001 &989569559 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1822540378} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Hide + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Hide() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &989569560 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 989569559} + m_PrefabAsset: {fileID: 0} +--- !u!114 &989569561 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 989569560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 12 +--- !u!1001 &1011320825 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 223367856} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: SetFullScreenRect + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: SetFullScreen() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1011320826 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1011320825} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1011320827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1011320826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 20 +--- !u!1001 &1119118095 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 151789010} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: LoadHtmlString + objectReference: {fileID: 0} + - target: {fileID: 114484300395288958, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_ChildControlWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1119118096 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1119118095} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1162658646 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1297409472} + m_Modifications: + - target: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, type: 3} + propertyPath: m_Name + value: JavaScriptEnabled + objectReference: {fileID: 0} + - target: {fileID: 114019987726141092, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Text + value: JavaScriptEnabled + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b705253d9d4224c17a4157333f3226b6, type: 3} +--- !u!1 &1162658648 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + m_PrefabInstance: {fileID: 1162658646} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1162658650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1162658648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 6 +--- !u!1 &1199767585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1199767588} + - component: {fileID: 1199767587} + - component: {fileID: 1199767586} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1199767586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1199767587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1199767588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1199767585} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1218960401 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 388078518} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Create + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: WebView.CreateInstance() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1218960402 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1218960401} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1218960403 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1218960402} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 0 +--- !u!1001 &1297409471 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 335522743} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: Row (Horizontal) (1) + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1297409472 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1297409471} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1332339662 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1431019556} + m_Modifications: + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9cb60866b172b415da39c73dad3999e8, type: 3} +--- !u!224 &1332339663 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224871454335544214, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1332339664 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1090748803265720, guid: 9cb60866b172b415da39c73dad3999e8, + type: 3} + m_PrefabInstance: {fileID: 1332339662} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1332339665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332339664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4c22a57a477b7450980d64c30ac7a2d5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_instanceDependentObjects: + - {fileID: 335522743} + - {fileID: 1822540378} + - {fileID: 151789010} + - {fileID: 223367856} + m_styleDropdown: {fileID: 875680825} + m_urlInputField: {fileID: 1788558610} + m_isLocalPathToggle: {fileID: 239172611} + m_htmlStringInputField: {fileID: 270683985} + m_jsInputField: {fileID: 674772722} +--- !u!1001 &1364498620 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 151789010} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadData + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadData() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1364498621 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1364498620} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1364498622 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364498621} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 15 +--- !u!1001 &1375854035 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1384146894} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Title + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Title + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 678.91473 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1375854036 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1375854035} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1375854037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1375854036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 8 +--- !u!1001 &1384146893 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1635195686} + m_Modifications: + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 905.21967 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -60 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1384146894 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1384146893} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1431019552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1431019556} + - component: {fileID: 1431019555} + - component: {fileID: 1431019554} + - component: {fileID: 1431019553} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1431019553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1431019554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 640, y: 960} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1431019555 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1431019556 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431019552} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1332339663} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &1432654285 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2045562922} + m_Modifications: + - target: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, type: 3} + propertyPath: m_Name + value: ScalesPageToFit + objectReference: {fileID: 0} + - target: {fileID: 114019987726141092, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Text + value: ScalesPageToFit + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b705253d9d4224c17a4157333f3226b6, type: 3} +--- !u!1 &1432654287 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + m_PrefabInstance: {fileID: 1432654285} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1432654289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1432654287} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 4 +--- !u!1001 &1492365118 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224164935523170058, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.00003644951 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224230393480343426, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224818425575037616, guid: 36fd405962f494477b184f84fbd9a337, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 36fd405962f494477b184f84fbd9a337, type: 3} +--- !u!1001 &1635195685 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Getters + objectReference: {fileID: 0} + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Readonly Properties + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 905.21967 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 905.21967 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 120 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -300 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1635195686 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1635195685} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1646676257 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 810574475} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Progress + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Progress + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 452.60983 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 226.30492 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -20 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1646676258 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1646676257} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1646676259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1646676258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 9 +--- !u!1001 &1650269480 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1332339663} + m_Modifications: + - target: {fileID: 114983446567434222, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_ChildControlWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114983446567434222, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_ChildForceExpandWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224754109732942086, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2e0ca81b3691d4221b2204056b220040, type: 3} +--- !u!224 &1650269481 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224464102030571442, guid: 2e0ca81b3691d4221b2204056b220040, + type: 3} + m_PrefabInstance: {fileID: 1650269480} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1712166377 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 223367856} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: LoadTexture + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: LoadTexture() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999845 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1712166378 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1712166377} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1712166379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1712166378} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 21 +--- !u!1001 &1757521885 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 151789010} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: LoadURL + objectReference: {fileID: 0} + - target: {fileID: 114484300395288958, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_ChildControlWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1757521886 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1757521885} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1788558609 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1757521886} + m_Modifications: + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: Enter URL + objectReference: {fileID: 0} + - target: {fileID: 114155734850734234, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_FlexibleWidth + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114163320315824386, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Text + value: https://www.google.com + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224540353099770882, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0faea64126a0946a2a229dc5c67a892b, type: 3} +--- !u!114 &1788558610 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 114469949788325500, guid: 0faea64126a0946a2a229dc5c67a892b, + type: 3} + m_PrefabInstance: {fileID: 1788558609} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &1806829100 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 335522743} + m_Modifications: + - target: {fileID: 1729283381912644, guid: c3f90658978844a229ed44d672b70a93, type: 3} + propertyPath: m_Name + value: Controls + objectReference: {fileID: 0} + - target: {fileID: 114484300395288958, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Spacing + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &1806829101 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 1806829100} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1822540377 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1650269481} + m_Modifications: + - target: {fileID: 1370956973664342, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} + propertyPath: m_Name + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 114553031757334108, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Text + value: Presentation + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224150235456743208, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.x + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.y + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalScale.z + value: 0.99999857 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d7ff5e20ef7484e159eb8894a8465de0, type: 3} +--- !u!224 &1822540378 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224804570984248434, guid: d7ff5e20ef7484e159eb8894a8465de0, + type: 3} + m_PrefabInstance: {fileID: 1822540377} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1923023847 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 151789010} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: StopLoading + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: StopLoading() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1923023848 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1923023847} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1923023849 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1923023848} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 17 +--- !u!1001 &1927756301 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 408435485} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Button + objectReference: {fileID: 0} + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_MinWidth + value: 256 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_FlexibleWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114464621491982878, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_PreferredWidth + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: RunJavaScript() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &1927756302 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 1927756301} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1927756303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1927756302} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 18 +--- !u!1001 &1929346189 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4074120279433260, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_isPersistent + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114540387559500602, guid: 353a001434f7343b4bd6ea715e28562f, + type: 3} + propertyPath: m_images.Array.data[0] + value: + objectReference: {fileID: 2800000, guid: 2901797ce0fc540fb806cf83aec0b2e9, type: 3} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 353a001434f7343b4bd6ea715e28562f, type: 3} +--- !u!1001 &1989258820 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 2045562922} + m_Modifications: + - target: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, type: 3} + propertyPath: m_Name + value: AutoShowOnLoadFinish + objectReference: {fileID: 0} + - target: {fileID: 114019987726141092, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Text + value: AutoShowOnLoadFinish + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224246396564361528, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b705253d9d4224c17a4157333f3226b6, type: 3} +--- !u!1 &1989258822 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1791280990977722, guid: b705253d9d4224c17a4157333f3226b6, + type: 3} + m_PrefabInstance: {fileID: 1989258820} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1989258824 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989258822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 3 +--- !u!1001 &2045562921 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 335522743} + m_Modifications: + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c3f90658978844a229ed44d672b70a93, type: 3} +--- !u!224 &2045562922 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224913561361295354, guid: c3f90658978844a229ed44d672b70a93, + type: 3} + m_PrefabInstance: {fileID: 2045562921} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2102780465 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 151789010} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: Reload + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: Reload() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2102780466 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2102780465} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2102780467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2102780466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 16 +--- !u!1001 &2108301567 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 151789010} + m_Modifications: + - target: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, type: 3} + propertyPath: m_Name + value: ClearCache + objectReference: {fileID: 0} + - target: {fileID: 114822244254790652, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Text + value: ClearCache() + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224952746328586062, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0ae52c31935f040969ff0c680344702b, type: 3} +--- !u!1 &2108301568 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1430593560333864, guid: 0ae52c31935f040969ff0c680344702b, + type: 3} + m_PrefabInstance: {fileID: 2108301567} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2108301569 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2108301568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8d044725eceb549bfb46d36372f9c3b3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_actionType: 19 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/WebViewDemo.unity.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/WebViewDemo.unity.meta new file mode 100644 index 00000000..5e2fb28b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/WebViewDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d44fabeb85e3b420b898c585b5b5d502 +timeCreated: 1547647223 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts.meta new file mode 100644 index 00000000..42338747 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 55177c772f05d49c8bca6f5f5ecf8f9e +folderAsset: yes +timeCreated: 1547647250 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemo.cs new file mode 100644 index 00000000..01a7ba23 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemo.cs @@ -0,0 +1,143 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +// internal namespace +namespace VoxelBusters.EssentialKit.Demo +{ + public class AddressBookDemo : DemoActionPanelBase + { + #region Fields + + [Header("Read Contacts Options")] + [SerializeField] + private Dropdown m_limit; + + [SerializeField] + private Toggle m_mustIncludeNameOption; + + [SerializeField] + private Toggle m_mustIncludeEmailOption; + + [SerializeField] + private Toggle m_mustIncludePhoneNumberOption; + + [Space] + [Space] + [SerializeField] + private Button m_resetOffset; + + private int m_currentOffset = 0; + + #endregion + + + #region Base class methods + + protected override void Start() + { + m_resetOffset.onClick.AddListener(ResetOffset); + } + + protected override void OnActionSelectInternal(AddressBookDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case AddressBookDemoActionType.GetContactsAccessStatus: + var status = AddressBook.GetContactsAccessStatus(); + Log("Address book permission status: " + status); + break; + + case AddressBookDemoActionType.ReadContacts: + + ReadContactsOptions options = new ReadContactsOptions.Builder() + .WithLimit(GetLimit()) + .WithOffset(m_currentOffset) + .WithConstraints(GetReadContactsConstraints()) + .Build(); + Log($"Reading {options.Limit} contacts from {options.Offset} offset."); + AddressBook.ReadContacts(options, OnReadContactsFinish); + break; + + case AddressBookDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kAddressBook); + break; + + default: + break; + } + } + + private int GetLimit() + { + string limitStr = m_limit.options[m_limit.value].text; + + int limit; + if(!int.TryParse(limitStr, out limit)) + { + limit = 10; + } + + return limit; + } + + private ReadContactsConstraint GetReadContactsConstraints() + { + ReadContactsConstraint constraints = ReadContactsConstraint.None; + + if (m_mustIncludeNameOption.isOn) + { + constraints |= ReadContactsConstraint.MustIncludeName; + } + + if (m_mustIncludeEmailOption.isOn) + { + constraints |= ReadContactsConstraint.MustIncludeEmail; + } + + if (m_mustIncludePhoneNumberOption.isOn) + { + constraints |= ReadContactsConstraint.MustIncludePhoneNumber; + } + + return constraints; + } + + #endregion + + #region Plugin callback methods + + private void OnReadContactsFinish(AddressBookReadContactsResult result, Error error) + { + if (error == null) + { + var contacts = result.Contacts; + m_currentOffset = result.NextOffset; + Log("Request to read contacts finished successfully."); + Log($"Total contacts fetched: {contacts.Length}. Next offset: {result.NextOffset}"); + + for (int iter = 0; iter < contacts.Length; iter++) + { + Log(string.Format("[{0}]: {1}", iter, contacts[iter])); + } + } + else + { + Log("Request to read contacts failed with error. Error: " + error); + } + } + + #endregion + + #region Helpers + + private void ResetOffset() + { + m_currentOffset = 0; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemo.cs.meta new file mode 100644 index 00000000..5d5fcf93 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d023d341a68db4f20b0a2f2ac53cfa62 +timeCreated: 1547647261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemoAction.cs new file mode 100644 index 00000000..d8a3363f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemoAction.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum AddressBookDemoActionType + { + GetContactsAccessStatus, + ReadContacts, + ResourcePage, + } + + public class AddressBookDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemoAction.cs.meta new file mode 100644 index 00000000..ee0fdaa8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AddressBookDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0b60377b3e0114aef93449c43b723084 +timeCreated: 1549356602 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemo.cs new file mode 100644 index 00000000..3131e03e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemo.cs @@ -0,0 +1,134 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class AlertDialogDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private InputField m_titleInputField = null; + + [SerializeField] + private InputField m_messageInputField = null; + + [SerializeField] + private InputField m_buttonLabelInputField = null; + + [SerializeField] + private InputField m_cancelButtonLabelInputField = null; + + [SerializeField] + private RectTransform m_configureSection = null; + + [SerializeField] + private RectTransform m_presentationSection = null; + + private AlertDialog m_activeDialog; + + #endregion + + #region Base methods + + protected override void Start() + { + base.Start(); + + // set default text values + SetConfigureState(false); + } + + protected override string GetCreateInstanceCodeSnippet() + { + return "AlertDialog.CreateInstance()"; + } + + protected override void OnActionSelectInternal(AlertDialogDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case AlertDialogDemoActionType.New: + Log("Creating new alert dialog."); + m_activeDialog = AlertDialog.CreateInstance(); + SetConfigureState(true); + break; + + case AlertDialogDemoActionType.SetTitle: + Log("Setting alert title."); + m_activeDialog.Title = m_titleInputField.text; + break; + + case AlertDialogDemoActionType.GetTitle: + Log("Alert title: " + m_activeDialog.Title); + break; + + case AlertDialogDemoActionType.SetMessage: + Log("Setting alert message."); + m_activeDialog.Message = m_messageInputField.text; + break; + + case AlertDialogDemoActionType.GetMessage: + Log("Alert message: " + m_activeDialog.Message); + break; + + case AlertDialogDemoActionType.AddButton: + string buttonLabel0 = m_buttonLabelInputField.text; + Log("Adding button with label: " + buttonLabel0); + m_activeDialog.AddButton(buttonLabel0, () => + { + Log(string.Format("Button with label: {0} is selected", buttonLabel0)); + + // reset + m_activeDialog = null; + SetConfigureState(false); + }); + break; + + case AlertDialogDemoActionType.AddCancelButton: + string buttonLabel1 = m_cancelButtonLabelInputField.text; + Log("Adding button with label: " + buttonLabel1); + m_activeDialog.AddCancelButton(buttonLabel1, () => + { + Log(string.Format("Button with label: {0} is selected", buttonLabel1)); + + // reset + m_activeDialog = null; + SetConfigureState(false); + }); + break; + + case AlertDialogDemoActionType.Show: + Log("Showing alert dialog."); + m_activeDialog.Show(); + break; + + case AlertDialogDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kNativeUI); + break; + + default: + break; + } + } + + #endregion + + #region Private methods + + public void SetConfigureState(bool value) + { + m_configureSection.gameObject.SetActive(value); + m_presentationSection.gameObject.SetActive(value); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemo.cs.meta new file mode 100644 index 00000000..37e293ce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 46db39bae016445dc915b76fe4000ea8 +timeCreated: 1549358384 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemoAction.cs new file mode 100644 index 00000000..9c4ba0a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemoAction.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum AlertDialogDemoActionType + { + New, + SetTitle, + GetTitle, + SetMessage, + GetMessage, + AddButton, + AddCancelButton, + Show, + ResourcePage, + } + + public class AlertDialogDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemoAction.cs.meta new file mode 100644 index 00000000..cb3e5fa1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AlertDialogDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2e61b36b97be2442f977c7ecf3bb9cfb +timeCreated: 1549358384 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemo.cs new file mode 100644 index 00000000..e299fd1c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemo.cs @@ -0,0 +1,70 @@ +// internal namespace + +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class AppUpdaterDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private Toggle m_isForceUpdateToggle = null; + + [SerializeField] private Toggle m_allowInstallationIfDownloaded = null; + #endregion + + #region Base methods + + protected override void OnActionSelectInternal(AppUpdaterDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case AppUpdaterDemoActionType.RequestUpdateInfo: + Log("Requesting update info."); + AppUpdater.RequestUpdateInfo((result, error) => { + if(error == null) + { + Log("Received updated info: " + result); + } + else + { + Log("Failed to receive updated info: " + error); + } + }); + break; + + case AppUpdaterDemoActionType.PromptUpdate: + Log("Prompting an update."); + PromptUpdateOptions options = new PromptUpdateOptions.Builder() + .SetIsForceUpdate(m_isForceUpdateToggle.isOn) + .SetPromptTitle("Update Available") + .SetPromptMessage("There is an update available. Do you want to update?") + .SetAllowInstallationIfDownloaded(m_allowInstallationIfDownloaded.isOn) //Or you can just check the AppUpdaterUpdateStatus.Downloaded then set this to true for installation. + .Build(); + + AppUpdater.PromptUpdate(options, (progress, error) => { + if(error == null) + { + Log("Update download progress : " + progress); + } + else + { + Log("Failed to update: " + error); + } + }); + break; + case AppUpdaterDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kAppUpdater); + break; + + default: + break; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemo.cs.meta new file mode 100644 index 00000000..0a4433e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 158a4b562bae940c5811e04b2f33313a +timeCreated: 1549651840 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemoAction.cs new file mode 100644 index 00000000..01609b32 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemoAction.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum AppUpdaterDemoActionType + { + RequestUpdateInfo, + PromptUpdate, + ResourcePage + } + + public class AppUpdaterDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemoAction.cs.meta new file mode 100644 index 00000000..ff018d27 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/AppUpdaterDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b307e2b3e306f4e2baa16bacd150321c +timeCreated: 1549651840 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemo.cs new file mode 100644 index 00000000..b65e2a58 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemo.cs @@ -0,0 +1,274 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class BillingServicesDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform m_yourProductsNode = null; + + [SerializeField] + private RectTransform[] m_productsDependentObjects = null; + + [SerializeField] + private Toggle m_productPrefab = null; + + [SerializeField] + private Toggle m_forceRefreshRestorePurchases = null; + + private int m_productIndex = 0; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + + // set default state + SetIsReady(false); + CreateProductOutlets(null); + } + + protected override void OnEnable() + { + base.OnEnable(); + + // register for events + BillingServices.OnInitializeStoreComplete += OnInitializeStoreComplete; + BillingServices.OnTransactionStateChange += OnTransactionStateChange; + BillingServices.OnRestorePurchasesComplete += OnRestorePurchasesComplete; + } + + protected override void OnDisable() + { + base.OnDisable(); + + // unregister from events + BillingServices.OnInitializeStoreComplete -= OnInitializeStoreComplete; + BillingServices.OnTransactionStateChange -= OnTransactionStateChange; + BillingServices.OnRestorePurchasesComplete -= OnRestorePurchasesComplete; + } + + protected override void OnActionSelectInternal(BillingServicesDemoAction selectedAction) + { + var product = GetCurrentProduct(); + + switch (selectedAction.ActionType) + { + case BillingServicesDemoActionType.InitializeStore: + BillingServices.InitializeStore(); + break; + + case BillingServicesDemoActionType.CanMakePayments: + bool canPurchase = BillingServices.CanMakePayments(); + Log("Can make payment: " + canPurchase); + break; + + case BillingServicesDemoActionType.IsProductPurchased: + if (product == null) + { + LogSelectProduct(); + } + else + { + bool isPurchased = BillingServices.IsProductPurchased(product); + Log("Is purchased: " + isPurchased); + } + break; + + case BillingServicesDemoActionType.BuyProduct: + if (product == null) + { + LogSelectProduct(); + } + else + { + + Log($"Initiated purchase"); + BillingServices.BuyProduct(product, options: null); + + /* // Options can be used to create multiple quantities or set a tag or redeem an offer. If you have quantity as 1, just pass BuyProductOptions as null. + BuyProductOptions options = new BuyProductOptions.Builder() + .SetQuantity(1) + .SetTag(Guid.NewGuid().ToString()).Build(); //Tag is optional and used by native platforms to fightback fraud and should be unique per user. Usually this will be user id or any custom information. + + Log($"Initiated purchase with BuyProductOptions: {options}"); + BillingServices.BuyProduct(product, options); + */ + } + break; + + case BillingServicesDemoActionType.GetTransactions: + var incompleteTransactions = BillingServices.GetTransactions(); + Log("Total incomplete transactions: " + incompleteTransactions.Length); + break; + + case BillingServicesDemoActionType.FinishTransactions: + var finishableTransactions = BillingServices.GetTransactions(); + if (finishableTransactions.Length > 0) + { + Log("Initiated finish transaction process."); + BillingServices.FinishTransactions(finishableTransactions); + } + break; + + case BillingServicesDemoActionType.RestorePurchases: + bool forceRefresh = m_forceRefreshRestorePurchases.isOn; //Only set forceRefresh to on if user wants to manually restore purchases via UI button. This may trigger a login prompt if set to true. + BillingServices.RestorePurchases(forceRefresh); + break; + + case BillingServicesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kBillingServices); + break; + + default: + break; + } + } + + #endregion + + #region Plugin event methods + + private void OnInitializeStoreComplete(BillingServicesInitializeStoreResult result, Error error) + { + if (error == null) + { + // update UI + SetIsReady(true); + CreateProductOutlets(result.Products); + + // show console messages + var products = result.Products; + Log("Store initialized successfully."); + Log("Total products fetched: " + products.Length); + Log("Below are the available products:"); + for (int iter = 0; iter < products.Length; iter++) + { + var product = products[iter]; + Log(string.Format("[{0}]: {1}", iter, product)); + } + } + else + { + Log("Store initialization failed with error. Error: " + error); + } + + var invalidIds = result.InvalidProductIds; + Log("Total invalid products: " + invalidIds.Length); + if (invalidIds.Length > 0) + { + Log("Here are the invalid product ids:"); + for (int iter = 0; iter < invalidIds.Length; iter++) + { + Log(string.Format("[{0}]: {1}", iter, invalidIds[iter])); + } + } + } + + private void OnTransactionStateChange(BillingServicesTransactionStateChangeResult result) + { + Log($"Received OnTransactionStateChange event."); + var transactions = result.Transactions; + for (int iter = 0; iter < transactions.Length; iter++) + { + var transaction = transactions[iter]; + switch (transaction.TransactionState) + { + case BillingTransactionState.Purchased: + //Note: transaction.ReceiptVerificationState also needs to be considered for avoiding fraud transactions + Log(string.Format("Buy product with id:{0} finished successfully with verification state {1}.", transaction.Product.Id, transaction.ReceiptVerificationState)); + break; + + case BillingTransactionState.Failed: + Log(string.Format("Buy product with id:{0} failed with error. Error: {1}", transaction.Product.Id, transaction.Error)); + break; + } + Log($"Transaction: {transaction}"); + } + } + + private void OnRestorePurchasesComplete(BillingServicesRestorePurchasesResult result, Error error) + { + Log($"Received OnRestorePurchasesComplete event."); + if (error == null) + { + var transactions = result.Transactions; + Log("Request to restore purchases finished successfully."); + Log("Total restored products: " + transactions.Length); + for (int iter = 0; iter < transactions.Length; iter++) + { + var transaction = transactions[iter]; + Log(string.Format("[{0}]: {1}", iter, transaction.Product.Id)); + Log("Transaction: " + transaction); + } + } + else + { + Log("Request to restore purchases failed with error. Error: " + error); + } + } + + #endregion + + #region Private methods + + private int GetCurrentProductIndex() + { + return m_productIndex; + } + + private void SetCurrentProductIndex(int index) + { + var products = BillingServices.Products; + m_productIndex = Mathf.Clamp(index, 0, products.Length); + } + + private IBillingProduct GetCurrentProduct() + { + var products = BillingServices.Products; + if (products.Length > 0) + { + int index = GetCurrentProductIndex(); + return products[index]; + } + + return null; + } + + #endregion + + #region Misc methods + + private void SetIsReady(bool active) + { + foreach (RectTransform rect in m_productsDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + private void CreateProductOutlets(IBillingProduct[] products) + { + var items = (products == null) ? null : Array.ConvertAll(products, (item) => item.Id); + DemoHelper.CreateItems(m_yourProductsNode, m_productPrefab, items, SetCurrentProductIndex); + } + + private void LogSelectProduct() + { + Log("Product not selected."); + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemo.cs.meta new file mode 100644 index 00000000..ef21e29d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 92fc85c19085c497698f470b5cbaacd7 +timeCreated: 1547647261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemoAction.cs new file mode 100644 index 00000000..c30fb8cf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemoAction.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum BillingServicesDemoActionType + { + InitializeStore, + CanMakePayments, + IsProductPurchased, + BuyProduct, + GetTransactions, + FinishTransactions, + RestorePurchases, + ResourcePage, + } + + public class BillingServicesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemoAction.cs.meta new file mode 100644 index 00000000..59c5b77f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/BillingServicesDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b98e12146feb148108051efc425400ee +timeCreated: 1549356602 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CalendarTriggerFields.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CalendarTriggerFields.cs new file mode 100644 index 00000000..4b019f81 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CalendarTriggerFields.cs @@ -0,0 +1,73 @@ +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +// internal namespace + +namespace VoxelBusters.EssentialKit.Demo +{ + public class CalendarTriggerFields : MonoBehaviour + { + [SerializeField] + private InputField m_day; + + [SerializeField] + private InputField m_month; + + [SerializeField] + private InputField m_year; + + [SerializeField] + private InputField m_hour; + + [SerializeField] + private InputField m_minute; + + [SerializeField] + private InputField m_second; + + [SerializeField] + private InputField m_dayOfWeek; + + [SerializeField] + private InputField m_weekOfMonth; + + [SerializeField] + private InputField m_weekOfYear; + + public DateComponents GetDateComponents() + { + DateComponents dateComponents = new DateComponents(); + + if(!string.IsNullOrEmpty(m_day.text)) + dateComponents.Day = int.Parse(m_day.text); + + if(!string.IsNullOrEmpty(m_month.text)) + dateComponents.Month = int.Parse(m_month.text); + + if(!string.IsNullOrEmpty(m_year.text)) + dateComponents.Year = int.Parse(m_year.text); + + if(!string.IsNullOrEmpty(m_hour.text)) + dateComponents.Hour = int.Parse(m_hour.text); + + if(!string.IsNullOrEmpty(m_minute.text)) + dateComponents.Minute = int.Parse(m_minute.text); + + if(!string.IsNullOrEmpty(m_second.text)) + dateComponents.Second = int.Parse(m_second.text); + + if(!string.IsNullOrEmpty(m_dayOfWeek.text)) + dateComponents.DayOfWeek = int.Parse(m_dayOfWeek.text); + + if(!string.IsNullOrEmpty(m_weekOfMonth.text)) + dateComponents.WeekOfMonth = int.Parse(m_weekOfMonth.text); + + if(!string.IsNullOrEmpty(m_weekOfYear.text)) + dateComponents.WeekOfYear = int.Parse(m_weekOfYear.text); + + return dateComponents; + } + + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CalendarTriggerFields.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CalendarTriggerFields.cs.meta new file mode 100644 index 00000000..f92c0903 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CalendarTriggerFields.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0844d39e737c144c1bba9a45523887e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemo.cs new file mode 100644 index 00000000..4234c8e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemo.cs @@ -0,0 +1,255 @@ +using System; +using System.Collections; +using System.Globalization; +using UnityEngine; +using UnityEngine.UI; +using System.Text; +// key namespaces +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class CloudServicesDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private InputField m_keyField = null; + + [SerializeField] + private InputField m_valueField = null; + + #endregion + + #region Base class methods + + protected override void OnEnable() + { + base.OnEnable(); + + // register for events + CloudServices.OnUserChange += OnUserChange; + CloudServices.OnSavedDataChange += OnSavedDataChange; + CloudServices.OnSynchronizeComplete += OnSynchronizeComplete; + } + + protected override void OnDisable() + { + base.OnDisable(); + + // unregister from events + CloudServices.OnUserChange -= OnUserChange; + CloudServices.OnSavedDataChange -= OnSavedDataChange; + CloudServices.OnSynchronizeComplete -= OnSynchronizeComplete; + } + + protected override void OnActionSelectInternal(CloudServicesDemoAction selectedAction) + { + string key = GetKey(); + + switch (selectedAction.ActionType) + { + case CloudServicesDemoActionType.GetBool: + bool result1 = CloudServices.GetBool(key); + Log("Saved bool value: " + result1); + break; + + case CloudServicesDemoActionType.SetBool: + CloudServices.SetBool(key, GetInputValueAsBool()); + Log("Bool value added."); + break; + + case CloudServicesDemoActionType.GetLong: + long result2 = CloudServices.GetLong(key); + Log("Saved long value: " + result2); + break; + + case CloudServicesDemoActionType.SetLong: + CloudServices.SetLong(key, GetInputValueAsLong()); + Log("Long value added."); + break; + + case CloudServicesDemoActionType.GetDouble: + double result3 = CloudServices.GetDouble(key); + Log("Saved double value: " + result3); + break; + + case CloudServicesDemoActionType.SetDouble: + CloudServices.SetDouble(key, GetInputValueAsDouble()); + Log("Double value added."); + break; + + case CloudServicesDemoActionType.GetString: + string result4 = CloudServices.GetString(key); + if (result4 == null) + { + Log("Null value"); + + string test = null; + Log("Test : " + test); + } + + Log("Saved string value: " + result4); + break; + + case CloudServicesDemoActionType.SetString: + CloudServices.SetString(key, GetInputValueAsString()); + Log("String value added."); + break; + + case CloudServicesDemoActionType.GetByteArray: + byte[] result5 = CloudServices.GetByteArray(key); + Log("Fetched byte array value (string representation) = " + ((result5 != null) ? Encoding.UTF8.GetString(result5) : "null"));// String representation: Encoding.UTF8.GetString(result5) + break; + + case CloudServicesDemoActionType.SetByteArray: + CloudServices.SetByteArray(key, GetInputValueAsByteArray()); + Log("Byte Array value added."); + break; + + case CloudServicesDemoActionType.Synchronize: + CloudServices.Synchronize(); + break; + + case CloudServicesDemoActionType.HasKey: + bool hasKey = CloudServices.HasKey(key); + Log($"Has {key} key: {hasKey}"); + break; + + case CloudServicesDemoActionType.RemoveKey: + CloudServices.RemoveKey(key); + Log("Removed key: " + key); + break; + + case CloudServicesDemoActionType.GetSnapshot: + Log("Received snapshot data"); + + IDictionary snapshot = CloudServices.GetSnapshot(); + foreach (var eachKey in snapshot.Keys) + { + string keyString = eachKey.ToString(); + string valueString = snapshot[keyString]?.ToString(); + + Log($"[{keyString} : {valueString}]"); + } + break; + + case CloudServicesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kCloudServices); + break; + + default: + break; + } + } + + #endregion + + #region Plugin event methods + + private void OnUserChange(CloudServicesUserChangeResult result, Error error) + { + var user = result.User; + Log("Received user change callback."); + Log("User id: " + user.UserId); + Log("User status: " + user.AccountStatus); + } + + private void OnSavedDataChange(CloudServicesSavedDataChangeResult result) + { + var changedKeys = result.ChangedKeys; + Log("Received saved data change callback."); + Log("Reason: " + result.ChangeReason); + Log("Total changed keys: " + changedKeys.Length); + Log("Here are the changed keys:"); + for (int iter = 0; iter < changedKeys.Length; iter++) + { + //Fetching local and cloud values for value type which is string in this example. + string cloudValue; + string localCacheValue; + CloudServicesUtility.TryGetCloudAndLocalCacheValues(changedKeys[iter], out cloudValue, out localCacheValue, "default"); + + Log(string.Format("[{0}]: {1} [Cloud Value] : {2} [Local Cache Value] : {3} ", iter, changedKeys[iter], cloudValue, localCacheValue)); + } + } + + private void OnSynchronizeComplete(CloudServicesSynchronizeResult result) + { + string snapshotJson = ExternalServiceProvider.JsonServiceProvider.ToJson(CloudServices.GetSnapshot()); + Log($"Received synchronize finish callback."); + Log("Status: " + result.Success); + Log("Snapshot data: " + snapshotJson); + } + + #endregion + + #region Private methods + + private string GetKey() + { + string key = m_keyField.text; + return string.IsNullOrEmpty(key) ? null : m_keyField.text; + } + + private bool GetInputValueAsBool() + { + try + { + return Convert.ToBoolean(m_valueField.text, CultureInfo.InvariantCulture.NumberFormat); + } + catch (Exception e) + { + Log(e.Message); + Log("Adding default value: false"); + } + + return false; + } + + private long GetInputValueAsLong() + { + try + { + return Convert.ToInt64(m_valueField.text, CultureInfo.InvariantCulture.NumberFormat); + } + catch (Exception e) + { + Log(e.Message); + Log("Adding default value: 0"); + } + + return 0; + } + + private double GetInputValueAsDouble() + { + try + { + return Convert.ToDouble(m_valueField.text, CultureInfo.InvariantCulture.NumberFormat); + } + catch (Exception e) + { + Log(e.Message); + Log("Adding default value: 0.0"); + } + + return 0.0; + } + + private string GetInputValueAsString() + { + return m_valueField.text; + } + + private byte[] GetInputValueAsByteArray() + { + return Encoding.UTF8.GetBytes(m_valueField.text); + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemo.cs.meta new file mode 100644 index 00000000..861ef29d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 862c943271de14b2ea3161241abbca45 +timeCreated: 1547647261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemoAction.cs new file mode 100644 index 00000000..d5cadd6e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemoAction.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum CloudServicesDemoActionType + { + GetBool, + SetBool, + GetLong, + SetLong, + GetDouble, + SetDouble, + GetString, + SetString, + GetByteArray, + SetByteArray, + Synchronize, + HasKey, + RemoveKey, + GetSnapshot, + ResourcePage, + } + + public class CloudServicesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemoAction.cs.meta new file mode 100644 index 00000000..52a18383 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/CloudServicesDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80808c89d4b2c43f7b4bcae4046ac3c0 +timeCreated: 1549356602 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemo.cs new file mode 100644 index 00000000..dc26a03b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemo.cs @@ -0,0 +1,90 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; +using System; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class DatePickerDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform m_presentationSection = null; + + private DatePicker m_activeDatePicker; + + [SerializeField] + private Dropdown m_mode = null; + + #endregion + + #region Base methods + + protected override void Start() + { + base.Start(); + + // set default text values + m_mode.options = new List(Array.ConvertAll(Enum.GetNames(typeof(DatePickerMode)), (item) => new Dropdown.OptionData(item))); + + SetPresentationState(false); + } + + protected override string GetCreateInstanceCodeSnippet() + { + return "DatePicker.CreateInstance()"; + } + + protected override void OnActionSelectInternal(DatePickerDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case DatePickerDemoActionType.New: + Log("Creating new date picker : " + GetMode()); + m_activeDatePicker = DatePicker.CreateInstance(GetMode()); + m_activeDatePicker.OnCloseCallback = (result) => + { + Log("Selected date : " + result.SelectedDate); + }; + SetPresentationState(true); + break; + + case DatePickerDemoActionType.Show: + Log("Showing date picker."); + m_activeDatePicker.Show(); + SetPresentationState(false); + break; + + case DatePickerDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kNativeUI); + break; + + default: + break; + } + } + + #endregion + + #region Private methods + + private void SetPresentationState(bool value) + { + m_presentationSection.gameObject.SetActive(value); + } + + private DatePickerMode GetMode() + { + return (DatePickerMode)Enum.GetValues(typeof(DatePickerMode)).GetValue(m_mode.value); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemo.cs.meta new file mode 100644 index 00000000..52513326 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 45523654d2ffb45bf8bb51b85a1b1649 +timeCreated: 1549358384 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemoAction.cs new file mode 100644 index 00000000..ec0719e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemoAction.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum DatePickerDemoActionType + { + New, + Show, + ResourcePage, + } + + public class DatePickerDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemoAction.cs.meta new file mode 100644 index 00000000..172982ad --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DatePickerDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3d0946b0907ee4c6ba7626f03eef3e38 +timeCreated: 1549358384 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemo.cs new file mode 100644 index 00000000..7ff6379a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemo.cs @@ -0,0 +1,67 @@ +// internal namespace + +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class DeepLinkServicesDemo : DemoActionPanelBase + { + #region Base methods + + protected override void OnEnable() + { + base.OnEnable(); + DeepLinkServices.OnUniversalLinkOpen += OnUniversalLinkOpen; + DeepLinkServices.OnCustomSchemeUrlOpen += OnCustomSchemeUrlOpen; + } + + + + protected override void OnDisable() + { + base.OnDisable(); + DeepLinkServices.OnUniversalLinkOpen -= OnUniversalLinkOpen; + DeepLinkServices.OnCustomSchemeUrlOpen -= OnCustomSchemeUrlOpen; + } + + protected override void OnActionSelectInternal(DeepLinkServicesDemoAction selectedAction) + { + /* + * + +

Deep Link Services Test

+
+ Open Deep Link +
+

Here, essentialkit was set as scheme and demo was set as the host in Essential Kit Settings under Deep Link Services.

+ + + */ + + switch (selectedAction.ActionType) + { + + case DeepLinkServicesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kDeepLinkServices); + break; + + default: + break; + } + } + + #endregion + + private void OnUniversalLinkOpen(DeepLinkServicesDynamicLinkOpenResult result) + { + Log($"[OnUniversalLinkOpen] Url: {result.Url} RawUrlString: {result.RawUrlString}" ); + } + + private void OnCustomSchemeUrlOpen(DeepLinkServicesDynamicLinkOpenResult result) + { + Log($"[OnCustomSchemeUrlOpen] Url: {result.Url} RawUrlString: {result.RawUrlString}" ); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemo.cs.meta new file mode 100644 index 00000000..035b4aa2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 95de158cbc3e14c609614eadf55c09a5 +timeCreated: 1549651840 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemoAction.cs new file mode 100644 index 00000000..066a4cfd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemoAction.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum DeepLinkServicesDemoActionType + { + ResourcePage + } + + public class DeepLinkServicesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemoAction.cs.meta new file mode 100644 index 00000000..0468be11 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/DeepLinkServicesDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 914144c298b5e482dac63d5f17b709ae +timeCreated: 1549651840 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemo.cs new file mode 100644 index 00000000..742de822 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemo.cs @@ -0,0 +1,597 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; +using System.Collections; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class GameServicesDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform[] m_authDependentObjects = null; + + [SerializeField] + private RectTransform m_leaderboardsNode = null; + + [SerializeField] + private RectTransform[] m_leaderboardDependentObjects = null; + + [SerializeField] + private InputField m_leaderboardScoreInput = null; + + [SerializeField] + private RectTransform m_yourAchivementsNode = null; + + [SerializeField] + private RectTransform[] m_achievementDescriptionDependentObjects = null; + + [SerializeField] + private InputField m_achievementProgressInput = null; + + [SerializeField] + private Toggle m_selectableItemPrefab = null; + + [SerializeField] + private RawImage m_texturePreview = null; + + private int m_leaderboardIndex = 0; + + private int m_achievementIndex = 0; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + + // set default state + SetAuthDependentObjectState(GameServices.IsAuthenticated); + SetLeaderboardDependentObjectState(false); + SetAchievementDependentObjectState(false); + } + + protected override void OnEnable() + { + base.OnEnable(); + + // register for events + GameServices.OnAuthStatusChange += OnAuthStatusChange; + } + + protected override void OnDisable() + { + base.OnDisable(); + + // unregister from events + GameServices.OnAuthStatusChange -= OnAuthStatusChange; + } + + protected override void OnActionSelectInternal(GameServicesDemoAction selectedAction) + { + var currentSelectedLeaderboard = GetCurrentLeaderboard(); + + switch (selectedAction.ActionType) + { + case GameServicesDemoActionType.IsAuthenticated: + bool isAuthenticated = GameServices.IsAuthenticated; + Log("Is authenticated: " + isAuthenticated); + SetAuthDependentObjectState(isAuthenticated); + break; + + case GameServicesDemoActionType.Authenticate: + GameServices.Authenticate(); + break; + + case GameServicesDemoActionType.LocalPlayer: + Log("Local player: " + GameServices.LocalPlayer); + break; + + case GameServicesDemoActionType.Signout: + if(GameServices.LocalPlayer.IsAuthenticated) + Log("Trying to Signout player: " + GameServices.LocalPlayer); + + GameServices.Signout(); + break; + + case GameServicesDemoActionType.LoadLeaderboards: + GameServices.LoadLeaderboards((result, error) => + { + if (error == null) + { + // update UI + SetLeaderboardDependentObjectState(true); + CreateLeaderboardOutlets(result.Leaderboards); + + // show console messages + var leaderboards = result.Leaderboards; + Log("Request to load leaderboards finished successfully."); + Log("Total leaderboards fetched: " + leaderboards.Length); + Log("Below are the available leaderboards:"); + for (int iter = 0; iter < leaderboards.Length; iter++) + { + var eachLeaderboard = leaderboards[iter]; + Log(string.Format("[{0}]: {1}", iter, eachLeaderboard)); + Log("------------------------------------------------"); + } + } + else + { + Log("Request to load leaderboards failed with error. Error: " + error); + } + }); + + break; + case GameServicesDemoActionType.LoadTopScores: + if (currentSelectedLeaderboard == null) + { + LogLeaderboardNotSelected(); + } + else + { + LoadTopScores(currentSelectedLeaderboard.Id); + } + break; + + case GameServicesDemoActionType.LoadPlayerCenteredScores: + if (currentSelectedLeaderboard == null) + { + LogLeaderboardNotSelected(); + } + else + { + LoadPlayerCenteredScores(currentSelectedLeaderboard.Id); + } + break; + case GameServicesDemoActionType.ReportScore: + if (currentSelectedLeaderboard == null) + { + LogLeaderboardNotSelected(); + } + else + { + long score = GetLeaderboardScoreInput(); + GameServices.ReportScore(currentSelectedLeaderboard, score, (success, error) => + { + if (success) + { + Log("Request to submit score finished successfully."); + } + else + { + Log("Request to submit score failed with error: " + error.Description); + } + }, tag: "ak47gun"); + } + break; + + case GameServicesDemoActionType.LoadAchievementDescriptions: + GameServices.LoadAchievementDescriptions((result, error) => + { + if (error == null) + { + // update UI + SetAchievementDependentObjectState(true); + CreateAchievementOutlets(result.AchievementDescriptions); + + // show console messages + var descriptions = result.AchievementDescriptions; + Log("Request to load achievement descriptions finished successfully."); + Log("Total achievement descriptions fetched: " + descriptions.Length); + Log("Below are the available achievement descriptions:"); + for (int iter = 0; iter < descriptions.Length; iter++) + { + var description1 = descriptions[iter]; + Log(string.Format("[{0}]: {1}", iter, description1)); + } + } + else + { + Log("Request to load achievement descriptions failed with error. Error: " + error); + } + }); + break; + + case GameServicesDemoActionType.LoadAchievements: + GameServices.LoadAchievements((result, error) => + { + if (error == null) + { + // show console messages + var achievements = result.Achievements; + Log("Request to load achievements finished successfully."); + Log("Total achievements fetched: " + achievements.Length); + Log("Below are the available achievements:"); + for (int iter = 0; iter < achievements.Length; iter++) + { + var achievement1 = achievements[iter]; + Log(string.Format("[{0}]: {1}", iter, achievement1)); + } + } + else + { + Log("Request to load achievements failed with error. Error: " + error); + } + }); + break; + + case GameServicesDemoActionType.ReportAchievementProgress: + var description2 = GetCurrentAchievementDescription(); + if (description2 == null) + { + LogAchievementNotSelected(); + } + else + { + double percentageCompleted = GetAchievementScoreInput(); + GameServices.ReportAchievementProgress(description2, percentageCompleted, (success, error) => + { + if (success) + { + Log("Request to submit progress finished successfully."); + } + else + { + Log("Request to submit progress failed with error. Error: " + error); + } + }); + } + break; + + case GameServicesDemoActionType.GetNumOfStepsRequiredToUnlockAchievement: + var description3 = GetCurrentAchievementDescription(); + if (description3 == null) + { + LogAchievementNotSelected(); + } + else + { + Log("Number of steps required to unlock achievement: " + description3.NumberOfStepsRequiredToUnlockAchievement); + } + break; + + case GameServicesDemoActionType.ShowLeaderboards: + GameServices.ShowLeaderboards(callback: (result, error) => + { + LogViewClosed(); + }); + break; + + case GameServicesDemoActionType.ShowAchievements: + GameServices.ShowAchievements((result, error) => + { + LogViewClosed(); + }); + break; + + case GameServicesDemoActionType.LoadServerCredentials: + GameServices.LoadServerCredentials((result, error) => + { + if(error == null) + { + LogServerCredentials(result.ServerCredentials); + } + else + { + Log("Loading server credentials failed with error. Error: " + error); + } + }); + break; + + case GameServicesDemoActionType.LoadFriends: + GameServices.LoadFriends((result, error) => + { + if(error == null) + { + Log("Received friends: " + result.Players.Length); + foreach(var friend in result.Players) + { + Log("Friend : " + friend); + } + } + else + { + Log("Loading friends failed with error. Error: " + error); + } + }); + break; + + case GameServicesDemoActionType.AddFriend: + GameServices.AddFriend("player_id", (success, error) => + { + if(success) + { + Log("Request to add friend request finished successfully."); + } + else + { + Log("Request to add friend request failed with error. Error: " + error); + } + }); + break; + + case GameServicesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kGameServices); + break; + } + } + + #endregion + + #region Plugin callback methods + + private void OnAuthStatusChange(GameServicesAuthStatusChangeResult result, Error error) + { + // update ui + SetAuthDependentObjectState(result.AuthStatus == LocalPlayerAuthStatus.Authenticated); + + // update console + Log("Received auth status change event"); + Log("Auth status: " + result.AuthStatus); + if(result.AuthStatus == LocalPlayerAuthStatus.Authenticated) + Log("Local player: " + result.LocalPlayer); + } + + private void SetAuthDependentObjectState(bool active) + { + foreach (var rect in m_authDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + #endregion + + #region Private methods + + private void SetLeaderboardDependentObjectState(bool active) + { + foreach (var rect in m_leaderboardDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + private void SetAchievementDependentObjectState(bool active) + { + foreach (var rect in m_achievementDescriptionDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + private void LogViewClosed() + { + Log("View is closed"); + } + + private void LogServerCredentials(ServerCredentials credentials) + { + if(credentials.IosProperties != null) + { + Log("Public key Url : " + credentials.IosProperties.PublicKeyUrl); + Log("Signature length : " + credentials.IosProperties.Signature.Length); + Log("Salt length : " + credentials.IosProperties.Salt.Length); + Log("Timestamp : " + credentials.IosProperties.Timestamp); + } + else if(credentials.AndroidProperties != null) + { + Log("ServerAuthCode : " + credentials.AndroidProperties.ServerAuthCode); + } + else + { + Log("No credentials available"); + } + + } + + private IEnumerator VerifyIosServerCredentials(ServerCredentials credentials) + { + #pragma warning disable + WWWForm form = new WWWForm(); + form.AddField("publicKeyUrl", credentials.IosProperties.PublicKeyUrl); + form.AddField("timestamp", System.Convert.ToString(credentials.IosProperties.Timestamp)); + form.AddField("signature", System.Convert.ToBase64String(credentials.IosProperties.Signature)); + form.AddField("salt", System.Convert.ToBase64String(credentials.IosProperties.Salt)); + form.AddField("playerId", GameServices.LocalPlayer.Id); + form.AddField("bundleId", Application.identifier); + + UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Post("https://.../authenticate", form); + yield return www.SendWebRequest(); + + if (www.isNetworkError || www.isHttpError) + { + Debug.Log(www.error); + } + else + { + Debug.Log("Success response from server! " + www.downloadHandler.text); + } + #pragma warning restore + } + + #endregion + + #region Leaderboard handling methods + + private void CreateLeaderboardOutlets(ILeaderboard[] leaderboards) + { + var items = leaderboards == null ? null : Array.ConvertAll(leaderboards, (item) => item.Id); + DemoHelper.CreateItems(m_leaderboardsNode, m_selectableItemPrefab, items, SetCurrentLeaderboardIndex); + } + + private int GetCurrentLeaderboardIndex() + { + return m_leaderboardIndex; + } + + private void SetCurrentLeaderboardIndex(int index) + { + var leaderboards = GameServices.Leaderboards; + m_leaderboardIndex = Mathf.Clamp(index, 0, leaderboards.Length); + } + + private ILeaderboard GetCurrentLeaderboard() + { + var leaderboards = GameServices.Leaderboards; + if (leaderboards.Length > 0) + { + int index = GetCurrentLeaderboardIndex(); + return leaderboards[index]; + } + + return null; + } + + private long GetLeaderboardScoreInput() + { + long value; + long.TryParse(m_leaderboardScoreInput.text, out value); + + return value; + } + + private void LogLeaderboardNotSelected() + { + Log("Leaderboard not selected."); + } + + #endregion + + #region Achievement handling methods + + private void CreateAchievementOutlets(IAchievementDescription[] descriptions) + { + var items = (descriptions == null) ? null : Array.ConvertAll(descriptions, (item) => item.Id); + DemoHelper.CreateItems(m_yourAchivementsNode, m_selectableItemPrefab, items, SetCurrentAchievementIndex); + } + + private int GetCurrentAchievementIndex() + { + return m_achievementIndex; + } + + private void SetCurrentAchievementIndex(int index) + { + var descriptions = GameServices.AchievementDescriptions; + m_achievementIndex = Mathf.Clamp(index, 0, descriptions.Length); + } + + private IAchievementDescription GetCurrentAchievementDescription() + { + var descriptions = GameServices.AchievementDescriptions; + if (descriptions.Length > 0) + { + int index = GetCurrentAchievementIndex(); + return descriptions[index]; + } + + return null; + } + + private double GetAchievementScoreInput() + { + float value; + float.TryParse(m_achievementProgressInput.text, out value); + + return Mathf.Clamp(value, 0f, 100f); + } + + private void LogAchievementNotSelected() + { + Log("Achievement not selected."); + } + + private void LoadTopScores(string leaderboardId) + { + ILeaderboard leaderboard = GameServices.CreateLeaderboard(leaderboardId); + leaderboard.LoadScoresQuerySize = 3; + leaderboard.TimeScope = LeaderboardTimeScope.AllTime; + leaderboard.LoadTopScores((result, error) => + { + Log("Scores length : " + result.Scores.Length); + ILeaderboardScore localPlayerScore = result.LocalPlayerScore; + if (localPlayerScore != null) + { + Log(string.Format("Local Player Score : {0} Rank : {1}", localPlayerScore.Value, localPlayerScore.Rank)); + } + else + { + Log("No local player score available!"); + } + + Log("Displaying scores..." + result.Scores.Length); + foreach(ILeaderboardScore score in result.Scores) + { + Log($"Score: [Player: {score.Player.DisplayName}, Rank: {score.Rank}, Value: {score.Value}]"); + } + + Log($"Loading leaderboard image for {leaderboardId}..."); + leaderboard.LoadImage((innerResult, innerError) => + { + if (innerError == null) + { + Log("Leaderboard Image loaded successfully"); + m_texturePreview.texture = innerResult.GetTexture(); + } + else + { + Log("Error loading leaderboard image : " + innerError.Description); + m_texturePreview.texture = null; + } + }); + }); + } + + private void LoadPlayerCenteredScores(string leaderboardId) + { + ILeaderboard leaderboard = GameServices.CreateLeaderboard(leaderboardId); + leaderboard.LoadScoresQuerySize = 3; + leaderboard.TimeScope = LeaderboardTimeScope.AllTime; + leaderboard.LoadPlayerCenteredScores((result, error) => + { + Log("Scores length : " + result.Scores.Length); + ILeaderboardScore localPlayerScore = result.LocalPlayerScore; + if (localPlayerScore != null) + { + Log(string.Format("Local Player Score : {0} Rank : {1}", localPlayerScore.Value, localPlayerScore.Rank)); + } + else + { + Log("No local player score available!"); + } + + Log("Displaying scores..." + result.Scores.Length); + foreach(ILeaderboardScore score in result.Scores) + { + Log($"Score: [Player: {score.Player.DisplayName}, Rank: {score.Rank}, Value: {score.Value}]"); + } + + Log($"Loading leaderboard image for {leaderboardId}..."); + leaderboard.LoadImage((innerResult, innerError) => + { + if (innerError == null) + { + Log("Leaderboard Image loaded successfully"); + m_texturePreview.texture = innerResult.GetTexture(); + } + else + { + Log("Error loading leaderboard image : " + innerError.Description); + m_texturePreview.texture = null; + } + }); + }); + } + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemo.cs.meta new file mode 100644 index 00000000..4ec922ec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 187d388aca3774719bfec89d909da67a +timeCreated: 1547647261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemoAction.cs new file mode 100644 index 00000000..d4c720b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemoAction.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum GameServicesDemoActionType + { + IsAuthenticated, + Authenticate, + LocalPlayer, + Signout, + LoadLeaderboards, + ReportScore, + LoadAchievementDescriptions, + LoadAchievements, + ReportAchievementProgress, + GetNumOfStepsRequiredToUnlockAchievement, + ShowLeaderboards, + ShowAchievements, + LoadServerCredentials, + LoadFriends, + AddFriend, + LoadTopScores, + LoadPlayerCenteredScores, + ResourcePage, + } + + public class GameServicesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemoAction.cs.meta new file mode 100644 index 00000000..1208529b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/GameServicesDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0c3c7869d200f4507b8b58ab60ab4cb1 +timeCreated: 1549356602 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemo.cs new file mode 100644 index 00000000..25980db0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemo.cs @@ -0,0 +1,172 @@ +using System.Text; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class MailComposerDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform[] m_instanceDependentObjects = null; + + [SerializeField] + private InputField m_toInputField = null; + + [SerializeField] + private InputField m_ccInputField = null; + + [SerializeField] + private InputField m_bccInputField = null; + + [SerializeField] + private InputField m_subjectInputField = null; + + [SerializeField] + private InputField m_bodyInputField = null; + + [SerializeField] + private Toggle m_isHtmlToggle = null; + + private MailComposer m_activeComposer = null; + + private int m_attachmentCounter = 0; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + + // set default text values + SetActiveComposer(null); + } + + protected override string GetCreateInstanceCodeSnippet() + { + return "MailComposer.CreateInstance()"; + } + + protected override void OnActionSelectInternal(MailComposerDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case MailComposerDemoActionType.CanSendMail: + Log("Can send mail: " + MailComposer.CanSendMail()); + break; + + case MailComposerDemoActionType.New: + + if(!MailComposer.CanSendMail()) + { + Log("Mail composer is not available."); + break; + } + + Log("Creating new mail composer."); + // create instance + var newComposer = MailComposer.CreateInstance(); + newComposer.SetCompletionCallback(OnComposerClosed); + + // save reference + SetActiveComposer(newComposer); + break; + + case MailComposerDemoActionType.SetToRecipients: + Log("Setting To recipients."); + m_activeComposer.SetToRecipients(DemoHelper.GetMultivaluedString(m_toInputField)); + break; + + case MailComposerDemoActionType.SetCcRecipients: + Log("Setting Cc recipients."); + m_activeComposer.SetCcRecipients(DemoHelper.GetMultivaluedString(m_ccInputField)); + break; + + case MailComposerDemoActionType.SetBccRecipients: + Log("Setting Bcc recipients."); + m_activeComposer.SetBccRecipients(DemoHelper.GetMultivaluedString(m_bccInputField)); + break; + + case MailComposerDemoActionType.SetSubject: + Log("Setting subject."); + m_activeComposer.SetSubject(m_subjectInputField.text); + break; + + case MailComposerDemoActionType.SetBody: + Log("Setting body."); + m_activeComposer.SetBody(m_bodyInputField.text, m_isHtmlToggle.isOn); + break; + + case MailComposerDemoActionType.AddScreenshot: + Log("Adding screenshot."); + m_activeComposer.AddScreenshot(GetFileName("png")); + m_attachmentCounter++; + break; + + case MailComposerDemoActionType.AddImage: + Log("Adding random image."); + var image = DemoResources.GetRandomImage(); + m_activeComposer.AddImage(image, GetFileName("png")); + m_attachmentCounter++; + break; + + case MailComposerDemoActionType.Show: + Log("Showing mail composer now."); + m_activeComposer.Show(); + break; + + case MailComposerDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kSharingServices); + break; + + default: + break; + } + } + + private void OnComposerClosed(MailComposerResult result, Error error) + { + Log("Mail composer was closed. Result code: " + result.ResultCode); + + // reset instance + SetActiveComposer(null); + } + + #endregion + + #region Private methods + + private string GetFileName(string ext) + { + return string.Format("File{0}.{1}", m_attachmentCounter, ext); + } + + private void SetActiveComposer(MailComposer composer) + { + // set property + m_activeComposer = composer; + + // update ui + SetInstanceDependentObjectState(composer != null); + } + + private void SetInstanceDependentObjectState(bool active) + { + foreach (var rect in m_instanceDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemo.cs.meta new file mode 100644 index 00000000..f2deae57 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 182221a3b00b147b3973cf2923ab7040 +timeCreated: 1548915895 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemoAction.cs new file mode 100644 index 00000000..4dd3f2bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemoAction.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum MailComposerDemoActionType + { + CanSendMail, + New, + SetToRecipients, + SetCcRecipients, + SetBccRecipients, + SetSubject, + SetBody, + AddScreenshot, + AddImage, + Show, + ResourcePage + } + + public class MailComposerDemoAction : DemoActionBehaviour + {} +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemoAction.cs.meta new file mode 100644 index 00000000..5ef66b45 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MailComposerDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a025d61dd93f841679f8e54afb797093 +timeCreated: 1549315318 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemo.cs new file mode 100644 index 00000000..f0a85245 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemo.cs @@ -0,0 +1,204 @@ +using System.Text; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; +using VoxelBusters.CoreLibrary; +using System; +using System.Globalization; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class MediaServicesDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private Dropdown m_selectMediaContentOptionsMimeTypeDropdown = null; + + [SerializeField] + private Dropdown m_selectMediaContentOptionsMaxAllowedDropdown = null; + + [SerializeField] + private Dropdown m_captureMediaContentOptionsCaptureTypeDropDown = null; + + [SerializeField] + private RawImage m_texturePreview; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + } + + protected override void OnActionSelectInternal(MediaServicesDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case MediaServicesDemoActionType.GetGalleryAccessStatus: + var accessStatus1 = MediaServices.GetGalleryAccessStatus(GalleryAccessMode.ReadWrite); + Log("Gallery access status: " + accessStatus1); + break; + + case MediaServicesDemoActionType.GetCameraAccessStatus: + var accessStatus2 = MediaServices.GetCameraAccessStatus(); + Log("Camera access status: " + accessStatus2); + break; + + case MediaServicesDemoActionType.SelectMediaContent: + MediaContentSelectOptions options = new MediaContentSelectOptions(title: "Select Images", allowedMimeType: GetSelectMediaContentMimeType(), maxAllowed: GetSelectMediaContentMaxAllowed() ); + MediaServices.SelectMediaContent(options, (contents, error) => + { + if (error == null) + { + Log($"Selected media content: {contents.Length}"); + + foreach (var each in contents) + { + each.AsTexture2D((texture, error) => { + if (error == null) { + Log($"Successfully loaded the texture."); + m_texturePreview.texture = texture; + } + else { + Log($"Error loading as texture:{error}"); + } + }); + /*each.AsRawMediaData((rawMediaData, error) => + { + if (error == null) + { + Log($"Selected media content with {rawMediaData.Mime} mime type"); + } + else + { + Log($"Selected media content failed to load with error: {error}"); + } + }); + + each.AsFilePath(Application.persistentDataPath + "/" + "Save Dir", "picked_file", (string path, Error error) => + { + if (error == null) + { + Log($"Selected media content at path " + path); + } + else + { + Log($"Selected media content failed to get as file path: " + error); + } + });*/ + } + } + else + { + Log("Select image from gallery failed with error. Error: " + error); + } + }); + break; + + case MediaServicesDemoActionType.CaptureMediaContent: + MediaContentCaptureOptions captureOptions = new MediaContentCaptureOptions(title: "Capture Image", fileName: "image", captureType: GetCaptureType()); + MediaServices.CaptureMediaContent(captureOptions, (content, error) => + { + if (error == null) + { + content.AsTexture2D(onComplete: (Texture2D texture, Error error) => { + + if(error == null) + { + Log("Capture content complete." + ((texture != null) ? $" Received texture size : [{texture.width} {texture.height}]" : $"Video data can't be converted to a texture2d. Please use AsFilePath for accessing the video file.")); + m_texturePreview.texture = texture; + } + else + { + Log($"Captured media content failed with error: {error}"); + } + + }); + + content.AsFilePath(Application.persistentDataPath + "/" + "Save Dir", "captured_file", (string path, Error error) => + { + if (error == null) + { + Log($"Captured media content at path " + path); + } + else + { + Log($"Captured media content failed to get as file path: " + error); + } + }); + } + else + { + Log("Capture image using camera failed with error. Error: " + error); + } + }); + break; + + case MediaServicesDemoActionType.SaveMediaContent: + var image = DemoResources.GetRandomImage(); + MediaContentSaveOptions saveOptions = new MediaContentSaveOptions(directoryName: "Essential Kit Album", fileName: "essential-kit-save-media-image"); + MediaServices.SaveMediaContent(image.EncodeToPNG(), MimeType.kPNGImage, saveOptions, (result, error) => + { + if (error == null) + { + Log("Save media to gallery finished successfully."); + } + else + { + Log("Save media to gallery failed with error. Error: " + error); + } + }); + break; + + case MediaServicesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kMediaServices); + break; + + default: + break; + } + } + #endregion + + #region Private methods + + private string GetSelectMediaContentMimeType() + { + int index = m_selectMediaContentOptionsMimeTypeDropdown.value; + return m_selectMediaContentOptionsMimeTypeDropdown.options[index].text; + } + + private int GetSelectMediaContentMaxAllowed() + { + int index = m_selectMediaContentOptionsMaxAllowedDropdown.value; + var valueStr = m_selectMediaContentOptionsMaxAllowedDropdown.options[index].text; + int value = int.Parse(valueStr, CultureInfo.InvariantCulture); + return value; + } + + private MediaContentCaptureType GetCaptureType() + { + switch(m_captureMediaContentOptionsCaptureTypeDropDown.value) + { + case 0: + return MediaContentCaptureType.Image; + + case 1: + return MediaContentCaptureType.Video; + } + + return MediaContentCaptureType.Image; + } + + + #endregion + + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemo.cs.meta new file mode 100644 index 00000000..a6d1ad8f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f290c1888e48d4b59a3c6d1f4037b0aa +timeCreated: 1562325806 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemoAction.cs new file mode 100644 index 00000000..ad244c90 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemoAction.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum MediaServicesDemoActionType + { + GetGalleryAccessStatus, + GetCameraAccessStatus, + SelectMediaContent, + CaptureMediaContent, + SaveMediaContent, + ResourcePage, + } + + public class MediaServicesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemoAction.cs.meta new file mode 100644 index 00000000..be4de1ed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MediaServicesDemoAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b81680210e181441a9f70f94ec2bc784 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemo.cs new file mode 100644 index 00000000..9b653bfb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemo.cs @@ -0,0 +1,134 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class MessageComposerDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform[] m_instanceDependentObjects = null; + + [SerializeField] + private InputField m_recipientsInputField = null; + + [SerializeField] + private InputField m_subjectInputField = null; + + [SerializeField] + private InputField m_bodyInputField = null; + + private MessageComposer m_activeComposer = null; + + #endregion + + #region Base methods + + protected override void Start() + { + base.Start(); + + // set default text values + SetActiveComposer(null); + } + + protected override string GetCreateInstanceCodeSnippet() + { + return "MessageComposer.CreateInstance()"; + } + + protected override void OnActionSelectInternal(MessageComposerDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case MessageComposerDemoActionType.CanSendText: + Log("Can send text: " + MessageComposer.CanSendText()); + break; + + case MessageComposerDemoActionType.New: + + if(!MessageComposer.CanSendText()) + { + Log("Message composer is not available."); + break; + } + + Log("Creating new message composer."); + // create new instance + var newComposer = MessageComposer.CreateInstance(); + newComposer.SetCompletionCallback(OnComposerClosed); + + // save reference + SetActiveComposer(newComposer); + break; + + case MessageComposerDemoActionType.SetRecipients: + Log("Setting recipients."); + m_activeComposer.SetRecipients(DemoHelper.GetMultivaluedString(m_recipientsInputField)); + break; + + case MessageComposerDemoActionType.SetSubject: + Log("Setting subject."); + m_activeComposer.SetSubject(m_subjectInputField.text); + break; + + case MessageComposerDemoActionType.SetBody: + Log("Setting body."); + m_activeComposer.SetBody(m_bodyInputField.text); + break; + + case MessageComposerDemoActionType.Show: + Log("Showing message composer now."); + m_activeComposer.Show(); + break; + + case MessageComposerDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kSharingServices); + break; + + default: + break; + } + } + + private void OnComposerClosed(MessageComposerResult result, Error error) + { + Log("Message composer was closed. Result code: " + result.ResultCode); + + // reset instance + SetActiveComposer(null); + } + + #endregion + + #region Private methods + + private void SetActiveComposer(MessageComposer composer) + { + // set property + m_activeComposer = composer; + + // update ui + SetInstanceDependentObjectState(composer != null); + } + + private void SetInstanceDependentObjectState(bool active) + { + foreach (var rect in m_instanceDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemo.cs.meta new file mode 100644 index 00000000..503911a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7eb33d74adcca414da722cd2734fdb2e +timeCreated: 1549349966 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemoAction.cs new file mode 100644 index 00000000..a712ad59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemoAction.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum MessageComposerDemoActionType + { + CanSendText, + CanSendSubject, + New, + SetRecipients, + SetSubject, + SetBody, + Show, + ResourcePage + } + + public class MessageComposerDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemoAction.cs.meta new file mode 100644 index 00000000..4657f903 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/MessageComposerDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cf17ed18e43454f8ab424e04753ab145 +timeCreated: 1549349966 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemo.cs new file mode 100644 index 00000000..0099312c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemo.cs @@ -0,0 +1,84 @@ +using System.Text; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class NetworkServicesDemo : DemoActionPanelBase + { + #region Base class methods + + protected override void OnEnable() + { + base.OnEnable(); + + // register for events + NetworkServices.OnHostReachabilityChange += OnHostReachabilityChange; + NetworkServices.OnInternetConnectivityChange += OnInternetConnectivityChange; + } + + protected override void OnDisable() + { + base.OnDisable(); + + // unregister from events + NetworkServices.OnHostReachabilityChange -= OnHostReachabilityChange; + NetworkServices.OnInternetConnectivityChange -= OnInternetConnectivityChange; + } + + protected override void OnActionSelectInternal(NetworkServicesDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case NetworkServicesDemoActionType.IsInternetActive: + Log("Internet connectivity status: " + NetworkServices.IsInternetActive); + break; + + case NetworkServicesDemoActionType.IsHostReachable: + Log("Host reachability status: " + NetworkServices.IsHostReachable); + break; + + case NetworkServicesDemoActionType.IsNotifierActive: + Log("Is notifier active: " + NetworkServices.IsNotifierActive); + break; + + case NetworkServicesDemoActionType.StartNotifier: + NetworkServices.StartNotifier(); + Log("Notifier started successfully."); + break; + + case NetworkServicesDemoActionType.StopNotifier: + NetworkServices.StopNotifier(); + Log("Notifier stopped."); + break; + + case NetworkServicesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kNetworkServices); + break; + } + } + + #endregion + + #region Plugin event callback methods + + private void OnInternetConnectivityChange(NetworkServicesInternetConnectivityStatusChangeResult result) + { + Log("Received internet connectivity changed event."); + Log("Internet connectivity status: " + result.IsConnected); + } + + private void OnHostReachabilityChange(NetworkServicesHostReachabilityStatusChangeResult result) + { + Log("Received host reachability changed event."); + Log("Host reachability status: " + result.IsReachable); + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemo.cs.meta new file mode 100644 index 00000000..65c08967 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 59b241134bd6a4af4815dbd2f0e02444 +timeCreated: 1547647261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemoAction.cs new file mode 100644 index 00000000..165a4a18 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemoAction.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum NetworkServicesDemoActionType + { + IsInternetActive, + IsHostReachable, + StartNotifier, + StopNotifier, + ResourcePage, + IsNotifierActive, + } + + public class NetworkServicesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemoAction.cs.meta new file mode 100644 index 00000000..7020edb6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NetworkServicesDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1b8157adecae4475b9548975cb57a883 +timeCreated: 1549358384 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemo.cs new file mode 100644 index 00000000..c7f679b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemo.cs @@ -0,0 +1,378 @@ +using System; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class NotificationServicesDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform[] m_accessDependentObjects = null; + + [SerializeField] + private InputField m_idInputField = null; + + [SerializeField] + private InputField m_titleInputField = null; + + [SerializeField] + private InputField m_timeIntervalInputField = null; + + [SerializeField] + private CalendarTriggerFields m_calendarTriggerFields = null; + + [SerializeField] + private InputField m_cancelNotificationIdInputField = null; + + [SerializeField] + private Dropdown m_notificationPriorityDropdown = null; + + [SerializeField] + private Toggle m_repeatToggle = null; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + + // set object state + NotificationServices.GetSettings((result) => OnPermissionStatusChange(result.Settings.PermissionStatus)); + } + + protected override void OnEnable() + { + base.OnEnable(); + + // register for events + NotificationServices.OnNotificationReceived += OnNotificationReceived; + NotificationServices.OnSettingsUpdate += OnSettingsUpdate; + + } + + protected override void OnDisable() + { + base.OnDisable(); + + // register for events + NotificationServices.OnNotificationReceived -= OnNotificationReceived; + NotificationServices.OnSettingsUpdate -= OnSettingsUpdate; + } + + protected override void OnActionSelectInternal(NotificationServicesDemoAction selectedAction) + { + string notificationId = m_idInputField.text; + string notificationTitle = m_titleInputField.text; + NotificationPriority priority = GetNotificationPriority(); + + switch (selectedAction.ActionType) + { + case NotificationServicesDemoActionType.RequestAccess: + NotificationServices.RequestPermission(NotificationPermissionOptions.Alert | NotificationPermissionOptions.Sound | NotificationPermissionOptions.Badge | NotificationPermissionOptions.ProvidesAppNotificationSettings, callback: (result, error) => + { + Log("Request for access finished."); + Log("Notification access status: " + result.PermissionStatus); + + // update ui + OnPermissionStatusChange(result.PermissionStatus); + }); + break; + + case NotificationServicesDemoActionType.GetSettings: + NotificationServices.GetSettings((result) => + { + var settings = result.Settings; + // update console + Log(settings.ToString()); + + // update ui + OnPermissionStatusChange(settings.PermissionStatus); + }); + break; + + case NotificationServicesDemoActionType.ScheduleNotificationNow: + if (string.IsNullOrEmpty(notificationId)) + { + Log("Provide notification id."); + return; + } + if (string.IsNullOrEmpty(notificationTitle)) + { + Log("Provide notification title."); + return; + } + // create notification + //Note: As there can be only one notification channel on Android,only one priority can be used at a time. + //Note: Use High priority only if its really important, else use Medium (default). + var scheduleNowNotification = NotificationBuilder.CreateNotification(notificationId) + .SetTitle(notificationTitle) + .SetUserInfo(new System.Collections.Generic.Dictionary { { "Test", "Value"} }) + .SetBadge(10) + .SetPriority(priority) + .Create(); + // schedule + NotificationServices.ScheduleNotification(scheduleNowNotification, (success, error) => + { + if (success) + { + Log("Request to schedule notification finished successfully."); + } + else + { + Log("Request to schedule notification failed with error. Error: " + error); + } + }); + break; + + case NotificationServicesDemoActionType.ScheduleTimeIntervalTriggerNotification: + long timeInterval; + long.TryParse(m_timeIntervalInputField.text, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out timeInterval); + if (string.IsNullOrEmpty(notificationId)) + { + Log("Provide notification id."); + return; + } + if (string.IsNullOrEmpty(notificationTitle)) + { + Log("Provide notification title."); + return; + } + if (timeInterval < 1) + { + Log("Provide a valid time interval value."); + return; + } + // create notification + //Note: As there can be only one notification channel on Android,only one priority can be used at a time. + //Note: Use High priority (default) only if its really important, else use Medium. + var timeIntervalTriggerNotification = NotificationBuilder.CreateNotification(notificationId) + .SetTitle(notificationTitle) + .SetTimeIntervalNotificationTrigger(timeInterval, repeats: m_repeatToggle.isOn) + .SetPriority(priority) + //.SetSoundFileName("notification.mp3") + .Create(); + + // schedule notification + NotificationServices.ScheduleNotification(timeIntervalTriggerNotification, (success, error) => + { + if (success) + { + Log("Request to schedule notification completed successfully."); + } + else + { + Log("Request to schedule notification failed with error. Error: " + error); + } + }); + break; + + case NotificationServicesDemoActionType.ScheduleCalendarTriggerNotification: + if (string.IsNullOrEmpty(notificationId)) + { + Log("Provide notification id."); + return; + } + if (string.IsNullOrEmpty(notificationTitle)) + { + Log("Provide notification title."); + return; + } + + // create notification + //Note: As there can be only one notification channel on Android,only one priority can be used at a time. + //Note: Use High priority (default) only if its really important, else use Medium. + var calendarTriggerNotification = NotificationBuilder.CreateNotification(notificationId) + .SetTitle(notificationTitle) + .SetCalendarNotificationTrigger(m_calendarTriggerFields.GetDateComponents(), repeats: m_repeatToggle.isOn) + .SetPriority(priority) + //.SetSoundFileName("notification.mp3") + .Create(); + + // schedule notification + NotificationServices.ScheduleNotification(calendarTriggerNotification, (success, error) => + { + if (success) + { + Log("Request to schedule notification completed successfully."); + } + else + { + Log("Request to schedule notification failed with error. Error: " + error); + } + }); + break; + case NotificationServicesDemoActionType.GetScheduledNotifications: + NotificationServices.GetScheduledNotifications((result, error) => + { + if (error == null) + { + // show console messages + var notifications = result.Notifications; + Log("Request for fetch scheduled notifications finished successfully."); + Log("Total notifications scheduled: " + notifications.Length); + Log("Below are the notifications:"); + for (int iter = 0; iter < notifications.Length; iter++) + { + var notification = notifications[iter]; + Log(string.Format("[{0}]: {1}", iter, notification)); + Debug.Log("User info : " + notification.UserInfo); + } + } + else + { + Log("Request for fetch scheduled notifications failed with error. Error: " + error); + } + }); + break; + + case NotificationServicesDemoActionType.CancelScheduledNotification: + string cancelNotificationID = m_cancelNotificationIdInputField.text; + if (string.IsNullOrEmpty(cancelNotificationID)) + { + Log("Provide notification id."); + return; + } + NotificationServices.CancelScheduledNotification(cancelNotificationID); + Log("Cancelling notification with id: " + cancelNotificationID); + break; + + case NotificationServicesDemoActionType.CancelAllScheduledNotifications: + NotificationServices.CancelAllScheduledNotifications(); + Log("Cancelling all the notifications."); + break; + + case NotificationServicesDemoActionType.GetDeliveredNotifications: + NotificationServices.GetDeliveredNotifications((result, error) => + { + if (error == null) + { + // show console messages + var notifications = result.Notifications; + Log("Request for fetch delivered notifications finished successfully."); + Log("Total notifications received: " + notifications.Length); + Log("Below are the notifications:"); + for (int iter = 0; iter < notifications.Length; iter++) + { + var notification = notifications[iter]; + Log(string.Format("[{0}]: {1}", iter, notification)); + } + } + else + { + Log("Request for fetch delivered notifications failed with error. Error: " + error); + } + }); + break; + + case NotificationServicesDemoActionType.RemoveAllDeliveredNotifications: + NotificationServices.RemoveAllDeliveredNotifications(); + Log("Removing all the delivered notifications."); + break; + + case NotificationServicesDemoActionType.DeviceToken: + string deviceToken1 = NotificationServices.CachedSettings.DeviceToken; + Log("Device token: " + deviceToken1); + break; + + case NotificationServicesDemoActionType.RegisterForRemoteNotifications: + NotificationServices.RegisterForPushNotifications((result, error) => + { + if (error == null) + { + Log("Remote notification registration finished successfully. Device token: " + result.DeviceToken); + } + else + { + Log("Remote notification registration failed with error. Error: " + error.Description); + } + }); + break; + + case NotificationServicesDemoActionType.IsRegisteredForRemoteNotifications: + bool isRegistered = NotificationServices.IsRegisteredForPushNotifications(); + Log("Is registered for remote notifications: " + isRegistered); + break; + + case NotificationServicesDemoActionType.UnregisterForRemoteNotifications: + NotificationServices.UnregisterForPushNotifications(); + Log("Unregistering from receiving remote notifications."); + break; + + case NotificationServicesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kNotificationServices); + break; + + default: + break; + } + } + + #endregion + + #region Private methods + + private void OnPermissionStatusChange(NotificationPermissionStatus newStatus) + { + // update UI + bool active = (newStatus == NotificationPermissionStatus.Authorized); + foreach (var rect in m_accessDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + private void OnNotificationReceived(NotificationServicesNotificationReceivedResult data) + { + Log(string.Format("{0} received.", data.Notification)); + } + + private void OnSettingsUpdate(NotificationSettings settings) + { + Log(string.Format("Settings Update: {0}", settings)); + } + + private DateComponents CreateDateComponents() + { + // 10th minute and 30th second on current hour. If repeats is set to true, repeats on 10th minute and 30th second of every hour + DateComponents dateComponents = new DateComponents(); + dateComponents.Second = 30; + //dateComponents.Minute = 10; + + /* Other examples. Considers the max date component for repeating when repeats is set + // Triggers at : 15th hour of the day, 10th minute and 30th second. If repeats is set to true, repeats on 15th hour of the day, 10th minute and 30th second of every day + DateComponents dateComponents = new DateComponents(); + dateComponents.Second = 30; + dateComponents.Minute = 10; + dateComponents.Hour = 15; + + + // Triggers at : 20th day of the month, 15th hour of the day, 10th minute and 30th second. If repeats is set to true, repeats on 20th day of month, 10th hour of the day, 10th minute and 30th second of every month + DateComponents dateComponents = new DateComponents(); + dateComponents.Second = 30; + dateComponents.Minute = 10; + dateComponents.Hour = 15; + dateComponents.Day = 20; + */ + + return dateComponents; + } + + private NotificationPriority GetNotificationPriority() + { + var priorityStr = m_notificationPriorityDropdown.options[m_notificationPriorityDropdown.value]; + return (NotificationPriority)Enum.Parse(typeof(NotificationPriority), priorityStr.text); + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemo.cs.meta new file mode 100644 index 00000000..8c902706 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e31442104c6494906b844f01a587e5de +timeCreated: 1547647261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemoAction.cs new file mode 100644 index 00000000..502a45cc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemoAction.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum NotificationServicesDemoActionType + { + RequestAccess, + GetSettings, + CreateNotification, + ScheduleNotificationNow, + ScheduleTimeIntervalTriggerNotification, + GetScheduledNotifications, + CancelScheduledNotification, + CancelAllScheduledNotifications, + GetDeliveredNotifications, + RemoveAllDeliveredNotifications, + DeviceToken, + RegisterForRemoteNotifications, + UnregisterForRemoteNotifications, + IsRegisteredForRemoteNotifications, + ScheduleCalendarTriggerNotification, + ResourcePage, + } + + public class NotificationServicesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemoAction.cs.meta new file mode 100644 index 00000000..7aed26c6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/NotificationServicesDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: de6803a10a5684b549b8e0e83fc32836 +timeCreated: 1549356602 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemo.cs new file mode 100644 index 00000000..d07a0dbe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemo.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class RateMyAppDemo : DemoActionPanelBase + { + #region Base methods + + protected override void OnActionSelectInternal(RateMyAppDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case RateMyAppDemoActionType.AskForReviewNow: + Log("Asking for review."); + RateMyApp.AskForReviewNow(); + break; + + case RateMyAppDemoActionType.IsAllowedToRate: + Log("Is allowed to rate: " + RateMyApp.IsAllowedToRate()); + break; + case RateMyAppDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kRateMyApp); + break; + + default: + break; + } + } + + + /* + //When auto show option is off, you can write something like this to present the rating. + if(RateMyApp.IsAllowedToRate()) + { + RateMyApp.AskForReviewNow(); + } + */ + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemo.cs.meta new file mode 100644 index 00000000..a4e8c865 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 64814fd37bda846a48d4ee14470f9f9a +timeCreated: 1549651840 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemoAction.cs new file mode 100644 index 00000000..d26d213f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemoAction.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum RateMyAppDemoActionType + { + AskForReviewNow, + IsAllowedToRate, + ResourcePage + } + + public class RateMyAppDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemoAction.cs.meta new file mode 100644 index 00000000..82fae2d4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/RateMyAppDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3d937d28509da4a109f8e6f8a9fd344c +timeCreated: 1549651840 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemo.cs new file mode 100644 index 00000000..58ec4a60 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemo.cs @@ -0,0 +1,155 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class ShareSheetDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform[] m_instanceDependentObjects = null; + + [SerializeField] + private InputField m_textInputField = null; + + [SerializeField] + private InputField m_urlInputField = null; + + [SerializeField] + private Toggle m_isLocalPathToggle = null; + + private ShareSheet m_shareSheet = null; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + + // set default text values + SetActiveSheet(null); + } + + protected override string GetCreateInstanceCodeSnippet() + { + return "ShareSheet.CreateInstance()"; + } + + protected override void OnActionSelectInternal(ShareSheetDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case ShareSheetDemoActionType.New: + Log("Creating new share sheet."); + // create instance + var newSheet = ShareSheet.CreateInstance(); + newSheet.SetCompletionCallback(OnShareSheetClosed); + + // update UI + SetActiveSheet(newSheet); + break; + + case ShareSheetDemoActionType.AddText: + Log("Adding text."); + m_shareSheet.AddText(m_textInputField.text); + break; + + case ShareSheetDemoActionType.AddScreenshot: + Log("Adding screenshot."); + m_shareSheet.AddScreenshot(); + break; + + case ShareSheetDemoActionType.AddImage: + Log("Adding random image."); + var image = DemoResources.GetRandomImage(); + m_shareSheet.AddImage(image); + break; + + case ShareSheetDemoActionType.AddURL: + Log("Adding url."); + var url = m_isLocalPathToggle.isOn + ? URLString.FileURLWithPath(m_urlInputField.text) + : URLString.URLWithPath(m_urlInputField.text); + m_shareSheet.AddURL(url); + break; + + case ShareSheetDemoActionType.Show: + Log("Showing share sheet now."); + m_shareSheet.Show(); + break; + + case ShareSheetDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kSharingServices); + break; + + default: + break; + } + } + + private void OnShareSheetClosed(ShareSheetResult result, Error error) + { + Log("Share sheet was closed. Result code: " + result.ResultCode); + + // reset instance + SetActiveSheet(null); + } + + #endregion + + #region Private methods + + private void SetActiveSheet(ShareSheet sheet) + { + // set property + m_shareSheet = sheet; + + // update ui + SetInstanceDependentObjectState(sheet != null); + } + + private void SetInstanceDependentObjectState(bool active) + { + foreach (RectTransform rect in m_instanceDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + /* + private IEnumerator ShareMovie(string fileNameWithExtension) + { + var url = System.IO.Path.Combine(Application.streamingAssetsPath, fileNameWithExtension); + + byte[] data; + + if (url.Contains("://") || url.Contains(":///")) + { + UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(url); + yield return www.SendWebRequest(); + data = www.downloadHandler.data; + } + else + { + data = System.IO.File.ReadAllBytes(url); + } + + ShareSheet shareSheet = ShareSheet.CreateInstance(); + shareSheet.AddAttachment(data, "video/mp4", "video.mp4"); + shareSheet.Show(); + }*/ + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemo.cs.meta new file mode 100644 index 00000000..66a704ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1210905f0541841418175c9e6a8429d8 +timeCreated: 1549351766 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemoAction.cs new file mode 100644 index 00000000..5ac7d4cb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemoAction.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum ShareSheetDemoActionType + { + New, + AddText, + AddScreenshot, + AddImage, + AddURL, + Show, + ResourcePage + } + + public class ShareSheetDemoAction : DemoActionBehaviour + {} +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemoAction.cs.meta new file mode 100644 index 00000000..645dbd1d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/ShareSheetDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f6c2fedf93cd545ba80c54307c608c0e +timeCreated: 1548915895 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemo.cs new file mode 100644 index 00000000..f7395a6c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemo.cs @@ -0,0 +1,148 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class SocialShareComposerDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform[] m_instanceDependentObjects = null; + + [SerializeField] + private Dropdown m_typeDropdown = null; + + [SerializeField] + private InputField m_textInputField = null; + + [SerializeField] + private InputField m_urlInputField = null; + + [SerializeField] + private Toggle m_isLocalPathToggle = null; + + private SocialShareComposer m_activeComposer = null; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + + // set default text values + SetActiveComposer(null); + m_typeDropdown.options = new List(Array.ConvertAll(Enum.GetNames(typeof(SocialShareComposerType)), (item) => new Dropdown.OptionData(item))); + } + + protected override string GetCreateInstanceCodeSnippet() + { + return "ShareComposer.CreateInstance(shareComposerType)"; + } + + protected override void OnActionSelectInternal(SocialShareComposerDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case SocialShareComposerDemoActionType.IsComposerAvailable: + var selectedComposer1 = GetSelectedComposerType(); + Log(string.Format("Share composer for type: {0} is available: {1}", selectedComposer1, SocialShareComposer.IsComposerAvailable(selectedComposer1))); + break; + + case SocialShareComposerDemoActionType.New: + Log("Creating new share composer."); + // create instance + var selectedComposer2 = GetSelectedComposerType(); + var newComposer = SocialShareComposer.CreateInstance(selectedComposer2); + newComposer.SetCompletionCallback(OnComposerClosed); + + // save reference + SetActiveComposer(newComposer); + break; + + case SocialShareComposerDemoActionType.SetText: + Log("Setting text."); + m_activeComposer.SetText(m_textInputField.text); + break; + + case SocialShareComposerDemoActionType.AddScreenshot: + Log("Adding screenshot."); + m_activeComposer.AddScreenshot(); + break; + + case SocialShareComposerDemoActionType.AddImage: + Log("Adding random image."); + var image = DemoResources.GetRandomImage(); + m_activeComposer.AddImage(image); + break; + + case SocialShareComposerDemoActionType.AddURL: + Log("Adding url."); + var url = m_isLocalPathToggle.isOn + ? URLString.FileURLWithPath(m_urlInputField.text) + : URLString.URLWithPath(m_urlInputField.text); + m_activeComposer.AddURL(url); + break; + + case SocialShareComposerDemoActionType.Show: + Log("Showing share composer now."); + m_activeComposer.Show(); + break; + + case SocialShareComposerDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kSharingServices); + break; + + default: + break; + } + } + + private void OnComposerClosed(SocialShareComposerResult result, Error error) + { + Log("Share composer was closed. Result code: " + result.ResultCode); + + // reset instance + SetActiveComposer(null); + } + + #endregion + + #region Private methods + + private SocialShareComposerType GetSelectedComposerType() + { + return (SocialShareComposerType)Enum.GetValues(typeof(SocialShareComposerType)).GetValue(m_typeDropdown.value); + } + + private void SetActiveComposer(SocialShareComposer composer) + { + // set property + m_activeComposer = composer; + + // update ui + SetInstanceDependentObjectState(composer != null); + } + + private void SetInstanceDependentObjectState(bool active) + { + foreach (var rect in m_instanceDependentObjects) + { + rect.gameObject.SetActive(active); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemo.cs.meta new file mode 100644 index 00000000..076d276d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 76b94f176260f4917890f715140184d3 +timeCreated: 1549351786 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemoAction.cs new file mode 100644 index 00000000..dade297a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemoAction.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum SocialShareComposerDemoActionType + { + IsComposerAvailable, + New, + SetText, + AddScreenshot, + AddImage, + AddURL, + Show, + ResourcePage + } + + public class SocialShareComposerDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemoAction.cs.meta new file mode 100644 index 00000000..eb92d47d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/SocialShareComposerDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 15e5d56d912bc4641885dc70f570ce78 +timeCreated: 1549351801 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemo.cs new file mode 100644 index 00000000..98c1f332 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemo.cs @@ -0,0 +1,58 @@ +using System.Text; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class UtilitiesDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private InputField m_idInputField = null; + + #endregion + + #region Base class methods + + protected override void OnActionSelectInternal(UtilitiesDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case UtilitiesDemoActionType.OpenAppStorePage: + Log("Opening app store page"); + Utilities.OpenAppStorePage(); + break; + + case UtilitiesDemoActionType.OpenCustomAppStorePage: + string appId = m_idInputField.text; + if (string.IsNullOrEmpty(appId)) + { + Log("Provide application id."); + return; + } + Log("Opening app store page"); + Utilities.OpenAppStorePage(appId); + break; + + case UtilitiesDemoActionType.OpenApplicationSettings: + Utilities.OpenApplicationSettings(); + break; + + case UtilitiesDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kExtras); + break; + + default: + break; + } + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemo.cs.meta new file mode 100644 index 00000000..3328ed16 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88fb5361371b1420599a705233226fe5 +timeCreated: 1547647261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemoAction.cs new file mode 100644 index 00000000..aed675bb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemoAction.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum UtilitiesDemoActionType + { + OpenAppStorePage, + OpenCustomAppStorePage, + ResourcePage, + OpenApplicationSettings, + } + + public class UtilitiesDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemoAction.cs.meta new file mode 100644 index 00000000..cee8b5af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/UtilitiesDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b959751cc0ef54eec8d90d0d5db0ebe8 +timeCreated: 1549356602 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/VoxelBusters.EssentialKit.Demo.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/VoxelBusters.EssentialKit.Demo.asmdef new file mode 100644 index 00000000..e114e969 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/VoxelBusters.EssentialKit.Demo.asmdef @@ -0,0 +1,16 @@ +{ + "name": "VoxelBusters.EssentialKit.Demo", + "references": [ + "VoxelBusters.CoreLibrary", + "VoxelBusters.CoreLibrary.NativePlugins", + "VoxelBusters.EssentialKit" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/VoxelBusters.EssentialKit.Demo.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/VoxelBusters.EssentialKit.Demo.asmdef.meta new file mode 100644 index 00000000..1e88fe08 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/VoxelBusters.EssentialKit.Demo.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 26957925e61e641f8bb3a909acc489ea +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemo.cs new file mode 100644 index 00000000..e94d6eed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemo.cs @@ -0,0 +1,367 @@ +using System; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +// key namespaces +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; +// internal namespace +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public class WebViewDemo : DemoActionPanelBase + { + #region Fields + + [SerializeField] + private RectTransform[] m_instanceDependentObjects = null; + + [SerializeField] + private Dropdown m_styleDropdown = null; + + [SerializeField] + private InputField m_urlInputField = null; + + [SerializeField] + private Toggle m_isLocalPathToggle = null; + + [SerializeField] + private InputField m_htmlStringInputField = null; + + [SerializeField] + private InputField m_jsInputField = null; + + private WebView m_activeWebView; + + #endregion + + #region Base class methods + + protected override void Start() + { + base.Start(); + + // set default properties + SetActiveWebView(null); + m_styleDropdown.options = new List(Array.ConvertAll(Enum.GetNames(typeof(WebViewStyle)), (item) => new Dropdown.OptionData(item))); + } + + protected override void OnEnable() + { + base.OnEnable(); + + // register for events + WebView.OnShow += OnWebViewShow; + WebView.OnHide += OnWebViewHide;; + WebView.OnLoadStart += OnWebViewLoadStart; + WebView.OnLoadFinish += OnWebViewLoadFinish; + WebView.OnURLSchemeMatchFound += OnURLSchemeMatchFound; + } + + protected override void OnDisable() + { + base.OnDisable(); + + // register for events + WebView.OnShow -= OnWebViewShow; + WebView.OnHide -= OnWebViewHide;; + WebView.OnLoadStart -= OnWebViewLoadStart; + WebView.OnLoadFinish -= OnWebViewLoadFinish; + WebView.OnURLSchemeMatchFound -= OnURLSchemeMatchFound; + } + + protected override void OnActionSelectInternal(WebViewDemoAction selectedAction) + { + switch (selectedAction.ActionType) + { + case WebViewDemoActionType.Create: + var newInstance = WebView.CreateInstance(); + newInstance.SetNormalizedFrame(new Rect(0f, 0f, 1f, 0.4f)); + SetActiveWebView(newInstance); + break; + + case WebViewDemoActionType.SetControls: + var selectedStyle = GetSelectedStyle(); + m_activeWebView.Style = selectedStyle; + Log("Setting style property: " + selectedStyle); + break; + + case WebViewDemoActionType.SetAutoShowOnLoadFinish: + bool autoShow = selectedAction.GetComponent().isOn; + m_activeWebView.AutoShowOnLoadFinish = autoShow; + Log("Setting auto show on load property: " + autoShow); + break; + + case WebViewDemoActionType.SetScalesPageToFit: + bool scalesPageToFit = selectedAction.GetComponent().isOn; + m_activeWebView.ScalesPageToFit = scalesPageToFit; + Log("Setting scales page to fit property: " + scalesPageToFit); + break; + + case WebViewDemoActionType.SetCanBounce: + bool canBounce = selectedAction.GetComponent().isOn; + m_activeWebView.CanBounce = canBounce; + Log("Setting can bounce property: " + canBounce); + break; + + case WebViewDemoActionType.SetJavaScriptEnabled: + bool jsEnabled = selectedAction.GetComponent().isOn; + m_activeWebView.JavaScriptEnabled = jsEnabled; + Log("Setting js enabled property: " + jsEnabled); + break; + + case WebViewDemoActionType.GetURL: + string url1 = m_activeWebView.URL; + Log("URL: " + url1); + break; + + case WebViewDemoActionType.GetTitle: + string title1 = m_activeWebView.Title; + Log("Title: " + title1); + break; + + case WebViewDemoActionType.GetProgress: + double progress1 = m_activeWebView.Progress; + Log("Progress: " + progress1); + break; + + case WebViewDemoActionType.GetIsLoading: + bool isLoading1 = m_activeWebView.IsLoading; + Log("Is loading: " + isLoading1); + break; + + case WebViewDemoActionType.Show: + m_activeWebView.Show(); + break; + + case WebViewDemoActionType.Hide: + m_activeWebView.Hide(); + break; + + case WebViewDemoActionType.LoadURL: + string urlStr = m_urlInputField.text; + if (string.IsNullOrEmpty(urlStr)) + { + Log("[Error] Specify url."); + return; + } + else + { + Log("Loading url."); + var urlString = m_isLocalPathToggle.isOn + ? URLString.FileURLWithPath(urlStr) + : URLString.URLWithPath(urlStr); + m_activeWebView.LoadURL(urlString); + } + break; + + case WebViewDemoActionType.LoadHtmlString: + string htmlStr = m_htmlStringInputField.text; + if (string.IsNullOrEmpty(htmlStr)) + { + Log("[Error] Provide html string."); + return; + } + else + { + Log("Loading html string."); + m_activeWebView.LoadHtmlString(htmlStr); + } + break; + + case WebViewDemoActionType.LoadData: + Log("Loading random image data."); + var image1 = DemoResources.GetRandomImage(); + string mimeType1, textEncodingName1; + byte[] data1 = image1.Encode(TextureEncodingFormat.JPG, out mimeType1, out textEncodingName1); + m_activeWebView.LoadData(data1, mimeType1, textEncodingName1); + break; + + case WebViewDemoActionType.LoadTexture: + Log("Loading random image data."); + var image2 = DemoResources.GetRandomImage(); + m_activeWebView.LoadTexture(image2, TextureEncodingFormat.JPG); + break; + + case WebViewDemoActionType.Reload: + Log("Reloading webpage."); + m_activeWebView.Reload(); + break; + + case WebViewDemoActionType.StopLoading: + Log("Stopping load request."); + m_activeWebView.StopLoading(); + break; + + case WebViewDemoActionType.RunJavaScript: + string js = m_jsInputField.text; + if (string.IsNullOrEmpty(js)) + { + Log("Provide javascript."); + return; + } + else + { + Log("Running javascript."); + m_activeWebView.RunJavaScript(js, (result, error) => + { + if (error == null) + { + Log("Javascript was executed successfully. Result: " + result.Result); + } + else + { + Log("Could not run javascript. Error: " + error); + } + }); + } + break; + + case WebViewDemoActionType.SetFullScreenRect: + Log("Changing frame to full screen."); + m_activeWebView.SetFullScreen(); + break; + + case WebViewDemoActionType.ClearCache: + Log("Clearing cache."); + m_activeWebView.ClearCache(); + break; + + case WebViewDemoActionType.ResourcePage: + ProductResources.OpenResourcePage(NativeFeatureType.kWebView); + break; + } + } + + #endregion + + #region Plugin callback methods + + private void OnWebViewShow(WebView result) + { + if (result == m_activeWebView) + { + Log("Webview is being displayed."); + } + } + + private void OnWebViewHide(WebView result) + { + if (result == m_activeWebView) + { + Log("Webview is being dismissed."); + } + } + + private void OnWebViewLoadStart(WebView result) + { + if (result == m_activeWebView) + { + Log("Webview did start loading request. URL: "+ m_activeWebView.URL); + } + } + + private void OnWebViewLoadFinish(WebView result, Error error) + { + if (result == m_activeWebView) + { + if (error == null) + { + Log("Webview finished loading requested content successfully."); + } + else + { + Log("Webview failed to load requested content. Error: " + error); + } + } + } + + + private void OnURLSchemeMatchFound(string result) + { + Log("Found a url scheme match : " + result); + } + + #endregion + + #region Private methods + + private void SetActiveWebView(WebView webView) + { + // set property + m_activeWebView = webView; + + // update ui + SetInstanceDependentObjectState(webView != null); + } + + private void SetInstanceDependentObjectState(bool active) + { + foreach (var rect in m_instanceDependentObjects) + { + rect.gameObject.SetActive(active); + } + + // update state + if (active) + { + var actions = GetComponentsInChildren(includeInactive: true); + foreach (var action in actions) + { + switch (action.ActionType) + { + case WebViewDemoActionType.SetCanBounce: + var toggle1 = action.GetComponent(); + toggle1.isOn = m_activeWebView.CanBounce; + break; + + case WebViewDemoActionType.SetScalesPageToFit: + var toggle2 = action.GetComponent(); + toggle2.isOn = m_activeWebView.ScalesPageToFit; + break; + + case WebViewDemoActionType.SetJavaScriptEnabled: + var toggle3 = action.GetComponent(); + toggle3.isOn = m_activeWebView.JavaScriptEnabled; + break; + + case WebViewDemoActionType.SetAutoShowOnLoadFinish: + var toggle4 = action.GetComponent(); + toggle4.isOn = m_activeWebView.AutoShowOnLoadFinish; + break; + + case WebViewDemoActionType.SetControls: + var dropdown1 = action.GetComponent(); + dropdown1.value = GetStyleIndex(m_activeWebView.Style); + break; + } + } + } + } + + private WebViewStyle GetSelectedStyle() + { + return (WebViewStyle)Enum.GetValues(typeof(WebViewStyle)).GetValue(m_styleDropdown.value); + } + + private int GetStyleIndex(WebViewStyle style) + { + var array = Enum.GetValues(typeof(WebViewStyle)); + for (int iter = 0; iter < array.Length; iter++) + { + if ((WebViewStyle)array.GetValue(iter) == style) + { + return iter; + } + } + + return 0; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemo.cs.meta new file mode 100644 index 00000000..3d055243 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4c22a57a477b7450980d64c30ac7a2d5 +timeCreated: 1562387433 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemoAction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemoAction.cs new file mode 100644 index 00000000..44dc840e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemoAction.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using VoxelBusters.CoreLibrary.NativePlugins.DemoKit; + +namespace VoxelBusters.EssentialKit.Demo +{ + public enum WebViewDemoActionType + { + Create, + SetRect, + SetControls, + SetAutoShowOnLoadFinish, + SetScalesPageToFit, + SetCanBounce, + SetJavaScriptEnabled, + GetURL, + GetTitle, + GetProgress, + GetIsLoading, + Show, + Hide, + LoadURL, + LoadHtmlString, + LoadData, + Reload, + StopLoading, + RunJavaScript, + ClearCache, + SetFullScreenRect, + LoadTexture, + ResourcePage + } + + public class WebViewDemoAction : DemoActionBehaviour + {} +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemoAction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemoAction.cs.meta new file mode 100644 index 00000000..b17836eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scripts/WebViewDemoAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d044725eceb549bfb46d36372f9c3b3 +timeCreated: 1562387433 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources.meta new file mode 100644 index 00000000..33ae3078 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a7714e795ae7a4c16a55016a034d3dd2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources/Extras.unitypackage b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources/Extras.unitypackage new file mode 100644 index 00000000..f653235e Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources/Extras.unitypackage differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources/Extras.unitypackage.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources/Extras.unitypackage.meta new file mode 100644 index 00000000..b4149668 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/PackageResources/Extras.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9dcd554dd563f498292f8d3dc4382c53 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins.meta new file mode 100644 index 00000000..3518cf41 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e4bd9e6c761e448808fe43569de7413c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android.meta new file mode 100644 index 00000000..3862a04c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 46bde8e7396734f5589963ed3fd71c34 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-address-book.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-address-book.aar new file mode 100644 index 00000000..d9659f7e Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-address-book.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-address-book.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-address-book.aar.meta new file mode 100644 index 00000000..c8819e42 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-address-book.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: eb87341c6b0734ba9b8630e9009d4e4c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-app-updater.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-app-updater.aar new file mode 100644 index 00000000..ce7aeb94 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-app-updater.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-app-updater.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-app-updater.aar.meta new file mode 100644 index 00000000..bbf88dfc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-app-updater.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: ac82f4af199ff417aa11f4123c23d869 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-billing-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-billing-services.aar new file mode 100644 index 00000000..6b4be42f Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-billing-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-billing-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-billing-services.aar.meta new file mode 100644 index 00000000..b5cf36e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-billing-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 85e4e01a7f918455587c4ad19c1f84bf +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-cloud-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-cloud-services.aar new file mode 100644 index 00000000..55b49b4f Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-cloud-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-cloud-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-cloud-services.aar.meta new file mode 100644 index 00000000..b76c5aa0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-cloud-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 86c4ab7d602134ba29f86c5b06260056 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-deep-link-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-deep-link-services.aar new file mode 100644 index 00000000..628323ee Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-deep-link-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-deep-link-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-deep-link-services.aar.meta new file mode 100644 index 00000000..53d05c4f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-deep-link-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 8a3539223702a4669afed26731a3076f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-extras.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-extras.aar new file mode 100644 index 00000000..a0fb91f9 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-extras.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-extras.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-extras.aar.meta new file mode 100644 index 00000000..731934fe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-extras.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d48fb4d9f54614a51be0c3cc2d23a49a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-game-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-game-services.aar new file mode 100644 index 00000000..d1542bce Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-game-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-game-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-game-services.aar.meta new file mode 100644 index 00000000..ae41d432 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-game-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 1482273c9f4744b7bab496b57599bb56 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-media-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-media-services.aar new file mode 100644 index 00000000..b3d04d7e Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-media-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-media-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-media-services.aar.meta new file mode 100644 index 00000000..14485c4b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-media-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: fe974680a9d8249fca6a3fac8453ecfb +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-network-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-network-services.aar new file mode 100644 index 00000000..eeba9482 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-network-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-network-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-network-services.aar.meta new file mode 100644 index 00000000..63c9db82 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-network-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d6e53a2ddc8854af3b68b56b43575bf7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-notification-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-notification-services.aar new file mode 100644 index 00000000..4d48c5f4 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-notification-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-notification-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-notification-services.aar.meta new file mode 100644 index 00000000..75e130b8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-notification-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d596e0415b670470daf9bc71275caff6 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-rate-my-app.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-rate-my-app.aar new file mode 100644 index 00000000..06a6696d Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-rate-my-app.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-rate-my-app.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-rate-my-app.aar.meta new file mode 100644 index 00000000..34c9f9c7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-rate-my-app.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 67e15f852d9a84384b308b809110c572 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-sharing-services.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-sharing-services.aar new file mode 100644 index 00000000..b1d772c7 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-sharing-services.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-sharing-services.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-sharing-services.aar.meta new file mode 100644 index 00000000..51294c78 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-sharing-services.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: b40d2224d40c34bdc9809dc0fe132d60 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-social-auth.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-social-auth.aar new file mode 100644 index 00000000..99234df9 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-social-auth.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-social-auth.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-social-auth.aar.meta new file mode 100644 index 00000000..e8f82e93 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-social-auth.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: c3e08b52e1b3446478e3896a94debb63 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-ui-views.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-ui-views.aar new file mode 100644 index 00000000..d9155a54 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-ui-views.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-ui-views.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-ui-views.aar.meta new file mode 100644 index 00000000..38031e18 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-ui-views.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 87ce1f22b5bc44f338d91ffa844256ed +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-utilities.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-utilities.aar new file mode 100644 index 00000000..c98cdffc Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-utilities.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-utilities.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-utilities.aar.meta new file mode 100644 index 00000000..a2d21c0d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-utilities.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 2fa3a0251184f4680b6d8de4ba5414d9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-web-view.aar b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-web-view.aar new file mode 100644 index 00000000..7272f43d Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-web-view.aar differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-web-view.aar.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-web-view.aar.meta new file mode 100644 index 00000000..fb5ff275 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit-web-view.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 8edebb086fe8243d483a86bba8c566e0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib.meta new file mode 100644 index 00000000..e4e2ed04 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 2aca835e6657641efa53b7d8aca01136 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/AndroidManifest.xml b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/AndroidManifest.xml new file mode 100644 index 00000000..b56cc6c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/FindMethodCount.command b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/FindMethodCount.command new file mode 100644 index 00000000..d8c23108 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/FindMethodCount.command @@ -0,0 +1,27 @@ +# Made for Cross Platform Native Plugins 2.0 - Unity Asset Store () +# by VoxelBusters Interactive LLP + +#Usage +#> ./FindMethodCount.command FOLDER_NAME +#ex: ./FindMethodCount.command . +#dx executable can be found in AndroidSDKPath/build tools folder + +echo "*****************************************************************************" +echo "finding method count for each jar" +echo "*****************************************************************************" + +totalMethods=0 +currentMethods=0 + +for i in $(find "$1" -name "*.jar") +do + dx --dex --output=temp.dex $i + currentMethods=$(cat temp.dex | head -c 92 | tail -c 4 | hexdump -e '1/4 "%d "') + printf "%-100s | %-10s \n" "$i" "$currentMethods" + totalMethods=$((totalMethods+currentMethods)) +done +rm temp.dex + +echo "-----------------------------------------------------------------------------" +printf "%-100s | %-10s \n" "Total Method Count" "$totalMethods" +echo "-----------------------------------------------------------------------------" diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/build.gradle b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/build.gradle new file mode 100644 index 00000000..88526d8a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/build.gradle @@ -0,0 +1,39 @@ +apply plugin: 'android-library' + +dependencies { + implementation fileTree(dir: 'bin', include: ['*.jar']) + implementation fileTree(dir: 'libs', include: ['*.jar']) +} + +def getUnityBuildToolsVersion() { + def unityLib = project(':unityLibrary').extensions.getByName('android') + return unityLib.buildToolsVersion +} + +android { + + if (project.android.hasProperty("namespace")) { + namespace "com.voxelbusters.essentialkitplugin" + } + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + //java.srcDirs = ['src'] + res.srcDirs = ['res'] + assets.srcDirs = ['assets'] + jniLibs.srcDirs = ['libs'] + } + } + + compileSdkVersion 35 + buildToolsVersion getUnityBuildToolsVersion() + + defaultConfig { + minSdkVersion 21 + } + + lintOptions { + abortOnError false + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/lint.xml b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/lint.xml new file mode 100644 index 00000000..51241529 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/lint.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/project.properties b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/project.properties new file mode 100644 index 00000000..a7fcf7a5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/project.properties @@ -0,0 +1,15 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-35 +android.library=true diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/drawable/app_icon_custom_coloured.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/drawable/app_icon_custom_coloured.png new file mode 100644 index 00000000..0f2ca97a Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/drawable/app_icon_custom_coloured.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/drawable/app_icon_custom_white.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/drawable/app_icon_custom_white.png new file mode 100644 index 00000000..675e3ef1 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/drawable/app_icon_custom_white.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/values/essential_kit_strings.xml b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/values/essential_kit_strings.xml new file mode 100644 index 00000000..05f318e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/Android/com.voxelbusters.essentialkit.androidlib/res/values/essential_kit_strings.xml @@ -0,0 +1,36 @@ + + Back + Forward + Reload + Done + false + Sign in failed + true + true + true + true + %app_name% uses contacts. + Permission not allowed by the user + content_title + content_text + badge + channel_id + priority + sound + big_picture + large_icon + persistence_id + ticker_text + tag + user_info + notification-identifier + true + false + true + true + true + #FFFFFF + true + true + true + \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS.meta new file mode 100644 index 00000000..6b57e3d2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 33d9207cd4c854ee493abddcfaac97de +folderAsset: yes +timeCreated: 1548160507 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook.meta new file mode 100644 index 00000000..a910eb54 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8fe2d9c74773a4fe5a4a5a8292cdbabd +folderAsset: yes +timeCreated: 1579515897 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/AddressBook.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/AddressBook.asset new file mode 100644 index 00000000..8e2bf245 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/AddressBook.asset @@ -0,0 +1,25 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: AddressBook + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: Contacts.framework + m_target: 4 + m_isOptional: 0 + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/AddressBook.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/AddressBook.asset.meta new file mode 100644 index 00000000..f26a26df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/AddressBook.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f1b2e4ea5f6194ce98bd31633943be30 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookBinding.mm new file mode 100644 index 00000000..38df36ba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookBinding.mm @@ -0,0 +1,59 @@ +// +// NPAddressBookBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPAddressBookDataTypes.h" +#import "NativePluginsContactsWrapper.h" +#import "NPKit.h" + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP CNAuthorizationStatus NPAddressBookGetAuthorizationStatus() +{ + return [NativePluginsContactsWrapper getAuthorizationStatus]; +} + +NPBINDING DONTSTRIP void NPAddressBookReadContacts(NPUnityReadContactsOptionsData optionsData, NPIntPtr tagPtr, ReadContactsNativeCallback callback) +{ + ReadContactsOptions *options = [[ReadContactsOptions alloc] init]; + options.limit = optionsData.limit; + options.offset = optionsData.offset; + options.constraints = (ReadContactsConstraint)optionsData.constraints; + + [NativePluginsContactsWrapper readContacts:options withCallback:^(NSArray *contacts, NSUInteger nextOffset, NSError *error) { + + if (error) + { + // send error info + callback(nil, 0, -1, NPCreateError(error), tagPtr); + return; + } + else + { + // transform data to unity format + int totalContacts = (int)[contacts count]; + NativeAddressBookContactData contactsArray[totalContacts]; + for (int iter = 0; iter < totalContacts; iter++) + { + CNContact* currentContact = [contacts objectAtIndex:iter]; + + // copy info + NativeAddressBookContactData* nativeData = &contactsArray[iter]; + nativeData->CopyProperties(currentContact); + } + + // send data using callback + callback(contactsArray, totalContacts, (int)nextOffset, NPCreateError(nil), tagPtr); + } + }]; +} + +NPBINDING DONTSTRIP void NPAddressBookReset() +{ + NSLog(@"Not implemented."); +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookBinding.mm.meta new file mode 100644 index 00000000..9aad4468 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: f040f2c6d1e1449c0a105a6ed4334cf6 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.h new file mode 100644 index 00000000..1f8e1487 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.h @@ -0,0 +1,56 @@ +// +// NPAddressBookDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPKit.h" + +// callback signatures +typedef void (*ReadContactsNativeCallback)(void* contactsPtr, int count, int nextOffset, NPError error, void* tagPtr); + +// custom datatypes +struct NPUnityAddressBookContact +{ + // data members + void* nativeObjectPtr; + void* firstNamePtr; + void* middleNamePtr; + void* lastNamePtr; + void* imageDataPtr; + int phoneNumberCount; + void* phoneNumbersPtr; + int emailAddressCount; + void* emailAddressesPtr; + void* companyNamePtr; + + // methods + void CopyProperties(CNContact* contact); + + // destructors + ~NPUnityAddressBookContact(); +}; +typedef NPUnityAddressBookContact NativeAddressBookContactData; + + + +typedef enum : NSInteger +{ + NPReadContactsConstraintNone = 0, + NPReadContactsConstraintMustIncludeName = 1, + NPReadContactsConstraintMustIncludePhoneNumber = 2, + NPReadContactsConstraintMustIncludeEmail = 4 +} NPReadContactsConstraint; + + +struct NPUnityReadContactsOptionsData +{ + int limit; + int offset; + NPReadContactsConstraint constraints; +}; +typedef NPUnityReadContactsOptionsData NPUnityReadContactsOptionsData; + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.h.meta new file mode 100644 index 00000000..b5c8f737 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 7bcdfc552d3034536976c2a149f379f4 +timeCreated: 1554462281 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.mm new file mode 100644 index 00000000..9d3ef3df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.mm @@ -0,0 +1,71 @@ +// +// NPAddressBookDataTypes.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPAddressBookDataTypes.h" +#import "NPKit.h" + +static NSCharacterSet* kPhoneNumExcludedCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789+"] invertedSet]; + +void NPUnityAddressBookContact::CopyProperties(CNContact* contact) +{ + // copy phone numbers + NSArray* phoneNumbers = contact.phoneNumbers; + int phoneNumberCount = 0; + char** phoneNumbersCArray = nil; + if (phoneNumbers != NULL) + { + phoneNumberCount = (int)[phoneNumbers count]; + phoneNumbersCArray = (char**)calloc(phoneNumberCount, sizeof(char*)); + for (int iter = 0; iter < phoneNumberCount; iter++) + { + CNLabeledValue* phoneNumber = [phoneNumbers objectAtIndex:iter]; + NSString* rawFormatNumber = [[phoneNumber value] stringValue]; + NSString* formattedNumber = [[rawFormatNumber componentsSeparatedByCharactersInSet:kPhoneNumExcludedCharacterSet] componentsJoinedByString:@""]; + + // add to c-array + phoneNumbersCArray[iter] = NPCreateCStringFromNSString(formattedNumber); + } + } + + // copy email addresses + NSArray* emailAddresses = contact.emailAddresses; + int emailCount = 0; + char** emailCArray = nil; + if (contact.emailAddresses != NULL) + { + emailCount = (int)[emailAddresses count]; + emailCArray = (char**)calloc(emailCount, sizeof(char*)); + for (int iter = 0; iter < emailCount; iter++) + { + CNLabeledValue* emailValue = [emailAddresses objectAtIndex:iter]; + NSString* emailStr = [emailValue value]; + + // add to c-array + emailCArray[iter] = NPCreateCStringFromNSString(emailStr); + } + } + + // set properties + this->nativeObjectPtr = (__bridge void*)contact; + this->firstNamePtr = (void*)NPCreateCStringFromNSString(contact.givenName); + this->middleNamePtr = (void*)NPCreateCStringFromNSString(contact.middleName); + this->lastNamePtr = (void*)NPCreateCStringFromNSString(contact.familyName); + this->imageDataPtr = (__bridge void*)contact.imageData; + this->phoneNumberCount = phoneNumberCount; + this->phoneNumbersPtr = (void*)phoneNumbersCArray; + this->emailAddressCount = emailCount; + this->emailAddressesPtr = (void*)emailCArray; + this->companyNamePtr = (void*)NPCreateCStringFromNSString(contact.organizationName); +} + +NPUnityAddressBookContact::~NPUnityAddressBookContact() +{ + // release c objects + free(phoneNumbersPtr); + free(emailAddressesPtr); +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.mm.meta new file mode 100644 index 00000000..263936c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NPAddressBookDataTypes.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 681e6705c163f43be8dfe74aeaff6c13 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.h new file mode 100644 index 00000000..95c2dc8d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.h @@ -0,0 +1,42 @@ +// +// NativePluginsContactsWrapper.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import + +#define Domain @"Address Book" + +typedef enum : NSInteger +{ + ReadContactsConstraintNone = 0, + ReadContactsConstraintMustIncludeName = 1, + ReadContactsConstraintMustIncludePhoneNumber = 2, + ReadContactsConstraintMustIncludeEmail = 4 +} ReadContactsConstraint; + + +typedef enum : NSInteger +{ + AddressBookErrorCodeUnknown = 0, + AddressBookErrorCodePermissionDenied = 1 +} AddressBookErrorCode; + +@interface ReadContactsOptions : NSObject + +@property (nonatomic) int limit; +@property (nonatomic) int offset; +@property (nonatomic) ReadContactsConstraint constraints; + +@end + + +@interface NativePluginsContactsWrapper : NSObject + ++ (CNAuthorizationStatus)getAuthorizationStatus; ++ (void)readContacts:(ReadContactsOptions*) options withCallback:(void (^)(NSArray *contacts, NSUInteger nextOffset, NSError* error)) callback; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.h.meta new file mode 100644 index 00000000..251658df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: c3bc317123e87489aa691c263d2dda7e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.mm new file mode 100644 index 00000000..353649a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.mm @@ -0,0 +1,201 @@ +// +// NativePluginsContactsWrapper.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NativePluginsContactsWrapper.h" +#import "NSError+Utility.h" + +// static fields +static CNContactStore* _contactStore = nil; + + +@implementation ReadContactsOptions +@end + +@implementation NativePluginsContactsWrapper + ++ (CNContactStore*)getContactStore +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _contactStore = [[CNContactStore alloc] init]; + }); + return _contactStore; +} + ++ (CNAuthorizationStatus)getAuthorizationStatus +{ + return [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]; +} + ++ (void)requestContactsAccess:(void (^) (CNAuthorizationStatus status, NSError* error)) callback +{ + [[NativePluginsContactsWrapper getContactStore] requestAccessForEntityType:CNEntityTypeContacts + completionHandler:^(BOOL granted, NSError* __nullable error) { + // send callback + CNAuthorizationStatus newStatus = [NativePluginsContactsWrapper getAuthorizationStatus]; + + + NSError* resolvedError = error == nil ? nil : [NSError createWithDomain:Domain + withCode:AddressBookErrorCodeUnknown + withDescription: error.localizedDescription]; + + callback(newStatus, resolvedError); + }]; +} + ++ (BOOL)isAuthorized:(CNAuthorizationStatus) status +{ + if (@available(iOS 18.0, *)) { + return (status == CNAuthorizationStatusAuthorized || status == CNAuthorizationStatusLimited); + } else { + return status == CNAuthorizationStatusAuthorized; + } +} + ++ (void)readContacts:(ReadContactsOptions*) options withCallback:(void (^)(NSArray *contacts, NSUInteger nextOffset, NSError* error)) callback +{ + [NativePluginsContactsWrapper requestContactsAccess:^(CNAuthorizationStatus status, NSError *error) { + if([NativePluginsContactsWrapper isAuthorized: status]) { + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NativePluginsContactsWrapper fetchContactsInternal: options withCallback:^(NSArray *contacts, NSUInteger nextOffset, NSError *error) { + [NativePluginsContactsWrapper hasMoreContacts:nextOffset withConstraints: options.constraints withCallback:^(BOOL hasMore) { + callback(contacts, hasMore ? nextOffset : -1, error); + }]; + }]; + }); + } + else { + NSLog(@"Read contacts failed due to permission status %ld", status); + + NSError *resolvedError = error; + + if(resolvedError == nil) { + + resolvedError = [NSError createWithDomain: Domain + withCode: status == CNAuthorizationStatusDenied ? AddressBookErrorCodePermissionDenied : AddressBookErrorCodeUnknown + withDescription: @"Failed due to permission"]; + } + + callback(nil, -1, resolvedError); + } + }]; + +} + ++ (void)fetchContactsInternal:(ReadContactsOptions*) options withCallback:(void (^)(NSArray *contacts, NSUInteger nextOffset, NSError* error)) callback +{ + CNContactStore* contactStore = [NativePluginsContactsWrapper getContactStore]; + NSMutableArray* contacts = [NSMutableArray array]; + bool finished = false; + NSError* error = nil; + CNContactFetchRequest* fetchRequest = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[CNContactIdentifierKey]]; + [fetchRequest setUnifyResults:YES]; + [fetchRequest setSortOrder:CNContactSortOrderGivenName]; + + __block NSUInteger resultCount = 0; + __block NSUInteger nextOffset = 0; + + do + { + finished = [contactStore enumerateContactsWithFetchRequest:fetchRequest + error:&error + usingBlock:^(CNContact* _Nonnull contact, BOOL * _Nonnull stop) { + + nextOffset++; + + //Skip until we are at next offset + if(nextOffset <= options.offset) + { + return; + } + + NSArray *keysToFetch = @[CNContactGivenNameKey, + CNContactMiddleNameKey, + CNContactFamilyNameKey, + CNContactImageDataKey, + CNContactPhoneNumbersKey, + CNContactEmailAddressesKey, + CNContactOrganizationNameKey]; + + NSError *detailedFetchError = nil; + CNContact *detailedContact = [contactStore unifiedContactWithIdentifier:contact.identifier keysToFetch:keysToFetch error:&detailedFetchError]; + + if(detailedContact && [self hasRequiredKeys:detailedContact forConstraints:options.constraints]) + { + [contacts addObject:detailedContact]; + resultCount++; + } + + if(resultCount >= options.limit) + { + *stop = TRUE; + } + }]; + + } while (!finished); + + if(resultCount < options.limit) + nextOffset = -1; + + NSError* resolvedError = error == nil ? nil : [NSError createWithDomain:Domain + withCode:AddressBookErrorCodeUnknown + withDescription: error.localizedDescription]; + + callback(contacts, nextOffset, resolvedError); +} + ++(BOOL) hasRequiredKeys:(CNContact*) contact forConstraints:(ReadContactsConstraint) constraints +{ + if(constraints == ReadContactsConstraintNone) + return TRUE; + + if((constraints & ReadContactsConstraintMustIncludeName) != 0) + { + NSString *givenName = [contact givenName]; + NSString *middleName = [contact middleName]; + NSString *familyName = [contact familyName]; + + if([givenName length] == 0 && [middleName length] == 0 && [familyName length] == 0) + return FALSE; + } + + if((constraints & ReadContactsConstraintMustIncludePhoneNumber) != 0) + { + if([contact.phoneNumbers count] == 0) + return FALSE; + } + + if((constraints & ReadContactsConstraintMustIncludeEmail) != 0) + { + if([contact.emailAddresses count] == 0) + return FALSE; + } + + return TRUE; +} + ++(void) hasMoreContacts:(NSUInteger) offset withConstraints:(ReadContactsConstraint) constraints withCallback:(void (^)(BOOL hasMore)) callback +{ + if(offset == -1) + { + callback(FALSE); + return; + } + + ReadContactsOptions *options = [[ReadContactsOptions alloc] init]; + options.limit = 1; + options.constraints = constraints; + options.offset = (int)offset; + + [NativePluginsContactsWrapper fetchContactsInternal: options withCallback:^(NSArray *contacts, NSUInteger nextOffset, NSError *error) { + callback(nextOffset == -1 ? FALSE : TRUE); + }]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.mm.meta new file mode 100644 index 00000000..7ae3651b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AddressBook/NativePluginsContactsWrapper.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: fdac82da92681470686cf536a7d7ef0c +timeCreated: 1554462281 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater.meta new file mode 100644 index 00000000..93268953 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1a8071ba21a7a406f8a00b9502028118 +folderAsset: yes +timeCreated: 1579516065 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/AppUpdater.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/AppUpdater.asset new file mode 100644 index 00000000..e08b7732 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/AppUpdater.asset @@ -0,0 +1,22 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: AppUpdater + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: [] + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/AppUpdater.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/AppUpdater.asset.meta new file mode 100644 index 00000000..dd966bcc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/AppUpdater.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a5aed2eef36b4493a07086e456f20aa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.h new file mode 100644 index 00000000..027b2aad --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.h @@ -0,0 +1,54 @@ +// +// NPAppUpdater.h +// Essential Kit +// +// Created by Ayyappa on 09/09/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. + +#define Domain @"App Updater" + +typedef enum : NSInteger +{ + AppUpdateStatusTypeUnknown, + AppUpdateStatusTypeAvailable, + AppUpdateStatusTypeNotAvailable, + AppUpdateStatusTypeInProgress, + AppUpdateStatusTypeDownloaded, +} AppUpdateStatusType; + +typedef enum : NSInteger +{ + AppUpdaterErrorCodeUnknown, + AppUpdaterErrorCodeNetworkIssue, + AppUpdaterErrorCodeUpdateNotCompatible, + AppUpdaterErrorCodeUpdateInfoNotAvaialble, + AppUpdaterErrorCodeUpdateNotAvailable, + AppUpdaterErrorCodeUpdateInProgress, + AppUpdaterErrorCodeUpdateCancelled +} AppUpdaterErrorCode; + + +@interface AppUpdateStatusInfo : NSObject +@property (nonatomic) AppUpdateStatusType status; +@end + + +@interface PromptUpdateOptions : NSObject +@property (nonatomic) BOOL isForceUpdate; +@property (strong, nonatomic) NSString* title; +@property (strong, nonatomic) NSString* message; +@property (nonatomic) BOOL allowInstallationIfDownloaded; +@end + +@interface NPAppUpdater : NSObject + +@property (strong, nonatomic) NSString* appId; + + +-(NPAppUpdater*) initWithAppId:(NSString*) appId; + +-(void) requestUpdateInfo:(void (^) (AppUpdateStatusInfo* info, NSError* error)) callback; + +-(void) promptUpdate:(PromptUpdateOptions*) options withCallback:(void (^) (float progress, NSError* error)) callback; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.h.meta new file mode 100644 index 00000000..4669ba0b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: a27484c1c990d49b8b0223d911dfdec9 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.mm new file mode 100644 index 00000000..8bc1328f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.mm @@ -0,0 +1,169 @@ +// +// NPAppUpdater.mm +// Essential Kit +// +// Created by Ayyappa on 09/09/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. + +#import "NPKit.h" +#import "NPAppUpdater.h" +#import "UnityInterface.h" +#import "UIViewController+Presentation.h" +#import "NSError+Utility.h" + +@implementation AppUpdateStatusInfo +@end + +@implementation PromptUpdateOptions +@end + +@interface NPAppUpdater () + +@property(nonatomic, strong) AppUpdateStatusInfo* cachedStatusInfo; + +@end + +@implementation NPAppUpdater + +@synthesize appId; +@synthesize cachedStatusInfo; + +-(NPAppUpdater*) initWithAppId:(NSString*) appId +{ + + self = [super init]; + self.appId = appId; + + return self; +} + +-(void) requestUpdateInfo:(void (^) (AppUpdateStatusInfo* info, NSError* error)) callback +{ + //Do a request to itunes connect and fire the callback with status accordingly. + // Need to check the os version is also compatible with the update + NSString* lookupUrlString = [NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@", self.appId]; + NSURL* url = [NSURL URLWithString:lookupUrlString]; + NSString* currentAppVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"]; + NSString* currentSystemVersion = UIDevice.currentDevice.systemVersion; + + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ + NSError *error = nil; + NSData* urlData = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&error]; + NSDictionary* json = (error != nil || urlData == nil) ? nil : [NSJSONSerialization JSONObjectWithData:urlData options:0 error:nil]; + NSArray* results = (json == nil) ? nil : json[@"results"]; + + if(json != nil && [results count] > 0) + { + NSDictionary* result = [results objectAtIndex:0]; + NSString* newVersion = result[@"version"]; + NSString* minimumOsVersionRequired = result[@"minimumOsVersion"]; + + AppUpdateStatusInfo *info = [[AppUpdateStatusInfo alloc] init]; + + if([currentSystemVersion compare:minimumOsVersionRequired options:NSNumericSearch] == NSOrderedAscending) + { + NSError *resolvedError = [NSError createWithDomain:Domain withCode:AppUpdaterErrorCodeUpdateNotCompatible withDescription:@"Device needs an update to download latest version."]; + callback(nil, resolvedError); + } + else if([currentAppVersion compare:newVersion options:NSNumericSearch] == NSOrderedAscending) + { + info.status = AppUpdateStatusTypeAvailable; + callback(info, nil); + } + else + { + info.status = AppUpdateStatusTypeNotAvailable; + callback(info, nil); + } + + self.cachedStatusInfo = info; + } + else + { + NSLog(@"Error when fetching url %@ : %@", url, error); + + NSError *resolvedError = [NSError createWithDomain:Domain + withCode:error != nil ? AppUpdaterErrorCodeNetworkIssue : AppUpdaterErrorCodeUnknown + withDescription:error != nil ? [error localizedDescription] : @"Unknown error"]; + + callback(nil, resolvedError); + } + }); +} + + + +-(void) promptUpdate:(PromptUpdateOptions*) options withCallback:(void (^) (float progress, NSError* error)) callback +{ + NSString* appId = self.appId; + + if(self.cachedStatusInfo == nil) + { + [self requestUpdateInfo:^(AppUpdateStatusInfo *info, NSError *error) { + [self promptUpdateInternal:info withAppId: appId callback:callback options:options]; + }]; + } + else + { + [self promptUpdateInternal:self.cachedStatusInfo withAppId:appId callback:callback options:options]; + } +} + +- (void)promptUpdateInternal:(AppUpdateStatusInfo*) statusInfo withAppId:(NSString *)appId callback:(void (^)(float, NSError *))callback options:(PromptUpdateOptions *)options { + + if(statusInfo.status != AppUpdateStatusTypeAvailable) + { + NSError *resolvedError = [NSError createWithDomain:Domain withCode:AppUpdaterErrorCodeUpdateNotAvailable withDescription:@"No update available."]; + if(callback != nil) + { + callback(0.0f, resolvedError); + } + return; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + + UIAlertController* alert = [UIAlertController alertControllerWithTitle:options.title + message:options.message + preferredStyle:UIAlertControllerStyleAlert]; + + UIAlertAction* updateAction = [UIAlertAction actionWithTitle:@"Update" style:UIAlertActionStyleDefault + handler:^(UIAlertAction * action) { + + + NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@", appId]]; + + [UIApplication.sharedApplication openURL:url options:@{} completionHandler:nil]; + + if(callback != nil) + { + callback(0.0f, nil); + } + + if(options.isForceUpdate) //Enforce the alert again. + { + [self promptUpdate:options withCallback:callback]; + } + }]; + + [alert addAction:updateAction]; + + if(!options.isForceUpdate) + { + UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel + handler:^(UIAlertAction * action) { + if(callback != nil) + { + NSError *resolvedError = [NSError createWithDomain:Domain withCode:AppUpdaterErrorCodeUpdateCancelled withDescription:@"Update cancelled."]; + callback(0.0f, resolvedError); + } + }]; + [alert addAction:cancelAction]; + } + + [UnityGetGLViewController() presentViewController:alert animated:YES completion:nil]; + }); +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.mm.meta new file mode 100644 index 00000000..d921d9df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdater.mm.meta @@ -0,0 +1,85 @@ +fileFormatVersion: 2 +guid: 6b6b48bc6b4e942108bb255f0ce0bd02 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterBinding.mm new file mode 100644 index 00000000..84041fd1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterBinding.mm @@ -0,0 +1,42 @@ +// +// NPAppUpdaterBinding.mm +// Essential Kit +// +// Created by Ayyappa on 09/09/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. + +#import "NPKit.h" +#import "NPAppUpdaterDataTypes.h" +#import "NPAppUpdater.h" + +static NPAppUpdater* cachedAppUpdater; + +NPBINDING DONTSTRIP void NPAppUpdaterCreate(const char* appId) +{ + cachedAppUpdater = [[NPAppUpdater alloc] initWithAppId:NPCreateNSStringFromCString(appId)]; +} + +NPBINDING DONTSTRIP void NPAppUpdaterRequestUpdateInfo(void* tagPtr, RequestUpdateInfoNativeCallback callback) +{ + [cachedAppUpdater requestUpdateInfo:^(AppUpdateStatusInfo *info, NSError *error) { + + NativeAppUpdaterUpdateInfoData infoData; + infoData.status = (NPAppUpdaterUpdateStatus)info.status; + + callback(infoData, NPCreateError(error), tagPtr); + }]; +} + +NPBINDING DONTSTRIP void NPAppUpdaterPromptUpdate(NativeAppUpdaterPromptUpdateOptionsData nativeOptions, void* tagPtr, PromptUpdateNativeCallback callback) +{ + PromptUpdateOptions *options = [[PromptUpdateOptions alloc] init]; + options.isForceUpdate = nativeOptions.isForceUpdate; + options.title = NPCreateNSStringFromCString(nativeOptions.title); + options.message = NPCreateNSStringFromCString(nativeOptions.message); + options.allowInstallationIfDownloaded = nativeOptions.allowInstallationIfDownloaded; + + [cachedAppUpdater promptUpdate:options + withCallback:^(float progress, NSError *error) { + callback(progress, NPCreateError(error), tagPtr); + }]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterBinding.mm.meta new file mode 100644 index 00000000..6dfeb0a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: cf9c4057858b84fdbafbe54e502e6988 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterDataTypes.h new file mode 100644 index 00000000..cc23efbc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterDataTypes.h @@ -0,0 +1,41 @@ +// +// NPAppUpdaterDataTypes.h +// Essential Kit +// +// Created by Ayyappa on 09/09/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. + + +#import "NPKit.h" + +typedef enum : NSInteger +{ + NPAppUpdaterUpdateStatusUnknown = 0, + NPAppUpdaterUpdateStatusAvailable = 1, + NPAppUpdaterUpdateStatusNotAvailable = 2, + NPAppUpdaterUpdateStatusInProgress = 3 + +} NPAppUpdaterUpdateStatus; + + +struct NativeAppUpdaterUpdateInfoData +{ + NPAppUpdaterUpdateStatus status; +}; +typedef NativeAppUpdaterUpdateInfoData NativeAppUpdaterUpdateInfoData; + +struct NativeAppUpdaterPromptUpdateOptionsData +{ + BOOL isForceUpdate; + const char* title; + const char* message; + BOOL allowInstallationIfDownloaded; +}; +typedef NativeAppUpdaterPromptUpdateOptionsData NativeAppUpdaterPromptUpdateOptionsData; + + +// callback signatures +typedef void (*RequestUpdateInfoNativeCallback)(NativeAppUpdaterUpdateInfoData info, NPError error, void* tagPtr); +typedef void (*PromptUpdateNativeCallback)(float progress, NPError error, void* tagPtr); + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterDataTypes.h.meta new file mode 100644 index 00000000..3147061b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/AppUpdater/NPAppUpdaterDataTypes.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: fd54d3e8264fd4d65a6ee8f948e6ddfe +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices.meta new file mode 100644 index 00000000..494694ed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6fcf9220ce6e34da999861bafd49c6cd +folderAsset: yes +timeCreated: 1578816519 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/BillingServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/BillingServices.asset new file mode 100644 index 00000000..5f029188 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/BillingServices.asset @@ -0,0 +1,28 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: BillingServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: StoreKit.framework + m_target: 5 + m_isOptional: 0 + m_capabilities: + - m_type: 2 + m_associatedDomainsEntitlement: + m_domains: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/BillingServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/BillingServices.asset.meta new file mode 100644 index 00000000..60703892 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/BillingServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 414a7d1ec84164a8a80b12a37b2fe0d1 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks.meta new file mode 100644 index 00000000..b2b80b81 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10ffead81c49c4a1882cc795f81f4add +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework.meta new file mode 100644 index 00000000..b0ab632c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: da1d092ff2b6644728f6107739321cf2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/BillingServices b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/BillingServices new file mode 100644 index 00000000..5aea00b7 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/BillingServices differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Headers/BillingServices-Swift.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Headers/BillingServices-Swift.h new file mode 100644 index 00000000..89623c0b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Headers/BillingServices-Swift.h @@ -0,0 +1,963 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 6.0.2 effective-5.10 (swiftlang-6.0.2.1.2 clang-1600.0.26.4) +#ifndef BILLINGSERVICES_SWIFT_H +#define BILLINGSERVICES_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#pragma clang diagnostic pop +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" +#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="BillingServices",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +enum BillingPeriodUnit : NSInteger; + +SWIFT_CLASS("_TtC15BillingServices13BillingPeriod") +@interface BillingPeriod : NSObject +@property (nonatomic, readonly) double duration; +@property (nonatomic, readonly) enum BillingPeriodUnit unit; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +typedef SWIFT_ENUM(NSInteger, BillingPeriodUnit, closed) { + BillingPeriodUnitDay = 0, + BillingPeriodUnitWeek = 1, + BillingPeriodUnitMonth = 2, + BillingPeriodUnitYear = 3, +}; + +@class NSString; + +SWIFT_CLASS("_TtC15BillingServices12BillingPrice") +@interface BillingPrice : NSObject +@property (nonatomic, readonly) double value; +@property (nonatomic, readonly, copy) NSString * _Nonnull currencyCode; +@property (nonatomic, readonly, copy) NSString * _Nonnull currencySymbol; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedDisplay; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@class BillingProductSubscriptionInfo; +@class BillingProductOffer; + +SWIFT_CLASS("_TtC15BillingServices14BillingProduct") +@interface BillingProduct : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedTitle; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedDescription; +@property (nonatomic, readonly, strong) BillingPrice * _Nonnull price; +@property (nonatomic, readonly, strong) BillingProductSubscriptionInfo * _Nullable subscriptionInfo; +@property (nonatomic, readonly, copy) NSArray * _Nonnull offers; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +SWIFT_CLASS("_TtC15BillingServices24BillingProductDefinition") +@interface BillingProductDefinition : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +- (nonnull instancetype)initWithIdentifier:(NSString * _Nonnull)identifier OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +enum BillingProductOfferCategory : NSInteger; +@class BillingProductOfferPricingPhase; + +SWIFT_CLASS("_TtC15BillingServices19BillingProductOffer") +@interface BillingProductOffer : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +@property (nonatomic, readonly) enum BillingProductOfferCategory category; +@property (nonatomic, readonly, copy) NSArray * _Nonnull pricingPhases; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +typedef SWIFT_ENUM(NSInteger, BillingProductOfferCategory, closed) { + BillingProductOfferCategoryUnknown = 0, + BillingProductOfferCategoryIntroductory = 1, + BillingProductOfferCategoryPromotional = 2, + BillingProductOfferCategoryCode = 3, +}; + +typedef SWIFT_ENUM(NSInteger, BillingProductOfferPaymentMode, closed) { + BillingProductOfferPaymentModeUnknown = 0, + BillingProductOfferPaymentModeFreeTrial = 1, + BillingProductOfferPaymentModePayAsYouGo = 2, + BillingProductOfferPaymentModePayUpFront = 3, +}; + + +SWIFT_CLASS("_TtC15BillingServices31BillingProductOfferPricingPhase") +@interface BillingProductOfferPricingPhase : NSObject +@property (nonatomic, readonly) enum BillingProductOfferPaymentMode paymentMode; +@property (nonatomic, readonly, strong) BillingPrice * _Nonnull price; +@property (nonatomic, readonly, strong) BillingPeriod * _Nonnull period; +@property (nonatomic, readonly) NSInteger repeatCount; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@class NSUUID; +@class NSData; + +SWIFT_CLASS("_TtC15BillingServices32BillingProductOfferRedeemDetails") +@interface BillingProductOfferRedeemDetails : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull offerId; +@property (nonatomic, readonly, copy) NSString * _Nonnull keyId; +@property (nonatomic, readonly, copy) NSUUID * _Nonnull nonce; +@property (nonatomic, readonly, copy) NSData * _Nonnull signature; +@property (nonatomic, readonly) NSInteger timestamp; +- (nonnull instancetype)initWithOfferId:(NSString * _Nonnull)offerId keyId:(NSString * _Nonnull)keyId nonce:(NSUUID * _Nonnull)nonce signature:(NSData * _Nonnull)signature timestamp:(NSInteger)timestamp OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +typedef SWIFT_ENUM(NSInteger, BillingProductOwnershipType, closed) { + BillingProductOwnershipTypeNone = 0, + BillingProductOwnershipTypeUnknown = 1, + BillingProductOwnershipTypeBuyer = 2, + BillingProductOwnershipTypeFamilyShared = 3, +}; + +typedef SWIFT_ENUM(NSInteger, BillingProductRenewalState, closed) { + BillingProductRenewalStateUnknown = 0, + BillingProductRenewalStateSubscribed = 1, + BillingProductRenewalStateExpired = 2, + BillingProductRenewalStateInBillingRetryPeriod = 3, + BillingProductRenewalStateInGracePeriod = 4, + BillingProductRenewalStateRevoked = 5, +}; + +typedef SWIFT_ENUM(NSInteger, BillingProductRevocationReason, closed) { + BillingProductRevocationReasonNone = 0, + BillingProductRevocationReasonUnknown = 1, + BillingProductRevocationReasonDeveloperIssue = 2, +}; + +typedef SWIFT_ENUM(NSInteger, BillingProductSubscriptionExpirationReason, closed) { + BillingProductSubscriptionExpirationReasonNone = 0, + BillingProductSubscriptionExpirationReasonUnknown = 1, + BillingProductSubscriptionExpirationReasonAutoRenewDisabled = 2, + BillingProductSubscriptionExpirationReasonBillingError = 3, + BillingProductSubscriptionExpirationReasonDidNotConsentToPriceIncrease = 4, + BillingProductSubscriptionExpirationReasonProductUnavailable = 5, +}; + + +SWIFT_CLASS("_TtC15BillingServices30BillingProductSubscriptionInfo") +@interface BillingProductSubscriptionInfo : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull groupIdentifier; +@property (nonatomic, readonly, copy) NSString * _Nonnull groupDisplayName; +@property (nonatomic, readonly) NSInteger level; +@property (nonatomic, readonly, strong) BillingPeriod * _Nonnull period; +@property (nonatomic, readonly) BOOL isEligibleForIntroductoryOffer; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +typedef SWIFT_ENUM(NSInteger, BillingProductSubscriptionPriceIncreaseStatus, closed) { + BillingProductSubscriptionPriceIncreaseStatusUnknown = 0, + BillingProductSubscriptionPriceIncreaseStatusNoIncreasePending = 1, + BillingProductSubscriptionPriceIncreaseStatusAgreed = 2, + BillingProductSubscriptionPriceIncreaseStatusPending = 3, +}; + +@class NSDate; + +SWIFT_CLASS("_TtC15BillingServices37BillingProductSubscriptionRenewalInfo") +@interface BillingProductSubscriptionRenewalInfo : NSObject +@property (nonatomic, readonly) enum BillingProductRenewalState state; +@property (nonatomic, readonly, copy) NSString * _Nullable applicableOfferIdentifier; +@property (nonatomic, readonly) enum BillingProductOfferCategory applicableOfferType; +@property (nonatomic, readonly, copy) NSDate * _Nullable lastRenewedDate; +@property (nonatomic, readonly, copy) NSString * _Nullable lastRenewalId; +@property (nonatomic, readonly) BOOL isAutoRenewEnabled; +@property (nonatomic, readonly) enum BillingProductSubscriptionExpirationReason expirationReason; +@property (nonatomic, readonly, copy) NSDate * _Nullable renewalDate; +@property (nonatomic, readonly, copy) NSDate * _Nullable gracePeriodExpirationDate; +@property (nonatomic, readonly) enum BillingProductSubscriptionPriceIncreaseStatus priceIncreaseStatus; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +SWIFT_CLASS("_TtC15BillingServices32BillingProductSubscriptionStatus") +@interface BillingProductSubscriptionStatus : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull groupIdentifier; +@property (nonatomic, readonly, strong) BillingProductSubscriptionRenewalInfo * _Nullable renewalInfo; +@property (nonatomic, readonly, copy) NSDate * _Nullable expirationDate; +@property (nonatomic, readonly) BOOL isUpgraded; +@property (nonatomic, readonly, copy) NSString * _Nullable appliedOfferIdentifier; +@property (nonatomic, readonly) enum BillingProductOfferCategory appliedOfferType; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +typedef SWIFT_ENUM(NSInteger, BillingProductType, closed) { + BillingProductTypeConsumable = 0, + BillingProductTypeNonConsumable = 1, + BillingProductTypeNonRenewable = 2, + BillingProductTypeAutoRenewable = 3, +}; + +@class BillingServicesInitializeStoreResult; +@class NSError; +@class BillingServicesTransactionStateChangeResult; +@class BillingServicesRestorePurchasesResult; + +SWIFT_PROTOCOL("_TtP15BillingServices23BillingServicesDelegate_") +@protocol BillingServicesDelegate +@optional +- (void)didInitializeStoreCompleteWithResult:(BillingServicesInitializeStoreResult * _Nonnull)result error:(NSError * _Nullable)error; +- (void)didTransactionStateChangeWithResult:(BillingServicesTransactionStateChangeResult * _Nonnull)result; +- (void)didRestorePurchasesCompleteWithResult:(BillingServicesRestorePurchasesResult * _Nonnull)result error:(NSError * _Nullable)error; +@end + +typedef SWIFT_ENUM(NSInteger, BillingServicesEnvironment, closed) { + BillingServicesEnvironmentUnknown = 0, + BillingServicesEnvironmentProduction = 1, + BillingServicesEnvironmentSandbox = 2, + BillingServicesEnvironmentLocal = 3, +}; + +typedef SWIFT_ENUM(NSInteger, BillingServicesErrorCode, closed) { + BillingServicesErrorCodeUnknown = 0, + BillingServicesErrorCodeNetworkError = 1, + BillingServicesErrorCodeSystemError = 2, + BillingServicesErrorCodeBillingNotAvailable = 3, + BillingServicesErrorCodeStoreNotInitialized = 4, + BillingServicesErrorCodeStoreIsBusy = 5, + BillingServicesErrorCodeUserCancelled = 6, + BillingServicesErrorCodeOfferNotApplicable = 7, + BillingServicesErrorCodeOfferNotValid = 8, + BillingServicesErrorCodeQuantityNotValid = 9, + BillingServicesErrorCodeProductNotAvailable = 10, + BillingServicesErrorCodeProductOwned = 11, + BillingServicesErrorCodeFeatureNotAvailable = 12, +}; + + +SWIFT_CLASS("_TtC15BillingServices36BillingServicesInitializeStoreResult") +@interface BillingServicesInitializeStoreResult : NSObject +@property (nonatomic, readonly, copy) NSArray * _Nonnull products; +@property (nonatomic, readonly, copy) NSArray * _Nonnull invalidProductDefinitions; +- (nonnull instancetype)initWithProducts:(NSArray * _Nonnull)products invalidProductDefinitions:(NSArray * _Nonnull)invalidProductDefinitions OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@class BillingTransaction; + +SWIFT_CLASS("_TtC15BillingServices37BillingServicesRestorePurchasesResult") +@interface BillingServicesRestorePurchasesResult : NSObject +@property (nonatomic, readonly, copy) NSArray * _Nullable transactions; +- (nonnull instancetype)initWithTransactions:(NSArray * _Nullable)transactions OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +SWIFT_CLASS("_TtC15BillingServices23BillingServicesSettings") +@interface BillingServicesSettings : NSObject +@property (nonatomic, readonly) BOOL autoFinishTransactions; +- (nonnull instancetype)initWithAutoFinishTransactions:(BOOL)autoFinishTransactions OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@class BuyProductOptions; + +SWIFT_CLASS("_TtC15BillingServices37BillingServicesStoreKitImplementation") +@interface BillingServicesStoreKitImplementation : NSObject +@property (nonatomic, strong) BillingServicesSettings * _Nonnull settings; +@property (nonatomic, strong) id _Nullable delegate; +- (nonnull instancetype)initWithSettings:(BillingServicesSettings * _Nonnull)settings delegate:(id _Nullable)delegate OBJC_DESIGNATED_INITIALIZER; +- (BOOL)isAvailable SWIFT_WARN_UNUSED_RESULT; +- (BOOL)canMakePayments SWIFT_WARN_UNUSED_RESULT; +- (BOOL)isProductPurchased:(NSString * _Nonnull)productId SWIFT_WARN_UNUSED_RESULT; +- (void)initializeStore:(NSArray * _Nonnull)productDefinitions; +- (NSError * _Nullable)buyProduct:(NSString * _Nonnull)productId :(BuyProductOptions * _Nullable)options SWIFT_WARN_UNUSED_RESULT; +- (void)restorePurchases:(BOOL)forceRefresh :(NSString * _Nullable)tag; +- (NSArray * _Nonnull)getUnfinishedTransactions SWIFT_WARN_UNUSED_RESULT; +- (void)tryClearingUnfinishedTransactions; +- (void)finishTransactions:(NSArray * _Nonnull)transactions; +- (BillingProduct * _Nullable)getProductWithId:(NSString * _Nonnull)id SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_CLASS("_TtC15BillingServices43BillingServicesTransactionStateChangeResult") +@interface BillingServicesTransactionStateChangeResult : NSObject +@property (nonatomic, readonly, copy) NSArray * _Nonnull transactions; +- (nonnull instancetype)initWithTransactions:(NSArray * _Nonnull)transactions OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +enum BillingTransactionState : NSInteger; + +SWIFT_CLASS("_TtC15BillingServices18BillingTransaction") +@interface BillingTransaction : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +@property (nonatomic, readonly, copy) NSDate * _Nonnull date; +@property (nonatomic, readonly) enum BillingTransactionState state; +@property (nonatomic, readonly) enum BillingServicesEnvironment environment; +@property (nonatomic, readonly, copy) NSString * _Nullable receipt; +@property (nonatomic, readonly, copy) NSString * _Nonnull applicationBundleIdentifier; +@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; +@property (nonatomic, readonly) enum BillingProductType productType; +@property (nonatomic, readonly) NSInteger requestedQuantity; +@property (nonatomic, readonly) NSInteger purchasedQuantity; +@property (nonatomic, readonly) enum BillingProductOwnershipType ownershipType; +@property (nonatomic, readonly, copy) NSDate * _Nullable revocationDate; +@property (nonatomic, readonly) enum BillingProductRevocationReason revocationReason; +@property (nonatomic, readonly, strong) BillingProductSubscriptionStatus * _Nullable subscriptionStatus; +@property (nonatomic, readonly, copy) NSString * _Nullable purchaseTag; +@property (nonatomic, readonly, copy) NSString * _Nullable rawData; +@property (nonatomic, readonly, strong) NSError * _Nullable error; +- (void)finish; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +typedef SWIFT_ENUM(NSInteger, BillingTransactionState, closed) { + BillingTransactionStateUnknown = 0, + BillingTransactionStatePurchasing = 1, + BillingTransactionStatePurchased = 2, + BillingTransactionStateFailed = 3, + BillingTransactionStateRestored = 4, + BillingTransactionStateDeferred = 5, + BillingTransactionStateRefunded = 6, +}; + + +SWIFT_CLASS("_TtC15BillingServices17BuyProductOptions") +@interface BuyProductOptions : NSObject +@property (nonatomic, readonly) NSInteger quantity; +@property (nonatomic, readonly, copy) NSUUID * _Nullable tag; +@property (nonatomic, readonly, strong) BillingProductOfferRedeemDetails * _Nullable offerRedeemDetails; +- (nonnull instancetype)initWithQuantity:(NSInteger)quantity tag:(NSUUID * _Nullable)tag offerRedeemDetails:(BillingProductOfferRedeemDetails * _Nullable)offerRedeemDetails OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +// Allow user to find the header using additional include paths +#if __has_include() +#include +// Look for the C++ interop support header relative to clang's resource dir: +// '/usr/lib/clang//include/../../../swift/swiftToCxx'. +#elif __has_include(<../../../swift/swiftToCxx/_SwiftCxxInteroperability.h>) +#include <../../../swift/swiftToCxx/_SwiftCxxInteroperability.h> +#elif __has_include(<../../../../../lib/swift/swiftToCxx/_SwiftCxxInteroperability.h>) +// '/usr/local/lib/clang//include/../../../../../lib/swift/swiftToCxx'. +#include <../../../../../lib/swift/swiftToCxx/_SwiftCxxInteroperability.h> +#endif +#pragma clang diagnostic pop +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +#endif + +#ifdef SWIFT_SYMBOL +#undef SWIFT_SYMBOL +#endif +#define SWIFT_SYMBOL(usrValue) SWIFT_SYMBOL_MODULE_USR("BillingServices", usrValue) +#ifndef SWIFT_PRINTED_CORE +#define SWIFT_PRINTED_CORE +namespace swift SWIFT_PRIVATE_ATTR { + +namespace _impl { + +#ifdef __cplusplus +extern "C" { +#endif + +// Swift type metadata response type. +struct MetadataResponseTy { + void * _Null_unspecified _0; + uint64_t _1; +}; +// Swift type metadata request type. +typedef uint64_t MetadataRequestTy; + +#if __cplusplus > 201402L +# define SWIFT_NOEXCEPT_FUNCTION_PTR noexcept +#else +# define SWIFT_NOEXCEPT_FUNCTION_PTR +#endif + +using ValueWitnessInitializeBufferWithCopyOfBufferTy = void * _Nonnull(* __ptrauth_swift_value_witness_function_pointer(55882))(void * _Nonnull, void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using ValueWitnessDestroyTy = void(* __ptrauth_swift_value_witness_function_pointer(1272))(void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using ValueWitnessInitializeWithCopyTy = void * _Nonnull(* __ptrauth_swift_value_witness_function_pointer(58298))(void * _Nonnull, void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using ValueWitnessAssignWithCopyTy = void * _Nonnull(* __ptrauth_swift_value_witness_function_pointer(34641))(void * _Nonnull, void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using ValueWitnessInitializeWithTakeTy = void * _Nonnull(* __ptrauth_swift_value_witness_function_pointer(18648))(void * _Nonnull, void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using ValueWitnessAssignWithTakeTy = void * _Nonnull(* __ptrauth_swift_value_witness_function_pointer(61402))(void * _Nonnull, void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using ValueWitnessGetEnumTagSinglePayloadTy = unsigned(* __ptrauth_swift_value_witness_function_pointer(24816))(const void * _Nonnull, unsigned, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using ValueWitnessStoreEnumTagSinglePayloadTy = void(* __ptrauth_swift_value_witness_function_pointer(41169))(void * _Nonnull, unsigned, unsigned, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; + +struct ValueWitnessTable { + ValueWitnessInitializeBufferWithCopyOfBufferTy _Nonnull initializeBufferWithCopyOfBuffer; + ValueWitnessDestroyTy _Nonnull destroy; + ValueWitnessInitializeWithCopyTy _Nonnull initializeWithCopy; + ValueWitnessAssignWithCopyTy _Nonnull assignWithCopy; + ValueWitnessInitializeWithTakeTy _Nonnull initializeWithTake; + ValueWitnessAssignWithTakeTy _Nonnull assignWithTake; + ValueWitnessGetEnumTagSinglePayloadTy _Nonnull getEnumTagSinglePayload; + ValueWitnessStoreEnumTagSinglePayloadTy _Nonnull storeEnumTagSinglePayload; + size_t size; + size_t stride; + unsigned flags; + unsigned extraInhabitantCount; + + constexpr size_t getAlignment() const { return (flags & 255) + 1; } +}; + +using EnumValueWitnessGetEnumTagTy = unsigned(* __ptrauth_swift_value_witness_function_pointer(41909))(const void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using EnumValueWitnessDestructiveProjectEnumDataTy = void(* __ptrauth_swift_value_witness_function_pointer(1053))(void * _Nonnull, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; +using EnumValueWitnessDestructiveInjectEnumTagTy = void(* __ptrauth_swift_value_witness_function_pointer(45796))(void * _Nonnull, unsigned, void * _Nonnull) SWIFT_NOEXCEPT_FUNCTION_PTR; + +struct EnumValueWitnessTable { + ValueWitnessTable vwTable; + EnumValueWitnessGetEnumTagTy _Nonnull getEnumTag; + EnumValueWitnessDestructiveProjectEnumDataTy _Nonnull destructiveProjectEnumData; + EnumValueWitnessDestructiveInjectEnumTagTy _Nonnull destructiveInjectEnumTag; +}; + +#undef SWIFT_NOEXCEPT_FUNCTION_PTR + + +// type metadata address for Bool. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $sSbN; +// type metadata address for Int8. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss4Int8VN; +// type metadata address for UInt8. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss5UInt8VN; +// type metadata address for Int16. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss5Int16VN; +// type metadata address for UInt16. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss6UInt16VN; +// type metadata address for Int32. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss5Int32VN; +// type metadata address for UInt32. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss6UInt32VN; +// type metadata address for Int64. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss5Int64VN; +// type metadata address for UInt64. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss6UInt64VN; +// type metadata address for Float. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $sSfN; +// type metadata address for Double. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $sSdN; +// type metadata address for OpaquePointer. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $ss13OpaquePointerVN; +// type metadata address for Int. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $sSiN; +// type metadata address for UInt. +SWIFT_IMPORT_STDLIB_SYMBOL extern size_t $sSuN; + +#ifdef __cplusplus +} +#endif + + +} // namespace _impl + + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc++17-extensions" +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$sSbN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss4Int8VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss5UInt8VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss5Int16VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss6UInt16VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss5Int32VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss6UInt32VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss5Int64VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss6UInt64VN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$sSfN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$sSdN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$ss13OpaquePointerVN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$sSiN; + } +}; + +template<> +static inline const constexpr bool isUsableInGenericContext = true; + +template<> +struct TypeMetadataTrait { + static SWIFT_INLINE_THUNK void * _Nonnull getTypeMetadata() { + return &_impl::$sSuN; + } +}; + +#pragma clang diagnostic pop + +} // namespace swift + +#endif +namespace BillingServices SWIFT_PRIVATE_ATTR SWIFT_SYMBOL_MODULE("BillingServices") { + + + + + + + + + + + + + + + + + + + + + + +class BillingServicesError { } SWIFT_UNAVAILABLE_MSG("enum 'BillingServicesError' can not yet be represented in C++ as one of its cases has multiple associated values"); + +class IBillingServices { } SWIFT_UNAVAILABLE_MSG("protocol 'IBillingServices' can not yet be represented in C++"); + +} // namespace BillingServices + +#undef SWIFT_SYMBOL +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Info.plist b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Info.plist new file mode 100644 index 00000000..fa6665ac Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Info.plist differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo new file mode 100644 index 00000000..0cc205a1 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.abi.json b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 00000000..d2f988e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "NO_MODULE", + "printedName": "NO_MODULE", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftdoc b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 00000000..b0a8de96 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftmodule b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftmodule new file mode 100644 index 00000000..d54795ba Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/module.modulemap b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/module.modulemap new file mode 100644 index 00000000..06fcca78 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +framework module BillingServices { + header "BillingServices-Swift.h" + requires objc +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/_CodeSignature/CodeResources b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/_CodeSignature/CodeResources new file mode 100644 index 00000000..1f55be65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/Frameworks/BillingServices.framework/_CodeSignature/CodeResources @@ -0,0 +1,168 @@ + + + + + files + + Headers/BillingServices-Swift.h + + OTaCECR6GtT7laTtei5LcbyCfVA= + + Info.plist + + cuO8sw+MIjA//G8avtlR2fU3qAw= + + Modules/BillingServices.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + gEIgvn1U4dTELuT0+8QS6ISuUyc= + + Modules/BillingServices.swiftmodule/arm64-apple-ios.abi.json + + gcwBsH4BgyFY4sVtNt+/xOKS3vY= + + Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftdoc + + /tl+b8f/LGxQPCqCgx7axscDENU= + + Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftmodule + + zLO3fhBnzH3ypn1590UeyE/AGec= + + Modules/module.modulemap + + cFRdD8zYpPCk8B0sIP6ByIztw6s= + + + files2 + + Headers/BillingServices-Swift.h + + hash2 + + 72ZyI45G4QV2jkySJXpWVPsj/pZiWD8WDMHvlgdQ2s4= + + + Modules/BillingServices.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo + + hash2 + + QO+4fJ1enKxxjk0l6Vbg40vyudh2kTNhAsCf5JF896I= + + + Modules/BillingServices.swiftmodule/arm64-apple-ios.abi.json + + hash2 + + Qnesa0n4URGWAopawg9bGx36dUwkYV00BoCJ8LFzlyg= + + + Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftdoc + + hash2 + + w4PCG9+d0J0WnvUexiXRlUuMwbqPi/yQS6H2v1ljORU= + + + Modules/BillingServices.swiftmodule/arm64-apple-ios.swiftmodule + + hash2 + + py9scFOO9vvRMxG1t0J/vKQpfXu2KqRsuDKlE83KO4E= + + + Modules/module.modulemap + + hash2 + + qOwchfzua1Md2Zo7nUQFnUhJAav6k8WgoJOA2z1cFSo= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesBinding.mm new file mode 100644 index 00000000..24b90c8a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesBinding.mm @@ -0,0 +1,176 @@ +// +// NPBillingServicesBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPBillingServicesDataTypes.h" +#import "NPDefines.h" +#import "BillingServices/BillingServices-swift.h" + +@interface NPBillingServicesObserver : NSObject + +- (instancetype)initWithCallbacks :(RequestForProductsNativeCallback)requestForProductsCallback + transactionStateChangeCallback: (TransactionStateChangeNativeCallback) transactionStateChangeCallback + restorePurchasesCallback:(RestorePurchasesNativeCallback) restorePurchasesCallback; +@property (nonatomic, assign) RequestForProductsNativeCallback requestForProductsCallback; +@property (nonatomic, assign) TransactionStateChangeNativeCallback transactionStateChangeCallback; +@property (nonatomic, assign) RestorePurchasesNativeCallback restorePurchasesCallback; +@end + +@implementation NPBillingServicesObserver + +- (instancetype)initWithCallbacks :(RequestForProductsNativeCallback)requestForProductsCallback + transactionStateChangeCallback: (TransactionStateChangeNativeCallback) transactionStateChangeCallback + restorePurchasesCallback:(RestorePurchasesNativeCallback) restorePurchasesCallback { + self = [super init]; + + self.requestForProductsCallback = requestForProductsCallback; + self.transactionStateChangeCallback = transactionStateChangeCallback; + self.restorePurchasesCallback = restorePurchasesCallback; + + return self; +} + +- (void)didInitializeStoreCompleteWithResult:(BillingServicesInitializeStoreResult * _Nonnull)result error:(NSError * _Nullable)error { + + // Extracting product ids from BillingProductDefinition + NSMutableArray *invalidProductIds = [NSMutableArray array]; + [result.invalidProductDefinitions enumerateObjectsUsingBlock:^(BillingProductDefinition* obj, NSUInteger idx, BOOL *stop) { + [invalidProductIds addObject:obj.identifier]; + }]; + + int dataArrayLength = 0; + void* dataArray = NPCreateProductsDataArray(result.products, &dataArrayLength); + NPArray* invalidIdArray = NPCreateArrayOfCString(invalidProductIds); + self.requestForProductsCallback(dataArray, dataArrayLength, NPCreateError(error), invalidIdArray); +} + +- (void)didRestorePurchasesCompleteWithResult:(BillingServicesRestorePurchasesResult * _Nonnull)result error:(NSError * _Nullable)error { + int cArrayLength; + void* cArray = NPCreateTransactionDataArray(result.transactions, &cArrayLength); + + self.restorePurchasesCallback(cArray, cArrayLength, NPCreateError(error)); +} + +- (void)didTransactionStateChangeWithResult:(BillingServicesTransactionStateChangeResult * _Nonnull)result { + + int cArrayLength; + void* cArray = NPCreateTransactionDataArray(result.transactions, &cArrayLength); + + self.transactionStateChangeCallback(cArray, cArrayLength); +} + +@end + +#pragma mark - Native binding methods +BillingServicesStoreKitImplementation *implementation; +NPBillingServicesObserver *observer; + +NPBINDING DONTSTRIP bool NPBillingServicesCanMakePayments() +{ + return [implementation canMakePayments]; +} + +NPBINDING DONTSTRIP void NPBillingServicesRegisterCallbacks(RequestForProductsNativeCallback requestForProductsCallback, + TransactionStateChangeNativeCallback transactionStateChangeCallback, + RestorePurchasesNativeCallback restorePurchasesCallback + ) +{ + observer = [[NPBillingServicesObserver alloc] initWithCallbacks:requestForProductsCallback + transactionStateChangeCallback:transactionStateChangeCallback + restorePurchasesCallback:restorePurchasesCallback]; +} + +NPBINDING DONTSTRIP void NPBillingServicesInit(bool autoFinishTransactions) +{ + BillingServicesSettings *settings = [[BillingServicesSettings alloc] initWithAutoFinishTransactions:autoFinishTransactions]; + implementation = [[BillingServicesStoreKitImplementation alloc] initWithSettings:settings delegate: observer]; +} + +NPBINDING DONTSTRIP void NPBillingServicesRequestForBillingProducts(const char** productIds, int length) +{ + NSArray* productIdArray = NPCreateArrayOfNSString(productIds, length); + NSMutableArray *definitions = [[NSMutableArray alloc] init]; + + for (NSString *each in productIdArray) { + BillingProductDefinition *definition = [[BillingProductDefinition alloc] initWithIdentifier:each]; + [definitions addObject:definition]; + } + + [implementation initializeStore:definitions]; +} + +NPBINDING DONTSTRIP BOOL NPBillingServicesIsProductPurchased(const char* productId) +{ + return [implementation isProductPurchased:NPCreateNSStringFromCString(productId)]; +} + + +NPBINDING DONTSTRIP void NPBillingServicesBuyProduct(const char* productId, SKProductBuyOptionsData buyOptions) +{ + BillingProductOfferRedeemDetails *offerRedeemDetails = nil; + NSUUID *tagUUID = nil; + + if(buyOptions.tagPtr != nil) { + NSString *tagStr = NPCreateNSStringFromCString(buyOptions.tagPtr); + tagUUID = [[NSUUID alloc] initWithUUIDString:tagStr]; + } + + if(buyOptions.offerReddemDetails.offerIdPtr != nil) { + + if(buyOptions.offerReddemDetails.keyIdPtr == nil || buyOptions.offerReddemDetails.noncePtr == nil || buyOptions.offerReddemDetails.signaturePtr == nil) { + NSLog(@"[Warning] Required parameters for offer details are not provided. Not applying this offer."); + } + else + { + offerRedeemDetails = [[BillingProductOfferRedeemDetails alloc] initWithOfferId:NPCreateNSStringFromCString(buyOptions.offerReddemDetails.offerIdPtr) + keyId:NPCreateNSStringFromCString(buyOptions.offerReddemDetails.keyIdPtr) + nonce:[[NSUUID alloc] initWithUUIDString:NPCreateNSStringFromCString(buyOptions.offerReddemDetails.noncePtr)] + signature:[[NSData alloc] initWithBase64EncodedString:NPCreateNSStringFromCString(buyOptions.offerReddemDetails.signaturePtr) options:0] + timestamp:buyOptions.offerReddemDetails.timestamp]; + } + } + + BuyProductOptions *options = [[BuyProductOptions alloc] initWithQuantity:buyOptions.quantity tag:tagUUID offerRedeemDetails:offerRedeemDetails]; + + NSError *error = [implementation buyProduct:NPCreateNSStringFromCString(productId) :options]; + + if (error != nil) { + NSLog(@"BuyProduct: %@", [error localizedDescription]); + } +} + +NPBINDING DONTSTRIP void* NPBillingServicesGetTransactions(int* length) +{ + + NSArray *transactions = [implementation getUnfinishedTransactions]; + + // convert native object to blittable type + return NPCreateTransactionDataArray(transactions, length); +} + +NPBINDING DONTSTRIP void NPBillingServicesRestorePurchases(bool forceRefresh, const char* tag) +{ + [implementation restorePurchases:forceRefresh :NPCreateNSStringFromCString(tag)]; +} + +NPBINDING DONTSTRIP void NPBillingServicesFinishTransactions(void** transactionsPtr, int length) +{ + // create native transaction object array + for (int iter = 0; iter < length; iter++) + { + BillingTransaction* transaction = (__bridge BillingTransaction*)transactionsPtr[iter]; + [transaction finish]; + } +} + +NPBINDING DONTSTRIP bool NPBillingServicesTryClearingUnfinishedTransactions() //Can remove passing bool as it's not required +{ + [implementation tryClearingUnfinishedTransactions]; + return true; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesBinding.mm.meta new file mode 100644 index 00000000..88f854b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesBinding.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 2ca207d0a764f45fe823e9a808df78ce +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.h new file mode 100644 index 00000000..40916bfa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.h @@ -0,0 +1,225 @@ +// +// NPBillingServicesDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPKit.h" +#import + +// callback signatures +typedef void (*RequestForProductsNativeCallback)(void* productsPtr, int length, NPError error, NPArray* invalidProductIds); +typedef void (*BuyProductNativeCallback)(NPError error); +typedef void (*TransactionStateChangeNativeCallback)(void* transactionsPtr, int length); +typedef void (*RestorePurchasesNativeCallback)(void* transactionsPtr, int length, NPError error); + +// utility methods + +void* NPCreateProductsDataArray(NSArray* array, int* length); +void* NPCreateTransactionDataArray(NSArray* array, int* length); +void ReleaseProductsDataArray(void* array, int length); +void ReleaseTransactionsDataArray(void* array, int length); + +void* NPCreateOfferData(BillingProductOffer* offer); +NPArrayWrapper NPCreateOffersDataArray(NSArray* array); +NPArrayWrapper NPCreateOfferPricingPhasesDataArray(NSArray* array); + + +typedef enum : NSInteger +{ + NPStoreReceiptVerificationStateNotChecked, + NPStoreReceiptVerificationStateSuccess, + NPStoreReceiptVerificationStateFailed +} NPStoreReceiptVerificationState; + +struct SKPriceData +{ + double value; + void* currencyCodePtr; + void* currencySymbolPtr; + void* localizedPricePtr; +}; +typedef struct SKPriceData SKPriceData; + + +// blittable product object +struct SKProductData +{ + // properties + void* nativeObjectPtr; + void* identifierPtr; + void* localizedTitlePtr; + void* localizedDescriptionPtr; + SKPriceData price; + void* subscriptionInfoPtr; + NPArrayWrapper offersArray; + + // constructors + ~SKProductData(); + + // methods + void CopyProperties(BillingProduct* product); +}; +typedef struct SKProductData SKProductData; + + +// blittable transaction object +struct SKPaymentTransactionData +{ + void* nativeObjectPtr; + void* identifierPtr; + void* datePtr; + int transactionState; + void* receiptPtr; + int environment; + void* applicationBundleIdentifierPtr; + void* productIdentifierPtr; + int productType; + int requestedQuantity; + int purchasedQuantity; + void* revocationDatePtr; + int revocationReason; + void* purchaseTagPtr; + + void* subscriptionStatusDataPtr; + void* rawDataPtr; + NPError errorData; + + // constructors + ~SKPaymentTransactionData(); + + // methods + void CopyProperties(BillingTransaction* transaction); +}; +typedef struct SKPaymentTransactionData SKPaymentTransactionData; + +typedef enum : NSInteger +{ + Day, + Week, + Month, + Year +} SKPeriodUnit; + + +struct SKBillingPeriodData +{ + double duration; + int unit; +}; +typedef struct SKBillingPeriodData SKBillingPeriodData; + + +struct SKProductSubscriptionInfoData +{ + // properties + void* nativeObjectPtr; + void* groupIdentifierPtr; + void* localizedGroupTitlePtr; + int level; + SKBillingPeriodData period; + + // constructors + ~SKProductSubscriptionInfoData(); + + // methods + void CopyProperties(BillingProductSubscriptionInfo* subscriptionInfo); +}; +typedef struct SKProductSubscriptionInfoData SKProductSubscriptionInfoData; + + +struct SKProductOfferData +{ + // properties + void* nativeObjectPtr; + void* identifierPtr; + int category; + NPArrayWrapper pricingPhasesArray; + + // constructors + ~SKProductOfferData(); + + // methods + void CopyProperties(BillingProductOffer* offer); +}; +typedef struct SKProductOfferData SKProductOfferData; + +struct SKProductOfferPricingPhaseData +{ + // properties + int paymentMode; + SKPriceData price; + SKBillingPeriodData period; + int repeatCount; + + // constructors + ~SKProductOfferPricingPhaseData(); + + // methods + void CopyProperties(BillingProductOfferPricingPhase* pricingPhase); +}; +typedef struct SKProductOfferPricingPhaseData SKProductOfferPricingPhaseData; + +struct SKProductSubscriptionStatusData +{ + // properties + void* groupIdentifierPtr; + void* renewalInfoPtr; + void* expirationDatePtr; + int isUpgraded; + void* appliedOfferIdentifier; + int appliedOfferType; + + // constructors + ~SKProductSubscriptionStatusData(); + + // methods + void CopyProperties(BillingProductSubscriptionStatus* subscriptionStatus); +}; +typedef struct SKProductSubscriptionStatusData SKProductSubscriptionStatusData; + + +struct SKProductSubscriptionRenewalInfoData +{ + // properties + int state; + void* applicableOfferIdentifierPtr; + int applicableOfferCategory; + void* lastRenewedDatePtr; + void* lastRenewalIdPtr; + int isAutoRenewEnabled; + int expirationReason; + void* renewalDatePtr; + void* gracePeriodExpirationDatePtr; + int priceIncreaseStatus; + + // constructors + ~SKProductSubscriptionRenewalInfoData(); + + // methods + void CopyProperties(BillingProductSubscriptionRenewalInfo* renewalInfo); +}; +typedef struct SKProductSubscriptionRenewalInfoData SKProductSubscriptionRenewalInfoData; + +struct SKProductOfferRedeemDetailsData +{ + const char* offerIdPtr; + const char* keyIdPtr; + const char* noncePtr; + const char* signaturePtr; + long timestamp; +}; +typedef struct SKProductOfferRedeemDetailsData SKProductOfferRedeemDetailsData; + +struct SKProductBuyOptionsData +{ + // properties + int quantity; + const char* tagPtr; + SKProductOfferRedeemDetailsData offerReddemDetails; +}; +typedef struct SKProductBuyOptionsData SKProductBuyOptionsData; diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.h.meta new file mode 100644 index 00000000..b863b40a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: eaa3d20006ccb4934b8e893fece4bc5b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.mm new file mode 100644 index 00000000..67a35baa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.mm @@ -0,0 +1,281 @@ +// +// NPBillingServicesDataTypes.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPBillingServicesDataTypes.h" + +void SKProductData::CopyProperties(BillingProduct* product) +{ + SKProductSubscriptionInfoData* subscriptionInfoData = nil; + if (product.subscriptionInfo != nil) + { + subscriptionInfoData = (SKProductSubscriptionInfoData*)malloc(sizeof(SKProductSubscriptionInfoData)); + subscriptionInfoData->CopyProperties(product.subscriptionInfo); + } + + this->nativeObjectPtr = (__bridge void*)product; + this->identifierPtr = NPCreateCStringFromNSString(product.identifier); + this->localizedDescriptionPtr = NPCreateCStringFromNSString(product.localizedDescription); + this->localizedTitlePtr = NPCreateCStringFromNSString(product.localizedTitle); + this->price = (SKPriceData) { .value = product.price.value, + .currencyCodePtr = NPCreateCStringFromNSString(product.price.currencyCode), + .currencySymbolPtr = NPCreateCStringFromNSString(product.price.currencySymbol), + .localizedPricePtr = NPCreateCStringFromNSString(product.price.localizedDisplay) + }; + + this->subscriptionInfoPtr = subscriptionInfoData; + this->offersArray = NPCreateOffersDataArray(product.offers); +} + +SKProductData::~SKProductData() +{ + // release c allocations + if(subscriptionInfoPtr) + { + free(subscriptionInfoPtr); + } +} + +void SKPaymentTransactionData::CopyProperties(BillingTransaction* transaction) +{ + SKProductSubscriptionStatusData* subscriptionStatusData = nil; + if (transaction.subscriptionStatus != nil) + { + subscriptionStatusData = (SKProductSubscriptionStatusData*)malloc(sizeof(SKProductSubscriptionStatusData)); + subscriptionStatusData->CopyProperties(transaction.subscriptionStatus); + } + + // copy values + this->nativeObjectPtr = NPRetainWithOwnershipTransfer(transaction); + this->identifierPtr = NPCreateCStringFromNSString(transaction.identifier); + this->datePtr = NPCreateCStringFromNSString(NPCreateNSStringFromNSDate(transaction.date)); + this->transactionState = (int) transaction.state; + this->receiptPtr = NPCreateCStringFromNSString(transaction.receipt); + this->environment = (int)transaction.environment; + this->applicationBundleIdentifierPtr = NPCreateCStringFromNSString(transaction.applicationBundleIdentifier); + this->productIdentifierPtr = NPCreateCStringFromNSString(transaction.productIdentifier); + this->productType = (int) transaction.productType; + this->requestedQuantity = (int) transaction.requestedQuantity; + this->purchasedQuantity = (int)transaction.purchasedQuantity; + this->revocationDatePtr = NPCreateCStringFromNSString(NPCreateNSStringFromNSDate(transaction.revocationDate)); + this->revocationReason = (int) transaction.revocationReason; + this->purchaseTagPtr = NPCreateCStringFromNSString(transaction.purchaseTag); + this->subscriptionStatusDataPtr = subscriptionStatusData; + this->rawDataPtr = NPCreateCStringFromNSString(transaction.rawData); + this->errorData = NPCreateError(transaction.error); +} + + +SKPaymentTransactionData::~SKPaymentTransactionData() +{ + // release c allocations + free(subscriptionStatusDataPtr); +} + +void SKProductSubscriptionInfoData::CopyProperties(BillingProductSubscriptionInfo* subscriptionInfo) +{ + this->nativeObjectPtr = (__bridge void*)subscriptionInfo; + this->groupIdentifierPtr = NPCreateCStringFromNSString(subscriptionInfo.groupIdentifier); + this->localizedGroupTitlePtr = NPCreateCStringFromNSString(subscriptionInfo.groupDisplayName); + this->level = (int)subscriptionInfo.level; + + // Period + this->period = (SKBillingPeriodData) { .duration = subscriptionInfo.period.duration, .unit = (int)subscriptionInfo.period.unit }; +} + +SKProductSubscriptionInfoData::~SKProductSubscriptionInfoData() +{ + // release c allocations +} + + +void SKProductSubscriptionStatusData::CopyProperties(BillingProductSubscriptionStatus* subscriptionStatus) +{ + + SKProductSubscriptionRenewalInfoData* renewalInfoData = nil; + + if(subscriptionStatus.renewalInfo != nil) { + renewalInfoData = (SKProductSubscriptionRenewalInfoData*)malloc(sizeof(SKProductSubscriptionRenewalInfoData)); + renewalInfoData->CopyProperties(subscriptionStatus.renewalInfo); + } + + this->groupIdentifierPtr = NPCreateCStringFromNSString(subscriptionStatus.groupIdentifier); + this->renewalInfoPtr = renewalInfoData; + this->expirationDatePtr = NPCreateCStringFromNSString(NPCreateNSStringFromNSDate(subscriptionStatus.expirationDate)); + this->isUpgraded = subscriptionStatus.isUpgraded; + this->appliedOfferIdentifier = NPCreateCStringFromNSString(subscriptionStatus.appliedOfferIdentifier); + this->appliedOfferType = (int)subscriptionStatus.appliedOfferType; +} + +SKProductSubscriptionStatusData::~SKProductSubscriptionStatusData() +{ + // release c allocations + if(renewalInfoPtr) + { + free(renewalInfoPtr); + } +} + + +void SKProductSubscriptionRenewalInfoData::CopyProperties(BillingProductSubscriptionRenewalInfo* renewalInfo) +{ + + this->state = (int) renewalInfo.state; + this->applicableOfferIdentifierPtr = NPCreateCStringFromNSString(renewalInfo.applicableOfferIdentifier); + this->applicableOfferCategory = (int)renewalInfo.applicableOfferType; + this->lastRenewedDatePtr = NPCreateCStringFromNSString(NPCreateNSStringFromNSDate(renewalInfo.lastRenewedDate)); + this->lastRenewalIdPtr = NPCreateCStringFromNSString(renewalInfo.lastRenewalId); + this->isAutoRenewEnabled = (int) renewalInfo.isAutoRenewEnabled; + this->expirationReason = (int) renewalInfo.expirationReason; + this->renewalDatePtr = NPCreateCStringFromNSString( NPCreateNSStringFromNSDate(renewalInfo.renewalDate)); + this->gracePeriodExpirationDatePtr = NPCreateCStringFromNSString( NPCreateNSStringFromNSDate(renewalInfo.gracePeriodExpirationDate)); + this->priceIncreaseStatus = (int) renewalInfo.priceIncreaseStatus; +} + +SKProductSubscriptionRenewalInfoData::~SKProductSubscriptionRenewalInfoData() +{ + // release c allocations +} + +void SKProductOfferData::CopyProperties(BillingProductOffer* offer) +{ + this->identifierPtr = NPCreateCStringFromNSString(offer.identifier); + this->category = (int)offer.category; + this->pricingPhasesArray = NPCreateOfferPricingPhasesDataArray(offer.pricingPhases); +} + +SKProductOfferData::~SKProductOfferData() +{ + // release c allocations +} + +void SKProductOfferPricingPhaseData::CopyProperties(BillingProductOfferPricingPhase* pricingPhase) +{ + this->paymentMode = (int) pricingPhase.paymentMode; + this->price = (SKPriceData) { .value = pricingPhase.price.value, + .currencyCodePtr = NPCreateCStringFromNSString(pricingPhase.price.currencyCode), + .currencySymbolPtr = NPCreateCStringFromNSString(pricingPhase.price.currencySymbol), + .localizedPricePtr = NPCreateCStringFromNSString(pricingPhase.price.localizedDisplay) + }; + this->period = (SKBillingPeriodData) { .duration = pricingPhase.period.duration, .unit = (int)pricingPhase.period.unit }; + this->repeatCount = (int) pricingPhase.repeatCount; +} + +SKProductOfferPricingPhaseData::~SKProductOfferPricingPhaseData() +{ + // release c allocations +} + + +#pragma mark - Utility methods + +void* NPCreateProductsDataArray(NSArray* array, int* length) +{ + if (array) + { + // set length + *length = (int)[array count]; + + // create data array + SKProductData* newDataArray = (SKProductData*)calloc(*length, sizeof(SKProductData)); + for (int iter = 0; iter < *length; iter++) + { + BillingProduct* product = [array objectAtIndex:iter]; + SKProductData* newDataObject = &newDataArray[iter]; + newDataObject->CopyProperties(product); + } + + return newDataArray; + } + else + { + *length = -1; + + return nil; + } +} + +void* NPCreateTransactionDataArray(NSArray* array, int* length) +{ + if (array) + { + // set length + *length = (int)[array count]; + + // create data array + SKPaymentTransactionData* newDataArray = (SKPaymentTransactionData*)calloc(*length, sizeof(SKPaymentTransactionData)); + for (int iter = 0; iter < *length ; iter++) + { + BillingTransaction* transaction = [array objectAtIndex:iter]; + SKPaymentTransactionData* newDataObject = &newDataArray[iter]; + newDataObject->CopyProperties(transaction); + } + + return newDataArray; + } + else + { + *length = -1; + + return nil; + } +} + +void* NPCreateOfferData(BillingProductOffer* offer) +{ + SKProductOfferData* offerData = (SKProductOfferData*)malloc(sizeof(SKProductOfferData)); + offerData->CopyProperties(offer); + + return offerData; +} + +NPArrayWrapper NPCreateOffersDataArray(NSArray* array) +{ + SKProductOfferData* newDataArray = nil; + int length = -1; + + if (array) + { + // set length + length = (int)[array count]; + + // create data array + newDataArray = (SKProductOfferData*)calloc(length, sizeof(SKProductOfferData)); + for (int iter = 0; iter < length; iter++) + { + BillingProductOffer* offer = [array objectAtIndex:iter]; + SKProductOfferData* newDataObject = &newDataArray[iter]; + newDataObject->CopyProperties(offer); + } + } + + return (NPArrayWrapper) {.ptr = newDataArray, .length = length}; +} + +NPArrayWrapper NPCreateOfferPricingPhasesDataArray(NSArray* array) +{ + SKProductOfferPricingPhaseData* newDataArray = nil; + int length = -1; + + + if (array) + { + // set length + length = (int)[array count]; + + // create data array + newDataArray = (SKProductOfferPricingPhaseData*)calloc(length, sizeof(SKProductOfferPricingPhaseData)); + for (int iter = 0; iter < length; iter++) + { + BillingProductOfferPricingPhase* pricingPhase = [array objectAtIndex:iter]; + SKProductOfferPricingPhaseData* newDataObject = &newDataArray[iter]; + newDataObject->CopyProperties(pricingPhase); + } + } + + return (NPArrayWrapper) {.ptr = newDataArray, .length = length}; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.mm.meta new file mode 100644 index 00000000..99679064 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/BillingServices/NPBillingServicesDataTypes.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 04ea0c23a92c942bfa01b3b6307e77f7 +timeCreated: 1554343358 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices.meta new file mode 100644 index 00000000..ae5e78e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 48ddcedeb6deb4d5b96dc2540d0b00e2 +folderAsset: yes +timeCreated: 1579515979 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/CloudServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/CloudServices.asset new file mode 100644 index 00000000..83863d3c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/CloudServices.asset @@ -0,0 +1,28 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: CloudServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: CloudKit.framework + m_target: 4 + m_isOptional: 1 + m_capabilities: + - m_type: 3 + m_associatedDomainsEntitlement: + m_domains: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/CloudServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/CloudServices.asset.meta new file mode 100644 index 00000000..88983af8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/CloudServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4e8c8d3e05c9c48efa272ad514241caf +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesBinding.mm new file mode 100644 index 00000000..e79b2658 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesBinding.mm @@ -0,0 +1,305 @@ +// +// NPCloudServicesBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPCloudServicesDataTypes.h" +#import "NPKit.h" + +// static fields +static UserChangeNativeCallback _userChangeCallback = nil; +static SavedDataChangeNativeCallback _savedDataChangeCallback = nil; + +#pragma mark - Wrappers + +@interface NativePluginsCloudServicesObserver : NSObject + +@end + +@implementation NativePluginsCloudServicesObserver + +- (id)init +{ + self = [super init]; + if (self) + { + // register for events + NSUbiquitousKeyValueStore* defaultStore = [NSUbiquitousKeyValueStore defaultStore]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onDataStoreChanged:) + name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification + object:defaultStore]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onAccountChanged:) + name:NSUbiquityIdentityDidChangeNotification + object:nil]; + + + + // get user info + [self performSelector:@selector(sendUserAccountInfo) withObject:nil afterDelay:1]; + } + + return self; +} + +- (void)dealloc +{ + // unregister from events + [[NSNotificationCenter defaultCenter] removeObserver:self + name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification + object:[NSUbiquitousKeyValueStore defaultStore]]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:NSUbiquityIdentityDidChangeNotification + object:[NSUbiquitousKeyValueStore defaultStore]]; +} + +#pragma mark - Utility methods + +NPBINDING DONTSTRIP char* NPSerializeObjectToCString(id value) +{ + if (value) + { + NSError* error; + NSString* jsonStr = NPToJson(value, &error); + + if (error) + { + NSLog(@"[NativePlugins] Failed to convert to json string."); + return nil; + } + + return NPCreateCStringCopyFromNSString(jsonStr);; + } + + return nil; +} + + +#pragma mark - User methods + +- (void)sendUserAccountInfo +{ + id identityToken = [[NSFileManager defaultManager] ubiquityIdentityToken]; + NSString* idTokenStr = (identityToken) ? NPExtractTokenFromNSData(identityToken) : nil; + + // create c format data + CKAccountData* accountData = new CKAccountData(idTokenStr); + + // send callback + _userChangeCallback(accountData, NPCreateError(nil)); + + // release c allocations + delete(accountData); +} + +#pragma mark - Callback methods + +- (void)onDataStoreChanged:(NSNotification *)notification +{ + // get required data + NSDictionary* userInfo = [notification userInfo]; + NSNumber* changeReason = [userInfo objectForKey:NSUbiquitousKeyValueStoreChangeReasonKey]; + NSArray* changedKeys = [userInfo objectForKey:NSUbiquitousKeyValueStoreChangedKeysKey]; + + // send an event + NPArray* changedKeysCArray = NPCreateArrayOfCString(changedKeys); + _savedDataChangeCallback([changeReason intValue], changedKeysCArray); + + // check whether user information changed + if ([changeReason intValue] == NSUbiquitousKeyValueStoreAccountChange) + { + [self sendUserAccountInfo]; + } + + // release c data + delete(changedKeysCArray); +} + +- (void)onAccountChanged:(NSNotification *)notification +{ + [self sendUserAccountInfo]; +} + +@end + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP void NPCloudServicesRegisterCallbacks(UserChangeNativeCallback userChangeCallback, SavedDataChangeNativeCallback savedDataChangeCallback) +{ + // save values + _userChangeCallback = userChangeCallback; + _savedDataChangeCallback = savedDataChangeCallback; +} + +NPBINDING DONTSTRIP void NPCloudServicesInit() +{ + // create observer + static NativePluginsCloudServicesObserver* sharedObserver = nil; + if (nil == sharedObserver) + { + sharedObserver = [[NativePluginsCloudServicesObserver alloc] init]; + } +} + +NPBINDING DONTSTRIP bool NPCloudServicesGetBool(const char* key) +{ + return [[NSUbiquitousKeyValueStore defaultStore] boolForKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP long NPCloudServicesGetLong(const char* key) +{ + return [[NSUbiquitousKeyValueStore defaultStore] longLongForKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP double NPCloudServicesGetDouble(const char* key) +{ + return [[NSUbiquitousKeyValueStore defaultStore] doubleForKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP char* NPCloudServicesGetString(const char* key) +{ + /*NSString* savedValue = [[NSUbiquitousKeyValueStore defaultStore] stringForKey:NPCreateNSStringFromCString(key)];*/ + + id val = [[NSUbiquitousKeyValueStore defaultStore] objectForKey:NPCreateNSStringFromCString(key)]; + + if([val isKindOfClass: [NSString class]]) { + return NPCreateCStringCopyFromNSString(val); + } else { + return NPSerializeObjectToCString(val); + } + +} + +NPBINDING DONTSTRIP const void* NPCloudServicesGetByteArray(const char* key, int &length) +{ + NSData* savedValue = [[NSUbiquitousKeyValueStore defaultStore] dataForKey:NPCreateNSStringFromCString(key)]; + if (savedValue) + { + length = (int)[savedValue length]; + return [savedValue bytes]; + } + else + { + length = 0; + return nil; + } +} + +NPBINDING DONTSTRIP char* NPCloudServicesGetArray(const char* key) +{ + NSArray* savedValue = [[NSUbiquitousKeyValueStore defaultStore] arrayForKey:NPCreateNSStringFromCString(key)]; + return NPSerializeObjectToCString(savedValue); +} + +NPBINDING DONTSTRIP char* NPCloudServicesGetDictionary(const char* key) +{ + NSDictionary* savedValue = [[NSUbiquitousKeyValueStore defaultStore] dictionaryForKey:NPCreateNSStringFromCString(key)]; + return NPSerializeObjectToCString(savedValue); +} + +NPBINDING DONTSTRIP bool NPCloudServicesHasKey(const char* key) +{ + return [[NSUbiquitousKeyValueStore defaultStore] objectForKey:NPCreateNSStringFromCString(key)] != nil; +} + + +NPBINDING DONTSTRIP void NPCloudServicesSetBool(const char* key, bool value) +{ + [[NSUbiquitousKeyValueStore defaultStore] setBool:value forKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP void NPCloudServicesSetLong(const char* key, long value) +{ + [[NSUbiquitousKeyValueStore defaultStore] setLongLong:value forKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP void NPCloudServicesSetDouble(const char* key, double value) +{ + [[NSUbiquitousKeyValueStore defaultStore] setDouble:value forKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP void NPCloudServicesSetString(const char* key, const char* value) +{ + [[NSUbiquitousKeyValueStore defaultStore] setString:NPCreateNSStringFromCString(value) forKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP void NPCloudServicesSetByteArray(const char* key, const void* value, int length) +{ + NSData* data = (value) ? [NSData dataWithBytes:value length:length] : nil; + [[NSUbiquitousKeyValueStore defaultStore] setData:data forKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP void NPCloudServicesSetArray(const char* key, const char* jsonCStr) +{ + id object = nil; + if (jsonCStr) + { + // create native object + NSError* error; + object = NPFromJson(NPCreateNSStringFromCString(jsonCStr), &error); + if (error) + { + NSLog(@"[NativePlugins] Failed to create NSArray object from given json string."); + return; + } + } + + // add data to cloud + [[NSUbiquitousKeyValueStore defaultStore] setArray:(NSArray*)object forKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP void NPCloudServicesSetDictionary(const char* key, const char* jsonCStr) +{ + id object = nil; + if (jsonCStr) + { + // create native object + NSError* error; + object = NPFromJson(NPCreateNSStringFromCString(jsonCStr), &error); + if (error) + { + NSLog(@"[NativePlugins] Failed to create NSDictionary object from given json string."); + return; + } + } + + // add data to cloud + [[NSUbiquitousKeyValueStore defaultStore] setDictionary:(NSDictionary*)object forKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP void NPCloudServicesRemoveKey(const char* key) +{ + [[NSUbiquitousKeyValueStore defaultStore] removeObjectForKey:NPCreateNSStringFromCString(key)]; +} + +NPBINDING DONTSTRIP bool NPCloudServicesSynchronize() +{ + return [[NSUbiquitousKeyValueStore defaultStore] synchronize]; +} + +NPBINDING DONTSTRIP char* NPCloudServicesSnapshot() +{ + NSDictionary* snapshot = [[NSUbiquitousKeyValueStore defaultStore] dictionaryRepresentation]; + if (snapshot) + { + // convert to json representation + NSError* error; + NSString* jsonStr = NPToJson(snapshot, &error); + if (error) + { + NSLog(@"[NativePlugins] Failed to convert to json representation."); + return nil; + } + + return NPCreateCStringCopyFromNSString(jsonStr); + } + + return nil; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesBinding.mm.meta new file mode 100644 index 00000000..33bf9fe4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesBinding.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: fb7d3f886e8c44fe2af7062ec12b2021 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.h new file mode 100644 index 00000000..013104b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.h @@ -0,0 +1,32 @@ +// +// NPCloudServicesDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPKit.h" + +#pragma mark - Custom definitions + +// custom datatypes +struct CKAccountData +{ + // variables + void* accountIdentifierPtr; + + // destructors + CKAccountData(NSString* identityToken); + ~CKAccountData(); + + CKAccountData(CKAccountData const& other); +}; +typedef CKAccountData CKAccountData; + +#pragma mark - Callback definitions + +// callback signatures +typedef void (*UserChangeNativeCallback)(CKAccountData* accountData, NPError error); +typedef void (*SavedDataChangeNativeCallback)(int changeReason, NPArray* changedKeys); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.h.meta new file mode 100644 index 00000000..b8a992fe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 64e63cf3e2fd34366b7dbb8c8ea90bf9 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.mm new file mode 100644 index 00000000..4a1ed18f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.mm @@ -0,0 +1,20 @@ +// +// NPCloudServicesDataTypes.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPCloudServicesDataTypes.h" + +CKAccountData::CKAccountData(NSString* identityToken) +{ + this->accountIdentifierPtr = NPCreateCStringFromNSString(identityToken); +} + +CKAccountData::~CKAccountData() +{ + // release c objects + NSLog(@"Destructor call."); +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.mm.meta new file mode 100644 index 00000000..4fd870e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/CloudServices/NPCloudServicesDataTypes.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: ec180b0e2672a4dd1b595aeb60616981 +timeCreated: 1554343358 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices.meta new file mode 100644 index 00000000..b1e6ae84 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ee5cc6e3ed67d419998df91542814912 +folderAsset: yes +timeCreated: 1579515897 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/DeepLinkServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/DeepLinkServices.asset new file mode 100644 index 00000000..582834ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/DeepLinkServices.asset @@ -0,0 +1,28 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: DeepLinkServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: [] + m_capabilities: + - m_type: 5 + m_associatedDomainsEntitlement: + m_domains: + - applinks:app + m_macros: + - m_key: NATIVE_PLUGINS_USES_DEEP_LINK + m_value: 1 + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/DeepLinkServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/DeepLinkServices.asset.meta new file mode 100644 index 00000000..5fe4e3e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/DeepLinkServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cb510c917e3264258b59767c871309d4 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/NPDeepLinkServicesBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/NPDeepLinkServicesBinding.mm new file mode 100644 index 00000000..195c823f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/NPDeepLinkServicesBinding.mm @@ -0,0 +1,27 @@ +// +// NPDeepLinkServicesBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPUnityAppController.h" +#import "NPKit.h" + +#pragma mark - Native binding methods +#if NATIVE_PLUGINS_USES_DEEP_LINK + +NPBINDING DONTSTRIP void NPDeepLinkServicesRegisterCallbacks(HandleUrlSchemeCallback handleUrlSchemeCallback, HandleUniversalLinkCallback handleUniversalLinkCallback) +{ + [NPUnityAppController registerUrlSchemeHandler:handleUrlSchemeCallback]; + [NPUnityAppController registerUniversalLinkHandler:handleUniversalLinkCallback]; +} + +NPBINDING DONTSTRIP void NPDeepLinkServicesInit() +{ + NPUnityAppController* appController = (NPUnityAppController*)GetAppController(); + [appController initDeepLinkServices]; +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/NPDeepLinkServicesBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/NPDeepLinkServicesBinding.mm.meta new file mode 100644 index 00000000..62539125 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/DeepLinkServices/NPDeepLinkServicesBinding.mm.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 08e7dc0fb12004107b62f8378e328e99 +timeCreated: 1586445427 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/EssentialKitGroup.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/EssentialKitGroup.asset new file mode 100644 index 00000000..e2b5ad25 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/EssentialKitGroup.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: 8494aa9edfa214a818449f2dea39a05a, type: 3} + m_Name: EssentialKitGroup + m_EditorClassIdentifier: + m_name: EssentialKit + m_usesNestedHeierarchy: 1 diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/EssentialKitGroup.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/EssentialKitGroup.asset.meta new file mode 100644 index 00000000..9df5a3c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/EssentialKitGroup.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52aa1427fb2704a9cbecc9c6eca2c82c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices.meta new file mode 100644 index 00000000..f53f8d39 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: de19038dd3c8745a98d18bc7c7951a7b +folderAsset: yes +timeCreated: 1579516005 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/GameServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/GameServices.asset new file mode 100644 index 00000000..88274de4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/GameServices.asset @@ -0,0 +1,28 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: GameServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: GameKit.framework + m_target: 4 + m_isOptional: 1 + m_capabilities: + - m_type: 1 + m_associatedDomainsEntitlement: + m_domains: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/GameServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/GameServices.asset.meta new file mode 100644 index 00000000..6e7661ad --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/GameServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 519d7fdfaca564cf595c58de20da390e +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementBinding.mm new file mode 100644 index 00000000..ef0a740b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementBinding.mm @@ -0,0 +1,106 @@ +// +// NPGameKitAchievementBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPGameKitManager.h" +#import "NPGameServicesDataTypes.h" +#import "NPKit.h" +#import "NPManagedPointerCache.h" +#import "NSError+Utility.h" + +// static fields +static GameServicesLoadArrayNativeCallback _loadAchievementsCallback = nil; +static GameServicesReportNativeCallback _reportAchievementCallback = nil; +static bool _showsBannerOnCompletion = false; + +#pragma mark - Native binding calls + +NPBINDING DONTSTRIP void NPAchievementRegisterCallbacks(GameServicesLoadArrayNativeCallback loadAchievementsCallback, GameServicesReportNativeCallback reportAchievementCallback) +{ + _loadAchievementsCallback = loadAchievementsCallback; + _reportAchievementCallback = reportAchievementCallback; +} + +NPBINDING DONTSTRIP void NPAchievementSetCanShowBannerOnCompletion(bool showsBannerOnCompletion) +{ + // set properties + _showsBannerOnCompletion = showsBannerOnCompletion; +} + +NPBINDING DONTSTRIP void NPAchievementLoadAchievements(void* tagPtr) +{ + [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray* _Nullable achievements, NSError* _Nullable error) { + // send data + NPArray* nativeArray = NPCreateNativeArrayFromNSArray(achievements); + _loadAchievementsCallback(nativeArray, NPCreateError(CreateFromError(error, Domain, GameServicesErrorCodeUnknown)), tagPtr); + + // release properties + delete(nativeArray); + }]; +} + +NPBINDING DONTSTRIP void* NPAchievementCreate(const char* id) +{ + GKAchievement* achievement = [[GKAchievement alloc] initWithIdentifier:NPCreateNSStringFromCString(id)]; + achievement.showsCompletionBanner = _showsBannerOnCompletion; + return NPRetainWithOwnershipTransfer(achievement); +} + +NPBINDING DONTSTRIP const char* NPAchievementGetId(void* achievementPtr) +{ + GKAchievement* achievement = (__bridge GKAchievement*)achievementPtr; + return NPCreateCStringCopyFromNSString(achievement.identifier); +} + +NPBINDING DONTSTRIP double NPAchievementGetPercentageCompleted(void* achievementPtr) +{ + GKAchievement* achievement = (__bridge GKAchievement*)achievementPtr; + return achievement.percentComplete; +} + +NPBINDING DONTSTRIP void NPAchievementSetPercentageCompleted(void* achievementPtr, double percentComplete) +{ + GKAchievement* achievement = (__bridge GKAchievement*)achievementPtr; + achievement.percentComplete = percentComplete; +} + +NPBINDING DONTSTRIP bool NPAchievementGetIsCompleted(void* achievementPtr) +{ + GKAchievement* achievement = (__bridge GKAchievement*)achievementPtr; + return achievement.isCompleted; +} + +NPBINDING DONTSTRIP const char* NPAchievementGetLastReportedDate(void* achievementPtr) +{ + GKAchievement* achievement = (__bridge GKAchievement*)achievementPtr; + NSString* lastReportedDate = NPCreateNSStringFromNSDate(achievement.lastReportedDate); + return NPCreateCStringCopyFromNSString(lastReportedDate); +} + +NPBINDING DONTSTRIP void NPAchievementReportProgress(void* achievementPtr, void* tagPtr) +{ + if(![[GKLocalPlayer localPlayer] isAuthenticated]) { + + _reportAchievementCallback(NPCreateError(ErrorWithDomain(Domain, GameServicesErrorCodeNotAuthenticated, @"Player not authenticated.")), tagPtr); + + return; + } + + GKAchievement* achievement = (__bridge GKAchievement*)achievementPtr; + [GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError * _Nullable error) { + // send data + //TODO: Find different possible errors + _reportAchievementCallback(NPCreateError(CreateFromError(error, Domain, GameServicesErrorCodeUnknown)), tagPtr); + }]; +} + +NPBINDING DONTSTRIP void NPAchievementShowView(void* tagPtr) +{ + GKGameCenterViewController* gameCenterVC = [[GKGameCenterViewController alloc] initWithState:GKGameCenterViewControllerStateAchievements]; + [[NPGameKitManager sharedManager] showGameCenterViewController:gameCenterVC withTag:tagPtr]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementBinding.mm.meta new file mode 100644 index 00000000..b7450765 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 46d87fd15ecf54a049a0ef343575ec16 +timeCreated: 1554358389 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementDescriptionBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementDescriptionBinding.mm new file mode 100644 index 00000000..b3ce8f1a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementDescriptionBinding.mm @@ -0,0 +1,110 @@ +// +// NPGameKitAchievementDescriptionBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPGameServicesDataTypes.h" +#import "NPKit.h" +#import "NPGameServicesError.h" + +// static fields +static GameServicesLoadArrayNativeCallback _loadAchievementDescriptionsCallback = nil; +static GameServicesLoadImageNativeCallback _loadImageCallback = nil; + +#pragma mark - Native binding calls + +NPBINDING DONTSTRIP void NPAchievementDescriptionRegisterCallbacks(GameServicesLoadArrayNativeCallback loadDescriptionsCallback, GameServicesLoadImageNativeCallback loadImageCallback) +{ + // save references + _loadAchievementDescriptionsCallback = loadDescriptionsCallback; + _loadImageCallback = loadImageCallback; +} + +NPBINDING DONTSTRIP void NPAchievementDescriptionLoadDescriptions(void* tagPtr) +{ + [GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:^(NSArray* _Nullable descriptions, NSError* _Nullable error) { + // send data + NPArray* nativeArray = NPCreateNativeArrayFromNSArray(descriptions); + _loadAchievementDescriptionsCallback(nativeArray, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + + // release properties + delete(nativeArray); + }]; +} + +NPBINDING DONTSTRIP const char* NPAchievementDescriptionGetId(void* descriptionPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + return NPCreateCStringCopyFromNSString(description.identifier); +} + +NPBINDING DONTSTRIP const char* NPAchievementDescriptionGetTitle(void* descriptionPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + return NPCreateCStringCopyFromNSString(description.title); +} + +NPBINDING DONTSTRIP const char* NPAchievementDescriptionGetAchievedDescription(void* descriptionPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + return NPCreateCStringCopyFromNSString(description.achievedDescription); +} + +NPBINDING DONTSTRIP const char* NPAchievementDescriptionGetUnachievedDescription(void* descriptionPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + return NPCreateCStringCopyFromNSString(description.unachievedDescription); +} + +NPBINDING DONTSTRIP long NPAchievementDescriptionGetMaximumPoints(void* descriptionPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + return (long)description.maximumPoints; +} + +NPBINDING DONTSTRIP bool NPAchievementDescriptionGetHidden(void* descriptionPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + return description.hidden; +} + +NPBINDING DONTSTRIP bool NPAchievementDescriptionGetReplayable(void* descriptionPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + return description.replayable; +} + +NPBINDING DONTSTRIP void NPAchievementDescriptionLoadIncompleteAchievementImage(void* descriptionPtr, void* tagPtr) +{ + UIImage* image = [GKAchievementDescription incompleteAchievementImage]; + if (image) + { + NSData* imageData = NPEncodeImageAsData(image, UIImageEncodeTypePNG); + _loadImageCallback((void*)[imageData bytes], (int)[imageData length], NPCreateError(nil), tagPtr); + } + else + { + _loadImageCallback(nil, -1, NPCreateError([NPGameServicesError dataNotAvailable]), tagPtr); + } +} + +NPBINDING DONTSTRIP void NPAchievementDescriptionLoadImage(void* descriptionPtr, void* tagPtr) +{ + GKAchievementDescription* description = (__bridge GKAchievementDescription*)descriptionPtr; + [description loadImageWithCompletionHandler:^(UIImage* _Nullable image, NSError* _Nullable error) { + // send data + if (error) + { + _loadImageCallback(nil, -1, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + } + else + { + NSData* imageData = NPEncodeImageAsData(image, UIImageEncodeTypePNG); + _loadImageCallback((void*)[imageData bytes], (int)[imageData length], NPCreateError(nil), tagPtr); + } + }]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementDescriptionBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementDescriptionBinding.mm.meta new file mode 100644 index 00000000..9502f971 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitAchievementDescriptionBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 448e92ba77294429290b87ed2b924c30 +timeCreated: 1554358389 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardBinding.mm new file mode 100644 index 00000000..54fbab8b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardBinding.mm @@ -0,0 +1,151 @@ +// +// NPGameKitLeaderboardBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPGameKitManager.h" +#import "NPGameServicesDataTypes.h" +#import "NPKit.h" +#import "NPManagedPointerCache.h" + +// static fields +static GameServicesLoadArrayNativeCallback _loadLeaderboardsCallback = nil; +static GameServicesLoadScoresNativeCallback _loadLeaderboardScoresCallback = nil; +static GameServicesLoadImageNativeCallback _loadImageCallback = nil; +static GameServicesReportNativeCallback _reportScoreCallback = nil; + +#pragma mark - Utilities + +GKLeaderboard* getLeaderboard(const char* leaderboardId) +{ + NSString* baseIdentifier = NPCreateNSStringFromCString(leaderboardId); + return [[NPGameKitManager sharedManager] getLeaderboard:baseIdentifier]; +} + + +#pragma mark - Native binding calls + +NPBINDING DONTSTRIP void NPLeaderboardRegisterCallbacks(GameServicesLoadArrayNativeCallback loadLeaderboardsCallback, GameServicesLoadScoresNativeCallback loadScoresCallback, GameServicesLoadImageNativeCallback loadImageCallback, GameServicesReportNativeCallback reportScoreCallback) +{ + // set properties + _loadLeaderboardsCallback = loadLeaderboardsCallback; + _loadLeaderboardScoresCallback = loadScoresCallback; + _loadImageCallback = loadImageCallback; + _reportScoreCallback = reportScoreCallback; +} + +NPBINDING DONTSTRIP void NPLeaderboardLoadLeaderboards(const char** leaderboardIds, int length, void* tagPtr) +{ + NSArray* leaderboardIdArray = NPCreateArrayOfNSString(leaderboardIds, length); + + [[NPGameKitManager sharedManager] loadLeaderboards:leaderboardIdArray withCallback:^(NSArray * _Nullable leaderboards, NSError * _Nullable error) { + // send data + NPArray* nativeArray = NPCreateNativeArrayFromNSArray(leaderboards); + + if(_loadLeaderboardsCallback != nil) + { + _loadLeaderboardsCallback(nativeArray, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + } + + // release properties + delete(nativeArray); + }]; +} + +NPBINDING DONTSTRIP void* NPLeaderboardCreate(const char* leaderboardId) +{ + GKLeaderboard* leaderboard = getLeaderboard(leaderboardId); + return NPRetainWithOwnershipTransfer(leaderboard); +} + +NPBINDING DONTSTRIP const char* NPLeaderboardGetId(void* leaderboardPtr) +{ + GKLeaderboard* leaderboard = (__bridge GKLeaderboard*)leaderboardPtr; + return NPCreateCStringCopyFromNSString(leaderboard.baseLeaderboardID); +} + +NPBINDING DONTSTRIP const char* NPLeaderboardGetTitle(void* leaderboardPtr) +{ + GKLeaderboard* leaderboard = (__bridge GKLeaderboard*)leaderboardPtr; + return NPCreateCStringCopyFromNSString(leaderboard.title); +} + +NPBINDING DONTSTRIP void NPLeaderboardLoadScores(void* leaderboardPtr, GKLeaderboardPlayerScope playerScope, GKLeaderboardTimeScope timeScope, long startIndex, int count, void* tagPtr) +{ + GKLeaderboard* leaderboard = (__bridge GKLeaderboard*)leaderboardPtr; + leaderboard.range = NSMakeRange(startIndex, count); + + [leaderboard loadEntriesForPlayerScope:playerScope timeScope:timeScope range:NSMakeRange(startIndex, count) completionHandler:^(GKLeaderboardEntry * _Nullable_result localPlayerEntry, NSArray * _Nullable entries, NSInteger totalPlayerCount, NSError * _Nullable error) { + + //Ideally, if no score exists, as per apple documentation, localPlayerEntry should be nil. But thats not the case. So checking for validity of the player. + void* localPlayerEntryPtr = ((localPlayerEntry == nil) || localPlayerEntry.rank < 1) ? NULL : (__bridge void*)localPlayerEntry; + + // send data + NPArray* nativeArray = NPCreateNativeArrayFromNSArray(entries); + _loadLeaderboardScoresCallback(nativeArray, localPlayerEntryPtr, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + + // release properties + delete(nativeArray); + }]; +} + +NPBINDING DONTSTRIP void NPLeaderboardLoadImage(void* leaderboardPtr, void* tagPtr) +{ + GKLeaderboard* leaderboard = (__bridge GKLeaderboard*)leaderboardPtr; + [leaderboard loadImageWithCompletionHandler:^(UIImage* _Nullable image, NSError* _Nullable error) { + // send data + if (error) + { + _loadImageCallback(nil, -1, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + } + else + { + NSData* imageData = NPEncodeImageAsData(image, UIImageEncodeTypePNG); + _loadImageCallback((void*)[imageData bytes], (int)[imageData length], NPCreateError(nil), tagPtr); + } + }]; +} + +NPBINDING DONTSTRIP void NPLeaderboardShowView(const char* leaderboardID, int timeScope, void* tagPtr) +{ + // create view controller + GKGameCenterViewController* gameCenterVC; + + if (@available(iOS 14.0, *)) { + gameCenterVC = [[GKGameCenterViewController alloc] initWithLeaderboardID:NPCreateNSStringFromCString(leaderboardID) playerScope:GKLeaderboardPlayerScopeGlobal timeScope:(GKLeaderboardTimeScope)timeScope]; + } else { + // Fallback on earlier versions + gameCenterVC = [[GKGameCenterViewController alloc] init]; + gameCenterVC.viewState = GKGameCenterViewControllerStateLeaderboards; + gameCenterVC.leaderboardIdentifier = NPCreateNSStringFromCString(leaderboardID); + gameCenterVC.leaderboardTimeScope = (GKLeaderboardTimeScope)timeScope; + + } + [[NPGameKitManager sharedManager] showGameCenterViewController:gameCenterVC withTag:tagPtr]; +} + +NPBINDING DONTSTRIP void NPLeaderboardReportScore(void* leaderboardPtr, long value, const char* contextTag, void* tagPtr) +{ + GKLeaderboard* leaderboard = (__bridge GKLeaderboard*)leaderboardPtr; + + NSUInteger context; + NSString* tag = NPCreateNSStringFromCString(contextTag); + + if(tag != nil) + { + NSData* data = [tag dataUsingEncoding:NSASCIIStringEncoding]; + [data getBytes:&context length:sizeof(context)]; + } + else + { + context = -1; + } + + [leaderboard submitScore:value context:context player:[GKLocalPlayer localPlayer] completionHandler:^(NSError * _Nullable error) { + _reportScoreCallback(NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + }]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardBinding.mm.meta new file mode 100644 index 00000000..a390dbf3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: bb02a4d8aee3a40b7a61591b4960ad1f +timeCreated: 1554358389 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardScoreEntryBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardScoreEntryBinding.mm new file mode 100644 index 00000000..5a9f610c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardScoreEntryBinding.mm @@ -0,0 +1,54 @@ +// +// NPGameKitLeaderboardScoreEntryBinding.mm +// Essential Kit +// +// Created by Ayyappa Reddy on 08/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPGameServicesDataTypes.h" +#import "NPKit.h" + +#pragma mark - Native binding calls + +NPBINDING DONTSTRIP long NPLeaderboardScoreEntryGetRank(void* entryPtr) +{ + GKLeaderboardEntry* entry = (__bridge GKLeaderboardEntry*)entryPtr; + return entry.rank; +} + +NPBINDING DONTSTRIP long NPLeaderboardScoreEntryGetValue(void* entryPtr) +{ + GKLeaderboardEntry* entry = (__bridge GKLeaderboardEntry*)entryPtr; + return entry.score; +} + +NPBINDING DONTSTRIP const char* NPLeaderboardScoreEntryGetLastReportedDate(void* entryPtr) +{ + GKLeaderboardEntry* entry = (__bridge GKLeaderboardEntry*)entryPtr; + NSString* date = NPCreateNSStringFromNSDate(entry.date); + return NPCreateCStringCopyFromNSString(date); +} + +NPBINDING DONTSTRIP void* NPLeaderboardScoreEntryGetPlayer(void* entryPtr) +{ + GKLeaderboardEntry* entry = (__bridge GKLeaderboardEntry*)entryPtr; + return NPRetainWithOwnershipTransfer(entry.player); +} + +NPBINDING DONTSTRIP const char* NPLeaderboardScoreEntryGetTag(void* entryPtr) +{ + GKLeaderboardEntry* entry = (__bridge GKLeaderboardEntry*)entryPtr; + NSUInteger context = entry.context; + NSString* tag = nil; + if(context == -1) + { + NSData *bytes = [NSData dataWithBytes:&context length:sizeof(context)]; + tag = [[NSString alloc] initWithData:bytes encoding:NSASCIIStringEncoding]; + } + NSLog(@"Converted from %ld into %@", context, tag); + return NPCreateCStringCopyFromNSString(tag); +} + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardScoreEntryBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardScoreEntryBinding.mm.meta new file mode 100644 index 00000000..44968d33 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitLeaderboardScoreEntryBinding.mm.meta @@ -0,0 +1,89 @@ +fileFormatVersion: 2 +guid: 83d831b5c2fda4fe4b622a9446fa85a5 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 0 + settings: + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.h new file mode 100644 index 00000000..cc7b5f7f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.h @@ -0,0 +1,31 @@ +// +// NPGameKitObserver.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPGameServicesDataTypes.h" +#import "NPGameServicesError.h" + +@interface NPGameKitManager : NSObject + ++ (NPGameKitManager*_Nonnull)sharedManager; ++ (void)setGameCenterViewClosedCallback:(GameServicesViewClosedNativeCallback _Nullable )callback; ++ (void)setAuthChangeCallback:(GameServicesAuthStateChangeNativeCallback _Nullable )callback; ++ (void)setGameCenterLoadServerCredentialsCompleteCallback:(GameServicesLoadServerCredentialsNativeCallback _Nullable )callback; + +- (void)authenticate; +- (bool)isShowingGameCenterView; +- (void)showGameCenterViewController:(GKGameCenterViewController*_Nonnull)viewController withTag:(void*_Nullable)tagPtr; +- (void)loadServerCredentials: (void*_Nonnull) tagPtr; + +- (void)loadLeaderboards:(NSArray*_Nullable) leaderboardIdArray withCallback:(void(^_Nullable)(NSArray* _Nullable leaderboards, NPGameServicesError* _Nullable error)) callback; +- (GKLeaderboard*_Nullable) getLeaderboard: (NSString*_Nullable) baseIdentifier; + +//TODO: Move remaining methods from leaderboard and achievement binding classes to this. + +@end + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.h.meta new file mode 100644 index 00000000..b918840f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.h.meta @@ -0,0 +1,141 @@ +fileFormatVersion: 2 +guid: 7de67c979ca5f4bc9ab0d79b168314c8 +timeCreated: 1596468218 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.mm new file mode 100644 index 00000000..1a6855aa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.mm @@ -0,0 +1,289 @@ +// +// NPGameKitObserver.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPGameKitManager.h" +#import "NPKit.h" +#import "NPManagedPointerCache.h" +#import "UnityInterface.h" +#import "UIViewController+Presentation.h" + +// static fields +static NPGameKitManager* _sharedObserver = nil; + +static GameServicesViewClosedNativeCallback _gameCenterViewClosedCallback = nil; +static GameServicesAuthStateChangeNativeCallback _authChangeCallback = nil; +static GameServicesLoadServerCredentialsNativeCallback _gameCenterLoadServerCredentialsCallback = nil; + +NPBINDING DONTSTRIP void NPLeaderboardLoadLeaderboards(const char** leaderboardIds, int length, void* tagPtr); + +@interface NPGameKitManager () + +@property(nonatomic, strong) GKGameCenterViewController* gameCenterViewController; +@property(nonatomic) BOOL isInitialised; +@property(nonatomic, strong) NSArray* cachedLeaderboards; + +@end + +@implementation NPGameKitManager + +@synthesize gameCenterViewController = _gameCenterViewController; +@synthesize isInitialised = _isInitialised; +@synthesize cachedLeaderboards = _cachedLeaderboards; + +#pragma mark - Static methods + ++ (NPGameKitManager*)sharedManager +{ + if (nil == _sharedObserver) + { + _sharedObserver = [[NPGameKitManager alloc] init]; + } + + return _sharedObserver; +} + ++ (void)setGameCenterViewClosedCallback:(GameServicesViewClosedNativeCallback)callback +{ + _gameCenterViewClosedCallback = callback; +} + ++ (void)setAuthChangeCallback:(GameServicesAuthStateChangeNativeCallback)callback +{ + _authChangeCallback = callback; +} + ++ (void)setGameCenterLoadServerCredentialsCompleteCallback:(GameServicesLoadServerCredentialsNativeCallback)callback +{ + _gameCenterLoadServerCredentialsCallback = callback; +} + + + ++ (GKLocalPlayerAuthState)convertAuthFlagToEnumValue:(bool)isAuthenticated +{ + return isAuthenticated ? GKLocalPlayerAuthStateAvailable : GKLocalPlayerAuthStateNotFound; +} + +#pragma mark - Instance methods + +- (id)init +{ + self = [super init]; + if (self) + { + // register for system notification + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(authenticationDidChangeNotification:) name:GKPlayerAuthenticationDidChangeNotificationName + object:nil]; + } + + return self; +} + +- (void)dealloc +{ + // unregister from notification + [[NSNotificationCenter defaultCenter] removeObserver:self + name:GKPlayerAuthenticationDidChangeNotificationName + object:nil]; +} + +- (void)authenticate +{ + __weak GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer]; + + // check current status + if (!localPlayer.isAuthenticated) + { + // set auth handler + localPlayer.authenticateHandler = ^(UIViewController* viewController, NSError* error) { + + if(localPlayer.isAuthenticated) + { + NSLog(@"Player already authenticated..."); + } + else if (error != nil) + { + GKLocalPlayerAuthState state = [NPGameKitManager convertAuthFlagToEnumValue: localPlayer.isAuthenticated]; + NSError* resolvedError = (state == GKLocalPlayerAuthStateAvailable) ? nil : [NPGameServicesError createFrom:error]; + _authChangeCallback(state, NPCreateError(resolvedError)); + } + else if (viewController != nil) + { + // notify observer that we are authenticating the user + _authChangeCallback(GKLocalPlayerAuthStateAuthenticating, NPCreateError(nil)); + + // show corresponding view + [UnityGetGLViewController() presentViewController:viewController animated:YES completion:^{ + NSLog(@"Showing auth view."); + }]; + } + else + { + NSLog(@"Reached Unexpected case. Please report to the developer."); + } + };; + } + else + { + _authChangeCallback(GKLocalPlayerAuthStateAvailable, NPCreateError(nil)); + } +} + +- (bool)isShowingGameCenterView +{ + return (self.gameCenterViewController != nil); +} + +- (void)showGameCenterViewController:(GKGameCenterViewController*)viewController withTag:(void*)tagPtr +{ + // cache reference + self.gameCenterViewController = viewController; + + // configure contoller + _gameCenterViewController.gameCenterDelegate = self; + + // add instance to tracker + [[NPManagedPointerCache sharedInstance] addPointer:tagPtr forKey:_gameCenterViewController]; + + [UnityGetGLViewController() presentViewControllerInFullScreen: _gameCenterViewController + animated: YES + completion: nil]; +} + +- (void)loadServerCredentials: (void*) tagPtr +{ + + if(![[GKLocalPlayer localPlayer] isAuthenticated]) { + + _gameCenterLoadServerCredentialsCallback(nil, nil, NULL, nil, 0, 0, NPCreateError([NPGameServicesError notAuthenticated]), tagPtr); + + return; + } + + [[GKLocalPlayer localPlayer] fetchItemsForIdentityVerificationSignature:^(NSURL *publicKeyUrl, NSData *signature, NSData *salt, uint64_t timestamp, NSError *error) + { + if(error == nil) + { + NSString *publicKeyUrlString = [publicKeyUrl absoluteString]; + + _gameCenterLoadServerCredentialsCallback(NPCreateCStringCopyFromNSString(publicKeyUrlString), (void*)[signature bytes], (int)[signature length], (void*)[salt bytes], (int)[salt length], timestamp, NPCreateError(nil), tagPtr); + } + else + { + //TODO: Test different errors and pass the relevant error code + _gameCenterLoadServerCredentialsCallback(nil, nil, NULL, nil, 0, 0, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + } + + }]; +} + +#pragma mark - Notification callback + +- (void)authenticationDidChangeNotification:(NSNotification *)notification +{ + // notify listener + __weak GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer]; + GKLocalPlayerAuthState state = [NPGameKitManager convertAuthFlagToEnumValue: localPlayer.isAuthenticated]; + + if(state == GKLocalPlayerAuthStateAvailable && !_isInitialised) + { + [self loadLeaderboards:nil withCallback:^(NSArray * _Nullable leaderboards, NPGameServicesError * _Nullable error) { + self.isInitialised = TRUE; + if(error != nil) { + NSLog(@"Unexpected - Failed fetching leaderboards with error %@", error); + } + _authChangeCallback(state, NPCreateError(nil)); + }]; + } + else + { + _authChangeCallback(state, NPCreateError(nil)); + } +} + +#pragma mark - GKGameCenterControllerDelegate implementation + +- (void)gameCenterViewControllerDidFinish:(nonnull GKGameCenterViewController*)gameCenterViewController +{ + NSLog(@"[NativePlugins] Game center view closed."); + + // dimiss view controller + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil]; + + // invoke associated event + id key = gameCenterViewController; + void* pointer = [[NPManagedPointerCache sharedInstance] pointerForKey:key]; + if (pointer != nil) + { + _gameCenterViewClosedCallback(NPCreateError(nil), pointer); + } + + // reset properties + [[NPManagedPointerCache sharedInstance] removePointerForKey:key]; + self.gameCenterViewController = nil; +} + +#pragma mark - UIPopoverPresentationControllerDelegate implementation + +- (void)presentationControllerDidDismiss:(UIPresentationController*)presentationController +{ + GKGameCenterViewController* gcViewController = (GKGameCenterViewController*)presentationController.presentingViewController; + [self gameCenterViewControllerDidFinish:gcViewController]; +} + +#pragma mark - Leaderboards implementation + +- (void)loadLeaderboards:(NSArray*) leaderboardIdArray withCallback:(void(^_Nullable)(NSArray* _Nullable leaderboards, NPGameServicesError* _Nullable error)) callback +{ + [GKLeaderboard loadLeaderboardsWithIDs:leaderboardIdArray completionHandler:^(NSArray* _Nullable leaderboards, NSError* _Nullable error) { + + self.cachedLeaderboards = leaderboards; + + callback(leaderboards, [NPGameServicesError createFrom:error]); + }]; +} + +- (GKLeaderboard*) getLeaderboard: (NSString*) baseIdentifier +{ + if(_cachedLeaderboards == nil) { + NSLog(@"No cached leaderboards found. This can be because load leaderboards call fail to load. Contact developer."); + return nil; + } + + for (GKLeaderboard* each in _cachedLeaderboards) { + if([each.baseLeaderboardID isEqualToString:baseIdentifier]) { + return each; + } + } + + NSLog(@"No leaderboard found with platform identifier: %@", baseIdentifier); + return nil; +} + +@end + +#pragma mark - Native binding calls + +NPBINDING DONTSTRIP void NPGameServicesSetViewClosedCallback(GameServicesViewClosedNativeCallback callback) +{ + _gameCenterViewClosedCallback = callback; +} + +NPBINDING DONTSTRIP void NPGameServicesLoadServerCredentials(void* tagPtr) +{ + [[NPGameKitManager sharedManager] loadServerCredentials: tagPtr]; +} + +NPBINDING DONTSTRIP void NPGameServicesLoadServerCredentialsCompleteCallback(GameServicesLoadServerCredentialsNativeCallback callback) +{ + _gameCenterLoadServerCredentialsCallback = callback; +} + + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.mm.meta new file mode 100644 index 00000000..a3e1096e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitManager.mm.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 30e70c8333e08454da217da1ddfe8c4a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitPlayerBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitPlayerBinding.mm new file mode 100644 index 00000000..09d8c548 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitPlayerBinding.mm @@ -0,0 +1,166 @@ +// +// NPGameKitPlayerBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPGameKitManager.h" +#import "NPGameServicesDataTypes.h" +#import "NPKit.h" +#import "NPGameServicesError.h" + +// static fields +static GameServicesLoadArrayNativeCallback _loadPlayersCallback = nil; +static GameServicesLoadImageNativeCallback _loadImageCallback = nil; +static GameServicesViewClosedNativeCallback _viewClosedCallback = nil; + +#pragma mark - Native binding calls + +NPBINDING DONTSTRIP void NPPlayerRegisterCallbacks(GameServicesLoadArrayNativeCallback loadPlayersCallback, GameServicesLoadImageNativeCallback loadPlayerImageCallback, GameServicesViewClosedNativeCallback viewClosedCallback) +{ + // save reference to callback + _loadPlayersCallback = loadPlayersCallback; + _loadImageCallback = loadPlayerImageCallback; + _viewClosedCallback = viewClosedCallback; +} + +NPBINDING DONTSTRIP void NPPlayerLoadPlayers(const char** playerIds, int count, void* tagPtr) +{ + [GKPlayer loadPlayersForIdentifiers:NPCreateArrayOfNSString(playerIds, count) withCompletionHandler:^(NSArray* _Nullable players, NSError* _Nullable error) { + // send data + NPArray* nativeArray = NPCreateNativeArrayFromNSArray(players); + _loadPlayersCallback(nativeArray, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + + // release properties + delete(nativeArray); + }]; +} + +NPBINDING DONTSTRIP const char* NPPlayerGetLegacyId(void* playerPtr) +{ + GKPlayer* player = (__bridge GKPlayer*)playerPtr; + return NPCreateCStringCopyFromNSString(player.playerID); //Using for legacy id for backward compatibility +} + +NPBINDING DONTSTRIP const char* NPPlayerGetId(void* playerPtr) +{ + GKPlayer* player = (__bridge GKPlayer*)playerPtr; + if (@available(iOS 12.4, *)) { + return NPCreateCStringCopyFromNSString(player.gamePlayerID); + } else { + // Fallback on earlier versions + return NPPlayerGetLegacyId(playerPtr); + } +} + +NPBINDING DONTSTRIP const char* NPPlayerGetDeveloperScopeId(void* playerPtr) +{ + GKPlayer* player = (__bridge GKPlayer*)playerPtr; + if (@available(iOS 12.4, *)) { + return NPCreateCStringCopyFromNSString(player.teamPlayerID); + } else { + // Fallback on earlier versions + return NULL; + } +} + +NPBINDING DONTSTRIP const char* NPPlayerGetAlias(void* playerPtr) +{ + GKPlayer* player = (__bridge GKPlayer*)playerPtr; + return NPCreateCStringCopyFromNSString(player.alias); +} + +NPBINDING DONTSTRIP const char* NPPlayerGetDisplayName(void* playerPtr) +{ + GKPlayer* player = (__bridge GKPlayer*)playerPtr; + return NPCreateCStringCopyFromNSString(player.displayName); +} + +NPBINDING DONTSTRIP void NPPlayerLoadImage(void* playerPtr, void* tagPtr) +{ + GKPlayer* player = (__bridge GKPlayer*)playerPtr; + [player loadPhotoForSize:GKPhotoSizeNormal withCompletionHandler:^(UIImage* _Nullable photo, NSError* _Nullable error) { + // send data + if (error) + { + _loadImageCallback(nil, -1, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + } + else + { + NSData* imageData = NPEncodeImageAsData(photo, UIImageEncodeTypePNG); + _loadImageCallback((void*)[imageData bytes], (int)[imageData length], NPCreateError(nil), tagPtr); + } + }]; +} + +NPBINDING DONTSTRIP void NPLocalPlayerRegisterCallbacks(GameServicesAuthStateChangeNativeCallback authChangeCallback) +{ + // set value + [NPGameKitManager setAuthChangeCallback:authChangeCallback]; +} + +NPBINDING DONTSTRIP void* NPLocalPlayerGetLocalPlayer() +{ + return (__bridge void*)[GKLocalPlayer localPlayer]; +} + +NPBINDING DONTSTRIP void NPLocalPlayerAuthenticate() +{ + [[NPGameKitManager sharedManager] authenticate]; +} + +NPBINDING DONTSTRIP bool NPLocalPlayerIsAuthenticated() +{ + return [[GKLocalPlayer localPlayer] isAuthenticated]; +} + +NPBINDING DONTSTRIP bool NPLocalPlayerIsUnderage() +{ + return [[GKLocalPlayer localPlayer] isUnderage]; +} + +NPBINDING DONTSTRIP void NPLocalPlayerLoadFriends(void* tagPtr) +{ + [[GKLocalPlayer localPlayer] loadFriendsAuthorizationStatus:^(GKFriendsAuthorizationStatus authorizationStatus, NSError * _Nullable error) { + + if(error != nil) + { + NSLog(@"Failed getting authorization status. Friends authorization status %ld", authorizationStatus); + _loadPlayersCallback(NPCreateNativeArrayFromNSArray(nil), NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + + return; + } + + [[GKLocalPlayer localPlayer] loadFriends:^(NSArray * _Nullable friends, NSError * _Nullable error) { + + NPArray* nativeArray = NPCreateNativeArrayFromNSArray(friends); + _loadPlayersCallback(nativeArray, NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + + // release properties + delete(nativeArray); + }]; + }]; + + +} + +NPBINDING DONTSTRIP void NPLocalPlayerShowAddFriendRequestView(const char* playerId, void* tagPtr) +{ + NSError *error = nil; + [[GKLocalPlayer localPlayer] presentFriendRequestCreatorFromViewController:UnityGetGLViewController() error: &error]; + + if(_viewClosedCallback != nil) + { + if(error != nil ) + { + _viewClosedCallback(NPCreateError([NPGameServicesError createFrom:error]), tagPtr); + } + else + { + _viewClosedCallback(NPCreateError(nil), tagPtr); + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitPlayerBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitPlayerBinding.mm.meta new file mode 100644 index 00000000..e90291a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameKitPlayerBinding.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 5603c9bdccdc04cd780a919421763915 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesDataTypes.h new file mode 100644 index 00000000..f8c26db9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesDataTypes.h @@ -0,0 +1,38 @@ +// +// NPGameServicesDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPDefines.h" +#import "NPUnityDataTypes.h" + +#pragma mark - Enums + +typedef enum : NSInteger +{ + GKLocalPlayerAuthStateNotFound, + GKLocalPlayerAuthStateAuthenticating, + GKLocalPlayerAuthStateAvailable, +} GKLocalPlayerAuthState; + +#pragma mark - Callback definitions + +// callback signatures +typedef void (*GameServicesLoadArrayNativeCallback)(NPArray* nativeArray, NPError error, void* tagPtr); + +typedef void (*GameServicesLoadScoresNativeCallback)(NPArray* nativeArray, void* scorePtr,NPError error, void* tagPtr); + +typedef void (*GameServicesReportNativeCallback)(NPError error, void* tagPtr); + +typedef void (*GameServicesAuthStateChangeNativeCallback)(GKLocalPlayerAuthState state, NPError error); + +typedef void (*GameServicesLoadImageNativeCallback)(void* dataPtr, int dataLength, NPError error, void* tagPtr); + +typedef void (*GameServicesViewClosedNativeCallback)(NPError error, void* tagPtr); + +typedef void (*GameServicesLoadServerCredentialsNativeCallback)(const char* publicKeyUrl, void* signaturePtr, int signatureDataLength, void* saltPtr, int saltDataLength, long timestamp, NPError error, void* tagPtr); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesDataTypes.h.meta new file mode 100644 index 00000000..eec3882d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesDataTypes.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 9e7d0376291444140a6b53897a134303 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.h new file mode 100644 index 00000000..5ef6989e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.h @@ -0,0 +1,36 @@ +// +// NPGameServicesError.h +// Native Plugins +// +// Created by Ayyappa Reddy +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPGameServicesDataTypes.h" + +#define Domain @"Game Services" + +typedef enum : NSInteger +{ + GameServicesErrorCodeUnknown, + GameServicesErrorCodeSystemIssue, + GameServicesErrorCodeNetworkIssue, + GameServicesErrorCodeNotAllowed, + GameServicesErrorCodeDataNotAvailable, + GameServicesErrorCodeNotSupported, + GameServicesErrorCodeConfigurationIssue, + GameServicesErrorCodeInvalidInput, + GameServicesErrorCodeNotAuthenticated +} GameServicesErrorCode; + + +@interface NPGameServicesError : NSError + ++(NPGameServicesError*) createFrom:(NSError*) error; ++(NPGameServicesError*) unknown; ++(NPGameServicesError*) notAuthenticated; ++(NPGameServicesError*) dataNotAvailable; + + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.h.meta new file mode 100644 index 00000000..03084247 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.h.meta @@ -0,0 +1,141 @@ +fileFormatVersion: 2 +guid: 8b4c2802a21f242f294b7e41f79881f9 +timeCreated: 1596468218 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.mm new file mode 100644 index 00000000..732b7675 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.mm @@ -0,0 +1,103 @@ +// +// NPGameServicesError.mm +// Native Plugins +// +// Created by Ayyappa Reddy +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + + +#import "NPGameServicesError.h" +#import + +@interface NPGameServicesError () + ++(NPGameServicesError*) createFrom:(GameServicesErrorCode) code withDescription:(NSString*) errorDescription; + +@end + +@implementation NPGameServicesError + ++(NPGameServicesError*) createFrom:(NSError*) error +{ + if(error == nil) + return nil; + + GameServicesErrorCode errorCode; + + switch (error.code) { + + case GKErrorInvalidCredentials: + case GKErrorInvalidParameter: + case GKErrorInvalidPlayer: + errorCode = GameServicesErrorCodeInvalidInput; + break; + + case GKErrorNotAuthenticated: + errorCode = GameServicesErrorCodeNotAuthenticated; + break; + + case GKErrorGameUnrecognized: + case GKErrorFriendListDescriptionMissing: + errorCode = GameServicesErrorCodeConfigurationIssue; + break; + + case GKErrorNotSupported: + errorCode = GameServicesErrorCodeNotSupported; + break; + + case GKErrorPlayerPhotoFailure: + errorCode = GameServicesErrorCodeDataNotAvailable; + break; + + case GKErrorNotAuthorized: + case GKErrorFriendListRestricted: + case GKErrorFriendListDenied: + errorCode = GameServicesErrorCodeNotAllowed; + break; + + case GKErrorConnectionTimeout: + case GKErrorCommunicationsFailure: + errorCode = GameServicesErrorCodeNetworkIssue; + break; + + + case GKErrorLockdownMode: + errorCode = GameServicesErrorCodeSystemIssue; + break; + + default: + NSLog(@"[Game Services] %ld error code not handled - Inform developer to handle this error code: ", error.code); + errorCode = GameServicesErrorCodeUnknown; + break; + } + + return [NPGameServicesError createFrom:errorCode + withDescription:error.description]; +} + ++(NPGameServicesError*) unknown +{ + return [NPGameServicesError createFrom: GameServicesErrorCodeUnknown withDescription: @"Unknown error"]; +} + ++(NPGameServicesError*) notAuthenticated +{ + return [NPGameServicesError createFrom: GameServicesErrorCodeNotAuthenticated withDescription: @"Player not authenticated"]; +} + ++(NPGameServicesError*) dataNotAvailable +{ + return [NPGameServicesError createFrom: GameServicesErrorCodeUnknown withDescription: @"Data not available"]; +} + + + ++(NPGameServicesError*) createFrom:(GameServicesErrorCode) code withDescription:(NSString*) errorDescription +{ + return [NPGameServicesError errorWithDomain:Domain + code:(int)code + userInfo:@{NSLocalizedDescriptionKey: errorDescription}]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.mm.meta new file mode 100644 index 00000000..952254da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/GameServices/NPGameServicesError.mm.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 60bbcdaeacdf345f593537fb81081493 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices.meta new file mode 100644 index 00000000..bec2f349 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7476d714b4bd2415a80dfc5757de561e +folderAsset: yes +timeCreated: 1579516040 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/MediaServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/MediaServices.asset new file mode 100644 index 00000000..40b2dfa5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/MediaServices.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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: MediaServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: AVFoundation.framework + m_target: 4 + m_isOptional: 0 + - m_name: Photos.framework + m_target: 4 + m_isOptional: 1 + - m_name: PhotosUI.framework + m_target: 4 + m_isOptional: 1 + - m_name: UniformTypeIdentifiers.framework + m_target: 4 + m_isOptional: 1 + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/MediaServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/MediaServices.asset.meta new file mode 100644 index 00000000..19f59bcb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/MediaServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ec6d868b9290542748b9e957ec01ec49 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.h new file mode 100644 index 00000000..1a1823aa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.h @@ -0,0 +1,38 @@ +// +// NPMediaContent.h +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPMediaServicesError.h" + +typedef void (^AsRawDataCompletionCallback)(NSData* data, NSString* mime, NPMediaServicesError* error); +typedef void (^AsFilePathCompletionCallback)(NSString* path, NPMediaServicesError* error); + + +@interface NPMediaContent: NSObject + +-(void) asRawData: (AsRawDataCompletionCallback) callback; +-(void) asFilePath: (NSString*) destinationDirectory withFileName:(NSString*) fileName withCallback:(AsFilePathCompletionCallback) callback; + +@end + + +@interface NPItemProviderMediaContent : NPMediaContent +-(instancetype) initWithItemProvider:(NSItemProvider*) itemProvider; +@end + +@interface NPRawDataMediaContent : NPMediaContent +-(instancetype) initWithContentData:(NSData*) contentData withMime:(NSString*) mime; +@end + +@interface NPContentUrlMediaContent : NPMediaContent +-(instancetype) initWithContentUrl:(NSURL*) contentUrl; +@end + + +@interface NSURL (Mime) +-(NSString*) getMimeTypeFromUrl; +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.h.meta new file mode 100644 index 00000000..fad0c0b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.h.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: 4f00cf94a19134d5c910f2eb9d2159ad +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.mm new file mode 100644 index 00000000..40b3d374 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.mm @@ -0,0 +1,240 @@ +// +// NPMediaContent.mm +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// +#import "NPMediaContent.h" +#import +#import "NPUnityDataTypes.h" +#import "NPBindingHelper.h" + +@implementation NPMediaContent //Should be implemented by other dervived classes + +-(void) asRawData: (AsRawDataCompletionCallback) callback +{ + [[NSException exceptionWithName:NSInvalidArgumentException + reason:[NSString stringWithFormat:@"You must override %@ in a subclass to use this method", NSStringFromSelector(_cmd)] + userInfo:nil] raise]; +} + +-(void) asFilePath: (NSString*) destinationDirectory withFileName:(NSString*) fileName withCallback:(AsFilePathCompletionCallback) callback +{ + [[NSException exceptionWithName:NSInvalidArgumentException + reason:[NSString stringWithFormat:@"You must override %@ in a subclass to use this method", NSStringFromSelector(_cmd)] + userInfo:nil] raise]; +} + +@end + + +@interface NPItemProviderMediaContent () +@property (nonatomic, strong) NSItemProvider* itemProvider; +@end + +@implementation NPItemProviderMediaContent +@synthesize itemProvider; + +-(instancetype) initWithItemProvider:(NSItemProvider*) itemProvider +{ + self = [super init]; + self.itemProvider = itemProvider; + + return self; +} + +-(void) asRawData: (AsRawDataCompletionCallback) callback +{ + //NSLog(@"registeredTypeIdentifiers : %@", self.itemProvider.registeredTypeIdentifiers); + UTType* type = [self getType: self.itemProvider]; + [self.itemProvider loadDataRepresentationForTypeIdentifier:type.identifier + completionHandler:^(NSData * _Nullable data, NSError * _Nullable error) { + if([self.itemProvider hasItemConformingToTypeIdentifier:UTTypeImage.identifier]) { + UIImage *image = [UIImage imageWithData:data]; + callback(NPEncodeImageAsData(image, UIImageEncodeTypePNG), UTTypePNG.preferredMIMEType, nil); + } else { + callback(data, type.preferredMIMEType, [NPMediaServicesError createFrom:error]); + } + }]; +} + +-(void) asFilePath: (NSString*) destinationDirectory withFileName:(NSString*) fileName withCallback:(AsFilePathCompletionCallback) callback +{ + UTType* type = [self getType: self.itemProvider]; + + [self.itemProvider loadFileRepresentationForTypeIdentifier:type.identifier + completionHandler:^(NSURL * _Nullable url, NSError * _Nullable error) { + + if(error != nil) + { + callback(nil, [NPMediaServicesError createFrom:error]); + return; + } + + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSString *filePath = [NSString stringWithFormat:@"%@/%@.%@",destinationDirectory, fileName, type.preferredFilenameExtension]; + NSURL *destinationUrl = [[NSURL alloc] initFileURLWithPath:filePath]; + + //Create required directories + [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:TRUE attributes:nil error:nil]; + + NSError *fileMoveError; + [fileManager removeItemAtURL:destinationUrl error:nil]; + [fileManager moveItemAtURL:url toURL:destinationUrl error:&fileMoveError]; + + callback(filePath, [NPMediaServicesError createFrom:fileMoveError]); + }]; +} + +-(UTType*) getType:(NSItemProvider*) itemProvider +{ + UTType* type = UTTypeContent; + NSString *typeIdentifier = [self.itemProvider.registeredTypeIdentifiers objectAtIndex:0]; + if(typeIdentifier != nil) + { + // Any overrides goes here + if([typeIdentifier containsString:@"live-photo"]) + { + NSLog(@"Considering jpeg for live photo formats."); + type = UTTypeJPEG; + } + else + { + type = [UTType typeWithIdentifier:typeIdentifier]; + } + } + + return type; +} + + +@end + + +@interface NPRawDataMediaContent () +@property (nonatomic, strong) NSData* contentData; +@property (nonatomic, strong) NSString* mime; +@end + +@implementation NPRawDataMediaContent +@synthesize contentData; +@synthesize mime; + +-(instancetype) initWithContentData:(NSData*) contentData withMime:(NSString*) mime +{ + self = [super init]; + self.contentData = contentData; + self.mime = mime; + return self; +} + +-(void) asRawData: (AsRawDataCompletionCallback) callback +{ + callback(contentData, mime, [self getErrorIfNoData]); +} + +-(void) asFilePath: (NSString*) destinationDirectory withFileName:(NSString*) fileName withCallback:(AsFilePathCompletionCallback) callback +{ + NPMediaServicesError* error = [self getErrorIfNoData]; + + if(error != nil) + { + callback(nil, error); + return; + } + + UTType *type = [UTType typeWithMIMEType:mime]; + NSString *filePath = [NSString stringWithFormat:@"%@/%@.%@",destinationDirectory, fileName, type.preferredFilenameExtension]; + NSURL *destinationUrl = [[NSURL alloc] initFileURLWithPath:filePath]; + + //Create required directories + NSFileManager *fileManager = [NSFileManager defaultManager]; + [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:TRUE attributes:nil error:nil]; + [fileManager removeItemAtURL:destinationUrl error:nil]; + + + [contentData writeToURL:destinationUrl atomically:YES]; + + callback(filePath, nil); +} + +-(NPMediaServicesError*) getErrorIfNoData +{ + if(contentData == nil) + { + return [NPMediaServicesError dataNotAvailable]; + } + + return nil; +} + +@end + +@interface NPContentUrlMediaContent () +@property (nonatomic, strong) NSURL* contentUrl; +@end + +@implementation NPContentUrlMediaContent +@synthesize contentUrl; + +-(instancetype) initWithContentUrl:(NSURL *)contentUrl +{ + self = [super init]; + self.contentUrl = contentUrl; + return self; +} + +-(void) asRawData: (AsRawDataCompletionCallback) callback +{ + NSData *data = [NSData dataWithContentsOfURL:contentUrl]; + callback(data, [contentUrl getMimeTypeFromUrl], [self getErrorIfNoData]); +} + +-(void) asFilePath: (NSString*) destinationDirectory withFileName:(NSString*) fileName withCallback:(AsFilePathCompletionCallback) callback +{ + NPMediaServicesError* error = [self getErrorIfNoData]; + + if(error != nil) + { + callback(nil, error); + return; + } + + UTType *type = [UTType typeWithMIMEType:[contentUrl getMimeTypeFromUrl]]; + NSString *filePath = [NSString stringWithFormat:@"%@/%@.%@",destinationDirectory, fileName, type.preferredFilenameExtension]; + NSURL *destinationUrl = [[NSURL alloc] initFileURLWithPath:filePath]; + + //Create required directories + NSFileManager *fileManager = [NSFileManager defaultManager]; + [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:TRUE attributes:nil error:nil]; + [fileManager removeItemAtURL:destinationUrl error:nil]; + + NSError* moveError; + [fileManager moveItemAtURL:contentUrl toURL:destinationUrl error:&moveError]; + if(moveError != nil) { + NSLog(@"Error when moving: %@", moveError); + } + + callback(moveError != nil ? filePath : nil, [NPMediaServicesError createFrom:moveError]); +} + +-(NPMediaServicesError*) getErrorIfNoData +{ + if(contentUrl == nil) + { + return [NPMediaServicesError dataNotAvailable]; + } + + return nil; +} +@end + +@implementation NSURL (Mime) +-(NSString*) getMimeTypeFromUrl +{ + NSString* extension = [self pathExtension]; + UTType *type = [UTType typeWithFilenameExtension:extension]; + return type.preferredMIMEType; +} +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.mm.meta new file mode 100644 index 00000000..0db52df2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaContent.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: ec8754e42811a4db68503d2f851afec0 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.h new file mode 100644 index 00000000..e46dd397 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.h @@ -0,0 +1,59 @@ +// +// NPMediaServices.h +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. + +#import "NPMediaContent.h" +#import +#import +#import "NPMediaServicesError.h" + +typedef enum : NSInteger +{ + MediaContentCaptureTypeImage, + MediaContentCaptureTypeVideo +} MediaContentCaptureType; + +typedef void (^SelectMediaContentCallback) (NSArray *contents, NPMediaServicesError* error); +typedef void (^CaptureMediaContentCallback)(NPMediaContent *content, NPMediaServicesError* error); +typedef void (^SaveMediaContentCallback)(BOOL success, NPMediaServicesError* error); + +@interface MediaContentSelectionOptions : NSObject + +@property (strong, nonatomic) NSString *title; +@property (strong, nonatomic) NSString *allowedMimeType; +@property (nonatomic) int maxAllowed; +@property (nonatomic) BOOL showPermissionDialog; + +@end + + + +@interface MediaContentCaptureOptions : NSObject + +@property (nonatomic) MediaContentCaptureType captureType; +@property (strong, nonatomic) NSString *title; +@property (nonatomic) NSString* fileName; + +@end + + +@interface MediaContentSaveOptions : NSObject + +@property (strong, nonatomic) NSString *directoryName; +@property (strong, nonatomic) NSString *fileName; + +@end + + +@interface NPMediaServices : NSObject + ++ (NPMediaServices*)sharedInstance; +-(void) selectMediaContent:(MediaContentSelectionOptions*) options withCallback:(SelectMediaContentCallback) callback; +-(void) captureMediaContent:(MediaContentCaptureOptions*) options withCallback:(CaptureMediaContentCallback) callback; +-(void) saveMediaContent:(NSData*) data withMimeType:(NSString*) mime withOptions:(MediaContentSaveOptions*) options withCallback:(SaveMediaContentCallback) callback; +@end + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.h.meta new file mode 100644 index 00000000..f1ada5ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.h.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: c0dc9da272726470d88bf72adb98ceca +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.mm new file mode 100644 index 00000000..595d08f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.mm @@ -0,0 +1,379 @@ +// +// NPMediaServices.mm +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPMediaServices.h" +#import "NPKit.h" +#import "UIViewController+Presentation.h" +#include "Unity/UnityInterface.h" + + +#import +#import +#import + + +static NPMediaServices* _sharedInstance; + + +@implementation MediaContentSelectionOptions +@end + +@implementation MediaContentCaptureOptions +@end + +@implementation MediaContentSaveOptions +@end + +@interface NPMediaServices () +@property (nonatomic, copy) SelectMediaContentCallback selectMediaContentCallback; +@property (nonatomic, copy) CaptureMediaContentCallback captureMediaContentCallback; +@property (nonatomic, copy) SaveMediaContentCallback saveMediaContentCallback; + +@end + +@implementation NPMediaServices +@synthesize selectMediaContentCallback; +@synthesize captureMediaContentCallback; +@synthesize saveMediaContentCallback; + ++ (NPMediaServices*)sharedInstance +{ + if (!_sharedInstance) + { + _sharedInstance = [[NPMediaServices alloc] init]; + } + return _sharedInstance; +} + +-(void) selectMediaContent:(MediaContentSelectionOptions*) options withCallback:(SelectMediaContentCallback) callback +{ + NSString *mimeType = options.allowedMimeType; + + self.selectMediaContentCallback = callback; + + if([self isImageMime:mimeType] || [self isVideoMime:mimeType]) + { + [self pickWithPhotoPicker:mimeType options:options]; + } + else + { + [self pickWithDocumentPicker:options]; + } +} + +-(void) captureMediaContent:(MediaContentCaptureOptions*) options withCallback:(CaptureMediaContentCallback) callback +{ + if(options.captureType == MediaContentCaptureTypeImage || options.captureType == MediaContentCaptureTypeVideo) + { + [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { + // send callback + AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; + + if(status == AVAuthorizationStatusAuthorized) + { + dispatch_async(dispatch_get_main_queue(), ^{ + UIImagePickerController* picker = [[UIImagePickerController alloc] init]; + picker.delegate = self; + picker.sourceType = UIImagePickerControllerSourceTypeCamera; + NSArray* types = @[options.captureType == MediaContentCaptureTypeImage ? UTTypeImage.identifier : UTTypeMovie.identifier]; + picker.mediaTypes = types; + self.captureMediaContentCallback = callback; + + [self presentPicker:picker]; + }); + } + else + { + NPMediaServicesError *error = [NPMediaServicesError permissionNotAvailable]; + NSLog(@"Error capturing media content %@", error); + + if(callback != nil) + { + callback(nil, error); + } + } + }]; + } + else + { + [[NSException exceptionWithName:NSInvalidArgumentException reason:@"This Capture type is not implemented." userInfo:@{NSLocalizedDescriptionKey: @"Capture type not implemented."}] raise]; + } +} + +-(void) saveMediaContent:(NSData*) data withMimeType:(NSString*) mime withOptions:(MediaContentSaveOptions*) options withCallback:(SaveMediaContentCallback) callback +{ + NSString* fileNameWithExtension = [NSString stringWithFormat:@"%@.%@", options.fileName, [UTType typeWithMIMEType: mime].preferredFilenameExtension]; + NSURL *url = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:fileNameWithExtension]]; + [data writeToURL:url atomically:YES]; + + + if([self isImageMime:mime] || [self isVideoMime:mime]) + { + //Use PHLibrary for adding this content (image/video) + [self saveWithPhotoLibrary:url mime:mime options:options callback: callback]; + } + else + { + [self saveWithDocumentPicker:url mime:mime options:options callback: callback]; + } +} + +- (void)pickWithPhotoPicker:(NSString *)mimeType options:(MediaContentSelectionOptions *)options { + PHPickerConfiguration *configuration = [[PHPickerConfiguration alloc] init]; + configuration.selectionLimit = options.maxAllowed; + configuration.filter = [self isImageMime: mimeType] ? PHPickerFilter.imagesFilter : PHPickerFilter.videosFilter; + + PHPickerViewController *controller = [[PHPickerViewController alloc] initWithConfiguration: configuration]; + //controller.modalPresentationStyle = UIModalPresentationFullScreen; + controller.presentationController.delegate = self; + controller.delegate = self; + + [self presentPicker:controller]; +} + +- (void)pickWithDocumentPicker:(MediaContentSelectionOptions *)options { + UTType *allowedUTType = [UTType typeWithMIMEType: options.allowedMimeType]; + NSArray *contentTypes = (allowedUTType != NULL) ? @[allowedUTType] : @[UTTypeContent]; + UIDocumentPickerViewController *controller = [[UIDocumentPickerViewController alloc] initForOpeningContentTypes:contentTypes]; + controller.allowsMultipleSelection = options.maxAllowed > 1 || options.maxAllowed == 0; //No option to limit max elements that can be selected + controller.delegate = self; + + [self presentPicker:controller]; +} + +-(void) presentPicker:(UIViewController*) controller +{ + [UnityGetGLViewController() presentViewController:controller animated:YES completion: ^{ + NPLog(@"Finished presenting picker controller"); + }]; +} + +-(void) saveWithPhotoLibrary:(NSURL*) url mime:(NSString*) mime options:(MediaContentSaveOptions*) options callback:(SaveMediaContentCallback) callback{ + + [self requestPhotoLibraryPermission:PHAccessLevelAddOnly withCallback:^(BOOL isAuthorised, NSError *error) { + if(error != nil) + { + if(callback != nil) + { + callback(FALSE, [NPMediaServicesError createFrom:error]); + } + return; + } + + [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ + PHAssetChangeRequest *createdAssetRequest = [self createAssetChangeRequest:url isImage: [self isImageMime:mime]]; + + if(options.directoryName != nil) //This may need additional permissions (like giving full access to photos as we need to fetch existing album before creating one. + { + [self addToAlbumCollection:createdAssetRequest albumName:options.directoryName]; + } + } + completionHandler:^(BOOL success, NSError * _Nullable error) { + if(callback != nil) + { + callback(success, [NPMediaServicesError createFrom:error]); + } + } + ]; + }]; +} + +-(void) requestPhotoLibraryPermission:(PHAccessLevel) accessLevel withCallback:(void(^)(BOOL isAuthorised, NSError* error))callback +{ + [PHPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus status) { + switch (status) { + case PHAuthorizationStatusAuthorized: + if(callback != nil) + { + callback(TRUE, nil); + } + break; + default: + if(callback != nil) + { + callback(FALSE, [NPMediaServicesError permissionNotAvailable]); + } + } + }]; +} + +- (PHAssetChangeRequest *)createAssetChangeRequest:(NSURL *)url isImage:(BOOL) isImage { + PHAssetChangeRequest *assetRequest = isImage ? [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:url] : [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:url]; + return assetRequest; +} + +- (void)addToAlbumCollection:(PHAssetChangeRequest *)createdAssetRequest albumName:(NSString *)albumName { + PHAssetCollection *existingAlbumCollection = [self getAlbumCollectionIfExists: albumName]; + PHAssetCollectionChangeRequest *collectionChangeRequest = nil; + + if(existingAlbumCollection != nil) + { + collectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection: existingAlbumCollection]; + } + else + { + collectionChangeRequest = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:albumName]; + } + + [collectionChangeRequest addAssets:@[createdAssetRequest]]; +} + + +- (PHAssetCollection*)getAlbumCollectionIfExists:(NSString*) albumName +{ + PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init]; + fetchOptions.predicate = [NSPredicate predicateWithFormat:@"title = %@", albumName]; + PHFetchResult *fetchResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum + subtype:PHAssetCollectionSubtypeAny + options:fetchOptions]; + if(fetchResult.count > 0) + { + return [fetchResult objectAtIndex:0]; + } + + return nil; +} + +-(void) saveWithDocumentPicker:(NSURL *)url mime:(NSString *)mime options:(MediaContentSaveOptions *)options callback: (SaveMediaContentCallback) callback{ + + self.saveMediaContentCallback = callback; + UIDocumentPickerViewController *controller = [[UIDocumentPickerViewController alloc] initForExportingURLs:@[url] asCopy:FALSE]; + controller.delegate = self; + +} + +-(BOOL) isImageMime:(NSString*) mime +{ + return [mime hasPrefix:@"image/"]; +} + +-(BOOL) isVideoMime:(NSString*) mime +{ + return [mime hasPrefix:@"video/"]; +} + +- (void)picker:(nonnull PHPickerViewController *)picker didFinishPicking:(nonnull NSArray *)results { + + NSLog(@"PHPickerViewController didFinishPicking: %ld %@", [results count], results); + [picker dismissViewControllerAnimated:YES completion:nil]; + + if(self.selectMediaContentCallback != nil) + { + + if([results count] == 0) + { + self.selectMediaContentCallback(nil, [NPMediaServicesError userCancelled]); + } + else + { + NSMutableArray *mediaContents = [NSMutableArray array]; + for (PHPickerResult *eachResult in results) { + [mediaContents addObject:[[NPItemProviderMediaContent alloc] initWithItemProvider: eachResult.itemProvider]]; + } + + self.selectMediaContentCallback(mediaContents, nil); + } + + self.selectMediaContentCallback = nil; + } +} + +- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls +{ + if(self.selectMediaContentCallback != nil) + { + NSMutableArray *mediaContents = [NSMutableArray array]; + + for (NSURL *eachUrl in urls) { + [mediaContents addObject:[[NPContentUrlMediaContent alloc] initWithContentUrl: eachUrl]]; + } + + self.selectMediaContentCallback(mediaContents, nil); + self.selectMediaContentCallback = nil; + } + else if(self.saveMediaContentCallback != nil) + { + self.saveMediaContentCallback(TRUE, nil); + } +} + +- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller +{ + if(self.selectMediaContentCallback != nil) + { + self.selectMediaContentCallback(nil, [NPMediaServicesError userCancelled]); + self.selectMediaContentCallback = nil; + } + else if(self.saveMediaContentCallback != nil) + { + self.selectMediaContentCallback(nil, [NPMediaServicesError userCancelled]); + self.saveMediaContentCallback = nil; + } +} + +#pragma mark - UIImagePickerControllerDelegate methods + +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + NPLog(@"Did finish picking media with info: %@", info); + + [picker dismissViewControllerAnimated:YES completion:nil]; + + NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; + NPMediaContent *mediaContent = nil; + + if([mediaType isEqualToString:UTTypeMovie.identifier] || [mediaType isEqualToString:UTTypeVideo.identifier]) + { + NSURL *mediaUrl = [info objectForKey: UIImagePickerControllerMediaURL]; + mediaContent = [[NPContentUrlMediaContent alloc] initWithContentUrl:mediaUrl]; + } + else + { + UIImage* editedImage = [info objectForKey:UIImagePickerControllerEditedImage]; + UIImage* originalImage = [info objectForKey:UIImagePickerControllerOriginalImage]; + + UIImage* selectedImage = editedImage ? editedImage : originalImage; + NSData* imageData = NPEncodeImageAsData(selectedImage, UIImageEncodeTypePNG); + + mediaContent = [[NPRawDataMediaContent alloc] initWithContentData:imageData withMime:UTTypePNG.preferredMIMEType]; + } + + if(self.captureMediaContentCallback != nil) + { + self.captureMediaContentCallback(mediaContent, nil); + self.captureMediaContentCallback = nil; + } +} + +- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker +{ + [picker dismissViewControllerAnimated:YES completion:nil]; + + if(self.captureMediaContentCallback != nil) + { + self.captureMediaContentCallback(nil, [NPMediaServicesError userCancelled]); + self.captureMediaContentCallback = nil; + } +} + +- (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController API_AVAILABLE(ios(13.0)) +{ + if(self.selectMediaContentCallback != nil) + { + self.selectMediaContentCallback(nil, [NPMediaServicesError userCancelled]); + self.selectMediaContentCallback = nil; + NSLog(@"presentationController %@", presentationController); + } + else + { + NSLog(@"Presentation handler dimiss not handled"); + } +} + + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.mm.meta new file mode 100644 index 00000000..c7f64dd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServices.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 31970e8661ca0442094eb160a5a31642 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesBinding.mm new file mode 100644 index 00000000..0fc7ca22 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesBinding.mm @@ -0,0 +1,86 @@ +// +// NPMediaServicesBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPMediaServicesDataTypes.h" +#import "NPKit.h" +#import "NPMediaServices.h" +#import "NPMediaContent.h" + +#pragma mark - NPMediaServices Binding + +NPBINDING DONTSTRIP PHAuthorizationStatus NPMediaServicesGetPhotoLibraryAccessStatus() +{ + return [PHPhotoLibrary authorizationStatus]; +} + +NPBINDING DONTSTRIP AVAuthorizationStatus NPMediaServicesGetCameraAccessStatus() +{ + return [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; +} + + +NPBINDING DONTSTRIP void NPMediaServicesSelectMediaContent(MediaContentSelectionOptionsData optionsData, void* tagPtr, SelectMediaContentNativeCallback callback) +{ + MediaContentSelectionOptions *options = [[MediaContentSelectionOptions alloc] init]; + options.title = NPCreateNSStringFromCString(optionsData.title); + options.allowedMimeType = NPCreateNSStringFromCString(optionsData.allowedMimeType); + options.maxAllowed = optionsData.maxAllowed; + options.showPermissionDialog = optionsData.showPermissionDialog; + + [[NPMediaServices sharedInstance] selectMediaContent:options withCallback:^(NSArray *contents, NSError *error) { + + NPArray *mediaContents = NPCreateNativeArrayFromNSArray(contents); + callback(mediaContents, NPCreateError(error), tagPtr); + }]; +} + +NPBINDING DONTSTRIP void NPMediaServicesCaptureMediaContent(MediaContentCaptureOptionsData optionsData, void* tagPtr, CaptureMediaContentNativeCallback callback) +{ + MediaContentCaptureOptions *options = [[MediaContentCaptureOptions alloc] init]; + options.captureType = (MediaContentCaptureType)optionsData.captureType; + options.title = NPCreateNSStringFromCString(optionsData.title); + options.fileName = NPCreateNSStringFromCString(optionsData.fileName); + + [[NPMediaServices sharedInstance] captureMediaContent:options withCallback:^(NPMediaContent *content, NSError *error) { + callback(content ? NPRetainWithOwnershipTransfer(content) : nil, NPCreateError(error), tagPtr); + }]; +} + +NPBINDING DONTSTRIP void NPMediaServicesSaveMediaContent(void* bytes, long length, const char* mime, MediaContentSaveOptionsData optionsData, void* tagPtr, SaveMediaContentNativeCallback callback) +{ + MediaContentSaveOptions *options = [[MediaContentSaveOptions alloc] init]; + options.directoryName = NPCreateNSStringFromCString(optionsData.directoryName); + options.fileName = NPCreateNSStringFromCString(optionsData.fileName); + + [[NPMediaServices sharedInstance] saveMediaContent:[NSData dataWithBytes:bytes length:length] + withMimeType: NPCreateNSStringFromCString(mime) + withOptions:options + withCallback:^(BOOL success, NSError *error) { + callback(success, NPCreateError(error), tagPtr); + }]; +} + +#pragma mark - NPMediaContent Binding + +NPBINDING DONTSTRIP void NPMediaContentAsRawData(void* mediaContentPtr, void* tagPtr, MediaContentAsRawDataNativeCallback callback) +{ + NPMediaContent* mediaContent = (__bridge NPMediaContent*)mediaContentPtr; + [mediaContent asRawData:^(NSData *data, NSString* mime, NSError *error) { + callback((void*)[data bytes], (int)[data length], NPCreateCStringFromNSString(mime) ,NPCreateError(error),tagPtr); + }]; +} + + +NPBINDING DONTSTRIP void NPMediaContentAsFilePath(void* mediaContentPtr, const char* directoryName, const char* fileName, void* tagPtr, MediaContentAsFilePathNativeCallback callback) +{ + NPMediaContent* mediaContent = (__bridge NPMediaContent*)mediaContentPtr; + [mediaContent asFilePath:NPCreateNSStringFromCString(directoryName) withFileName:NPCreateNSStringFromCString(fileName) withCallback:^(NSString *path, NSError *error) { + callback(NPCreateCStringFromNSString(path), NPCreateError(error), tagPtr); + }]; +} + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesBinding.mm.meta new file mode 100644 index 00000000..9b48c493 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: cb82de38a5a2342d49202b81323ed8a2 +timeCreated: 1554385161 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesDataTypes.h new file mode 100644 index 00000000..d78d1f70 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesDataTypes.h @@ -0,0 +1,61 @@ +// +// NPMediaServicesDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPKit.h" + +// enums +typedef enum : NSInteger +{ + PickImageFinishReasonCancelled, + PickImageFinishReasonFailed, + PickImageFinishReasonSuccess, +} PickImageFinishReason; + +struct MediaContentSelectionOptionsData +{ + const char* title; + const char* allowedMimeType; + int maxAllowed; + bool showPermissionDialog; +}; +typedef struct MediaContentSelectionOptionsData MediaContentSelectionOptionsData; + +struct MediaContentCaptureOptionsData +{ + int captureType; + const char* title; + const char* fileName; +}; +typedef struct MediaContentCaptureOptionsData MediaContentCaptureOptionsData; + +struct MediaContentSaveOptionsData +{ + const char* directoryName; + const char* fileName; +}; +typedef struct MediaContentSaveOptionsData MediaContentSaveOptionsData; + + + +// callback signatures +typedef void (*RequestPhotoLibraryAccessNativeCallback)(PHAuthorizationStatus status, const char* error, void* tagPtr); +typedef void (*RequestCameraAccessNativeCallback)(AVAuthorizationStatus status, const char* error, void* tagPtr); +typedef void (*PickImageNativeCallback)(void* imageDataPtr, PickImageFinishReason reasonCode, void* tagPtr); +typedef void (*SaveImageToAlbumNativeCallback)(bool success, const char* error, void* tagPtr); + +typedef void (*SelectMediaContentNativeCallback)(NPArray* mediaContents, NPError error, void* tagPtr); +typedef void (*CaptureMediaContentNativeCallback)(void* mediaContentPtr, NPError error, void* tagPtr); +typedef void (*SaveMediaContentNativeCallback)(bool success, NPError error, void* tagPtr); + + +typedef void (*MediaContentAsRawDataNativeCallback)(void* mediaContentDataPtr, int dataLength, const char* mime, NPError error, void* tagPtr); +typedef void (*MediaContentAsFilePathNativeCallback)(const char* pathPtr, NPError error, void* tagPtr); + + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesDataTypes.h.meta new file mode 100644 index 00000000..bfbe9ca8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesDataTypes.h.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 988d5c580d1ca41328afc870fd9de84e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.h new file mode 100644 index 00000000..374235ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.h @@ -0,0 +1,28 @@ +// +// NPMediaContent.h +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + +#define Domain @"Media Services" + +typedef enum : NSInteger +{ + MediaServicesErrorCodeUnknown, + MediaServicesErrorCodePermissionNotAvailable, + MediaServicesErrorCodeUserCancelled, + MediaServicesErrorCodeDataNotAvailable +} MediaServicesErrorCode; + + +@interface NPMediaServicesError : NSError + ++(NPMediaServicesError*) createFrom:(NSError*) error; ++(NPMediaServicesError*) unknown; ++(NPMediaServicesError*) permissionNotAvailable; ++(NPMediaServicesError*) userCancelled; ++(NPMediaServicesError*) dataNotAvailable; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.h.meta new file mode 100644 index 00000000..f05ddc70 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.h.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: f3337b4a744cc4d8f85f8a8ed2235910 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.mm new file mode 100644 index 00000000..1a921467 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.mm @@ -0,0 +1,65 @@ +// +// NPMediaContent.mm +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// +#import "NPMediaServicesError.h" + +@interface NPMediaServicesError () + ++(NPMediaServicesError*) createFrom:(MediaServicesErrorCode) code withDescription:(NSString*) errorDescription; + +@end + +@implementation NPMediaServicesError + ++(NPMediaServicesError*) createFrom:(NSError*) error +{ + if(error == nil) + return nil; + + MediaServicesErrorCode errorCode; + + switch (error.code) { + + default: + NSLog(@"[Media Services] %ld error code not handled - Inform developer to handle this error code: ", error.code); + errorCode = MediaServicesErrorCodeUnknown; + break; + } + + return [NPMediaServicesError createFrom:errorCode + withDescription:error.description]; +} + ++(NPMediaServicesError*) unknown +{ + return [NPMediaServicesError createFrom: MediaServicesErrorCodeUnknown withDescription: @"Unknown error"]; +} + ++(NPMediaServicesError*) permissionNotAvailable +{ + return [NPMediaServicesError createFrom: MediaServicesErrorCodePermissionNotAvailable withDescription: @"Permission not available"]; +} + ++(NPMediaServicesError*) userCancelled +{ + return [NPMediaServicesError createFrom: MediaServicesErrorCodeUserCancelled withDescription: @"User cancelled operation"]; +} + ++ (NPMediaServicesError *)dataNotAvailable { + return [NPMediaServicesError createFrom: MediaServicesErrorCodeUserCancelled withDescription: @"No data available"]; +} + + + ++(NPMediaServicesError*) createFrom:(MediaServicesErrorCode) code withDescription:(NSString*) errorDescription +{ + return [NPMediaServicesError errorWithDomain:Domain + code:(int)code + userInfo:@{NSLocalizedDescriptionKey: errorDescription}]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.mm.meta new file mode 100644 index 00000000..08cf271e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/MediaServices/NPMediaServicesError.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: e6eeb66da477e4da2aebb6bce7037625 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI.meta new file mode 100644 index 00000000..ed8072c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 26570a24a92594505a6d68b133be42b0 +folderAsset: yes +timeCreated: 1579516340 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPAlertControllerBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPAlertControllerBinding.mm new file mode 100644 index 00000000..2f3c7232 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPAlertControllerBinding.mm @@ -0,0 +1,78 @@ +// +// NPAlertControllerBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPKit.h" +#import "NPUIManager.h" + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP void NPAlertControllerRegisterCallback(NativeAlertActionSelectCallback actionSelectCallback) +{ + [NPUIManager setAlertActionSelectCallback:actionSelectCallback]; +} + +NPBINDING DONTSTRIP void* NPAlertControllerCreate(const char* title, const char* message, UIAlertControllerStyle preferredStyle) +{ + UIAlertController* alert = [UIAlertController alertControllerWithTitle:NPCreateNSStringFromCString(title) + message:NPCreateNSStringFromCString(message) + preferredStyle:preferredStyle]; + return NPRetainWithOwnershipTransfer(alert); +} + +NPBINDING DONTSTRIP void NPAlertControllerShow(void* nativePtr) +{ + UIAlertController* alert = (__bridge UIAlertController*)nativePtr; + [[NPUIManager sharedManager] showAlertController:alert]; +} + +NPBINDING DONTSTRIP void NPAlertControllerDismiss(void* nativePtr) +{ + UIAlertController* alert = (__bridge UIAlertController*)nativePtr; + [[NPUIManager sharedManager] dismissAlertController:alert]; +} + +NPBINDING DONTSTRIP void NPAlertControllerSetTitle(void* nativePtr, const char* value) +{ + UIAlertController* alert = (__bridge UIAlertController*)nativePtr; + [alert setTitle:NPCreateNSStringFromCString(value)]; +} + +NPBINDING DONTSTRIP const char* NPAlertControllerGetTitle(void* nativePtr) +{ + UIAlertController* alert = (__bridge UIAlertController*)nativePtr; + NSString* title = [alert title]; + return NPCreateCStringCopyFromNSString(title); +} + +NPBINDING DONTSTRIP void NPAlertControllerSetMessage(void* nativePtr, const char* value) +{ + UIAlertController* alert = (__bridge UIAlertController*)nativePtr; + [alert setMessage:NPCreateNSStringFromCString(value)]; +} + +NPBINDING DONTSTRIP const char* NPAlertControllerGetMessage(void* nativePtr) +{ + UIAlertController* alert = (__bridge UIAlertController*)nativePtr; + NSString* message = [alert message]; + return NPCreateCStringCopyFromNSString(message); +} + +NPBINDING DONTSTRIP void NPAlertControllerAddAction(void* nativePtr, const char* text, bool isCancelType) +{ + UIAlertController* alert = (__bridge UIAlertController*)nativePtr; + + // create action + UIAlertAction* action = [UIAlertAction actionWithTitle:NPCreateNSStringFromCString(text) + style:isCancelType ? UIAlertActionStyleCancel : UIAlertActionStyleDefault + handler:^(UIAlertAction* _Nonnull action) { + [[NPUIManager sharedManager] alertController:alert didSelectAction:action]; + }]; + // add action to controller + [alert addAction:action]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPAlertControllerBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPAlertControllerBinding.mm.meta new file mode 100644 index 00000000..9c71399c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPAlertControllerBinding.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 2f6c902f45e9a4a39add02a2162e8f9e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPDatePickerControllerBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPDatePickerControllerBinding.mm new file mode 100644 index 00000000..44547a31 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPDatePickerControllerBinding.mm @@ -0,0 +1,25 @@ +// +// NPDatePickerControllerBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPKit.h" +#import "NPUIManager.h" + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP void NPDatePickerControllerRegisterCallback(NativeDatePickerControllerCallback callback) +{ + [NPUIManager setDatePickerControllerCallback:callback]; +} + + +NPBINDING DONTSTRIP void NPDatePickerControllerShow(UIDatePickerMode mode, long initialEpoch, long minimumEpoch, long maximumEpoch, void* tagPtr) +{ + [[NPUIManager sharedManager] showDatePicker:mode withInitialDate:initialEpoch withMinimumDate:minimumEpoch withMaximumDate:maximumEpoch tagPtr:tagPtr]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPDatePickerControllerBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPDatePickerControllerBinding.mm.meta new file mode 100644 index 00000000..d1554557 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPDatePickerControllerBinding.mm.meta @@ -0,0 +1,104 @@ +fileFormatVersion: 2 +guid: e57690b4f7e7746499548b4d27197715 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.h new file mode 100644 index 00000000..d34633bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.h @@ -0,0 +1,29 @@ +// +// NPUIManager.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import + +// signature +typedef void (*NativeAlertActionSelectCallback)(void* nativePtr, int selectedActionIndex); +typedef void (*NativeDatePickerControllerCallback)(long selectedValue, void* tagPtr); + +@interface NPUIManager : NSObject + ++ (NPUIManager*)sharedManager; ++ (void)setAlertActionSelectCallback:(NativeAlertActionSelectCallback)callback; ++ (void)setDatePickerControllerCallback:(NativeDatePickerControllerCallback)callback; + +// presentation methods +- (void)showAlertController:(UIAlertController*)alertController; +- (void)dismissAlertController:(UIAlertController*)alertController; +- (void) showDatePicker:(UIDatePickerMode) mode withInitialDate:(long) initialDateTime withMinimumDate:(long) min withMaximumDate:(long) max tagPtr:(void*)tagPtr; + +// callback methods +- (void)alertController:(UIAlertController*)alertController didSelectAction:(UIAlertAction*)action; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.h.meta new file mode 100644 index 00000000..3c93def7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.h.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 159f5812022bc45b085d29bc971378fe +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.mm new file mode 100644 index 00000000..44629974 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.mm @@ -0,0 +1,157 @@ +// +// NPUIManager.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPUIManager.h" +#import "NPKit.h" +#import "UIViewController+Presentation.h" +#import "UIAlertController+DatePicker.h" + +static NPUIManager* _sharedManager = nil; +static NativeAlertActionSelectCallback _alertActionSelectCallback = nil; +static NativeDatePickerControllerCallback _datePickerControllerCallback = nil; + + +@interface NPUIManager () +@end + +@implementation NPUIManager +void* cachedTagPtr; + ++ (NPUIManager*)sharedManager +{ + if (nil == _sharedManager) + { + _sharedManager = [[NPUIManager alloc] init]; + } + return _sharedManager; +} + ++ (void)setAlertActionSelectCallback:(NativeAlertActionSelectCallback)callback +{ + // save references + _alertActionSelectCallback = callback; +} + ++ (void)setDatePickerControllerCallback:(NativeDatePickerControllerCallback)callback +{ + _datePickerControllerCallback = callback; +} + +- (void)showAlertController:(UIAlertController*)alertController +{ + // present view contoller + CGRect viewFrame = [UnityGetGLView() frame]; + CGPoint spawnPoint = CGPointMake(CGRectGetMidX(viewFrame), CGRectGetMidY(viewFrame)); + [UnityGetGLViewController() presentViewControllerInPopoverStyleIfRequired:alertController + withDelegate:self + fromPosition:spawnPoint + permittedArrowDirections:UIPopoverArrowDirectionAny + animated:YES + completion:nil]; +} + +- (void)dismissAlertController:(UIAlertController *)alertController +{ + UIViewController* parentVC = UnityGetGLViewController(); + if (parentVC.presentedViewController == alertController) + { + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:^{ + NSLog(@"[NativePlugins] Dismissing alert controller."); + }]; + } +} + +- (void) showDatePicker:(UIDatePickerMode) mode withInitialDate:(long) initialDateTime withMinimumDate:(long) min withMaximumDate:(long) max tagPtr:(void*)tagPtr { + + + UIAlertController *controller = [UIAlertController create: mode + withInitialDate:(initialDateTime == -1) ? nil : [NSDate dateWithTimeIntervalSince1970:initialDateTime] + withMinimumDate:(min == -1) ? nil : [NSDate dateWithTimeIntervalSince1970:min] + withMaximumDate:(max == -1) ? nil : [NSDate dateWithTimeIntervalSince1970:max] + withTag:tagPtr + withCallback: ^(NSDate * selectedDate, void* tag) { + if(_datePickerControllerCallback != nil) { + _datePickerControllerCallback(selectedDate == nil ? -1 : (long)([selectedDate timeIntervalSince1970]), tag); + } + }]; + + CGRect viewFrame = [UnityGetGLView() frame]; + CGPoint spawnPoint = CGPointMake(CGRectGetMidX(viewFrame), CGRectGetMidY(viewFrame)); + cachedTagPtr = tagPtr; + [UnityGetGLViewController() presentViewControllerInPopoverStyleIfRequired:controller + withDelegate:self + fromPosition:spawnPoint + animated:YES + completion:nil]; +} + +#pragma mark - Callback methods + +- (void)alertController:(UIAlertController*)alertController didSelectAction:(UIAlertAction*)action +{ + // get selected button index + NSUInteger selectedActionIndex = [[alertController actions] indexOfObject:action]; + NSLog(@"[NativePlugins] Selected alert action is at index: %lu", (unsigned long)selectedActionIndex); + + // dimiss view controller + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil]; + + + UIAlertController* retainAlertController = alertController; + + // invoke associated event + if(_alertActionSelectCallback != nil) + { + _alertActionSelectCallback((__bridge void*)retainAlertController, (int)selectedActionIndex); + } +} + +#pragma mark - UIPopoverPresentationControllerDelegate implementation + +- (void)presentationControllerDidDismiss:(UIPresentationController*)presentationController +{ + UIViewController *controller = presentationController.presentedViewController; + + if (controller != nil && [controller class] == [UIAlertController class]) + { + UIAlertController* alertController = (UIAlertController*)controller; + + // find cancel button + NSArray* actions = [alertController actions]; + UIAlertAction* targetAction = nil; + for (UIAlertAction* action in actions) + { + if (action.style == UIAlertActionStyleCancel || action.style == UIAlertActionStyleDestructive) + { + targetAction = action; + break; + } + } + // fallback case, select first available button + if (targetAction == nil && [actions count] > 0) + { + targetAction = actions[0]; + } + // invoke callback + if (targetAction) + { + [self alertController:alertController didSelectAction:targetAction]; + } + } + else if (controller != nil && [controller class] == [UIAlertController class]) + { + UIAlertController* datePickerController = (UIAlertController*)controller; + NSLog(@"Date picker controller dismissed : %@", datePickerController); + + if(_datePickerControllerCallback != nil) { + _datePickerControllerCallback(-1, cachedTagPtr); + } + } +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.mm.meta new file mode 100644 index 00000000..eff60b44 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NPUIManager.mm.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 181c8fcd0a2054aa5b9b8e7411d5522b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NativeUI.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NativeUI.asset new file mode 100644 index 00000000..9a2c5bf4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NativeUI.asset @@ -0,0 +1,22 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: NativeUI + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: [] + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NativeUI.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NativeUI.asset.meta new file mode 100644 index 00000000..1d185d71 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/NativeUI.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 76bfedf5ca953455d9a70f32435074d7 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.h new file mode 100644 index 00000000..5dfb03ad --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.h @@ -0,0 +1,18 @@ +// +// UIAlertController+DatePicker.h +// Unity-iPhone +// +// Created by Ayyappa J on 02/12/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^DatePickerFinishCallback)(NSDate* _Nullable, void* tagPtr); + +@interface UIAlertController (DatePicker) ++ (instancetype)create:(UIDatePickerMode) mode withInitialDate:(NSDate*) initialDateTime withMinimumDate:(NSDate*) minimumDate withMaximumDate:(NSDate*) maximumDate withTag:(void*) tagPtr withCallback:(DatePickerFinishCallback) callback; +@end + +NS_ASSUME_NONNULL_END diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.h.meta new file mode 100644 index 00000000..79e14dda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.h.meta @@ -0,0 +1,39 @@ +fileFormatVersion: 2 +guid: f75d932a26a7f43f3b256cf2f663388d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.m b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.m new file mode 100644 index 00000000..6e99b1f9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.m @@ -0,0 +1,73 @@ +// +// NPDatePickerViewController.m +// Unity-iPhone +// +// Created by Ayyappa J on 02/12/20. +// + +#import "UIAlertController+DatePicker.h" +#import "UIViewController+Presentation.h" +#import "UIView+LayoutConstraints.h" + +static const float kOffset = 26.0f; + +@implementation UIAlertController (DatePicker) + + ++ (id)create:(UIDatePickerMode) mode withInitialDate:(NSDate*) initialDate withMinimumDate:(NSDate*) minimumDate withMaximumDate:(NSDate*) maximumDate withTag:(nonnull void *)tagPtr withCallback:(DatePickerFinishCallback) callback; +{ + UIAlertController *controller = [UIAlertController alertControllerWithTitle:@"Select" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; + [controller setup:mode withInitialDate:initialDate withMinimumDate:minimumDate withMaximumDate:maximumDate withTag:tagPtr withCallback:callback]; + return controller; +} + +- (void)setup:(UIDatePickerMode) mode withInitialDate:(NSDate*) initialDate withMinimumDate:(NSDate*) minimumDate withMaximumDate:(NSDate*) maximumDate withTag:(nonnull void *)tagPtr withCallback:(DatePickerFinishCallback) callback; +{ + UIDatePicker *datePicker = [[UIDatePicker alloc] init]; + + #ifdef __IPHONE_13_4 + if (@available(iOS 13.4, *)) { + datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; + } + #endif + + //[self.view setBackgroundColor:[UIColor clearColor]]; + datePicker.datePickerMode = mode; + + [datePicker setDate:initialDate]; + [datePicker setMinimumDate:minimumDate]; + [datePicker setMaximumDate:maximumDate]; + [self.view addSubview: datePicker]; + + + UIAlertAction* selectAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault + handler:^(UIAlertAction * action) { + NSLog(@"Date picker ok clicked"); + //[self dismissViewControllerAnimated:true completion:nil]; + + if(callback != nil) + { + callback([datePicker date], tagPtr); + } + + }]; + + UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel + handler:^(UIAlertAction * action) { + NSLog(@"Date picker cancel clicked"); + if(callback != nil) + { + callback(nil, tagPtr); + } + }]; + + [self addAction:selectAction]; + [self addAction:cancelAction]; + + + [datePicker setTranslatesAutoresizingMaskIntoConstraints:false]; + [datePicker.widthAnchor constraintEqualToAnchor:self.view.widthAnchor].active = true; + [datePicker.topAnchor constraintEqualToAnchor:self.view.topAnchor constant:kOffset].active = true; + [datePicker.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor constant: (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? -(kOffset * 2) : -(kOffset * 4)].active = true; +} +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.m.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.m.meta new file mode 100644 index 00000000..867792dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NativeUI/UIAlertController+DatePicker.m.meta @@ -0,0 +1,49 @@ +fileFormatVersion: 2 +guid: 2178762cd582c4f7981f8ae9e4c50028 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices.meta new file mode 100644 index 00000000..6fa3e1c5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4be210d0fb77a4743815d72172d13ef1 +folderAsset: yes +timeCreated: 1579516065 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesBinding.mm new file mode 100644 index 00000000..7da87944 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesBinding.mm @@ -0,0 +1,216 @@ +// +// NPNetworkServicesBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "Reachability.h" +#import "NPKit.h" +#import "NPNetworkServicesDataTypes.h" + +static ReachabilityChangeNativeCallback _internetReachabilityChangeCallback = nil; +static ReachabilityChangeNativeCallback _hostReachabilityChangeCallback = nil; + +#pragma mark - Custom definitions + +@interface NetworkReachabilityObserver : NSObject + +@property(nonatomic) NetworkStatus internetReachabilityStatus; +@property(nonatomic) NetworkStatus hostReachabilityStatus; +@property(nonatomic, copy) NSString* hostAddress; + +-(void)startReachabilityNotifier; +-(void)stopReachabilityNotifier; + +@end + +@interface NetworkReachabilityObserver () + +@property(nonatomic) Reachability* internetReachability; +@property(nonatomic) Reachability* hostReachability; + +@end + +@implementation NetworkReachabilityObserver + +@synthesize internetReachabilityStatus = _internetReachabilityStatus; +@synthesize internetReachability = _internetReachability; + +@synthesize hostAddress = _hostAddress; +@synthesize hostReachabilityStatus = _hostReachabilityStatus; +@synthesize hostReachability = _hostReachability; + +-(id)init +{ + self = [super init]; + if (self) + { + // set default values + _internetReachabilityStatus = NotReachable; + _hostReachabilityStatus = NotReachable; + + // register for notification + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(reachabilityChanged:) + name:kNPReachabilityChangedNotification + object:nil]; + } + return self; +} + +-(void)dealloc +{ + // stop process + [self stopReachabilityNotifier]; + + // unregister from events + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +-(void)startReachabilityNotifier +{ + // stop existing process + [self stopReachabilityNotifier]; + + // create new process + [self startInternetReachabilityNotifier]; + [self startHostReachabilityNotifier]; +} + +-(void)startInternetReachabilityNotifier +{ + // create new instance + self.internetReachability = [Reachability reachabilityForInternetConnection]; + [self.internetReachability startNotifier]; + [self updateInternetReachabilityStatus]; +} + +-(void)startHostReachabilityNotifier +{ + // check whether host address info is available + if (!self.hostAddress) + return; + + struct sockaddr_in6 addr; + memset(&addr, 0, sizeof(struct sockaddr_in6)); + addr.sin6_len = sizeof(struct sockaddr_in6); + addr.sin6_family = AF_INET6; + inet_pton(AF_INET6, [_hostAddress UTF8String], &addr.sin6_addr); + + // create new instance + self.hostReachability = [Reachability reachabilityWithAddress:(const struct sockaddr*)&addr]; + [self.hostReachability startNotifier]; + [self updateHostReachabilityStatus]; +} + +-(void)stopReachabilityNotifier +{ + // stop active process + [self stopReachabilityNotifier:self.internetReachability]; + [self stopReachabilityNotifier:self.hostReachability]; + + // reset fields + self.internetReachability = nil; + self.hostReachability = nil; +} + +-(void)stopReachabilityNotifier:(Reachability*)reachability +{ + if (reachability) + { + [reachability stopNotifier]; + } +} + +#pragma mark - Setter methods + +-(void)setInternetReachabilityStatus:(NetworkStatus)value +{ + if (value != _internetReachabilityStatus) + { + _internetReachabilityStatus = value; + _internetReachabilityChangeCallback((value != NotReachable), value); + } +} + +-(void)setHostReachabilityStatus:(NetworkStatus)value +{ + if (value != _hostReachabilityStatus) + { + _hostReachabilityStatus = value; + _hostReachabilityChangeCallback((value != NotReachable), value); + } +} + +#pragma mark - Notification methods + +- (void)reachabilityChanged:(NSNotification*)notification +{ + id object = [notification object]; + if ([object isKindOfClass:[Reachability class]]) + { + if (object == self.internetReachability) + { + [self updateInternetReachabilityStatus]; + } + else if (object == self.hostReachability) + { + [self updateHostReachabilityStatus]; + } + } +} + +- (void)updateInternetReachabilityStatus +{ + self.internetReachabilityStatus = [self.internetReachability currentReachabilityStatus]; +} + +- (void)updateHostReachabilityStatus +{ + self.hostReachabilityStatus = [self.hostReachability currentReachabilityStatus]; +} + +@end + +#pragma mark - Native binding methods + +static NetworkReachabilityObserver* _sharedObserver = nil; + +NPBINDING DONTSTRIP void NPNetworkServicesRegisterCallbacks(ReachabilityChangeNativeCallback internetReachabilityChangeCallback, ReachabilityChangeNativeCallback hostReachabilityChangeCallback) +{ + _internetReachabilityChangeCallback = internetReachabilityChangeCallback; + _hostReachabilityChangeCallback = hostReachabilityChangeCallback; +} + +NPBINDING DONTSTRIP void NPNetworkServicesInit(const char* hostAddress) +{ + if (!_sharedObserver) + { + _sharedObserver = [[NetworkReachabilityObserver alloc] init]; + [_sharedObserver setHostAddress:NPCreateNSStringFromCString(hostAddress)]; + } +} + +NPBINDING DONTSTRIP void NPNetworkServicesStartReachabilityNotifier() +{ + [_sharedObserver startReachabilityNotifier]; +} + +NPBINDING DONTSTRIP void NPNetworkServicesStopReachabilityNotifier() +{ + [_sharedObserver stopReachabilityNotifier]; +} + +NPBINDING DONTSTRIP NetworkStatus NPNetworkServicesGetInternetReachabilityStatus() +{ + return _sharedObserver.internetReachabilityStatus; +} + +NPBINDING DONTSTRIP NetworkStatus NPNetworkServicesGetHostReachabilityStatus() +{ + return _sharedObserver.hostReachabilityStatus; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesBinding.mm.meta new file mode 100644 index 00000000..39a67ae2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 617a5a2ea13bc481890fe36acb09d841 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesDataTypes.h new file mode 100644 index 00000000..b855ad66 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesDataTypes.h @@ -0,0 +1,12 @@ +// +// NPNetworkServicesDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "Reachability.h" + +// callback signatures +typedef void (*ReachabilityChangeNativeCallback)(bool isReachable, NetworkStatus networkStatus); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesDataTypes.h.meta new file mode 100644 index 00000000..62c35d20 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NPNetworkServicesDataTypes.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 272c093f81d464c449398699c725ec89 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NetworkServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NetworkServices.asset new file mode 100644 index 00000000..4523a040 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NetworkServices.asset @@ -0,0 +1,25 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: NetworkServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: SystemConfiguration.framework + m_target: 4 + m_isOptional: 0 + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NetworkServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NetworkServices.asset.meta new file mode 100644 index 00000000..7e8f32bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/NetworkServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 20770ef2aa73e41e2a6b01a32b216cb5 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.h new file mode 100644 index 00000000..29fb1262 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.h @@ -0,0 +1,104 @@ +/* + Sample code project: Reachability + Version: 5.0 + + IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2016 Apple Inc. All Rights Reserved. + + Abstract: + Basic demonstration of how to use the SystemConfiguration Reachablity APIs. + */ + +#import +#import +#import + + +typedef enum : NSInteger { + NotReachable = 0, + ReachableViaWiFi, + ReachableViaWWAN +} NetworkStatus; + +#pragma mark IPv6 Support +//Reachability fully support IPv6. For full details, see ReadMe.md. + + +extern NSString *kNPReachabilityChangedNotification; + + +@interface Reachability : NSObject + +/*! + * Use to check the reachability of a given host name. + */ ++ (instancetype)reachabilityWithHostName:(NSString *)hostName; + +/*! + * Use to check the reachability of a given IP address. + */ ++ (instancetype)reachabilityWithAddress:(const struct sockaddr *)hostAddress; + +/*! + * Checks whether the default route is available. Should be used by applications that do not connect to a particular host. + */ ++ (instancetype)reachabilityForInternetConnection; + + +#pragma mark reachabilityForLocalWiFi +//reachabilityForLocalWiFi has been removed from the sample. See ReadMe.md for more information. +//+ (instancetype)reachabilityForLocalWiFi; + +/*! + * Start listening for reachability notifications on the current run loop. + */ +- (BOOL)startNotifier; +- (void)stopNotifier; + +- (NetworkStatus)currentReachabilityStatus; + +/*! + * WWAN may be available, but not active until a connection has been established. WiFi may require a connection for VPN on Demand. + */ +- (BOOL)connectionRequired; + +@end + + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.h.meta new file mode 100644 index 00000000..7d9c45a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 81e513c43eaf84c8da94d8a6ca314d5e +timeCreated: 1553496635 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.m b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.m new file mode 100644 index 00000000..a738a944 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.m @@ -0,0 +1,282 @@ +/* + Sample code project: Reachability + Version: 5.0 + + IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2016 Apple Inc. All Rights Reserved. + + Abstract: + Basic demonstration of how to use the SystemConfiguration Reachablity APIs. + */ + +#import +#import +#import +#import +#import + +#import + +#import "Reachability.h" + +#pragma mark IPv6 Support +//Reachability fully support IPv6. For full details, see ReadMe.md. + + +NSString *kNPReachabilityChangedNotification = @"kNetworkReachabilityChangedNotification"; + + +#pragma mark - Supporting functions + +#define kShouldPrintReachabilityFlags 1 + +static void PrintReachabilityFlags(SCNetworkReachabilityFlags flags, const char* comment) +{ +#if kShouldPrintReachabilityFlags + + NSLog(@"Reachability Flag Status: %c%c %c%c%c%c%c%c%c %s\n", + (flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-', + (flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-', + + (flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-', + (flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-', + (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-', + (flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-', + (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-', + (flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-', + (flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-', + comment + ); +#endif +} + + +static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) +{ +#pragma unused (target, flags) + NSCAssert(info != NULL, @"info was NULL in ReachabilityCallback"); + NSCAssert([(__bridge NSObject*) info isKindOfClass: [Reachability class]], @"info was wrong class in ReachabilityCallback"); + + Reachability* noteObject = (__bridge Reachability *)info; + // Post a notification to notify the client that the network reachability changed. + [[NSNotificationCenter defaultCenter] postNotificationName: kNPReachabilityChangedNotification object: noteObject]; +} + + +#pragma mark - Reachability implementation + +@implementation Reachability +{ + SCNetworkReachabilityRef _reachabilityRef; +} + ++ (instancetype)reachabilityWithHostName:(NSString *)hostName +{ + Reachability* returnValue = NULL; + SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, [hostName UTF8String]); + if (reachability != NULL) + { + returnValue= [[self alloc] init]; + if (returnValue != NULL) + { + returnValue->_reachabilityRef = reachability; + } + else { + CFRelease(reachability); + } + } + return returnValue; +} + + ++ (instancetype)reachabilityWithAddress:(const struct sockaddr *)hostAddress +{ + SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, hostAddress); + + Reachability* returnValue = NULL; + + if (reachability != NULL) + { + returnValue = [[self alloc] init]; + if (returnValue != NULL) + { + returnValue->_reachabilityRef = reachability; + } + else { + CFRelease(reachability); + } + } + return returnValue; +} + + ++ (instancetype)reachabilityForInternetConnection +{ + struct sockaddr_in zeroAddress; + bzero(&zeroAddress, sizeof(zeroAddress)); + zeroAddress.sin_len = sizeof(zeroAddress); + zeroAddress.sin_family = AF_INET; + + return [self reachabilityWithAddress: (const struct sockaddr *) &zeroAddress]; +} + +#pragma mark reachabilityForLocalWiFi +//reachabilityForLocalWiFi has been removed from the sample. See ReadMe.md for more information. +//+ (instancetype)reachabilityForLocalWiFi + + + +#pragma mark - Start and stop notifier + +- (BOOL)startNotifier +{ + BOOL returnValue = NO; + SCNetworkReachabilityContext context = {0, (__bridge void *)(self), NULL, NULL, NULL}; + + if (SCNetworkReachabilitySetCallback(_reachabilityRef, ReachabilityCallback, &context)) + { + if (SCNetworkReachabilityScheduleWithRunLoop(_reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) + { + returnValue = YES; + } + } + + return returnValue; +} + + +- (void)stopNotifier +{ + if (_reachabilityRef != NULL) + { + SCNetworkReachabilityUnscheduleFromRunLoop(_reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); + } +} + + +- (void)dealloc +{ + [self stopNotifier]; + if (_reachabilityRef != NULL) + { + CFRelease(_reachabilityRef); + } +} + + +#pragma mark - Network Flag Handling + +- (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags +{ + PrintReachabilityFlags(flags, "networkStatusForFlags"); + if ((flags & kSCNetworkReachabilityFlagsReachable) == 0) + { + // The target host is not reachable. + return NotReachable; + } + + NetworkStatus returnValue = NotReachable; + + if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0) + { + /* + If the target host is reachable and no connection is required then we'll assume (for now) that you're on Wi-Fi... + */ + returnValue = ReachableViaWiFi; + } + + if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || + (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)) + { + /* + ... and the connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs... + */ + + if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0) + { + /* + ... and no [user] intervention is needed... + */ + returnValue = ReachableViaWiFi; + } + } + + if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) + { + /* + ... but WWAN connections are OK if the calling application is using the CFNetwork APIs. + */ + returnValue = ReachableViaWWAN; + } + + return returnValue; +} + + +- (BOOL)connectionRequired +{ + NSAssert(_reachabilityRef != NULL, @"connectionRequired called with NULL reachabilityRef"); + SCNetworkReachabilityFlags flags; + + if (SCNetworkReachabilityGetFlags(_reachabilityRef, &flags)) + { + return (flags & kSCNetworkReachabilityFlagsConnectionRequired); + } + + return NO; +} + + +- (NetworkStatus)currentReachabilityStatus +{ + NSAssert(_reachabilityRef != NULL, @"currentNetworkStatus called with NULL SCNetworkReachabilityRef"); + NetworkStatus returnValue = NotReachable; + SCNetworkReachabilityFlags flags; + + if (SCNetworkReachabilityGetFlags(_reachabilityRef, &flags)) + { + returnValue = [self networkStatusForFlags:flags]; + } + + return returnValue; +} + + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.m.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.m.meta new file mode 100644 index 00000000..f193916f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NetworkServices/Reachability.m.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 3c4fba21226024eee8edb82a13c3c096 +timeCreated: 1553496635 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices.meta new file mode 100644 index 00000000..4851b6dd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cba6d6ea7a0f54f069e8901d3be21357 +folderAsset: yes +timeCreated: 1579516105 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.h new file mode 100644 index 00000000..72859b39 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.h @@ -0,0 +1,31 @@ +// +// NPAppDelegateListener.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "AppDelegateListener.h" +#import "NPNotificationCenterDataTypes.h" + +typedef void (^RegisterForRemoteNotificationsCompletionHandler)(NSString* deviceToken, NSError* error); +typedef void (^NotificationRecievedCompletionHandler)(UNNotification* notification, BOOL isLaunchNotification); + +@interface NPAppDelegateListener : NSObject + +// properties +@property(nonatomic, copy) RegisterForRemoteNotificationsCompletionHandler registerForRemoteNotificationsCompletionHandler; +@property(nonatomic, copy) NotificationRecievedCompletionHandler notificationRecievedCompletionHandler; +@property(nonatomic) UNNotificationPresentationOptions presentationOptions; + +// static methods ++ (NPAppDelegateListener*)sharedListener; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.h.meta new file mode 100644 index 00000000..1d1666ba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 23f6e06edaadf4a6dbd50956400fee5f +timeCreated: 1554294493 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.mm new file mode 100644 index 00000000..c753ba06 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.mm @@ -0,0 +1,172 @@ +// +// NPAppDelegateListener.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPAppDelegateListener.h" +#import "NPKit.h" +#import "UNNotificationRequest+TriggerType.h" + +#define kDefaultPresentationOption (UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert) + +#define REGISTER_SELECTOR(obj, sel, notif_name) \ +if([obj respondsToSelector:sel]) \ + [[NSNotificationCenter defaultCenter] addObserver:obj \ + selector:sel \ + name:notif_name \ + object:nil \ + ]; \ + + +static NPAppDelegateListener* _sharedListener; +#if NATIVE_PLUGINS_USES_NOTIFICATION +static UNNotification* _deliveredNotification; +static BOOL _deliveredNotificationLaunchStatus; +#endif + +@implementation NPAppDelegateListener + +@synthesize registerForRemoteNotificationsCompletionHandler = _registerForRemoteNotificationsCompletionHandler; +@synthesize notificationRecievedCompletionHandler = _notificationRecievedCompletionHandler; +@synthesize presentationOptions = _presentationOptions; + ++ (NPAppDelegateListener*)sharedListener +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _sharedListener = [[NPAppDelegateListener alloc] init]; + }); + + return _sharedListener; +} + +#if NATIVE_PLUGINS_USES_NOTIFICATION ++ (void)load +{ + UnityRegisterAppDelegateListener([NPAppDelegateListener sharedListener]); +} +#endif + +#pragma mark - Init methods + +- (id)init +{ + self = [super init]; + if (self) + { +#if NATIVE_PLUGINS_USES_NOTIFICATION + self.presentationOptions = kDefaultPresentationOption; + [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; + +#if defined(UNITY_VERSION) && defined(MAKE_UNITY_VERSION) + #if (UNITY_VERSION >= MAKE_UNITY_VERSION(2022,1,0)) + REGISTER_SELECTOR(self, @selector(didRegisterForRemoteNotificationsWithDeviceToken:), kUnityDidRegisterForRemoteNotificationsWithDeviceToken); + REGISTER_SELECTOR(self, @selector(didFailToRegisterForRemoteNotificationsWithError:), kUnityDidFailToRegisterForRemoteNotificationsWithError); + #endif +#endif + +#endif + } + return self; +} + +- (void)dealloc +{ +#if NATIVE_PLUGINS_USES_NOTIFICATION + [[UNUserNotificationCenter currentNotificationCenter] setDelegate:nil]; +#endif +} + +- (void)setNotificationRecievedCompletionHandler:(NotificationRecievedCompletionHandler)notificationRecievedCompletionHandler +{ +#if NATIVE_PLUGINS_USES_NOTIFICATION + _notificationRecievedCompletionHandler = notificationRecievedCompletionHandler; + + // send cached info + if (_deliveredNotification) + { + _notificationRecievedCompletionHandler(_deliveredNotification, _deliveredNotificationLaunchStatus); + _deliveredNotification = nil; + } +#endif +} + +#pragma mark - AppDelegateListener methods + +#if NATIVE_PLUGINS_USES_PUSH_NOTIFICATION +- (void)didRegisterForRemoteNotificationsWithDeviceToken:(NSNotification*)notification +{ + NSData* deviceToken = (NSData*)notification.userInfo; + NSString* deviceTokenStr = NPExtractTokenFromNSData(deviceToken); + + // send event + if(_registerForRemoteNotificationsCompletionHandler != nil) + { + _registerForRemoteNotificationsCompletionHandler(deviceTokenStr, nil); + } +} + +- (void)didFailToRegisterForRemoteNotificationsWithError:(NSNotification*)notification +{ + NSError* error = (NSError*)notification.userInfo; + + // send event + if(_registerForRemoteNotificationsCompletionHandler != nil) + { + _registerForRemoteNotificationsCompletionHandler(nil, error); + } +} +#endif + +#pragma mark - UNUserNotificationCenterDelegate methods + +#if NATIVE_PLUGINS_USES_NOTIFICATION +- (void)userNotificationCenter:(UNUserNotificationCenter*)center willPresentNotification:(UNNotification*)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler +{ + [self handleReceivedNotification:notification]; + + completionHandler(self.presentationOptions); +} + +- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler +{ + if(![response.actionIdentifier isEqualToString:UNNotificationDismissActionIdentifier]) { + [self handleReceivedNotification:response.notification withLaunchStatus: TRUE]; + } + + completionHandler(); +} + +- (void)handleReceivedNotification:(UNNotification*)notification +{ + [self handleReceivedNotification: notification withLaunchStatus:FALSE]; +} + +- (void)handleReceivedNotification:(UNNotification*)notification withLaunchStatus: (BOOL)isLaunchNotification +{ +#if !NATIVE_PLUGINS_USES_PUSH_NOTIFICATION + UNNotificationTriggerType triggerType = [[notification request] triggerType]; + if (triggerType == UNNotificationTriggerTypePushNotification) + { + return; + } +#endif + + // save info if notification is received before initialisation + if (_notificationRecievedCompletionHandler == nil) + { + _deliveredNotification = notification; + _deliveredNotificationLaunchStatus = isLaunchNotification; + } + else + { + NSLog(@"Launch notification? => %d", isLaunchNotification); + _notificationRecievedCompletionHandler(notification, isLaunchNotification); + } +} +#endif + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.mm.meta new file mode 100644 index 00000000..e0c0b083 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPAppDelegateListener.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: b1ddc6bb85cdd4b3889355184809a6c9 +timeCreated: 1554294493 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationBinding.mm new file mode 100644 index 00000000..97466cd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationBinding.mm @@ -0,0 +1,286 @@ +// +// NPNotificationBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPNotificationCenterDataTypes.h" +#import "UNNotificationRequest+TriggerType.h" +#import "NPKit.h" + +const NSString* kUserInfoKey = @"user_info"; + +NPBINDING DONTSTRIP NPIntPtr NPNotificationRequestCreate(const char* id, NPIntPtr contentPtr, NPIntPtr triggerPtr) +{ + // create notification request + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + UNNotificationTrigger* trigger = (triggerPtr == nil) ? nil : (__bridge UNNotificationTrigger*)triggerPtr; + UNNotificationRequest* notificationRequest = [UNNotificationRequest requestWithIdentifier:NPCreateNSStringFromCString(id) + content:content + trigger:trigger]; + return NPRetainWithOwnershipTransfer(notificationRequest); +} + +NPBINDING DONTSTRIP const char* NPNotificationRequestGetId(NPIntPtr requestPtr) +{ + UNNotificationRequest* request = (__bridge UNNotificationRequest*)requestPtr; + return NPCreateCStringCopyFromNSString(request.identifier); +} + +NPBINDING DONTSTRIP UNNotificationTriggerType NPNotificationRequestGetTriggerType(NPIntPtr requestPtr) +{ + UNNotificationRequest* request = (__bridge UNNotificationRequest*)requestPtr; + return [request triggerType]; +} + +NPBINDING DONTSTRIP NPIntPtr NPNotificationRequestGetContent(NPIntPtr requestPtr) +{ + UNNotificationRequest* request = (__bridge UNNotificationRequest*)requestPtr; + return NPRetainWithOwnershipTransfer(request.content); +} + +NPBINDING DONTSTRIP NPIntPtr NPNotificationRequestGetTrigger(NPIntPtr requestPtr) +{ + UNNotificationRequest* request = (__bridge UNNotificationRequest*)requestPtr; + UNNotificationTrigger* trigger = request.trigger; + return trigger ? NPRetainWithOwnershipTransfer(trigger) : nil; +} + +NPBINDING DONTSTRIP NPIntPtr NPNotificationContentCreate() +{ + UNMutableNotificationContent* content = [[UNMutableNotificationContent alloc] init]; + return NPRetainWithOwnershipTransfer(content); +} + +NPBINDING DONTSTRIP const char* NPNotificationContentGetTitle(NPIntPtr contentPtr) +{ +#if !TARGET_OS_TV + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + return NPCreateCStringCopyFromNSString(content.title); +#else + return nil; +#endif +} + +NPBINDING DONTSTRIP void NPNotificationContentSetTitle(NPIntPtr contentPtr, const char* value) +{ +#if !TARGET_OS_TV + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + [content setTitle:NPCreateNSStringFromCString(value)]; +#endif +} + +NPBINDING DONTSTRIP const char* NPNotificationContentGetSubtitle(NPIntPtr contentPtr) +{ +#if !TARGET_OS_TV + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + return NPCreateCStringCopyFromNSString(content.subtitle); +#else + return nil; +#endif +} + +NPBINDING DONTSTRIP void NPNotificationContentSetSubtitle(NPIntPtr contentPtr, const char* value) +{ +#if !TARGET_OS_TV + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + [content setSubtitle:NPCreateNSStringFromCString(value)]; +#endif +} + +NPBINDING DONTSTRIP const char* NPNotificationContentGetBody(NPIntPtr contentPtr) +{ +#if !TARGET_OS_TV + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + return NPCreateCStringCopyFromNSString(content.body); +#else + return nil; +#endif +} + +NPBINDING DONTSTRIP void NPNotificationContentSetBody(NPIntPtr contentPtr, const char* value) +{ +#if !TARGET_OS_TV + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + [content setBody:NPCreateNSStringFromCString(value)]; +#endif +} + +NPBINDING DONTSTRIP int NPNotificationContentGetBadge(NPIntPtr contentPtr) +{ + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + return (int)[content.badge integerValue]; +} + +NPBINDING DONTSTRIP void NPNotificationContentSetBadge(NPIntPtr contentPtr, int value) +{ + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + [content setBadge:[NSNumber numberWithInteger:value]]; +} + +NPBINDING DONTSTRIP const char* NPNotificationContentGetUserInfo(NPIntPtr contentPtr) +{ + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + NSError* error; + NSString* jsonStr = NPToJson([content.userInfo objectForKey:kUserInfoKey], &error); + return NPCreateCStringCopyFromNSString(jsonStr); +} + +NPBINDING DONTSTRIP void NPNotificationContentSetUserInfo(NPIntPtr contentPtr, const char* jsonStr) +{ + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + NSError* error; + id data = NPFromJson(NPCreateNSStringFromCString(jsonStr), &error); + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; //@@ Need to add our data to another dictionary with key kUserInfoKey so that reading will be same for both remote and local notifications + [userInfo setObject:data forKey:kUserInfoKey]; + [content setUserInfo:userInfo]; +} + +NPBINDING DONTSTRIP void NPNotificationContentSetSoundName(NPIntPtr contentPtr, const char* soundName) +{ + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + [content setSound:[UNNotificationSound soundNamed:NPCreateNSStringFromCString(soundName)]]; +} + +NPBINDING DONTSTRIP const char* NPNotificationContentGetLaunchImageName(NPIntPtr contentPtr) +{ +#if !TARGET_OS_OSX || !TARGET_OS_TV + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + return NPCreateCStringCopyFromNSString(content.launchImageName); +#else + return nil; +#endif +} + +NPBINDING DONTSTRIP void NPNotificationContentSetLaunchImageName(NPIntPtr contentPtr, const char* value) +{ +#if !TARGET_OS_OSX || !TARGET_OS_TV + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + [content setLaunchImageName:NPCreateNSStringFromCString(value)]; +#endif +} + +NPBINDING DONTSTRIP const char* NPNotificationContentGetCategoryId(NPIntPtr contentPtr) +{ +#if !TARGET_OS_TV + UNNotificationContent* content = (__bridge UNNotificationContent*)contentPtr; + return NPCreateCStringCopyFromNSString(content.categoryIdentifier); +#else + return nil; +#endif +} + +NPBINDING DONTSTRIP bool NPNotificationTriggerGetRepeats(NPIntPtr triggerPtr) +{ + UNNotificationTrigger* trigger = (__bridge UNNotificationTrigger*)triggerPtr; + return trigger.repeats; +} + +NPBINDING DONTSTRIP NPIntPtr NPTimeIntervalNotificationTriggerCreate(double interval, bool repeats) +{ + UNTimeIntervalNotificationTrigger* trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:interval repeats:repeats]; + return NPRetainWithOwnershipTransfer(trigger); +} + +NPBINDING DONTSTRIP void NPTimeIntervalNotificationTriggerGetProperties(NPIntPtr triggerPtr, double* timeInterval, char* nextTriggerDate, bool* repeats) +{ + UNTimeIntervalNotificationTrigger* trigger = (__bridge UNTimeIntervalNotificationTrigger*)triggerPtr; + + // set values + *timeInterval = trigger.timeInterval; + nextTriggerDate = NPCreateCStringFromNSString(NPCreateNSStringFromNSDate(trigger.nextTriggerDate)); + *repeats = trigger.repeats; +} + +NPBINDING DONTSTRIP NPIntPtr NPCalendarNotificationTriggerCreate(NPUnityDateComponents dateComponents, bool repeats) +{ + // create date component + NSDateComponents* components = dateComponents.ToNSDateComponents(); + + // create trigger + UNCalendarNotificationTrigger* trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:repeats]; + + NSLog(@"Next trigger date : %@", trigger.nextTriggerDate); + + return NPRetainWithOwnershipTransfer(trigger); +} + +NPBINDING DONTSTRIP void NPCalendarNotificationTriggerGetProperties(NPIntPtr triggerPtr, NPUnityDateComponents* dateComponents, char* nextTriggerDate, bool* repeats) +{ + UNCalendarNotificationTrigger* trigger = (__bridge UNCalendarNotificationTrigger*)triggerPtr; + + // set values + dateComponents->CopyProperties(trigger.dateComponents); + nextTriggerDate = NPCreateCStringFromNSString(NPCreateNSStringFromNSDate(trigger.nextTriggerDate)); + *repeats = trigger.repeats; +} + +NPBINDING DONTSTRIP NPIntPtr NPLocationNotificationTriggerCreate(NPUnityCircularRegion regionData, bool notifyOnEntry, bool notifyOnExit, bool repeats) +{ +#if NATIVE_PLUGINS_USES_CORE_LOCATION + // set region info + CLLocationCoordinate2D center = CLLocationCoordinate2DMake(regionData.latitude, regionData.longitude); + CLCircularRegion* region = [[CLCircularRegion alloc] initWithCenter:center + radius:regionData.radius + identifier:NPCreateNSStringFromCString((const char*)regionData.regionIdPtr)]; + region.notifyOnEntry = notifyOnEntry; + region.notifyOnExit = notifyOnExit; + + // create trigger + UNLocationNotificationTrigger* trigger = [UNLocationNotificationTrigger triggerWithRegion:region repeats:repeats]; + return NPRetainWithOwnershipTransfer(trigger); +#else + return nil; +#endif +} + +NPBINDING DONTSTRIP void NPLocationNotificationTriggerGetProperties(NPIntPtr triggerPtr, NPUnityCircularRegion* regionData, bool* notifyOnEntry, bool* notifyOnExit, bool* repeats) +{ +#if NATIVE_PLUGINS_USES_CORE_LOCATION + UNLocationNotificationTrigger* trigger = (__bridge UNLocationNotificationTrigger*)triggerPtr; + __weak CLCircularRegion* region = (CLCircularRegion*)trigger.region; + + // copy properties + regionData->latitude = region.center.latitude; + regionData->longitude = region.center.longitude; + regionData->radius = region.radius; + regionData->regionIdPtr = NPCreateCStringFromNSString(region.identifier); + *notifyOnEntry = region.notifyOnEntry; + *notifyOnExit = region.notifyOnExit; + *repeats = trigger.repeats; +#endif +} + +UNNotificationInterruptionLevel getInterruptionLevel(NPNotificationPriority value) +{ + switch (value) { + case NotificationPriorityLow: + return UNNotificationInterruptionLevelPassive; + break; + case NotificationPriorityMedium: + return UNNotificationInterruptionLevelActive; + break; + case NotificationPriorityHigh: + return UNNotificationInterruptionLevelTimeSensitive; + break; + case NotificationPriorityMax: + return UNNotificationInterruptionLevelCritical; + break; + + default: + return UNNotificationInterruptionLevelActive; + break; + } +} + +NPBINDING DONTSTRIP void NPNotificationContentSetPriority(NPIntPtr contentPtr, NPNotificationPriority value) +{ +#if !TARGET_OS_OSX || !TARGET_OS_TV + UNMutableNotificationContent* content = (__bridge UNMutableNotificationContent*)contentPtr; + [content setInterruptionLevel:getInterruptionLevel(value)]; +#endif +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationBinding.mm.meta new file mode 100644 index 00000000..2025cd33 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationBinding.mm.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: d52d4437b65924546b8d7fff06144999 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterBinding.mm new file mode 100644 index 00000000..58f885a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterBinding.mm @@ -0,0 +1,166 @@ +// +// NPNotificationCenterBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "UNNotificationRequest+TriggerType.h" +#import "UNNotificationSettings+ManagedData.h" +#import "NPAppDelegateListener.h" +#import "NPKit.h" +#import "NPNotificationCenterDataTypes.h" +#import "NPNotificationServicesError.h" + +#pragma mark - Native binding methods + +static RequestAuthorizationNativeCallback _requestAuthorizationCallback; +static GetSettingsNativeCallback _getSettingsCallback; +static ScheduleLocalNotificationNativeCallback _scheduleLocalNotificationCallback; +static GetScheduledNotificationsNativeCallback _getScheduledNotificationsCallback; +static GetDeliveredNotificationsNativeCallback _getDeliveredNotificationsCallback; +static RegisterForRemoteNotificationsNativeCallback _registerForRemoteNotificationsCallback; +static NotificationReceivedNativeCallback _notificationReceivedCallback; + +NPBINDING DONTSTRIP void NPNotificationCenterRegisterCallbacks(RequestAuthorizationNativeCallback requestAuthorizationCallback, + GetSettingsNativeCallback getSettingsCallback, + ScheduleLocalNotificationNativeCallback scheduleLocalNotificationCallback, + GetScheduledNotificationsNativeCallback getScheduledNotificationsCallback, + GetDeliveredNotificationsNativeCallback getDeliveredNotificationsCallback, + RegisterForRemoteNotificationsNativeCallback registerForRemoteNotificationCallback, + NotificationReceivedNativeCallback notificationReceivedCallback) +{ + // cache callback + _requestAuthorizationCallback = requestAuthorizationCallback; + _getSettingsCallback = getSettingsCallback; + _scheduleLocalNotificationCallback = scheduleLocalNotificationCallback; + _getScheduledNotificationsCallback = getScheduledNotificationsCallback; + _getDeliveredNotificationsCallback = getDeliveredNotificationsCallback; + _registerForRemoteNotificationsCallback = registerForRemoteNotificationCallback; + _notificationReceivedCallback = notificationReceivedCallback; + + // set remote notifiation callback responder + __weak NPAppDelegateListener* delegateListener = [NPAppDelegateListener sharedListener]; + [delegateListener setNotificationRecievedCompletionHandler:^(UNNotification *notification, BOOL isLaunchNotification) { + // send callback + void* notificationRequestPtr = (__bridge NPIntPtr)notification.request; + _notificationReceivedCallback(notificationRequestPtr, isLaunchNotification); + }]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterInit(UNNotificationPresentationOptions presentationOptions) +{ + [[NPAppDelegateListener sharedListener] setPresentationOptions:presentationOptions]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterRequestAuthorization(UNAuthorizationOptions options, NPIntPtr tagPtr) +{ + [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:options + completionHandler:^(BOOL granted, NSError * _Nullable error) { + // get settings + [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings* _Nonnull settings) { + // send callback + _requestAuthorizationCallback(settings.authorizationStatus, NPCreateError([NPNotificationServicesError createFrom:error]), tagPtr); + }]; + }]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterGetSettings(NPIntPtr tagPtr) +{ + [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings* _Nonnull settings) { + // send callback + NPUnityNotificationSettings settingsData = [settings toManagedData]; + _getSettingsCallback(&settingsData, tagPtr); + }]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterScheduleLocalNotification(NPIntPtr notificationRequestPtr, NPIntPtr tagPtr) +{ + UNNotificationRequest* notificationRequest = (__bridge UNNotificationRequest*)notificationRequestPtr; + [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:notificationRequest withCompletionHandler:^(NSError* _Nullable error) { + // send event + _scheduleLocalNotificationCallback(NPCreateError([NPNotificationServicesError createFrom:error]), tagPtr); + }]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterGetScheduledNotifications(NPIntPtr tagPtr) +{ + [[UNUserNotificationCenter currentNotificationCenter] getPendingNotificationRequestsWithCompletionHandler:^(NSArray* _Nonnull requests) { + // create c array + NPArray* cArray = NPCreateNativeArrayFromNSArray(requests); + + // send data + _getScheduledNotificationsCallback(cArray, NPCreateError(nil), tagPtr); + + // release c properties + delete(cArray); + }]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterRemovePendingNotification(const char* notificationId) +{ + [[UNUserNotificationCenter currentNotificationCenter] removePendingNotificationRequestsWithIdentifiers:@[NPCreateNSStringFromCString(notificationId)]]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterRemoveAllPendingNotifications() +{ + [[UNUserNotificationCenter currentNotificationCenter] removeAllPendingNotificationRequests]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterRemoveAllDeliveredNotifications() +{ + [[UNUserNotificationCenter currentNotificationCenter] removeAllDeliveredNotifications]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterGetDeliveredNotifications(NPIntPtr tagPtr) +{ + [[UNUserNotificationCenter currentNotificationCenter] getDeliveredNotificationsWithCompletionHandler:^(NSArray* _Nonnull notifications) { + // create array of notification requests + int count = (int)[notifications count]; + NSMutableArray* notificationRequests = [NSMutableArray arrayWithCapacity:count]; + for (int iter = 0; iter < count; iter++) + { + [notificationRequests addObject:[notifications[iter] request]]; + } + + // create c array + NPArray* cArray = NPCreateNativeArrayFromNSArray(notificationRequests); + + // send data + _getDeliveredNotificationsCallback(cArray, NPCreateError(nil), tagPtr); + + // release c properties + delete(cArray); + }]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterRegisterForRemoteNotifications(NPIntPtr tagPtr) +{ + __weak NPAppDelegateListener* delegateListener = [NPAppDelegateListener sharedListener]; + [delegateListener setRegisterForRemoteNotificationsCompletionHandler:^(NSString* deviceToken, NSError* error) { + // send callback + _registerForRemoteNotificationsCallback(NPCreateCStringFromNSString(deviceToken), NPCreateError([NPNotificationServicesError createFrom:error]), tagPtr); + + // reset properties + [delegateListener setRegisterForRemoteNotificationsCompletionHandler:nil]; + }]; + + [[UIApplication sharedApplication] registerForRemoteNotifications]; +} + +NPBINDING DONTSTRIP bool NPNotificationCenterIsRegisteredForRemoteNotifications() +{ + return [[UIApplication sharedApplication] isRegisteredForRemoteNotifications]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterUnregisterForRemoteNotifications() +{ + [[UIApplication sharedApplication] unregisterForRemoteNotifications]; +} + +NPBINDING DONTSTRIP void NPNotificationCenterSetApplicationIconBadgeNumber(int count) +{ + [UIApplication sharedApplication].applicationIconBadgeNumber = count; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterBinding.mm.meta new file mode 100644 index 00000000..34f43978 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterBinding.mm.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: dd58429107f6f4bc6984662001497f77 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterDataTypes.h new file mode 100644 index 00000000..15fdb4f2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterDataTypes.h @@ -0,0 +1,58 @@ +// +// NPNotificationCenterDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#include "NPDefines.h" +#include "NPKit.h" + +typedef enum : NSInteger +{ + UNNotificationTriggerTypeUnknown, + UNNotificationTriggerTypePushNotification, + UNNotificationTriggerTypeCalendar, + UNNotificationTriggerTypeTimeInterval, + UNNotificationTriggerTypeLocation, +} UNNotificationTriggerType; + +typedef struct +{ + UNAuthorizationStatus authorizationStatus; + UNNotificationSetting alertSetting; + UNNotificationSetting badgeSetting; + UNNotificationSetting carPlaySetting; + UNNotificationSetting lockScreenSetting; + UNNotificationSetting notificationCenterSetting; + UNNotificationSetting soundSetting; + UNNotificationSetting criticalAlertSetting; + UNNotificationSetting announcementSetting; + UNAlertStyle alertStyle; + long showPreviewsSetting; +} NPUnityNotificationSettings; + +typedef enum : NSInteger +{ + NotificationPriorityLow, + NotificationPriorityMedium, + NotificationPriorityHigh, + NotificationPriorityMax +} NPNotificationPriority; + + +// callback signatures +typedef void (*RequestAuthorizationNativeCallback)(UNAuthorizationStatus status, const NPError error, NPIntPtr tagPtr); + +typedef void (*GetSettingsNativeCallback)(NPUnityNotificationSettings* settingsData, NPIntPtr tagPtr); + +typedef void (*ScheduleLocalNotificationNativeCallback)(const NPError error, NPIntPtr tagPtr); + +typedef void (*GetScheduledNotificationsNativeCallback)(NPArray* arrayPtr, const NPError error, NPIntPtr tagPtr); + +typedef void (*GetDeliveredNotificationsNativeCallback)(NPArray* arrayPtr, const NPError error, NPIntPtr tagPtr); + +typedef void (*RegisterForRemoteNotificationsNativeCallback)(const NPString deviceToken, const NPError error, NPIntPtr tagPtr); + +typedef void (*NotificationReceivedNativeCallback)(NPIntPtr nativePtr, bool isLaunchNotification); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterDataTypes.h.meta new file mode 100644 index 00000000..cffa5c56 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationCenterDataTypes.h.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 23368eeef4eda4c5f9e85c09bdd94cb7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.h new file mode 100644 index 00000000..4b9f1c52 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.h @@ -0,0 +1,30 @@ +// +// NPNotificationServicesError.h +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// +#define Domain @"Notification Services" + +typedef enum : NSInteger +{ + NotificationServicesErrorCodeUnknown, + NotificationServicesErrorCodePermissionNotAvailable, + NotificationServicesErrorCodeTriggerNotValid, + NotificationServicesErrorCodeConfigurationError, + NotificationServicesErrorCodeScheduledTimeNotValid +} NotificationServicesErrorCode; + + +@interface NPNotificationServicesError : NSError + ++(NPNotificationServicesError*) createFrom:(NSError*) error; ++(NPNotificationServicesError*) unknown; ++(NPNotificationServicesError*) permissionNotAvailable; ++(NPNotificationServicesError*) triggerNotValid; ++(NPNotificationServicesError*) configurationError; ++(NPNotificationServicesError*) scheduledTimeNotValid; + +@end + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.h.meta new file mode 100644 index 00000000..8add559d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 14ebec50684174fe7847d62cde401e6e +timeCreated: 1554731305 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.m b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.m new file mode 100644 index 00000000..7788f9ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.m @@ -0,0 +1,79 @@ +// +// NPNotificationServicesError.mm +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + + +#import "NPNotificationServicesError.h" +#import + +@interface NPNotificationServicesError () + ++(NPNotificationServicesError*) createFrom:(NotificationServicesErrorCode) code withDescription:(NSString*) errorDescription; + +@end + +@implementation NPNotificationServicesError + ++(NPNotificationServicesError*) createFrom:(NSError*) error +{ + if(error == nil) + return nil; + + NotificationServicesErrorCode errorCode; + + switch (error.code) { + + case UNErrorCodeNotificationsNotAllowed: + errorCode = NotificationServicesErrorCodePermissionNotAvailable; + break; + case UNErrorCodeNotificationInvalidNoDate: + errorCode = NotificationServicesErrorCodeScheduledTimeNotValid; + break; + + default: + NSLog(@"[Notification Services] %ld error code not handled - Inform developer to handle this error code: ", error.code); + errorCode = NotificationServicesErrorCodeUnknown; + break; + } + + return [NPNotificationServicesError createFrom:errorCode + withDescription:error.description]; +} + ++(NPNotificationServicesError*) unknown +{ + return [NPNotificationServicesError createFrom: NotificationServicesErrorCodeUnknown withDescription: @"Unknown error"]; +} + ++(NPNotificationServicesError*) permissionNotAvailable +{ + return [NPNotificationServicesError createFrom: NotificationServicesErrorCodePermissionNotAvailable withDescription: @"Permission not available"]; +} + ++(NPNotificationServicesError*) triggerNotValid +{ + return [NPNotificationServicesError createFrom: NotificationServicesErrorCodeTriggerNotValid withDescription: @"Invalid trigger specified"]; +} + ++(NPNotificationServicesError*) configurationError +{ + return [NPNotificationServicesError createFrom: NotificationServicesErrorCodeConfigurationError withDescription: @"Check your configuration once"]; +} + ++(NPNotificationServicesError*) scheduledTimeNotValid +{ + return [NPNotificationServicesError createFrom: NotificationServicesErrorCodeScheduledTimeNotValid withDescription: @"Scheduled at invalid time"]; +} + ++(NPNotificationServicesError*) createFrom:(NotificationServicesErrorCode) code withDescription:(NSString*) errorDescription +{ + return [NPNotificationServicesError errorWithDomain:Domain + code:(int)code + userInfo:@{NSLocalizedDescriptionKey: errorDescription}]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.m.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.m.meta new file mode 100644 index 00000000..31996be7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NPNotificationServicesError.m.meta @@ -0,0 +1,85 @@ +fileFormatVersion: 2 +guid: f7c8aac1cf0b94908b64e5747c482648 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NotificationServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NotificationServices.asset new file mode 100644 index 00000000..28177876 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NotificationServices.asset @@ -0,0 +1,32 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: NotificationServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: UserNotifications.framework + m_target: 4 + m_isOptional: 0 + m_capabilities: + - m_type: 4 + m_associatedDomainsEntitlement: + m_domains: [] + m_macros: + - m_key: NATIVE_PLUGINS_USES_NOTIFICATION + m_value: 1 + - m_key: NATIVE_PLUGINS_USES_PUSH_NOTIFICATION + m_value: 1 + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NotificationServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NotificationServices.asset.meta new file mode 100644 index 00000000..f5f2888d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/NotificationServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9a5ccb29798ad4a31b81b6e6df680f5c +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.h new file mode 100644 index 00000000..c48c19c6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.h @@ -0,0 +1,17 @@ +// +// UNNotificationRequest+TriggerType.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPNotificationCenterDataTypes.h" + +@interface UNNotificationRequest (TriggerType) + +- (UNNotificationTriggerType)triggerType; + +@end + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.h.meta new file mode 100644 index 00000000..d0a6040e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 518ae9552fee8439babb4f7b119727dc +timeCreated: 1553798140 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.mm new file mode 100644 index 00000000..c3add1d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.mm @@ -0,0 +1,36 @@ +// +// UNNotificationRequest+TriggerType.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "UNNotificationRequest+TriggerType.h" + +@implementation UNNotificationRequest (TriggerType) + +- (UNNotificationTriggerType)triggerType +{ + __weak UNNotificationTrigger* trigger = [self trigger]; + if ([trigger isKindOfClass:[UNPushNotificationTrigger class]]) + { + return UNNotificationTriggerTypePushNotification; + } + else if ([trigger isKindOfClass:[UNLocationNotificationTrigger class]]) + { + return UNNotificationTriggerTypeLocation; + } + else if ([trigger isKindOfClass:[UNCalendarNotificationTrigger class]]) + { + return UNNotificationTriggerTypeCalendar; + } + else if ([trigger isKindOfClass:[UNTimeIntervalNotificationTrigger class]]) + { + return UNNotificationTriggerTypeTimeInterval; + } + + return UNNotificationTriggerTypeUnknown; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.mm.meta new file mode 100644 index 00000000..6804bedd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationRequest+TriggerType.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 442bc14e4dc08436fa1bd3725248e84c +timeCreated: 1553798140 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.h new file mode 100644 index 00000000..1d41dfeb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.h @@ -0,0 +1,17 @@ +// +// UNNotificationSettings+ManagedData.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPNotificationCenterDataTypes.h" + +@interface UNNotificationSettings (ManagedData) + +- (NPUnityNotificationSettings)toManagedData; + +@end + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.h.meta new file mode 100644 index 00000000..36ff7212 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 984b30386dc8e441081d23b10b0dde7a +timeCreated: 1554731305 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.mm new file mode 100644 index 00000000..0a2c280e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.mm @@ -0,0 +1,53 @@ +// +// UNNotificationSettings+ManagedData.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "UNNotificationSettings+ManagedData.h" + +@implementation UNNotificationSettings (ManagedData) + +- (NPUnityNotificationSettings)toManagedData +{ + NPUnityNotificationSettings settingsData; + + // set default values for optional members + settingsData.showPreviewsSetting = 0; + settingsData.criticalAlertSetting = UNNotificationSettingDisabled; + settingsData.announcementSetting = UNNotificationSettingDisabled; + + // copy values + settingsData.authorizationStatus = self.authorizationStatus; + settingsData.alertSetting = self.alertSetting; + settingsData.badgeSetting = self.badgeSetting; + settingsData.carPlaySetting = self.carPlaySetting; + settingsData.lockScreenSetting = self.lockScreenSetting; + settingsData.notificationCenterSetting = self.notificationCenterSetting; + settingsData.soundSetting = self.soundSetting; + settingsData.alertStyle = self.alertStyle; + + // iOS 11 and above + if (@available(iOS 11.0, *)) + { + settingsData.showPreviewsSetting = self.showPreviewsSetting; + } + + // iOS 12 and above + if (@available(iOS 12.0, *)) + { + settingsData.criticalAlertSetting = self.criticalAlertSetting; + } + + // iOS 12 and above + if (@available(iOS 13.0, *)) + { + settingsData.announcementSetting = self.announcementSetting; + } + + return settingsData; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.mm.meta new file mode 100644 index 00000000..c4794dfb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/NotificationServices/UNNotificationSettings+ManagedData.mm.meta @@ -0,0 +1,97 @@ +fileFormatVersion: 2 +guid: 177522314f22c4460beb1073faba5655 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp.meta new file mode 100644 index 00000000..af8aa72c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e6a8f17acedcf4f40b154b00281b58b9 +folderAsset: yes +timeCreated: 1579516340 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/NPStoreReviewBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/NPStoreReviewBinding.mm new file mode 100644 index 00000000..e1084f08 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/NPStoreReviewBinding.mm @@ -0,0 +1,21 @@ +// +// NPStoreReviewBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Updated 12/08/24 +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. + + +#import +#import "NPDefines.h" +#import "NPUnityAppController.h" + + +NPBINDING DONTSTRIP void NPStoreReviewRequestReview() +{ + NPUnityAppController *appController = (NPUnityAppController*)GetAppController(); + UIWindowScene *windowScene = [[appController window] windowScene]; + + [SKStoreReviewController requestReviewInScene: windowScene]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/NPStoreReviewBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/NPStoreReviewBinding.mm.meta new file mode 100644 index 00000000..cbed6d87 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/NPStoreReviewBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: d25822177009d475da35a32518bc86f1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/RateMyApp.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/RateMyApp.asset new file mode 100644 index 00000000..5754e19a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/RateMyApp.asset @@ -0,0 +1,25 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: RateMyApp + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: StoreKit.framework + m_target: 4 + m_isOptional: 0 + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/RateMyApp.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/RateMyApp.asset.meta new file mode 100644 index 00000000..faff3d94 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/RateMyApp/RateMyApp.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f66c0397427444bc785cb23022f1fd2f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices.meta new file mode 100644 index 00000000..6524c36b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3feefab96c9f94c709f7e18c110d8236 +folderAsset: yes +timeCreated: 1579516275 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMailComposerBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMailComposerBinding.mm new file mode 100644 index 00000000..8f8136eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMailComposerBinding.mm @@ -0,0 +1,101 @@ +// +// NPMailComposerBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPSharingServicesDataTypes.h" +#import "NPSharingServicesManager.h" +#import "NPKit.h" + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP bool NPMailComposerCanSendMail() +{ + return [MFMailComposeViewController canSendMail]; +} + +NPBINDING DONTSTRIP void NPMailComposerRegisterCallback(MailComposerClosedNativeCallback closedCallback) +{ + [NPSharingServicesManager setMailComposerClosedCallback:closedCallback]; +} + +NPBINDING DONTSTRIP void* NPMailComposerCreate() +{ + // create composer + MFMailComposeViewController* composerController = [[MFMailComposeViewController alloc] init]; + if(composerController == nil) + { + NSLog(@"Unable to create composer. Check if composer is available before creating."); + return nil; + } + + [composerController setMailComposeDelegate:[NPSharingServicesManager sharedManager]]; + return NPRetainWithOwnershipTransfer(composerController); +} + +NPBINDING DONTSTRIP void NPMailComposerShow(void* nativePtr) +{ + MFMailComposeViewController* composerController = (__bridge MFMailComposeViewController*)nativePtr; + [UnityGetGLViewController() presentViewController:composerController animated:YES completion:^{ + NSLog(@"[NativePlugins] Showing mail composer."); + }]; +} + +NPBINDING DONTSTRIP void NPMailComposerSetRecipients(void* nativePtr, NPMailRecipientType recipientType, const char** recipients, int count) +{ + // convert to native representation + NSArray* recipientsNativeArray = NPCreateArrayOfNSString(recipients, count); + + // set value + MFMailComposeViewController* composerController = (__bridge MFMailComposeViewController*)nativePtr; + switch (recipientType) + { + case NPMailRecipientTypeTo: + [composerController setToRecipients:recipientsNativeArray]; + break; + + case NPMailRecipientTypeCc: + [composerController setCcRecipients:recipientsNativeArray]; + break; + + case NPMailRecipientTypeBcc: + [composerController setBccRecipients:recipientsNativeArray]; + break; + + default: + break; + } +} + +NPBINDING DONTSTRIP void NPMailComposerSetSubject(void* nativePtr, const char* value) +{ + MFMailComposeViewController* composerController = (__bridge MFMailComposeViewController*)nativePtr; + [composerController setSubject:NPCreateNSStringFromCString(value)]; +} + +NPBINDING DONTSTRIP void NPMailComposerSetBody(void* nativePtr, const char* value, bool isHtml) +{ + MFMailComposeViewController* composerController = (__bridge MFMailComposeViewController*)nativePtr; + [composerController setMessageBody:NPCreateNSStringFromCString(value) isHTML:isHtml]; +} + +NPBINDING DONTSTRIP void NPMailComposerAddScreenshot(void* nativePtr, const char* fileName) +{ + MFMailComposeViewController* composerController = (__bridge MFMailComposeViewController*)nativePtr; + [composerController addAttachmentData:NPCaptureScreenshotAsData(UIImageEncodeTypePNG) + mimeType:kMimeTypePNG + fileName:NPCreateNSStringFromCString(fileName)]; +} + +NPBINDING DONTSTRIP void NPMailComposerAddAttachment(void* nativePtr, NPUnityAttachment data) +{ + MFMailComposeViewController* composerController = (__bridge MFMailComposeViewController*)nativePtr; + [composerController addAttachmentData:[NSData dataWithBytes:data.dataArrayPtr length:data.dataArrayLength] + mimeType:NPCreateNSStringFromCString((const char*)data.mimeTypePtr) + fileName:NPCreateNSStringFromCString((const char*)data.fileNamePtr)]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMailComposerBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMailComposerBinding.mm.meta new file mode 100644 index 00000000..abc9a6be --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMailComposerBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: f8024ee8b330f47f2aa7b28097c80f83 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMessageComposerBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMessageComposerBinding.mm new file mode 100644 index 00000000..e18700b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMessageComposerBinding.mm @@ -0,0 +1,98 @@ +// +// NPMessageComposerBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPSharingServicesDataTypes.h" +#import "NPSharingServicesManager.h" +#import "NPKit.h" + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP bool NPMessageComposerCanSendText() +{ + return [MFMessageComposeViewController canSendText]; +} + +NPBINDING DONTSTRIP bool NPMessageComposerCanSendAttachments() +{ + return [MFMessageComposeViewController canSendAttachments]; +} + +NPBINDING DONTSTRIP bool NPMessageComposerCanSendSubject() +{ + return [MFMessageComposeViewController canSendSubject]; +} + +NPBINDING DONTSTRIP void NPMessageComposerRegisterCallback(MessageComposerClosedNativeCallback closedCallback) +{ + // save references + [NPSharingServicesManager setMessageComposerClosedCallback:closedCallback]; +} + +NPBINDING DONTSTRIP void* NPMessageComposerCreate() +{ + // create composer + MFMessageComposeViewController* composerController = [[MFMessageComposeViewController alloc] init]; + if(composerController == nil) + { + NSLog(@"Unable to create composer. Check if composer is available before creating."); + return nil; + } + + [composerController setMessageComposeDelegate:[NPSharingServicesManager sharedManager]]; + return NPRetainWithOwnershipTransfer(composerController); +} + +NPBINDING DONTSTRIP void NPMessageComposerShow(void* nativePtr) +{ + MFMessageComposeViewController* composerController = (__bridge MFMessageComposeViewController*)nativePtr; + [UnityGetGLViewController() presentViewController:composerController animated:YES completion:^{ + NSLog(@"[NativePlugins] Showing message composer."); + }]; +} + +NPBINDING DONTSTRIP void NPMessageComposerSetRecipients(void* nativePtr, const char** recipients, int count) +{ + MFMessageComposeViewController* composerController = (__bridge MFMessageComposeViewController*)nativePtr; + NSArray* recipientsNativeArray = NPCreateArrayOfNSString(recipients, count); + [composerController setRecipients:recipientsNativeArray]; +} + +NPBINDING DONTSTRIP void NPMessageComposerSetSubject(void* nativePtr, const char* value) +{ + MFMessageComposeViewController* composerController = (__bridge MFMessageComposeViewController*)nativePtr; + [composerController setSubject:NPCreateNSStringFromCString(value)]; +} + +NPBINDING DONTSTRIP void NPMessageComposerSetBody(void* nativePtr, const char* value) +{ + MFMessageComposeViewController* composerController = (__bridge MFMessageComposeViewController*)nativePtr; + [composerController setBody:NPCreateNSStringFromCString(value)]; +} + +NPBINDING DONTSTRIP void NPMessageComposerAddScreenshot(void* nativePtr, const char* fileName) +{ + NSData* screenshotData = NPCaptureScreenshotAsData(UIImageEncodeTypePNG); + NSString* typeId = (NSString*)kUTTypePNG; + MFMessageComposeViewController* composerController = (__bridge MFMessageComposeViewController*)nativePtr; + [composerController addAttachmentData:screenshotData + typeIdentifier:typeId + filename:NPCreateNSStringFromCString(fileName)]; +} + +NPBINDING DONTSTRIP void NPMessageComposerAddAttachment(void* nativePtr, NPUnityAttachment data) +{ + NSData* fileData = [NSData dataWithBytes:data.dataArrayPtr length:data.dataArrayLength]; + NSString* mimeType = NPCreateNSStringFromCString((const char*)data.mimeTypePtr); + NSString* fileName = NPCreateNSStringFromCString((const char*)data.fileNamePtr); + MFMessageComposeViewController* composerController = (__bridge MFMessageComposeViewController*)nativePtr; + [composerController addAttachmentData:fileData + typeIdentifier:NPConvertMimeTypeToUTType(mimeType) + filename:fileName]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMessageComposerBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMessageComposerBinding.mm.meta new file mode 100644 index 00000000..5cf8cf30 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPMessageComposerBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: efe6e4db72511424dbd9cf1b5deb5b5f +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.h new file mode 100644 index 00000000..fec0525c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.h @@ -0,0 +1,22 @@ +// +// NPSLComposeViewControllerWrapper.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import +#import "NPSocialShareComposerProtocol.h" + +@interface NPSLComposeViewControllerWrapper : NSObject + +// static methods ++ (bool)isServiceTypeAvailable:(NSString*)serviceType; + +// init methods +- (id)initWithServiceType:(NSString*)serviceType; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.h.meta new file mode 100644 index 00000000..cd545ab0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.h.meta @@ -0,0 +1,141 @@ +fileFormatVersion: 2 +guid: 808ce76ee8b314313a6b9d030b330e8a +timeCreated: 1596465744 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.m b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.m new file mode 100644 index 00000000..94e70837 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.m @@ -0,0 +1,135 @@ +// +// NPSLComposeViewControllerAdapter.m +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPSLComposeViewControllerWrapper.h" +#import "NPDefines.h" +#import "UIViewController+Presentation.h" + +// constants +static NSString* const kURLSchemeFacebook = @"fb://"; +static NSString* const kURLSchemeTwitter = @"twitter://"; + +@interface NPSLComposeViewControllerWrapper () + +// internal properties +@property(nonatomic, strong) SLComposeViewController* internalComposer; +@property(nonatomic) SLComposeViewControllerCompletionHandler completionHandler; +@property(nonatomic) UINavigationController *viewControllerToPresent; + +@end + +@implementation NPSLComposeViewControllerWrapper + +@synthesize internalComposer = _internalComposer; +@synthesize completionHandler = _completionHandler; + +#pragma mark - Static methods + ++ (bool)isServiceTypeAvailable:(NSString*)serviceType +{ + if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"11.0")) + { + if ([serviceType isEqualToString:SLServiceTypeFacebook]) + { + return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:kURLSchemeFacebook]]; + } + if ([serviceType isEqualToString:SLServiceTypeTwitter]) + { + return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:kURLSchemeTwitter]]; + } + + return false; + } + else + { + return [SLComposeViewController isAvailableForServiceType:serviceType]; + } +} + +#pragma mark - Init methods + +- (id)initWithServiceType:(NSString*)serviceType +{ + self = [super init]; + if (self) + { + // create composer instance + __weak NPSLComposeViewControllerWrapper* weakSelf = self; + self.internalComposer = [SLComposeViewController composeViewControllerForServiceType:serviceType]; + [self.internalComposer setCompletionHandler:^(SLComposeViewControllerResult result) { + [weakSelf onComposerDidDismiss:result]; + }]; + } + return self; +} + +- (void)dealloc +{ + if ([self internalComposer]) + { + [[self internalComposer] setCompletionHandler:nil]; + } +} + +#pragma mark - Private methods + +- (void)onComposerDidDismiss:(SLComposeViewControllerResult)result +{ + // invoke user defined completion block + if ([self completionHandler]) + { + [self completionHandler](result); + } + + // dismiss controller + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:NULL]; +} + +#pragma mark - NPSocialShareComposer methods + +- (BOOL)addText:(NSString*)text +{ + return [[self internalComposer] setInitialText:text]; +} + +- (BOOL)addImage:(UIImage*)image +{ + return [[self internalComposer] addImage:image]; +} + +- (BOOL)addURL:(NSURL*)url +{ + return [[self internalComposer] addURL:url]; +} + +- (void)setCompletionHandler:(SLComposeViewControllerCompletionHandler)completionHandler +{ + _completionHandler = [completionHandler copy]; +} + +- (void)showAtPosition:(CGPoint)position +{ + //Embedding internal composer within a navigation controller as its buggy when directly presented. Now callbacks on dismissed are proper. + UINavigationController *viewControllerToPresent=[[UINavigationController alloc]initWithRootViewController:[self internalComposer]]; + [viewControllerToPresent setNavigationBarHidden:TRUE]; + + [UnityGetGLViewController() presentViewControllerInPopoverStyleIfRequired:viewControllerToPresent + withDelegate:self + fromPosition:position + animated:YES + completion:nil]; +} + +#pragma mark - UIPopoverPresentationControllerDelegate implementation + +- (void)presentationControllerDidDismiss:(UIPresentationController*)presentationController +{ + [self onComposerDidDismiss:SLComposeViewControllerResultCancelled]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.m.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.m.meta new file mode 100644 index 00000000..35603845 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSLComposeViewControllerWrapper.m.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 2b047e1a270d249cd8577314824ace0a +timeCreated: 1596465744 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetBinding.mm new file mode 100644 index 00000000..be9522db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetBinding.mm @@ -0,0 +1,65 @@ +// +// NPShareSheetBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPSharingServicesDataTypes.h" +#import "NPShareSheetWrapper.h" +#import "NPKit.h" + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP void NPShareSheetRegisterCallback(ShareSheetClosedNativeCallback closedCallback) +{ + [NPShareSheetWrapper setShareSheetClosedCallback:closedCallback]; +} + +NPBINDING DONTSTRIP void* NPShareSheetCreate() +{ + NPShareSheetWrapper* shareSheet = [[NPShareSheetWrapper alloc] init]; + return NPRetainWithOwnershipTransfer(shareSheet); +} + +NPBINDING DONTSTRIP void NPShareSheetShow(void* nativePtr, float posX, float posY) +{ + NPShareSheetWrapper* shareSheet = (__bridge NPShareSheetWrapper*)nativePtr; + [shareSheet showAtPosition:CGPointMake(posX, posY) withAnimation:YES]; +} + +NPBINDING DONTSTRIP void NPShareSheetAddText(void* nativePtr, const char* value) +{ + NPShareSheetWrapper* shareSheet = (__bridge NPShareSheetWrapper*)nativePtr; + [shareSheet addItem:NPCreateNSStringFromCString(value)]; +} + +NPBINDING DONTSTRIP void NPShareSheetAddScreenshot(void* nativePtr) +{ + NPShareSheetWrapper* shareSheet = (__bridge NPShareSheetWrapper*)nativePtr; + [shareSheet addItem:NPCaptureScreenshotAsImage()]; +} + +NPBINDING DONTSTRIP void NPShareSheetAddImage(void* nativePtr, void* dataArrayPtr, int dataArrayLength) +{ + NPShareSheetWrapper* shareSheet = (__bridge NPShareSheetWrapper*)nativePtr; + [shareSheet addItem:NPCreateImage(dataArrayPtr, dataArrayLength)]; +} + +NPBINDING DONTSTRIP void NPShareSheetAddURL(void* nativePtr, const char* value) +{ + NPShareSheetWrapper* shareSheet = (__bridge NPShareSheetWrapper*)nativePtr; + [shareSheet addItem:NPCreateNSURLFromCString(value)]; +} + +NPBINDING DONTSTRIP void NPShareSheetAddAttachment(void* nativePtr, NPUnityAttachment data) +{ + NSURL *url = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:NPCreateNSStringFromCString((const char*)data.fileNamePtr)]]; + NSData *rawData = [NSData dataWithBytes:data.dataArrayPtr length:data.dataArrayLength]; + [rawData writeToURL:url atomically:YES]; + + NPShareSheetWrapper* shareSheet = (__bridge NPShareSheetWrapper*)nativePtr; + [shareSheet addItem:url]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetBinding.mm.meta new file mode 100644 index 00000000..47dae6ce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 14cca52dcc2394e3b85e6a3d6c1ed777 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.h new file mode 100644 index 00000000..66296c7a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.h @@ -0,0 +1,20 @@ +// +// NPShareSheetWrapper.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPSharingServicesDataTypes.h" + +@interface NPShareSheetWrapper : NSObject + +// callbacks ++ (void)setShareSheetClosedCallback:(ShareSheetClosedNativeCallback)callback; + +- (void)addItem:(NSObject*)item; +- (void)showAtPosition:(CGPoint)position withAnimation:(BOOL)animated; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.h.meta new file mode 100644 index 00000000..59eb6fc0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 6ca0537f5b60547e28da88bf33125326 +timeCreated: 1554454524 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.mm new file mode 100644 index 00000000..34b10f3e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.mm @@ -0,0 +1,106 @@ +// +// NPShareSheetWrapper.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPShareSheetWrapper.h" +#import "NPKit.h" +#import "UIViewController+Presentation.h" +#import "NPSharingServicesError.h" + +// static properties +static ShareSheetClosedNativeCallback _shareSheetClosedCallback; + +@interface NPShareSheetWrapper () + +@property(nonatomic) NSMutableArray* itemsArray; +@property(nonatomic) UIActivityViewController* activityController; + +@end + +@implementation NPShareSheetWrapper + +@synthesize itemsArray = _itemsArray; +@synthesize activityController = _activityController; + ++ (void)setShareSheetClosedCallback:(ShareSheetClosedNativeCallback)callback +{ + _shareSheetClosedCallback = callback; +} + +- (id)init +{ + self = [super init]; + if (self) + { + [self setItemsArray:[NSMutableArray array]]; + } + return self; +} + +- (void)dealloc +{ + if ([self activityController]) + { + [[self activityController] setCompletionWithItemsHandler:nil]; + } +} + +#pragma mark - Public methods + +- (void)addItem:(NSObject *)item +{ + [[self itemsArray] addObject:item]; +} + +- (void)showAtPosition:(CGPoint)position withAnimation:(BOOL)animated +{ + position = NPConverToNativePosition(position.x, position.y); + + __weak NPShareSheetWrapper* weakSelf = self; + + // create new instance + UIActivityViewController* activityVC = [[UIActivityViewController alloc] initWithActivityItems:_itemsArray applicationActivities:nil]; + [activityVC setCompletionWithItemsHandler:^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) { + [weakSelf onSheetActionFinished:activityType isCompleted:completed withReturnItems:returnedItems andError:activityError]; + }]; + [self setActivityController:activityVC]; + + + // show the view controller + [UnityGetGLViewController() presentViewControllerInPopoverStyleIfRequired:activityVC + withDelegate:self + fromPosition:position + permittedArrowDirections : UIPopoverArrowDirectionAny + animated:YES + completion:^{ + NSLog(@"[NativePlugins] Showing share sheet."); + }]; +} + +- (void)onSheetActionFinished:(UIActivityType)activityType + isCompleted:(BOOL)completed + withReturnItems:(NSArray* __nullable)returnedItems + andError:(NSError* __nullable)activityError +{ + NSLog(@"[NativePlugins] Dismissing share sheet. Status: %d", completed); + + // send data using callback + void* nativePtr = (void*)(__bridge CFTypeRef)self; + _shareSheetClosedCallback(nativePtr, completed, NPCreateError([NPSharingServicesError createFrom:activityError])); + + // remove composer from window + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - UIPopoverPresentationControllerDelegate implementation + +- (void)presentationControllerDidDismiss:(UIPresentationController*)presentationController +{ + NSLog(@"[NativePlugins] Dismissing share sheet."); +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.mm.meta new file mode 100644 index 00000000..cdc6df48 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPShareSheetWrapper.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: fc60e9200e7df444bba89d2c07aabec7 +timeCreated: 1554454524 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesDataTypes.h new file mode 100644 index 00000000..7e418b61 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesDataTypes.h @@ -0,0 +1,38 @@ +// +// NPSharingServicesDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import +#import "NPSocialShareComposerProtocol.h" +#import "NPUnityDataTypes.h" + + +// enum for determining recipient type +typedef enum : NSInteger +{ + NPMailRecipientTypeTo, + NPMailRecipientTypeCc, + NPMailRecipientTypeBcc, +} NPMailRecipientType; + +typedef enum : int +{ + NPSocialShareComposerTypeFacebook, + NPSocialShareComposerTypeTwitter, + NPSocialShareComposerTypeWhatsApp, +} NPSocialShareComposerType; + +// callback signatures +typedef void (*MailComposerClosedNativeCallback)(void* nativePtr, MFMailComposeResult result, NPError error); + +typedef void (*MessageComposerClosedNativeCallback)(void* nativePtr, MessageComposeResult result); + +typedef void (*ShareSheetClosedNativeCallback)(void* nativePtr, bool completed, NPError error); + +typedef void (*SocialShareComposerClosedNativeCallback)(void* nativePtr, SLComposeViewControllerResult result); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesDataTypes.h.meta new file mode 100644 index 00000000..3ab21d24 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesDataTypes.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 468051c720fe9411fa192b979b35ed9d +timeCreated: 1554452872 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.h new file mode 100644 index 00000000..e7eb8981 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.h @@ -0,0 +1,24 @@ +// +// NPSharingServicesError.h +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// +#define Domain @"Notification Services" + +typedef enum : NSInteger +{ + SharingServicesErrorCodeUnknown, + SharingServicesErrorCodeAttachmentNotValid +} SharingServicesErrorCode; + + +@interface NPSharingServicesError : NSError + ++(NPSharingServicesError*) createFrom:(NSError*) error; ++(NPSharingServicesError*) unknown; ++(NPSharingServicesError*) attachmentNotValid; + +@end + diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.h.meta new file mode 100644 index 00000000..a34b81bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.h.meta @@ -0,0 +1,39 @@ +fileFormatVersion: 2 +guid: e4e6abc9c2c7142f9a93294a4f60f4c4 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.m b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.m new file mode 100644 index 00000000..a05ada82 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.m @@ -0,0 +1,56 @@ +// +// NPSharingServicesError.mm +// Native Plugins +// +// Created by Ayyappa on 26/06/24. +// Copyright (c) 2024 Voxel Busters Interactive LLP. All rights reserved. +// + + +#import "NPSharingServicesError.h" + +@interface NPSharingServicesError () + ++(NPSharingServicesError*) createFrom:(SharingServicesErrorCode) code withDescription:(NSString*) errorDescription; + +@end + +@implementation NPSharingServicesError + ++(NPSharingServicesError*) createFrom:(NSError*) error +{ + if(error == nil) + return nil; + + SharingServicesErrorCode errorCode; + + switch (error.code) { + + default: + NSLog(@"[Sharing Services] %ld error code not handled - Inform developer to handle this error code: ", error.code); + errorCode = SharingServicesErrorCodeUnknown; + break; + } + + return [NPSharingServicesError createFrom:errorCode + withDescription:error.description]; +} + ++(NPSharingServicesError*) unknown +{ + return [NPSharingServicesError createFrom: SharingServicesErrorCodeUnknown withDescription: @"Unknown error"]; +} + ++(NPSharingServicesError*) attachmentNotValid +{ + return [NPSharingServicesError createFrom: SharingServicesErrorCodeAttachmentNotValid withDescription: @"Attachment not valid"]; +} + ++(NPSharingServicesError*) createFrom:(SharingServicesErrorCode) code withDescription:(NSString*) errorDescription +{ + return [NPSharingServicesError errorWithDomain:Domain + code:(int)code + userInfo:@{NSLocalizedDescriptionKey: errorDescription}]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.m.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.m.meta new file mode 100644 index 00000000..76f64feb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesError.m.meta @@ -0,0 +1,49 @@ +fileFormatVersion: 2 +guid: 4e884b803fb6e4dd7b03cba3ac2f1687 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 0 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.h new file mode 100644 index 00000000..e43e1412 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.h @@ -0,0 +1,20 @@ +// +// NPMailComposerDelegate.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPSharingServicesDataTypes.h" + +@interface NPSharingServicesManager : NSObject + ++ (NPSharingServicesManager*)sharedManager; ++ (void)setMailComposerClosedCallback:(MailComposerClosedNativeCallback)callback; ++ (void)setMessageComposerClosedCallback:(MessageComposerClosedNativeCallback)callback; ++ (id)createShareComposer:(NPSocialShareComposerType)composerType; ++ (bool)isSocialShareComposerAvailable:(NPSocialShareComposerType)composerType; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.h.meta new file mode 100644 index 00000000..958f113e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.h.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 2e96c6f952c1a4774b6eb66845717000 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.mm new file mode 100644 index 00000000..5a573cfd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.mm @@ -0,0 +1,104 @@ +// +// NPMailComposerDelegate.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPSharingServicesManager.h" +#import "NPKit.h" +#import "NPSLComposeViewControllerWrapper.h" +#import "NPWhatsAppShareComposer.h" +#import "NPSharingServicesError.h" + +static NPSharingServicesManager* _sharedManager = nil; +static MailComposerClosedNativeCallback _mailComposerClosedCallback = nil; +static MessageComposerClosedNativeCallback _messageComposerClosedCallback = nil; + +@implementation NPSharingServicesManager + ++ (NPSharingServicesManager*)sharedManager +{ + if (nil == _sharedManager) + { + _sharedManager = [[NPSharingServicesManager alloc] init]; + } + return _sharedManager; +} + ++ (void)setMailComposerClosedCallback:(MailComposerClosedNativeCallback)callback; +{ + _mailComposerClosedCallback = callback; +} + ++ (void)setMessageComposerClosedCallback:(MessageComposerClosedNativeCallback)callback +{ + _messageComposerClosedCallback = callback; +} + ++ (bool)isSocialShareComposerAvailable:(NPSocialShareComposerType)composerType +{ + switch (composerType) + { + case NPSocialShareComposerTypeFacebook: + return [NPSLComposeViewControllerWrapper isServiceTypeAvailable:SLServiceTypeFacebook]; + + case NPSocialShareComposerTypeTwitter: + return [NPSLComposeViewControllerWrapper isServiceTypeAvailable:SLServiceTypeTwitter]; + + case NPSocialShareComposerTypeWhatsApp: + return [NPWhatsAppShareComposer IsServiceAvailable]; + + default: + return NO; + } +} + ++ (id)createShareComposer:(NPSocialShareComposerType)composerType +{ + switch (composerType) + { + case NPSocialShareComposerTypeFacebook: + return [[NPSLComposeViewControllerWrapper alloc] initWithServiceType:SLServiceTypeFacebook]; + + case NPSocialShareComposerTypeTwitter: + return [[NPSLComposeViewControllerWrapper alloc] initWithServiceType:SLServiceTypeTwitter]; + + case NPSocialShareComposerTypeWhatsApp: + return [[NPWhatsAppShareComposer alloc] init]; + + default: + return NULL; + } +} + +#pragma mark - MFMailComposeViewControllerDelegate methods + +- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(nullable NSError *)error +{ + NSLog(@"[NativePlugins] Dismissing mail composer. Result code: %ld.", (long)result); + + // send callback + void* nativePtr = (void*)(__bridge CFTypeRef)controller; + _mailComposerClosedCallback(nativePtr, result, NPCreateError([NPSharingServicesError createFrom:error])); + + // dismiss view controller + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - MFMessageComposeViewControllerDelegate methods + +- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result +{ + NSLog(@"[NativePlugins] Dismissing message composer. Result code: %ld.", (long)result); + + // send callback + void* nativePtr = (void*)(__bridge CFTypeRef)controller; + _messageComposerClosedCallback(nativePtr, result); + + // dismiss view controller + [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.mm.meta new file mode 100644 index 00000000..9e92ccab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSharingServicesManager.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 22fa4f8ed0f9e456db1191fd39a9e7a4 +timeCreated: 1554454523 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerBinding.mm new file mode 100644 index 00000000..3cc32075 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerBinding.mm @@ -0,0 +1,76 @@ +// +// NPSocialShareComposerBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPSharingServicesDataTypes.h" +#import "NPSharingServicesManager.h" +#import "NPWhatsAppShareComposer.h" +#import "NPSLComposeViewControllerWrapper.h" +#import "NPKit.h" + +#pragma mark - Callback definitions + +// static properties +SocialShareComposerClosedNativeCallback _shareComposerClosedCallback; + +#pragma mark - Native binding methods + +NPBINDING DONTSTRIP bool NPSocialShareComposerIsComposerAvailable(NPSocialShareComposerType composerType) +{ + return [NPSharingServicesManager isSocialShareComposerAvailable:composerType]; +} + +NPBINDING DONTSTRIP void NPSocialShareComposerRegisterCallback(SocialShareComposerClosedNativeCallback closedCallback) +{ + // save references + _shareComposerClosedCallback = closedCallback; +} + +NPBINDING DONTSTRIP void* NPSocialShareComposerCreate(NPSocialShareComposerType composerType) +{ + id composer = [NPSharingServicesManager createShareComposer:composerType]; + void* nativePtr = NPRetainWithOwnershipTransfer(composer); + [composer setCompletionHandler:^(SLComposeViewControllerResult result) { + NSLog(@"[NativePlugins] Dismissing share composer. Result: %ld", (long)result); + _shareComposerClosedCallback(nativePtr, result); + }]; + return nativePtr; +} + +NPBINDING DONTSTRIP void NPSocialShareComposerShow(void* nativePtr, float posX, float posY) +{ + NSLog(@"[NativePlugins] Showing share composer."); + + id composer = (__bridge id)nativePtr; + [composer showAtPosition:CGPointMake(posX, posY)]; +} + +NPBINDING DONTSTRIP void NPSocialShareComposerAddText(void* nativePtr, const char* value) +{ + id composer = (__bridge id)nativePtr; + [composer addText:NPCreateNSStringFromCString(value)]; +} + +NPBINDING DONTSTRIP void NPSocialShareComposerAddScreenshot(void* nativePtr) +{ + id composer = (__bridge id)nativePtr; + [composer addImage:NPCaptureScreenshotAsImage()]; +} + +NPBINDING DONTSTRIP void NPSocialShareComposerAddImage(void* nativePtr, void* dataArrayPtr, int dataArrayLength) +{ + id composer = (__bridge id)nativePtr; + [composer addImage:NPCreateImage(dataArrayPtr, dataArrayLength)]; +} + +NPBINDING DONTSTRIP void NPSocialShareComposerAddURL(void* nativePtr, const char* value) +{ + id composer = (__bridge id)nativePtr; + [composer addURL:NPCreateNSURLFromCString(value)]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerBinding.mm.meta new file mode 100644 index 00000000..46278c3a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerBinding.mm.meta @@ -0,0 +1,104 @@ +fileFormatVersion: 2 +guid: 8924bd7e0fea54b09af08024fa8ce61b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerProtocol.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerProtocol.h new file mode 100644 index 00000000..fad6bff9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerProtocol.h @@ -0,0 +1,26 @@ +// +// NPSocialShareComposerProtocol.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import + +@protocol NPSocialShareComposerProtocol + +// adding items +- (BOOL)addText:(NSString*)text; +- (BOOL)addImage:(UIImage*)image; +- (BOOL)addURL:(NSURL*)url; + +// setter methods +- (void)setCompletionHandler:(SLComposeViewControllerCompletionHandler)completionHandler; + +// presentation methods +- (void)showAtPosition:(CGPoint)position; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerProtocol.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerProtocol.h.meta new file mode 100644 index 00000000..abac4311 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPSocialShareComposerProtocol.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 07cee6989ad8548ffaa05e303468331c +timeCreated: 1554452872 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.h new file mode 100644 index 00000000..71114caa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.h @@ -0,0 +1,19 @@ +// +// NPWhatsAppShareComposer.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import +#import "NPSocialShareComposerProtocol.h" + +@interface NPWhatsAppShareComposer : NSObject + +// static methods ++ (bool)IsServiceAvailable; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.h.meta new file mode 100644 index 00000000..1867cebf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 62ba57c9a35a846da9561f3180d1fab0 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.m b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.m new file mode 100644 index 00000000..acd522aa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.m @@ -0,0 +1,201 @@ +// +// NPWhatsAppShareComposer.m +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPWhatsAppShareComposer.h" +#import "NPDefines.h" + +typedef enum : NSInteger +{ + NativePluginsWhatsAppShareTypeUndefined, + NativePluginsWhatsAppShareTypeText, + NativePluginsWhatsAppShareTypeImage, +} NativePluginsWhatsAppShareType; + +@interface NPWhatsAppShareComposer () + +// properties +@property(nonatomic) NativePluginsWhatsAppShareType shareType; +@property(nonatomic) BOOL didCompleteSharing; +@property(nonatomic) CGPoint openPoint; + +@property(nonatomic, copy) NSString* text; +@property(nonatomic, strong) UIImage* image; +@property(nonatomic, copy) SLComposeViewControllerCompletionHandler completionHandler; +@property(nonatomic, strong) UIDocumentInteractionController* interactionController; + +@end + +@implementation NPWhatsAppShareComposer + +@synthesize shareType = _shareType; +@synthesize didCompleteSharing = _didCompleteSharing; +@synthesize openPoint = _openPoint; + +@synthesize text = _text; +@synthesize image = _image; +@synthesize completionHandler = _completionHandler; + +- (id)init +{ + self = [super init]; + if (self) + { + self.shareType = NativePluginsWhatsAppShareTypeUndefined; + self.didCompleteSharing = NO; + self.openPoint = CGPointZero; + } + + return self; +} + +#pragma mark - Static methods + ++ (bool)IsServiceAvailable +{ + return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"whatsapp://app"]]; +} + +#pragma mark - NativePluginsShareComposeController methods + +- (BOOL)addText:(NSString*)text +{ + if (NativePluginsWhatsAppShareTypeUndefined == self.shareType) + { + bool canShare = [NPWhatsAppShareComposer IsServiceAvailable]; + if (canShare) + { + self.text = text; + self.shareType = NativePluginsWhatsAppShareTypeText; + } + + return canShare; + } + + return false; +} + +- (BOOL)addImage:(UIImage*)image +{ + if (NativePluginsWhatsAppShareTypeUndefined == self.shareType) + { + bool canShare = [NPWhatsAppShareComposer IsServiceAvailable]; + if (canShare) + { + self.image = image; + self.shareType= NativePluginsWhatsAppShareTypeImage; + } + + return canShare; + } + + return false; +} + +- (BOOL)addURL:(NSURL*)url +{ + return [self addText:[url absoluteString]]; +} + +- (void)setCompletionHandler:(SLComposeViewControllerCompletionHandler)completionHandler +{ + _completionHandler = [completionHandler copy]; +} + +- (void)showAtPosition:(CGPoint)position +{ + // save position + self.openPoint = position; + + // based on item type execute appropriate action + switch (self.shareType) + { + case NativePluginsWhatsAppShareTypeText: + [self shareText]; + break; + + case NativePluginsWhatsAppShareTypeImage: + [self shareImage]; + break; + + default: + [self invokeCompletionCallbackWithStatus:NO]; + break; + } +} + +#pragma mark - Private methods + +- (void)shareText +{ + NSString* messageURLStr = [NSString stringWithFormat:@"whatsapp://send?text=%@", self.text]; + NSURL* messageURL = [NSURL URLWithString:[messageURLStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]]; + + // pass data to destination app + [[UIApplication sharedApplication] openURL:messageURL + options:@{} + completionHandler:^(BOOL success) { + // send callback + [self invokeCompletionCallbackWithStatus:success]; + }]; +} + +- (void)shareImage +{ + if (self.image) + { + NSString* tempFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/WhatsAppTemp.wai"]; + [UIImageJPEGRepresentation(self.image, 1.0) writeToFile:tempFilePath atomically:YES]; + + // create interaction controller + _interactionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:tempFilePath]]; + _interactionController.UTI = @"net.whatsapp.image"; + _interactionController.delegate = self; + [_interactionController presentOpenInMenuFromRect:CGRectMake(self.openPoint.x, self.openPoint.y, 1, 1) + inView:UnityGetGLView() + animated:YES]; + } + else + { + [self invokeCompletionCallbackWithStatus:NO]; + } +} + +- (void)invokeCompletionCallbackWithStatus:(BOOL)status +{ + if (self.completionHandler) + { + self.completionHandler(status ? SLComposeViewControllerResultDone : SLComposeViewControllerResultCancelled); + } +} + +#pragma mark - UIDocumentInteractionControllerDelegate implementation + +- (void)documentInteractionControllerWillPresentOpenInMenu:(UIDocumentInteractionController*)controller +{ + NSLog(@"[NativePlugins] WhatsApp share controller will present."); +} + +- (void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController*)controller +{ + NSLog(@"[NativePlugins] WhatsApp share controller did dismiss."); +} + +- (void)documentInteractionController:(UIDocumentInteractionController*)controller willBeginSendingToApplication:(nullable NSString*)application +{ + NSLog(@"[NativePlugins] WhatsApp share controller will begin sending to application."); + self.didCompleteSharing = YES; +} + +- (void)documentInteractionController:(UIDocumentInteractionController*)controller didEndSendingToApplication:(nullable NSString*)application +{ + NSLog(@"[NativePlugins] WhatsApp share controller did end sending to application."); + // execute callback block + [self invokeCompletionCallbackWithStatus:self.didCompleteSharing]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.m.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.m.meta new file mode 100644 index 00000000..ad196ac5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/NPWhatsAppShareComposer.m.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: cf46766d833c44fffbb2730e46ea9e8f +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/SharingServices.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/SharingServices.asset new file mode 100644 index 00000000..15e902f5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/SharingServices.asset @@ -0,0 +1,28 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: SharingServices + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: MessageUI.framework + m_target: 4 + m_isOptional: 0 + - m_name: Social.framework + m_target: 4 + m_isOptional: 0 + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/SharingServices.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/SharingServices.asset.meta new file mode 100644 index 00000000..7ca51c82 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/SharingServices/SharingServices.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8891ef3f735b145668ddfefa6ee0e2cd +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView.meta new file mode 100644 index 00000000..83297f10 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d077cb430caf147d1801ca9431397324 +folderAsset: yes +timeCreated: 1579516161 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.h new file mode 100644 index 00000000..2fefd651 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.h @@ -0,0 +1,73 @@ +// +// NPWebView.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import +#import "NPWebViewTabBar.h" +#import "NPWebViewDataTypes.h" + +typedef enum : int +{ + WebViewStyleNone, + WebViewStylePopup, + WebViewStyleBrowser, +} NPWebViewStyle; + +@interface NPWebView : UIView + +// Properties +@property(nonatomic) bool canDismiss; +@property(nonatomic) NPWebViewStyle style; +@property(nonatomic) bool showSpinnerOnLoad; +@property(nonatomic) CGRect normalisedRect; + +// static callback methods ++ (void)setOnShowCallback:(nonnull WebViewNativeCallback)callback; ++ (void)setOnHideCallback:(nonnull WebViewNativeCallback)callback; ++ (void)setLoadStartCallback:(nonnull WebViewNativeCallback)callback; ++ (void)setLoadFinishCallback:(nonnull WebViewNativeCallback)callback; ++ (void)setRunJavaScriptFinishCallback:(nonnull WebViewRunJavaScriptNativeCallback)callback; ++ (void)setURLSchemeMatchFoundCallback:(nonnull WebViewURLSchemeMatchFoundNativeCallback)callback; + +// init +- (id _Nonnull )initWithFrame:(CGRect)frame; + +// additional properties +- (bool)isLoading; +- (double)progress; +- (NSString*_Nullable)urlString; +- (NSString*_Nullable)title; +- (void)setCanBounce:(bool)canBounce; +- (bool)canBounce; +- (void)setColor:(UIColor*_Nonnull)color; +- (UIColor*_Nullable)color; +- (void)setScalesPageToFit:(bool)scalesPageToFit; +- (bool)scalesPageToFit; +- (void)setAllowsInlineMediaPlayback:(bool)allowsInlineMediaPlayback; +- (bool)allowsInlineMediaPlayback; +- (void)setJavaScriptEnabled:(bool)javaScriptEnabled; +- (bool)javaScriptEnabled; + +// presentation +- (void)showInView:(nonnull UIView*)view; +- (void)dismiss; +- (BOOL)isShowing; + +// load requests +- (void)loadURL:(nonnull NSURL*)url; +- (void)loadHTMLString:(nonnull NSString*)htmlString baseURL:(nullable NSURL*)baseURL; +- (void)loadData:(nonnull NSData*)data MIMEType:(nonnull NSString*)MIMEType characterEncodingName:(nonnull NSString*)characterEncodingName baseURL:(nonnull NSURL*)baseURL; +- (void)runJavaScript:(nonnull NSString*)script withRequestTag:(nonnull void*)tagPtr; +- (void)reload; +- (void)stopLoading; + +// url scheme +- (void)addURLScheme:(nonnull NSString*)scheme; +- (BOOL)shouldStartLoadRequestWithURLScheme:(nonnull NSString*)URLScheme; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.h.meta new file mode 100644 index 00000000..f8420e7d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 861d08e45e1da480b81066732a0c9fc4 +timeCreated: 1553586207 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.mm new file mode 100644 index 00000000..2a16e593 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.mm @@ -0,0 +1,641 @@ +// +// NPWebView.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPWebView.h" +#import "NPKit.h" +#import "UIView+LayoutConstraints.h" +#import "NPWebViewError.h" + +// constants +// reference: https://github.com/mopub/mopub-ios-sdk/blob/master/MoPubSDK/Internal/HTML/MPWebView.m +static NSString *const kMoPubScalesPageToFitScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width, initial-scale=1.0, user-scalable=no'); document.getElementsByTagName('head')[0].appendChild(meta);"; + +#define kTabBarHeight 44 + +// native callbacks +static WebViewNativeCallback _onShowCallback = nil; +static WebViewNativeCallback _onHideCallback = nil; +static WebViewNativeCallback _loadStartCallback = nil; +static WebViewNativeCallback _loadFinishCallback = nil; +static WebViewRunJavaScriptNativeCallback _runJavaScriptCallback = nil; +static WebViewURLSchemeMatchFoundNativeCallback _urlSchemeMatchFoundCallback = nil; + +@interface NPWebView () + +@property(nonatomic, strong) WKWebView* webView; +@property(nonatomic, strong) NPWebViewTabBar* tabBar; +@property(nonatomic, strong) UIButton* closeButton; +@property(nonatomic, strong) NSMutableArray* urlSchemes; + +@end + +@implementation NPWebView + +@synthesize canDismiss = _canDismiss; +@synthesize style = _style; +@synthesize showSpinnerOnLoad = _showSpinnerOnLoad; +@synthesize normalisedRect = _normalisedRect; + +@synthesize webView; +@synthesize tabBar; +@synthesize closeButton; +@synthesize urlSchemes; + +#pragma mark - Static methods + ++(void)setOnShowCallback:(WebViewNativeCallback)callback +{ + _onShowCallback = callback; +} + ++(void)setOnHideCallback:(WebViewNativeCallback)callback +{ + _onHideCallback = callback; +} + ++(void)setLoadStartCallback:(WebViewNativeCallback)callback +{ + _loadStartCallback = callback; +} + ++(void)setLoadFinishCallback:(WebViewNativeCallback)callback +{ + _loadFinishCallback = callback; +} + ++(void)setRunJavaScriptFinishCallback:(WebViewRunJavaScriptNativeCallback)callback +{ + _runJavaScriptCallback = callback; +} + ++(void)setURLSchemeMatchFoundCallback:(WebViewURLSchemeMatchFoundNativeCallback)callback +{ + _urlSchemeMatchFoundCallback = callback; +} + +#pragma mark - Instance methods + +- (id)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) + { + // set default properties + self.urlSchemes = [NSMutableArray array]; + self.translatesAutoresizingMaskIntoConstraints = NO; + + // create subview components + self.webView = [self createWebView]; + self.tabBar = [self createToolbar]; + self.closeButton = [self createCloseButton]; + + // add subviews + [self addSubview:self.webView]; + [self addSubview:self.tabBar]; + [self addSubview:self.closeButton]; + [self addConstraintsToSubViews]; + + [self setBackgroundColor:[UIColor blackColor]]; + } + + return self; +} + +- (void)dealloc +{ + // reset webview properties + [self.webView setUIDelegate:nil]; + [self.webView setNavigationDelegate:nil]; + [self.webView stopLoading]; +} + +- (WKWebView*)createWebView +{ + // create configuration object + WKWebViewConfiguration* webConfig = [[WKWebViewConfiguration alloc] init]; + [webConfig setMediaTypesRequiringUserActionForPlayback:WKAudiovisualMediaTypeAll]; + [webConfig setAllowsInlineMediaPlayback:YES]; + + // setup webview + WKWebView* webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:webConfig]; + webView.UIDelegate = self; + webView.navigationDelegate = self; + webView.opaque = false; + [webView setTranslatesAutoresizingMaskIntoConstraints: NO]; + if (@available(iOS 11.0, *)) { + [webView.scrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever]; + } + + return webView; +} + +- (NPWebViewTabBar*)createToolbar +{ + // setup toolbar + NPWebViewTabBar* tabBar = [[NPWebViewTabBar alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, kTabBarHeight)]; + [tabBar setDelegate:self]; + [tabBar setTranslatesAutoresizingMaskIntoConstraints: NO]; + + return tabBar; +} + +- (UIButton*)createCloseButton +{ + UIImage* closeBtnImage = LoadImageFromResources(@"webview_close_button_custom", @"png"); + if (!closeBtnImage) + { + closeBtnImage = LoadImageFromResources(@"webview_close_button", @"png"); + } + + // create button + UIButton* closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [closeButton setFrame:CGRectMake(0, 0, closeBtnImage.size.width, closeBtnImage.size.height)]; + [closeButton setImage:closeBtnImage forState:UIControlStateNormal]; + [closeButton addTarget:self action:@selector(onCloseButtonPress:) forControlEvents:UIControlEventTouchUpInside]; + [closeButton setTranslatesAutoresizingMaskIntoConstraints: NO]; + + return closeButton; +} + +- (void)addConstraintsToSubViews +{ + // close button section + __weak UIButton* closeButton = self.closeButton; + [closeButton removeExistingConstraints]; + + [closeButton.topAnchor constraintEqualToAnchor:self.topAnchor constant:closeButton.frame.size.height/2].active = YES; + + if (@available(iOS 11.0, *)) { + [closeButton.trailingAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.trailingAnchor constant: -closeButton.frame.size.width/2].active = YES; + } else { + // Fallback on earlier versions + [closeButton.trailingAnchor constraintEqualToAnchor:self.trailingAnchor].active = YES; + } + + // tabbar section + __weak NPWebViewTabBar* tabBar = self.tabBar; + [webView removeExistingConstraints]; + [tabBar.widthAnchor constraintEqualToAnchor:self.widthAnchor].active = YES; + [tabBar.bottomAnchor constraintEqualToAnchor:self.bottomAnchor].active = YES; + [tabBar.centerXAnchor constraintEqualToAnchor:self.centerXAnchor].active = YES; + + if (@available(iOS 11.0, *)) { + [tabBar.topAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.bottomAnchor constant:-kTabBarHeight].active = YES; + } + else + { + [tabBar.topAnchor constraintEqualToAnchor:self.bottomAnchor].active = YES; + } + + [self updateWebViewConstraints]; +} + +- (void)updateWebViewConstraints +{ + // tabbar section + __weak WKWebView* webView = self.webView; + [webView removeExistingConstraints]; + + float bottomPadding = (self.style == WebViewStyleBrowser) ? -kTabBarHeight : 0; + [webView.widthAnchor constraintEqualToAnchor:self.widthAnchor].active = YES; + [webView.centerXAnchor constraintEqualToAnchor:self.centerXAnchor].active = YES; + [webView.topAnchor constraintEqualToAnchor:self.topAnchor].active = YES; + if(self.style == WebViewStyleBrowser) + { + NSLayoutYAxisAnchor* referenceAnchor = nil; + + if (@available(iOS 11.0, *)) + { + referenceAnchor = self.safeAreaLayoutGuide.bottomAnchor; + } + else + { + // Fallback on earlier versions + referenceAnchor = self.bottomAnchor; + + } + + [webView.bottomAnchor constraintEqualToAnchor:referenceAnchor constant:bottomPadding].active = YES; + } + else + { + [webView.heightAnchor constraintEqualToAnchor:self.heightAnchor].active = YES; + } +} + +- (void)updateViewConstraints:(UIView*)parentView +{ + // prepare to set constraints + __weak NPWebView* view= self; + [view removeExistingConstraints]; + + // set new constraints + [NSLayoutConstraint constraintWithItem: view attribute: NSLayoutAttributeTop + relatedBy: NSLayoutRelationEqual toItem: parentView + attribute: NSLayoutAttributeTop multiplier: 1 constant: CGRectGetMinY(_normalisedRect) * parentView.bounds.size.height].active = YES; + + [NSLayoutConstraint constraintWithItem: view attribute: NSLayoutAttributeLeft + relatedBy: NSLayoutRelationEqual toItem: parentView + attribute: NSLayoutAttributeLeft multiplier: 1 constant: CGRectGetMinX(_normalisedRect) * parentView.bounds.size.width].active = YES; + + + [view.widthAnchor constraintEqualToAnchor:parentView.widthAnchor multiplier:CGRectGetWidth(_normalisedRect)].active = YES; + [view.heightAnchor constraintEqualToAnchor:parentView.heightAnchor multiplier:CGRectGetHeight(_normalisedRect)].active = YES; +} + +#pragma mark - Properties + +- (void)setCanDismiss:(BOOL)canDismiss +{ + _canDismiss = canDismiss; + + // update button state + [[self closeButton] setEnabled:canDismiss]; + [[self tabBar] setCanStop:canDismiss]; +} + +- (void)setStyle:(NPWebViewStyle)style +{ + _style = style; + + // by default toolbar and close button are hidden + NPWebViewTabBar* tabBar = self.tabBar; + tabBar.hidden = (style != WebViewStyleBrowser); + + UIButton* closeButton = self.closeButton; + closeButton.hidden = (style != WebViewStylePopup);; + + // update constraints + [self updateWebViewConstraints]; +} + +- (void)setShowSpinnerOnLoad:(BOOL)showSpinnerOnLoad +{ + _showSpinnerOnLoad = showSpinnerOnLoad; + + // show activity indicator if webview is loading + if ([[self webView] isLoading] && showSpinnerOnLoad) + { + [self setLoadingSpinnerVisible:YES]; + } + else + { + [self setLoadingSpinnerVisible:NO]; + } +} + +- (void)setNormalisedRect:(CGRect)normalisedRect +{ + NSLog(@"Rect %@", NSStringFromCGRect(normalisedRect)); + _normalisedRect = normalisedRect; + + // check whether view is visible + if (!self.hidden) + { + [self updateViewConstraints:self.superview]; + } +} + +- (bool)isLoading +{ + return [[self webView] isLoading]; +} + +- (double)progress +{ + return [[self webView] estimatedProgress]; +} + +- (NSString*)urlString +{ + NSURL* url = [[self webView] URL]; + return url ? [url absoluteString] : nil; +} + +- (NSString*)title +{ + return [[self webView] title]; +} + +- (void)setCanBounce:(bool)canBounce +{ + // update webview property + [[[self webView] scrollView] setBounces:canBounce]; +} + +- (bool)canBounce +{ + return [[[self webView] scrollView] bounces]; +} + +- (void)setColor:(UIColor*)color +{ + [super setBackgroundColor:[UIColor blackColor]]; + + // use same value for webview + [[self webView] setBackgroundColor:color]; +} + +- (UIColor*)color +{ + return [[self webView] backgroundColor]; +} + +- (bool)scalesPageToFit +{ + return ([[[self webView] scrollView] delegate] != NULL); +} + +- (void)setScalesPageToFit:(bool)scalesPageToFit +{ + // reference: https://github.com/mopub/mopub-ios-sdk/blob/master/MoPubSDK/Internal/HTML/MPWebView.m + WKWebView* webView = [self webView]; + if (!scalesPageToFit) + { + [[webView scrollView] setDelegate: nil]; + [[[webView configuration] userContentController] removeAllUserScripts]; + } + else + { + // make sure the scroll view can't scroll (prevent double tap to zoom) + [[webView scrollView] setDelegate: self]; + + // inject the user script to scale the page if needed + if (webView.configuration.userContentController.userScripts.count == 0) + { + WKUserScript* viewportScript = [[WKUserScript alloc] initWithSource:kMoPubScalesPageToFitScript + injectionTime:WKUserScriptInjectionTimeAtDocumentEnd + forMainFrameOnly:YES]; + [[[webView configuration] userContentController] addUserScript:viewportScript]; + } + } +} + +- (void)setAllowsInlineMediaPlayback:(bool)allowsInlineMediaPlayback +{ + [[[self webView] configuration] setAllowsInlineMediaPlayback:allowsInlineMediaPlayback]; +} + +- (bool)allowsInlineMediaPlayback +{ + return [[[self webView] configuration] allowsInlineMediaPlayback]; +} + +- (void)setJavaScriptEnabled:(bool)javaScriptEnabled +{ + WKWebViewConfiguration* webConfig = [[self webView] configuration]; + [[webConfig preferences] setJavaScriptEnabled:javaScriptEnabled]; +} + +- (bool)javaScriptEnabled +{ + WKWebViewConfiguration* webConfig = [[self webView] configuration]; + return [[webConfig preferences] javaScriptEnabled]; +} + +#pragma mark - Frame size + +- (void)showInView:(UIView*)view +{ + // check whether view is hidden + if (!self.hidden) + { + return; + } + + // update visiblity + [self setHidden:NO]; + + // attach it to view + [view addSubview:self]; + [view bringSubviewToFront:self]; + [self updateViewConstraints:view]; + + // send callback + _onShowCallback((__bridge void*)self, NPCreateError(nil)); +} + +- (void)dismiss +{ + // update property value + [self setHidden:YES]; + [self removeFromSuperview]; + + // stop request + [self stopLoading]; + + // send callback + _onHideCallback((__bridge void*)self, NPCreateError(nil)); +} + +- (BOOL)isShowing +{ + return ![self isHidden]; +} + +#pragma mark - Load methods + +- (void)loadURL:(NSURL*)url +{ + NSURLRequest* request = [NSURLRequest requestWithURL:url]; + [[self webView] loadRequest:request]; +} + +- (void)loadHTMLString:(NSString*)htmlString baseURL:(NSURL*)baseURL +{ + [[self webView] loadHTMLString:htmlString baseURL:baseURL]; +} + +- (void)loadData:(NSData*)data MIMEType:(NSString*)MIMEType characterEncodingName:(NSString*)characterEncodingName baseURL:(NSURL*)baseURL +{ + [[self webView] loadData:data MIMEType:MIMEType characterEncodingName:characterEncodingName baseURL:baseURL]; +} + +- (void)runJavaScript:(NSString*)script withRequestTag:(void*)tagPtr +{ + [[self webView] evaluateJavaScript:script completionHandler:^(id _Nullable result, NSError* _Nullable error) { + + // send callback + if (!error) + { + NSString* resultJSONStr = [NSString stringWithFormat:@"%@", result]; + _runJavaScriptCallback((__bridge void*)self, NPCreateCStringFromNSString(resultJSONStr), NPCreateError(nil), tagPtr); + } + else + { + _runJavaScriptCallback((__bridge void*)self, nil, NPCreateError([NPWebViewError createFrom:error]), tagPtr); + } + }]; +} + +- (void)reload +{ + [[self webView] reload]; +} + +- (void)stopLoading +{ + // stops loading webview + [[self webView] stopLoading]; + + // hide activity spinner views + [self setLoadingSpinnerVisible:NO]; +} + +#pragma mark - URL Scheme + +- (void)addURLScheme:(NSString*)scheme +{ + [self.urlSchemes addObject:scheme]; +} + +- (BOOL)shouldStartLoadRequestWithURLScheme:(NSString*)URLScheme +{ + return NO; +} + +#pragma mark - Callbacks + +- (void)didFindMatchingURLSchemeForURL:(NSURL*)requestURL +{ + NSLog(@"[NativePlugins] Found matching URL scheme: %@.", [requestURL scheme]); + _urlSchemeMatchFoundCallback((__bridge void*)self, NPCreateCStringFromNSString([requestURL absoluteString])); +} + +#pragma mark - NPWebViewTabBarDelegate implementation + +- (void)didSelectGoBackOnTabBar:(NPWebViewTabBar*)toolbar +{ + NSLog(@"[NativePlugins] User pressed go back."); + [[self webView] goBack]; +} + +- (void)didSelectGoForwardOnTabBar:(NPWebViewTabBar*)toolbar +{ + NSLog(@"[NativePlugins] User pressed go forward."); + [[self webView] goForward]; +} + +- (void)didSelectStopOnTabBar:(NPWebViewTabBar*)toolbar +{ + NSLog(@"[NativePlugins] User pressed stop."); + [self dismiss]; +} + +- (void)didSelectReloadOnTabBar:(NPWebViewTabBar*)toolbar +{ + NSLog(@"[NativePlugins] User pressed reload."); + [self reload]; +} + +#pragma mark - Button callback methods + +- (void)onCloseButtonPress:(id)sender +{ + [self dismiss]; +} + +#pragma mark - Misc methods + +- (void)setLoadingSpinnerVisible:(BOOL)visible +{ + [UIApplication sharedApplication].networkActivityIndicatorVisible = visible; +} + +- (void)refreshScreenBasedOnWebViewState +{ + WKWebView* webView = [self webView]; + + // update toolbar state + NPWebViewTabBar* tabBar = [self tabBar]; + [tabBar setCanGoBack:webView.canGoBack]; + [tabBar setCanGoForward:webView.canGoForward]; + + // update indictator state + [self setLoadingSpinnerVisible:([webView isLoading] && self.showSpinnerOnLoad)]; +} + +#pragma mark - WKNavigationDelegate Methods + +- (void)webView:(WKWebView*)webView didStartProvisionalNavigation:(null_unspecified WKNavigation*)navigation +{ + NSLog(@"[NativePlugins] Webview started load request."); + [self refreshScreenBasedOnWebViewState]; + + // send callback + _loadStartCallback((__bridge void*)self, NPCreateError(nil)); +} + +- (void)webView:(WKWebView*)webView didFinishNavigation:(null_unspecified WKNavigation*)navigation +{ + NSLog(@"[NativePlugins] Webview finished loading."); + [self refreshScreenBasedOnWebViewState]; + + // send callback + _loadFinishCallback((__bridge void*)self, NPCreateError(nil)); +} + +- (void)webView:(WKWebView*)webView didFailNavigation:(null_unspecified WKNavigation*)navigation withError:(NSError*)error +{ + NSLog(@"[NativePlugins] Webview failed to load."); + [self refreshScreenBasedOnWebViewState]; + + // send callback + _loadFinishCallback((__bridge void*)self, NPCreateError([NPWebViewError createFrom: error])); +} + +- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler +{ + NSURL *requestURL = [[navigationAction request] URL]; + NSString *currentURLScheme = [requestURL scheme]; + + + if ([self.urlSchemes indexOfObject:currentURLScheme] != NSNotFound) + { + // notify observers about matching url scheme + [self didFindMatchingURLSchemeForURL:requestURL]; + + // check if we need to continue with load request + if (![self shouldStartLoadRequestWithURLScheme:currentURLScheme]) + { + decisionHandler(WKNavigationActionPolicyCancel); + return; + } + } else if ([currentURLScheme hasPrefix:@"itms-"]) { + + if ([[UIApplication sharedApplication] canOpenURL:requestURL]) + { + [[UIApplication sharedApplication] openURL:requestURL options:@{} completionHandler:nil]; + decisionHandler(WKNavigationActionPolicyCancel); + return; + } + } + + decisionHandler(WKNavigationActionPolicyAllow); +} + +#pragma mark - UIScrollViewDelegate Methods + +// reference: https://github.com/mopub/mopub-ios-sdk/blob/master/MoPubSDK/Internal/HTML/MPWebView.m +// avoid double tap to zoom in WKWebView +// delegate is only set when scalesPagesToFit is set to NO +- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView +{ + return nil; +} + +#pragma mark - WKUIDelegate Methods +- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures +{ + if (![navigationAction.targetFrame isMainFrame]) { + [webView loadRequest:navigationAction.request]; + } + + return nil; +} +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.mm.meta new file mode 100644 index 00000000..45cbba78 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebView.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 093ffec034f6746afa2897ce7c87eb53 +timeCreated: 1553586206 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewBinding.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewBinding.mm new file mode 100644 index 00000000..ac8db29a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewBinding.mm @@ -0,0 +1,205 @@ +// +// NPWebViewBinding.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import "NPWebView.h" +#import "NPKit.h" + +NPBINDING DONTSTRIP void NPWebViewRegisterCallbacks(WebViewNativeCallback onShowCallback, + WebViewNativeCallback onHideCallback, + WebViewNativeCallback loadStartCallback, + WebViewNativeCallback loadFinishCallback, + WebViewRunJavaScriptNativeCallback runJavaScriptFinishCallback, + WebViewURLSchemeMatchFoundNativeCallback urlMatchFoundCallback) +{ + // set callbacks + [NPWebView setOnShowCallback:onShowCallback]; + [NPWebView setOnHideCallback:onHideCallback]; + [NPWebView setLoadStartCallback:loadStartCallback]; + [NPWebView setLoadFinishCallback:loadFinishCallback]; + [NPWebView setRunJavaScriptFinishCallback:runJavaScriptFinishCallback]; + [NPWebView setURLSchemeMatchFoundCallback:urlMatchFoundCallback]; +} + +NPBINDING DONTSTRIP NPIntPtr NPWebViewCreate() +{ + NPWebView* webView = [[NPWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; + [webView setHidden:YES]; + return NPRetainWithOwnershipTransfer(webView); +} + +NPBINDING DONTSTRIP const char* NPWebViewGetURL(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + NSString* urlString = [webView urlString]; + return NPCreateCStringCopyFromNSString(urlString); +} + +NPBINDING DONTSTRIP const char* NPWebViewGetTitle(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return NPCreateCStringCopyFromNSString([webView title]); +} + +NPBINDING DONTSTRIP NPUnityRect NPWebViewGetNormalizedRect(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + CGRect cgRect = [webView normalisedRect]; + + // create new rect + NPUnityRect rect = NPRectMake(cgRect); + return rect; +} + +NPBINDING DONTSTRIP void NPWebViewSetNormalizedRect(NPIntPtr nativePtr, NPUnityRect rect) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView setNormalisedRect:CGRectMake(rect.x, rect.y, rect.width, rect.height)]; +} + +NPBINDING DONTSTRIP NPWebViewStyle NPWebViewGetStyle(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView style]; +} + +NPBINDING DONTSTRIP void NPWebViewSetStyle(NPIntPtr nativePtr, NPWebViewStyle style) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView setStyle:style]; +} + +NPBINDING DONTSTRIP bool NPWebViewGetScalesPageToFit(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView scalesPageToFit]; +} + +NPBINDING DONTSTRIP void NPWebViewSetScalesPageToFit(NPIntPtr nativePtr, bool value) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView setScalesPageToFit:value]; +} + +NPBINDING DONTSTRIP bool NPWebViewGetCanBounce(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView canBounce]; +} + +NPBINDING DONTSTRIP void NPWebViewSetCanBounce(NPIntPtr nativePtr, bool value) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView setCanBounce:value]; +} + +NPBINDING DONTSTRIP NPUnityColor NPWebViewGetBackgroundColor(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return NPColorCreateFromUIColor([webView color]); +} + +NPBINDING DONTSTRIP void NPWebViewSetBackgroundColor(NPIntPtr nativePtr, NPUnityColor color) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView setColor:[UIColor colorWithRed:color.r green:color.g blue:color.b alpha:color.a]]; +} + +NPBINDING DONTSTRIP double NPWebViewGetProgress(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView progress]; +} + +NPBINDING DONTSTRIP bool NPWebViewGetIsLoading(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView isLoading]; +} + +NPBINDING DONTSTRIP bool NPWebViewGetJavaScriptEnabled(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView javaScriptEnabled]; +} + +NPBINDING DONTSTRIP void NPWebViewSetJavaScriptEnabled(NPIntPtr nativePtr, bool enabled) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + return [webView setJavaScriptEnabled:enabled]; +} + +NPBINDING DONTSTRIP void NPWebViewShow(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView showInView:UnityGetGLView()]; +} + +NPBINDING DONTSTRIP void NPWebViewHide(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView dismiss]; +} + +NPBINDING DONTSTRIP void NPWebViewLoadURL(NPIntPtr nativePtr, const char* urlStr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView loadURL:NPCreateNSURLFromCString(urlStr)]; +} + +NPBINDING DONTSTRIP void NPWebViewLoadHtmlString(NPIntPtr nativePtr, const char* htmlStr, const char* baseUrl) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView loadHTMLString:NPCreateNSStringFromCString(htmlStr) baseURL:NPCreateNSURLFromCString(baseUrl)]; +} + +NPBINDING DONTSTRIP void NPWebViewLoadData(NPIntPtr nativePtr, NPUnityAttachment attachmentData, const char* encodingName, const char* baseUrl) +{ + NSData* data = [NSData dataWithBytes:attachmentData.dataArrayPtr length:attachmentData.dataArrayLength]; + NSString* mimeType = NPCreateNSStringFromCString((const char*)attachmentData.mimeTypePtr); + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView loadData:data + MIMEType:mimeType +characterEncodingName:NPGetTextEncodingName(NPCreateNSStringFromCString(encodingName)) + baseURL:NPCreateNSURLFromCString(baseUrl)]; +} + +NPBINDING DONTSTRIP void NPWebViewReload(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView reload]; +} + +NPBINDING DONTSTRIP void NPWebViewStopLoading(NPIntPtr nativePtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView stopLoading]; +} + +NPBINDING DONTSTRIP void NPWebViewRunJavaScript(NPIntPtr nativePtr, const char* script, NPIntPtr tagPtr) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView runJavaScript:NPCreateNSStringFromCString(script) withRequestTag:tagPtr]; +} + +NPBINDING DONTSTRIP void NPWebViewAddURLScheme(NPIntPtr nativePtr, const char* scheme) +{ + NPWebView* webView = (__bridge NPWebView*)nativePtr; + [webView addURLScheme:NPCreateNSStringFromCString(scheme)]; +} + +// reference: https://stackoverflow.com/questions/27105094/how-to-remove-cache-in-wkwebview +NPBINDING DONTSTRIP void NPWebViewClearCache() +{ + NSSet* websiteDataTypes = [NSSet setWithArray:@[WKWebsiteDataTypeDiskCache, + WKWebsiteDataTypeMemoryCache]]; + NSDate* dateFrom = [NSDate dateWithTimeIntervalSince1970:0]; + [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{ + // done + }]; +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewBinding.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewBinding.mm.meta new file mode 100644 index 00000000..060c55e0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewBinding.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 00a22bb48bfd44247b890aacca1ddf4d +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewDataTypes.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewDataTypes.h new file mode 100644 index 00000000..2ea2996c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewDataTypes.h @@ -0,0 +1,17 @@ +// +// NPWebViewDataTypes.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPDefines.h" +#import "NPUnityDataTypes.h" + +// callback signatures +typedef void (*WebViewNativeCallback)(NPIntPtr nativePtr, NPError error); + +typedef void (*WebViewRunJavaScriptNativeCallback)(NPIntPtr nativePtr, const char* result, NPError error, NPIntPtr tagPtr); + +typedef void (*WebViewURLSchemeMatchFoundNativeCallback)(NPIntPtr nativePtr, const char* url); diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewDataTypes.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewDataTypes.h.meta new file mode 100644 index 00000000..40f359bd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewDataTypes.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: ee2ef6bd2603440c7878cd06ecff35e3 +timeCreated: 1553605027 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.h new file mode 100644 index 00000000..6aca4883 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.h @@ -0,0 +1,22 @@ +// +// NPWebViewTabBar.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#define Domain @"Web View" + +typedef enum : NSInteger +{ + WebViewErrorCodeUnknown, +} WebViewErrorCode; + + +@interface NPWebViewError : NSError + ++(NPWebViewError*) createFrom:(NSError*) error; ++(NPWebViewError*) unknown; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.h.meta new file mode 100644 index 00000000..5ca3d5b8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: df3539735d50c4e52a8d65e8e4fabdcd +timeCreated: 1553586207 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.mm new file mode 100644 index 00000000..db040b32 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.mm @@ -0,0 +1,52 @@ +// +// NPWebViewError.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPWebViewError.h" + + +@interface NPWebViewError () + ++(NPWebViewError*) createFrom:(WebViewErrorCode) code withDescription:(NSString*) errorDescription; + +@end + +@implementation NPWebViewError + ++(NPWebViewError*) createFrom:(NSError*) error +{ + if(error == nil) + return nil; + + WebViewErrorCode errorCode; + + switch (error.code) { + + default: + NSLog(@"[Web View] %ld error code not handled - Inform developer to handle this error code: ", error.code); + errorCode = WebViewErrorCodeUnknown; + break; + } + + return [NPWebViewError createFrom:errorCode + withDescription:error.description]; +} + ++(NPWebViewError*) unknown +{ + return [NPWebViewError createFrom: WebViewErrorCodeUnknown withDescription: @"Unknown error"]; +} + + ++(NPWebViewError*) createFrom:(WebViewErrorCode) code withDescription:(NSString*) errorDescription +{ + return [NPWebViewError errorWithDomain:Domain + code:(int)code + userInfo:@{NSLocalizedDescriptionKey: errorDescription}]; +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.mm.meta new file mode 100644 index 00000000..7b39cae9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewError.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 47770499b071846bf86bfb3fc28eb1a3 +timeCreated: 1553586207 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.h b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.h new file mode 100644 index 00000000..4efd2dec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.h @@ -0,0 +1,33 @@ +// +// NPWebViewTabBar.h +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import +#import + +@class NPWebViewTabBar; + +@protocol NPWebViewTabBarDelegate + +- (void)didSelectGoBackOnTabBar:(NPWebViewTabBar*)toolbar; +- (void)didSelectGoForwardOnTabBar:(NPWebViewTabBar*)toolbar; +- (void)didSelectStopOnTabBar:(NPWebViewTabBar*)toolbar; +- (void)didSelectReloadOnTabBar:(NPWebViewTabBar*)toolbar; + +@end + +@interface NPWebViewTabBar : UIView + +@property(nonatomic, assign) id delegate; + +// button states +- (void)setCanGoBack:(BOOL)canGoBack; +- (void)setCanStop:(BOOL)canStop; +- (void)setCanRefresh:(BOOL)canRefresh; +- (void)setCanGoForward:(BOOL)canGoForward; + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.h.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.h.meta new file mode 100644 index 00000000..62e9e4c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.h.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 386903209bda44ce4a97cd3fbed3ce7f +timeCreated: 1553586207 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.mm b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.mm new file mode 100644 index 00000000..57f4d3cc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.mm @@ -0,0 +1,155 @@ +// +// NPWebViewTabBar.mm +// Native Plugins +// +// Created by Ashwin kumar on 22/01/19. +// Copyright (c) 2019 Voxel Busters Interactive LLP. All rights reserved. +// + +#import "NPWebViewTabBar.h" +#import "UIView+LayoutConstraints.h" + +@interface NPWebViewTabBar () + +// properties +@property(nonatomic, strong) UIToolbar* toolBar; +@property(nonatomic, strong) UIBarButtonItem* backButton; +@property(nonatomic, strong) UIBarButtonItem* stopButton; +@property(nonatomic, strong) UIBarButtonItem* reloadButton; +@property(nonatomic, strong) UIBarButtonItem* forwardButton; + +@end + +@implementation NPWebViewTabBar + +@synthesize delegate; + +@synthesize toolBar; +@synthesize backButton; +@synthesize stopButton; +@synthesize reloadButton; +@synthesize forwardButton; + +- (id)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + + if (self) + { + // create bar items + UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRewind + target:self + action:@selector(onGoBackButtonPress)]; + UIBarButtonItem* stopButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop + target:self + action:@selector(onStopButtonPress)]; + UIBarButtonItem* reloadButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh + target:self + action:@selector(onReloadButtonPress)]; + UIBarButtonItem* forwardButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward + target:self + action:@selector(onGoForwardButtonPress)]; + UIBarButtonItem* flexispace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace + target:nil + action:nil]; + + // create tab bar + NSArray* toolBarItems = @[backButton, + flexispace, + forwardButton, + flexispace, + reloadButton, + flexispace, + stopButton]; + UIToolbar* toolBar = [self createToolBarWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height) + andItems:toolBarItems]; + + // save reference + self.backButton = backButton; + self.stopButton = stopButton; + self.reloadButton = reloadButton; + self.forwardButton = forwardButton; + self.toolBar = toolBar; + + // add to view + [self addSubview:self.toolBar]; + + // add constraints + [toolBar removeExistingConstraints]; + [toolBar.widthAnchor constraintEqualToAnchor:self.widthAnchor].active = true; + [toolBar.topAnchor constraintEqualToAnchor:self.topAnchor].active = true; + [toolBar.centerXAnchor constraintEqualToAnchor:self.centerXAnchor].active = true; + [toolBar.heightAnchor constraintLessThanOrEqualToAnchor:self.heightAnchor].active = true; + + [self setBackgroundColor:[UIColor blackColor]]; + } + return self; +} + +-(UIToolbar*)createToolBarWithFrame:(CGRect)frame andItems:(NSArray*)items +{ + UIToolbar* toolBar = [[UIToolbar alloc] initWithFrame:frame]; + [toolBar setTranslatesAutoresizingMaskIntoConstraints:false]; + [toolBar setItems:items]; + [toolBar setBarStyle:UIBarStyleBlack]; + + return toolBar; +} + +#pragma mark - button states + +- (void)setCanGoBack:(BOOL)canGoBack +{ + self.backButton.enabled = canGoBack; +} + +- (void)setCanStop:(BOOL)canStop +{ + self.stopButton.enabled = canStop; +} + +- (void)setCanRefresh:(BOOL)canRefresh +{ + self.reloadButton.enabled = canRefresh; +} + +- (void)setCanGoForward:(BOOL)canGoForward +{ + self.forwardButton.enabled = canGoForward; +} + +#pragma mark - Button callbacks + +- (void)onGoBackButtonPress +{ + if (delegate) + { + [delegate didSelectGoBackOnTabBar:self]; + } +} + +- (void)onGoForwardButtonPress +{ + if (delegate) + { + [delegate didSelectGoForwardOnTabBar:self]; + } +} + +- (void)onStopButtonPress +{ + if (delegate) + { + [delegate didSelectStopOnTabBar:self]; + } +} + +- (void)onReloadButtonPress +{ + if (delegate) + { + [delegate didSelectReloadOnTabBar:self]; + } +} + +@end diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.mm.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.mm.meta new file mode 100644 index 00000000..f2cc6d7e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/NPWebViewTabBar.mm.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: e1da3cac203804960a322368e11d47b8 +timeCreated: 1553586207 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/WebView.asset b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/WebView.asset new file mode 100644 index 00000000..ed9d943b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/WebView.asset @@ -0,0 +1,25 @@ +%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: d4ef977ceb472480b934e1aee1b94354, type: 3} + m_Name: WebView + m_EditorClassIdentifier: + m_group: {fileID: 11400000, guid: 52aa1427fb2704a9cbecc9c6eca2c82c, type: 2} + m_isEnabled: 1 + m_compileFlags: [] + m_headerPaths: [] + m_frameworks: + - m_name: WebKit.framework + m_target: 4 + m_isOptional: 0 + m_capabilities: [] + m_macros: [] + m_buildProperties: [] diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/WebView.asset.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/WebView.asset.meta new file mode 100644 index 00000000..577a49bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/WebView.asset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 01532d84928714baaa6c23c20a88fae3 +timeCreated: 1549459458 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button.png new file mode 100644 index 00000000..d28ad2ce Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button.png.meta new file mode 100644 index 00000000..bcb8a428 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: 39c369a1159044551b5a627fdc684230 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 509c504b8bc5b49dbb7e9f290dd44ded + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button@2x.png b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button@2x.png new file mode 100644 index 00000000..cb171b40 Binary files /dev/null and b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button@2x.png differ diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button@2x.png.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button@2x.png.meta new file mode 100644 index 00000000..762231cd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Plugins/iOS/WebView/webview_close_button@2x.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: a0eef7368ee8941009410791ff300d2b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: b33211aca317749d393f6a433f826ea1 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime.meta new file mode 100644 index 00000000..bd4e4511 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f4340d3d6d8a422685287b97c5d934a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android.meta new file mode 100644 index 00000000..a50099d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebe8b93dc49894698b2c90abc5a9917a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook.meta new file mode 100644 index 00000000..a3cc0afb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85d9fdecec652491bbaab2d5e15cb19e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookContact.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookContact.cs new file mode 100644 index 00000000..aa990432 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookContact.cs @@ -0,0 +1,92 @@ +#if UNITY_ANDROID +using System; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Android +{ + internal sealed class AddressBookContact : AddressBookContactBase, IAddressBookContact + { +#region Fields + + private NativeAddressBookContact m_instance; + private NativeContext m_context; + +#endregion + +#region Constructors + + public AddressBookContact(NativeAddressBookContact nativeAddressBook) + { + m_instance = nativeAddressBook; + } + + ~AddressBookContact() + { + Dispose(false); + } + +#endregion + +#region Base implementation + + protected override string GetFirstNameInternal() + { + return m_instance.GetGivenName(); + } + + protected override string GetMiddleNameInternal() + { + return ""; + } + + protected override string GetLastNameInternal() + { + return m_instance.GetFamilyName(); + } + + protected override string[] GetPhoneNumbersInternal() + { + return m_instance.GetPhoneNumbers(); + } + + protected override string[] GetEmailAddressesInternal() + { + return m_instance.GetEmailAddresses(); + } + + protected override string GetCompanyNameInternal() + { + return m_instance.GetCompanyName(); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + NativeAsset asset = m_instance.GetProfilePicture(); + + if(!asset.IsNull()) + { + m_instance.GetProfilePicture().Load(new NativeLoadAssetListener + { + onSuccessCallback = (NativeBytesWrapper data) => + { + callback(data.GetBytes(), null); + }, + onFailureCallback = (string error) => + { + callback(null, new Error(error)); + } + }); + } + else + { + callback(null, new Error("Image not available")); + } + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookContact.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookContact.cs.meta new file mode 100644 index 00000000..7c847463 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookContact.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eec4b1051f537407698220ddbbe439da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookInterface.cs new file mode 100644 index 00000000..427e7bd3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookInterface.cs @@ -0,0 +1,60 @@ +#if UNITY_ANDROID +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Android +{ + public sealed class AddressBookInterface : NativeAddressBookInterfaceBase + { +#region Private fields + + private NativeAddressBook m_instance; + +#endregion + +#region Constructors + + public AddressBookInterface() : base(isAvailable: true) + { + + m_instance = new NativeAddressBook(NativeUnityPluginUtility.GetContext()); + } + +#endregion + + +#region Public methods + + public override AddressBookContactsAccessStatus GetContactsAccessStatus() + { + return m_instance.IsAuthorized() ? AddressBookContactsAccessStatus.Authorized : AddressBookContactsAccessStatus.Denied; + } + + public override void ReadContacts(ReadContactsOptions options, ReadContactsInternalCallback callback) + { + NativeAddressBookReadOptions nativeOptions = new NativeAddressBookReadOptions + { + Limit = options.Limit, + Offset = options.Offset, + Constraints = (int)options.Constraints + }; + + m_instance.ReadContacts(nativeOptions, new NativeReadContactsListener() + { + onSuccessCallback = (NativeList nativeList, int nextOffset) => + { + AddressBookContact[] contacts = NativeUnityPluginUtility.Map(nativeList.Get()); + callback(contacts, nextOffset, null); + }, + onFailureCallback = (NativeErrorInfo errorInfo) => + { + callback(null, -1, errorInfo.Convert(AddressBookError.kDomain)); + } + }); + } + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookInterface.cs.meta new file mode 100644 index 00000000..f16ce74d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/AddressBookInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a598b9b3702e4bbe9d82f2d462af860 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBook.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBook.cs new file mode 100644 index 00000000..9d38373b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBook.cs @@ -0,0 +1,88 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.AddressBookCore.Android +{ + public class NativeAddressBook : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + + #region Constructor + + public NativeAddressBook(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAddressBook][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public bool IsAuthorized() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAddressBook][Method : IsAuthorized]"); +#endif + return Call(Native.Method.kIsAuthorized); + } + public void ReadContacts(NativeReadContactsListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAddressBook][Method : ReadContacts]"); +#endif + Call(Native.Method.kReadContacts, new object[] { listener } ); + } + public void ReadContacts(NativeAddressBookReadOptions options, NativeReadContactsListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAddressBook][Method : ReadContacts]"); +#endif + Call(Native.Method.kReadContacts, new object[] { options.NativeObject, listener } ); + } + public void RequestPermission(NativeRequestContactsPermissionListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAddressBook][Method : RequestPermission]"); +#endif + Call(Native.Method.kRequestPermission, new object[] { listener } ); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.addressbook.AddressBook"; + + internal class Method + { + internal const string kReadContacts = "readContacts"; + internal const string kIsAuthorized = "isAuthorized"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kRequestPermission = "requestPermission"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBook.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBook.cs.meta new file mode 100644 index 00000000..ea5ca7b8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBook.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08058df59bd234eaa9fbd36bc0f91cbb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookContact.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookContact.cs new file mode 100644 index 00000000..113fff45 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookContact.cs @@ -0,0 +1,102 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Android +{ + public class NativeAddressBookContact : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeAddressBookContact(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeAddressBookContact(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeAddressBookContact() + { + DebugLogger.Log("Disposing NativeAddressBookContact"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public string GetCompanyName() + { + return Call(Native.Method.kGetCompanyName); + } + public string GetDisplayName() + { + return Call(Native.Method.kGetDisplayName); + } + public string[] GetEmailAddresses() + { + return Call(Native.Method.kGetEmailAddresses); + } + public string GetFamilyName() + { + return Call(Native.Method.kGetFamilyName); + } + public string GetGivenName() + { + return Call(Native.Method.kGetGivenName); + } + public string[] GetPhoneNumbers() + { + return Call(Native.Method.kGetPhoneNumbers); + } + public NativeAsset GetProfilePicture() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetProfilePicture); + NativeAsset data = new NativeAsset(nativeObj); + return data; + } + public override string ToString() + { + return Call(Native.Method.kToString); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.addressbook.AddressBookContact"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kGetGivenName = "getGivenName"; + internal const string kGetFamilyName = "getFamilyName"; + internal const string kGetDisplayName = "getDisplayName"; + internal const string kGetPhoneNumbers = "getPhoneNumbers"; + internal const string kGetCompanyName = "getCompanyName"; + internal const string kGetEmailAddresses = "getEmailAddresses"; + internal const string kGetProfilePicture = "getProfilePicture"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookContact.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookContact.cs.meta new file mode 100644 index 00000000..4bd54aea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookContact.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66a5da137a1124e978192a608f6d8292 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookReadOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookReadOptions.cs new file mode 100644 index 00000000..71a8a0c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookReadOptions.cs @@ -0,0 +1,103 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Android +{ + public class NativeAddressBookReadOptions : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public int Limit + { + get + { + return Get("limit"); + } + + set + { + Set("limit", value); + } + } + + + public int Offset + { + get + { + return Get("offset"); + } + + set + { + Set("offset", value); + } + } + + + public long Constraints + { + get + { + return Get("constraints"); + } + + set + { + Set("constraints", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeAddressBookReadOptions(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeAddressBookReadOptions(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeAddressBookReadOptions() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeAddressBookReadOptions() + { + DebugLogger.Log("Disposing NativeAddressBookReadOptions"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.addressbook.AddressBookReadOptions"; + + internal class Method + { + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookReadOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookReadOptions.cs.meta new file mode 100644 index 00000000..ebcfe57e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeAddressBookReadOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4bc58548c1624426afb3a0b14db41e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeReadContactsListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeReadContactsListener.cs new file mode 100644 index 00000000..8753ff31 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeReadContactsListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Android +{ + public class NativeReadContactsListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo errorInfo); + public delegate void OnSuccessDelegate(NativeList contacts, int nextOffset); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeReadContactsListener() : base("com.voxelbusters.essentialkit.addressbook.IAddressBookHandler$IReadContactsListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject errorInfo) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "errorInfo" + " : " + errorInfo +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(errorInfo)); + } + } + public void onSuccess(AndroidJavaObject contacts, int nextOffset) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "contacts" + " : " + contacts +"]" + " " + "[" + "nextOffset" + " : " + nextOffset +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(contacts), nextOffset); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeReadContactsListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeReadContactsListener.cs.meta new file mode 100644 index 00000000..5fe70ccf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeReadContactsListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd08f8ab07aac41efb28ee64adc7abab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeRequestContactsPermissionListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeRequestContactsPermissionListener.cs new file mode 100644 index 00000000..d1fc5e83 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeRequestContactsPermissionListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Android +{ + public class NativeRequestContactsPermissionListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo errorInfo); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeRequestContactsPermissionListener() : base("com.voxelbusters.essentialkit.addressbook.IAddressBookHandler$IRequestContactsPermissionListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject errorInfo) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "errorInfo" + " : " + errorInfo +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(errorInfo)); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeRequestContactsPermissionListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeRequestContactsPermissionListener.cs.meta new file mode 100644 index 00000000..74ca22de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AddressBook/NativeRequestContactsPermissionListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1980f076768b44d0b7cd06b2baf594f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater.meta new file mode 100644 index 00000000..bddcb5ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8ab3a958e55844609cb225295ae9c40 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/AppUpdaterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/AppUpdaterInterface.cs new file mode 100644 index 00000000..224bf562 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/AppUpdaterInterface.cs @@ -0,0 +1,68 @@ +#if UNITY_ANDROID +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Android +{ + public sealed class AppUpdaterInterface : NativeFeatureInterfaceBase, INativeAppUpdaterInterface + { +#region Private fields + + private NativeAppUpdater m_instance; + +#endregion + +#region Constructors + + public AppUpdaterInterface() : base(isAvailable: true) + { + + m_instance = new NativeAppUpdater(NativeUnityPluginUtility.GetContext()); + } + + #endregion + + + #region Public methods + + public void RequestUpdateInfo(EventCallback callback) + { + m_instance.RequestUpdateInfo(new NativeOnRequestUpdateInfoComplete() { + onSuccessCallback = (nativeUpdateInfo) => { + AppUpdaterUpdateStatus status = (AppUpdaterUpdateStatus)nativeUpdateInfo.Status; + AppUpdaterUpdateInfo result = new AppUpdaterUpdateInfo(status, nativeUpdateInfo.BuildTag); + callback(result, null); + }, + onFailureCallback = (errorInfo) => { + callback(null, new Error(null, errorInfo.GetCode(), errorInfo.GetDescription())); + } + }); + } + + public void PromptUpdate(PromptUpdateOptions options, EventCallback callback) + { + NativePromptUpdateOptions nativeOptions = new NativePromptUpdateOptions + { + IsForceUpdate = options.IsForceUpdate, + Title = options.Title, + Message = options.Message, + AllowInstallationIfDownloaded = options.AllowInstallationIfDownloaded + }; + + m_instance.PromptUpdate(nativeOptions, new NativeOnPromptUpdateComplete() { + + onDownloadProgressUpdateCallback = (progress) => { + callback(progress, null); + }, + onFailureCallback = (errorInfo) => { + callback(0f, new Error(null, errorInfo.GetCode(), errorInfo.GetDescription())); + } + }); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/AppUpdaterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/AppUpdaterInterface.cs.meta new file mode 100644 index 00000000..7c163ffb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/AppUpdaterInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 237195d46599241f098ba90bfcb5b943 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeAppUpdater.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeAppUpdater.cs new file mode 100644 index 00000000..671d9ced --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeAppUpdater.cs @@ -0,0 +1,73 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Android +{ + public class NativeAppUpdater : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + + #region Constructor + + public NativeAppUpdater(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAppUpdater][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void PromptUpdate(NativePromptUpdateOptions options, NativeOnPromptUpdateComplete listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAppUpdater][Method : PromptUpdate]"); +#endif + Call(Native.Method.kPromptUpdate, new object[] { options.NativeObject, listener } ); + } + public void RequestUpdateInfo(NativeOnRequestUpdateInfoComplete listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAppUpdater][Method : RequestUpdateInfo]"); +#endif + Call(Native.Method.kRequestUpdateInfo, new object[] { listener } ); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.appupdater.AppUpdater"; + + internal class Method + { + internal const string kPromptUpdate = "promptUpdate"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kRequestUpdateInfo = "requestUpdateInfo"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeAppUpdater.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeAppUpdater.cs.meta new file mode 100644 index 00000000..6f672141 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeAppUpdater.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c89a3168ffd4348f88ba8babdcc8be19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnPromptUpdateComplete.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnPromptUpdateComplete.cs new file mode 100644 index 00000000..1ecf527e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnPromptUpdateComplete.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Android +{ + public class NativeOnPromptUpdateComplete : AndroidJavaProxy + { + #region Delegates + + public delegate void OnDownloadProgressUpdateDelegate(float progress); + public delegate void OnFailureDelegate(NativeErrorInfo errorInfo); + + #endregion + + #region Public callbacks + + public OnDownloadProgressUpdateDelegate onDownloadProgressUpdateCallback; + public OnFailureDelegate onFailureCallback; + + #endregion + + + #region Constructors + + public NativeOnPromptUpdateComplete() : base("com.voxelbusters.essentialkit.appupdater.IOnPromptUpdateComplete") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onDownloadProgressUpdate(float progress) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onDownloadProgressUpdate" + " " + "[" + "progress" + " : " + progress +"]"); +#endif + if(onDownloadProgressUpdateCallback != null) + { + onDownloadProgressUpdateCallback(progress); + } + } + public void onFailure(AndroidJavaObject errorInfo) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "errorInfo" + " : " + errorInfo +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(errorInfo)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnPromptUpdateComplete.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnPromptUpdateComplete.cs.meta new file mode 100644 index 00000000..72f670e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnPromptUpdateComplete.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17d04ccc69ae94fb5a9eebd9321240a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnRequestUpdateInfoComplete.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnRequestUpdateInfoComplete.cs new file mode 100644 index 00000000..03d4b0ce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnRequestUpdateInfoComplete.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Android +{ + public class NativeOnRequestUpdateInfoComplete : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo errorInfo); + public delegate void OnSuccessDelegate(NativeUpdateInfo info); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeOnRequestUpdateInfoComplete() : base("com.voxelbusters.essentialkit.appupdater.IOnRequestUpdateInfoComplete") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject errorInfo) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "errorInfo" + " : " + errorInfo +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(errorInfo)); + } + } + public void onSuccess(AndroidJavaObject info) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "info" + " : " + info +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeUpdateInfo(info)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnRequestUpdateInfoComplete.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnRequestUpdateInfoComplete.cs.meta new file mode 100644 index 00000000..826d6f40 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeOnRequestUpdateInfoComplete.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa73fc7806f65433aab580883b40451b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativePromptUpdateOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativePromptUpdateOptions.cs new file mode 100644 index 00000000..981b53a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativePromptUpdateOptions.cs @@ -0,0 +1,117 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Android +{ + public class NativePromptUpdateOptions : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public bool IsForceUpdate + { + get + { + return Get("isForceUpdate"); + } + + set + { + Set("isForceUpdate", value); + } + } + + + public string Title + { + get + { + return Get("title"); + } + + set + { + Set("title", value); + } + } + + + public string Message + { + get + { + return Get("message"); + } + + set + { + Set("message", value); + } + } + + + public bool AllowInstallationIfDownloaded + { + get + { + return Get("allowInstallationIfDownloaded"); + } + + set + { + Set("allowInstallationIfDownloaded", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativePromptUpdateOptions(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativePromptUpdateOptions(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativePromptUpdateOptions() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativePromptUpdateOptions() + { + DebugLogger.Log("Disposing NativePromptUpdateOptions"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.appupdater.PromptUpdateOptions"; + + internal class Method + { + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativePromptUpdateOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativePromptUpdateOptions.cs.meta new file mode 100644 index 00000000..dbfece98 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativePromptUpdateOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: db0589a04f5414f36b07c8d86ae2e3d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateInfo.cs new file mode 100644 index 00000000..4a59c6eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateInfo.cs @@ -0,0 +1,98 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Android +{ + public class NativeUpdateInfo : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public NativeUpdateStatus Status + { + get + { + return NativeUpdateStatusHelper.ReadFromValue(Get("status")); + } + + set + { + Set("status", NativeUpdateStatusHelper.CreateWithValue(value)); + } + } + + + public int BuildTag + { + get + { + return Get("buildTag"); + } + + set + { + Set("buildTag", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeUpdateInfo(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeUpdateInfo(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeUpdateInfo() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeUpdateInfo() + { + DebugLogger.Log("Disposing NativeUpdateInfo"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public override string ToString() + { + return Call(Native.Method.kToString); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.appupdater.UpdateInfo"; + + internal class Method + { + internal const string kToString = "toString"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateInfo.cs.meta new file mode 100644 index 00000000..5cbc11e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 718e9d460cc264e56baa4aadab718ed6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateStatus.cs new file mode 100644 index 00000000..b2dc5d1a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateStatus.cs @@ -0,0 +1,36 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Android +{ + public enum NativeUpdateStatus + { + Unknown = 0, + UpdateAvailable = 1, + UpdateNotAvailable = 2, + UpdateInProgress = 3, + UpdateDownloaded = 4 + } + public class NativeUpdateStatusHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.appupdater.UpdateStatus"; + + public static AndroidJavaObject CreateWithValue(NativeUpdateStatus value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeUpdateStatusHelper : NativeUpdateStatusHelper][Method(CreateWithValue) : NativeUpdateStatus]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeUpdateStatus ReadFromValue(AndroidJavaObject value) + { + return (NativeUpdateStatus)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateStatus.cs.meta new file mode 100644 index 00000000..0aadd438 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/AppUpdater/NativeUpdateStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c3d8ab7980654783b5b111e34caafa5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices.meta new file mode 100644 index 00000000..a05e4b14 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8586fe2187f9c48029b41586aae051da +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingProduct.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingProduct.cs new file mode 100644 index 00000000..1ba12fe9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingProduct.cs @@ -0,0 +1,97 @@ +#if UNITY_ANDROID +using System.Collections.Generic; +using System.Linq; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + internal sealed class BillingProduct : BillingProductBase + { +#region Fields + + private NativeBillingProduct m_instance; + +#endregion + +#region Constructors + + public BillingProduct(string id, BillingProductType type, NativeBillingProduct nativeBillingProduct, + IEnumerable payouts) + : base(id: id, platformId: nativeBillingProduct.GetIdentifier(), type, payouts: payouts) + { + m_instance = nativeBillingProduct; + } + + ~BillingProduct() + { + Dispose(false); + } + +#endregion + +#region Base methods + + protected override string GetLocalizedTitleInternal() + { + return m_instance.GetLocalizedTitle(); + } + + protected override string GetLocalizedDescriptionInternal() + { + return m_instance.GetLocalizedDescription(); + } + + protected override BillingPrice GetPriceInternal() + { + NativeBillingPrice nativePrice = m_instance.GetPrice(); + return new BillingPrice(nativePrice.GetPrice(), nativePrice.GetCurrencyCode(), nativePrice.GetCurrencySymbol(), nativePrice.GetLocalizedDisplay()); + } + + protected override BillingProductSubscriptionInfo GetSubscriptionInfoInternal() + { + NativeBillingProductSubscriptionInfo nativeInfo = m_instance.GetSubscriptionInfo(); + + if(nativeInfo.IsNull()) + return null; + + string groupId = nativeInfo.GetGroupId(); + string localizedGroupTitle = nativeInfo.GetLocalizedGroupTitle(); + int level = nativeInfo.GetLevel(); + + NativeBillingPeriod nativePeriod = nativeInfo.GetPeriod(); + BillingPeriod period = new BillingPeriod(nativePeriod.GetDuration(), (BillingPeriodUnit)nativePeriod.GetUnit()); + + return new BillingProductSubscriptionInfo(groupId, localizedGroupTitle, level, period); + } + + protected override IEnumerable GetOffersInternal() + { + var nativeOffers = m_instance.GetOffers().Get(); + List offers = new List(); + + foreach (var nativeOffer in nativeOffers) + { + var id = nativeOffer.GetId(); + var nativePricingPhases = nativeOffer.GetPricingPhases().Get(); + List pricingPhases = new List(); + foreach (var nativePricingPhase in nativePricingPhases) + { + var paymentMode = (BillingProductOfferPaymentMode)nativePricingPhase.GetPaymentMode(); + var nativePrice = nativePricingPhase.GetPrice(); + var price = new BillingPrice(nativePrice.GetPrice(), nativePrice.GetCurrencyCode(), nativePrice.GetCurrencySymbol(), nativePrice.GetLocalizedDisplay()); + var nativePeriod = nativePricingPhase.GetPeriod(); + var period = new BillingPeriod(nativePeriod.GetDuration(), (BillingPeriodUnit)nativePeriod.GetUnit()); + var repeatCount = nativePricingPhase.GetRepeatCount(); + pricingPhases.Add(new BillingProductOfferPricingPhase(paymentMode, price, period, repeatCount)); + } + + var category = (BillingProductOfferCategory)nativeOffer.GetCategory(); + offers.Add(new BillingProductOffer(id, category, pricingPhases)); + } + + return offers.AsEnumerable(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingProduct.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingProduct.cs.meta new file mode 100644 index 00000000..e08e9b0e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingProduct.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e34a489993d9145a89af0764c4eb0c1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingServicesInterface.cs new file mode 100644 index 00000000..cc5eef50 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingServicesInterface.cs @@ -0,0 +1,171 @@ +#if UNITY_ANDROID +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public sealed class BillingServicesInterface : NativeBillingServicesInterfaceBase + { + #region Static fields + + private static NativeGoogleBillingServices m_instance; + + #endregion + + #region Constructors + + public BillingServicesInterface() + : base(isAvailable: true) + { + try + { + Debug.Log("Creating Billing Services Interface : Android"); + m_instance = new NativeGoogleBillingServices(NativeUnityPluginUtility.GetContext()); + BillingServicesUnitySettings settings = BillingServices.UnitySettings; + + m_instance.Initialise(settings.AndroidProperties.PublicKey, new NativeBillingTransactionStateListener() + { + onStartedCallback = (nativeTransaction) => + { + BillingTransaction transaction = Converter.From(nativeTransaction); + SendPaymentStateChangeEvent(new BillingTransaction[] { transaction }); + }, + onUpdatedCallback = (nativeTransaction) => + { + BillingTransaction transaction = Converter.From(nativeTransaction); + SendPaymentStateChangeEvent(new BillingTransaction[] { transaction }); + }, + onFailedCallback = (nativeTransaction, errorInfo) => + { + BillingTransaction transaction = Converter.From(nativeTransaction, errorInfo.Convert(BillingServicesError.kDomain)); + SendPaymentStateChangeEvent(new BillingTransaction[] { transaction }); + } + }); + + SetProducts(settings.Products); + } + catch (Exception e) + { + Debug.LogError("Exception : " + e.Message + " \n " + e.StackTrace.ToString()); + } + } + + #endregion + + #region Base class methods + + public override bool CanMakePayments() + { + return m_instance.CanMakePayments(); + } + + public override bool IsProductPurchased(IBillingProduct product) + { + return m_instance.IsProductPurchased(product.PlatformId); + } + + public override void RetrieveProducts(BillingProductDefinition[] productDefinitions) + { + SetProducts(productDefinitions); + m_instance.FetchProductDetails(new NativeFetchBillingProductsListener() + { + onSuccessCallback = (NativeList nativeList, NativeArrayBuffer invalidIds) => + { + //Filter billing products which are listed in the settings only + List nativeBillingProducts = nativeList.Get(); + List filteredBillingProducts = new List(); + + foreach (NativeBillingProduct each in nativeBillingProducts) + { + var settings = BillingServices.FindProductDefinitionWithPlatformId(each.GetIdentifier()); + if (settings != null) + { + filteredBillingProducts.Add(new BillingProduct(settings.Id, settings.ProductType, each, settings.Payouts)); + } + } + + BillingProduct[] products = filteredBillingProducts.ToArray(); + SendRetrieveProductsCompleteEvent(products, invalidIds.GetArray(), null); + }, + onFailureCallback = (errorInfo) => + { + SendRetrieveProductsCompleteEvent(null, null, errorInfo.Convert(BillingServicesError.kDomain)); + } + }); + } + + public override void BuyProduct(string productId, string productPlatformId, BuyProductOptions options) + { + m_instance.BuyProduct(productPlatformId, options.Quantity, options.Tag?.ToString(), offerId: options.OfferRedeemDetails?.AndroidPlatformProperties?.OfferId); + } + + public override IBillingTransaction[] GetTransactions() + { + NativeList nativeList = m_instance.GetIncompleteBillingTransactions(); + IBillingTransaction[] transactions = Converter.From(nativeList.Get()); + + return transactions; + } + + public override void FinishTransactions(IBillingTransaction[] transactions) + { + foreach(IBillingTransaction each in transactions) + { + //Should only finish transactions for purchased or restored + if(each.TransactionState != BillingTransactionState.Purchased) + { + continue; + } + + m_instance.FinishBillingTransaction(each.Product.PlatformId, each.ReceiptVerificationState == BillingReceiptVerificationState.Success); + } + } + + public override void RestorePurchases(bool forceRefresh, string tag) + { + m_instance.RestorePurchases(forceRefresh, tag?.ToString(), new NativeRestorePurchasesListener() + { + onSuccessCallback = (nativeTransactions) => + { + DebugLogger.Log("RestorePurchases : onSuccessCallback - " + nativeTransactions); + IBillingTransaction[] transactions = Converter.From(nativeTransactions.Get()); + SendRestorePurchasesCompleteEvent(transactions, null); + }, + onFailureCallback = (errorInfo) => + { + SendRestorePurchasesCompleteEvent(null, errorInfo.Convert(BillingServicesError.kDomain)); + } + }); + } + + public override void TryClearingUnfinishedTransactions() + { + m_instance.TryClearingIncompleteTransactions(); + } + + #endregion + + #region Helpers + + private void SetProducts(BillingProductDefinition[] productDefinitions) + { + BillingProductDefinition[] consumableProducts = productDefinitions.Where(item => item.ProductType == BillingProductType.Consumable).ToArray(); + var consumableProductIds = Array.ConvertAll(consumableProducts, (item) => item.GetPlatformIdForActivePlatform()); + + BillingProductDefinition[] nonConsumableProducts = productDefinitions.Where(item => item.ProductType == BillingProductType.NonConsumable).ToArray(); + var nonConsumableProductIds = Array.ConvertAll(nonConsumableProducts, (item) => item.GetPlatformIdForActivePlatform()); + + BillingProductDefinition[] subscriptionProducts = productDefinitions.Where(item => item.ProductType == BillingProductType.Subscription).ToArray(); + var subscriptionProductIds = Array.ConvertAll(subscriptionProducts, (item) => item.GetPlatformIdForActivePlatform()); + + m_instance.SetProducts(consumableProductIds, nonConsumableProductIds, subscriptionProductIds); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingServicesInterface.cs.meta new file mode 100644 index 00000000..80bde649 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 911c65b1d65dc4ab9828f4c0853a0598 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingTransaction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingTransaction.cs new file mode 100644 index 00000000..5ebc40ae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingTransaction.cs @@ -0,0 +1,117 @@ +#if UNITY_ANDROID +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + internal sealed class BillingTransaction : BillingTransactionBase + { + #region Fields + + private NativeBillingTransaction m_instance; + private Error m_error; + + #endregion + + #region Constructors + + public BillingTransaction(IBillingProduct product, NativeBillingTransaction nativeBillingTransaction) + : this(product, nativeBillingTransaction, null) + { + + } + + public BillingTransaction(IBillingProduct product, NativeBillingTransaction nativeBillingTransaction, Error error) + : base(transactionId: nativeBillingTransaction.GetId(), product: product) + { + m_instance = nativeBillingTransaction; + m_error = error; + } + + ~BillingTransaction() + { + Dispose(false); + } + + #endregion + + #region Base methods + + protected override DateTime GetTransactionDateUTCInternal() + { + DateTime? dateTime = m_instance.GetDate().GetDateTimeOptional(DateTime.MinValue); + return dateTime.Value; + } + + protected override BillingTransactionState GetTransactionStateInternal() + { + return Converter.From(m_instance.GetState()); + } + + protected override BillingReceiptVerificationState GetReceiptVerificationStateInternal() + { + return Converter.From(m_instance.GetVerificationState()); + } + + protected override BillingEnvironment GetEnvironmentInternal() + { + return (BillingEnvironment)m_instance.GetEnvironment(); + } + + protected override string GetApplicationBundleIdentifierInternal() + { + return Application.identifier; + } + + protected override int GetPurchasedQuantityInternal() + { + return m_instance.GetPurchasedQuantity(); + } + + protected override BillingProductRevocationInfo GetRevocationInfoInternal() + { + NativeBillingProductRevocationInfo nativeInfo = m_instance.GetRevocationInfo(); + return nativeInfo.IsNull() ? null : new BillingProductRevocationInfo(dateUTC: nativeInfo.GetDate().GetDateTime(), reason: (BillingProductRevocationReason)nativeInfo.GetReason()); + } + + protected override BillingProductSubscriptionStatus GetSubscriptionStatusInternal() + { + return Converter.From(m_instance.GetSubscriptionStatus()); + } + + protected override string GetRawDataInternal() + { + return m_instance.GetRawData(); + } + + protected override string GetReceiptInternal() + { + return m_instance.GetReceipt(); + } + + protected override Error GetErrorInternal() + { + return m_error; + } + + protected override void SetReceiptVerificationStateInternal(BillingReceiptVerificationState value) + { + m_instance.SetVerificationState(Converter.From(value)); + } + + protected override int GetRequestedQuantityInternal() + { + return m_instance.GetRequestedQuantity(); + } + + protected override string GetTagInternal() + { + return m_instance.GetPurchaseTag(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingTransaction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingTransaction.cs.meta new file mode 100644 index 00000000..695c9088 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/BillingTransaction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 869345f3d273e4f549da376459d07690 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/Converter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/Converter.cs new file mode 100644 index 00000000..6ce56562 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/Converter.cs @@ -0,0 +1,103 @@ +#if UNITY_ANDROID +using System; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + internal static class Converter + { + public static BillingTransactionState From(NativeBillingTransactionState nativeBillingTransactionState) + { + return (BillingTransactionState) nativeBillingTransactionState; + } + + public static BillingReceiptVerificationState From(NativeBillingTransactionVerificationState nativeBillingTransactionVerificationState) + { + return (BillingReceiptVerificationState) nativeBillingTransactionVerificationState; + } + + public static NativeBillingTransactionVerificationState From(BillingReceiptVerificationState value) + { + return (NativeBillingTransactionVerificationState)value; + } + + internal static BillingTransaction From(NativeBillingTransaction nativeTransaction, Error error = null) + { + var productPlatformId = nativeTransaction.GetProductIdentifier(); + var productDefinition = BillingServices.FindProductDefinitionWithPlatformId(productPlatformId, returnObjectOnFail: true); + var product = BillingServices.GetProductWithId(productDefinition.Id, includeInactive: true); + + if(error == null) + { + return new BillingTransaction(product, nativeTransaction); + } + else + { + return new BillingTransaction(product, nativeTransaction, error); + } + } + + internal static IBillingTransaction[] From(List nativeTransactions) + { + List transactions = new List(); + foreach (var nativeTransaction in nativeTransactions) + { + var transaction = From(nativeTransaction); + transactions.Add(transaction); + } + + return transactions.ToArray(); + } + + internal static BillingProductSubscriptionStatus From(NativeBillingProductSubscriptionStatus nativeStatus) + { + if (nativeStatus == null || nativeStatus.IsNull()) + { + return null; + } + + string groupId = nativeStatus.GetGroupId(); + BillingProductSubscriptionRenewalInfo renewalInfo = From(nativeStatus.GetRenewalInfo()); + DateTime? expirationDate = nativeStatus.GetExpirationDate().GetDateTimeOptional(); + bool isUpgraded = nativeStatus.GetUpgraded(); + string appliedOfferId = nativeStatus.GetAppliedOfferId(); + BillingProductOfferCategory? offerCategory = appliedOfferId == null ? null : (BillingProductOfferCategory)nativeStatus.GetAppliedOfferCategory(); + + return new BillingProductSubscriptionStatus(groupId, renewalInfo, expirationDate, isUpgraded, appliedOfferId, offerCategory); + + } + + private static BillingProductSubscriptionRenewalInfo From(NativeBillingProductSubscriptionRenewalInfo nativeRenewalInfo) + { + if (nativeRenewalInfo == null || nativeRenewalInfo.IsNull()) + { + return null; + } + + BillingProductSubscriptionRenewalState state = (BillingProductSubscriptionRenewalState)nativeRenewalInfo.GetState(); + string applicableOfferIdentifier = nativeRenewalInfo.GetApplicableOfferIdentifier(); + BillingProductOfferCategory? applicableOfferCategory = applicableOfferIdentifier == null ? null : (BillingProductOfferCategory)nativeRenewalInfo.GetApplicableOfferCategory(); + DateTime? lastRenewedDate = nativeRenewalInfo.GetLastRenewedDate().GetDateTimeOptional(); + string lastRenewalId = nativeRenewalInfo.GetLastRenewalId(); + bool isAutoRenewEnabled = nativeRenewalInfo.GetAutoRenewEnabled(); + BillingProductSubscriptionExpirationReason? expirationReason = nativeRenewalInfo.GetExpirationReason() == NativeBillingProductSubscriptionExpirationReason.None ? null : (BillingProductSubscriptionExpirationReason)nativeRenewalInfo.GetExpirationReason(); + DateTime? renewalDate = nativeRenewalInfo.GetRenewalDate().IsNull() ? null : nativeRenewalInfo.GetRenewalDate().GetDateTime(); + DateTime? gracePeriodExpirationDate = nativeRenewalInfo.GetGracePeriodExpirationDate().GetDateTimeOptional(); + BillingProductSubscriptionPriceIncreaseStatus priceIncreaseStatus = (BillingProductSubscriptionPriceIncreaseStatus)nativeRenewalInfo.GetPriceIncreaseStatus(); + + return new BillingProductSubscriptionRenewalInfo( + state, + applicableOfferIdentifier, + applicableOfferCategory, + lastRenewedDate, + lastRenewalId, + isAutoRenewEnabled, + expirationReason, + renewalDate, + gracePeriodExpirationDate, + priceIncreaseStatus); + } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/Converter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/Converter.cs.meta new file mode 100644 index 00000000..da9c4039 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07f9e956823044067821f9e85fa7c11a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingEnvironment.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingEnvironment.cs new file mode 100644 index 00000000..b698753c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingEnvironment.cs @@ -0,0 +1,35 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingEnvironment + { + Unknown = 0, + Production = 1, + Sandbox = 2, + Local = 3 + } + public class NativeBillingEnvironmentHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingEnvironment"; + + public static AndroidJavaObject CreateWithValue(NativeBillingEnvironment value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingEnvironmentHelper : NativeBillingEnvironmentHelper][Method(CreateWithValue) : NativeBillingEnvironment]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingEnvironment ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingEnvironment)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingEnvironment.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingEnvironment.cs.meta new file mode 100644 index 00000000..a44a750e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingEnvironment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8abd258a8ce142fca454de003a37d1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriod.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriod.cs new file mode 100644 index 00000000..4ad60ed2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriod.cs @@ -0,0 +1,75 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingPeriod : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingPeriod(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingPeriod(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingPeriod(string isoPeriod) : base(Native.kClassName ,isoPeriod) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingPeriod() + { + DebugLogger.Log("Disposing NativeBillingPeriod"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public float GetDuration() + { + return Call(Native.Method.kGetDuration); + } + public NativeBillingPeriodUnit GetUnit() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetUnit); + NativeBillingPeriodUnit data = NativeBillingPeriodUnitHelper.ReadFromValue(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingPeriod"; + + internal class Method + { + internal const string kGetDuration = "getDuration"; + internal const string kGetUnit = "getUnit"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriod.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriod.cs.meta new file mode 100644 index 00000000..555ae866 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriod.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d623718897814e0d96c2acd87eea3af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriodUnit.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriodUnit.cs new file mode 100644 index 00000000..830bd85c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriodUnit.cs @@ -0,0 +1,35 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingPeriodUnit + { + Day = 0, + Week = 1, + Month = 2, + Year = 3 + } + public class NativeBillingPeriodUnitHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingPeriodUnit"; + + public static AndroidJavaObject CreateWithValue(NativeBillingPeriodUnit value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingPeriodUnitHelper : NativeBillingPeriodUnitHelper][Method(CreateWithValue) : NativeBillingPeriodUnit]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingPeriodUnit ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingPeriodUnit)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriodUnit.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriodUnit.cs.meta new file mode 100644 index 00000000..622a065c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPeriodUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f51d107594f849cd9f56756ae304d91 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPrice.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPrice.cs new file mode 100644 index 00000000..77d651a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPrice.cs @@ -0,0 +1,83 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingPrice : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingPrice(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingPrice(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingPrice(double price, string currencyCode, string currencySymbol, string localizedDisplay) : base(Native.kClassName ,price, currencyCode, currencySymbol, localizedDisplay) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingPrice() + { + DebugLogger.Log("Disposing NativeBillingPrice"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public string GetCurrencyCode() + { + return Call(Native.Method.kGetCurrencyCode); + } + public string GetCurrencySymbol() + { + return Call(Native.Method.kGetCurrencySymbol); + } + public string GetLocalizedDisplay() + { + return Call(Native.Method.kGetLocalizedDisplay); + } + public double GetPrice() + { + return Call(Native.Method.kGetPrice); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingPrice"; + + internal class Method + { + internal const string kGetPrice = "getPrice"; + internal const string kGetLocalizedDisplay = "getLocalizedDisplay"; + internal const string kGetCurrencyCode = "getCurrencyCode"; + internal const string kGetCurrencySymbol = "getCurrencySymbol"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPrice.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPrice.cs.meta new file mode 100644 index 00000000..05ad9741 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingPrice.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 31081b3bde7a243b3af7cc983a78c8f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProduct.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProduct.cs new file mode 100644 index 00000000..5b5ef984 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProduct.cs @@ -0,0 +1,101 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingProduct : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingProduct(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingProduct(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingProduct() + { + DebugLogger.Log("Disposing NativeBillingProduct"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public string GetIdentifier() + { + return Call(Native.Method.kGetIdentifier); + } + public string GetLocalizedDescription() + { + return Call(Native.Method.kGetLocalizedDescription); + } + public string GetLocalizedTitle() + { + return Call(Native.Method.kGetLocalizedTitle); + } + public NativeList GetOffers() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetOffers); + NativeList data = new NativeList(nativeObj); + return data; + } + public NativeBillingPrice GetPrice() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPrice); + NativeBillingPrice data = new NativeBillingPrice(nativeObj); + return data; + } + public NativeBillingProductSubscriptionInfo GetSubscriptionInfo() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetSubscriptionInfo); + NativeBillingProductSubscriptionInfo data = new NativeBillingProductSubscriptionInfo(nativeObj); + return data; + } + public bool IsAvailable() + { + return Call(Native.Method.kIsAvailable); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProduct"; + + internal class Method + { + internal const string kGetPrice = "getPrice"; + internal const string kGetIdentifier = "getIdentifier"; + internal const string kGetSubscriptionInfo = "getSubscriptionInfo"; + internal const string kIsAvailable = "isAvailable"; + internal const string kGetOffers = "getOffers"; + internal const string kGetLocalizedDescription = "getLocalizedDescription"; + internal const string kGetLocalizedTitle = "getLocalizedTitle"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProduct.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProduct.cs.meta new file mode 100644 index 00000000..58f899de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProduct.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4c77db6008624531951510411c8d7f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOffer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOffer.cs new file mode 100644 index 00000000..28b84128 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOffer.cs @@ -0,0 +1,82 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingProductOffer : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingProductOffer(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingProductOffer(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingProductOffer(string id, NativeBillingProductOfferCategory category, NativeList pricingPhases) : base(Native.kClassName ,id, category, pricingPhases) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingProductOffer() + { + DebugLogger.Log("Disposing NativeBillingProductOffer"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeBillingProductOfferCategory GetCategory() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetCategory); + NativeBillingProductOfferCategory data = NativeBillingProductOfferCategoryHelper.ReadFromValue(nativeObj); + return data; + } + public string GetId() + { + return Call(Native.Method.kGetId); + } + public NativeList GetPricingPhases() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPricingPhases); + NativeList data = new NativeList(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductOffer"; + + internal class Method + { + internal const string kGetCategory = "getCategory"; + internal const string kGetPricingPhases = "getPricingPhases"; + internal const string kGetId = "getId"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOffer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOffer.cs.meta new file mode 100644 index 00000000..0039507b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOffer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a47a942aeed8745e0b2d9f03d4868c04 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferCategory.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferCategory.cs new file mode 100644 index 00000000..340c5ba9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferCategory.cs @@ -0,0 +1,35 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingProductOfferCategory + { + Unknown = 0, + Introductory = 1, + Promotional = 2, + Code = 3 + } + public class NativeBillingProductOfferCategoryHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductOfferCategory"; + + public static AndroidJavaObject CreateWithValue(NativeBillingProductOfferCategory value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingProductOfferCategoryHelper : NativeBillingProductOfferCategoryHelper][Method(CreateWithValue) : NativeBillingProductOfferCategory]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingProductOfferCategory ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingProductOfferCategory)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferCategory.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferCategory.cs.meta new file mode 100644 index 00000000..090cfdff --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferCategory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 169dc6940d65d42ecb8cba65254601ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPaymentMode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPaymentMode.cs new file mode 100644 index 00000000..fc2ee0dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPaymentMode.cs @@ -0,0 +1,35 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingProductOfferPaymentMode + { + Unknown = 0, + FreeTrial = 1, + PayAsYouGo = 2, + PayUpFront = 3 + } + public class NativeBillingProductOfferPaymentModeHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductOfferPaymentMode"; + + public static AndroidJavaObject CreateWithValue(NativeBillingProductOfferPaymentMode value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingProductOfferPaymentModeHelper : NativeBillingProductOfferPaymentModeHelper][Method(CreateWithValue) : NativeBillingProductOfferPaymentMode]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingProductOfferPaymentMode ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingProductOfferPaymentMode)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPaymentMode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPaymentMode.cs.meta new file mode 100644 index 00000000..a7421b29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPaymentMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: deb9682e3571443a29ea182993d08856 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPricingPhase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPricingPhase.cs new file mode 100644 index 00000000..04c4e634 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPricingPhase.cs @@ -0,0 +1,89 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingProductOfferPricingPhase : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingProductOfferPricingPhase(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingProductOfferPricingPhase(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingProductOfferPricingPhase(NativeBillingPrice price, NativeBillingProductOfferPaymentMode paymentMode, NativeBillingPeriod period, int repeatCount) : base(Native.kClassName ,price, paymentMode, period, repeatCount) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingProductOfferPricingPhase() + { + DebugLogger.Log("Disposing NativeBillingProductOfferPricingPhase"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeBillingProductOfferPaymentMode GetPaymentMode() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPaymentMode); + NativeBillingProductOfferPaymentMode data = NativeBillingProductOfferPaymentModeHelper.ReadFromValue(nativeObj); + return data; + } + public NativeBillingPeriod GetPeriod() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPeriod); + NativeBillingPeriod data = new NativeBillingPeriod(nativeObj); + return data; + } + public NativeBillingPrice GetPrice() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPrice); + NativeBillingPrice data = new NativeBillingPrice(nativeObj); + return data; + } + public int GetRepeatCount() + { + return Call(Native.Method.kGetRepeatCount); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductOfferPricingPhase"; + + internal class Method + { + internal const string kGetPrice = "getPrice"; + internal const string kGetPeriod = "getPeriod"; + internal const string kGetPaymentMode = "getPaymentMode"; + internal const string kGetRepeatCount = "getRepeatCount"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPricingPhase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPricingPhase.cs.meta new file mode 100644 index 00000000..35e87933 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductOfferPricingPhase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e4756cb631d1496d91f40076545cbea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationInfo.cs new file mode 100644 index 00000000..6426d43b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationInfo.cs @@ -0,0 +1,77 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingProductRevocationInfo : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingProductRevocationInfo(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingProductRevocationInfo(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingProductRevocationInfo(NativeDate date, NativeBillingProductRevocationReason reason) : base(Native.kClassName ,date, reason) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingProductRevocationInfo() + { + DebugLogger.Log("Disposing NativeBillingProductRevocationInfo"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeDate GetDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public NativeBillingProductRevocationReason GetReason() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetReason); + NativeBillingProductRevocationReason data = NativeBillingProductRevocationReasonHelper.ReadFromValue(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductRevocationInfo"; + + internal class Method + { + internal const string kGetDate = "getDate"; + internal const string kGetReason = "getReason"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationInfo.cs.meta new file mode 100644 index 00000000..a39cdf41 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4adf86ec933904c97a280ecb05b7ab86 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationReason.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationReason.cs new file mode 100644 index 00000000..df389bae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationReason.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingProductRevocationReason + { + None = 0, + Unknown = 1, + DeveloperIssue = 2 + } + public class NativeBillingProductRevocationReasonHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductRevocationReason"; + + public static AndroidJavaObject CreateWithValue(NativeBillingProductRevocationReason value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingProductRevocationReasonHelper : NativeBillingProductRevocationReasonHelper][Method(CreateWithValue) : NativeBillingProductRevocationReason]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingProductRevocationReason ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingProductRevocationReason)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationReason.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationReason.cs.meta new file mode 100644 index 00000000..4cdc19f1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductRevocationReason.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b85c02f857e3d4a82a6eb207d7a3f33d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionExpirationReason.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionExpirationReason.cs new file mode 100644 index 00000000..d8f40539 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionExpirationReason.cs @@ -0,0 +1,37 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingProductSubscriptionExpirationReason + { + None = 0, + Unknown = 1, + AutoRenewDisabled = 2, + BillingError = 3, + DidNotConsentToPriceIncrease = 4, + ProductUnavailable = 5 + } + public class NativeBillingProductSubscriptionExpirationReasonHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductSubscriptionExpirationReason"; + + public static AndroidJavaObject CreateWithValue(NativeBillingProductSubscriptionExpirationReason value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingProductSubscriptionExpirationReasonHelper : NativeBillingProductSubscriptionExpirationReasonHelper][Method(CreateWithValue) : NativeBillingProductSubscriptionExpirationReason]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingProductSubscriptionExpirationReason ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingProductSubscriptionExpirationReason)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionExpirationReason.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionExpirationReason.cs.meta new file mode 100644 index 00000000..dc579d2b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionExpirationReason.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f7eecba459b142fab717fdeb97d29e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionInfo.cs new file mode 100644 index 00000000..fe9564bb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionInfo.cs @@ -0,0 +1,85 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingProductSubscriptionInfo : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingProductSubscriptionInfo(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingProductSubscriptionInfo(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingProductSubscriptionInfo(string groupId, string localizedGroupTitle, int level, NativeBillingPeriod period) : base(Native.kClassName ,groupId, localizedGroupTitle, level, period) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingProductSubscriptionInfo() + { + DebugLogger.Log("Disposing NativeBillingProductSubscriptionInfo"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public string GetGroupId() + { + return Call(Native.Method.kGetGroupId); + } + public int GetLevel() + { + return Call(Native.Method.kGetLevel); + } + public string GetLocalizedGroupTitle() + { + return Call(Native.Method.kGetLocalizedGroupTitle); + } + public NativeBillingPeriod GetPeriod() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPeriod); + NativeBillingPeriod data = new NativeBillingPeriod(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductSubscriptionInfo"; + + internal class Method + { + internal const string kGetLevel = "getLevel"; + internal const string kGetLocalizedGroupTitle = "getLocalizedGroupTitle"; + internal const string kGetGroupId = "getGroupId"; + internal const string kGetPeriod = "getPeriod"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionInfo.cs.meta new file mode 100644 index 00000000..27df2e90 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14718f0b870134b39899f32eded7fca9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionPriceIncreaseStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionPriceIncreaseStatus.cs new file mode 100644 index 00000000..99cbaa3f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionPriceIncreaseStatus.cs @@ -0,0 +1,35 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingProductSubscriptionPriceIncreaseStatus + { + Unknown = 0, + NoIncreasePending = 1, + Agreed = 2, + Pending = 3 + } + public class NativeBillingProductSubscriptionPriceIncreaseStatusHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductSubscriptionPriceIncreaseStatus"; + + public static AndroidJavaObject CreateWithValue(NativeBillingProductSubscriptionPriceIncreaseStatus value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingProductSubscriptionPriceIncreaseStatusHelper : NativeBillingProductSubscriptionPriceIncreaseStatusHelper][Method(CreateWithValue) : NativeBillingProductSubscriptionPriceIncreaseStatus]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingProductSubscriptionPriceIncreaseStatus ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingProductSubscriptionPriceIncreaseStatus)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionPriceIncreaseStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionPriceIncreaseStatus.cs.meta new file mode 100644 index 00000000..4fbf389f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionPriceIncreaseStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3d881a520b70b42bb932857532a3fc1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalInfo.cs new file mode 100644 index 00000000..825efc33 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalInfo.cs @@ -0,0 +1,127 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingProductSubscriptionRenewalInfo : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingProductSubscriptionRenewalInfo(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingProductSubscriptionRenewalInfo(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingProductSubscriptionRenewalInfo(NativeBillingProductSubscriptionRenewalState state, string applicableOfferIdentifier, NativeBillingProductOfferCategory applicableOfferCategory, NativeDate lastRenewedDate, string lastRenewalId, bool isAutoRenewEnabled, NativeBillingProductSubscriptionExpirationReason expirationReason, NativeDate renewalDate, NativeDate gracePeriodExpirationDate, NativeBillingProductSubscriptionPriceIncreaseStatus priceIncreaseStatus) : base(Native.kClassName ,state, applicableOfferIdentifier, applicableOfferCategory, lastRenewedDate, lastRenewalId, isAutoRenewEnabled, expirationReason, renewalDate, gracePeriodExpirationDate, priceIncreaseStatus) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingProductSubscriptionRenewalInfo() + { + DebugLogger.Log("Disposing NativeBillingProductSubscriptionRenewalInfo"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeBillingProductOfferCategory GetApplicableOfferCategory() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetApplicableOfferCategory); + NativeBillingProductOfferCategory data = NativeBillingProductOfferCategoryHelper.ReadFromValue(nativeObj); + return data; + } + public string GetApplicableOfferIdentifier() + { + return Call(Native.Method.kGetApplicableOfferIdentifier); + } + public bool GetAutoRenewEnabled() + { + return Call(Native.Method.kGetAutoRenewEnabled); + } + public NativeBillingProductSubscriptionExpirationReason GetExpirationReason() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetExpirationReason); + NativeBillingProductSubscriptionExpirationReason data = NativeBillingProductSubscriptionExpirationReasonHelper.ReadFromValue(nativeObj); + return data; + } + public NativeDate GetGracePeriodExpirationDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetGracePeriodExpirationDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public string GetLastRenewalId() + { + return Call(Native.Method.kGetLastRenewalId); + } + public NativeDate GetLastRenewedDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetLastRenewedDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public NativeBillingProductSubscriptionPriceIncreaseStatus GetPriceIncreaseStatus() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPriceIncreaseStatus); + NativeBillingProductSubscriptionPriceIncreaseStatus data = NativeBillingProductSubscriptionPriceIncreaseStatusHelper.ReadFromValue(nativeObj); + return data; + } + public NativeDate GetRenewalDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetRenewalDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public NativeBillingProductSubscriptionRenewalState GetState() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetState); + NativeBillingProductSubscriptionRenewalState data = NativeBillingProductSubscriptionRenewalStateHelper.ReadFromValue(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductSubscriptionRenewalInfo"; + + internal class Method + { + internal const string kGetState = "getState"; + internal const string kGetPriceIncreaseStatus = "getPriceIncreaseStatus"; + internal const string kGetAutoRenewEnabled = "getAutoRenewEnabled"; + internal const string kGetExpirationReason = "getExpirationReason"; + internal const string kGetLastRenewedDate = "getLastRenewedDate"; + internal const string kGetRenewalDate = "getRenewalDate"; + internal const string kGetApplicableOfferCategory = "getApplicableOfferCategory"; + internal const string kGetLastRenewalId = "getLastRenewalId"; + internal const string kGetApplicableOfferIdentifier = "getApplicableOfferIdentifier"; + internal const string kGetGracePeriodExpirationDate = "getGracePeriodExpirationDate"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalInfo.cs.meta new file mode 100644 index 00000000..16753600 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 84bbdae6fc4244926b4315a9ce1432ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalState.cs new file mode 100644 index 00000000..ca8653fa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalState.cs @@ -0,0 +1,37 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingProductSubscriptionRenewalState + { + Unknown = 0, + Subscribed = 1, + Expired = 2, + InBillingRetryPeriod = 3, + InGracePeriod = 4, + Revoked = 5 + } + public class NativeBillingProductSubscriptionRenewalStateHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductSubscriptionRenewalState"; + + public static AndroidJavaObject CreateWithValue(NativeBillingProductSubscriptionRenewalState value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingProductSubscriptionRenewalStateHelper : NativeBillingProductSubscriptionRenewalStateHelper][Method(CreateWithValue) : NativeBillingProductSubscriptionRenewalState]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingProductSubscriptionRenewalState ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingProductSubscriptionRenewalState)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalState.cs.meta new file mode 100644 index 00000000..4bc756ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionRenewalState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc923f38349fc43de948cb43e0828172 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionStatus.cs new file mode 100644 index 00000000..930d999d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionStatus.cs @@ -0,0 +1,99 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingProductSubscriptionStatus : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingProductSubscriptionStatus(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingProductSubscriptionStatus(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeBillingProductSubscriptionStatus(string groupId, NativeBillingProductSubscriptionRenewalInfo renewalInfo, NativeDate expirationDate, bool isUpgraded, string appliedOfferId, NativeBillingProductOfferCategory offerCategory) : base(Native.kClassName ,groupId, renewalInfo, expirationDate, isUpgraded, appliedOfferId, offerCategory) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingProductSubscriptionStatus() + { + DebugLogger.Log("Disposing NativeBillingProductSubscriptionStatus"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeBillingProductOfferCategory GetAppliedOfferCategory() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetAppliedOfferCategory); + NativeBillingProductOfferCategory data = NativeBillingProductOfferCategoryHelper.ReadFromValue(nativeObj); + return data; + } + public string GetAppliedOfferId() + { + return Call(Native.Method.kGetAppliedOfferId); + } + public NativeDate GetExpirationDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetExpirationDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public string GetGroupId() + { + return Call(Native.Method.kGetGroupId); + } + public NativeBillingProductSubscriptionRenewalInfo GetRenewalInfo() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetRenewalInfo); + NativeBillingProductSubscriptionRenewalInfo data = new NativeBillingProductSubscriptionRenewalInfo(nativeObj); + return data; + } + public bool GetUpgraded() + { + return Call(Native.Method.kGetUpgraded); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductSubscriptionStatus"; + + internal class Method + { + internal const string kGetUpgraded = "getUpgraded"; + internal const string kGetGroupId = "getGroupId"; + internal const string kGetAppliedOfferCategory = "getAppliedOfferCategory"; + internal const string kGetRenewalInfo = "getRenewalInfo"; + internal const string kGetAppliedOfferId = "getAppliedOfferId"; + internal const string kGetExpirationDate = "getExpirationDate"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionStatus.cs.meta new file mode 100644 index 00000000..643aa492 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductSubscriptionStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d327914c9b30340729386f35073d7fa4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductType.cs new file mode 100644 index 00000000..7f2a957d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductType.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingProductType + { + Consumable = 0, + NonConsumable = 1, + Subscription = 2 + } + public class NativeBillingProductTypeHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingProductType"; + + public static AndroidJavaObject CreateWithValue(NativeBillingProductType value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingProductTypeHelper : NativeBillingProductTypeHelper][Method(CreateWithValue) : NativeBillingProductType]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingProductType ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingProductType)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductType.cs.meta new file mode 100644 index 00000000..8bc2b027 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingProductType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f95f552d9179444bb894bb11a6cb455a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransaction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransaction.cs new file mode 100644 index 00000000..d7674ffe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransaction.cs @@ -0,0 +1,164 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingTransaction : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeBillingTransaction(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeBillingTransaction(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeBillingTransaction() + { + DebugLogger.Log("Disposing NativeBillingTransaction"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeDate GetDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public NativeBillingEnvironment GetEnvironment() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetEnvironment); + NativeBillingEnvironment data = NativeBillingEnvironmentHelper.ReadFromValue(nativeObj); + return data; + } + public int GetErrorCode() + { + return Call(Native.Method.kGetErrorCode); + } + public string GetErrorDescription() + { + return Call(Native.Method.kGetErrorDescription); + } + public string GetId() + { + return Call(Native.Method.kGetId); + } + public string GetProductIdentifier() + { + return Call(Native.Method.kGetProductIdentifier); + } + public NativeBillingProductType GetProductType() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetProductType); + NativeBillingProductType data = NativeBillingProductTypeHelper.ReadFromValue(nativeObj); + return data; + } + public string GetPurchaseTag() + { + return Call(Native.Method.kGetPurchaseTag); + } + public int GetPurchasedQuantity() + { + return Call(Native.Method.kGetPurchasedQuantity); + } + public string GetRawData() + { + return Call(Native.Method.kGetRawData); + } + public string GetReceipt() + { + return Call(Native.Method.kGetReceipt); + } + public int GetRequestedQuantity() + { + return Call(Native.Method.kGetRequestedQuantity); + } + public NativeBillingProductRevocationInfo GetRevocationInfo() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetRevocationInfo); + NativeBillingProductRevocationInfo data = new NativeBillingProductRevocationInfo(nativeObj); + return data; + } + public NativeBillingTransactionState GetState() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetState); + NativeBillingTransactionState data = NativeBillingTransactionStateHelper.ReadFromValue(nativeObj); + return data; + } + public NativeBillingProductSubscriptionStatus GetSubscriptionStatus() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetSubscriptionStatus); + NativeBillingProductSubscriptionStatus data = new NativeBillingProductSubscriptionStatus(nativeObj); + return data; + } + public NativeBillingTransactionVerificationState GetVerificationState() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetVerificationState); + NativeBillingTransactionVerificationState data = NativeBillingTransactionVerificationStateHelper.ReadFromValue(nativeObj); + return data; + } + public void SetVerificationState(NativeBillingTransactionVerificationState verificationState) + { + Call(Native.Method.kSetVerificationState, NativeBillingTransactionVerificationStateHelper.CreateWithValue(verificationState)); + } + public override string ToString() + { + return Call(Native.Method.kToString); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingTransaction"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kGetState = "getState"; + internal const string kGetErrorCode = "getErrorCode"; + internal const string kSetVerificationState = "setVerificationState"; + internal const string kGetPurchasedQuantity = "getPurchasedQuantity"; + internal const string kGetRequestedQuantity = "getRequestedQuantity"; + internal const string kGetProductIdentifier = "getProductIdentifier"; + internal const string kGetVerificationState = "getVerificationState"; + internal const string kGetErrorDescription = "getErrorDescription"; + internal const string kGetDate = "getDate"; + internal const string kGetSubscriptionStatus = "getSubscriptionStatus"; + internal const string kGetReceipt = "getReceipt"; + internal const string kGetRawData = "getRawData"; + internal const string kGetProductType = "getProductType"; + internal const string kGetEnvironment = "getEnvironment"; + internal const string kGetPurchaseTag = "getPurchaseTag"; + internal const string kGetRevocationInfo = "getRevocationInfo"; + internal const string kGetId = "getId"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransaction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransaction.cs.meta new file mode 100644 index 00000000..d14fde2c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransaction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac128c9c2f7784af5bfb187635edd76b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionState.cs new file mode 100644 index 00000000..4e97e052 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionState.cs @@ -0,0 +1,38 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingTransactionState + { + Unknown = 0, + Purchasing = 1, + Purchased = 2, + Failed = 3, + Restored = 4, + Deferred = 5, + Refunded = 6 + } + public class NativeBillingTransactionStateHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingTransactionState"; + + public static AndroidJavaObject CreateWithValue(NativeBillingTransactionState value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingTransactionStateHelper : NativeBillingTransactionStateHelper][Method(CreateWithValue) : NativeBillingTransactionState]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingTransactionState ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingTransactionState)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionState.cs.meta new file mode 100644 index 00000000..9aa04a18 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac10bd1c8bb88444ba9741d0869d8f5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionStateListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionStateListener.cs new file mode 100644 index 00000000..670b05da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionStateListener.cs @@ -0,0 +1,102 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeBillingTransactionStateListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailedDelegate(NativeBillingTransaction transaction, NativeErrorInfo errorInfo); + public delegate void OnStartedDelegate(NativeBillingTransaction transaction); + public delegate void OnUpdatedDelegate(NativeBillingTransaction transaction); + + #endregion + + #region Public callbacks + + public OnFailedDelegate onFailedCallback; + public OnStartedDelegate onStartedCallback; + public OnUpdatedDelegate onUpdatedCallback; + + #endregion + + + #region Constructors + + public NativeBillingTransactionStateListener() : base("com.voxelbusters.essentialkit.billingservices.common.interfaces.IBillingTransactionStateListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailed(AndroidJavaObject transaction, AndroidJavaObject errorInfo) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailed" + " " + "[" + "transaction" + " : " + transaction +"]" + " " + "[" + "errorInfo" + " : " + errorInfo +"]"); +#endif + if(onFailedCallback != null) + { + onFailedCallback(new NativeBillingTransaction(transaction), new NativeErrorInfo(errorInfo)); + } + } + public void onStarted(AndroidJavaObject transaction) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onStarted" + " " + "[" + "transaction" + " : " + transaction +"]"); +#endif + if(onStartedCallback != null) + { + onStartedCallback(new NativeBillingTransaction(transaction)); + } + } + public void onUpdated(AndroidJavaObject transaction) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onUpdated" + " " + "[" + "transaction" + " : " + transaction +"]"); +#endif + if(onUpdatedCallback != null) + { + onUpdatedCallback(new NativeBillingTransaction(transaction)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionStateListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionStateListener.cs.meta new file mode 100644 index 00000000..5db93b6a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionStateListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38701b8f9ebe14dc98dc626c077b113a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionVerificationState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionVerificationState.cs new file mode 100644 index 00000000..c42422db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionVerificationState.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public enum NativeBillingTransactionVerificationState + { + Unknown = 0, + Success = 1, + Failure = 2 + } + public class NativeBillingTransactionVerificationStateHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.common.BillingTransactionVerificationState"; + + public static AndroidJavaObject CreateWithValue(NativeBillingTransactionVerificationState value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeBillingTransactionVerificationStateHelper : NativeBillingTransactionVerificationStateHelper][Method(CreateWithValue) : NativeBillingTransactionVerificationState]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeBillingTransactionVerificationState ReadFromValue(AndroidJavaObject value) + { + return (NativeBillingTransactionVerificationState)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionVerificationState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionVerificationState.cs.meta new file mode 100644 index 00000000..036ed6a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeBillingTransactionVerificationState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bc9d9c2c13954f1eaea1853d632614e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeFetchBillingProductsListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeFetchBillingProductsListener.cs new file mode 100644 index 00000000..28a8e3da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeFetchBillingProductsListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeFetchBillingProductsListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo errorInfo); + public delegate void OnSuccessDelegate(NativeList products, NativeArrayBuffer invalidIds); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeFetchBillingProductsListener() : base("com.voxelbusters.essentialkit.billingservices.common.interfaces.IFetchBillingProductsListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject errorInfo) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "errorInfo" + " : " + errorInfo +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(errorInfo)); + } + } + public void onSuccess(AndroidJavaObject products, AndroidJavaObject invalidIds) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "products" + " : " + products +"]" + " " + "[" + "invalidIds" + " : " + invalidIds +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(products), new NativeArrayBuffer(invalidIds)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeFetchBillingProductsListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeFetchBillingProductsListener.cs.meta new file mode 100644 index 00000000..4a3a0752 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeFetchBillingProductsListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c74479925cce6415092a5e975ea135bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeGoogleBillingServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeGoogleBillingServices.cs new file mode 100644 index 00000000..1e546972 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeGoogleBillingServices.cs @@ -0,0 +1,149 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeGoogleBillingServices : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeGoogleBillingServices(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public void BuyProduct(string requestedProductIdentifier, int quantity, string tag, string offerId) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method(RunOnUiThread) : BuyProduct]"); +#endif + Call(Native.Method.kBuyProduct, new object[] { requestedProductIdentifier, quantity, tag, offerId } ); + }); + } + public bool CanMakePayments() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : CanMakePayments]"); +#endif + return Call(Native.Method.kCanMakePayments); + } + public void FetchProductDetails(NativeFetchBillingProductsListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : FetchProductDetails]"); +#endif + Call(Native.Method.kFetchProductDetails, new object[] { listener } ); + } + public void FinishBillingTransaction(string targetProductId, bool isValidPurchase) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : FinishBillingTransaction]"); +#endif + Call(Native.Method.kFinishBillingTransaction, new object[] { targetProductId, isValidPurchase } ); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public NativeList GetIncompleteBillingTransactions() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : GetIncompleteBillingTransactions]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kGetIncompleteBillingTransactions); + NativeList data = new NativeList(nativeObj); + return data; + } + public void Initialise(string publicKey, NativeBillingTransactionStateListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : Initialise]"); +#endif + Call(Native.Method.kInitialise, new object[] { publicKey, listener } ); + } + public bool IsProductPurchased(string productIdentifier) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : IsProductPurchased]"); +#endif + return Call(Native.Method.kIsProductPurchased, productIdentifier); + } + public void RestorePurchases(bool forceRefresh, string tag, NativeRestorePurchasesListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : RestorePurchases]"); +#endif + Call(Native.Method.kRestorePurchases, new object[] { forceRefresh, tag, listener } ); + } + public void SetProducts(string[] consumableProductIds, string[] nonConsumableProductIds, string[] subscriptionProductIds) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : SetProducts]"); +#endif + Call(Native.Method.kSetProducts, new object[] { consumableProductIds, nonConsumableProductIds, subscriptionProductIds } ); + } + public void TryClearingIncompleteTransactions() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGoogleBillingServices][Method : TryClearingIncompleteTransactions]"); +#endif + Call(Native.Method.kTryClearingIncompleteTransactions); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.billingservices.providers.google.GoogleBillingServices"; + + internal class Method + { + internal const string kTryClearingIncompleteTransactions = "tryClearingIncompleteTransactions"; + internal const string kFetchProductDetails = "fetchProductDetails"; + internal const string kSetProducts = "setProducts"; + internal const string kIsProductPurchased = "isProductPurchased"; + internal const string kInitialise = "initialise"; + internal const string kBuyProduct = "buyProduct"; + internal const string kFinishBillingTransaction = "finishBillingTransaction"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kCanMakePayments = "canMakePayments"; + internal const string kRestorePurchases = "restorePurchases"; + internal const string kGetIncompleteBillingTransactions = "getIncompleteBillingTransactions"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeGoogleBillingServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeGoogleBillingServices.cs.meta new file mode 100644 index 00000000..ffd30acc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeGoogleBillingServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ecfb0788ebe3743f3b8e46021d59ee91 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeRestorePurchasesListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeRestorePurchasesListener.cs new file mode 100644 index 00000000..63bfbe8e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeRestorePurchasesListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Android +{ + public class NativeRestorePurchasesListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo errorInfo); + public delegate void OnSuccessDelegate(NativeList transactions); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeRestorePurchasesListener() : base("com.voxelbusters.essentialkit.billingservices.common.interfaces.IRestorePurchasesListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject errorInfo) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "errorInfo" + " : " + errorInfo +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(errorInfo)); + } + } + public void onSuccess(AndroidJavaObject transactions) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "transactions" + " : " + transactions +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(transactions)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeRestorePurchasesListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeRestorePurchasesListener.cs.meta new file mode 100644 index 00000000..6af5a7d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/BillingServices/NativeRestorePurchasesListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24c8ea6089e2f46668740ccd67c755bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices.meta new file mode 100644 index 00000000..4f7a50fa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93ee5135c0d764cd4a6c96866341c882 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/CloudServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/CloudServicesInterface.cs new file mode 100644 index 00000000..035176e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/CloudServicesInterface.cs @@ -0,0 +1,173 @@ +#if UNITY_ANDROID +using System.Collections; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using System; +using VoxelBusters.EssentialKit.Common.Android; +using System.Diagnostics; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Android +{ + public sealed class CloudServicesInterface : NativeCloudServicesInterfaceBase, IApplicationLifecycleListener + { +#region Static fields + + private NativeCloudServices m_instance; + +#endregion + +#region Constructors + + public CloudServicesInterface() + : base(isAvailable: true) + { + m_instance = new NativeCloudServices(NativeUnityPluginUtility.GetContext()); + m_instance.SetExternalDataChangedListener(new NativeExternalDataChangedListener() + { + onChangeCallback = (NativeExternalChangeReason reason, string[] keys) => + { + SendSavedDataChangeEvent(Converter.from(reason), keys); + } + }); + + m_instance.SetUserChangedListener(new NativeOnUserChangedListener() + { + onChangeCallback = (string userId) => + { + SendUserChangeEvent(new CloudUser(userId, userId == null ? CloudUserAccountStatus.NoAccount : CloudUserAccountStatus.Available), null); + } + }); + + //TODO: Need to move this to native as native code should be handling all functionality on its own. + ApplicationLifecycleObserver.Instance.AddListener(this); + } + + ~CloudServicesInterface() + { + Dispose(false); + } + +#endregion + +#region Base class methods + + public override bool GetBool(string key) + { + return m_instance.GetBool(key); + } + + public override long GetLong(string key) + { + return m_instance.GetLong(key); + } + + public override double GetDouble(string key) + { + return m_instance.GetDouble(key); + } + + public override string GetString(string key) + { + return m_instance.GetString(key); + } + + public override byte[] GetByteArray(string key) + { + NativeBytesWrapper nativeByteBuffer = m_instance.GetByteArray(key); + return nativeByteBuffer.GetBytes(); + } + + public override bool HasKey(string key) + { + return m_instance.HasKey(key); + } + + public override void SetBool(string key, bool value) + { + m_instance.SetBool(key, value); + } + + public override void SetLong(string key, long value) + { + m_instance.SetLong(key, value); + } + + public override void SetDouble(string key, double value) + { + m_instance.SetDouble(key, value); + } + + public override void SetString(string key, string value) + { + m_instance.SetString(key, value); + } + + public override void SetByteArray(string key, byte[] value) + { + m_instance.SetByteArray(key, new NativeBytesWrapper(value)); + } + + public override void RemoveKey(string key) + { + m_instance.RemoveKey(key); + } + + public override void Synchronize(SynchronizeInternalCallback callback) + { + m_instance.Synchronize(new NativeSyncronizeListener() + { + onSuccessCallback = () => + { + callback?.Invoke(true, null); + }, + onFailureCallback = (String error) => + { + callback?.Invoke(false, new Error(error)); + } + + }); + } + + public override IDictionary GetSnapshot() + { + string jsonStr = m_instance.GetSnapshot(); + if (jsonStr != null) + { + return (IDictionary)ExternalServiceProvider.JsonServiceProvider.FromJson(jsonStr); + } + + return null; + } + + #endregion + + #region Helpers + + private void Synchronize(NativeSyncronizeListener listener, bool forceReloginIfRequired) + { + UnityEngine.Debug.Log("Synchronize: " + forceReloginIfRequired); + m_instance.Synchronize(listener, forceReloginIfRequired); + } + + #endregion + + #region IApplicationLifecycleListener implementation + + public void OnApplicationFocus(bool hasFocus) + {} + + public void OnApplicationPause(bool pauseStatus) + { + Synchronize(null, forceReloginIfRequired: false); + } + + public void OnApplicationQuit() + { + Synchronize(null, forceReloginIfRequired: false); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/CloudServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/CloudServicesInterface.cs.meta new file mode 100644 index 00000000..762e6fa3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/CloudServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a90994b625014119b2cab9f67eb4fbb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/Converter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/Converter.cs new file mode 100644 index 00000000..19565f96 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/Converter.cs @@ -0,0 +1,25 @@ +#if UNITY_ANDROID +using System; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Android +{ + internal static class Converter + { + internal static CloudSavedDataChangeReasonCode from(NativeExternalChangeReason reason) + { + switch(reason) + { + case NativeExternalChangeReason.InitialSync: + return CloudSavedDataChangeReasonCode.InitialSyncChange; + case NativeExternalChangeReason.ServerSync: + return CloudSavedDataChangeReasonCode.ServerChange; + case NativeExternalChangeReason.UserChange: + return CloudSavedDataChangeReasonCode.AccountChange; + default: + throw VBException.SwitchCaseNotImplemented(reason); + } + } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/Converter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/Converter.cs.meta new file mode 100644 index 00000000..a1690d8f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3fddc536782cc45e79f2766aea340516 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeCloudServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeCloudServices.cs new file mode 100644 index 00000000..04670707 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeCloudServices.cs @@ -0,0 +1,210 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.CloudServicesCore.Android +{ + public class NativeCloudServices : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + + #region Constructor + + public NativeCloudServices(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public bool GetBool(string key) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : GetBool]"); +#endif + return Call(Native.Method.kGetBool, key); + } + public NativeBytesWrapper GetByteArray(string key) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : GetByteArray]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kGetByteArray, key); + NativeBytesWrapper data = new NativeBytesWrapper(nativeObj); + return data; + } + public double GetDouble(string key) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : GetDouble]"); +#endif + return Call(Native.Method.kGetDouble, key); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public long GetLong(string key) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : GetLong]"); +#endif + return Call(Native.Method.kGetLong, key); + } + public string GetSnapshot() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : GetSnapshot]"); +#endif + return Call(Native.Method.kGetSnapshot); + } + public string GetString(string key) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : GetString]"); +#endif + return Call(Native.Method.kGetString, key); + } + public bool HasKey(string key) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : HasKey]"); +#endif + return Call(Native.Method.kHasKey, key); + } + public void OnSyncronizeFinished(string error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : OnSyncronizeFinished]"); +#endif + Call(Native.Method.kOnSyncronizeFinished, new object[] { error } ); + } + public void RemoveAllKeys() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : RemoveAllKeys]"); +#endif + Call(Native.Method.kRemoveAllKeys); + } + public void RemoveKey(string key) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : RemoveKey]"); +#endif + Call(Native.Method.kRemoveKey, new object[] { key } ); + } + public void SetBool(string key, bool value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : SetBool]"); +#endif + Call(Native.Method.kSetBool, new object[] { key, value } ); + } + public void SetByteArray(string key, NativeBytesWrapper value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : SetByteArray]"); +#endif + Call(Native.Method.kSetByteArray, new object[] { key, value.NativeObject } ); + } + public void SetDouble(string key, double value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : SetDouble]"); +#endif + Call(Native.Method.kSetDouble, new object[] { key, value } ); + } + public void SetExternalDataChangedListener(NativeExternalDataChangedListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : SetExternalDataChangedListener]"); +#endif + Call(Native.Method.kSetExternalDataChangedListener, new object[] { listener } ); + } + public void SetLong(string key, long value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : SetLong]"); +#endif + Call(Native.Method.kSetLong, new object[] { key, value } ); + } + public void SetString(string key, string value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : SetString]"); +#endif + Call(Native.Method.kSetString, new object[] { key, value } ); + } + public void SetUserChangedListener(NativeOnUserChangedListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : SetUserChangedListener]"); +#endif + Call(Native.Method.kSetUserChangedListener, new object[] { listener } ); + } + public void Synchronize(NativeSyncronizeListener listener, bool forceReloginIfRequired) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : Synchronize]"); +#endif + Call(Native.Method.kSynchronize, new object[] { listener, forceReloginIfRequired } ); + } + public void Synchronize(NativeSyncronizeListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeCloudServices][Method : Synchronize]"); +#endif + Call(Native.Method.kSynchronize, new object[] { listener } ); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.cloudservices.CloudServices"; + + internal class Method + { + internal const string kSetByteArray = "setByteArray"; + internal const string kGetByteArray = "getByteArray"; + internal const string kOnSyncronizeFinished = "onSyncronizeFinished"; + internal const string kSetUserChangedListener = "setUserChangedListener"; + internal const string kRemoveAllKeys = "removeAllKeys"; + internal const string kGetBool = "getBool"; + internal const string kSynchronize = "synchronize"; + internal const string kSetBool = "setBool"; + internal const string kSetLong = "setLong"; + internal const string kGetLong = "getLong"; + internal const string kGetSnapshot = "getSnapshot"; + internal const string kSetDouble = "setDouble"; + internal const string kRemoveKey = "removeKey"; + internal const string kSetString = "setString"; + internal const string kGetDouble = "getDouble"; + internal const string kGetString = "getString"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kHasKey = "hasKey"; + internal const string kSetExternalDataChangedListener = "setExternalDataChangedListener"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeCloudServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeCloudServices.cs.meta new file mode 100644 index 00000000..7ca398b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeCloudServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66687950aae2d4860b61ead1f1f92ea9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalChangeReason.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalChangeReason.cs new file mode 100644 index 00000000..0fd30427 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalChangeReason.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Android +{ + public enum NativeExternalChangeReason + { + InitialSync = 0, + ServerSync = 1, + UserChange = 2 + } + public class NativeExternalChangeReasonHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.cloudservices.ExternalChangeReason"; + + public static AndroidJavaObject CreateWithValue(NativeExternalChangeReason value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeExternalChangeReasonHelper : NativeExternalChangeReasonHelper][Method(CreateWithValue) : NativeExternalChangeReason]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeExternalChangeReason ReadFromValue(AndroidJavaObject value) + { + return (NativeExternalChangeReason)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalChangeReason.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalChangeReason.cs.meta new file mode 100644 index 00000000..48f08f60 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalChangeReason.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4b05d91d3b5e4685a88ef4f801657ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalDataChangedListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalDataChangedListener.cs new file mode 100644 index 00000000..2b1deb3b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalDataChangedListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Android +{ + public class NativeExternalDataChangedListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnChangeDelegate(NativeExternalChangeReason reason, string[] keys); + + #endregion + + #region Public callbacks + + public OnChangeDelegate onChangeCallback; + + #endregion + + + #region Constructors + + public NativeExternalDataChangedListener() : base("com.voxelbusters.essentialkit.cloudservices.ICloudServices$IExternalDataChangedListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onChange(AndroidJavaObject reason, string[] keys) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onChange" + " " + "[" + "reason" + " : " + reason +"]" + " " + "[" + "keys" + " : " + keys +"]"); +#endif + if(onChangeCallback != null) + { + onChangeCallback(NativeExternalChangeReasonHelper.ReadFromValue(reason), keys); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalDataChangedListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalDataChangedListener.cs.meta new file mode 100644 index 00000000..d68b902e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeExternalDataChangedListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 545d6a9a6ca884af6ac931f3be5f10e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeOnUserChangedListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeOnUserChangedListener.cs new file mode 100644 index 00000000..136e55ff --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeOnUserChangedListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Android +{ + public class NativeOnUserChangedListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnChangeDelegate(string userId); + + #endregion + + #region Public callbacks + + public OnChangeDelegate onChangeCallback; + + #endregion + + + #region Constructors + + public NativeOnUserChangedListener() : base("com.voxelbusters.essentialkit.cloudservices.ICloudServices$IOnUserChangedListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onChange(string userId) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onChange" + " " + "[" + "userId" + " : " + userId +"]"); +#endif + if(onChangeCallback != null) + { + onChangeCallback(userId); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeOnUserChangedListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeOnUserChangedListener.cs.meta new file mode 100644 index 00000000..ba8bb048 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeOnUserChangedListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6fc5e0f7d175144bda321d687eaa312e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeSyncronizeListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeSyncronizeListener.cs new file mode 100644 index 00000000..3e6238ff --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeSyncronizeListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Android +{ + public class NativeSyncronizeListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(string error); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeSyncronizeListener() : base("com.voxelbusters.essentialkit.cloudservices.ICloudServices$ISyncronizeListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(string error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(error); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeSyncronizeListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeSyncronizeListener.cs.meta new file mode 100644 index 00000000..f7607e0a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/CloudServices/NativeSyncronizeListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ced42208b81264101a1a08f3db657b26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common.meta new file mode 100644 index 00000000..1cf3f933 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f64b419ccab294b7ebdc0a32d78b55f7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeAsset.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeAsset.cs new file mode 100644 index 00000000..4e689856 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeAsset.cs @@ -0,0 +1,89 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.Common.Android +{ + public class NativeAsset : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeAsset(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeAsset(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeAsset() + { + DebugLogger.Log("Disposing NativeAsset"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public void Copy(string destinationFolder, string destinationFileName, NativeCopyAssetListener listener) + { + Call(Native.Method.kCopy, destinationFolder, destinationFileName, listener); + } + public string GetMimeType() + { + return Call(Native.Method.kGetMimeType); + } + public string GetUri() + { + return Call(Native.Method.kGetUri); + } + public bool IsValid() + { + return Call(Native.Method.kIsValid); + } + public void Load(NativeLoadAssetListener listener) + { + Call(Native.Method.kLoad, listener); + } + public override string ToString() + { + return Call(Native.Method.kToString); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.utilities.common.Asset"; + + internal class Method + { + internal const string kToString = "toString"; + internal const string kIsValid = "isValid"; + internal const string kGetMimeType = "getMimeType"; + internal const string kGetUri = "getUri"; + internal const string kCopy = "copy"; + internal const string kLoad = "load"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeAsset.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeAsset.cs.meta new file mode 100644 index 00000000..38f18813 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeAsset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed984368380f34fa1816e20250bb2752 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeBytesWrapper.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeBytesWrapper.cs new file mode 100644 index 00000000..816876d5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeBytesWrapper.cs @@ -0,0 +1,45 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + + +namespace VoxelBusters.EssentialKit.Common.Android +{ + public class NativeBytesWrapper : NativeAndroidJavaObjectWrapper + { +#region Fields + + private const string kClassName = "com.voxelbusters.essentialkit.utilities.common.BytesWrapper"; + private byte[] m_cachedBytes; + +#endregion + + public NativeBytesWrapper(byte[] array) : base(kClassName, array) + { + Debug.Log("Creating from byte array : " + array); + } + + public NativeBytesWrapper(AndroidJavaObject androidJavaObject) : base(kClassName, androidJavaObject) + { + Debug.Log("Creating from android native object : " + androidJavaObject.GetRawObject()); + } + + public byte[] GetBytes() + { + if (m_nativeObject == null) + return default; + + if(m_cachedBytes == null) + { + sbyte[] sbyteArray = Call("getBytes"); + m_cachedBytes = sbyteArray.ToBytes(); + } + + return m_cachedBytes; + } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeBytesWrapper.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeBytesWrapper.cs.meta new file mode 100644 index 00000000..2842e5c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeBytesWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6dc7c5b1ba25643d4b514cf4693781a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeCopyAssetListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeCopyAssetListener.cs new file mode 100644 index 00000000..6aaa2dbb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeCopyAssetListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.Common.Android +{ + public class NativeCopyAssetListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(string path); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeCopyAssetListener() : base("com.voxelbusters.essentialkit.utilities.common.interfaces.ICopyAssetListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(string path) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "path" + " : " + path +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(path); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeCopyAssetListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeCopyAssetListener.cs.meta new file mode 100644 index 00000000..e9d9bded --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeCopyAssetListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd6582a389d344eecb792a62f6a21a03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeLoadAssetListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeLoadAssetListener.cs new file mode 100644 index 00000000..71520e62 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeLoadAssetListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.Common.Android +{ + public class NativeLoadAssetListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(string error); + public delegate void OnSuccessDelegate(NativeBytesWrapper data); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeLoadAssetListener() : base("com.voxelbusters.essentialkit.utilities.common.interfaces.ILoadAssetListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(string error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(error); + } + } + public void onSuccess(AndroidJavaObject data) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "data" + " : " + data +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeBytesWrapper(data)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeLoadAssetListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeLoadAssetListener.cs.meta new file mode 100644 index 00000000..ea79dca6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativeLoadAssetListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9788ffd1922dc4630a8a8018f8f33b8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativePluginBootstrapper.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativePluginBootstrapper.cs new file mode 100644 index 00000000..1760fdaf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativePluginBootstrapper.cs @@ -0,0 +1,63 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.Common.Android +{ + public class NativePluginBootstrapper : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativePluginBootstrapper(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativePluginBootstrapper(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativePluginBootstrapper() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativePluginBootstrapper() + { + DebugLogger.Log("Disposing NativePluginBootstrapper"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static void Initialise(NativeContext context, bool debug) + { + GetClass().CallStatic(Native.Method.kInitialise, context.NativeObject, debug); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.utilities.PluginBootstrapper"; + + internal class Method + { + internal const string kInitialise = "initialise"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativePluginBootstrapper.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativePluginBootstrapper.cs.meta new file mode 100644 index 00000000..de62c1f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Common/NativePluginBootstrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50b78e89264664065afc803bb2cda77c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices.meta new file mode 100644 index 00000000..95218f12 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44fea27b04fc946c38526d05d2455b75 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/DeepLinkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/DeepLinkServicesInterface.cs new file mode 100644 index 00000000..885fa90e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/DeepLinkServicesInterface.cs @@ -0,0 +1,45 @@ +#if UNITY_ANDROID + +using System; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore.Android +{ + public sealed class DeepLinkServicesInterface : NativeDeepLinkServicesInterfaceBase + { + #region Static fields + + private NativeDeepLinkServices m_instance; + + + #endregion + + #region Constructors + + public DeepLinkServicesInterface() + : base(isAvailable: true) + { + m_instance = new NativeDeepLinkServices(NativeUnityPluginUtility.GetContext()); + } + + #endregion + + #region Base methods + + public override void Init() + { + m_instance.Initialise(new NativeDeepLinkRequestListener() + { + onOpenCallback = (url) => + { + //Find out what is the type and fire the event + SendCustomSchemeUrlOpenEvent(url); + } + }); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/DeepLinkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/DeepLinkServicesInterface.cs.meta new file mode 100644 index 00000000..f63a431e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/DeepLinkServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d50cd402e4a54b2aa0053f854896c52 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkRequestListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkRequestListener.cs new file mode 100644 index 00000000..502193bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkRequestListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore.Android +{ + public class NativeDeepLinkRequestListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnOpenDelegate(string url); + + #endregion + + #region Public callbacks + + public OnOpenDelegate onOpenCallback; + + #endregion + + + #region Constructors + + public NativeDeepLinkRequestListener() : base("com.voxelbusters.essentialkit.deeplinkservices.IDeepLinkServices$IDeepLinkRequestListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onOpen(string url) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onOpen" + " " + "[" + "url" + " : " + url +"]"); +#endif + if(onOpenCallback != null) + { + onOpenCallback(url); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkRequestListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkRequestListener.cs.meta new file mode 100644 index 00000000..00a18af5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkRequestListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6813fbcbaf6284aefb6bd52a2fc134a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkServices.cs new file mode 100644 index 00000000..06bdcc3b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkServices.cs @@ -0,0 +1,81 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore.Android +{ + public class NativeDeepLinkServices : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + + #region Constructor + + public NativeDeepLinkServices(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public bool CanHandleUniversalLink(string url) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDeepLinkServices][Method : CanHandleUniversalLink]"); +#endif + return Call(Native.Method.kCanHandleUniversalLink, url); + } + public bool CanHandleUrlSchemeLink(string url) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDeepLinkServices][Method : CanHandleUrlSchemeLink]"); +#endif + return Call(Native.Method.kCanHandleUrlSchemeLink, url); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDeepLinkServices][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void Initialise(NativeDeepLinkRequestListener deepLinkListener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDeepLinkServices][Method : Initialise]"); +#endif + Call(Native.Method.kInitialise, new object[] { deepLinkListener } ); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.deeplinkservices.DeepLinkServices"; + + internal class Method + { + internal const string kCanHandleUniversalLink = "canHandleUniversalLink"; + internal const string kCanHandleUrlSchemeLink = "canHandleUrlSchemeLink"; + internal const string kInitialise = "initialise"; + internal const string kGetFeatureName = "getFeatureName"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkServices.cs.meta new file mode 100644 index 00000000..11778bbe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/DeepLinkServices/NativeDeepLinkServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8642b2f4f868149978e8811106b5999c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras.meta new file mode 100644 index 00000000..c97a60fc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63c334986080b41cda5c91ffe2a5e936 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/NativeApplicationUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/NativeApplicationUtility.cs new file mode 100644 index 00000000..843a2f5f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/NativeApplicationUtility.cs @@ -0,0 +1,85 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.ExtrasCore.Android +{ + public class NativeApplicationUtility : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeApplicationUtility(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeApplicationUtility][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void OpenApplicationSettings() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeApplicationUtility][Method(RunOnUiThread) : OpenApplicationSettings]"); +#endif + Call(Native.Method.kOpenApplicationSettings); + }); + } + public void OpenGooglePlayStoreLink(string packageName) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeApplicationUtility][Method(RunOnUiThread) : OpenGooglePlayStoreLink]"); +#endif + Call(Native.Method.kOpenGooglePlayStoreLink, new object[] { packageName } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.extras.ApplicationUtility"; + + internal class Method + { + internal const string kOpenApplicationSettings = "openApplicationSettings"; + internal const string kOpenGooglePlayStoreLink = "openGooglePlayStoreLink"; + internal const string kGetFeatureName = "getFeatureName"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/NativeApplicationUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/NativeApplicationUtility.cs.meta new file mode 100644 index 00000000..9b1ea1cc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/NativeApplicationUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2208886161bdb45daac9f0ffc6e0207d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/UtilityInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/UtilityInterface.cs new file mode 100644 index 00000000..296c106d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/UtilityInterface.cs @@ -0,0 +1,43 @@ +#if UNITY_ANDROID +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.ExtrasCore.Android +{ + public class UtilityInterface : NativeUtilityInterfaceBase + { + #region Fields + + private NativeApplicationUtility m_applicationUtility; + + #endregion + + #region Constructors + + public UtilityInterface() + : base(isAvailable: true) + { + m_applicationUtility = new NativeApplicationUtility(NativeUnityPluginUtility.GetContext()); + } + + #endregion + + #region Base methods + + public override void OpenAppStorePage(string applicationId) + { + m_applicationUtility.OpenGooglePlayStoreLink(applicationId); + } + + public override void OpenApplicationSettings() + { + m_applicationUtility.OpenApplicationSettings(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/UtilityInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/UtilityInterface.cs.meta new file mode 100644 index 00000000..ccf51c68 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/Extras/UtilityInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 844a1aaa5144a4e1fbfb1640166e364a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices.meta new file mode 100644 index 00000000..57e7374b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce02819de2c6845d48c054b1617c05af +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Achievement.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Achievement.cs new file mode 100644 index 00000000..aa468606 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Achievement.cs @@ -0,0 +1,74 @@ +#if UNITY_ANDROID +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + internal sealed class Achievement : AchievementBase + { + #region Fields + + private NativeGameAchievement m_instance; + private double m_reportedProgress; + + #endregion + + #region Constructors + + public Achievement(string id, NativeGameAchievement nativeAchievement) + : base(id, nativeAchievement.GetId()) + { + m_instance = nativeAchievement; + } + + ~Achievement() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + protected override double GetPercentageCompletedInternal() + { + return (m_instance.GetCurrentSteps() / (m_instance.GetTotalSteps()*1.0)) * 100.0; + } + + protected override void SetPercentageCompletedInternal(double value) + { + m_reportedProgress = Mathf.Clamp((float)value, 0, 100f); + } + + protected override bool GetIsCompletedInternal() + { + return m_instance.GetCurrentSteps() == m_instance.GetTotalSteps(); + } + + protected override DateTime GetLastReportedDateInternal() + { + return m_instance.GetLastReportedDate().GetDateTime(); + } + + protected override void ReportProgressInternal(ReportAchievementProgressInternalCallback callback) + { + int steps = Mathf.RoundToInt((float)((m_reportedProgress * m_instance.GetTotalSteps())/100.0)); + m_instance.ReportProgress(steps, new NativeReportProgressListener() + { + onSuccessCallback = () => + { + callback(true, null); + }, + onFailureCallback = (error) => + { + callback(false, error.Convert(GameServicesError.kDomain)); + } + }); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Achievement.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Achievement.cs.meta new file mode 100644 index 00000000..653eb51e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Achievement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7d0acc20914e4e3bb30596594211197 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/AchievementDescription.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/AchievementDescription.cs new file mode 100644 index 00000000..d6ca0aa6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/AchievementDescription.cs @@ -0,0 +1,135 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + internal sealed class AchievementDescription : AchievementDescriptionBase + { +#region Fields + + private NativeGameAchievement m_instance; + private static string[] m_achievedDescriptionFormats; + +#endregion + +#region Constructors + + public AchievementDescription(string id, NativeGameAchievement nativeGameAchievement, int numOfStepsToUnlock) + : base(id: id, platformId: nativeGameAchievement.GetId(), numOfStepsToUnlock: numOfStepsToUnlock) + { + m_instance = nativeGameAchievement; + if (NumberOfStepsRequiredToUnlockAchievement != GetMaximumPointsInternal()) + { + DebugLogger.LogWarning("Number of steps mentioned in play console is different from steps set in plugin's settings!"); + } + } + + ~AchievementDescription() + { + DebugLogger.Log("~AchievementDescriptor"); + Dispose(false); + } + +#endregion + +#region Base class methods + + protected override string GetTitleInternal() + { + return m_instance.GetName(); + } + + protected override string GetUnachievedDescriptionInternal() + { + return m_instance.GetDescription(); + } + + protected override string GetAchievedDescriptionInternal() + { + string achievedDescriptionFormat = GetRandomAchievedDescriptionFormat(); + + if(string.IsNullOrEmpty(achievedDescriptionFormat)) + { + return m_instance.GetDescription(); + } + else + { + return achievedDescriptionFormat.Replace("#", GetTitleInternal()); + } + } + + protected override long GetMaximumPointsInternal() + { + return m_instance.GetTotalSteps(); + } + + protected override bool GetIsHiddenInternal() + { + return m_instance.IsHidden(); + } + + protected override bool GetIsReplayableInternal() + { + return false; + } + + protected override void LoadIncompleteAchievementImageInternal(LoadImageInternalCallback callback) + { + m_instance.LoadRevealedImage(GetImageListener(callback)); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + m_instance.LoadUnlockedImage(GetImageListener(callback)); + } + +#endregion + +#region Utility methods + + private NativeLoadAssetListener GetImageListener(LoadImageInternalCallback callback) + { + return new NativeLoadAssetListener() + { + onSuccessCallback = (data) => + { + callback(data.GetBytes(), null); + }, + onFailureCallback = (error) => + { + callback(null, GameServicesError.DataNotAvailable(error)); + } + }; + } + +#endregion + +#region Static methods + public static void SetAchievedDescriptionFormats(string[] achievedDescriptionFormats) + { + m_achievedDescriptionFormats = achievedDescriptionFormats; + } + + private static string GetRandomAchievedDescriptionFormat() + { + if(m_achievedDescriptionFormats != null && m_achievedDescriptionFormats.Length > 0) + { + int randomIndex = (int)(DateTime.Now.Ticks % m_achievedDescriptionFormats.Length); + return m_achievedDescriptionFormats[randomIndex]; + } + else + { + return null; + } + } +#endregion +} +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/AchievementDescription.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/AchievementDescription.cs.meta new file mode 100644 index 00000000..9268cb5a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/AchievementDescription.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e2c87d4d8dbe42199b517259323a50f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Converter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Converter.cs new file mode 100644 index 00000000..f9161cf1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Converter.cs @@ -0,0 +1,66 @@ +#if UNITY_ANDROID +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + internal static class Converter + { + public static LeaderboardTimeScope from(NativeLeaderboardTimeVariant timeSpan) + { + switch(timeSpan) + { + case NativeLeaderboardTimeVariant.Daily: + return LeaderboardTimeScope.Today; + case NativeLeaderboardTimeVariant.Weekly: + return LeaderboardTimeScope.Week; + case NativeLeaderboardTimeVariant.AllTime: + return LeaderboardTimeScope.AllTime; + default: + throw VBException.SwitchCaseNotImplemented(timeSpan); + } + } + + public static NativeLeaderboardTimeVariant from(LeaderboardTimeScope timeScope) + { + switch (timeScope) + { + case LeaderboardTimeScope.Today: + return NativeLeaderboardTimeVariant.Daily; + case LeaderboardTimeScope.Week: + return NativeLeaderboardTimeVariant.Weekly; + case LeaderboardTimeScope.AllTime: + return NativeLeaderboardTimeVariant.AllTime; + default: + throw VBException.SwitchCaseNotImplemented(timeScope); + } + } + + + public static LeaderboardPlayerScope from(NativeLeaderboardCollectionVariant collectionVariant) + { + switch (collectionVariant) + { + case NativeLeaderboardCollectionVariant.Public: + return LeaderboardPlayerScope.Global; + default: + DebugLogger.LogWarning("Only Global player scope is possible on Android"); + return LeaderboardPlayerScope.Global; + } + } + + public static NativeLeaderboardCollectionVariant from(LeaderboardPlayerScope playerScope) + { + switch (playerScope) + { + case LeaderboardPlayerScope.Global: + return NativeLeaderboardCollectionVariant.Public; + case LeaderboardPlayerScope.FriendsOnly: + return NativeLeaderboardCollectionVariant.Friends; + default: + DebugLogger.LogWarning("Only Global player scope is possible on Android. Defaults to Global scope."); + return NativeLeaderboardCollectionVariant.Public; + } + } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Converter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Converter.cs.meta new file mode 100644 index 00000000..c2364f66 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37154950c6f31443da8e864b9a8028ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/GameServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/GameServicesInterface.cs new file mode 100644 index 00000000..2958946f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/GameServicesInterface.cs @@ -0,0 +1,256 @@ +#if UNITY_ANDROID +using System; +using System.Collections.Generic; +using System.Diagnostics; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public sealed class GameServicesInterface : NativeGameServicesInterfaceBase + { +#region Fields + + private NativeGameServices m_instance; + private AuthChangeInternalCallback m_authChangeCallback; + private LocalPlayer m_localPlayer; + +#endregion + +#region Constructors + + public GameServicesInterface() + : base(isAvailable: true) + { + m_instance = new NativeGameServices(NativeUnityPluginUtility.GetContext()); + m_localPlayer = new LocalPlayer(); + } + +#endregion + +#region INativeGameServicesInterface implementation + + public override void LoadLeaderboards(LeaderboardDefinition[] leaderboardDefinitions, LoadLeaderboardsInternalCallback callback) + { + m_instance.LoadLeaderboards(new NativeLoadLeaderboardsListener() + { + onSuccessCallback = (nativeList) => + { + //Filter achievements which are listed in the settings only + List nativeLeaderboards = nativeList.Get(); + List filteredLeaderboards = new List(); + + foreach (NativeGameLeaderboard each in nativeLeaderboards) + { + var settings = GameServices.FindLeaderboardDefinitionWithPlatformId(each.GetId()); + if (settings != null) + { + filteredLeaderboards.Add(new Leaderboard(settings.Id, each)); + } + } + + Leaderboard[] leaderboards = filteredLeaderboards.ToArray(); + callback(leaderboards, null); + }, + onFailureCallback = (error) => + { + callback(null, error.Convert(GameServicesError.kDomain)); + } + }); + } + + public override void ShowLeaderboard(string leaderboardId, string leaderboardPlatformId, LeaderboardTimeScope timeScope, ViewClosedInternalCallback callback) + { + m_instance.ShowLeaderboards(leaderboardPlatformId, Converter.from(timeScope), new NativeViewListener() + { + onCloseCallback = (error) => + { + callback(error.Convert(GameServicesError.kDomain)); + } + }); + } + + public override ILeaderboard CreateLeaderboard(string id, string platformId) + { + NativeGameLeaderboard nativeGameLeaderboard = m_instance.CreateLeaderboard(platformId); + return new Leaderboard(id, nativeGameLeaderboard); + } + + public override void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback) + { + AchievementDescription.SetAchievedDescriptionFormats(GameServices.UnitySettings.AndroidProperties.AchievedDescriptionFormats); + m_instance.LoadAchievements(new NativeLoadAchievementsListener() + { + onSuccessCallback = (NativeArrayBuffer nativeArray) => + { + Callback action = () => + { + + List filteredAchievements = new List(); + int count = nativeArray.Size(); + for (int i = 0; i < count; i++) + { + NativeGameAchievement each = nativeArray.Get(i); + var settings = GameServices.FindAchievementDefinitionWithPlatformId(each.GetId()); + if (settings != null) + { + filteredAchievements.Add(new AchievementDescription(settings.Id, each, settings.NumOfStepsToUnlock)); + } + } + callback(filteredAchievements.ToArray(), null); + }; + + CallbackDispatcher.InvokeOnMainThread(action); + + }, + onFailureCallback = (error) => + { + callback(null, error.Convert(GameServicesError.kDomain)); + } + }); + } + + public override void LoadAchievements(LoadAchievementsInternalCallback callback) + { + m_instance.LoadAchievements(new NativeLoadAchievementsListener() + { + onSuccessCallback = (NativeArrayBuffer nativeArray) => + { + Callback action = () => + { + List filteredAchievements = new List(); + int count = nativeArray.Size(); + for (int i = 0; i < count; i++) + { + NativeGameAchievement each = nativeArray.Get(i); + var settings = GameServices.FindAchievementDefinitionWithPlatformId(each.GetId()); + if (settings != null && (!each.GetLastReportedDate().IsNull())) + { + filteredAchievements.Add(new Achievement(settings.Id, each)); + } + } + callback(filteredAchievements.ToArray(), null); + }; + + CallbackDispatcher.InvokeOnMainThread(action); + }, + onFailureCallback = (error) => + { + callback(null, error.Convert(GameServicesError.kDomain)); + } + }); + } + + public override void ShowAchievements(ViewClosedInternalCallback callback) + { + m_instance.ShowAchievements(new NativeViewListener() + { + onCloseCallback = (error) => + { + callback(error.Convert(GameServicesError.kDomain)); + } + }); + } + + public override void SetCanShowAchievementCompletionBanner(bool value) + { + DebugLogger.LogWarning("This operation is not allowed on Android"); + } + + public override IAchievement CreateAchievement(string id, string platformId) + { + NativeGameAchievement nativeGameAchievement = m_instance.CreateAchievement(platformId); + return new Achievement(id, nativeGameAchievement); + } + + public override void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback) + { + m_instance.LoadPlayers(playerIds, new NativeLoadPlayersListener() + { + onSuccessCallback = (nativePlayers) => + { + Player[] players = NativeUnityPluginUtility.Map(nativePlayers.Get()); + callback(players, null); + }, + onFailureCallback = (error) => + { + callback(null, error.Convert(GameServicesError.kDomain)); + } + }); + } + + public override void SetAuthChangeCallback(AuthChangeInternalCallback callback) + { + m_authChangeCallback = callback; + } + + public override void Authenticate() + { + m_instance.Authenticate(new NativePlayerAuthenticationListener() + { + onSuccessCallback = (player) => + { + if(m_authChangeCallback != null) + { + if(player == null || player.IsNull()) + { + m_localPlayer.SetPlayer(null); + m_authChangeCallback(LocalPlayerAuthStatus.NotAvailable, null); + } + else + { + m_localPlayer.SetPlayer(player); + m_authChangeCallback(LocalPlayerAuthStatus.Authenticated, null); + } + } + }, + onFailureCallback = (error) => + { + if(m_authChangeCallback != null) + { + m_localPlayer.SetPlayer(null); + m_authChangeCallback(LocalPlayerAuthStatus.NotAvailable, error.Convert(GameServicesError.kDomain)); + } + } + }); + } + + public override void Signout() + { + m_instance.Signout(); + } + + public override ILocalPlayer GetLocalPlayer() + { + return m_localPlayer; + } + + public override void LoadServerCredentials(LoadServerCredentialsInternalCallback callback) + { + m_instance.LoadServerCredentials(serverClientId: GameServices.UnitySettings.AndroidProperties.ServerClientId,forceRefreshToken: true, new NativeLoadServerCredentials() + { + onSuccessCallback = (serverAuthCode) => + { + if (callback != null) + { + ServerCredentials.AndroidPlatformProperties properties = new ServerCredentials.AndroidPlatformProperties(serverAuthCode); + ServerCredentials credentials = new ServerCredentials(androidProperties: properties); + + callback(credentials, null); + } + }, + onFailureCallback = (error) => + { + if(callback != null) + { + callback(null, error.Convert(GameServicesError.kDomain)); + } + } + }); + + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/GameServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/GameServicesInterface.cs.meta new file mode 100644 index 00000000..56508ef9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/GameServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb1290fce508a4d0ca5dd4086249dfcc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Leaderboard.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Leaderboard.cs new file mode 100644 index 00000000..e7af4d3c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Leaderboard.cs @@ -0,0 +1,204 @@ +#if UNITY_ANDROID +using System; +using System.Runtime.InteropServices; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + internal sealed class Leaderboard : LeaderboardBase + { +#region Fields + + private NativeGameLeaderboard m_instance; + private LeaderboardTimeScope m_timeScope; + private LeaderboardPlayerScope m_playerScope; + private LeaderboardScore m_localPlayerScore; + +#endregion + +#region Constructors + + public Leaderboard(string id, NativeGameLeaderboard nativeGameLeaderboard) + :base(id, nativeGameLeaderboard.GetId()) + { + m_instance = nativeGameLeaderboard; + LoadScoresQuerySize = 10; + } + + ~Leaderboard() + { + Dispose(false); + } + +#endregion + +#region Base class methods + + protected override string GetTitleInternal() + { + return m_instance.GetName(); + } + + protected override LeaderboardPlayerScope GetPlayerScopeInternal() + { + return m_playerScope; + } + + protected override void SetPlayerScopeInternal(LeaderboardPlayerScope value) + { + m_playerScope = value; + } + + protected override LeaderboardTimeScope GetTimeScopeInternal() + { + return m_timeScope; + } + + protected override void SetTimeScopeInternal(LeaderboardTimeScope value) + { + m_timeScope = value; + } + + protected override ILeaderboardScore GetLocalPlayerScoreInternal() + { + return m_localPlayerScore; + } + + protected override void LoadTopScoresInternal(LoadScoresInternalCallback callback) + { + NativeLeaderboardTimeVariant timeVariant = Converter.from(m_timeScope); + NativeLeaderboardCollectionVariant collectionVariant = Converter.from(m_playerScope); + + m_instance.LoadTopScores(timeVariant, collectionVariant, LoadScoresQuerySize, true, new NativeLoadScoresListener() + { + onSuccessCallback = (nativeScores) => + { + LeaderboardScore[] scores = NativeUnityPluginUtility.Map(nativeScores.Get()); + FinishByFetchingLocalPlayerScore(timeVariant, collectionVariant, scores, callback); + }, + onFailureCallback = (error) => + { + callback(null, null, error.Convert(GameServicesError.kDomain)); + } + }); + } + + protected override void LoadPlayerCenteredScoresInternal(LoadScoresInternalCallback callback) + { + NativeLeaderboardTimeVariant timeVariant = Converter.from(m_timeScope); + NativeLeaderboardCollectionVariant collectionVariant = Converter.from(m_playerScope); + + m_instance.LoadPlayerCenteredScores(timeVariant, collectionVariant, LoadScoresQuerySize, true, new NativeLoadScoresListener() + { + onSuccessCallback = (nativeScores) => + { + LeaderboardScore[] scores = NativeUnityPluginUtility.Map(nativeScores.Get()); + FinishByFetchingLocalPlayerScore(timeVariant, collectionVariant, scores, callback); + }, + onFailureCallback = (error) => + { + callback(null, null, error.Convert(GameServicesError.kDomain)); + } + }); + } + + protected override void LoadNextInternal(LoadScoresInternalCallback callback) + { + m_instance.LoadMoreScores(LoadScoresQuerySize, 1, new NativeLoadScoresListener() + { + onSuccessCallback = (nativeScores) => + { + LeaderboardScore[] scores = NativeUnityPluginUtility.Map(nativeScores.Get()); + callback(scores, m_localPlayerScore, null); + }, + onFailureCallback = (error) => + { + callback(null, m_localPlayerScore, error.Convert(GameServicesError.kDomain)); + } + }); + } + + protected override void LoadPreviousInternal(LoadScoresInternalCallback callback) + { + m_instance.LoadMoreScores(LoadScoresQuerySize, -1, new NativeLoadScoresListener() + { + onSuccessCallback = (nativeScores) => + { + LeaderboardScore[] scores = NativeUnityPluginUtility.Map(nativeScores.Get()); + callback(scores, m_localPlayerScore, null); + }, + onFailureCallback = (error) => + { + callback(null,m_localPlayerScore, error.Convert(GameServicesError.kDomain)); + } + }); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + m_instance.LoadImage(new NativeLoadAssetListener() + { + onSuccessCallback = (data) => + { + callback(data.GetBytes(), null); + }, + onFailureCallback = (error) => + { + callback(null, GameServicesError.Unknown(error)); + } + }); + } + +#endregion + +#region Private methods + + + private void FinishByFetchingLocalPlayerScore(NativeLeaderboardTimeVariant timeVariant, NativeLeaderboardCollectionVariant collectionVariant, LeaderboardScore[] scores, LoadScoresInternalCallback callback) + { + m_instance.LoadLocalPlayerScore(timeVariant, collectionVariant, new NativeLoadLocalPlayerScoreListener() + { + onSuccessCallback = (NativeGameLeaderboardScore nativeLocalPlayerScore) => + { + if (nativeLocalPlayerScore.IsNull()) + { + m_localPlayerScore = null; + } + else + { + m_localPlayerScore = new LeaderboardScore(nativeLocalPlayerScore); + } + + callback(scores, m_localPlayerScore, null); + }, + onFailureCallback = (error) => + { + DebugLogger.LogWarning("Failed retrieving local player score : " + error); + callback(scores, null, null); + } + + }); + } + + protected override void ReportScoreInternal(long score, ReportScoreInternalCallback callback, string tag = null) + { + m_instance.ReportScore(score, new NativeSubmitScoreListener() + { + onSuccessCallback = () => + { + callback(true, null); + }, + onFailureCallback = (error) => + { + callback(false, error.Convert(GameServicesError.kDomain)); + } + }, tag); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Leaderboard.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Leaderboard.cs.meta new file mode 100644 index 00000000..d825e1e6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Leaderboard.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 429062561e5b54f8fa9c18dbf64a9cb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LeaderboardScore.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LeaderboardScore.cs new file mode 100644 index 00000000..252f3926 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LeaderboardScore.cs @@ -0,0 +1,67 @@ +#if UNITY_ANDROID +using System; +using System.Runtime.InteropServices; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + internal sealed class LeaderboardScore : LeaderboardScoreBase + { + #region Fields + + private NativeGameLeaderboardScore m_instance; + + #endregion + + #region Constructors + + public LeaderboardScore(string platformId) : base(platformId) + { + + } + + public LeaderboardScore(NativeGameLeaderboardScore nativeScore) + : base(leaderboardPlatformId: nativeScore.GetLeaderboardId()) + { + m_instance = nativeScore; + DebugLogger.Log("Score constructor : " + LeaderboardPlatformId + " " + nativeScore.GetLeaderboardId()); + } + + ~LeaderboardScore() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + protected override IPlayer GetPlayerInternal() + { + return new Player(m_instance.GetPlayer()); + } + + protected override long GetRankInternal() + { + return m_instance.GetRank(); + } + + protected override long GetValueInternal() + { + return m_instance.GetRawScore(); + } + + protected override DateTime GetLastReportedDateInternal() + { + return m_instance.GetLastReportedDate().GetDateTime(); + } + + protected override string GetTagInternal() + { + return m_instance.GetTag(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LeaderboardScore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LeaderboardScore.cs.meta new file mode 100644 index 00000000..45f69c01 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LeaderboardScore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 301e17cda09574dc3879db07049a0033 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LocalPlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LocalPlayer.cs new file mode 100644 index 00000000..56413be1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LocalPlayer.cs @@ -0,0 +1,75 @@ +#if UNITY_ANDROID +using System.Diagnostics; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + internal sealed class LocalPlayer : Player, ILocalPlayer + { + #region Constructors + + public LocalPlayer() : base(null) + { + + } + + #endregion + + #region ILocalPlayer implementation + + public bool IsAuthenticated + { + get + { + return m_instance != null; + } + } + + public bool IsUnderAge + { + get + { + DebugLogger.LogWarning("This always returns false on Android"); + return false; + } + } + + public void LoadFriends(EventCallback callback) + { + m_instance.LoadFriends(NativeUnityPluginUtility.GetActivity(), new NativeLoadPlayersListener() { + onSuccessCallback = (nativePlayers) => + { + Player[] players = NativeUnityPluginUtility.Map(nativePlayers.Get()); + SendLoadPlayerFriendsResult(callback, players, null); + }, + onFailureCallback = (error) => + { + SendLoadPlayerFriendsResult(callback, null, error.Convert(GameServicesError.kDomain)); + } + }); + } + + public void AddFriend(string playerId, EventCallback callback) + { + m_instance.SendFriendRequest(NativeUnityPluginUtility.GetActivity(), playerId, new NativeViewListener() { + onCloseCallback = (error) => + { + SendViewClosedResult(callback, error != null ? error.Convert(GameServicesError.kDomain) : null); + } + }); + } + + #endregion + + #region Internal methods + + internal void SetPlayer(NativeGamePlayer player) + { + m_instance = player; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LocalPlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LocalPlayer.cs.meta new file mode 100644 index 00000000..1ac2643f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/LocalPlayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ad931b8e115649a2a94d798a47f9ecf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameAchievement.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameAchievement.cs new file mode 100644 index 00000000..e600f1c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameAchievement.cs @@ -0,0 +1,122 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeGameAchievement : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeGameAchievement(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeGameAchievement(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeGameAchievement() + { + DebugLogger.Log("Disposing NativeGameAchievement"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public int GetCurrentSteps() + { + return Call(Native.Method.kGetCurrentSteps); + } + public string GetDescription() + { + return Call(Native.Method.kGetDescription); + } + public string GetId() + { + return Call(Native.Method.kGetId); + } + public NativeDate GetLastReportedDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetLastReportedDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public string GetName() + { + return Call(Native.Method.kGetName); + } + public int GetTotalSteps() + { + return Call(Native.Method.kGetTotalSteps); + } + public bool IsHidden() + { + return Call(Native.Method.kIsHidden); + } + public bool IsRevealed() + { + return Call(Native.Method.kIsRevealed); + } + public bool IsUnlocked() + { + return Call(Native.Method.kIsUnlocked); + } + public void LoadRevealedImage(NativeLoadAssetListener listener) + { + Call(Native.Method.kLoadRevealedImage, listener); + } + public void LoadUnlockedImage(NativeLoadAssetListener listener) + { + Call(Native.Method.kLoadUnlockedImage, listener); + } + public void ReportProgress(int stepsToSet, NativeReportProgressListener listener) + { + Call(Native.Method.kReportProgress, stepsToSet, listener); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.gameservices.GameAchievement"; + + internal class Method + { + internal const string kIsHidden = "isHidden"; + internal const string kGetTotalSteps = "getTotalSteps"; + internal const string kGetLastReportedDate = "getLastReportedDate"; + internal const string kGetName = "getName"; + internal const string kIsUnlocked = "isUnlocked"; + internal const string kIsRevealed = "isRevealed"; + internal const string kGetDescription = "getDescription"; + internal const string kReportProgress = "reportProgress"; + internal const string kGetCurrentSteps = "getCurrentSteps"; + internal const string kLoadUnlockedImage = "loadUnlockedImage"; + internal const string kLoadRevealedImage = "loadRevealedImage"; + internal const string kGetId = "getId"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameAchievement.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameAchievement.cs.meta new file mode 100644 index 00000000..abd12514 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameAchievement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1100c28946f5841a1876c401d1008544 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboard.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboard.cs new file mode 100644 index 00000000..70e0dc71 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboard.cs @@ -0,0 +1,110 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeGameLeaderboard : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeGameLeaderboard(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeGameLeaderboard(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeGameLeaderboard() + { + DebugLogger.Log("Disposing NativeGameLeaderboard"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public string GetId() + { + return Call(Native.Method.kGetId); + } + public string GetName() + { + return Call(Native.Method.kGetName); + } + public void LoadImage(NativeLoadAssetListener listener) + { + Call(Native.Method.kLoadImage, listener); + } + public void LoadLocalPlayerScore(NativeLeaderboardTimeVariant timeVariant, NativeLeaderboardCollectionVariant collectionVariant, NativeLoadLocalPlayerScoreListener listener) + { + Call(Native.Method.kLoadLocalPlayerScore, NativeLeaderboardTimeVariantHelper.CreateWithValue(timeVariant), NativeLeaderboardCollectionVariantHelper.CreateWithValue(collectionVariant), listener); + } + public void LoadMoreScores(int maxResults, int pageDirection, NativeLoadScoresListener listener) + { + Call(Native.Method.kLoadMoreScores, maxResults, pageDirection, listener); + } + public void LoadPlayerCenteredScores(NativeLeaderboardTimeVariant timeVariant, NativeLeaderboardCollectionVariant collectionVariant, int count, bool forceRefresh, NativeLoadScoresListener listener) + { + Call(Native.Method.kLoadPlayerCenteredScores, NativeLeaderboardTimeVariantHelper.CreateWithValue(timeVariant), NativeLeaderboardCollectionVariantHelper.CreateWithValue(collectionVariant), count, forceRefresh, listener); + } + public void LoadTopScores(NativeLeaderboardTimeVariant timeVariant, NativeLeaderboardCollectionVariant collectionVariant, int count, bool forceRefresh, NativeLoadScoresListener listener) + { + Call(Native.Method.kLoadTopScores, NativeLeaderboardTimeVariantHelper.CreateWithValue(timeVariant), NativeLeaderboardCollectionVariantHelper.CreateWithValue(collectionVariant), count, forceRefresh, listener); + } + public void ReportScore(long score, NativeSubmitScoreListener listener, string tag) + { + Call(Native.Method.kReportScore, score, listener, tag); + } + public void Show(NativeActivity activity, NativeLeaderboardTimeVariant timeSpan, NativeViewListener listener) + { + activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameLeaderboard][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow, NativeLeaderboardTimeVariantHelper.CreateWithValue(timeSpan), listener); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.gameservices.GameLeaderboard"; + + internal class Method + { + internal const string kLoadLocalPlayerScore = "loadLocalPlayerScore"; + internal const string kLoadTopScores = "loadTopScores"; + internal const string kGetName = "getName"; + internal const string kReportScore = "reportScore"; + internal const string kLoadImage = "loadImage"; + internal const string kLoadPlayerCenteredScores = "loadPlayerCenteredScores"; + internal const string kLoadMoreScores = "loadMoreScores"; + internal const string kGetId = "getId"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboard.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboard.cs.meta new file mode 100644 index 00000000..2822728b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboard.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec2613f699504469dba56d0ba0be7830 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboardScore.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboardScore.cs new file mode 100644 index 00000000..c29b1172 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboardScore.cs @@ -0,0 +1,94 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeGameLeaderboardScore : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeGameLeaderboardScore(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeGameLeaderboardScore(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeGameLeaderboardScore() + { + DebugLogger.Log("Disposing NativeGameLeaderboardScore"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeDate GetLastReportedDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetLastReportedDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public string GetLeaderboardId() + { + return Call(Native.Method.kGetLeaderboardId); + } + public NativeGamePlayer GetPlayer() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetPlayer); + NativeGamePlayer data = new NativeGamePlayer(nativeObj); + return data; + } + public long GetRank() + { + return Call(Native.Method.kGetRank); + } + public long GetRawScore() + { + return Call(Native.Method.kGetRawScore); + } + public string GetTag() + { + return Call(Native.Method.kGetTag); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.gameservices.GameLeaderboardScore"; + + internal class Method + { + internal const string kGetLastReportedDate = "getLastReportedDate"; + internal const string kGetRawScore = "getRawScore"; + internal const string kGetRank = "getRank"; + internal const string kGetPlayer = "getPlayer"; + internal const string kGetTag = "getTag"; + internal const string kGetLeaderboardId = "getLeaderboardId"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboardScore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboardScore.cs.meta new file mode 100644 index 00000000..ea66bd89 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameLeaderboardScore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c30aac3d013a4e099683910218933fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGamePlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGamePlayer.cs new file mode 100644 index 00000000..f73b3229 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGamePlayer.cs @@ -0,0 +1,105 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeGamePlayer : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeGamePlayer(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeGamePlayer(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeGamePlayer() + { + DebugLogger.Log("Disposing NativeGamePlayer"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public string GetDisplayName() + { + return Call(Native.Method.kGetDisplayName); + } + public string GetId() + { + return Call(Native.Method.kGetId); + } + public string GetName() + { + return Call(Native.Method.kGetName); + } + public string GetTitle() + { + return Call(Native.Method.kGetTitle); + } + public void LoadFriends(NativeActivity activity, NativeLoadPlayersListener listener) + { + activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGamePlayer][Method(RunOnUiThread) : LoadFriends]"); +#endif + Call(Native.Method.kLoadFriends, listener); + }); + } + public void LoadProfileImage(bool needHighRes, NativeLoadAssetListener listener) + { + Call(Native.Method.kLoadProfileImage, needHighRes, listener); + } + public void SendFriendRequest(NativeActivity activity, string playerId, NativeViewListener listener) + { + activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGamePlayer][Method(RunOnUiThread) : SendFriendRequest]"); +#endif + Call(Native.Method.kSendFriendRequest, playerId, listener); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.gameservices.GamePlayer"; + + internal class Method + { + internal const string kGetTitle = "getTitle"; + internal const string kGetName = "getName"; + internal const string kLoadFriends = "loadFriends"; + internal const string kGetDisplayName = "getDisplayName"; + internal const string kGetId = "getId"; + internal const string kSendFriendRequest = "SendFriendRequest"; + internal const string kLoadProfileImage = "LoadProfileImage"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGamePlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGamePlayer.cs.meta new file mode 100644 index 00000000..ca9152f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGamePlayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f59eae7e95c8f492792c8dbfbdb14f17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameServices.cs new file mode 100644 index 00000000..90d894b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameServices.cs @@ -0,0 +1,187 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeGameServices : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeGameServices(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public void Authenticate(NativePlayerAuthenticationListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method(RunOnUiThread) : Authenticate]"); +#endif + Call(Native.Method.kAuthenticate, new object[] { listener } ); + }); + } + public NativeGameAchievement CreateAchievement(string id) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : CreateAchievement]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kCreateAchievement, id); + NativeGameAchievement data = new NativeGameAchievement(nativeObj); + return data; + } + public NativeGameLeaderboard CreateLeaderboard(string id) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : CreateLeaderboard]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kCreateLeaderboard, id); + NativeGameLeaderboard data = new NativeGameLeaderboard(nativeObj); + return data; + } + public NativeGameLeaderboardScore CreateScore(string leaderboardId) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : CreateScore]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kCreateScore, leaderboardId); + NativeGameLeaderboardScore data = new NativeGameLeaderboardScore(nativeObj); + return data; + } + public NativeGameAchievement GetAchievement(string achievementId) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : GetAchievement]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kGetAchievement, achievementId); + NativeGameAchievement data = new NativeGameAchievement(nativeObj); + return data; + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void LoadAchievements(NativeLoadAchievementsListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : LoadAchievements]"); +#endif + Call(Native.Method.kLoadAchievements, new object[] { listener } ); + } + public void LoadLeaderboards(NativeLoadLeaderboardsListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : LoadLeaderboards]"); +#endif + Call(Native.Method.kLoadLeaderboards, new object[] { listener } ); + } + public void LoadPlayer(string playerId, NativeLoadPlayersListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : LoadPlayer]"); +#endif + Call(Native.Method.kLoadPlayer, new object[] { playerId, listener } ); + } + public void LoadPlayers(string[] playerIds, NativeLoadPlayersListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method : LoadPlayers]"); +#endif + Call(Native.Method.kLoadPlayers, new object[] { playerIds, listener } ); + } + public void LoadServerCredentials(string serverClientId, bool forceRefreshToken, NativeLoadServerCredentials listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method(RunOnUiThread) : LoadServerCredentials]"); +#endif + Call(Native.Method.kLoadServerCredentials, new object[] { serverClientId, forceRefreshToken, listener } ); + }); + } + public void ShowAchievements(NativeViewListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method(RunOnUiThread) : ShowAchievements]"); +#endif + Call(Native.Method.kShowAchievements, new object[] { listener } ); + }); + } + public void ShowLeaderboards(string leaderboardId, NativeLeaderboardTimeVariant timeSpan, NativeViewListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method(RunOnUiThread) : ShowLeaderboards]"); +#endif + Call(Native.Method.kShowLeaderboards, new object[] { leaderboardId, NativeLeaderboardTimeVariantHelper.CreateWithValue(timeSpan), listener } ); + }); + } + public void Signout() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeGameServices][Method(RunOnUiThread) : Signout]"); +#endif + Call(Native.Method.kSignout); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.gameservices.GameServices"; + + internal class Method + { + internal const string kAuthenticate = "authenticate"; + internal const string kSignout = "signout"; + internal const string kLoadPlayers = "loadPlayers"; + internal const string kCreateScore = "createScore"; + internal const string kLoadServerCredentials = "loadServerCredentials"; + internal const string kLoadPlayer = "loadPlayer"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kGetAchievement = "getAchievement"; + internal const string kShowLeaderboards = "showLeaderboards"; + internal const string kLoadLeaderboards = "loadLeaderboards"; + internal const string kShowAchievements = "showAchievements"; + internal const string kLoadAchievements = "loadAchievements"; + internal const string kCreateLeaderboard = "createLeaderboard"; + internal const string kCreateAchievement = "createAchievement"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameServices.cs.meta new file mode 100644 index 00000000..89e4c923 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeGameServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b08435cf24fac455bb670a2d161f384c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardCollectionVariant.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardCollectionVariant.cs new file mode 100644 index 00000000..629c5307 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardCollectionVariant.cs @@ -0,0 +1,33 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public enum NativeLeaderboardCollectionVariant + { + Public = 0, + Friends = 1 + } + public class NativeLeaderboardCollectionVariantHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.gameservices.LeaderboardCollectionVariant"; + + public static AndroidJavaObject CreateWithValue(NativeLeaderboardCollectionVariant value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeLeaderboardCollectionVariantHelper : NativeLeaderboardCollectionVariantHelper][Method(CreateWithValue) : NativeLeaderboardCollectionVariant]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeLeaderboardCollectionVariant ReadFromValue(AndroidJavaObject value) + { + return (NativeLeaderboardCollectionVariant)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardCollectionVariant.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardCollectionVariant.cs.meta new file mode 100644 index 00000000..3937b407 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardCollectionVariant.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ed36d2e3e16d4df7b124284fc6c5de7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardTimeVariant.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardTimeVariant.cs new file mode 100644 index 00000000..557c7004 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardTimeVariant.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public enum NativeLeaderboardTimeVariant + { + Daily = 0, + Weekly = 1, + AllTime = 2 + } + public class NativeLeaderboardTimeVariantHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.gameservices.LeaderboardTimeVariant"; + + public static AndroidJavaObject CreateWithValue(NativeLeaderboardTimeVariant value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeLeaderboardTimeVariantHelper : NativeLeaderboardTimeVariantHelper][Method(CreateWithValue) : NativeLeaderboardTimeVariant]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeLeaderboardTimeVariant ReadFromValue(AndroidJavaObject value) + { + return (NativeLeaderboardTimeVariant)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardTimeVariant.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardTimeVariant.cs.meta new file mode 100644 index 00000000..d35caccd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLeaderboardTimeVariant.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7fcd79e722c24c7fb646290f02d1bfd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadAchievementsListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadAchievementsListener.cs new file mode 100644 index 00000000..d94a0ded --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadAchievementsListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeLoadAchievementsListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeArrayBuffer achievements); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeLoadAchievementsListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$ILoadAchievementsListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject achievements) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "achievements" + " : " + achievements +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeArrayBuffer(achievements)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadAchievementsListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadAchievementsListener.cs.meta new file mode 100644 index 00000000..4785f2df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadAchievementsListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b55cb8d2807f84a088752bab8cc41cbe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLeaderboardsListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLeaderboardsListener.cs new file mode 100644 index 00000000..e80382da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLeaderboardsListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeLoadLeaderboardsListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeList leaderboards); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeLoadLeaderboardsListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$ILoadLeaderboardsListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject leaderboards) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "leaderboards" + " : " + leaderboards +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(leaderboards)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLeaderboardsListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLeaderboardsListener.cs.meta new file mode 100644 index 00000000..68b56d7f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLeaderboardsListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b22601a31faca4e2fbf5148b49b9ecbd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLocalPlayerScoreListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLocalPlayerScoreListener.cs new file mode 100644 index 00000000..cc9e67b6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLocalPlayerScoreListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeLoadLocalPlayerScoreListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeGameLeaderboardScore score); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeLoadLocalPlayerScoreListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$ILoadLocalPlayerScoreListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject score) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "score" + " : " + score +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeGameLeaderboardScore(score)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLocalPlayerScoreListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLocalPlayerScoreListener.cs.meta new file mode 100644 index 00000000..bf38cfa1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadLocalPlayerScoreListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f25626eb1eb634bbda7a39df5857f84f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadPlayersListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadPlayersListener.cs new file mode 100644 index 00000000..c9f18da1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadPlayersListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeLoadPlayersListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeList players); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeLoadPlayersListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$ILoadPlayersListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject players) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "players" + " : " + players +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(players)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadPlayersListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadPlayersListener.cs.meta new file mode 100644 index 00000000..f25227b4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadPlayersListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a090a951a8b44403bd80f94475ff783 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadScoresListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadScoresListener.cs new file mode 100644 index 00000000..6061df65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadScoresListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeLoadScoresListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeList scores); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeLoadScoresListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$ILoadScoresListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject scores) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "scores" + " : " + scores +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(scores)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadScoresListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadScoresListener.cs.meta new file mode 100644 index 00000000..caf76684 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadScoresListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5eac388ccdb94361bd93db6ae11e9b5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadServerCredentials.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadServerCredentials.cs new file mode 100644 index 00000000..02b8537b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadServerCredentials.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeLoadServerCredentials : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(string serverAuthCode); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeLoadServerCredentials() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$ILoadServerCredentials") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(string serverAuthCode) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "serverAuthCode" + " : " + serverAuthCode +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(serverAuthCode); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadServerCredentials.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadServerCredentials.cs.meta new file mode 100644 index 00000000..bb24d87a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeLoadServerCredentials.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bdc6369d6cd1842709fa13b034e58609 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativePlayerAuthenticationListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativePlayerAuthenticationListener.cs new file mode 100644 index 00000000..e6a6e40e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativePlayerAuthenticationListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativePlayerAuthenticationListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeGamePlayer player); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativePlayerAuthenticationListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$IPlayerAuthenticationListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject player) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "player" + " : " + player +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeGamePlayer(player)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativePlayerAuthenticationListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativePlayerAuthenticationListener.cs.meta new file mode 100644 index 00000000..47d6a248 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativePlayerAuthenticationListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1025330f128ed46e7aeb090b2db934ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeReportProgressListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeReportProgressListener.cs new file mode 100644 index 00000000..5cee92b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeReportProgressListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeReportProgressListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeReportProgressListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$IReportProgressListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeReportProgressListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeReportProgressListener.cs.meta new file mode 100644 index 00000000..41933359 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeReportProgressListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8dfc7ccb78ee543c8a298d72650a8d3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeSubmitScoreListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeSubmitScoreListener.cs new file mode 100644 index 00000000..25e9342c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeSubmitScoreListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeSubmitScoreListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeSubmitScoreListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$ISubmitScoreListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeSubmitScoreListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeSubmitScoreListener.cs.meta new file mode 100644 index 00000000..75160f02 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeSubmitScoreListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c2e8867dde3214f6b94709b13505f641 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeViewListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeViewListener.cs new file mode 100644 index 00000000..0caa7095 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeViewListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + public class NativeViewListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnCloseDelegate(NativeErrorInfo error); + + #endregion + + #region Public callbacks + + public OnCloseDelegate onCloseCallback; + + #endregion + + + #region Constructors + + public NativeViewListener() : base("com.voxelbusters.essentialkit.gameservices.IGameServices$IViewListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onClose(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onClose" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onCloseCallback != null) + { + onCloseCallback(new NativeErrorInfo(error)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeViewListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeViewListener.cs.meta new file mode 100644 index 00000000..21897542 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/NativeViewListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb703449ac2324654afbc3f29c8c361f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Player.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Player.cs new file mode 100644 index 00000000..2610b1c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Player.cs @@ -0,0 +1,99 @@ +#if UNITY_ANDROID +using System; + +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Android +{ + internal class Player : PlayerBase + { +#region Fields + + protected NativeGamePlayer m_instance; + +#endregion +#region Constructors + + public Player(NativeGamePlayer nativePlayer) + { + m_instance = nativePlayer; + } + + ~Player() + { + Dispose(false); + } + +#endregion + +#region Base class methods + + protected override string GetIdInternal() + { + if(m_instance == null) + { + return null; + } + + return m_instance.GetId(); + } + + protected override string GetDeveloperScopeIdInternal() + { + return null; + } + + protected override string GetLegacyIdInternal() + { + return null; + } + + protected override string GetAliasInternal() + { + if(m_instance == null) + { + return null; + } + + return m_instance.GetName(); + } + + protected override string GetDisplayNameInternal() + { + if(m_instance == null) + { + return null; + } + + return m_instance.GetDisplayName(); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + if(m_instance == null) + { + callback(null, new Error("Player not available")); + return; + } + + //#warning What needs to be done if no image exists? How its handled on iOS. Any option for setting default image in settings? Current one just passes null if no image exists without error + m_instance.LoadProfileImage(true, new NativeLoadAssetListener() + { + onSuccessCallback = (NativeBytesWrapper data) => + { + callback(data.GetBytes(), null); + }, + onFailureCallback = (error) => + { + callback(null, GameServicesError.DataNotAvailable(error)); + } + }); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Player.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Player.cs.meta new file mode 100644 index 00000000..48e085c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/GameServices/Player.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1192fff4f62494a3da5ea609ba09a9ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices.meta new file mode 100644 index 00000000..0129b6fb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d5de9379b44c4300ba63669222b141f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/AssetMediaContent.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/AssetMediaContent.cs new file mode 100644 index 00000000..f685bcf5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/AssetMediaContent.cs @@ -0,0 +1,54 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class AssetMediaContent : IMediaContent + { + private NativeMediaContentBase m_nativeMediaContent; + + public AssetMediaContent(NativeMediaContentBase nativeMediaContent) + { + m_nativeMediaContent = nativeMediaContent; + } + public void AsFilePath(string destinationDirectory, string fileName, EventCallback onComplete) + { + m_nativeMediaContent.AsFilePath(destinationDirectory, fileName, new NativeMediaContentPathCallback() { + onSuccessCallback = (path) => { + CallbackDispatcher.InvokeOnMainThread(onComplete, path, null); + }, + onFailureCallback = (error) => { + CallbackDispatcher.InvokeOnMainThread(onComplete, null, error != null ? MediaServicesError.DataNotAvailable(error.GetDescription()) : null); + } + }); + } + + public void AsRawMediaData(EventCallback onComplete) + { + m_nativeMediaContent.AsRawMediaData(new NativeMediaContentRawDataCallback() { + onSuccessCallback = (data, mime) => { + CallbackDispatcher.InvokeOnMainThread(onComplete, new RawMediaData(data.GetBytes(), mime), null); + }, + onFailureCallback = (error) => { + CallbackDispatcher.InvokeOnMainThread(onComplete, null, error != null ? MediaServicesError.DataNotAvailable(error.GetDescription()) : null); + } + }); + } + + public void AsTexture2D(EventCallback onComplete) + { + AsRawMediaData((rawData, error) => { + if(error == null) { + Texture2D texture = new TextureData(rawData.Bytes).GetTexture(); + CallbackDispatcher.InvokeOnMainThread(onComplete, texture, null); + + } else { + CallbackDispatcher.InvokeOnMainThread(onComplete, null, error); + } + + }); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/AssetMediaContent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/AssetMediaContent.cs.meta new file mode 100644 index 00000000..80006eb7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/AssetMediaContent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18ee8f11ae9a940c1a199ebe376fd0b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/Converter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/Converter.cs new file mode 100644 index 00000000..aedb9e9c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/Converter.cs @@ -0,0 +1,39 @@ +#if UNITY_ANDROID +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + internal static class Converter + { + public static GalleryAccessStatus from(NativeGalleryAccessStatus status) + { + switch (status) + { + case NativeGalleryAccessStatus.Authorized: + return GalleryAccessStatus.Authorized; + case NativeGalleryAccessStatus.Denied: + return GalleryAccessStatus.Denied; + case NativeGalleryAccessStatus.NotDetermined: + return GalleryAccessStatus.NotDetermined; + default: + throw VBException.SwitchCaseNotImplemented(status); + } + } + + public static CameraAccessStatus from(NativeCameraAccessStatus status) + { + switch (status) + { + case NativeCameraAccessStatus.Authorized: + return CameraAccessStatus.Authorized; + case NativeCameraAccessStatus.Denied: + return CameraAccessStatus.Denied; + case NativeCameraAccessStatus.NotDetermined: + return CameraAccessStatus.NotDetermined; + default: + throw VBException.SwitchCaseNotImplemented(status); + } + } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/Converter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/Converter.cs.meta new file mode 100644 index 00000000..36cf0be8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d792a41cfd394668b64b14be4e07f7a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/MediaServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/MediaServicesInterface.cs new file mode 100644 index 00000000..c84ced04 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/MediaServicesInterface.cs @@ -0,0 +1,123 @@ +#if UNITY_ANDROID +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + + public sealed class MediaServicesInterface : NativeMediaServicesInterfaceBase + { +#region Fields + + private NativeMediaServices m_instance; + +#endregion +#region Constructors + + public MediaServicesInterface() + : base(isAvailable: true) + { + m_instance = new NativeMediaServices(NativeUnityPluginUtility.GetContext()); + } + +#endregion + +#region Base class methods + + public override GalleryAccessStatus GetGalleryAccessStatus(GalleryAccessMode mode) + { + if(mode == GalleryAccessMode.Read) + { + return Converter.from(m_instance.GetGalleryReadAccessStatus()); + } + else + { + return Converter.from(m_instance.GetGalleryReadWriteAccessStatus()); + } + } + + public override CameraAccessStatus GetCameraAccessStatus() + { + return Converter.from(m_instance.GetCameraAccessStatus()); + } + + public override void SelectMediaContent(MediaContentSelectOptions options, SelectMediaContentInternalCallback callback) + { + m_instance.SelectMediaContent(options.Title, options.AllowedMimeType, options.MaxAllowed, new NativeMediaContentSelectionListener() + { + onSuccessCallback = (assets) => + { + List list = new List(); + foreach(NativeMediaContentBase content in assets.Get()) + { + list.Add(new AssetMediaContent(content)); + } + + callback(list.ToArray(), null); + + }, + onFailureCallback = (error) => + { + callback(null, new Error(null, error.GetCode(), error.GetDescription())); + } + }); + } + + public override void CaptureMediaContent(MediaContentCaptureOptions options, CaptureMediaContentInternalCallback callback) + { + m_instance.CaptureMediaContent(captureType: (NativeMediaCaptureType)options.CaptureType, title: options.Title, fileName: "captured_media" ,new NativeMediaContentCaptureListener() + { + onSuccessCallback = (asset) => + { + //FinishLoadingAsset(assets, callback); + callback(new AssetMediaContent(asset), null); + }, + onFailureCallback = (error) => + { + callback(null, new Error(null, error.GetCode(), error.GetDescription())); + } + }); + } + + public override void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, SaveMediaContentInternalCallback callback) + { + m_instance.SaveMediaContent(new NativeBytesWrapper(data), mimeType, options.DirectoryName, options.FileName, new NativeMediaContentSaveListener() + { + onSuccessCallback = () => callback(true, null), + onFailureCallback = (error) => + { + callback(false, new Error(null, error.GetCode(), error.GetDescription())); + } + }); + } + +#endregion + +#region Utility methods + + private void FinishLoadingAsset(NativeAsset asset, SelectImageInternalCallback callback) + { + Debug.Log("Loading asset..."); + asset.Load(new NativeLoadAssetListener() + { + onSuccessCallback = (data) => + { + Debug.Log("Loading asset successful... : " + data + "Bytes : " + data.GetBytes()); + callback(data.GetBytes(), null); + }, + onFailureCallback = (error) => + { + Debug.Log("Loading asset failed... : " + error); + + callback(null, MediaServicesError.DataNotAvailable(error)); } + }); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/MediaServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/MediaServicesInterface.cs.meta new file mode 100644 index 00000000..1a814321 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/MediaServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2bc12492094d4ae3b28b28c4191898b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeCameraAccessStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeCameraAccessStatus.cs new file mode 100644 index 00000000..2513df98 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeCameraAccessStatus.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public enum NativeCameraAccessStatus + { + Denied = 0, + Authorized = 1, + NotDetermined = 2 + } + public class NativeCameraAccessStatusHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.mediaservices.CameraAccessStatus"; + + public static AndroidJavaObject CreateWithValue(NativeCameraAccessStatus value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeCameraAccessStatusHelper : NativeCameraAccessStatusHelper][Method(CreateWithValue) : NativeCameraAccessStatus]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeCameraAccessStatus ReadFromValue(AndroidJavaObject value) + { + return (NativeCameraAccessStatus)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeCameraAccessStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeCameraAccessStatus.cs.meta new file mode 100644 index 00000000..944db3be --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeCameraAccessStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 325d9983e881f481f80f81a0d46d2530 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeGalleryAccessStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeGalleryAccessStatus.cs new file mode 100644 index 00000000..07da47ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeGalleryAccessStatus.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public enum NativeGalleryAccessStatus + { + Denied = 0, + Authorized = 1, + NotDetermined = 2 + } + public class NativeGalleryAccessStatusHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.mediaservices.GalleryAccessStatus"; + + public static AndroidJavaObject CreateWithValue(NativeGalleryAccessStatus value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeGalleryAccessStatusHelper : NativeGalleryAccessStatusHelper][Method(CreateWithValue) : NativeGalleryAccessStatus]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeGalleryAccessStatus ReadFromValue(AndroidJavaObject value) + { + return (NativeGalleryAccessStatus)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeGalleryAccessStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeGalleryAccessStatus.cs.meta new file mode 100644 index 00000000..9016fd98 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeGalleryAccessStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fcb8190a0f91145d7a035af680870cb6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaCaptureType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaCaptureType.cs new file mode 100644 index 00000000..8391b6b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaCaptureType.cs @@ -0,0 +1,33 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public enum NativeMediaCaptureType + { + Image = 0, + Video = 1 + } + public class NativeMediaCaptureTypeHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.mediaservices.MediaCaptureType"; + + public static AndroidJavaObject CreateWithValue(NativeMediaCaptureType value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeMediaCaptureTypeHelper : NativeMediaCaptureTypeHelper][Method(CreateWithValue) : NativeMediaCaptureType]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeMediaCaptureType ReadFromValue(AndroidJavaObject value) + { + return (NativeMediaCaptureType)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaCaptureType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaCaptureType.cs.meta new file mode 100644 index 00000000..793dbd0d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaCaptureType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa269b6c89d574182a6ba3d737983c16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentBase.cs new file mode 100644 index 00000000..091b1db7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentBase.cs @@ -0,0 +1,73 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class NativeMediaContentBase : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeMediaContentBase(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeMediaContentBase(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeMediaContentBase() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeMediaContentBase() + { + DebugLogger.Log("Disposing NativeMediaContentBase"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public void AsFilePath(string destinationDirectory, string fileName, NativeMediaContentPathCallback onComplete) + { + Call(Native.Method.kAsFilePath, destinationDirectory, fileName, onComplete); + } + public void AsRawMediaData(NativeMediaContentRawDataCallback onComplete) + { + Call(Native.Method.kAsRawMediaData, onComplete); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.mediaservices.MediaContentBase"; + + internal class Method + { + internal const string kAsRawMediaData = "AsRawMediaData"; + internal const string kAsFilePath = "AsFilePath"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentBase.cs.meta new file mode 100644 index 00000000..08a3cc7f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 613eb9a39704f4a76896ca777ff76bf6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentCaptureListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentCaptureListener.cs new file mode 100644 index 00000000..37c3a942 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentCaptureListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class NativeMediaContentCaptureListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeMediaContentBase asset); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeMediaContentCaptureListener() : base("com.voxelbusters.essentialkit.mediaservices.IMediaServices$IMediaContentCaptureListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject asset) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "asset" + " : " + asset +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeMediaContentBase(asset)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentCaptureListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentCaptureListener.cs.meta new file mode 100644 index 00000000..2473ce7d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentCaptureListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba7154b91ad3343348fc9a83deab9113 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentPathCallback.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentPathCallback.cs new file mode 100644 index 00000000..d464e4e9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentPathCallback.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class NativeMediaContentPathCallback : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(string path); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeMediaContentPathCallback() : base("com.voxelbusters.essentialkit.mediaservices.IMediaServices$IMediaContentPathCallback") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(string path) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "path" + " : " + path +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(path); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentPathCallback.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentPathCallback.cs.meta new file mode 100644 index 00000000..7653f2ab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentPathCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54f59d5e899ad408cb1b173ce140521c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentRawDataCallback.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentRawDataCallback.cs new file mode 100644 index 00000000..630ce3ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentRawDataCallback.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class NativeMediaContentRawDataCallback : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeBytesWrapper data, string mime); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeMediaContentRawDataCallback() : base("com.voxelbusters.essentialkit.mediaservices.IMediaServices$IMediaContentRawDataCallback") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject data, string mime) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "data" + " : " + data +"]" + " " + "[" + "mime" + " : " + mime +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeBytesWrapper(data), mime); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentRawDataCallback.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentRawDataCallback.cs.meta new file mode 100644 index 00000000..afe16b2c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentRawDataCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6be798e6b7a0479b8f8faab3d24a2a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSaveListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSaveListener.cs new file mode 100644 index 00000000..f2f1d6a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSaveListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class NativeMediaContentSaveListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeMediaContentSaveListener() : base("com.voxelbusters.essentialkit.mediaservices.IMediaServices$IMediaContentSaveListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSaveListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSaveListener.cs.meta new file mode 100644 index 00000000..f3eb4da5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSaveListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 003bd960b237145f6a794a6fb0e54955 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSelectionListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSelectionListener.cs new file mode 100644 index 00000000..0352f45a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSelectionListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class NativeMediaContentSelectionListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeList assets); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeMediaContentSelectionListener() : base("com.voxelbusters.essentialkit.mediaservices.IMediaServices$IMediaContentSelectionListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject assets) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "assets" + " : " + assets +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(assets)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSelectionListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSelectionListener.cs.meta new file mode 100644 index 00000000..19ce4d52 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaContentSelectionListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 135080fd9b6184e0c8c352835d92da45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaServices.cs new file mode 100644 index 00000000..68116df6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaServices.cs @@ -0,0 +1,125 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.MediaServicesCore.Android +{ + public class NativeMediaServices : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeMediaServices(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public void CaptureMediaContent(NativeMediaCaptureType captureType, string title, string fileName, NativeMediaContentCaptureListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMediaServices][Method(RunOnUiThread) : CaptureMediaContent]"); +#endif + Call(Native.Method.kCaptureMediaContent, new object[] { NativeMediaCaptureTypeHelper.CreateWithValue(captureType), title, fileName, listener } ); + }); + } + public NativeCameraAccessStatus GetCameraAccessStatus() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMediaServices][Method : GetCameraAccessStatus]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kGetCameraAccessStatus); + NativeCameraAccessStatus data = NativeCameraAccessStatusHelper.ReadFromValue(nativeObj); + return data; + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMediaServices][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public NativeGalleryAccessStatus GetGalleryReadAccessStatus() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMediaServices][Method : GetGalleryReadAccessStatus]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kGetGalleryReadAccessStatus); + NativeGalleryAccessStatus data = NativeGalleryAccessStatusHelper.ReadFromValue(nativeObj); + return data; + } + public NativeGalleryAccessStatus GetGalleryReadWriteAccessStatus() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMediaServices][Method : GetGalleryReadWriteAccessStatus]"); +#endif + AndroidJavaObject nativeObj = Call(Native.Method.kGetGalleryReadWriteAccessStatus); + NativeGalleryAccessStatus data = NativeGalleryAccessStatusHelper.ReadFromValue(nativeObj); + return data; + } + public void SaveMediaContent(NativeBytesWrapper data, string mimeType, string targetDirectoryName, string targetFileName, NativeMediaContentSaveListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMediaServices][Method(RunOnUiThread) : SaveMediaContent]"); +#endif + Call(Native.Method.kSaveMediaContent, new object[] { data.NativeObject, mimeType, targetDirectoryName, targetFileName, listener } ); + }); + } + public void SelectMediaContent(string title, string mimeType, int maxAllowed, NativeMediaContentSelectionListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMediaServices][Method(RunOnUiThread) : SelectMediaContent]"); +#endif + Call(Native.Method.kSelectMediaContent, new object[] { title, mimeType, maxAllowed, listener } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.mediaservices.MediaServices"; + + internal class Method + { + internal const string kCaptureMediaContent = "captureMediaContent"; + internal const string kGetGalleryReadWriteAccessStatus = "getGalleryReadWriteAccessStatus"; + internal const string kSelectMediaContent = "selectMediaContent"; + internal const string kGetCameraAccessStatus = "getCameraAccessStatus"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kGetGalleryReadAccessStatus = "getGalleryReadAccessStatus"; + internal const string kSaveMediaContent = "saveMediaContent"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaServices.cs.meta new file mode 100644 index 00000000..6e171e29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/MediaServices/NativeMediaServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3ca2ecd0c48a4d14ac634a0d2010010 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI.meta new file mode 100644 index 00000000..c783adac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 020372ef5d38443909c97873157ce2bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/AlertDialog.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/AlertDialog.cs new file mode 100644 index 00000000..d6225ea8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/AlertDialog.cs @@ -0,0 +1,76 @@ +#if UNITY_ANDROID +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.NativeUICore.Android; + +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + internal sealed class AlertDialog : NativeAlertDialogInterfaceBase, INativeAlertDialogInterface + { + #region Fields + + private NativeAlert m_instance; + + #endregion + + #region Constructors + + public AlertDialog(AlertDialogStyle alertStyle) + { + m_instance = new NativeAlert(NativeUnityPluginUtility.GetContext()); + } + + ~AlertDialog() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + public override void SetTitle(string value) + { + m_instance.SetTitle(value); + } + + public override string GetTitle() + { + return m_instance.GetTitle(); + } + + public override void SetMessage(string value) + { + m_instance.SetMessage(value); + } + + public override string GetMessage() + { + return m_instance.GetMessage(); + } + + public override void AddButton(string text, bool isCancelType) + { + m_instance.AddButton(text, isCancelType); + } + + public override void Show() + { + m_instance.Show(new NativeButtonClickListener() + { + onClickCallback = (index) => + { + Dismiss(); //Fix for getting the focus back to unity activity. Unity activity going to non-focus when a dialog is displayed. If the dialog takes out of the app, unity goes to paused state and never returns back as the callback triggered by CallbackDispatcher is in LateUpdate. + SendButtonClickEvent(index); + } + }); + } + + public override void Dismiss() + { + m_instance.Dismiss(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/AlertDialog.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/AlertDialog.cs.meta new file mode 100644 index 00000000..6fb5f5b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/AlertDialog.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a204edf13d1794efea09c568f1282bbd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/DateTimePicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/DateTimePicker.cs new file mode 100644 index 00000000..5d2682fe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/DateTimePicker.cs @@ -0,0 +1,160 @@ +#if UNITY_ANDROID +using System; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.NativeUICore.Android; + +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + internal sealed class DateTimePicker : NativeDatePickerInterfaceBase, INativeDatePickerInterface + { + #region Fields + + private NativeDatePicker m_datePicker; + private NativeTimePicker m_timePicker; + + private DateTime m_initialDate; + private DateTimeKind m_kind; + private DatePickerMode m_mode; + + #endregion + + #region Constructors + + public DateTimePicker(DatePickerMode mode) : base(mode) + { + m_mode = mode; + NativeContext context = NativeUnityPluginUtility.GetContext(); + + if(mode == DatePickerMode.Date || mode == DatePickerMode.DateAndTime) + { + m_datePicker = new NativeDatePicker(context); + } + + if (mode == DatePickerMode.Time || mode == DatePickerMode.DateAndTime) + { + m_timePicker = new NativeTimePicker(context); + } + } + + ~DateTimePicker() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + public override void SetInitialDate(DateTime? value) + { + if (value != null) + { + DateTime dateTime = value.GetValueOrDefault(); + m_initialDate = dateTime; + if (m_datePicker != null) + { + m_datePicker.SetValue(dateTime.Year, dateTime.Month - 1, dateTime.Day); + } + + if (m_timePicker != null) + { + m_timePicker.SetValue(dateTime.Hour, dateTime.Minute); + } + } + } + + public override void SetKind(DateTimeKind value) + { + m_kind = value; + if(m_kind != DateTimeKind.Local) + { + DebugLogger.LogWarning("On Android always uses Local(epoch)"); + } + + } + + public override void SetMaximumDate(DateTime? value) + { + if (value != null && m_datePicker != null) + { + NativeDate nativeMinDate = new NativeDate(); + nativeMinDate.SetDateTime(value.GetValueOrDefault()); + m_datePicker.SetMaxValue(nativeMinDate); + } + + if(m_timePicker != null) + { + DebugLogger.LogWarning("Not supported on Android"); + } + } + + public override void SetMinimumDate(DateTime? value) + { + if (value != null && m_datePicker != null) + { + NativeDate nativeMinDate = new NativeDate(); + nativeMinDate.SetDateTime(value.GetValueOrDefault()); + m_datePicker.SetMinValue(nativeMinDate); + } + + if (m_timePicker != null) + { + DebugLogger.LogWarning("Not supported on Android"); + } + } + + public override void Show() + { + if (m_mode == DatePickerMode.Date || m_mode == DatePickerMode.DateAndTime) + { + m_datePicker.SetListener(new NativeDatePickerListener() + { + onSuccessCallback = (int year, int month, int dayOfMonth) => + { + if (m_mode == DatePickerMode.Date) + { + SendCloseEvent(new DateTime(year, month + 1, dayOfMonth), null); + } + else + { + m_timePicker.SetListener(new NativeTimePickerListener() + { + onSuccessCallback = (int hourOfDay, int minutes) => + { + DebugLogger.Log("Hour of day : " + hourOfDay + " Minute : " + minutes); + DateTime dateTime = (m_initialDate != default(DateTime)) ? m_initialDate : DateTime.Now; + SendCloseEvent(new DateTime(year, month, dayOfMonth, hourOfDay, minutes, 0, dateTime.Kind), null); + } + + }); + m_timePicker.Show(); + } + }, + onCancelCallback = () => + { + SendCloseEvent(null, null); + } + }); + m_datePicker.Show(); + } + else + { + m_timePicker.SetListener(new NativeTimePickerListener() + { + onSuccessCallback = (int hourOfDay, int minutes) => + { + DebugLogger.Log("Hour of day : " + hourOfDay + " Minute : " + minutes); + DateTime dateTime = (m_initialDate != default(DateTime)) ? m_initialDate : DateTime.Now; + SendCloseEvent(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, hourOfDay, minutes, 0, dateTime.Kind), null); + } + + }); + m_timePicker.Show(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/DateTimePicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/DateTimePicker.cs.meta new file mode 100644 index 00000000..cdfb1e7d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/DateTimePicker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc26b7e12c86e4481aca7328e698e231 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeAlert.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeAlert.cs new file mode 100644 index 00000000..f304a79d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeAlert.cs @@ -0,0 +1,125 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + public class NativeAlert : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeAlert(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public void AddButton(string text, bool isCancelType) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method : AddButton]"); +#endif + Call(Native.Method.kAddButton, new object[] { text, isCancelType } ); + } + public void Dismiss() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method(RunOnUiThread) : Dismiss]"); +#endif + Call(Native.Method.kDismiss); + }); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public string GetMessage() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method : GetMessage]"); +#endif + return Call(Native.Method.kGetMessage); + } + public string GetTitle() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method : GetTitle]"); +#endif + return Call(Native.Method.kGetTitle); + } + public void SetMessage(string message) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method : SetMessage]"); +#endif + Call(Native.Method.kSetMessage, new object[] { message } ); + } + public void SetTitle(string title) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method : SetTitle]"); +#endif + Call(Native.Method.kSetTitle, new object[] { title } ); + } + public void Show(NativeButtonClickListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeAlert][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow, new object[] { listener } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.uiviews.Alert"; + + internal class Method + { + internal const string kGetTitle = "getTitle"; + internal const string kSetTitle = "setTitle"; + internal const string kDismiss = "dismiss"; + internal const string kSetMessage = "setMessage"; + internal const string kAddButton = "addButton"; + internal const string kGetMessage = "getMessage"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeAlert.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeAlert.cs.meta new file mode 100644 index 00000000..24020da2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeAlert.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 546f1dc26141d41c0a8674d9fc43bf97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeButtonClickListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeButtonClickListener.cs new file mode 100644 index 00000000..b69b5b7f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeButtonClickListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + public class NativeButtonClickListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnClickDelegate(int index); + + #endregion + + #region Public callbacks + + public OnClickDelegate onClickCallback; + + #endregion + + + #region Constructors + + public NativeButtonClickListener() : base("com.voxelbusters.essentialkit.uiviews.IUiViews$IButtonClickListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onClick(int index) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onClick" + " " + "[" + "index" + " : " + index +"]"); +#endif + if(onClickCallback != null) + { + onClickCallback(index); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeButtonClickListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeButtonClickListener.cs.meta new file mode 100644 index 00000000..7c2524c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeButtonClickListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a88e520fde896418fbc983e503100436 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePicker.cs new file mode 100644 index 00000000..6c594731 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePicker.cs @@ -0,0 +1,113 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + public class NativeDatePicker : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeDatePicker(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDatePicker][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void SetListener(NativeDatePickerListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDatePicker][Method : SetListener]"); +#endif + Call(Native.Method.kSetListener, new object[] { listener } ); + } + public void SetMaxValue(NativeDate maxValue) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDatePicker][Method(RunOnUiThread) : SetMaxValue]"); +#endif + Call(Native.Method.kSetMaxValue, new object[] { maxValue.NativeObject } ); + }); + } + public void SetMinValue(NativeDate minValue) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDatePicker][Method(RunOnUiThread) : SetMinValue]"); +#endif + Call(Native.Method.kSetMinValue, new object[] { minValue.NativeObject } ); + }); + } + public void SetValue(int year, int month, int dayOfMonth) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDatePicker][Method(RunOnUiThread) : SetValue]"); +#endif + Call(Native.Method.kSetValue, new object[] { year, month, dayOfMonth } ); + }); + } + public void Show() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeDatePicker][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.uiviews.DatePicker"; + + internal class Method + { + internal const string kSetValue = "setValue"; + internal const string kSetMinValue = "setMinValue"; + internal const string kSetMaxValue = "setMaxValue"; + internal const string kSetListener = "setListener"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePicker.cs.meta new file mode 100644 index 00000000..2cf583cb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePicker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0174f33e980df4a22abec67ab0e44357 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePickerListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePickerListener.cs new file mode 100644 index 00000000..f57b0177 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePickerListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + public class NativeDatePickerListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnCancelDelegate(); + public delegate void OnSuccessDelegate(int year, int month, int dayOfMonth); + + #endregion + + #region Public callbacks + + public OnCancelDelegate onCancelCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeDatePickerListener() : base("com.voxelbusters.essentialkit.uiviews.IUiViews$IDatePickerListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onCancel() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onCancel" ); +#endif + if(onCancelCallback != null) + { + onCancelCallback(); + } + } + public void onSuccess(int year, int month, int dayOfMonth) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "year" + " : " + year +"]" + " " + "[" + "month" + " : " + month +"]" + " " + "[" + "dayOfMonth" + " : " + dayOfMonth +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(year, month, dayOfMonth); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePickerListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePickerListener.cs.meta new file mode 100644 index 00000000..0fd4e644 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeDatePickerListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c7eada8c46bd47a08fd97360e473f09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePicker.cs new file mode 100644 index 00000000..4748db14 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePicker.cs @@ -0,0 +1,93 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + public class NativeTimePicker : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeTimePicker(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeTimePicker][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void SetListener(NativeTimePickerListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeTimePicker][Method(RunOnUiThread) : SetListener]"); +#endif + Call(Native.Method.kSetListener, new object[] { listener } ); + }); + } + public void SetValue(int hourOfDay, int minutes) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeTimePicker][Method : SetValue]"); +#endif + Call(Native.Method.kSetValue, new object[] { hourOfDay, minutes } ); + } + public void Show() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeTimePicker][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.uiviews.TimePicker"; + + internal class Method + { + internal const string kSetValue = "setValue"; + internal const string kSetListener = "setListener"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePicker.cs.meta new file mode 100644 index 00000000..ee4a1589 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePicker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f537ac1a9c81a479391114604554a3f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePickerListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePickerListener.cs new file mode 100644 index 00000000..4cdc7748 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePickerListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + public class NativeTimePickerListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnCancelDelegate(); + public delegate void OnSuccessDelegate(int hourOfDay, int minutes); + + #endregion + + #region Public callbacks + + public OnCancelDelegate onCancelCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeTimePickerListener() : base("com.voxelbusters.essentialkit.uiviews.IUiViews$ITimePickerListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onCancel() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onCancel" ); +#endif + if(onCancelCallback != null) + { + onCancelCallback(); + } + } + public void onSuccess(int hourOfDay, int minutes) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "hourOfDay" + " : " + hourOfDay +"]" + " " + "[" + "minutes" + " : " + minutes +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(hourOfDay, minutes); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePickerListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePickerListener.cs.meta new file mode 100644 index 00000000..c89c0af9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/NativeTimePickerListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 78d061f2a56024916b419ad16e4eaeed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/UIInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/UIInterface.cs new file mode 100644 index 00000000..3da42156 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/UIInterface.cs @@ -0,0 +1,31 @@ +#if UNITY_ANDROID +namespace VoxelBusters.EssentialKit.NativeUICore.Android +{ + public sealed class UIInterface : NativeUIInterfaceBase, INativeUIInterface + { + #region Constructors + + public UIInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override INativeAlertDialogInterface CreateAlertDialog(AlertDialogStyle style) + { + return new AlertDialog(style); + } + + public override INativeDatePickerInterface CreateDatePicker(DatePickerMode mode) + { + /*var unityUIInterface = new UnityUIInterface(); + return unityUIInterface.CreateDatePicker(mode);*/ + return new DateTimePicker(mode); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/UIInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/UIInterface.cs.meta new file mode 100644 index 00000000..56b0ec19 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NativeUI/UIInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74208e093b44546ecba5b71e863accdf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices.meta new file mode 100644 index 00000000..638cba94 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19af3c407d33f4b8cb896ed99aa94a01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkChangeListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkChangeListener.cs new file mode 100644 index 00000000..19dea144 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkChangeListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore.Android +{ + public class NativeNetworkChangeListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnChangeDelegate(bool isConnected); + + #endregion + + #region Public callbacks + + public OnChangeDelegate onChangeCallback; + + #endregion + + + #region Constructors + + public NativeNetworkChangeListener() : base("com.voxelbusters.essentialkit.networkservices.INetworkServices$INetworkChangeListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onChange(bool isConnected) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onChange" + " " + "[" + "isConnected" + " : " + isConnected +"]"); +#endif + if(onChangeCallback != null) + { + onChangeCallback(isConnected); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkChangeListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkChangeListener.cs.meta new file mode 100644 index 00000000..a36ed1b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkChangeListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3812e05fda054bcc98eec2093c2e50d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkConnectivity.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkConnectivity.cs new file mode 100644 index 00000000..6c041887 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkConnectivity.cs @@ -0,0 +1,81 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.NetworkServicesCore.Android +{ + public class NativeNetworkConnectivity : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + + #region Constructor + + public NativeNetworkConnectivity(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNetworkConnectivity][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void SetListener(NativeNetworkChangeListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNetworkConnectivity][Method : SetListener]"); +#endif + Call(Native.Method.kSetListener, new object[] { listener } ); + } + public void Start(NativeNetworkPollSettings settings) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNetworkConnectivity][Method : Start]"); +#endif + Call(Native.Method.kStart, new object[] { settings.NativeObject } ); + } + public void Stop() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNetworkConnectivity][Method : Stop]"); +#endif + Call(Native.Method.kStop); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.networkservices.NetworkConnectivity"; + + internal class Method + { + internal const string kSetListener = "setListener"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kStart = "start"; + internal const string kStop = "stop"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkConnectivity.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkConnectivity.cs.meta new file mode 100644 index 00000000..cb27648a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkConnectivity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 592fc5411160a444c828d9ed4685f937 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkPollSettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkPollSettings.cs new file mode 100644 index 00000000..4d28ea75 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkPollSettings.cs @@ -0,0 +1,113 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore.Android +{ + public class NativeNetworkPollSettings : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeNetworkPollSettings(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeNetworkPollSettings(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeNetworkPollSettings() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeNetworkPollSettings() + { + DebugLogger.Log("Disposing NativeNetworkPollSettings"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public long GetConnectionTimeOutPeriod() + { + return Call(Native.Method.kGetConnectionTimeOutPeriod); + } + public string GetIpAddress() + { + return Call(Native.Method.kGetIpAddress); + } + public int GetMaxRetryCount() + { + return Call(Native.Method.kGetMaxRetryCount); + } + public int GetPortNumber() + { + return Call(Native.Method.kGetPortNumber); + } + public float GetTimeGapBetweenPolls() + { + return Call(Native.Method.kGetTimeGapBetweenPolls); + } + public void SetConnectionTimeOutPeriod(long timeOutPeriod) + { + Call(Native.Method.kSetConnectionTimeOutPeriod, timeOutPeriod); + } + public void SetIpAddress(string ipAddress) + { + Call(Native.Method.kSetIpAddress, ipAddress); + } + public void SetMaxRetryCount(int retryCount) + { + Call(Native.Method.kSetMaxRetryCount, retryCount); + } + public void SetPortNumber(int port) + { + Call(Native.Method.kSetPortNumber, port); + } + public void SetTimeGapBetweenPolls(float timeGap) + { + Call(Native.Method.kSetTimeGapBetweenPolls, timeGap); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.networkservices.NetworkPollSettings"; + + internal class Method + { + internal const string kSetIpAddress = "setIpAddress"; + internal const string kGetIpAddress = "getIpAddress"; + internal const string kGetTimeGapBetweenPolls = "getTimeGapBetweenPolls"; + internal const string kGetPortNumber = "getPortNumber"; + internal const string kSetTimeGapBetweenPolls = "setTimeGapBetweenPolls"; + internal const string kSetPortNumber = "setPortNumber"; + internal const string kGetConnectionTimeOutPeriod = "getConnectionTimeOutPeriod"; + internal const string kSetConnectionTimeOutPeriod = "setConnectionTimeOutPeriod"; + internal const string kGetMaxRetryCount = "getMaxRetryCount"; + internal const string kSetMaxRetryCount = "setMaxRetryCount"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkPollSettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkPollSettings.cs.meta new file mode 100644 index 00000000..455431ab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NativeNetworkPollSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ab557c894a494bed9ec480c13501794 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NetworkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NetworkServicesInterface.cs new file mode 100644 index 00000000..587cf621 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NetworkServicesInterface.cs @@ -0,0 +1,58 @@ +#if UNITY_ANDROID + +using System; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore.Android +{ + public sealed class NetworkServicesInterface : NativeNetworkServicesInterfaceBase, INativeNetworkServicesInterface + { + #region Static fields + + private NativeNetworkConnectivity m_instance; + + #endregion + + #region Constructors + + public NetworkServicesInterface() + : base(isAvailable: true) + { + m_instance = new NativeNetworkConnectivity(NativeUnityPluginUtility.GetContext()); + m_instance.SetListener(new NativeNetworkChangeListener() + { + onChangeCallback = (bool isConnected) => + { + SendInternetConnectivityChangeEvent(isConnected); + SendHostReachabilityChangeEvent(isConnected); + //Check : Provide separate internet and host reachabilities + } + }); + } + + #endregion + + #region Base class methods + + public override void StartNotifier() + { + NetworkServicesUnitySettings settings = NetworkServices.UnitySettings; + NativeNetworkPollSettings nativeNetworkPollSettings = new NativeNetworkPollSettings(); + nativeNetworkPollSettings.SetIpAddress(settings.HostAddress.IpV4); + nativeNetworkPollSettings.SetMaxRetryCount(settings.PingSettings.MaxRetryCount); + nativeNetworkPollSettings.SetPortNumber(settings.PingSettings.Port);//53 for DNS, 80 for normal + nativeNetworkPollSettings.SetTimeGapBetweenPolls(settings.PingSettings.TimeGapBetweenPolling); + nativeNetworkPollSettings.SetConnectionTimeOutPeriod((long)Math.Round(settings.PingSettings.TimeOutPeriod)); + + m_instance.Start(nativeNetworkPollSettings); + } + + public override void StopNotifier() + { + m_instance.Stop(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NetworkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NetworkServicesInterface.cs.meta new file mode 100644 index 00000000..c005c3fe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NetworkServices/NetworkServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d86d0e182243f4d5aaca5cead311b9db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices.meta new file mode 100644 index 00000000..90de2293 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22e51db62238841f484a9b407f4d1a83 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/MutableNotification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/MutableNotification.cs new file mode 100644 index 00000000..8ae7ad7b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/MutableNotification.cs @@ -0,0 +1,139 @@ +#if UNITY_ANDROID +using System; +using System.Text; +using System.Collections; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + internal sealed class MutableNotification : Notification, IMutableNotification + { + +#region Fields + + private NativeNotificationBuilder m_instance; + +#endregion + +#region Constructors + + public MutableNotification(string notificationId) + : base(notificationId) + { + m_instance = new NativeNotificationBuilder(notificationId); + } + + ~MutableNotification() + { + Dispose(false); + } + +#endregion + +#region INotificationPropertySetter implementation + + public void SetTitle(string value) + { + m_instance.SetTitle(Convert.ToBase64String(Encoding.UTF8.GetBytes(value))); + } + + public void SetSubtitle(string value) + { + //No operation + DebugLogger.LogWarning("This value is ignored on this platform"); + } + + public void SetBody(string value) + { + m_instance.SetBody(Convert.ToBase64String(Encoding.UTF8.GetBytes(value))); + } + + public void SetBadge(int value) + { + m_instance.SetBadge(value); + } + + public void SetUserInfo(IDictionary value) + { + string jsonString = ExternalServiceProvider.JsonServiceProvider.ToJson(value); + m_instance.SetUserInfo(jsonString); + } + + public void SetSoundFileName(string value) + { + m_instance.SetSoundFileName(value); + } + + public void SetIosProperties(NotificationIosProperties value) + { } + + public void SetAndroidProperties(NotificationAndroidProperties value) + { + m_instance.SetTag(value.Tag); + m_instance.SetLargeIcon(value.LargeIcon); + m_instance.SetBigPicture(value.BigPicture); + } + + public void SetTrigger(INotificationTrigger trigger) + { + if(trigger is TimeIntervalNotificationTrigger) + { + TimeIntervalNotificationTrigger timeTrigger = (TimeIntervalNotificationTrigger)trigger; + NativeTimeIntervalNotificationTrigger nativeTrigger = new NativeTimeIntervalNotificationTrigger((long)(timeTrigger.TimeInterval * 1000), timeTrigger.Repeats); + m_instance.SetTrigger(nativeTrigger); + } + else if (trigger is CalendarNotificationTrigger) + { + CalendarNotificationTrigger calenderTrigger = (CalendarNotificationTrigger)trigger; + NativeCalendarNotificationTrigger nativeTrigger = GetNativeCalendarNotificationTrigger(calenderTrigger); + m_instance.SetTrigger(nativeTrigger); + } + else if(trigger is LocationNotificationTrigger) + { + LocationNotificationTrigger locationTrigger = (LocationNotificationTrigger)trigger; + NativeLocationNotificationTrigger nativeTrigger = new NativeLocationNotificationTrigger(locationTrigger.Region.Center.Latitude, locationTrigger.Region.Center.Longitude, locationTrigger.Region.Radius, locationTrigger.Repeats); + nativeTrigger.SetNotifyOnEntry(locationTrigger.NotifyOnEntry); + nativeTrigger.SetNotifyOnExit(locationTrigger.NotifyOnExit); + m_instance.SetTrigger(nativeTrigger); + } + else + { + throw VBException.NotImplemented("Not implemented on Android : " + trigger.GetType()); + } + } + + public NativeNotification Build() + { + return m_instance.Build(); + } + + private NativeCalendarNotificationTrigger GetNativeCalendarNotificationTrigger(CalendarNotificationTrigger trigger) + { + var dateComponents = trigger.DateComponents; + var nativeTrigger = new NativeCalendarNotificationTrigger((int)dateComponents.Calendar, trigger.Repeats); + nativeTrigger.SetNanosecond(dateComponents.Nanosecond); + nativeTrigger.SetSecond(dateComponents.Second); + nativeTrigger.SetMinute(dateComponents.Minute); + nativeTrigger.SetHour(dateComponents.Hour); + nativeTrigger.SetDay(dateComponents.Day); + nativeTrigger.SetMonth(dateComponents.Month); + nativeTrigger.SetYear(dateComponents.Year); + nativeTrigger.SetWeekday(dateComponents.DayOfWeek); + nativeTrigger.SetWeekOfMonth(dateComponents.WeekOfMonth); + nativeTrigger.SetWeekOfYear(dateComponents.WeekOfYear); + + return nativeTrigger; + } + + public void SetPriority(NotificationPriority value) + { + m_instance.SetPriority((NativeNotificationPriority) value); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/MutableNotification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/MutableNotification.cs.meta new file mode 100644 index 00000000..a7b6d3a5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/MutableNotification.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 356dc62bcc55840e1b3bee5c819ce69b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarNotificationTrigger.cs new file mode 100644 index 00000000..dd72e63e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarNotificationTrigger.cs @@ -0,0 +1,205 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeCalendarNotificationTrigger : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public bool Repeat + { + get + { + return Get("repeat"); + } + + set + { + Set("repeat", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeCalendarNotificationTrigger(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeCalendarNotificationTrigger(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeCalendarNotificationTrigger(int calendarType, bool repeat) : base(Native.kClassName ,calendarType, repeat) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeCalendarNotificationTrigger() + { + DebugLogger.Log("Disposing NativeCalendarNotificationTrigger"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static NativeCalendarNotificationTrigger FromJson(NativeJSONObject jsonObject) + { + AndroidJavaObject nativeObj = GetClass().CallStatic(Native.Method.kFromJson, jsonObject.NativeObject); + NativeCalendarNotificationTrigger data = new NativeCalendarNotificationTrigger(nativeObj); + return data; + } + + #endregion + #region Public methods + + public int GetCalendarType() + { + return Call(Native.Method.kGetCalendarType); + } + public int GetDay() + { + return Call(Native.Method.kGetDay); + } + public int GetHour() + { + return Call(Native.Method.kGetHour); + } + public int GetMinute() + { + return Call(Native.Method.kGetMinute); + } + public int GetMonth() + { + return Call(Native.Method.kGetMonth); + } + public int GetNanosecond() + { + return Call(Native.Method.kGetNanosecond); + } + public NativeDate GetNextTriggerDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetNextTriggerDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public int GetSecond() + { + return Call(Native.Method.kGetSecond); + } + public int GetWeekOfMonth() + { + return Call(Native.Method.kGetWeekOfMonth); + } + public int GetWeekOfYear() + { + return Call(Native.Method.kGetWeekOfYear); + } + public int GetWeekday() + { + return Call(Native.Method.kGetWeekday); + } + public int GetYear() + { + return Call(Native.Method.kGetYear); + } + public void SetDay(int day) + { + Call(Native.Method.kSetDay, day); + } + public void SetHour(int hour) + { + Call(Native.Method.kSetHour, hour); + } + public void SetMinute(int minute) + { + Call(Native.Method.kSetMinute, minute); + } + public void SetMonth(int month) + { + Call(Native.Method.kSetMonth, month); + } + public void SetNanosecond(int nanosecond) + { + Call(Native.Method.kSetNanosecond, nanosecond); + } + public void SetSecond(int second) + { + Call(Native.Method.kSetSecond, second); + } + public void SetWeekOfMonth(int weekOfMonth) + { + Call(Native.Method.kSetWeekOfMonth, weekOfMonth); + } + public void SetWeekOfYear(int weekOfYear) + { + Call(Native.Method.kSetWeekOfYear, weekOfYear); + } + public void SetWeekday(int weekday) + { + Call(Native.Method.kSetWeekday, weekday); + } + public void SetYear(int year) + { + Call(Native.Method.kSetYear, year); + } + public NativeJSONObject ToJson() + { + AndroidJavaObject nativeObj = Call(Native.Method.kToJson); + NativeJSONObject data = new NativeJSONObject(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.CalendarNotificationTrigger"; + + internal class Method + { + internal const string kGetCalendarType = "GetCalendarType"; + internal const string kSetMonth = "setMonth"; + internal const string kFromJson = "fromJson"; + internal const string kGetMonth = "getMonth"; + internal const string kGetNanosecond = "getNanosecond"; + internal const string kGetWeekOfYear = "getWeekOfYear"; + internal const string kSetNanosecond = "setNanosecond"; + internal const string kSetWeekOfYear = "setWeekOfYear"; + internal const string kSetHour = "setHour"; + internal const string kSetYear = "setYear"; + internal const string kGetHour = "getHour"; + internal const string kGetYear = "getYear"; + internal const string kGetNextTriggerDate = "getNextTriggerDate"; + internal const string kSetWeekday = "setWeekday"; + internal const string kSetMinute = "setMinute"; + internal const string kSetSecond = "setSecond"; + internal const string kGetWeekday = "getWeekday"; + internal const string kGetSecond = "getSecond"; + internal const string kGetMinute = "getMinute"; + internal const string kSetWeekOfMonth = "setWeekOfMonth"; + internal const string kGetWeekOfMonth = "getWeekOfMonth"; + internal const string kSetDay = "setDay"; + internal const string kToJson = "toJson"; + internal const string kGetDay = "getDay"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarNotificationTrigger.cs.meta new file mode 100644 index 00000000..b88e3970 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarNotificationTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0f7769bbce8c457188619b156c2fd39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarType.cs new file mode 100644 index 00000000..8f9b0225 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarType.cs @@ -0,0 +1,32 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public enum NativeCalendarType + { + Default = 0 + } + public class NativeCalendarTypeHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.CalendarType"; + + public static AndroidJavaObject CreateWithValue(NativeCalendarType value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeCalendarTypeHelper : NativeCalendarTypeHelper][Method(CreateWithValue) : NativeCalendarType]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeCalendarType ReadFromValue(AndroidJavaObject value) + { + return (NativeCalendarType)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarType.cs.meta new file mode 100644 index 00000000..a8e7c711 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeCalendarType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bac10cd79e62e45fca9f2dd73294e11d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeLocationNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeLocationNotificationTrigger.cs new file mode 100644 index 00000000..144566ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeLocationNotificationTrigger.cs @@ -0,0 +1,130 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeLocationNotificationTrigger : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public bool Repeat + { + get + { + return Get("repeat"); + } + + set + { + Set("repeat", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeLocationNotificationTrigger(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeLocationNotificationTrigger(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeLocationNotificationTrigger(double latitude, double longitude, float radius, bool repeat) : base(Native.kClassName ,latitude, longitude, radius, repeat) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeLocationNotificationTrigger() + { + DebugLogger.Log("Disposing NativeLocationNotificationTrigger"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static NativeLocationNotificationTrigger FromJson(NativeJSONObject jsonObject) + { + AndroidJavaObject nativeObj = GetClass().CallStatic(Native.Method.kFromJson, jsonObject.NativeObject); + NativeLocationNotificationTrigger data = new NativeLocationNotificationTrigger(nativeObj); + return data; + } + + #endregion + #region Public methods + + public void Build() + { + Call(Native.Method.kBuild); + } + public NativePointF GetLocationCoordinate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetLocationCoordinate); + NativePointF data = new NativePointF(nativeObj); + return data; + } + public float GetRadius() + { + return Call(Native.Method.kGetRadius); + } + public bool IsNotifyOnEntry() + { + return Call(Native.Method.kIsNotifyOnEntry); + } + public bool IsNotifyOnExit() + { + return Call(Native.Method.kIsNotifyOnExit); + } + public void SetNotifyOnEntry(bool notify) + { + Call(Native.Method.kSetNotifyOnEntry, notify); + } + public void SetNotifyOnExit(bool notify) + { + Call(Native.Method.kSetNotifyOnExit, notify); + } + public NativeJSONObject ToJson() + { + AndroidJavaObject nativeObj = Call(Native.Method.kToJson); + NativeJSONObject data = new NativeJSONObject(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.LocationNotificationTrigger"; + + internal class Method + { + internal const string kFromJson = "fromJson"; + internal const string kGetLocationCoordinate = "getLocationCoordinate"; + internal const string kGetRadius = "getRadius"; + internal const string kIsNotifyOnExit = "isNotifyOnExit"; + internal const string kSetNotifyOnExit = "setNotifyOnExit"; + internal const string kIsNotifyOnEntry = "isNotifyOnEntry"; + internal const string kToJson = "toJson"; + internal const string kSetNotifyOnEntry = "setNotifyOnEntry"; + internal const string kBuild = "build"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeLocationNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeLocationNotificationTrigger.cs.meta new file mode 100644 index 00000000..680013b9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeLocationNotificationTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 00b9717c841cf4ff88ee6e3233cb919d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotification.cs new file mode 100644 index 00000000..9e051bec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotification.cs @@ -0,0 +1,353 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeNotification : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public string Id + { + get + { + return Get("id"); + } + + set + { + Set("id", value); + } + } + + + public string ContentTitle + { + get + { + return Get("contentTitle"); + } + + set + { + Set("contentTitle", value); + } + } + + + public string TickerText + { + get + { + return Get("tickerText"); + } + + set + { + Set("tickerText", value); + } + } + + + public string ContentText + { + get + { + return Get("contentText"); + } + + set + { + Set("contentText", value); + } + } + + + public int Badge + { + get + { + return Get("badge"); + } + + set + { + Set("badge", value); + } + } + + + public string SoundFileName + { + get + { + return Get("soundFileName"); + } + + set + { + Set("soundFileName", value); + } + } + + + public string BigPicture + { + get + { + return Get("bigPicture"); + } + + set + { + Set("bigPicture", value); + } + } + + + public string Tag + { + get + { + return Get("tag"); + } + + set + { + Set("tag", value); + } + } + + + public string LargeIcon + { + get + { + return Get("largeIcon"); + } + + set + { + Set("largeIcon", value); + } + } + + + public string ChannelId + { + get + { + return Get("channelId"); + } + + set + { + Set("channelId", value); + } + } + + + public NativeNotificationPriority Priority + { + get + { + return NativeNotificationPriorityHelper.ReadFromValue(Get("priority")); + } + + set + { + Set("priority", NativeNotificationPriorityHelper.CreateWithValue(value)); + } + } + + + public bool IsLaunchNotification + { + get + { + return Get("isLaunchNotification"); + } + + set + { + Set("isLaunchNotification", value); + } + } + + + public bool IsRemoteNotification + { + get + { + return Get("isRemoteNotification"); + } + + set + { + Set("isRemoteNotification", value); + } + } + + + public int PersistenceId + { + get + { + return Get("persistenceId"); + } + + set + { + Set("persistenceId", value); + } + } + + + public bool Process + { + get + { + return Get("process"); + } + + set + { + Set("process", value); + } + } + + + public NativeJSONObject UserInfo + { + get + { + AndroidJavaObject javaObject = Get("userInfo"); + if (javaObject != null) + { + return new NativeJSONObject(javaObject); + } + else + { + return null; + } + } + + set + { + Set("userInfo", value.NativeObject); + } + } + + + public NativeNotificationTrigger Trigger + { + get + { + AndroidJavaObject javaObject = Get("trigger"); + if (javaObject != null) + { + return new NativeNotificationTrigger(javaObject); + } + else + { + return null; + } + } + + set + { + Set("trigger", value.NativeObject); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeNotification(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeNotification(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeNotification(string notificationId) : base(Native.kClassName ,notificationId) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeNotification() + { + DebugLogger.Log("Disposing NativeNotification"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static NativeNotification FromJson(NativeContext context, NativeJSONObject json) + { + AndroidJavaObject nativeObj = GetClass().CallStatic(Native.Method.kFromJson, context.NativeObject, json.NativeObject); + NativeNotification data = new NativeNotification(nativeObj); + return data; + } + public static NativeJSONObject ToJson(NativeContext context, NativeNotification notification) + { + AndroidJavaObject nativeObj = GetClass().CallStatic(Native.Method.kToJson, context.NativeObject, notification.NativeObject); + NativeJSONObject data = new NativeJSONObject(nativeObj); + return data; + } + + #endregion + #region Public methods + + public string GetPersistenceId() + { + return Call(Native.Method.kGetPersistenceId); + } + public bool HasCalendarTimeTrigger() + { + return Call(Native.Method.kHasCalendarTimeTrigger); + } + public bool HasDateTimeTrigger() + { + return Call(Native.Method.kHasDateTimeTrigger); + } + public bool HasLocationTrigger() + { + return Call(Native.Method.kHasLocationTrigger); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.Notification"; + + internal class Method + { + internal const string kFromJson = "fromJson"; + internal const string kHasCalendarTimeTrigger = "hasCalendarTimeTrigger"; + internal const string kHasDateTimeTrigger = "hasDateTimeTrigger"; + internal const string kHasLocationTrigger = "hasLocationTrigger"; + internal const string kToJson = "toJson"; + internal const string kGetPersistenceId = "getPersistenceId"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotification.cs.meta new file mode 100644 index 00000000..98a7117f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotification.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 168c15bb948164029ba2a91338201c28 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationAccessState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationAccessState.cs new file mode 100644 index 00000000..4e7db86b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationAccessState.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public enum NativeNotificationAccessState + { + Denied = 0, + Authorized = 1, + Unknown = 2 + } + public class NativeNotificationAccessStateHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.NotificationAccessState"; + + public static AndroidJavaObject CreateWithValue(NativeNotificationAccessState value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeNotificationAccessStateHelper : NativeNotificationAccessStateHelper][Method(CreateWithValue) : NativeNotificationAccessState]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeNotificationAccessState ReadFromValue(AndroidJavaObject value) + { + return (NativeNotificationAccessState)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationAccessState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationAccessState.cs.meta new file mode 100644 index 00000000..f06582ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationAccessState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e2caa49758994e95abce4bf2f2c187c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationBuilder.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationBuilder.cs new file mode 100644 index 00000000..d2bcb257 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationBuilder.cs @@ -0,0 +1,136 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeNotificationBuilder : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Constructor + + // Default constructor + public NativeNotificationBuilder(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeNotificationBuilder(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeNotificationBuilder(string id) : base(Native.kClassName ,id) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeNotificationBuilder() + { + DebugLogger.Log("Disposing NativeNotificationBuilder"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeNotification Build() + { + AndroidJavaObject nativeObj = Call(Native.Method.kBuild); + NativeNotification data = new NativeNotification(nativeObj); + return data; + } + public void SetBadge(int value) + { + Call(Native.Method.kSetBadge, value); + } + public void SetBigPicture(string name) + { + Call(Native.Method.kSetBigPicture, name); + } + public void SetBody(string body) + { + Call(Native.Method.kSetBody, body); + } + public void SetBody(string body, bool isEncoded) + { + Call(Native.Method.kSetBody, body, isEncoded); + } + public void SetLargeIcon(string name) + { + Call(Native.Method.kSetLargeIcon, name); + } + public void SetPriority(NativeNotificationPriority priority) + { + Call(Native.Method.kSetPriority, NativeNotificationPriorityHelper.CreateWithValue(priority)); + } + public void SetSoundFileName(string name) + { + Call(Native.Method.kSetSoundFileName, name); + } + public void SetTag(string tag) + { + Call(Native.Method.kSetTag, tag); + } + public void SetTitle(string title, bool isEncoded) + { + Call(Native.Method.kSetTitle, title, isEncoded); + } + public void SetTitle(string title) + { + Call(Native.Method.kSetTitle, title); + } + public void SetTrigger(NativeCalendarNotificationTrigger trigger) + { + Call(Native.Method.kSetTrigger, trigger.NativeObject); + } + public void SetTrigger(NativeLocationNotificationTrigger trigger) + { + Call(Native.Method.kSetTrigger, trigger.NativeObject); + } + public void SetTrigger(NativeTimeIntervalNotificationTrigger trigger) + { + Call(Native.Method.kSetTrigger, trigger.NativeObject); + } + public void SetUserInfo(string json) + { + Call(Native.Method.kSetUserInfo, json); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.NotificationBuilder"; + + internal class Method + { + internal const string kSetTitle = "setTitle"; + internal const string kSetBadge = "setBadge"; + internal const string kSetLargeIcon = "setLargeIcon"; + internal const string kSetBigPicture = "setBigPicture"; + internal const string kSetBody = "setBody"; + internal const string kSetPriority = "setPriority"; + internal const string kSetUserInfo = "setUserInfo"; + internal const string kSetTrigger = "setTrigger"; + internal const string kSetTag = "setTag"; + internal const string kSetSoundFileName = "setSoundFileName"; + internal const string kBuild = "build"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationBuilder.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationBuilder.cs.meta new file mode 100644 index 00000000..7e59ba35 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 752e364f9c1ea4db1bfe4d1e87842b2b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationImportance.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationImportance.cs new file mode 100644 index 00000000..619716db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationImportance.cs @@ -0,0 +1,36 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public enum NativeNotificationImportance + { + Min = 0, + Low = 1, + Default = 2, + High = 3, + Max = 4 + } + public class NativeNotificationImportanceHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.NotificationImportance"; + + public static AndroidJavaObject CreateWithValue(NativeNotificationImportance value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeNotificationImportanceHelper : NativeNotificationImportanceHelper][Method(CreateWithValue) : NativeNotificationImportance]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeNotificationImportance ReadFromValue(AndroidJavaObject value) + { + return (NativeNotificationImportance)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationImportance.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationImportance.cs.meta new file mode 100644 index 00000000..a9c12c84 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationImportance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fdf69716283544cb81c12b5a77647d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationPriority.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationPriority.cs new file mode 100644 index 00000000..950b04cf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationPriority.cs @@ -0,0 +1,35 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public enum NativeNotificationPriority + { + Low = 0, + Medium = 1, + High = 2, + Max = 3 + } + public class NativeNotificationPriorityHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.NotificationPriority"; + + public static AndroidJavaObject CreateWithValue(NativeNotificationPriority value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeNotificationPriorityHelper : NativeNotificationPriorityHelper][Method(CreateWithValue) : NativeNotificationPriority]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeNotificationPriority ReadFromValue(AndroidJavaObject value) + { + return (NativeNotificationPriority)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationPriority.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationPriority.cs.meta new file mode 100644 index 00000000..2f59a86c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationPriority.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a76e9c45a9844f14a37cc6420e9c963 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationReceivedListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationReceivedListener.cs new file mode 100644 index 00000000..fd49b832 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationReceivedListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeNotificationReceivedListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnNotificationReceivedDelegate(NativeNotification notification); + + #endregion + + #region Public callbacks + + public OnNotificationReceivedDelegate onNotificationReceivedCallback; + + #endregion + + + #region Constructors + + public NativeNotificationReceivedListener() : base("com.voxelbusters.essentialkit.notificationservices.INotificationServices$INotificationReceivedListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onNotificationReceived(AndroidJavaObject notification) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onNotificationReceived" + " " + "[" + "notification" + " : " + notification +"]"); +#endif + if(onNotificationReceivedCallback != null) + { + onNotificationReceivedCallback(new NativeNotification(notification)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationReceivedListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationReceivedListener.cs.meta new file mode 100644 index 00000000..451aded5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationReceivedListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bceb136dac5184e228e97f43875b587c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationServices.cs new file mode 100644 index 00000000..31a13063 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationServices.cs @@ -0,0 +1,225 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeNotificationServices : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeNotificationServices(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static void ProcessLaunchNotification(NativeNotification notification) + { + GetClass().CallStatic(Native.Method.kProcessLaunchNotification, new object[] { notification.NativeObject } ); + } + + #endregion + #region Public methods + + public bool AreNotificationsAllowedByUser() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : AreNotificationsAllowedByUser]"); +#endif + return Call(Native.Method.kAreNotificationsAllowedByUser); + } + public bool AreRemoteNotificationsAvailable() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : AreRemoteNotificationsAvailable]"); +#endif + return Call(Native.Method.kAreRemoteNotificationsAvailable); + } + public bool AreRemoteNotificationsRegistered() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : AreRemoteNotificationsRegistered]"); +#endif + return Call(Native.Method.kAreRemoteNotificationsRegistered); + } + public bool AreSoundsEnabledByUser() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : AreSoundsEnabledByUser]"); +#endif + return Call(Native.Method.kAreSoundsEnabledByUser); + } + public bool CanScheduleExactTimingNotifications() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : CanScheduleExactTimingNotifications]"); +#endif + return Call(Native.Method.kCanScheduleExactTimingNotifications); + } + public void CancelAllScheduledNotifications() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : CancelAllScheduledNotifications]"); +#endif + Call(Native.Method.kCancelAllScheduledNotifications); + } + public void CancelScheduledNotification(string id) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : CancelScheduledNotification]"); +#endif + Call(Native.Method.kCancelScheduledNotification, new object[] { id } ); + } + public void ClearAllActiveNotifications() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : ClearAllActiveNotifications]"); +#endif + Call(Native.Method.kClearAllActiveNotifications); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public long GetNotificationType() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : GetNotificationType]"); +#endif + return Call(Native.Method.kGetNotificationType); + } + public void RefreshActiveNotificationsStore() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : RefreshActiveNotificationsStore]"); +#endif + Call(Native.Method.kRefreshActiveNotificationsStore); + } + public void RegisterRemoteNotifications(NativeRegisterRemoteNotificationsListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : RegisterRemoteNotifications]"); +#endif + Call(Native.Method.kRegisterRemoteNotifications, new object[] { listener } ); + } + public void RequestActiveNotifications(NativeNotificationsRequestListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : RequestActiveNotifications]"); +#endif + Call(Native.Method.kRequestActiveNotifications, new object[] { listener } ); + } + public void RequestNotificationPermissions(NativeRequestNotificationPermissionsListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : RequestNotificationPermissions]"); +#endif + Call(Native.Method.kRequestNotificationPermissions, new object[] { listener } ); + } + public void RequestScheduledNotifications(NativeNotificationsRequestListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : RequestScheduledNotifications]"); +#endif + Call(Native.Method.kRequestScheduledNotifications, new object[] { listener } ); + } + public void ScheduleNotification(NativeNotification notification, NativeScheduleNotificationListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : ScheduleNotification]"); +#endif + Call(Native.Method.kScheduleNotification, new object[] { notification.NativeObject, listener } ); + } + public void SetApplicationIconBadgeNumber(int count) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method(RunOnUiThread) : SetApplicationIconBadgeNumber]"); +#endif + Call(Native.Method.kSetApplicationIconBadgeNumber, new object[] { count } ); + }); + } + public void SetNotificationListener(NativeNotificationReceivedListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : SetNotificationListener]"); +#endif + Call(Native.Method.kSetNotificationListener, new object[] { listener } ); + } + public void SetNotificationType(long type) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : SetNotificationType]"); +#endif + Call(Native.Method.kSetNotificationType, new object[] { type } ); + } + public void UnregisterRemoteNotifications(NativeUnregisterRemoteNotificationServiceListener listener) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeNotificationServices][Method : UnregisterRemoteNotifications]"); +#endif + Call(Native.Method.kUnregisterRemoteNotifications, new object[] { listener } ); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.NotificationServices"; + + internal class Method + { + internal const string kUnregisterRemoteNotifications = "UnregisterRemoteNotifications"; + internal const string kScheduleNotification = "scheduleNotification"; + internal const string kCanScheduleExactTimingNotifications = "canScheduleExactTimingNotifications"; + internal const string kAreSoundsEnabledByUser = "areSoundsEnabledByUser"; + internal const string kGetNotificationType = "getNotificationType"; + internal const string kSetNotificationType = "setNotificationType"; + internal const string kRefreshActiveNotificationsStore = "refreshActiveNotificationsStore"; + internal const string kCancelAllScheduledNotifications = "cancelAllScheduledNotifications"; + internal const string kAreRemoteNotificationsAvailable = "areRemoteNotificationsAvailable"; + internal const string kProcessLaunchNotification = "processLaunchNotification"; + internal const string kSetNotificationListener = "setNotificationListener"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kRequestActiveNotifications = "requestActiveNotifications"; + internal const string kClearAllActiveNotifications = "clearAllActiveNotifications"; + internal const string kRegisterRemoteNotifications = "registerRemoteNotifications"; + internal const string kAreNotificationsAllowedByUser = "areNotificationsAllowedByUser"; + internal const string kCancelScheduledNotification = "cancelScheduledNotification"; + internal const string kRequestScheduledNotifications = "requestScheduledNotifications"; + internal const string kSetApplicationIconBadgeNumber = "setApplicationIconBadgeNumber"; + internal const string kRequestNotificationPermissions = "requestNotificationPermissions"; + internal const string kAreRemoteNotificationsRegistered = "areRemoteNotificationsRegistered"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationServices.cs.meta new file mode 100644 index 00000000..adedfc3f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9877fb3e19d0143fa9088e8fe217fc9d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationTrigger.cs new file mode 100644 index 00000000..0287cc26 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationTrigger.cs @@ -0,0 +1,86 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeNotificationTrigger : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public bool Repeat + { + get + { + return Get("repeat"); + } + + set + { + Set("repeat", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeNotificationTrigger(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeNotificationTrigger(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeNotificationTrigger() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeNotificationTrigger() + { + DebugLogger.Log("Disposing NativeNotificationTrigger"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public NativeJSONObject ToJson() + { + AndroidJavaObject nativeObj = Call(Native.Method.kToJson); + NativeJSONObject data = new NativeJSONObject(nativeObj); + return data; + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.NotificationTrigger"; + + internal class Method + { + internal const string kToJson = "toJson"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationTrigger.cs.meta new file mode 100644 index 00000000..68f028f5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b6da762935fa8469bbe85b138c82038a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationType.cs new file mode 100644 index 00000000..56ec5171 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationType.cs @@ -0,0 +1,40 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public enum NativeNotificationType + { + Unknown = 0, + None = 1, + Badge = 2, + Sound = 3, + BadgeAndSound = 4, + Alert = 5, + AlertAndBadge = 6, + AlertAndSound = 7, + All = 8 + } + public class NativeNotificationTypeHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.NotificationType"; + + public static AndroidJavaObject CreateWithValue(NativeNotificationType value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeNotificationTypeHelper : NativeNotificationTypeHelper][Method(CreateWithValue) : NativeNotificationType]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeNotificationType ReadFromValue(AndroidJavaObject value) + { + return (NativeNotificationType)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationType.cs.meta new file mode 100644 index 00000000..1d68f915 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec913549d578b4526bdda19b2fd0edd3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationsRequestListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationsRequestListener.cs new file mode 100644 index 00000000..690dbbf1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationsRequestListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeNotificationsRequestListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeList notifications); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeNotificationsRequestListener() : base("com.voxelbusters.essentialkit.notificationservices.INotificationServices$INotificationsRequestListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject notifications) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "notifications" + " : " + notifications +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(new NativeList(notifications)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationsRequestListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationsRequestListener.cs.meta new file mode 100644 index 00000000..0d32fe98 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeNotificationsRequestListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14cf7aaaf1d654528af443cd29abfd24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRegisterRemoteNotificationsListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRegisterRemoteNotificationsListener.cs new file mode 100644 index 00000000..7f1af473 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRegisterRemoteNotificationsListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeRegisterRemoteNotificationsListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(string token); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeRegisterRemoteNotificationsListener() : base("com.voxelbusters.essentialkit.notificationservices.INotificationServices$IRegisterRemoteNotificationsListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(string token) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "token" + " : " + token +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(token); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRegisterRemoteNotificationsListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRegisterRemoteNotificationsListener.cs.meta new file mode 100644 index 00000000..e85da548 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRegisterRemoteNotificationsListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2127f69db5db04a489cbd72c9a01a04d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRequestNotificationPermissionsListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRequestNotificationPermissionsListener.cs new file mode 100644 index 00000000..37b7a8c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRequestNotificationPermissionsListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeRequestNotificationPermissionsListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(NativeNotificationAccessState state); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeRequestNotificationPermissionsListener() : base("com.voxelbusters.essentialkit.notificationservices.INotificationServices$IRequestNotificationPermissionsListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(AndroidJavaObject state) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "state" + " : " + state +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(NativeNotificationAccessStateHelper.ReadFromValue(state)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRequestNotificationPermissionsListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRequestNotificationPermissionsListener.cs.meta new file mode 100644 index 00000000..08b19d4e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeRequestNotificationPermissionsListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cca3745ebaaea4af4a7b2f7ed814b6c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeScheduleNotificationListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeScheduleNotificationListener.cs new file mode 100644 index 00000000..f827be16 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeScheduleNotificationListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeScheduleNotificationListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeScheduleNotificationListener() : base("com.voxelbusters.essentialkit.notificationservices.INotificationServices$IScheduleNotificationListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeScheduleNotificationListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeScheduleNotificationListener.cs.meta new file mode 100644 index 00000000..2561da1c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeScheduleNotificationListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5cbd1bc81f3d4df8b4d90dfc3ea907d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeTimeIntervalNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeTimeIntervalNotificationTrigger.cs new file mode 100644 index 00000000..768ccffa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeTimeIntervalNotificationTrigger.cs @@ -0,0 +1,119 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeTimeIntervalNotificationTrigger : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public long TimeInterval + { + get + { + return Get("timeInterval"); + } + + set + { + Set("timeInterval", value); + } + } + + + public bool Repeat + { + get + { + return Get("repeat"); + } + + set + { + Set("repeat", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeTimeIntervalNotificationTrigger(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeTimeIntervalNotificationTrigger(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeTimeIntervalNotificationTrigger(long timeInterval, bool repeat) : base(Native.kClassName ,timeInterval, repeat) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeTimeIntervalNotificationTrigger() + { + DebugLogger.Log("Disposing NativeTimeIntervalNotificationTrigger"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static NativeTimeIntervalNotificationTrigger FromJson(NativeJSONObject jsonObject) + { + AndroidJavaObject nativeObj = GetClass().CallStatic(Native.Method.kFromJson, jsonObject.NativeObject); + NativeTimeIntervalNotificationTrigger data = new NativeTimeIntervalNotificationTrigger(nativeObj); + return data; + } + + #endregion + #region Public methods + + public NativeDate GetNextTriggerDate() + { + AndroidJavaObject nativeObj = Call(Native.Method.kGetNextTriggerDate); + NativeDate data = new NativeDate(nativeObj); + return data; + } + public NativeJSONObject ToJson() + { + AndroidJavaObject nativeObj = Call(Native.Method.kToJson); + NativeJSONObject data = new NativeJSONObject(nativeObj); + return data; + } + public void UpdateStartTimestamp(long timestamp) + { + Call(Native.Method.kUpdateStartTimestamp, timestamp); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.notificationservices.datatypes.TimeIntervalNotificationTrigger"; + + internal class Method + { + internal const string kFromJson = "fromJson"; + internal const string kUpdateStartTimestamp = "updateStartTimestamp"; + internal const string kGetNextTriggerDate = "getNextTriggerDate"; + internal const string kToJson = "toJson"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeTimeIntervalNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeTimeIntervalNotificationTrigger.cs.meta new file mode 100644 index 00000000..e9eaea24 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeTimeIntervalNotificationTrigger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85db9545a0a8444b8942a82329781c29 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeUnRegisterRemoteNotificationServiceListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeUnRegisterRemoteNotificationServiceListener.cs new file mode 100644 index 00000000..3607b294 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeUnRegisterRemoteNotificationServiceListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public class NativeUnregisterRemoteNotificationServiceListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeUnregisterRemoteNotificationServiceListener() : base("com.voxelbusters.essentialkit.notificationservices.INotificationServices$IUnregisterRemoteNotificationServiceListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeUnRegisterRemoteNotificationServiceListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeUnRegisterRemoteNotificationServiceListener.cs.meta new file mode 100644 index 00000000..d2a82856 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NativeUnRegisterRemoteNotificationServiceListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 779ca4bade3aa47dd8c57a2a62bf9c39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/Notification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/Notification.cs new file mode 100644 index 00000000..70db6bf7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/Notification.cs @@ -0,0 +1,167 @@ +#if UNITY_ANDROID +using System; +using System.Collections; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + internal class Notification : NotificationBase + { +#region Fields + + private NativeNotification m_instance; + private INotificationTrigger m_trigger; + private NotificationAndroidProperties m_androidProperties; + +#endregion + +#region Constructors + + protected Notification(string notificationId) + : base(notificationId) + { + m_instance = new NativeNotification(notificationId); + } + + public Notification(NativeNotification nativeNotification) + : base(nativeNotification.Id) + { + m_instance = nativeNotification; + } + + ~Notification() + { + Dispose(false); + } + +#endregion + +#region Base class implementation + + protected override string GetTitleInternal() + { + return m_instance.ContentTitle; + } + + protected override string GetSubtitleInternal() + { + return ""; + } + + protected override string GetBodyInternal() + { + return m_instance.ContentText; + } + + protected override int GetBadgeInternal() + { + return m_instance.Badge; + } + + protected override IDictionary GetUserInfoInternal() + { + if (m_instance.UserInfo != null) + { + string jsonString = m_instance.UserInfo.ToString(); + IDictionary data = (IDictionary)ExternalServiceProvider.JsonServiceProvider.FromJson(jsonString); + return data; + } + else + { + return null; + } + } + + protected override string GetSoundFileNameInternal() + { + return m_instance.SoundFileName; + } + + protected override INotificationTrigger GetTriggerInternal() + { + if(m_trigger == null) + { + NativeNotificationTrigger trigger = m_instance.Trigger; + if (trigger != null) + { + if(m_instance.HasDateTimeTrigger()) + { + NativeTimeIntervalNotificationTrigger dateTimeTrigger = new NativeTimeIntervalNotificationTrigger(trigger); + m_trigger = new TimeIntervalNotificationTrigger(dateTimeTrigger.TimeInterval, dateTimeTrigger.Repeat, dateTimeTrigger.GetNextTriggerDate().GetDateTime()); + } + else if(m_instance.HasCalendarTimeTrigger()) + { + NativeCalendarNotificationTrigger nativeCalendarNotificationTrigger = new NativeCalendarNotificationTrigger(trigger); + var dateComponents = GetDateComponents(nativeCalendarNotificationTrigger); + m_trigger = new CalendarNotificationTrigger(dateComponents, nativeCalendarNotificationTrigger.Repeat, nativeCalendarNotificationTrigger.GetNextTriggerDate().GetDateTime()); + } + else if(m_instance.HasLocationTrigger()) + { + NativeLocationNotificationTrigger locationNotificationTrigger = new NativeLocationNotificationTrigger(trigger); + + LocationCoordinate coordinate = new LocationCoordinate() + { + Latitude = locationNotificationTrigger.GetLocationCoordinate().X, + Longitude = locationNotificationTrigger.GetLocationCoordinate().Y + }; + + CircularRegion circularRegion = new CircularRegion(); + circularRegion.Center = coordinate; + circularRegion.Radius = locationNotificationTrigger.GetRadius(); + DebugLogger.LogWarning("Ignoring regionId on Android"); + m_trigger = new LocationNotificationTrigger(circularRegion, locationNotificationTrigger.IsNotifyOnEntry(), locationNotificationTrigger.IsNotifyOnExit(), locationNotificationTrigger.Repeat); + } + } + } + + return m_trigger; + } + + protected override bool GetIsLaunchNotificationInternal() + { + return m_instance.IsLaunchNotification; + } + + + protected override NotificationIosProperties GetIosPropertiesInternal() + { + return null; + } + + protected override NotificationAndroidProperties GetAndroidPropertiesInternal() + { + if(m_androidProperties == null) + { + m_androidProperties = new NotificationAndroidProperties(); + m_androidProperties.Tag = m_instance.Tag; + m_androidProperties.LargeIcon = m_instance.LargeIcon; + m_androidProperties.BigPicture = m_instance.BigPicture; + } + + return m_androidProperties; + } + + private DateComponents GetDateComponents(NativeCalendarNotificationTrigger nativeTrigger) + { + DateComponents dateComponents = new DateComponents(); + + dateComponents.Nanosecond = nativeTrigger.GetNanosecond(); + dateComponents.Second = nativeTrigger.GetSecond(); + dateComponents.Minute = nativeTrigger.GetMinute(); + dateComponents.Hour = nativeTrigger.GetHour(); + dateComponents.Day = nativeTrigger.GetDay(); + dateComponents.Month = nativeTrigger.GetMonth(); + dateComponents.Year = nativeTrigger.GetYear(); + dateComponents.DayOfWeek = nativeTrigger.GetWeekday(); + dateComponents.WeekOfMonth = nativeTrigger.GetWeekOfMonth(); + dateComponents.WeekOfYear = nativeTrigger.GetWeekOfYear(); + + return dateComponents; + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/Notification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/Notification.cs.meta new file mode 100644 index 00000000..10dccf1b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/Notification.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 206226d2617c14c769d2b58ba804f565 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NotificationCenterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NotificationCenterInterface.cs new file mode 100644 index 00000000..48fafa71 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NotificationCenterInterface.cs @@ -0,0 +1,165 @@ +#if UNITY_ANDROID +using System.Diagnostics; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Android +{ + public sealed class NotificationCenterInterface : NativeNotificationCenterInterfaceBase, INativeNotificationCenterInterface + { +#region Fields + + private NativeNotificationServices m_instance = null; + private NotificationPermissionOptions m_options; + +#endregion + +#region Constructors + + public NotificationCenterInterface() + : base(isAvailable: true) + { + m_instance = new NativeNotificationServices(NativeUnityPluginUtility.GetContext()); + m_instance.SetNotificationListener(new NativeNotificationReceivedListener() + { + onNotificationReceivedCallback = (NativeNotification nativeNotification) => + { + DebugLogger.Log("Received Notification"); + SendNotificationReceivedEvent(new Notification(nativeNotification)); + } + }); + } + +#endregion + +#region Base class methods + + public override void RequestPermission(NotificationPermissionOptions options, RequestPermissionInternalCallback callback) + { + this.m_options = options; + m_instance.SetNotificationType((long)options); + + m_instance.RequestNotificationPermissions(new NativeRequestNotificationPermissionsListener() + { + onSuccessCallback = (NativeNotificationAccessState state) => + { + callback(state == NativeNotificationAccessState.Authorized ? NotificationPermissionStatus.Authorized : NotificationPermissionStatus.Denied, null); + }, + onFailureCallback = (error) => + { + callback(NotificationPermissionStatus.NotDetermined, error.Convert(NotificationServicesError.kDomain)); + } + + }); + } + + public override void GetSettings(GetSettingsInternalCallback callback) + { + bool hasExactTimingSetting = (m_options & NotificationPermissionOptions.ExactTiming) != 0; + bool allowedByUser = m_instance.AreNotificationsAllowedByUser() && (hasExactTimingSetting ? m_instance.CanScheduleExactTimingNotifications() : true); + bool arePermissionsUnknown = (m_instance.GetNotificationType() == (int)NativeNotificationType.None); + bool areAlertsAllowed = (m_options & (NotificationPermissionOptions.Alert | NotificationPermissionOptions.CarPlay | NotificationPermissionOptions.ProvidesAppNotificationSettings | NotificationPermissionOptions.Provisional | NotificationPermissionOptions.CriticalAlert | NotificationPermissionOptions.Announcement)) != 0; + + NotificationSettingsInternal settings = new NotificationSettingsInternal( + permissionStatus: arePermissionsUnknown ? NotificationPermissionStatus.NotDetermined : allowedByUser ? NotificationPermissionStatus.Authorized : NotificationPermissionStatus.Denied, + alertSetting: areAlertsAllowed ? NotificationSettingStatus.Enabled : NotificationSettingStatus.Disabled, + badgeSetting: (m_options & NotificationPermissionOptions.Badge) != 0 ? NotificationSettingStatus.Enabled : EssentialKit.NotificationSettingStatus.Disabled, + carPlaySetting: NotificationSettingStatus.NotSupported, + lockScreenSetting: NotificationSettingStatus.NotAccessible, + notificationCenterSetting: NotificationSettingStatus.Enabled, + soundSetting: (m_options & NotificationPermissionOptions.Sound) != 0 ? NotificationSettingStatus.Enabled : EssentialKit.NotificationSettingStatus.Disabled, + criticalAlertSetting: NotificationSettingStatus.NotSupported, + announcementSetting: NotificationSettingStatus.NotSupported, + alertStyle: NotificationAlertStyle.Banner, + previewStyle: NotificationPreviewStyle.NotAccessible, + exactTimingSetting: hasExactTimingSetting ? NotificationSettingStatus.Enabled : NotificationSettingStatus.Disabled + ); + + callback(settings); + } + + public override IMutableNotification CreateMutableNotification(string notificationId) + { + return new MutableNotification(notificationId); + } + + public override void ScheduleNotification(INotification notification, ScheduleNotificationInternalCallback callback) + { + MutableNotification mutableNotification = (MutableNotification)notification; + NativeNotification nativeNotification = mutableNotification.Build(); + m_instance.ScheduleNotification(nativeNotification, new NativeScheduleNotificationListener() + { + onSuccessCallback = () => callback(true, null), + onFailureCallback = (error) => callback(false, error.Convert(NotificationServicesError.kDomain)) + }); + } + + public override void GetScheduledNotifications(GetNotificationsInternalCallback callback) + { + m_instance.RequestScheduledNotifications(new NativeNotificationsRequestListener() + { + onSuccessCallback = (nativeNotifications) => + { + Notification[] notifications = NativeUnityPluginUtility.Map(nativeNotifications.Get()); + callback(notifications, null); + }, + onFailureCallback = (error) => callback(null, error.Convert(NotificationServicesError.kDomain)) + }); + } + + public override void CancelScheduledNotification(string notificationId) + { + m_instance.CancelScheduledNotification(notificationId); + } + + public override void CancelAllScheduledNotifications() + { + m_instance.CancelAllScheduledNotifications(); + } + + public override void GetDeliveredNotifications(GetNotificationsInternalCallback callback) + { + m_instance.RequestActiveNotifications(new NativeNotificationsRequestListener() + { + onSuccessCallback = (nativeNotifications) => + { + Notification[] notifications = NativeUnityPluginUtility.Map(nativeNotifications.Get()); + callback(notifications, null); + }, + onFailureCallback = (error) => callback(null, error.Convert(NotificationServicesError.kDomain)) + }); + } + + public override void RemoveAllDeliveredNotifications() + { + m_instance.ClearAllActiveNotifications(); + } + + public override void RegisterForPushNotifications(RegisterForPushNotificationsInternalCallback callback) + { + m_instance.RegisterRemoteNotifications(new NativeRegisterRemoteNotificationsListener() + { + onSuccessCallback = (token) => callback(token, null), + onFailureCallback = (error) => callback(null, error.Convert(NotificationServicesError.kDomain)) + }); + } + + public override void UnregisterForPushNotifications() + { + m_instance.UnregisterRemoteNotifications(null); + } + + public override bool IsRegisteredForPushNotifications() + { + return m_instance.AreRemoteNotificationsRegistered(); + } + + public override void SetApplicationIconBadgeNumber(int count) + { + m_instance.SetApplicationIconBadgeNumber(count); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NotificationCenterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NotificationCenterInterface.cs.meta new file mode 100644 index 00000000..39e83cb8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/NotificationServices/NotificationCenterInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c5534e1d91af46cf8091dde2c5b70ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp.meta new file mode 100644 index 00000000..61d4f06a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 228893db5915549f0a6b2987db85d8d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeRequestStoreReviewListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeRequestStoreReviewListener.cs new file mode 100644 index 00000000..02c9ce69 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeRequestStoreReviewListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.RateMyAppCore.Android +{ + public class NativeRequestStoreReviewListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(string error); + public delegate void OnSuccessDelegate(); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeRequestStoreReviewListener() : base("com.voxelbusters.essentialkit.ratemyapp.IStoreReview$IRequestStoreReviewListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(string error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(error); + } + } + public void onSuccess() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" ); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeRequestStoreReviewListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeRequestStoreReviewListener.cs.meta new file mode 100644 index 00000000..fd4b6c3b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeRequestStoreReviewListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cceec352caa1748a8a0b384f8266297b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeStoreReview.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeStoreReview.cs new file mode 100644 index 00000000..f00b36d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeStoreReview.cs @@ -0,0 +1,81 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.RateMyAppCore.Android +{ + public class NativeStoreReview : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeStoreReview(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static bool CanRequestStoreReview() + { + return GetClass().CallStatic(Native.Method.kCanRequestStoreReview); + } + + #endregion + #region Public methods + + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeStoreReview][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void RequestStoreReview(NativeRequestStoreReviewListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeStoreReview][Method(RunOnUiThread) : RequestStoreReview]"); +#endif + Call(Native.Method.kRequestStoreReview, new object[] { listener } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.ratemyapp.StoreReview"; + + internal class Method + { + internal const string kRequestStoreReview = "requestStoreReview"; + internal const string kCanRequestStoreReview = "canRequestStoreReview"; + internal const string kGetFeatureName = "getFeatureName"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeStoreReview.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeStoreReview.cs.meta new file mode 100644 index 00000000..245f59de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/NativeStoreReview.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb74b925a53594bf28245325b18b4537 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/RateMyAppInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/RateMyAppInterface.cs new file mode 100644 index 00000000..03c1b268 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/RateMyAppInterface.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.RateMyAppCore.Android +{ + public class RateMyAppInterface : NativeRateMyAppInterfaceBase + { + #region Fields + + private NativeStoreReview m_storeReview; + + #endregion + + #region Constructors + + public RateMyAppInterface() + : base(isAvailable: true) + { + m_storeReview = new NativeStoreReview(NativeUnityPluginUtility.GetContext()); + } + + #endregion + + #region Base methods + + public override void RequestStoreReview() + { + m_storeReview.RequestStoreReview(null); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/RateMyAppInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/RateMyAppInterface.cs.meta new file mode 100644 index 00000000..d9f5ceda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/RateMyApp/RateMyAppInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d3282e44ed13f4e2b893fe2c489de6b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices.meta new file mode 100644 index 00000000..9a16bcda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a9cd4be4e75e5448f93fc76452ad1f48 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/Converter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/Converter.cs new file mode 100644 index 00000000..6ffd89d4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/Converter.cs @@ -0,0 +1,85 @@ +#if UNITY_ANDROID +using System; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + internal static class Converter + { + public static MailComposerResultCode from(NativeMailComposerResult result) + { + switch(result) + { + case NativeMailComposerResult.Cancelled: + return MailComposerResultCode.Cancelled; + case NativeMailComposerResult.Sent: + return MailComposerResultCode.Sent; + case NativeMailComposerResult.Unknown: + return MailComposerResultCode.Unknown; + default: + return MailComposerResultCode.Unknown; + } + } + + public static MessageComposerResultCode from(NativeMessageComposerResult result) + { + switch (result) + { + case NativeMessageComposerResult.Cancelled: + return MessageComposerResultCode.Cancelled; + case NativeMessageComposerResult.Sent: + return MessageComposerResultCode.Sent; + case NativeMessageComposerResult.Unknown: + return MessageComposerResultCode.Unknown; + default: + return MessageComposerResultCode.Unknown; + } + } + + internal static ShareSheetResultCode from(NativeShareSheetResult result) + { + switch (result) + { + case NativeShareSheetResult.Cancelled: + return ShareSheetResultCode.Cancelled; + case NativeShareSheetResult.Done: + return ShareSheetResultCode.Done; + case NativeShareSheetResult.Unknown: + return ShareSheetResultCode.Unknown; + default: + return ShareSheetResultCode.Unknown; + } + } + + internal static NativeSocialShareComposerType from(SocialShareComposerType composerType) + { + switch (composerType) + { + case SocialShareComposerType.Facebook: + return NativeSocialShareComposerType.Facebook; + case SocialShareComposerType.Twitter: + return NativeSocialShareComposerType.Twitter; + case SocialShareComposerType.WhatsApp: + return NativeSocialShareComposerType.Whatsapp; + default: + throw VBException.SwitchCaseNotImplemented(composerType); + } + } + + internal static SocialShareComposerResultCode from(NativeSocialShareComposerResult result) + { + switch (result) + { + case NativeSocialShareComposerResult.Cancelled: + return SocialShareComposerResultCode.Cancelled; + case NativeSocialShareComposerResult.Done: + return SocialShareComposerResultCode.Done; + case NativeSocialShareComposerResult.Unknown: + return SocialShareComposerResultCode.Unknown; + default: + return SocialShareComposerResultCode.Unknown; + } + } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/Converter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/Converter.cs.meta new file mode 100644 index 00000000..9522decc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bc8caffd58a249f18e6d6312534e6de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MailComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MailComposer.cs new file mode 100644 index 00000000..37608cfc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MailComposer.cs @@ -0,0 +1,96 @@ +#if UNITY_ANDROID +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using UnityEngine; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + internal sealed class MailComposer : NativeMailComposerBase, INativeMailComposer + { +#region Fields + + private NativeMailComposer m_instance; + +#endregion + +#region Constructors + + public MailComposer() + { + m_instance = new NativeMailComposer(NativeUnityPluginUtility.GetContext()); + } + + ~MailComposer() + { + Dispose(false); + } + +#endregion + +#region Static methods + + public static bool CanSendMail() + { + return NativeMailComposer.CanSendMail(NativeUnityPluginUtility.GetContext()); + } + +#endregion + +#region Base class methods + + public override void SetToRecipients(params string[] values) + { + m_instance.SetToRecipients(values); + } + + public override void SetCcRecipients(params string[] values) + { + m_instance.SetCcRecipients(values); + } + + public override void SetBccRecipients(params string[] values) + { + m_instance.SetBccRecipients(values); + } + + public override void SetSubject(string value) + { + m_instance.SetSubject(value); + } + + public override void SetBody(string value, bool isHtml) + { + m_instance.SetBody(value, isHtml); + } + + public override void AddScreenshot(string fileName) + { + VoxelBusters.CoreLibrary.NativePlugins.Android.Utility.TakeScreenshot((byte[] data, string mimeType) => + { + AddAttachmentData(data, mimeType, fileName); + }); + } + + public override void AddAttachmentData(byte[] data, string mimeType, string fileName) + { + m_instance.AddAttachment(new NativeBytesWrapper(data), mimeType, fileName); + } + + public override void Show() + { + SurrogateCoroutine.WaitForEndOfFrameAndInvoke(() => + { + m_instance.Show(new NativeMailComposerListener() + { + onActionCallback = (result) => SendCloseEvent(Converter.from(result), null) + }); + }); + + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MailComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MailComposer.cs.meta new file mode 100644 index 00000000..d57ae2a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MailComposer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad846f3a837f646a6afd3b206246dba1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MessageComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MessageComposer.cs new file mode 100644 index 00000000..e80a05ae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MessageComposer.cs @@ -0,0 +1,101 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + internal sealed class MessageComposer : NativeMessageComposerBase, INativeMessageComposer + { +#region Fields + + private NativeMessageComposer m_instance; + +#endregion + +#region Constructors + + public MessageComposer() + { + m_instance = new NativeMessageComposer(NativeUnityPluginUtility.GetContext()); + } + + ~MessageComposer() + { + Dispose(false); + } + +#endregion + +#region Static methods + + public static bool CanSendText() + { + return NativeMessageComposer.CanSendText(NativeUnityPluginUtility.GetContext()); + } + + public static bool CanSendAttachments() + { + return NativeMessageComposer.CanSendAttachments(NativeUnityPluginUtility.GetContext()); + } + + public static bool CanSendSubject() + { + return NativeMessageComposer.CanSendSubject(NativeUnityPluginUtility.GetContext()); + } + +#endregion + +#region Base class methods + + public override void SetRecipients(params string[] values) + { + m_instance.SetRecipients(values); + } + + public override void SetSubject(string value) + { + m_instance.SetSubject(value); + } + + public override void SetBody(string value) + { + m_instance.SetBody(value, false); + } + + public override void AddScreenshot(string fileName) + { + Utility.TakeScreenshot((byte[] data, string mimeType) => + { + AddAttachmentData(data, mimeType, fileName); + }); + } + + public override void AddImage(Texture2D image, string fileName) + { + string mimeType; + byte[] data = image.Encode(out mimeType); + AddAttachmentData(data, mimeType, fileName); + } + + public override void AddAttachmentData(byte[] data, string mimeType, string fileName) + { + m_instance.AddAttachment(new NativeBytesWrapper(data), mimeType, fileName); + } + + public override void Show() + { + SurrogateCoroutine.WaitForEndOfFrameAndInvoke(() => + { + m_instance.Show(new NativeMessageComposerListener() + { + onActionCallback = (result) => SendCloseEvent(Converter.from(result), null) + }); + }); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MessageComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MessageComposer.cs.meta new file mode 100644 index 00000000..57e98dac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/MessageComposer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f25db911ca8f4418b0d74224c4a5d3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposer.cs new file mode 100644 index 00000000..74532cbc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposer.cs @@ -0,0 +1,129 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeMailComposer : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeMailComposer(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static bool CanSendMail(NativeContext context) + { + return GetClass().CallStatic(Native.Method.kCanSendMail, new object[] { context.NativeObject } ); + } + + #endregion + #region Public methods + + public void AddAttachment(NativeBytesWrapper data, string mimeType, string fileName) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method : AddAttachment]"); +#endif + Call(Native.Method.kAddAttachment, new object[] { data.NativeObject, mimeType, fileName } ); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void SetBccRecipients(string[] recipients) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method : SetBccRecipients]"); +#endif + Call(Native.Method.kSetBccRecipients, new object[] { recipients } ); + } + public void SetBody(string body, bool isHtml) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method : SetBody]"); +#endif + Call(Native.Method.kSetBody, new object[] { body, isHtml } ); + } + public void SetCcRecipients(string[] recipients) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method : SetCcRecipients]"); +#endif + Call(Native.Method.kSetCcRecipients, new object[] { recipients } ); + } + public void SetSubject(string subject) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method : SetSubject]"); +#endif + Call(Native.Method.kSetSubject, new object[] { subject } ); + } + public void SetToRecipients(string[] recipients) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method : SetToRecipients]"); +#endif + Call(Native.Method.kSetToRecipients, new object[] { recipients } ); + } + public void Show(NativeMailComposerListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMailComposer][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow, new object[] { listener } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.MailComposer"; + + internal class Method + { + internal const string kAddAttachment = "addAttachment"; + internal const string kSetBody = "setBody"; + internal const string kCanSendMail = "canSendMail"; + internal const string kSetSubject = "setSubject"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kSetToRecipients = "setToRecipients"; + internal const string kSetCcRecipients = "setCcRecipients"; + internal const string kSetBccRecipients = "setBccRecipients"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposer.cs.meta new file mode 100644 index 00000000..0680d935 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc28b40083b584efdbe9e50bd539e11a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerListener.cs new file mode 100644 index 00000000..5dbf49ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeMailComposerListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnActionDelegate(NativeMailComposerResult result); + + #endregion + + #region Public callbacks + + public OnActionDelegate onActionCallback; + + #endregion + + + #region Constructors + + public NativeMailComposerListener() : base("com.voxelbusters.essentialkit.sharingservices.ISharing$IMailComposerListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onAction(AndroidJavaObject result) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onAction" + " " + "[" + "result" + " : " + result +"]"); +#endif + if(onActionCallback != null) + { + onActionCallback(NativeMailComposerResultHelper.ReadFromValue(result)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerListener.cs.meta new file mode 100644 index 00000000..af1d37aa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8d31be8151174f03bb35bc08d71accd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerResult.cs new file mode 100644 index 00000000..5926d754 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerResult.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public enum NativeMailComposerResult + { + Cancelled = 0, + Sent = 1, + Unknown = 2 + } + public class NativeMailComposerResultHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.Enums$MailComposerResult"; + + public static AndroidJavaObject CreateWithValue(NativeMailComposerResult value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeMailComposerResultHelper : NativeMailComposerResultHelper][Method(CreateWithValue) : NativeMailComposerResult]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeMailComposerResult ReadFromValue(AndroidJavaObject value) + { + return (NativeMailComposerResult)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerResult.cs.meta new file mode 100644 index 00000000..f70a330c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMailComposerResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f152de4f8d4cd4a70b91054867d789b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposer.cs new file mode 100644 index 00000000..abd655cb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposer.cs @@ -0,0 +1,125 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeMessageComposer : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeMessageComposer(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static bool CanSendAttachments(NativeContext context) + { + return GetClass().CallStatic(Native.Method.kCanSendAttachments, new object[] { context.NativeObject } ); + } + + public static bool CanSendSubject(NativeContext context) + { + return GetClass().CallStatic(Native.Method.kCanSendSubject, new object[] { context.NativeObject } ); + } + + public static bool CanSendText(NativeContext context) + { + return GetClass().CallStatic(Native.Method.kCanSendText, new object[] { context.NativeObject } ); + } + + #endregion + #region Public methods + + public void AddAttachment(NativeBytesWrapper data, string mimeType, string fileName) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMessageComposer][Method : AddAttachment]"); +#endif + Call(Native.Method.kAddAttachment, new object[] { data.NativeObject, mimeType, fileName } ); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMessageComposer][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void SetBody(string body, bool isHtml) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMessageComposer][Method : SetBody]"); +#endif + Call(Native.Method.kSetBody, new object[] { body, isHtml } ); + } + public void SetRecipients(string[] receipients) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMessageComposer][Method : SetRecipients]"); +#endif + Call(Native.Method.kSetRecipients, new object[] { receipients } ); + } + public void SetSubject(string value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMessageComposer][Method : SetSubject]"); +#endif + Call(Native.Method.kSetSubject, new object[] { value } ); + } + public void Show(NativeMessageComposerListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeMessageComposer][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow, new object[] { listener } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.MessageComposer"; + + internal class Method + { + internal const string kAddAttachment = "addAttachment"; + internal const string kSetRecipients = "setRecipients"; + internal const string kSetBody = "setBody"; + internal const string kCanSendText = "canSendText"; + internal const string kCanSendAttachments = "canSendAttachments"; + internal const string kSetSubject = "setSubject"; + internal const string kCanSendSubject = "canSendSubject"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposer.cs.meta new file mode 100644 index 00000000..3ba0b7bd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd4712321622840e3a26aa3e1ed7c79c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerListener.cs new file mode 100644 index 00000000..225050e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeMessageComposerListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnActionDelegate(NativeMessageComposerResult result); + + #endregion + + #region Public callbacks + + public OnActionDelegate onActionCallback; + + #endregion + + + #region Constructors + + public NativeMessageComposerListener() : base("com.voxelbusters.essentialkit.sharingservices.ISharing$IMessageComposerListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onAction(AndroidJavaObject result) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onAction" + " " + "[" + "result" + " : " + result +"]"); +#endif + if(onActionCallback != null) + { + onActionCallback(NativeMessageComposerResultHelper.ReadFromValue(result)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerListener.cs.meta new file mode 100644 index 00000000..7536bd57 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1261680d4cf84c1fab1081ae7d48756 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerResult.cs new file mode 100644 index 00000000..aa19d097 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerResult.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public enum NativeMessageComposerResult + { + Cancelled = 0, + Sent = 1, + Unknown = 2 + } + public class NativeMessageComposerResultHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.Enums$MessageComposerResult"; + + public static AndroidJavaObject CreateWithValue(NativeMessageComposerResult value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeMessageComposerResultHelper : NativeMessageComposerResultHelper][Method(CreateWithValue) : NativeMessageComposerResult]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeMessageComposerResult ReadFromValue(AndroidJavaObject value) + { + return (NativeMessageComposerResult)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerResult.cs.meta new file mode 100644 index 00000000..c47bd5a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeMessageComposerResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7919d4c9177e4c13b607b1e947e0905 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheet.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheet.cs new file mode 100644 index 00000000..65855bcf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheet.cs @@ -0,0 +1,115 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeShareSheet : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeShareSheet(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public void AddAttachment(NativeBytesWrapper data, string mimeType, string fileName) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeShareSheet][Method : AddAttachment]"); +#endif + Call(Native.Method.kAddAttachment, new object[] { data.NativeObject, mimeType, fileName } ); + } + public void AddAttachmentAsync(string path, string mimeType) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeShareSheet][Method : AddAttachmentAsync]"); +#endif + Call(Native.Method.kAddAttachmentAsync, new object[] { path, mimeType } ); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeShareSheet][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public string GetSaveDirectory() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeShareSheet][Method : GetSaveDirectory]"); +#endif + return Call(Native.Method.kGetSaveDirectory); + } + public void SetText(string value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeShareSheet][Method : SetText]"); +#endif + Call(Native.Method.kSetText, new object[] { value } ); + } + public void SetUrl(string urlString) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeShareSheet][Method : SetUrl]"); +#endif + Call(Native.Method.kSetUrl, new object[] { urlString } ); + } + public void Show(NativeShareSheetListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeShareSheet][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow, new object[] { listener } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.ShareSheet"; + + internal class Method + { + internal const string kAddAttachment = "addAttachment"; + internal const string kSetText = "setText"; + internal const string kAddAttachmentAsync = "addAttachmentAsync"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kSetUrl = "setUrl"; + internal const string kGetSaveDirectory = "getSaveDirectory"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheet.cs.meta new file mode 100644 index 00000000..d5c13cf0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e4dabfbe688e043599c891160de8a0f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetListener.cs new file mode 100644 index 00000000..ac3b6b24 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeShareSheetListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnActionDelegate(NativeShareSheetResult result); + + #endregion + + #region Public callbacks + + public OnActionDelegate onActionCallback; + + #endregion + + + #region Constructors + + public NativeShareSheetListener() : base("com.voxelbusters.essentialkit.sharingservices.ISharing$IShareSheetListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onAction(AndroidJavaObject result) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onAction" + " " + "[" + "result" + " : " + result +"]"); +#endif + if(onActionCallback != null) + { + onActionCallback(NativeShareSheetResultHelper.ReadFromValue(result)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetListener.cs.meta new file mode 100644 index 00000000..6a59cbe2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 779a2d9829a7d46d3b36e844d136eb3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetResult.cs new file mode 100644 index 00000000..df8dd6eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetResult.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public enum NativeShareSheetResult + { + Cancelled = 0, + Done = 1, + Unknown = 2 + } + public class NativeShareSheetResultHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.Enums$ShareSheetResult"; + + public static AndroidJavaObject CreateWithValue(NativeShareSheetResult value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeShareSheetResultHelper : NativeShareSheetResultHelper][Method(CreateWithValue) : NativeShareSheetResult]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeShareSheetResult ReadFromValue(AndroidJavaObject value) + { + return (NativeShareSheetResult)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetResult.cs.meta new file mode 100644 index 00000000..fa0fa6c5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeShareSheetResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d26600b21caa244cd97360112a073ad4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposer.cs new file mode 100644 index 00000000..3efafa95 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposer.cs @@ -0,0 +1,113 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeSocialShareComposer : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeSocialShareComposer(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + public static bool IsComposerAvailable(NativeContext context, NativeSocialShareComposerType type) + { + return GetClass().CallStatic(Native.Method.kIsComposerAvailable, new object[] { context.NativeObject, NativeSocialShareComposerTypeHelper.CreateWithValue(type) } ); + } + + #endregion + #region Public methods + + public void AddAttachment(NativeBytesWrapper data, string mimeType, string fileName) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeSocialShareComposer][Method : AddAttachment]"); +#endif + Call(Native.Method.kAddAttachment, new object[] { data.NativeObject, mimeType, fileName } ); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeSocialShareComposer][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public void SetComposerType(NativeSocialShareComposerType type) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeSocialShareComposer][Method : SetComposerType]"); +#endif + Call(Native.Method.kSetComposerType, new object[] { NativeSocialShareComposerTypeHelper.CreateWithValue(type) } ); + } + public void SetText(string text) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeSocialShareComposer][Method : SetText]"); +#endif + Call(Native.Method.kSetText, new object[] { text } ); + } + public void SetUrl(string urlString) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeSocialShareComposer][Method : SetUrl]"); +#endif + Call(Native.Method.kSetUrl, new object[] { urlString } ); + } + public void Show(NativeSocialShareComposerListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeSocialShareComposer][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow, new object[] { listener } ); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.SocialShareComposer"; + + internal class Method + { + internal const string kAddAttachment = "addAttachment"; + internal const string kIsComposerAvailable = "isComposerAvailable"; + internal const string kSetText = "setText"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kSetComposerType = "setComposerType"; + internal const string kSetUrl = "setUrl"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposer.cs.meta new file mode 100644 index 00000000..87615ea4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2169edd2d26d2409b8e97b1c00d9bf5a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerListener.cs new file mode 100644 index 00000000..de68e2be --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerListener.cs @@ -0,0 +1,78 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public class NativeSocialShareComposerListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnActionDelegate(NativeSocialShareComposerResult result); + + #endregion + + #region Public callbacks + + public OnActionDelegate onActionCallback; + + #endregion + + + #region Constructors + + public NativeSocialShareComposerListener() : base("com.voxelbusters.essentialkit.sharingservices.ISharing$ISocialShareComposerListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onAction(AndroidJavaObject result) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onAction" + " " + "[" + "result" + " : " + result +"]"); +#endif + if(onActionCallback != null) + { + onActionCallback(NativeSocialShareComposerResultHelper.ReadFromValue(result)); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerListener.cs.meta new file mode 100644 index 00000000..f0b6e539 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ed0e941d7eee4d0daf653c2ba3d41ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerResult.cs new file mode 100644 index 00000000..063af45a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerResult.cs @@ -0,0 +1,35 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public enum NativeSocialShareComposerResult + { + Cancelled = 0, + Done = 1, + Unavailable = 2, + Unknown = 3 + } + public class NativeSocialShareComposerResultHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.Enums$SocialShareComposerResult"; + + public static AndroidJavaObject CreateWithValue(NativeSocialShareComposerResult value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeSocialShareComposerResultHelper : NativeSocialShareComposerResultHelper][Method(CreateWithValue) : NativeSocialShareComposerResult]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeSocialShareComposerResult ReadFromValue(AndroidJavaObject value) + { + return (NativeSocialShareComposerResult)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerResult.cs.meta new file mode 100644 index 00000000..fa4923b7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f730afd0b6b5941e49fc068e34f89be9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerType.cs new file mode 100644 index 00000000..91566dea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerType.cs @@ -0,0 +1,36 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public enum NativeSocialShareComposerType + { + None = 0, + Facebook = 1, + Twitter = 2, + Instagram = 3, + Whatsapp = 4 + } + public class NativeSocialShareComposerTypeHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.sharingservices.Enums$SocialShareComposerType"; + + public static AndroidJavaObject CreateWithValue(NativeSocialShareComposerType value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeSocialShareComposerTypeHelper : NativeSocialShareComposerTypeHelper][Method(CreateWithValue) : NativeSocialShareComposerType]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeSocialShareComposerType ReadFromValue(AndroidJavaObject value) + { + return (NativeSocialShareComposerType)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerType.cs.meta new file mode 100644 index 00000000..716393ad --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/NativeSocialShareComposerType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2416e4d1aa5064b649400c85d1580808 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/ShareSheet.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/ShareSheet.cs new file mode 100644 index 00000000..553d525f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/ShareSheet.cs @@ -0,0 +1,127 @@ +#if UNITY_ANDROID +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public sealed class ShareSheet : NativeShareSheetBase, INativeShareSheet + { +#region Fields + + private NativeShareSheet m_instance; + +#endregion + +#region Constructors + + public ShareSheet() + { + m_instance = new NativeShareSheet(NativeUnityPluginUtility.GetContext()); + } + + ~ShareSheet() + { + Dispose(false); + } + +#endregion + +#region Base class methods + + public override void AddText(string text) + { + m_instance.SetText(text); + } + + public override void AddScreenshot() + { + VoxelBusters.CoreLibrary.NativePlugins.Android.Utility.TakeScreenshot((byte[] data, string mimeType) => + { + AddImage(data, mimeType); + }); + } + + public override void AddImage(byte[] imageData, string mimeType) + { + AddAttachmentData(imageData, mimeType, DateTime.Now.Ticks.ToString() + GetFileExtension(mimeType)); + } + + public override void AddURL(URLString url) + { + m_instance.SetUrl(url.ToString()); + } + + public override void AddAttachment(byte[] data, string mimeType, string filename) + { + AddAttachmentData(data, mimeType, filename); + } + + public override void Show(Vector2 screenPosition) + { + SurrogateCoroutine.WaitForEndOfFrameAndInvoke(() => + { + m_instance.Show(new NativeShareSheetListener() + { + onActionCallback = (result) => + { + SendCloseEvent(Converter.from(result), null); + } + }); + }); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + +#endregion + +#region Private methods + + private void AddAttachmentData(byte[] data, string mimeType, string fileName) + { + m_instance.AddAttachment(new NativeBytesWrapper(data), mimeType, fileName); + } + + private string GetFileExtension(string mimeType) + { + if (MimeType.kJPGImage.Equals(mimeType)) + { + return ".jpg"; + } + else if (MimeType.kPNGImage.Equals(mimeType)) + { + return ".png"; + } + else + { + return ".jpg"; + } + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/ShareSheet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/ShareSheet.cs.meta new file mode 100644 index 00000000..58fb2c80 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/ShareSheet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6fb0a709d89a74965873d55dacea2254 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SharingServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SharingServicesInterface.cs new file mode 100644 index 00000000..69c4c39c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SharingServicesInterface.cs @@ -0,0 +1,70 @@ +#if UNITY_ANDROID +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public sealed class SharingServicesInterface : NativeSharingInterfaceBase, INativeSharingInterface + { + #region Constructors + + public SharingServicesInterface() + : base(isAvailable: true) + { + } + + #endregion + + #region Base methods + + public override bool CanSendMail() + { + return MailComposer.CanSendMail(); + } + + public override INativeMailComposer CreateMailComposer() + { + return new MailComposer(); + } + + public override bool CanSendText() + { + return MessageComposer.CanSendText(); + } + + public override bool CanSendAttachments() + { + return MessageComposer.CanSendAttachments(); + } + + public override bool CanSendSubject() + { + return MessageComposer.CanSendSubject(); + } + + public override INativeMessageComposer CreateMessageComposer() + { + return new MessageComposer(); + } + + public override INativeShareSheet CreateShareSheet() + { + return new ShareSheet(); + } + + public override bool IsSocialShareComposerAvailable(SocialShareComposerType composerType) + { + return SocialShareComposer.IsComposerAvailable(composerType); + } + + public override INativeSocialShareComposer CreateSocialShareComposer(SocialShareComposerType composerType) + { + return new SocialShareComposer(composerType); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SharingServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SharingServicesInterface.cs.meta new file mode 100644 index 00000000..65c9d22e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SharingServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64eb567fcdaae49319a4a4028cad1053 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SocialShareComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SocialShareComposer.cs new file mode 100644 index 00000000..076a6007 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SocialShareComposer.cs @@ -0,0 +1,95 @@ +#if UNITY_ANDROID +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Android +{ + public sealed class SocialShareComposer : NativeSocialShareComposerBase, INativeSocialShareComposer + { +#region Fields + + private NativeSocialShareComposer m_instance; + +#endregion + +#region Constructors + + public SocialShareComposer(SocialShareComposerType composerType) + { + m_instance = new NativeSocialShareComposer(NativeUnityPluginUtility.GetContext()); + m_instance.SetComposerType(Converter.from(composerType)); + } + + ~SocialShareComposer() + { + Dispose(false); + } + +#endregion + +#region Static methods + + internal static bool IsComposerAvailable(SocialShareComposerType composerType) + { + return NativeSocialShareComposer.IsComposerAvailable(NativeUnityPluginUtility.GetContext(), Converter.from(composerType)); + } + +#endregion + +#region Base class methods + + public override void SetText(string value) + { + m_instance.SetText(value); + } + + public override void AddScreenshot() + { + Utility.TakeScreenshot((byte[] data, string mimeType) => + { + m_instance.AddAttachment(new NativeBytesWrapper(data), MimeType.kJPGImage, DateTime.Now.Ticks.ToString() + ".jpg"); + }); + } + + //[Obsolete("Use AddImage(byte[] imageData, string mimeType, string fileNameWithoutExtension) instead")] //TODO + public override void AddImage(byte[] imageData) + { + m_instance.AddAttachment(new NativeBytesWrapper(imageData), MimeType.kJPGImage, DateTime.Now.Ticks.ToString() + ".jpg"); + } + + /*public override void AddImage(byte[] imageData, string mimeType, string fileNameWithoutExtension = null) + { + m_instance.AddAttachment(new NativeBytesWrapper(imageData), mimeType, (string.IsNullOrEmpty(fileNameWithoutExtension) ? DateTime.Now.Ticks.ToString() : fileNameWithoutExtension) + "." + MimeType.GetExtensionForType(mimeType)); + }*/ + + public override void AddURL(URLString url) + { + m_instance.SetUrl(url.ToString()); + } + + public override void Show(Vector2 screenPosition) + { + SurrogateCoroutine.WaitForEndOfFrameAndInvoke(() => + { + m_instance.Show(new NativeSocialShareComposerListener() + { + onActionCallback = (result) => + { + SendCloseEvent(Converter.from(result), null); + } + }); + }); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SocialShareComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SocialShareComposer.cs.meta new file mode 100644 index 00000000..d2d8cae1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/SharingServices/SocialShareComposer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2d4fa51eb67842d9bad847cb9dcae6e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/VoxelBusters.EssentialKit.AndroidModule.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/VoxelBusters.EssentialKit.AndroidModule.asmdef new file mode 100644 index 00000000..8bfa59f6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/VoxelBusters.EssentialKit.AndroidModule.asmdef @@ -0,0 +1,20 @@ +{ + "name": "VoxelBusters.EssentialKit.AndroidModule", + "references": [ + "VoxelBusters.CoreLibrary", + "VoxelBusters.CoreLibrary.NativePlugins", + "VoxelBusters.EssentialKit", + "VoxelBusters.CoreLibrary.NativePlugins.AndroidModule" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Android", + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/VoxelBusters.EssentialKit.AndroidModule.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/VoxelBusters.EssentialKit.AndroidModule.asmdef.meta new file mode 100644 index 00000000..039a6876 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/VoxelBusters.EssentialKit.AndroidModule.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1cb91d1d6ede2417186584b82bff147d +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView.meta new file mode 100644 index 00000000..764aef8b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a90de82a7417b41ba9d6e7dc9f937389 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/Converter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/Converter.cs new file mode 100644 index 00000000..22ec0b9b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/Converter.cs @@ -0,0 +1,25 @@ +#if UNITY_ANDROID +using System; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.WebViewCore.Android +{ + internal static class Converter + { + public static NativeWebKitWebViewStyle from(WebViewStyle style) + { + switch(style) + { + case WebViewStyle.Default: + return NativeWebKitWebViewStyle.Default; + case WebViewStyle.Popup: + return NativeWebKitWebViewStyle.Popup; + case WebViewStyle.Browser: + return NativeWebKitWebViewStyle.ToolBar; + default: + return NativeWebKitWebViewStyle.Default; + } + } + } +} +#endif diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/Converter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/Converter.cs.meta new file mode 100644 index 00000000..6ac476fa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5db2959c485fc4dc0a38cc67f48190f4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeEvaluateJavaScriptListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeEvaluateJavaScriptListener.cs new file mode 100644 index 00000000..1c1d1a55 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeEvaluateJavaScriptListener.cs @@ -0,0 +1,90 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.WebViewCore.Android +{ + public class NativeEvaluateJavaScriptListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnFailureDelegate(NativeErrorInfo error); + public delegate void OnSuccessDelegate(string result); + + #endregion + + #region Public callbacks + + public OnFailureDelegate onFailureCallback; + public OnSuccessDelegate onSuccessCallback; + + #endregion + + + #region Constructors + + public NativeEvaluateJavaScriptListener() : base("com.voxelbusters.essentialkit.webview.IEvaluateJavaScriptListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onFailure(AndroidJavaObject error) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onFailure" + " " + "[" + "error" + " : " + error +"]"); +#endif + if(onFailureCallback != null) + { + onFailureCallback(new NativeErrorInfo(error)); + } + } + public void onSuccess(string result) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onSuccess" + " " + "[" + "result" + " : " + result +"]"); +#endif + if(onSuccessCallback != null) + { + onSuccessCallback(result); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeEvaluateJavaScriptListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeEvaluateJavaScriptListener.cs.meta new file mode 100644 index 00000000..78bdc524 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeEvaluateJavaScriptListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd7d24dfcde2f4eb19b5385b00f6bc27 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebKitWebViewStyle.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebKitWebViewStyle.cs new file mode 100644 index 00000000..a73d717c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebKitWebViewStyle.cs @@ -0,0 +1,34 @@ +#if UNITY_ANDROID +using UnityEngine; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.WebViewCore.Android +{ + public enum NativeWebKitWebViewStyle + { + Default = 0, + Popup = 1, + ToolBar = 2 + } + public class NativeWebKitWebViewStyleHelper + { + internal const string kClassName = "com.voxelbusters.essentialkit.webview.WebKitWebViewStyle"; + + public static AndroidJavaObject CreateWithValue(NativeWebKitWebViewStyle value) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[NativeWebKitWebViewStyleHelper : NativeWebKitWebViewStyleHelper][Method(CreateWithValue) : NativeWebKitWebViewStyle]"); +#endif + AndroidJavaClass javaClass = new AndroidJavaClass(kClassName); + AndroidJavaObject[] values = javaClass.CallStatic("values"); + return values[(int)value]; + } + + public static NativeWebKitWebViewStyle ReadFromValue(AndroidJavaObject value) + { + return (NativeWebKitWebViewStyle)value.Call("ordinal"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebKitWebViewStyle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebKitWebViewStyle.cs.meta new file mode 100644 index 00000000..25714874 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebKitWebViewStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1db259cfbcb942379776e07a8c3c137 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewListener.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewListener.cs new file mode 100644 index 00000000..7c8cc84a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewListener.cs @@ -0,0 +1,138 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.WebViewCore.Android +{ + public class NativeWebViewListener : AndroidJavaProxy + { + #region Delegates + + public delegate void OnHideDelegate(); + public delegate void OnMessageReceivedDelegate(NativeWebViewMessage message); + public delegate void OnPageLoadErrorDelegate(string failingUrl, NativeErrorInfo description); + public delegate void OnPageLoadFinishedDelegate(string url); + public delegate void OnPageLoadStartedDelegate(); + public delegate void OnShowDelegate(); + + #endregion + + #region Public callbacks + + public OnHideDelegate onHideCallback; + public OnMessageReceivedDelegate onMessageReceivedCallback; + public OnPageLoadErrorDelegate onPageLoadErrorCallback; + public OnPageLoadFinishedDelegate onPageLoadFinishedCallback; + public OnPageLoadStartedDelegate onPageLoadStartedCallback; + public OnShowDelegate onShowCallback; + + #endregion + + + #region Constructors + + public NativeWebViewListener() : base("com.voxelbusters.essentialkit.webview.IWebViewListener") + { + } + + #endregion + + + #region Public methods +#if NATIVE_PLUGINS_DEBUG_ENABLED + public override AndroidJavaObject Invoke(string methodName, AndroidJavaObject[] javaArgs) + { + DebugLogger.Log("**************************************************"); + DebugLogger.Log("[Generic Invoke : " + methodName + "]" + " Args Length : " + (javaArgs != null ? javaArgs.Length : 0)); + if(javaArgs != null) + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + + foreach(AndroidJavaObject each in javaArgs) + { + if(each != null) + { + builder.Append(string.Format("[Type : {0} Value : {1}]", each.Call("getClass").Call("getName"), each.Call("toString"))); + builder.Append("\n"); + } + else + { + builder.Append("[Value : null]"); + builder.Append("\n"); + } + } + + DebugLogger.Log(builder.ToString()); + } + DebugLogger.Log("-----------------------------------------------------"); + return base.Invoke(methodName, javaArgs); + } +#endif + + public void onHide() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onHide" ); +#endif + if(onHideCallback != null) + { + onHideCallback(); + } + } + public void onMessageReceived(AndroidJavaObject message) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onMessageReceived" + " " + "[" + "message" + " : " + message +"]"); +#endif + if(onMessageReceivedCallback != null) + { + onMessageReceivedCallback(new NativeWebViewMessage(message)); + } + } + public void onPageLoadError(string failingUrl, AndroidJavaObject description) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onPageLoadError" + " " + "[" + "failingUrl" + " : " + failingUrl +"]" + " " + "[" + "description" + " : " + description +"]"); +#endif + if(onPageLoadErrorCallback != null) + { + onPageLoadErrorCallback(failingUrl, new NativeErrorInfo(description)); + } + } + public void onPageLoadFinished(string url) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onPageLoadFinished" + " " + "[" + "url" + " : " + url +"]"); +#endif + if(onPageLoadFinishedCallback != null) + { + onPageLoadFinishedCallback(url); + } + } + public void onPageLoadStarted() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onPageLoadStarted" ); +#endif + if(onPageLoadStartedCallback != null) + { + onPageLoadStartedCallback(); + } + } + public void onShow() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Proxy : Callback] : " + "onShow" ); +#endif + if(onShowCallback != null) + { + onShowCallback(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewListener.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewListener.cs.meta new file mode 100644 index 00000000..ee4ef54e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94e2f0b359e8649c3bae1a92a8b97c5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewMessage.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewMessage.cs new file mode 100644 index 00000000..c29e8303 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewMessage.cs @@ -0,0 +1,112 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.WebViewCore.Android +{ + public class NativeWebViewMessage : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Public properties + + public string Url + { + get + { + return Get("url"); + } + + set + { + Set("url", value); + } + } + + + public string Host + { + get + { + return Get("host"); + } + + set + { + Set("host", value); + } + } + + + public string Scheme + { + get + { + return Get("scheme"); + } + + set + { + Set("scheme", value); + } + } + + #endregion + #region Constructor + + // Default constructor + public NativeWebViewMessage(AndroidJavaObject androidJavaObject) : base(Native.kClassName, androidJavaObject) + { + } + public NativeWebViewMessage(NativeAndroidJavaObjectWrapper wrapper) : base(wrapper) + { + } + public NativeWebViewMessage() : base(Native.kClassName) + { + } + +#if NATIVE_PLUGINS_DEBUG_ENABLED + ~NativeWebViewMessage() + { + DebugLogger.Log("Disposing NativeWebViewMessage"); + } +#endif + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + + #endregion + #region Public methods + + public string GetArgumentValue(string key) + { + return Call(Native.Method.kGetArgumentValue, key); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.webview.WebViewMessage"; + + internal class Method + { + internal const string kGetArgumentValue = "getArgumentValue"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewMessage.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewMessage.cs.meta new file mode 100644 index 00000000..4261672f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebViewMessage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bda31f9d6817e484f975781d0f920513 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebkitWebView.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebkitWebView.cs new file mode 100644 index 00000000..5322d6a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebkitWebView.cs @@ -0,0 +1,333 @@ +#if UNITY_ANDROID +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using VoxelBusters.EssentialKit.Common.Android; +namespace VoxelBusters.EssentialKit.WebViewCore.Android +{ + public class NativeWebkitWebView : NativeAndroidJavaObjectWrapper + { + #region Static properties + + private static AndroidJavaClass m_nativeClass; + + #endregion + #region Private properties + private NativeActivity Activity + { + get; + set; + } + #endregion + + #region Constructor + + public NativeWebkitWebView(NativeContext context) : base(Native.kClassName, (object)context.NativeObject) + { + Activity = new NativeActivity(context); + } + + #endregion + #region Static methods + private static AndroidJavaClass GetClass() + { + if (m_nativeClass == null) + { + m_nativeClass = new AndroidJavaClass(Native.kClassName); + } + return m_nativeClass; + } + #endregion + #region Public methods + + public void AddNewScheme(string scheme) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : AddNewScheme]"); +#endif + Call(Native.Method.kAddNewScheme, new object[] { scheme } ); + }); + } + public void AdjustLayout() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method : AdjustLayout]"); +#endif + Call(Native.Method.kAdjustLayout); + } + public void ClearCache() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : ClearCache]"); +#endif + Call(Native.Method.kClearCache); + }); + } + public void ClearCookies() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : ClearCookies]"); +#endif + Call(Native.Method.kClearCookies); + }); + } + public void Destroy() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : Destroy]"); +#endif + Call(Native.Method.kDestroy); + }); + } + public void EvaluateJavaScriptFromString(string jsScript, NativeEvaluateJavaScriptListener listener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : EvaluateJavaScriptFromString]"); +#endif + Call(Native.Method.kEvaluateJavaScriptFromString, new object[] { jsScript, listener } ); + }); + } + public string GetFeatureName() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method : GetFeatureName]"); +#endif + return Call(Native.Method.kGetFeatureName); + } + public double GetProgress() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method : GetProgress]"); +#endif + return Call(Native.Method.kGetProgress); + } + public string GetTitle() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method : GetTitle]"); +#endif + return Call(Native.Method.kGetTitle); + } + public string GetUrl() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method : GetUrl]"); +#endif + return Call(Native.Method.kGetUrl); + } + public void Hide() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : Hide]"); +#endif + Call(Native.Method.kHide); + }); + } + public bool IsLoading() + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method : IsLoading]"); +#endif + return Call(Native.Method.kIsLoading); + } + public void LoadData(NativeBytesWrapper data, int length, string mimeType, string encoding, string baseUrl) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : LoadData]"); +#endif + Call(Native.Method.kLoadData, new object[] { data.NativeObject, length, mimeType, encoding, baseUrl } ); + }); + } + public void LoadHtmlString(string html, string baseUrl) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : LoadHtmlString]"); +#endif + Call(Native.Method.kLoadHtmlString, new object[] { html, baseUrl } ); + }); + } + public void LoadUrl(string url) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : LoadUrl]"); +#endif + Call(Native.Method.kLoadUrl, new object[] { url } ); + }); + } + public void Reload() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : Reload]"); +#endif + Call(Native.Method.kReload); + }); + } + public void RemoveScheme(string scheme) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : RemoveScheme]"); +#endif + Call(Native.Method.kRemoveScheme, new object[] { scheme } ); + }); + } + public void SetBackgroundColor(float red, float green, float blue, float alpha) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetBackgroundColor]"); +#endif + Call(Native.Method.kSetBackgroundColor, new object[] { red, green, blue, alpha } ); + }); + } + public void SetBounce(bool canBounce) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetBounce]"); +#endif + Call(Native.Method.kSetBounce, new object[] { canBounce } ); + }); + } + public void SetCanGoBack(bool canGoBack) + { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method : SetCanGoBack]"); +#endif + Call(Native.Method.kSetCanGoBack, new object[] { canGoBack } ); + } + public void SetFrame(float x, float y, float width, float height) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetFrame]"); +#endif + Call(Native.Method.kSetFrame, new object[] { x, y, width, height } ); + }); + } + public void SetJavaScriptEnabled(bool enable) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetJavaScriptEnabled]"); +#endif + Call(Native.Method.kSetJavaScriptEnabled, new object[] { enable } ); + }); + } + public void SetNavigation(bool canGoBack, bool canGoForward) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetNavigation]"); +#endif + Call(Native.Method.kSetNavigation, new object[] { canGoBack, canGoForward } ); + }); + } + public void SetScalesPageToFit(bool scaleToFit) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetScalesPageToFit]"); +#endif + Call(Native.Method.kSetScalesPageToFit, new object[] { scaleToFit } ); + }); + } + public void SetStyle(NativeWebKitWebViewStyle style) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetStyle]"); +#endif + Call(Native.Method.kSetStyle, new object[] { NativeWebKitWebViewStyleHelper.CreateWithValue(style) } ); + }); + } + public void SetViewListener(NativeWebViewListener viewListener) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetViewListener]"); +#endif + Call(Native.Method.kSetViewListener, new object[] { viewListener } ); + }); + } + public void SetZoom(bool enable) + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : SetZoom]"); +#endif + Call(Native.Method.kSetZoom, new object[] { enable } ); + }); + } + public void Show() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : Show]"); +#endif + Call(Native.Method.kShow); + }); + } + public void StopLoading() + { + Activity.RunOnUiThread(() => { +#if NATIVE_PLUGINS_DEBUG_ENABLED + DebugLogger.Log("[Class : NativeWebkitWebView][Method(RunOnUiThread) : StopLoading]"); +#endif + Call(Native.Method.kStopLoading); + }); + } + + #endregion + + internal class Native + { + internal const string kClassName = "com.voxelbusters.essentialkit.webview.WebkitWebView"; + + internal class Method + { + internal const string kGetTitle = "getTitle"; + internal const string kSetStyle = "setStyle"; + internal const string kSetFrame = "setFrame"; + internal const string kLoadData = "loadData"; + internal const string kRemoveScheme = "removeScheme"; + internal const string kAdjustLayout = "adjustLayout"; + internal const string kClearCookies = "clearCookies"; + internal const string kAddNewScheme = "addNewScheme"; + internal const string kSetCanGoBack = "setCanGoBack"; + internal const string kSetJavaScriptEnabled = "setJavaScriptEnabled"; + internal const string kSetNavigation = "setNavigation"; + internal const string kStopLoading = "stopLoading"; + internal const string kGetProgress = "getProgress"; + internal const string kLoadUrl = "loadUrl"; + internal const string kSetZoom = "setZoom"; + internal const string kDestroy = "destroy"; + internal const string kSetBackgroundColor = "setBackgroundColor"; + internal const string kSetScalesPageToFit = "setScalesPageToFit"; + internal const string kClearCache = "clearCache"; + internal const string kIsLoading = "isLoading"; + internal const string kSetBounce = "setBounce"; + internal const string kGetFeatureName = "getFeatureName"; + internal const string kLoadHtmlString = "loadHtmlString"; + internal const string kSetViewListener = "setViewListener"; + internal const string kReload = "reload"; + internal const string kGetUrl = "getUrl"; + internal const string kEvaluateJavaScriptFromString = "evaluateJavaScriptFromString"; + internal const string kHide = "hide"; + internal const string kShow = "show"; + } + + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebkitWebView.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebkitWebView.cs.meta new file mode 100644 index 00000000..e9172f3c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/NativeWebkitWebView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d34f2da7012f40038d06d92ae4322be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/WebView.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/WebView.cs new file mode 100644 index 00000000..b062405e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/WebView.cs @@ -0,0 +1,165 @@ +#if UNITY_ANDROID +using System; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.Android; +using UnityEngine; +using VoxelBusters.EssentialKit.Common.Android; + +namespace VoxelBusters.EssentialKit.WebViewCore.Android +{ + public sealed class WebView : NativeWebViewBase, INativeWebView + { +#region Fields + + private NativeWebkitWebView m_instance; + +#endregion + +#region Constructors + + public WebView() + : base(isAvailable: true) + { + m_instance = new NativeWebkitWebView(NativeUnityPluginUtility.GetContext()); + m_instance.SetViewListener(new NativeWebViewListener() + { + onPageLoadStartedCallback = () => SendLoadStartEvent(null), + onPageLoadErrorCallback = (failingUrl, error) => + { + DebugLogger.Log(string.Format("Failing Url : {0} Description : {1}", failingUrl, error)); + SendLoadFinishEvent(error.Convert(WebViewError.kDomain)); + }, + onPageLoadFinishedCallback = (url) => SendLoadFinishEvent(null), + onMessageReceivedCallback = (message) => + { + SendURLSchemeMatchFoundEvent(message.Url); + }, + onHideCallback = () => SendHideEvent(null), + onShowCallback = () => SendShowEvent(null) + }) ; + } + + ~WebView() + { + Dispose(false); + } + +#endregion + +#region Base class methods + + public override string GetURL() + { + return m_instance.GetUrl(); + } + + public override string GetTitle() + { + return m_instance.GetTitle(); + } + + public override void SetFrame(Rect value) + { + UnityRect rect = (UnityRect)value; + rect.X /= Screen.width; + rect.Y /= Screen.height; + rect.Width /= Screen.width; + rect.Height /= Screen.height; + m_instance.SetFrame(rect.X, rect.Y, rect.Width, rect.Height); + } + + public override void SetStyle(WebViewStyle style) + { + m_instance.SetStyle(Converter.from(style)); + } + + public override void SetScalesPageToFit(bool value) + { + m_instance.SetScalesPageToFit(value); + } + + public override void SetCanBounce(bool value) + { + m_instance.SetBounce(value); + } + + public override void SetBackgroundColor(Color value) + { + m_instance.SetBackgroundColor(value.r, value.g, value.b, value.a); + } + + public override double GetProgress() + { + return m_instance.GetProgress(); + } + + public override bool GetIsLoading() + { + return m_instance.IsLoading(); + } + + public override void SetJavaScriptEnabled(bool value) + { + m_instance.SetJavaScriptEnabled(value); + } + + public override void Show() + { + m_instance.Show(); + } + + public override void Hide() + { + m_instance.Hide(); + } + + public override void LoadURL(string url) + { + m_instance.LoadUrl(url); + } + + public override void LoadHtmlString(string htmlString, string baseURL) + { + m_instance.LoadHtmlString(htmlString, baseURL); + } + + public override void LoadData(byte[] data, string mimeType, string textEncodingName, string baseURL) + { + m_instance.LoadData(new NativeBytesWrapper(data), data.Length, mimeType, textEncodingName, baseURL); + } + + public override void Reload() + { + m_instance.Reload(); + } + + public override void StopLoading() + { + m_instance.StopLoading(); + } + + public override void RunJavaScript(string script, RunJavaScriptInternalCallback callback) + { + m_instance.EvaluateJavaScriptFromString(script, new NativeEvaluateJavaScriptListener() + { + onSuccessCallback = (result) => callback(result, null), + onFailureCallback = (error) => callback(null, error.Convert(WebViewError.kDomain)) + }); + } + + public override void AddURLScheme(string urlScheme) + { + m_instance.AddNewScheme(urlScheme); + } + + public override void ClearCache() + { + m_instance.ClearCache(); + //TODO: Add clear cookies - Required for oauth examples + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/WebView.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/WebView.cs.meta new file mode 100644 index 00000000..9d587cce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Android/WebView/WebView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d06869b2683649f68e070b623f115ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/AssemblyInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/AssemblyInfo.cs new file mode 100644 index 00000000..0fa5609e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/AssemblyInfo.cs @@ -0,0 +1,9 @@ +using System.Runtime.CompilerServices; + +// make it visible for internal modules +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.iOSModule")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.AndroidModule")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.SimulatorModule")] + +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.Editor")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.Editor.Build.iOSModule")] \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/AssemblyInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/AssemblyInfo.cs.meta new file mode 100644 index 00000000..cd2cf556 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb17bde8d3d5a4cdaa94d42b1475564c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core.meta new file mode 100644 index 00000000..2387b967 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5025076de8a2f4ec49dd5c8ebdde093a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook.meta new file mode 100644 index 00000000..21aa2112 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb24e7eeb8eb3498c97e8c4a077f9beb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBook.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBook.cs new file mode 100644 index 00000000..2231665e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBook.cs @@ -0,0 +1,136 @@ +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.AddressBookCore; + +namespace VoxelBusters.EssentialKit +{ + /** + * @defgroup AddressBook AddressBook + * @brief Provides cross-platform interface to access the contact information. + */ + + /// + /// The class provides cross-platform interface to access the contact information. + /// + /// + /// + /// In iOS/Android platform, users can grant or deny access to contact data on a per-application basis. + /// And the user is prompted only the first time is requested; any subsequent calls use the existing permissions. + /// You can provide custom usage description in Address Book settings of Essential Kit window. + /// + /// + /// @ingroup AddressBook + public static class AddressBook + { + #region Static fields + + [ClearOnReload] + private static INativeAddressBookInterface s_nativeInterface = null; + + #endregion + + #region Static properties + + public static AddressBookUnitySettings UnitySettings { get; private set; } + + #endregion + + #region Static methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + ///@name Advanced Usage + ///@{ + /// + /// [Advanced] Initializes the address book module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + /// The settings to be used for initialization. + /// + /// + /// The settings configure the default image to be used for address book contacts. + /// + /// + public static void Initialize(AddressBookUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Set default properties + UnitySettings = settings; + AddressBookContactBase.defaultImage = settings.DefaultImage; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.AddressBook, true); + } + ///@} + + /// + /// Returns the current permission status provided to access the contact data. + /// + /// + /// To see different authorization status, see . + /// + /// The current permission status to access the contact data. + public static AddressBookContactsAccessStatus GetContactsAccessStatus() + { + try + { + // make request + return s_nativeInterface.GetContactsAccessStatus(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return AddressBookContactsAccessStatus.NotDetermined; + } + } + + /// + /// Once after getting the user permission, retrieves all the contact information saved in address book database. + /// + /// The options to customize the retrieval of contacts. Can be created with . + /// The delegate callback that will be executed after the operation has a result or error. + /// + /// + /// // example usage + /// void OnReadContactsFinished(AddressBookReadContactsResult result, Error error) + /// { + /// // code to handle the retrieved contacts + /// } + /// + /// // usage + /// AddressBook.ReadContacts(new ReadContactsOptions.Builder().WithLimit(10).Build(), OnReadContactsFinished); + /// + /// + public static void ReadContacts(ReadContactsOptions options, EventCallback callback) + { + try + { + // make request + s_nativeInterface.ReadContacts(options, (contacts, nextOffset, error) => SendReadContactsResult(callback, contacts, nextOffset, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + + #region Callback methods + + private static void SendReadContactsResult(EventCallback callback, IAddressBookContact[] contacts, int nextOffset, Error error) + { + // send result to caller object + var result = new AddressBookReadContactsResult(contacts: contacts ?? new IAddressBookContact[0], nextOffset); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBook.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBook.cs.meta new file mode 100644 index 00000000..27cba852 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBook.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9c60aa0b8f5774dc38495acbcdfd3e9e +timeCreated: 1541678064 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactBase.cs new file mode 100644 index 00000000..263b5fa0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactBase.cs @@ -0,0 +1,114 @@ +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AddressBookCore +{ + public abstract class AddressBookContactBase : NativeObjectBase, IAddressBookContact + { + #region Static fields + + internal static Texture2D defaultImage; + + #endregion + + #region Fields + + private TextureData m_cachedData; + + #endregion + + #region Abstract methods + + protected abstract string GetFirstNameInternal(); + + protected abstract string GetMiddleNameInternal(); + + protected abstract string GetLastNameInternal(); + + protected abstract string[] GetPhoneNumbersInternal(); + + protected abstract string[] GetEmailAddressesInternal(); + + protected abstract string GetCompanyNameInternal(); + + protected abstract void LoadImageInternal(LoadImageInternalCallback callback); + + #endregion + + #region Base methods + + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("AddressBookContact { "); + sb.Append("FirstName: ").Append(FirstName).Append(" "); + sb.Append("LastName: ").Append(LastName); + sb.Append("}"); + return sb.ToString(); + } + + #endregion + + #region IAddressBookContact implementation + + public string FirstName => GetFirstNameInternal(); + + public string MiddleName => GetMiddleNameInternal(); + + public string LastName => GetLastNameInternal(); + + public string[] PhoneNumbers => GetPhoneNumbersInternal(); + + public string[] EmailAddresses => GetEmailAddressesInternal(); + + public string CompanyName => GetCompanyNameInternal(); + + public void LoadImage(EventCallback callback) + { + + // send the default image if exists + TextureData proxyData = null; + if (defaultImage != null) + { + proxyData = new TextureData(defaultImage); + CallbackDispatcher.InvokeOnMainThread(callback, proxyData, null); + } + + // check whether cached inforamtion is available + if (null == m_cachedData) + { + // make actual call + LoadImageInternal((rawData, error) => + { + // create data container + var result = (rawData == null) ? null : new TextureData(rawData); + + // load placeholder if no rawData + if (result == null) + { + result = proxyData; + } + + // save result + if (result != null) + { + m_cachedData = result; + } + + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + }); + } + else + { + CallbackDispatcher.InvokeOnMainThread(callback, m_cachedData, null); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactBase.cs.meta new file mode 100644 index 00000000..0b435379 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 43cdbb49e46c347b28fad1da69073fc1 +timeCreated: 1553091765 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactsAccessStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactsAccessStatus.cs new file mode 100644 index 00000000..bcc854fc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactsAccessStatus.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// An access status the user can grant for an app to access the contacts information. + /// + public enum AddressBookContactsAccessStatus + { + /// The user has not yet made a choice regarding whether this app can access the address book data. + NotDetermined, + + /// The application is not authorized to access the address book data. + Restricted, + + /// The user explicitly denied access to address book data for this application. + Denied, + + /// The application is authorized to access address book data. + Authorized, + + /// + /// The application is authorized to access limited address book data. + /// + Limited + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactsAccessStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactsAccessStatus.cs.meta new file mode 100644 index 00000000..064e85c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookContactsAccessStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce67cbe09d453493eaf503e6f0e601fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookError.cs new file mode 100644 index 00000000..2615e487 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookError.cs @@ -0,0 +1,36 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public static class AddressBookError + { + #region Constants + + public const string kDomain = "[Essential Kit] Address Book"; + + #endregion + + #region Properties + + public static Error Unknown { get; } = CreateError( + code: (int)AddressBookErrorCode.Unknown, + description: "Unknown error." + ); + + public static Error PermissionDenied { get; } = CreateError( + code: (int)AddressBookErrorCode.PermissionDenied, + description: "Permission denied by the user." + ); + + #endregion + + #region Static methods + + private static Error CreateError(int code, string description) => new Error( + domain: kDomain, + code: code, + description: description); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookError.cs.meta new file mode 100644 index 00000000..8487904d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49c6da4fe24b542ffb1a88616ef4401a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookErrorCode.cs new file mode 100644 index 00000000..403ee5bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookErrorCode.cs @@ -0,0 +1,20 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [IncludeInDocs] + /// + /// Contains the list of errors codes that can occur during address book operations. + /// + public enum AddressBookErrorCode : int + { + /// + /// Unknown error occurred. + /// + Unknown, + /// + /// Permission to access the address book was denied. + /// + PermissionDenied + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookErrorCode.cs.meta new file mode 100644 index 00000000..c6253ab1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e02130875def0467ab4d83ed75901a5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookReadContactsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookReadContactsResult.cs new file mode 100644 index 00000000..3f6d5aba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookReadContactsResult.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup AddressBook + public class AddressBookReadContactsResult + { + #region Properties + + /// + /// Contains the contacts details retrieved from address book. + /// + /// If the requested operation was successful, this property holds an array of objects; otherwise, this is null. + public IAddressBookContact[] Contacts { get; private set; } + + + /// + /// Value to pass as offset value in options for reading next set/page of contacts. This value will be -1 if no more data exists. + /// + public int NextOffset { get; private set; } + + #endregion + + #region Constructors + + internal AddressBookReadContactsResult(IAddressBookContact[] contacts, int nextOffset) + { + // Set properties + Contacts = contacts; + NextOffset = nextOffset; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookReadContactsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookReadContactsResult.cs.meta new file mode 100644 index 00000000..b2b57e7e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookReadContactsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76b5a35cbc1504fd5be3ce8fff8bd0fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookRequestContactsAccessResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookRequestContactsAccessResult.cs new file mode 100644 index 00000000..6cb7411d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookRequestContactsAccessResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup AddressBook + public class AddressBookRequestContactsAccessResult + { + #region Properties + + /// + /// Returns the permission granted to access address book. + /// + public AddressBookContactsAccessStatus AccessStatus { get; private set; } + + #endregion + + #region Constrcutors + + internal AddressBookRequestContactsAccessResult(AddressBookContactsAccessStatus accessStatus) + { + // Set properties + AccessStatus = accessStatus; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookRequestContactsAccessResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookRequestContactsAccessResult.cs.meta new file mode 100644 index 00000000..3015ed8e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/AddressBookRequestContactsAccessResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7985e212be595489787503ac2b36173a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/Delegates.cs new file mode 100644 index 00000000..fe9b8d10 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/Delegates.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.AddressBookCore +{ + public delegate void GetContactsAccessStatusInternalCallback(AddressBookContactsAccessStatus accessStatus); + + public delegate void ReadContactsInternalCallback(IAddressBookContact[] contacts, int nextOffset, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/Delegates.cs.meta new file mode 100644 index 00000000..319b14ae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 339863e507dfd42f8b892c7fc185de6c +timeCreated: 1554433886 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContact.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContact.cs new file mode 100644 index 00000000..ecc4fc5f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContact.cs @@ -0,0 +1,56 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access contact properties, such as contact’s name, image, phone numbers etc. + /// + /// @ingroup AddressBook + public interface IAddressBookContact + { + #region Properties + + /// + /// The first name of the contact. (read-only) + /// + string FirstName { get; } + + /// + /// The middle name of the contact. (read-only) + /// + string MiddleName { get; } + + /// + /// The last name of the contact. (read-only) + /// + string LastName { get; } + + /// + /// An array of phone numbers of the contact. (read-only) + /// + string[] PhoneNumbers { get; } + + /// + /// An array of email addresses of the contact. (read-only) + /// + string[] EmailAddresses { get; } + + string CompanyName { get; } + + #endregion + + #region Methods + + /// + /// Asynchronously loads the profile picture of a contact. + /// + /// The callback to be executed when request is completed. + void LoadImage(EventCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContact.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContact.cs.meta new file mode 100644 index 00000000..234c0432 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContact.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 686aa46cec4c949e7a3fe328cbb7ecc3 +timeCreated: 1547195017 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContactsEnumerator.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContactsEnumerator.cs new file mode 100644 index 00000000..180638c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContactsEnumerator.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public interface IAddressBookContactsEnumerator : IEnumerator + { + #region Properties + + int BlockSize { get; } + + int AvailableContactsCount { get; } + + #endregion + + #region Methods + + IAddressBookContact GetContact(int index); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContactsEnumerator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContactsEnumerator.cs.meta new file mode 100644 index 00000000..4303b0c6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/IAddressBookContactsEnumerator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9b0e4956b197146888cf8692bae76274 +timeCreated: 1577517724 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/INativeAddressBookInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/INativeAddressBookInterface.cs new file mode 100644 index 00000000..fb0a9d83 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/INativeAddressBookInterface.cs @@ -0,0 +1,15 @@ +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AddressBookCore +{ + public interface INativeAddressBookInterface : INativeFeatureInterface + { + #region Methods + + AddressBookContactsAccessStatus GetContactsAccessStatus(); + + void ReadContacts(ReadContactsOptions options, ReadContactsInternalCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/INativeAddressBookInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/INativeAddressBookInterface.cs.meta new file mode 100644 index 00000000..846caa94 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/INativeAddressBookInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d56e9bb6ca154681bace8f6f9fca729 +timeCreated: 1547660629 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookContactData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookContactData.cs new file mode 100644 index 00000000..7d6d877d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookContactData.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.AddressBookCore +{ + [StructLayout(LayoutKind.Sequential)] + public struct NativeAddressBookContactData + { + #region Properties + + public IntPtr NativeObjectPtr { get; private set; } + + public IntPtr FirstNamePtr { get; private set; } + + public IntPtr MiddleNamePtr { get; private set; } + + public IntPtr LastNamePtr { get; private set; } + + public IntPtr ImageDataPtr { get; private set; } + + public int PhoneNumbersCount { get; private set; } + + public IntPtr PhoneNumbersPtr { get; private set; } + + public int EmailAddressesCount { get; private set; } + + public IntPtr EmailAddressesPtr { get; private set; } + + public IntPtr CompanyNamePtr { get; private set; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookContactData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookContactData.cs.meta new file mode 100644 index 00000000..417ae887 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookContactData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 777dc7f6ff7534d52acfc9dd9270427c +timeCreated: 1547278783 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookInterfaceBase.cs new file mode 100644 index 00000000..a9cd542a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookInterfaceBase.cs @@ -0,0 +1,23 @@ +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AddressBookCore +{ + public abstract class NativeAddressBookInterfaceBase : NativeFeatureInterfaceBase, INativeAddressBookInterface + { + #region Constructors + + protected NativeAddressBookInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeAddressBookInterface implementation + + public abstract AddressBookContactsAccessStatus GetContactsAccessStatus(); + + public abstract void ReadContacts(ReadContactsOptions options, ReadContactsInternalCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookInterfaceBase.cs.meta new file mode 100644 index 00000000..c604b6d5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NativeAddressBookInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4bb398f1d29844c328fe5271a73c6e37 +timeCreated: 1549871286 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NullAddressBookInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NullAddressBookInterface.cs new file mode 100644 index 00000000..ee89f15e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NullAddressBookInterface.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AddressBookCore +{ + internal class NullAddressBookInterface : NativeAddressBookInterfaceBase, INativeAddressBookInterface + { + #region Constructors + + public NullAddressBookInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("AddressBook"); + } + + #endregion + + #region Base class methods + + public override AddressBookContactsAccessStatus GetContactsAccessStatus() + { + LogNotSupported(); + + return AddressBookContactsAccessStatus.Restricted; + } + + public override void ReadContacts(ReadContactsOptions options, ReadContactsInternalCallback callback) + { + LogNotSupported(); + + callback(null, -1, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NullAddressBookInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NullAddressBookInterface.cs.meta new file mode 100644 index 00000000..619836ba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/NullAddressBookInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3af01690d4b0248bc8ea552b9df971d7 +timeCreated: 1562653105 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsConstraint.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsConstraint.cs new file mode 100644 index 00000000..1c9e9092 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsConstraint.cs @@ -0,0 +1,32 @@ +using System; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents constraints for reading contacts. + /// note: You can set multiple constraints at once. + /// + /// + /// By default, the module will return all the contacts. + /// + [Flags] + public enum ReadContactsConstraint + { + /// + /// No constraints. + /// + None = 0, + /// + /// Must include name of the contact. + /// + MustIncludeName = 1 << 0, + /// + /// Must include phone number of the contact. + /// + MustIncludePhoneNumber = 1 << 1, + /// + /// Must include email of the contact. + /// + MustIncludeEmail = 1 << 2 + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsConstraint.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsConstraint.cs.meta new file mode 100644 index 00000000..c0094dad --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsConstraint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1151cb8d65bb499cb1decdd5a7015b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsOptions.cs new file mode 100644 index 00000000..d2e2d132 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsOptions.cs @@ -0,0 +1,84 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents a set of options that can be used to read contacts from the user's device. + /// + /// @ingroup AddressBook + public class ReadContactsOptions + { + /// + /// The maximum number of contacts to return. + /// + /// + /// If the value is < 1, all contacts will be retrieved. + /// + public int Limit { get; private set; } + + /// + /// The number of contacts to skip. + /// + /// + /// This value is used to implement pagination. + /// + public int Offset { get; private set; } + + /// + /// The constraints for the contacts to be retrieved. + /// + public ReadContactsConstraint Constraints { get; private set; } + + private ReadContactsOptions() {} + + public class Builder + { + private ReadContactsOptions m_options; + + public Builder() + { + m_options = new ReadContactsOptions(); + } + + /// + /// Sets the maximum number of contacts to return. + /// + /// The maximum number of contacts to return. + /// The current Builder instance. + public Builder WithLimit(int limit) + { + m_options.Limit = limit; + return this; + } + + /// + /// Sets the number of contacts to skip. + /// + /// The number of contacts to skip. + /// The current Builder instance. + public Builder WithOffset(int offset) + { + m_options.Offset = offset; + return this; + } + + /// + /// Sets the constraints for the contacts to be retrieved. + /// + /// The constraints for the contacts to be retrieved. + /// The current Builder instance. + public Builder WithConstraints(ReadContactsConstraint constraints) + { + m_options.Constraints = constraints; + return this; + } + + /// + /// Builds a instance. + /// + /// The built instance. + public ReadContactsOptions Build() + { + return m_options; + } + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsOptions.cs.meta new file mode 100644 index 00000000..2b1df9ed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AddressBook/ReadContactsOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5dd00b948684f4940a40ee98b7eb0a7a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater.meta new file mode 100644 index 00000000..a8c9c163 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d50057cb65c3d4ec692e5d8d762c2041 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdater.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdater.cs new file mode 100644 index 00000000..773406eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdater.cs @@ -0,0 +1,101 @@ +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.AppUpdaterCore; + +namespace VoxelBusters.EssentialKit +{ + /** + * @defgroup AppUpdater AppUpdater + * @brief Provides cross-platform interface to facilitate updating the current version of the application. + */ + + /// + /// The AppUpdater class provides cross-platform interface to facilitate updating the current version of the application. + /// + /// + /// + /// On iOS platform, an alert is shown to let the user update the application. + /// On Android, it uses native provided In-App update feature and if it fails to update, an alert is shown to let the user update the application. + /// + /// + /// @ingroup AppUpdater + public static class AppUpdater + { + #region Static fields + + [ClearOnReload] + private static INativeAppUpdaterInterface s_nativeInterface = null; + + #endregion + + #region Static properties + + public static AppUpdaterUnitySettings UnitySettings { get; private set; } + + #endregion + + #region Static methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + /// + /// Initialize the AppUpdater module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + /// The settings to be used for initialization. + /// + /// + /// The settings configure the behavior of the AppUpdater module. + /// + /// + public static void Initialize(AppUpdaterUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Set default properties + UnitySettings = settings; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.AppUpdater, true); + } + + + /// + /// Request the latest available update information for the current version of the application. + /// + /// The callback that will be executed after the operation has a result or error. + /// + /// + /// The callback will be invoked with an containing the result + /// of the operation. + /// + /// + public static void RequestUpdateInfo(EventCallback callback) + { + // Make request + s_nativeInterface.RequestUpdateInfo((result, error) => CallbackDispatcher.InvokeOnMainThread(callback, result, error)); + } + + /// + /// Shows a prompt to the user to update the app. + /// + /// The options to customize the prompt. instance can be created with + /// The callback that will be executed after the operation has a result or error. + /// + /// + /// The prompt will be dismissed when the user selects an option only if IsForceUpdate is false provided in the . + /// + /// + /// The callback will receive a boolean value indicating whether the user chose to update the app. + /// + /// + public static void PromptUpdate(PromptUpdateOptions options, EventCallback callback) + { + s_nativeInterface.PromptUpdate(options, (result, error) => CallbackDispatcher.InvokeOnMainThread(callback, result, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdater.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdater.cs.meta new file mode 100644 index 00000000..cbf1d6d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdater.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 49b0b8b05b4044a76bb6825d5e036508 +timeCreated: 1541678064 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterError.cs new file mode 100644 index 00000000..bc43ef34 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterError.cs @@ -0,0 +1,71 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public static class AppUpdaterError + { + + private static string kDomain = "App Updater"; + + public static Error Unknown + { + get + { + return CreateError(AppUpdaterErrorCode.Unknown, "Unknown error"); + } + } + + public static Error NetworkIssue + { + get + { + return CreateError(AppUpdaterErrorCode.NetworkIssue, "Network issue"); + } + } + + public static Error UpdateNotCompatible + { + get + { + return CreateError(AppUpdaterErrorCode.UpdateNotCompatible, "Update not compatible"); + } + } + + public static Error UpdateInfoNotAvailable + { + get + { + return CreateError(AppUpdaterErrorCode.UpdateInfoNotAvailable, "Update info not available. You need to request it before prompting an update."); + } + } + + public static Error UpdateNotAvailable + { + get + { + return CreateError(AppUpdaterErrorCode.UpdateNotAvailable, "Update not available"); + } + } + + public static Error UpdateInProgress + { + get + { + return CreateError(AppUpdaterErrorCode.UpdateInProgress, "Update in progress"); + } + } + + public static Error UpdateCancelled + { + get + { + return CreateError(AppUpdaterErrorCode.UpdateCancelled, "Update cancelled"); + } + } + + public static Error CreateError(AppUpdaterErrorCode code, string description) + { + return new Error(kDomain, (int)code, description); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterError.cs.meta new file mode 100644 index 00000000..c622bacc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b84276df37794095b52bc590ea0ec58 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterErrorCode.cs new file mode 100644 index 00000000..f96c8fb0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterErrorCode.cs @@ -0,0 +1,45 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The error codes for AppUpdater. + /// + public enum AppUpdaterErrorCode + { + /// + /// The error code is unknown. + /// + Unknown, + + /// + /// There is a network issue. + /// + NetworkIssue, + + /// + /// The update is not compatible with the current version. + /// + UpdateNotCompatible, + + /// + /// There is no update info fetched for the current version. + /// + UpdateInfoNotAvailable, + + /// + /// The update is not available. + /// + UpdateNotAvailable, + + /// + /// The update is already in progress. + /// + UpdateInProgress, + + /// + /// The update has been cancelled. + /// + UpdateCancelled + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterErrorCode.cs.meta new file mode 100644 index 00000000..4ed28de7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96c489ff2d0d344129e4b6bd40e6930d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateInfo.cs new file mode 100644 index 00000000..d01acae6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateInfo.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The class provides information related to the status of the update. + /// + /// @ingroup AppUpdater + public class AppUpdaterUpdateInfo + { + #region Properties + + /// + /// The status that indicates if an update is available or not available or in progress. + /// + public AppUpdaterUpdateStatus Status { get; private set; } + + private int BuildTag {get; set;} + + #endregion + + #region Constructors + + internal AppUpdaterUpdateInfo(AppUpdaterUpdateStatus status, int buildTag) + { + // Set properties + Status = status; + BuildTag = buildTag; + } + + #endregion + + public override string ToString() + { + return $"[Status={Status}]"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateInfo.cs.meta new file mode 100644 index 00000000..7df264e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2f8bbd8ad20b48f7af39ecfc99db38e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateStatus.cs new file mode 100644 index 00000000..80779d61 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateStatus.cs @@ -0,0 +1,30 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// The status of the application update. + /// + public enum AppUpdaterUpdateStatus + { + /// + /// The application update status is unknown. + /// + Unknown = 0, + + /// + /// The application is not up to date and needs to be updated. + /// + Available = 1, + + /// + /// The application is up to date. + /// + NotAvailable = 2, + + /// + /// The application is currently being updated. + /// + InProgress = 3, + + Downloaded = 4 + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateStatus.cs.meta new file mode 100644 index 00000000..c6a4f1d9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/AppUpdaterUpdateStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7c374de37ceb448a9598ba856e52781 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/Delegates.cs new file mode 100644 index 00000000..9f21266b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/Delegates.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore +{ + public delegate void GetContactsAccessStatusInternalCallback(AddressBookContactsAccessStatus accessStatus); + + public delegate void ReadContactsInternalCallback(IAddressBookContact[] contacts, int nextOffset, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/Delegates.cs.meta new file mode 100644 index 00000000..bd6cfc8c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 550b47ce95f6d4996926bac2286b662c +timeCreated: 1554433886 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/INativeAppUpdaterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/INativeAppUpdaterInterface.cs new file mode 100644 index 00000000..af95f080 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/INativeAppUpdaterInterface.cs @@ -0,0 +1,16 @@ +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore +{ + public interface INativeAppUpdaterInterface : INativeFeatureInterface + { + #region Methods + + void RequestUpdateInfo(EventCallback callback); + + void PromptUpdate(PromptUpdateOptions options, EventCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/INativeAppUpdaterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/INativeAppUpdaterInterface.cs.meta new file mode 100644 index 00000000..99c37e91 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/INativeAppUpdaterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0d7e50693ae7342f192e2dd47300d309 +timeCreated: 1547660629 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/NullAppUpdaterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/NullAppUpdaterInterface.cs new file mode 100644 index 00000000..9cf963cf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/NullAppUpdaterInterface.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore +{ + internal class NullAppUpdaterInterface : NativeFeatureInterfaceBase, INativeAppUpdaterInterface + { + #region Constructors + + public NullAppUpdaterInterface(): base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("AddressBook"); + } + + #endregion + + #region INativeAppUpdaterInterface implementation methods + + public void RequestUpdateInfo(EventCallback callback) + { + LogNotSupported(); + } + + public void PromptUpdate(PromptUpdateOptions options, EventCallback callback) + { + LogNotSupported(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/NullAppUpdaterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/NullAppUpdaterInterface.cs.meta new file mode 100644 index 00000000..896ee67e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/NullAppUpdaterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 717836faabbad4608a56e687df04e7c1 +timeCreated: 1562653105 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/PresentUpdateOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/PresentUpdateOptions.cs new file mode 100644 index 00000000..d4beed29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/PresentUpdateOptions.cs @@ -0,0 +1,105 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents the options for prompting an update to the user. + /// Use the to create an instance of this class. + /// + /// @ingroup AppUpdater + public class PromptUpdateOptions + { + /// + /// Gets a value indicating whether the update is mandatory. + /// + public bool IsForceUpdate { get; private set; } + + /// + /// Gets the title of the update prompt. + /// + public string Title { get; private set; } + + /// + /// Gets the message of the update prompt. + /// + public string Message { get; private set; } + + /// + /// Gets a value indicating whether the update can be installed if it has already been downloaded. + /// @note Default value is true + /// @note If force update is enabled, this option will be considered as true. + /// + public bool AllowInstallationIfDownloaded { get; private set; } = true; + + private PromptUpdateOptions() {} + + /// + /// Builder class for constructing instances. + /// + public class Builder + { + private PromptUpdateOptions m_options; + + /// + /// Initializes a new instance of the class. + /// + public Builder() + { + m_options = new PromptUpdateOptions(); + } + + /// + /// Sets whether the update is mandatory. + /// + /// True if the update is mandatory; otherwise, false. + /// The current builder instance. + public Builder SetIsForceUpdate(bool isForceUpdate) + { + m_options.IsForceUpdate = isForceUpdate; + return this; + } + + /// + /// Sets the title of the update prompt. + /// + /// The title of the prompt. + /// The current builder instance. + public Builder SetPromptTitle(string promptTitle) + { + m_options.Title = promptTitle; + return this; + } + + /// + /// Sets the message of the update prompt. + /// + /// The message of the prompt. + /// The current builder instance. + public Builder SetPromptMessage(string message) + { + m_options.Message = message; + return this; + } + + + /// + /// Sets whether the update can be installed if it has already been downloaded. + /// + /// True if the update can be installed when downloaded; otherwise, false. Default value is true. + /// @note If force update is enabled, this option will be considered as true. + /// The current builder instance. + public Builder SetAllowInstallationIfDownloaded(bool allowInstallationIfDownloaded) + { + m_options.AllowInstallationIfDownloaded = allowInstallationIfDownloaded; + return this; + } + + /// + /// Builds and returns the instance. + /// + /// The constructed instance. + public PromptUpdateOptions Build() + { + return m_options; + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/PresentUpdateOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/PresentUpdateOptions.cs.meta new file mode 100644 index 00000000..a22c854a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/AppUpdater/PresentUpdateOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45cd0741b47de4fe39d340f8f571a353 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices.meta new file mode 100644 index 00000000..2cda7372 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c0999478fa6a94e4dafdb2e288f7053f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingEnvironment.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingEnvironment.cs new file mode 100644 index 00000000..fe74735d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingEnvironment.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Server environment where current billing transactions are processed and signed. + /// + public enum BillingEnvironment + { + /// + /// The environment is not known. + /// + Unknown, + + /// + /// The production environment where real transactions occur. + /// + Production, + + /// + /// The sandbox environment used for testing purposes. + /// + Sandbox, + + /// + /// The local environment for development purposes. + /// + Local + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingEnvironment.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingEnvironment.cs.meta new file mode 100644 index 00000000..d9febacb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingEnvironment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3ca9d13a7ff64859824e6383d708959 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPayment.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPayment.cs new file mode 100644 index 00000000..51678b26 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPayment.cs @@ -0,0 +1,52 @@ +using System; +using System.Text; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public sealed class BillingPayment : IBillingPayment + { + #region IBillingPayment implementation + + public string ProductId { get; private set; } + + public string ProductPlatformId { get; private set; } + + public int Quantity { get; private set; } + + public string Tag { get; private set; } + + #endregion + + #region Constructors + + public BillingPayment(string productId, string productPlatformId, int quantity, string tag) + { + // set properties + ProductId = productId; + ProductPlatformId = productPlatformId; + Quantity = quantity; + Tag = tag; + } + + #endregion + + #region Overriden methods + + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("BillingPayment { "); + sb.Append($"ProductId: {ProductId} "); + sb.Append($"ProductPlatformId: {ProductPlatformId} "); + sb.Append($"Quantity: {Quantity} "); + sb.Append($"Tag: {Tag} "); + sb.Append("}"); + return sb.ToString(); + } + + + #endregion + + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPayment.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPayment.cs.meta new file mode 100644 index 00000000..78f7d9c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPayment.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 793cffbf4c94f4071b79b5c2c48ef64a +timeCreated: 1576580921 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriod.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriod.cs new file mode 100644 index 00000000..84858934 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriod.cs @@ -0,0 +1,32 @@ +using System.Diagnostics; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents duration of billing product subscription period. + /// + /// @ingroup BillingServices + public class BillingPeriod + { + /// + /// Gets the duration of the subscription period. + /// + public double Duration { get; private set; } + + /// + /// Gets the unit of the subscription period. + /// + public BillingPeriodUnit Unit { get; private set; } + + public BillingPeriod(double duration, BillingPeriodUnit unit) + { + Duration = duration; + Unit = unit; + } + + public override string ToString() + { + return $"[BillingPeriod: Duration={Duration}, Unit={Unit}]"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriod.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriod.cs.meta new file mode 100644 index 00000000..69d2faa8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriod.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 958002dce94984ff5a196c31492c1bf1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriodUnit.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriodUnit.cs new file mode 100644 index 00000000..09839c1c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriodUnit.cs @@ -0,0 +1,28 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Unit for billing product subscription period + /// + public enum BillingPeriodUnit : int + { + /// + /// Day unit for billing product subscription period. + /// + Day, + + /// + /// Week unit for billing product subscription period. + /// + Week, + + /// + /// Month unit for billing product subscription period. + /// + Month, + + /// + /// Year unit for billing product subscription period. + /// + Year + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriodUnit.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriodUnit.cs.meta new file mode 100644 index 00000000..7d9baf09 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPeriodUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de9e147f1d78d4e6ea3bfbb7451be37c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPrice.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPrice.cs new file mode 100644 index 00000000..39b91987 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPrice.cs @@ -0,0 +1,35 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents a billing price with its value, code, symbol, and display text. + /// + /// @ingroup BillingServices + [System.Serializable] + public class BillingPrice + { + /// Gets the currency value. + public double Value { get; private set; } + + /// Gets the currency code. + public string Code { get; private set; } + + /// Gets the currency symbol associated with this currency. + public string Symbol {get; private set; } + + /// Gets the displayable text format for this currency. + public string LocalizedText { get; private set; } + + public BillingPrice(double value, string currencyCode, string currencySymbol, string localizedText) + { + Value = value; + Code = currencyCode; + Symbol = currencySymbol; + LocalizedText = localizedText; + } + + public override string ToString() + { + return $"[Value={Value}, Code={Code}, Symbol={Symbol}, DisplayText={LocalizedText}]"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPrice.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPrice.cs.meta new file mode 100644 index 00000000..5ec024dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingPrice.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef7794a46ba41419f8ffcca919b2d718 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductBase.cs new file mode 100644 index 00000000..69aab0eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductBase.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Text; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public abstract class BillingProductBase : NativeObjectBase, IBillingProduct + { + #region Constructors + + protected BillingProductBase(string id, string platformId, BillingProductType type, + IEnumerable payouts, bool isAvailable = true) + { + // Set properties + Id = id; + PlatformId = platformId; + @Type = type; + Payouts = payouts; + IsAvailable = isAvailable; + } + + ~BillingProductBase() + { + Dispose(false); + } + + #endregion + + #region Abstract methods + + protected abstract string GetLocalizedTitleInternal(); + + protected abstract string GetLocalizedDescriptionInternal(); + + protected abstract BillingPrice GetPriceInternal(); + + protected abstract BillingProductSubscriptionInfo GetSubscriptionInfoInternal(); + + protected abstract IEnumerable GetOffersInternal(); + + #endregion + + #region Base methods + + public override string ToString() + { + //Id, PlatformId, LocalizedTitle, LocalizedDescription, Price, IsAvailable, SubscriptionInfo, Offers, Payouts, Tag + return string.Format("[Id={0}, PlatformId={1}, LocalizedTitle={2}, LocalizedDescription={3}, Price={4}, IsAvailable={5}, SubscriptionInfo={6}, Offers={7}, Payouts={8}, Tag={9}]", + Id, PlatformId, LocalizedTitle, LocalizedDescription, Price, IsAvailable, SubscriptionInfo, string.Join(", ", Offers), string.Join(", ", Payouts), Tag); + } + + #endregion + + #region IBillingProduct implementation + + public string Id { get; private set; } + + public string PlatformId { get; private set; } + + public BillingProductType Type { get; private set; } + + public string LocalizedTitle => GetLocalizedTitleInternal(); + + public string LocalizedDescription => GetLocalizedDescriptionInternal(); + + public BillingPrice Price => GetPriceInternal(); + + public string LocalizedPrice => Price.LocalizedText; + + public string PriceCurrencyCode => Price.Code; + + public bool IsAvailable { get; private set; } + + public IEnumerable Payouts { get; private set; } + + public object Tag => null; + + public string PriceCurrencySymbol => Price.Symbol; + + public BillingProductSubscriptionInfo SubscriptionInfo => GetSubscriptionInfoInternal(); + + public IEnumerable Offers => GetOffersInternal(); + + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductBase.cs.meta new file mode 100644 index 00000000..81e48194 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fad1bcdb2252d404a95cba2d6203e562 +timeCreated: 1553091765 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductDefinition.cs new file mode 100644 index 00000000..a268cff3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductDefinition.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents an object containing information related to billing product definition. This contains the data you set in settings. + /// + /// @ingroup BillingServices + [Serializable] + public class BillingProductDefinition + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private BillingProductType m_productType; + + [SerializeField] + private string m_title; + + [SerializeField] + private string m_description; + + [SerializeField] + private bool m_isInactive = false; + + [SerializeField] + private BillingProductPayoutDefinition[] m_payouts; + + [Header("Platform Specific")] + [SerializeField] + private string m_platformId; + + [SerializeField] + private RuntimePlatformConstantSet m_platformIdOverrides; + + #endregion + + #region Properties + + /// + /// The string that identifies the product within Unity environment. (read-only) + /// + public string Id => PropertyHelper.GetValueOrDefault(m_id); + + /// + /// The type of the product. (read-only) + /// + public BillingProductType ProductType => m_productType; + + /// + /// The name of the product. (read-only) + /// + public string Title => PropertyHelper.GetValueOrDefault(m_title); + + /// + /// The description of the product. (read-only) + /// + public string Description => PropertyHelper.GetValueOrDefault(m_description); + + + /// + /// Indicates whether this product is inactive. A product is considered active if it is considered for purchase. + /// Note: If your earlier versions had a product and is not used any more, you can just enable this flag and still get the product details of past purchases. + /// + public bool IsInactive => m_isInactive; + + /// + /// The payout information. (read-only) + /// + public BillingProductPayoutDefinition[] Payouts => m_payouts; + + /// + /// Additional information associated with this product. This information is provided by the developer. + /// + [System.Obsolete("This property is deprecated. Use Payouts instead.", true)] + public object Tag { get; set; } + + #endregion + + #region Create methods + + /// + /// Creates the product settings object. + /// + /// The string that identifies the product within Unity environment. + /// The identifier of product in the store. This is the identifier supplied by the native platform store(Google play console / App Store Connect). + /// The overrides for the . + /// The type of the product. Default is . + /// The name of the product. + /// The description of the product. + /// Indicates whether this product is inactive. A product is considered active if it is considered for purchase. + /// Payout information associated with this product. + public BillingProductDefinition(string id = null, string platformId = null, + RuntimePlatformConstantSet platformIdOverrides = null, BillingProductType productType = BillingProductType.Consumable, + string title = null, string description = null, + bool isInactive = false, + BillingProductPayoutDefinition[] payouts = null) + { + // Set properties + m_id = id; + m_platformId = platformId?.Trim(); + m_platformIdOverrides = platformIdOverrides ?? new RuntimePlatformConstantSet(); + m_productType = productType; + m_title = title; + m_description = description; + m_isInactive = isInactive; + m_payouts = payouts ?? new BillingProductPayoutDefinition[0]; + } + + #endregion + + #region Public methods + + /// + /// Returns the store identifier for active platform. + /// + public string GetPlatformIdForActivePlatform() + { + return m_platformIdOverrides.GetConstantForActiveOrSimulationPlatform(m_platformId)?.Trim(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductDefinition.cs.meta new file mode 100644 index 00000000..8de104a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa80865c50401464ea0afe2429efb133 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductIdAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductIdAttribute.cs new file mode 100644 index 00000000..1a247d4d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductIdAttribute.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class BillingProductIdAttribute : StringPopupAttribute + { + #region Fields + + private string[] m_options; + + #endregion + + #region Constructors + + public BillingProductIdAttribute() + : base() + { + // set properties + m_options = GetProductIds(); + } + + #endregion + + #region Private static methods + + private static string[] GetProductIds() + { + try + { + return System.Array.ConvertAll(EssentialKitSettings.Instance.BillingServicesSettings.Products, (item) => item.Id); + } + catch + { + return new string[0]; + } + } + + #endregion + + #region Base class methods + + protected override string[] GetDynamicOptions() + { + return m_options; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductIdAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductIdAttribute.cs.meta new file mode 100644 index 00000000..e069b0e1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductIdAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d2538fef0f194598889a73d3292d650 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOffer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOffer.cs new file mode 100644 index 00000000..63ca417d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOffer.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents a product offer for a billing product. + /// + /// @ingroup BillingServices + public class BillingProductOffer + { + /// + /// The product offer identifier. + /// + public string Id { get; private set; } + + /// + /// The product offer category to know if its an introductory offer or promotional offer. + /// + public BillingProductOfferCategory Category {get; private set; } + + /// + /// Phases of how the pricing is calculated. + /// note: On Android there can be more than one pricing phase but on iOS it's only one. + /// + public IOrderedEnumerable PricingPhases { get; private set; } + + public BillingProductOffer(string id, BillingProductOfferCategory category, List pricingPhases) + { + Id = id; + Category = category; + PricingPhases = pricingPhases.OrderBy(x => pricingPhases.IndexOf(x)); + } + + public override string ToString() + { + return string.Format("[Id={0}, Category={1}, PricingPhases={2}]", Id, Category, string.Join(", ", PricingPhases)); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOffer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOffer.cs.meta new file mode 100644 index 00000000..f607b730 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOffer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5353d1192a0ca47b9ba90c47b858a1f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferCategory.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferCategory.cs new file mode 100644 index 00000000..ff15c30b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferCategory.cs @@ -0,0 +1,25 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents a category of a billing product offer. + /// + public enum BillingProductOfferCategory : int + { + /// + /// Unknown offer category. + /// + Unknown, + /// + /// Offer category for introductory offers. + /// + Introductory, + /// + /// Offer category for promotional offers. + /// + Promotional, + /// + /// Offer category for code-based offers. + /// + Code + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferCategory.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferCategory.cs.meta new file mode 100644 index 00000000..e6719b58 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferCategory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6862e0ab2980742f3916f1d05040d5f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferPricingPhase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferPricingPhase.cs new file mode 100644 index 00000000..737f4c09 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferPricingPhase.cs @@ -0,0 +1,48 @@ + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents a phase of pricing for a billing product offer. + /// + /// @ingroup BillingServices + public class BillingProductOfferPricingPhase + { + /// + /// Gets the payment mode for the offer. + /// + public BillingProductOfferPaymentMode PaymentMode { get; private set; } + + /// + /// Gets the offer price charged for the specified period. + /// + public BillingPrice Price { get; private set; } + + /// + /// Gets the period for which the offer price is applied. + /// For PayAsYouGo, the period value will be the billing cycle period, and the total period will be Period * RepeatCount. + /// + public BillingPeriod Period { get; private set; } + + /// + /// Gets the number of times the pricing phase repeats. + /// + /// For , the period value will be the billing cycle period, and the total period will be Period * RepeatCount. + /// For other payment modes, this value will be always 1. + /// + /// + public int RepeatCount { get; private set; } + + public BillingProductOfferPricingPhase(BillingProductOfferPaymentMode paymentMode, BillingPrice price, BillingPeriod period, int repeatCount) + { + PaymentMode = paymentMode; + Price = price; + Period = period; + RepeatCount = repeatCount; + } + + public override string ToString() + { + return string.Format("[PaymentMode={0}, Price={1}, Period={2}, RepeatCount={3}]", PaymentMode, Price, Period, RepeatCount); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferPricingPhase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferPricingPhase.cs.meta new file mode 100644 index 00000000..8827016f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferPricingPhase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fbf899b2744a745e79d9e0bf0f9dda05 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferRedeemDetails.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferRedeemDetails.cs new file mode 100644 index 00000000..7f1d1cd4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferRedeemDetails.cs @@ -0,0 +1,175 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents details of a product offer to be redeemed. + /// + /// + /// The following code snippet demonstrates how to create an instance of : + /// + /// var offerRedeemDetails = new BillingProductOfferRedeemDetails.Builder() + /// .SetIosPlatformProperties("offerId", "keyId", "nonce", "signature", 123456) + /// .SetAndroidPlatformProperties("offerId") + /// .Build(); + /// + /// @remark This class considers only properties relavent to the platform. So you can just set the properties for iOS or Android at once or with dummy values for other platforms. + /// + /// @ingroup BillingServices + public class BillingProductOfferRedeemDetails + { + /// + /// Represents the iOS platform properties for redeeming a product offer. + /// + public IosProperties IosPlatformProperties { get; private set; } + + /// + /// Represents the Android platform properties for redeeming a product offer. + /// + public AndroidProperties AndroidPlatformProperties { get; private set; } + + /// + /// Initializes a new instance of the class. + /// + private BillingProductOfferRedeemDetails() + { + // Initialize the properties + IosPlatformProperties = null; + AndroidPlatformProperties = null; + } + + + /// + /// Represents the iOS platform properties for redeeming a product offer. + /// + public class IosProperties + { + /** + * The id of the product offer + */ + public string OfferId { get; private set; } + + /** + * A string that identifies the private key you use to generate the signature + */ + public string KeyId { get; private set; } + + /** + * The anti-replay value used in the signature. Use lowercase. + */ + public string Nonce { get; private set; } + + /** + * The cryptographic signature of the offer parameters, which you generate on your server. + *\note The signature need to be a Base64-encoded string. + */ + public string Signature {get; private set;} + + /** + * The UNIX time, in milliseconds, when you generate the signature. + */ + public long Timestamp {get; private set;} + + /** + * Initializes a new instance of the class. + * + * @param offerId of the product offer. + * @param keyId A string that identifies the private key you use to generate the signature. + * @param nonce The anti-replay value used in the signature. + * @param signature The cryptographic signature of the offer parameters. + * @param timestamp The UNIX time, in milliseconds, when you generate the signature. + * \note The signature need to be a Base64-encoded string. + */ + internal IosProperties(string offerId, string keyId, string nonce, string signature, long timestamp) + { + OfferId = offerId; + KeyId = keyId; + Nonce = nonce; + Signature = signature; + Timestamp = timestamp; + } + + public override string ToString() + { + return string.Format("[OfferId={0}, KeyId={1}, Nonce={2}, Signature={3}, Timestamp={4}]", OfferId, KeyId, Nonce, Signature, Timestamp); + } + } + + /// + /// Represents the Android platform properties for redeeming a product offer. + /// + public class AndroidProperties + { + /// + /// The offer Id of the product offer. + /// + public string OfferId { get; private set; } + + /// + /// Initializes a new instance of the class. + /// + /// The offer ID of the product offer. + internal AndroidProperties(string offerId) + { + OfferId = offerId; + } + + public override string ToString() + { + return string.Format("[OfferId={0}]", OfferId); + } + } + + /// + /// Represents a builder class for . + /// + public class Builder + { + + private BillingProductOfferRedeemDetails m_request; + + public Builder() + { + m_request = new BillingProductOfferRedeemDetails(); + } + + /// + /// Sets the iOS platform properties for the being built. + /// + /// The offer id of the product offer. + /// keyId A string that identifies the private key you use to generate the signature. + /// The anti-replay value used in the signature. + /// The cryptographic signature of the offer parameters (base64). + /// The UNIX time, in milliseconds, when you generate the signature. + /// \note The signature need to be a Base64-encoded string. + /// The current Builder instance. + public Builder SetIosPlatformProperties(string offerId, string keyId, string nonce, string signature, long timestamp) + { + m_request.IosPlatformProperties = new IosProperties(offerId, keyId, nonce, signature, timestamp); + return this; + } + + /// + /// Sets the Android platform properties for the being built. + /// + /// The offer Id of the product offer. + /// The current Builder instance. + public Builder SetAndroidPlatformProperties(string offerId) + { + m_request.AndroidPlatformProperties = new AndroidProperties(offerId); + return this; + } + + /// + // Builds a BillingProductOfferRedeemRequest instance. + /// + public BillingProductOfferRedeemDetails Build() + { + return m_request; + } + } + + public override string ToString() + { + return string.Format("[IosPlatformProperties={0}, AndroidPlatformProperties={1}]", IosPlatformProperties, AndroidPlatformProperties); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferRedeemDetails.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferRedeemDetails.cs.meta new file mode 100644 index 00000000..43c31ccb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductOfferRedeemDetails.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 190b96a623cc94827afa179462b89749 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutCategory.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutCategory.cs new file mode 100644 index 00000000..d35f6686 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutCategory.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Defines the categories for billing product payouts. + /// + public enum BillingProductPayoutCategory + { + /// + /// Represents the category of currency payout. + /// + Currency = 1, + + /// + /// Represents the category of item payout. + /// + Item, + + /// + /// Represents all other categories of payout. + /// + Other = 1000 + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutCategory.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutCategory.cs.meta new file mode 100644 index 00000000..fa75856e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutCategory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd78e4ee3cd954204b01b5c9473c7b8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutDefinition.cs new file mode 100644 index 00000000..c9547859 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutDefinition.cs @@ -0,0 +1,104 @@ +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [System.Serializable] + /// + /// Represents payout information associated with the product. + /// + /// @ingroup BillingServices + public class BillingProductPayoutDefinition + { + #region Fields + + [SerializeField] + private BillingProductPayoutCategory m_category; + + [SerializeField] + private string m_variant; + + [SerializeField] + private double m_quantity; + + [SerializeField] + private string m_data; + + [SerializeField] + private string m_description; + + #endregion + + #region Properties + + /// + /// Gets the category of the payout. + /// + public BillingProductPayoutCategory Category => m_category; + + /// + /// Gets the variant of the payout. + /// + public string Variant => PropertyHelper.GetValueOrDefault(m_variant); + + /// + /// Gets the quantity of the payout. + /// + public double Quantity => m_quantity; + + /// + /// Gets the additional data associated with the payout. + /// + public string Data => PropertyHelper.GetValueOrDefault(m_data); + + /// + /// Gets the description of the payout. + /// + public string Description => PropertyHelper.GetValueOrDefault(m_description); + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// The category of the payout. + /// The variant of the payout. + /// The quantity of the payout. + /// The additional data associated with the payout. + /// The description of the payout. + public BillingProductPayoutDefinition(BillingProductPayoutCategory payoutType, string subtype = null, + double quantity = 1, string data = null, string description = null) + { + // Set properties + m_category = payoutType; + m_variant = subtype; + m_quantity = quantity; + m_data = data; + m_description = description; + } + + #endregion + + #region Base methods + + public override string ToString() + { + var sb = new StringBuilder(128); + sb.Append("BillingProductPayoutDefinition { ") + .Append($"Category: {Category} ") + .Append($"Variant: {Variant} ") + .Append($"Quantity: {Quantity} ") + .Append($"Data: {Data} ") + .Append($"Description: {Description}") + .Append("}"); + return sb.ToString(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutDefinition.cs.meta new file mode 100644 index 00000000..3be0a68b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPayoutDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4f0ea49ba0134afeb7a2ef846803f2a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPlain.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPlain.cs new file mode 100644 index 00000000..ef3132a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPlain.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + [Serializable] + public sealed class BillingProductPlain : BillingProductBase + { + #region Fields + + private string m_localizedTitle; + + private string m_localizedDescription; + + private BillingPrice m_price; + + private BillingProductSubscriptionInfo m_subscriptionInfo; + + private IEnumerable m_offers; + private IEnumerable m_payouts; + + #endregion + + #region Constructors + + public BillingProductPlain(string id, + string platformId, + BillingProductType type, + string localizedTitle, + string localizedDescription, + BillingPrice price, + BillingProductSubscriptionInfo subscriptionInfo, + IEnumerable offers, + IEnumerable payouts) + : base(id: id, platformId: platformId, type: type, payouts: payouts) + { + // set properties + m_localizedTitle = localizedTitle; + m_localizedDescription = localizedDescription; + m_price = price; + m_subscriptionInfo = subscriptionInfo; + m_offers = offers; + m_payouts = payouts; + } + + ~BillingProductPlain() + { + Dispose(false); + } + + #endregion + + #region Base methods + + protected override string GetLocalizedTitleInternal() + { + return m_localizedTitle; + } + + protected override string GetLocalizedDescriptionInternal() + { + return m_localizedDescription; + } + + protected override BillingPrice GetPriceInternal() + { + return m_price; + } + + protected override BillingProductSubscriptionInfo GetSubscriptionInfoInternal() + { + return m_subscriptionInfo; + } + + protected override IEnumerable GetOffersInternal() + { + return m_offers; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPlain.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPlain.cs.meta new file mode 100644 index 00000000..31739e5a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductPlain.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb076b4a2ebde4e19b8a0016749c8c7a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationInfo.cs new file mode 100644 index 00000000..8de624d5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationInfo.cs @@ -0,0 +1,44 @@ +using System; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents information about the revocation of a billing product. + /// + /// @ingroup BillingServices + public class BillingProductRevocationInfo + { + /// + /// Gets the revocation date of the object, if available. + /// + /// + /// The revocation date of the object, or null if not available. + /// + public DateTime Date { get; } + + /// + /// Gets the UTC date and time of revocation, if applicable. + /// + /// The UTC date and time of revocation, or null if not applicable. + public DateTime DateUTC { get; } + + /// + /// Gets the reason for revocation of a billing product. + /// + /// The reason for revocation, if available; otherwise, null. + public BillingProductRevocationReason Reason { get; } + + + public BillingProductRevocationInfo(DateTime dateUTC, BillingProductRevocationReason reason) + { + Date = dateUTC.ToLocalTime();; + DateUTC = dateUTC; + Reason = reason; + } + + public override string ToString() + { + return $"[BillingProductRevocationInfo: Date={Date}, DateUTC={DateUTC}, Reason={Reason}]"; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationInfo.cs.meta new file mode 100644 index 00000000..9bf18410 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d808676cc58945c4bcd9f6d1da74ea9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationReason.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationReason.cs new file mode 100644 index 00000000..92609075 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationReason.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Reason for which the product got revoked. + /// + public enum BillingProductRevocationReason + { + /// + /// No revocation + /// + None, + + /// + /// Unknown reason. + /// + Unknown, + + /// + /// The revocation was caused by a developer related issue. + /// + DeveloperIssue + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationReason.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationReason.cs.meta new file mode 100644 index 00000000..9fc77952 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductRevocationReason.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4de2a60d2624e4f9c88d56d4e2afd1a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionExpirationReason.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionExpirationReason.cs new file mode 100644 index 00000000..dd306c39 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionExpirationReason.cs @@ -0,0 +1,40 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Reason for billing product subscription expiration + /// + public enum BillingProductSubscriptionExpirationReason : int + { + /// + /// No expiration reason available. + /// + None, + + /// + /// Unknown expiration reason. + /// + Unknown, + + /// + /// Auto-Renew disabled. + /// + AutoRenewDisabled, + + /// + /// Expiration due to billing error. + /// + BillingError, + + /// + /// Expiration due to user did not consent to price increase. + /// + DidNotConsentToPriceIncrease, + + /// + /// Expiration due to product being unavailable. + /// + ProductUnavailable + } + + +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionExpirationReason.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionExpirationReason.cs.meta new file mode 100644 index 00000000..8cc419f1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionExpirationReason.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69ef92c1105ba413082419c720e2d9c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionInfo.cs new file mode 100644 index 00000000..a607eae5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionInfo.cs @@ -0,0 +1,55 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents the information about the billing product subscription. + /// + /// @ingroup BillingServices + public class BillingProductSubscriptionInfo + { + /// + /// Gets the group identifier of the product. + /// + public string GroupId { get; private set; } + + /// + /// Gets the localized group title of the product. + /// + /// + /// The localized group title is the title of the product that is displayed to the user. + /// It should be used when displaying the product information to the user. + /// + public string LocalizedGroupTitle { get; private set; } + + /// + /// Gets the level of the product. + /// + /// + /// The level of the product is used to distinguish between different products in the same group. + /// For example, if a product is a subscription, the level can be used to identify the different tiers of the subscription, such as a basic, premium, or enterprise tier. + /// + /// @note This property is not relevant on Android platform. + public int Level { get; private set; } + + + /// + /// Gets the billing period of the product. + /// + /// + /// The billing period defines the duration of the subscription cycle. + /// + public BillingPeriod Period { get; private set; } + + public BillingProductSubscriptionInfo(string groupId, string localizedGroupTitle, int level, BillingPeriod period) + { + GroupId = groupId; + LocalizedGroupTitle = localizedGroupTitle; + Level = level; + Period = period; + } + + public override string ToString() + { + return string.Format("[GroupId={0}, LocalizedGroupTitle={1}, Level={2}, Period={3}]", GroupId, LocalizedGroupTitle, Level, Period); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionInfo.cs.meta new file mode 100644 index 00000000..6197ca20 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a750ea01a0454b9eb63ed5d49ec657d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionPriceIncreaseStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionPriceIncreaseStatus.cs new file mode 100644 index 00000000..813934e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionPriceIncreaseStatus.cs @@ -0,0 +1,25 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Status of billing product subscription price increase action + /// + public enum BillingProductSubscriptionPriceIncreaseStatus : int + { + /// + /// Unknown status of billing product subscription price increase action + /// + Unknown, + /// + /// No price increase is pending + /// + NoIncreasePending, + /// + /// User agreed to the price increase + /// + Agreed, + /// + /// Price increase is pending + /// + Pending + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionPriceIncreaseStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionPriceIncreaseStatus.cs.meta new file mode 100644 index 00000000..95f9b9a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionPriceIncreaseStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c46dfeb1321541019edf0ecdc5738a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalInfo.cs new file mode 100644 index 00000000..d39cd01c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalInfo.cs @@ -0,0 +1,92 @@ + +using System; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents the information about the billing product subscription renewal. + /// + /// @ingroup BillingServices + public class BillingProductSubscriptionRenewalInfo + { + /// + /// Gets the renewal state of the billing product subscription. + /// + public BillingProductSubscriptionRenewalState State { get; private set; } + + /// + /// Gets the identifier of the applicable offer. + /// + private string ApplicableOfferIdentifier { get; set; } + + /// + /// Gets the category of the applicable offer. + /// + private BillingProductOfferCategory? ApplicableOfferCategory { get; set; } + + /// + /// Gets the date when the billing product subscription was last renewed. + /// + private DateTime? LastRenewedDate { get; set; } + + /// + /// Gets the unique identifier of the last transaction. + /// + private string LastRenewalId { get; set; } + + /// + /// Gets a value indicating whether the billing product subscription is auto-renewed. + /// + public bool IsAutoRenewEnabled { get; private set; } + + /// + /// Gets the reason why the billing product subscription is expired. + /// + public BillingProductSubscriptionExpirationReason? ExpirationReason { get; private set; } + + /// + /// Gets the date when the billing product subscription will be renewed. + /// + public DateTime? RenewalDate { get; private set; } + + /// + /// Gets the date when the grace period for the billing product subscription will expire. + /// + public DateTime? GracePeriodExpirationDate { get; private set; } + + /// + /// Gets the price increase status of the billing product subscription. + /// + private BillingProductSubscriptionPriceIncreaseStatus PriceIncreaseStatus { get; set; } //Remove as no option to check on Android + + internal BillingProductSubscriptionRenewalInfo(BillingProductSubscriptionRenewalState state, string applicableOfferIdentifier, BillingProductOfferCategory? applicableOfferCategory, DateTime? lastRenewedDate, string lastRenewalId, bool isAutoRenewEnabled, BillingProductSubscriptionExpirationReason? expirationReason, DateTime? renewalDate = null, DateTime? gracePeriodExpirationDate = null, BillingProductSubscriptionPriceIncreaseStatus priceIncreaseStatus = BillingProductSubscriptionPriceIncreaseStatus.NoIncreasePending) + { + State = state; + ApplicableOfferIdentifier = applicableOfferIdentifier; + ApplicableOfferCategory = applicableOfferCategory; + LastRenewedDate = lastRenewedDate; + LastRenewalId = lastRenewalId; + IsAutoRenewEnabled = isAutoRenewEnabled; + ExpirationReason = expirationReason; + RenewalDate = renewalDate; + GracePeriodExpirationDate = gracePeriodExpirationDate; + PriceIncreaseStatus = priceIncreaseStatus; + } + + public override string ToString() + { + return string.Format("[BillingProductSubscriptionRenewalInfo] State: {0}, ApplicableOfferIdentifier: {1}, ApplicableOfferCategory: {2}, LastRenewedDate: {3}, LastRenewalId: {4}, IsAutoRenewEnabled: {5}, ExpirationReason: {6}, RenewalDate: {7}, GracePeriodExpirationDate: {8}, PriceIncreaseStatus: {9}", + State, + ApplicableOfferIdentifier, + ApplicableOfferCategory, + LastRenewedDate, + LastRenewalId, + IsAutoRenewEnabled, + ExpirationReason, + RenewalDate, + GracePeriodExpirationDate, + GracePeriodExpirationDate, + PriceIncreaseStatus); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalInfo.cs.meta new file mode 100644 index 00000000..d141b5ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b10a32fd1ac6f43d79b6b6c68914809b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalState.cs new file mode 100644 index 00000000..ae569f1a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalState.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// State of the subscription renewal. + /// + public enum BillingProductSubscriptionRenewalState + { + /// + /// Unknown state of the subscription renewal. + /// + Unknown, + /// + /// User is currently subscribed to the product. + /// + Subscribed, + /// + /// User's subscription to the product has expired. + /// + Expired, + /// + /// The App Store is attempting to renew a subscription on behalf of the user. + /// + InBillingRetryPeriod, + /// + /// User's subscription is in the process of being canceled and will terminate at the end of the current billing cycle. + /// + InGracePeriod, + /// + /// User explicitly revoked the subscription. + /// + Revoked + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalState.cs.meta new file mode 100644 index 00000000..73b5d89e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionRenewalState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ffe2fae68d5d947578942dbd7d5e7979 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionStatus.cs new file mode 100644 index 00000000..316c4529 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionStatus.cs @@ -0,0 +1,66 @@ + +using System; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents the subscription status of a billing product. + /// + /// @ingroup BillingServices + public class BillingProductSubscriptionStatus + { + /// + /// Gets the group ID of the subscription. + /// + public string GroupId { get; private set; } + + /// + /// Gets the renewal information of the subscription. + /// + public BillingProductSubscriptionRenewalInfo RenewalInfo { get; private set; } + + /// + /// Gets or sets the expiration date of the subscription. + /// Note: On Android, it's not possible to get the last renewal date, so this is skipped until provided. + /// + private DateTime? ExpirationDate { get; set; } + + /// + /// Gets or sets a value indicating whether the subscription is upgraded. + /// Note: On Android, this can be determined by checking all available subscriptions in the group sorted by time. + /// + private bool IsUpgraded { get; set; } + + /// + /// Gets or sets the applied offer ID for the subscription. + /// + private string AppliedOfferId { get; set; } + + /// + /// Gets or sets the category of the applied offer for the subscription. + /// + private BillingProductOfferCategory? AppliedOfferCategory { get; set; } + + internal BillingProductSubscriptionStatus(string groupId, BillingProductSubscriptionRenewalInfo renewalInfo = null, DateTime? expirationDate = null, bool isUpgraded = false, string appliedOfferIdentifier = null, BillingProductOfferCategory? appliedOfferCategory = null) + { + GroupId = groupId; + RenewalInfo = renewalInfo; + ExpirationDate = expirationDate; + IsUpgraded = isUpgraded; + AppliedOfferId = appliedOfferIdentifier; + AppliedOfferCategory = appliedOfferCategory; + } + + public override string ToString() + { + return string.Format("[{0}] GroupId: {1}, RenewalInfo: {2}, ExpirationDate: {3}, IsUpgraded: {4}, AppliedOfferId: {5}, AppliedOfferCategory: {6}", + GetType().Name, + GroupId, + RenewalInfo, + ExpirationDate, + IsUpgraded, + AppliedOfferId, + AppliedOfferCategory); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionStatus.cs.meta new file mode 100644 index 00000000..375f29ab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductSubscriptionStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6a59a767def444458f8b187be195251 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductType.cs new file mode 100644 index 00000000..2080818f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductType.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// An enumeration for the available billing product types. + /// + public enum BillingProductType + { + /// The consumable product. + Consumable, + + /// The non consumable product. + NonConsumable, + + /// The subscription product. + Subscription + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductType.cs.meta new file mode 100644 index 00000000..42204d0c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d8bd5397ca2914733bd60d93cf3ed7db +timeCreated: 1551076421 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductUtility.cs new file mode 100644 index 00000000..1c7537ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductUtility.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public static class BillingUtility + { + #region Static methods + + public static bool IsNull(this IBillingProduct billingProduct) + { + return (billingProduct == null) || string.Equals(BillingServices.kNullProductId, billingProduct.Id); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductUtility.cs.meta new file mode 100644 index 00000000..bb05f943 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingProductUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4e34c7586e284362bd328be96a034b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingReceiptVerificationState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingReceiptVerificationState.cs new file mode 100644 index 00000000..0891b71a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingReceiptVerificationState.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The state of a payment receipt verification. + /// + public enum BillingReceiptVerificationState + { + /// Receipt verification has not yet been done. + NotDetermined, + + /// Receipt was successfully verified. + Success, + + /// Receipt verification failed for some reason. Possible reasons can be network issue, mismatch of app build details etc. + Failed + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingReceiptVerificationState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingReceiptVerificationState.cs.meta new file mode 100644 index 00000000..d95708bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingReceiptVerificationState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2c443687efab14225b9b8c315f63fc45 +timeCreated: 1579002649 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServices.cs new file mode 100644 index 00000000..de8ea0bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServices.cs @@ -0,0 +1,579 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.BillingServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /** + * @defgroup BillingServices BillingServices + * @brief Provides cross-platform interface to request payment from a user for additional functionality or content that your application delivers. + */ + + /// + /// Provides cross-platform interface to request payment from a user for additional functionality or content that your application delivers. + /// + /// + /// + /// This feature connects to the Store on your app’s behalf to securely process payments from users, prompting them to authorize payment. + /// The feature then notifies your app, which provides the purchased items to users. + /// For processing requests, feature contacts App Store, Google Play Store on iOS, Android platform respectively. + /// You need to configure iOS billing product details at iTunes Connect. + /// Similarly for Android, you can set these details at Google Play Developer Console. + /// + /// + /// The interaction between the user, your app, and the Store during the purchase process take place in three stages. + /// First, the your app displays purchasable products received from the Store. + /// Second, the user selects a product to buy and the app requests payment from the Store. + /// Third, the Store processes the payment and your app delivers the purchased product. + /// + /// + /// Optionally, you can choose to verify receipts of completed transactions. The receipt is a record of purchase made from within the application and enabling receipt validation, adds one more level security to avoid unauthorised purchases. + /// + /// Users can also restore products that were previously purchased. As per iOS guidelines, if your application supports product types that are restorable, you must include an interface that allows users to restore these purchases. + /// + /// + /// @ingroup BillingServices + public static class BillingServices + { + #region Constants + + internal const string kNullProductId = "null"; + + #endregion + + #region Static fields + + [ClearOnReload] + private static INativeBillingServicesInterface s_nativeInterface; + + #endregion + + #region Static properties + + public static BillingServicesUnitySettings UnitySettings { get; private set; } + + public static BillingProductDefinition[] ProductDefinitions { get; private set; } + + /// + /// Returns the cached products array retrieved from store. + /// + /// @remark This property is invalid until a call to is completed. + public static IBillingProduct[] Products { get; private set; } + + internal static IBillingProduct[] InactiveProducts { get; private set; } + + #endregion + + #region Static events + + /// + /// Event that will be called when registered billing products are retreived from the Store. + /// + public static event EventCallback OnInitializeStoreComplete; + + /// + /// Event that will be called when payment state changes. + /// + public static event Callback OnTransactionStateChange; + + /// + /// Event that will be called when restored transaction details are received from the Store. + /// + public static event EventCallback OnRestorePurchasesComplete; + + #endregion + + #region Setup methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + /// @name Advanced Usage + /// @{ + + /// + /// Initializes the billing services module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + /// The settings to be used for initialization. + /// + /// + /// The settings configure the default image to be used for products. + /// + /// + public static void Initialize(BillingServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Reset event properties + OnInitializeStoreComplete = null; + OnTransactionStateChange = null; + OnRestorePurchasesComplete = null; + + // Set default properties + UnitySettings = settings; + ProductDefinitions = new BillingProductDefinition[0]; + Products = new IBillingProduct[0]; + InactiveProducts = new IBillingProduct[0]; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.BillingServices, true); + + RegisterForEvents(); + } + /// @} + + internal static BillingProductDefinition FindProductDefinitionWithId(string id, bool returnObjectOnFail = false) + { + var definition = Array.Find(ProductDefinitions, (item) => string.Equals(item.Id, id)); + if (definition != null) + { + return definition; + } + return returnObjectOnFail + ? new BillingProductDefinition(id: id, platformId: kNullProductId) + : null; + } + + internal static BillingProductDefinition FindProductDefinitionWithPlatformId(string platformId, bool returnObjectOnFail = false) + { + var definition = Array.Find(ProductDefinitions, (item) => string.Equals(item.GetPlatformIdForActivePlatform(), platformId)); + if (definition != null) + { + return definition; + } + + DebugLogger.LogWarning(EssentialKitDomain.Default, $"There is no product definition found for platform identifier: {platformId}. This can happen if product is not added in the Essential Kit settings. If the product is obsolete and to avoid this error, you can just add the obsolete product and mark it inactive in the settings."); + + return returnObjectOnFail + ? new BillingProductDefinition(id: kNullProductId, platformId: platformId) + : null; + } + + #endregion + + #region Product methods + + /// + /// Sends a request to retrieve localized information about the billing products from the Store. + /// + /// + /// Call to this method retrieves information of the products that are configured in Billing Settings. + /// Your application uses this request to present localized prices and other information to the user without having to maintain that list itself. + /// + /// + /// \note When the request completes, is fired. + /// + public static void InitializeStore() + { + InitializeStore(productDefinitions: UnitySettings.Products); + } + + /// + /// Sends a request to retrieve localized information about the billing products from the Store. + /// + /// + /// Call to this method retrieves information of the products that are configured in Billing Settings. + /// Your application uses this request to present localized prices and other information to the user without having to maintain that list itself. + /// + /// + /// \note When the request completes, is fired. + /// + public static void InitializeStore(BillingProductDefinition[] productDefinitions) + { + // validate arguments + Assert.IsNotNullOrEmpty(productDefinitions, nameof(productDefinitions)); + + try + { + // copy all definitions + ProductDefinitions = productDefinitions; + + // filter active definitions only and query them + var activeDefinitions = productDefinitions.Where((item) => !item.IsInactive).ToArray(); + + var inctiveDefinitions = productDefinitions.Where((item) => item.IsInactive).ToArray(); + InactiveProducts = ConvertToProductArray(inctiveDefinitions); + // make request + s_nativeInterface.RetrieveProducts(activeDefinitions); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + OnInitializeStoreComplete?.Invoke(new BillingServicesInitializeStoreResult(new IBillingProduct[0], productDefinitions.Select((item) => item.Id).ToArray()), BillingServicesError.Unknown(exception.Message)); + } + } + + private static IBillingProduct[] ConvertToProductArray(BillingProductDefinition[] inctiveDefinitions) + { + if (inctiveDefinitions.IsNullOrEmpty()) + { + return new IBillingProduct[0]; + } + else + { + List list = new List(); + foreach (var item in inctiveDefinitions) + { + var product = new BillingProductPlain( + id: item.Id, + platformId: item.GetPlatformIdForActivePlatform(), + type: item.ProductType, + localizedTitle: item.Title, + localizedDescription: item.Description, + price: null, + subscriptionInfo: null, + offers: null, + payouts: item.Payouts + ); + list.Add(product); + } + return list.ToArray(); + } + } + + /// + /// Gets the billing product with localized information, which was previously fetched from the Store. + /// + /// The billing product fetched with localized information. + /// A string used to identify a billing product. + /// Whether inactive products should be considered in search. Default is false. + public static IBillingProduct GetProductWithId(string id, bool includeInactive = false) + { + // validate arguments + Assert.IsNotNullOrEmpty(id, "Id is null/empty"); + + // check whether store is initialized + if (Products.IsNullOrEmpty()) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Not initialized."); + return null; + } + + // find specified product + var targetProduct = Array.Find(Products, (item) => string.Equals(item.Id, id)); + + if(targetProduct == null && includeInactive) + { + targetProduct = Array.Find(InactiveProducts, (item) => string.Equals(item.Id, id)); + } + + return targetProduct; + } + + #endregion + + #region Payment methods + + /// + /// Determines whether the user is authorised to make payments. + /// + /// true if the user is allowed to make product purchase payment; otherwise, false. + public static bool CanMakePayments() + { + try + { + // make request + return s_nativeInterface.CanMakePayments(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + /// + /// Determines whether specified billing product is already purchased. + /// + /// true if specified billing product is already purchased; otherwise, false. + /// The identifier of the billing product. + /// + /// \note This works only for Non-Consumable (Managed) billing product. For Consumable products, this will always returns false. + /// + public static bool IsProductPurchased(string productId) + { + // validate arguments + Assert.IsArgNotNull(productId, nameof(productId)); + + // find specified product + var targetProduct = GetProductWithId(productId); + return IsProductPurchased(targetProduct); + } + + /// + /// Determines whether specified billing product is already purchased. + /// + /// true if specified billing product is already purchased; otherwise, false. + /// The object identifies the billing product registered in the Store. + /// + /// \note This works only for Non-Consumable (Managed) billing product. For Consumable products, this will always returns false. + /// + public static bool IsProductPurchased(IBillingProduct product) + { + // validate arguments + Assert.IsArgNotNull(product, nameof(product)); + + try + { + // make request + return s_nativeInterface.IsProductPurchased(product); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + /// + /// Initiates purchase process for the specified billing product. + /// + /// The product you want to purchase. + /// Additional options for the purchase. + public static void BuyProduct(string productId, BuyProductOptions options = null) + { + // find specified product + var targetProduct = GetProductWithId(productId); + if (targetProduct == null) + { + DebugLogger.LogError(EssentialKitDomain.Default, $"Product not found with id: {productId}."); + } + + BuyProduct(targetProduct, options); + } + + /// + /// Initiates purchase process for the specified billing product. + /// + /// + /// \note The payment request must have a product identifier registered with the Store. + /// + /// The product you want to purchase. + /// Create BuyProductOptions object to set custom quantity and purchase tag. + public static void BuyProduct(IBillingProduct product, BuyProductOptions options = null) + { + var buyOptions = options ?? BuyProductOptions.Default; + + // validate arguments + Assert.IsArgNotNull(product, nameof(product)); + if (buyOptions.Quantity < 1) + { + DebugLogger.LogError(EssentialKitDomain.Default, $"Product quantity can't be less than 1."); + } + + try + { + // make request + s_nativeInterface.BuyProduct(product.Id, product.PlatformId, buyOptions); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Returns the pending transactions available in transaction queue. + /// + /// /// + /// \note User needs to manually call this method after receiving completed transactions, incase if autoFinishTransactions flag is turned off in billing settings. + /// + /// An array of unfinished transactions. + public static IBillingTransaction[] GetTransactions() + { + try + { + // make request + return s_nativeInterface.GetTransactions() ?? new IBillingTransaction[0]; + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return new IBillingTransaction[0]; + } + } + + /// + /// Completes the pending transactions and removes it from transaction queue. + /// + /// An array of unfinished transactions. + public static void FinishTransactions(IBillingTransaction[] transactions) + { + // validate arguments + Assert.IsArgNotNull(transactions, "transactions"); + + try + { + // make request + var finishableTransactions = Array.FindAll(transactions, (item) => + { + var transactionState = item.TransactionState; + return !(transactionState == BillingTransactionState.Purchasing || + transactionState == BillingTransactionState.Deferred); + }); + if (finishableTransactions.Length > 0) + { + s_nativeInterface.FinishTransactions(finishableTransactions); + } + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Restore methods + + /// + /// Sends a request to restore completed purchases. + /// + /// + /// Your application calls this method to restore transactions that were previously purchased so that you can process them again. + /// + /// + /// \note + /// Internally this feature requires non-consumable product information. So ensure that is called prior to this. + /// + /// If set to true force refresh by contacting server. On iOS this will trigger a login prompt to let user signin. So set this to true only if user clicks manually "Restore" option in IAP screens. + /// This can be a unique identifier which was passed in BuyProductOptions when purchasing a product. Usually, this can be the application username or any unique identifier for which you want to restore purchases for. (optional) + public static void RestorePurchases(bool forceRefresh = false, string tag = null) + { + try + { + // make request + s_nativeInterface.RestorePurchases(forceRefresh, tag); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Obsolete methods + + /// @name Obsolete methods + /// @{ + + /// + /// Initiates purchase process for the specified billing product. + /// + /// true, if request was initiated, false otherwise failed. This can happen if product is not found + /// + /// \note The payment request must have a product identifier registered with the Store. + /// + /// The product you want to purchase. + /// The number of units you want to purchase. Default quantity value is 1. + /// Application provided username that initiated this request. (optional) + [Obsolete("This method is deprecated. Use BuyProduct with BuyProductOptions parameter", true)] //Obsolete:2024 + public static bool BuyProduct(string productId, int quantity = 1, string applicationUsername = null) + { + return false; + } + + /// + /// Initiates purchase process for the specified billing product. + /// + /// true, if request was initiated, false otherwise failed. This can happen if product is not found + /// + /// \note The payment request must have a product identifier registered with the Store. + /// + /// The product you want to purchase. + /// The number of units you want to purchase. Default quantity value is 1. + /// Specify user data associated with the purchase. Eg: Application provided username that initiated this request. (optional) + [Obsolete("This method is deprecated. Use BuyProduct with BuyProductOptions parameter", true)] //Obsolete:2024 + public static bool BuyProduct(IBillingProduct product, int quantity = 1, string applicationUsername = null) + { + return false; + } + + [Obsolete("This method is obsolete. Use RestorePurchases with forceRefresh parameter", true)] //Obsolete:2024 + public static void RestorePurchases(string tag = null) {} + + /// @} + + #endregion + + #region Private methods + + private static void RegisterForEvents() + { + s_nativeInterface.OnRetrieveProductsComplete += HandleOnRetrieveProductsComplete; + s_nativeInterface.OnTransactionStateChange += HandleOnTransactionStateChange; + s_nativeInterface.OnRestorePurchasesComplete += HandleOnRestorePurchasesComplete; + } + + private static void UnregisterFromEvents() + { + s_nativeInterface.OnRetrieveProductsComplete -= HandleOnRetrieveProductsComplete; + s_nativeInterface.OnTransactionStateChange -= HandleOnTransactionStateChange; + s_nativeInterface.OnRestorePurchasesComplete -= HandleOnRestorePurchasesComplete; + } + + #endregion + + #region Event callback methods + + private static void HandleOnRetrieveProductsComplete(IBillingProduct[] products, string[] invalidProductIds, Error error) + { + // update cache + Products = products ?? new IBillingProduct[0]; + + // invoke event + var result = new BillingServicesInitializeStoreResult( + products: products, + invalidProductIds: invalidProductIds ?? new string[0]); + CallbackDispatcher.InvokeOnMainThread(OnInitializeStoreComplete, result, error); + + // check whether any pending transactions are available + if (error == null) + { + DebugLogger.Log(EssentialKitDomain.Default, "Trying to clear any unfinished transactions. If any transaction state changes events are reported, make sure you are calling BillingServices.FinishTransactions after processing transactions."); + s_nativeInterface.TryClearingUnfinishedTransactions(); + } + } + + private static void HandleOnTransactionStateChange(IBillingTransaction[] transactions) + { + // prepare transaction array + transactions = transactions ?? new IBillingTransaction[0]; + + // invoke event + var result = new BillingServicesTransactionStateChangeResult(transactions); + CallbackDispatcher.InvokeOnMainThread(OnTransactionStateChange, result); + + // mark transactions as completed + if (UnitySettings.AutoFinishTransactions) + { + FinishTransactions(transactions); + } + } + + private static void HandleOnRestorePurchasesComplete(IBillingTransaction[] transactions, Error error) + { + // prepare transaction array + transactions = transactions ?? new IBillingTransaction[0]; + + // invoke event + var result = new BillingServicesRestorePurchasesResult(transactions); + CallbackDispatcher.InvokeOnMainThread(OnRestorePurchasesComplete, result, error); + + // mark transactions as completed + if (UnitySettings.AutoFinishTransactions) + { + FinishTransactions(transactions); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServices.cs.meta new file mode 100644 index 00000000..227c2641 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 27b8500fefcf84ceba6439c99d73f549 +timeCreated: 1551943718 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesError.cs new file mode 100644 index 00000000..0ce32c40 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesError.cs @@ -0,0 +1,86 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public static class BillingServicesError + { + #region Constants + + public const string kDomain = "[Essential Kit] Billing Services"; + + #endregion + + #region Properties + + public static Error Unknown(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.Unknown, + description: description ?? "Unknown error." + ); + + public static Error NetworkError(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.NetworkError, + description: "Network error." + ); + + public static Error SystemError(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.SystemError, + description: description ?? "System error." + ); + + public static Error StoreNotInitialized(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.StoreNotInitialized, + description: description ?? "Store not initialized." + ); + + public static Error StoreIsBusy(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.StoreIsBusy, + description: description ?? "Store is busy processing another request." + ); + + public static Error UserCancelled(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.UserCancelled, + description: description ?? "User cancelled." + ); + + public static Error OfferNotApplicable(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.OfferNotApplicable, + description: description ?? "Offer not applicable." + ); + + public static Error OfferNotValid(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.OfferNotValid, + description: description ?? "Offer not valid." + ); + + public static Error QuantityNotValid(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.QuantityNotValid, + description:description ?? "Quantity not valid." + ); + + public static Error ProductNotAvailable(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.ProductNotAvailable, + description: description ?? "Product not available." + ); + + public static Error ProductOwned(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.ProductOwned, + description: description ?? "Product already owned." + ); + + public static Error FeatureNotAvailable(string description = null) => CreateError( + code: (int)BillingServicesErrorCode.FeatureNotAvailable, + description: description ?? "Feature not available." + ); + + #endregion + + #region Static methods + + private static Error CreateError(int code, string description) => new Error( + domain: kDomain, + code: code, + description: description); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesError.cs.meta new file mode 100644 index 00000000..ed50c87a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abbcd917c483e43acb082549a1a20b3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesErrorCode.cs new file mode 100644 index 00000000..4b0ded65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesErrorCode.cs @@ -0,0 +1,64 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + + /// + /// Describes the error code which can occur when requesting for payment. + [IncludeInDocs] + public enum BillingServicesErrorCode : int + { + /// + /// Unknown error occurred. + /// + Unknown, + /// + /// Network error occurred. + /// + NetworkError, + /// + /// System error occurred. + /// + SystemError, + /// + /// Billing service is not available. + /// + BillingNotAvailable, + /// + /// Store is not initialized. + /// + StoreNotInitialized, + /// + /// Store is busy processing another request. + /// + StoreIsBusy, + /// + /// User cancelled the payment. + /// + UserCancelled, + /// + /// Offer is not applicable. + /// + OfferNotApplicable, + /// + /// Offer is not valid. + /// + OfferNotValid, + /// + /// Quantity is not valid. + /// + QuantityNotValid, + /// + /// Product is not available. + /// + ProductNotAvailable, + /// + /// Product is already owned. + /// + ProductOwned, + /// + /// Feature is not available. + /// + FeatureNotAvailable + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesErrorCode.cs.meta new file mode 100644 index 00000000..0804ec46 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb963cbb8eaac4684b712c0b53fd16a6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesInitializeStoreResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesInitializeStoreResult.cs new file mode 100644 index 00000000..79cd9490 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesInitializeStoreResult.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup BillingServices + public class BillingServicesInitializeStoreResult + { + #region Properties + + /// + /// An array of products returned by the Store. + /// + public IBillingProduct[] Products { get; private set; } + + /// + /// An array of product identifiers not recongnized by the Store. + /// + public string[] InvalidProductIds { get; private set; } + + #endregion + + #region Constructors + + internal BillingServicesInitializeStoreResult(IBillingProduct[] products, string[] invalidProductIds) + { + // Set properties + Products = products; + InvalidProductIds = invalidProductIds; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesInitializeStoreResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesInitializeStoreResult.cs.meta new file mode 100644 index 00000000..2d038ed3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesInitializeStoreResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ab664cef9a30f45f792e0368dbb4e423 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesOfferPaymentMode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesOfferPaymentMode.cs new file mode 100644 index 00000000..5e69b8d9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesOfferPaymentMode.cs @@ -0,0 +1,28 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Payment mode of Billing Product Subscription + /// + public enum BillingProductOfferPaymentMode : int + { + /// + /// Unknown payment mode. + /// + Unknown, + + /// + /// Payment mode for a free trial. + /// + FreeTrial, + + /// + /// Payment mode for pay as you go subscriptions. + /// + PayAsYouGo, + + /// + /// Payment mode for pay up front subscriptions. + /// + PayUpFront + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesOfferPaymentMode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesOfferPaymentMode.cs.meta new file mode 100644 index 00000000..99f4faf4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesOfferPaymentMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7a8d088b5b234b6fb1a9e2c6ddf05c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesRestorePurchasesResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesRestorePurchasesResult.cs new file mode 100644 index 00000000..39f0c1cb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesRestorePurchasesResult.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when event is triggered. + /// + /// @ingroup BillingServices + public class BillingServicesRestorePurchasesResult + { + #region Properties + + /// + /// Gets the transactions. + /// + public IBillingTransaction[] Transactions { get; private set; } + + #endregion + + #region Constructors + + internal BillingServicesRestorePurchasesResult(IBillingTransaction[] transactions) + { + // Set properties + Transactions = transactions; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesRestorePurchasesResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesRestorePurchasesResult.cs.meta new file mode 100644 index 00000000..a9a7c449 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesRestorePurchasesResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e6a5e4b56760e44339a28f891173c0c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesTransactionStateChangeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesTransactionStateChangeResult.cs new file mode 100644 index 00000000..325f9382 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesTransactionStateChangeResult.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when event is triggered. + /// + /// @ingroup BillingServices + public class BillingServicesTransactionStateChangeResult + { + #region Properties + + /// + /// An array of active transactions provided by the Store. + /// + public IBillingTransaction[] Transactions { get; private set; } + + #endregion + + #region Constructors + + internal BillingServicesTransactionStateChangeResult(IBillingTransaction[] transactions) + { + // Set properties + Transactions = transactions; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesTransactionStateChangeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesTransactionStateChangeResult.cs.meta new file mode 100644 index 00000000..16d3d676 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingServicesTransactionStateChangeResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2bb996b9df16348e4a2e5cfbf0db87cf +timeCreated: 1579002649 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionAndroidProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionAndroidProperties.cs new file mode 100644 index 00000000..f303e3a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionAndroidProperties.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public sealed class BillingTransactionAndroidProperties //Obsolete: 2024 + { + #region Fields + + /// + /// Json string data that is received from google billing servers post purchase and is equal to INAPP_PURCHASE_DATA. This is useful for server verification + /// + public string PurchaseData { get; private set; } + + /// + /// Signature of the purchase made and is equal to INAPP_DATA_SIGNATURE useful for validating a purchase + /// + public string Signature { get; private set; } + + #endregion + + #region Constructors + + public BillingTransactionAndroidProperties(string purchaseData, string signature) + { + // set properties + PurchaseData = purchaseData; + Signature = signature; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionAndroidProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionAndroidProperties.cs.meta new file mode 100644 index 00000000..ffd53fb4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionAndroidProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e8d8f7a1b242455a885a482d2393865 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionBase.cs new file mode 100644 index 00000000..5b3afdef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionBase.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public abstract class BillingTransactionBase : NativeObjectBase, IBillingTransaction + { + #region Properties + + protected BillingTransactionBase(string transactionId, IBillingProduct product) + { + // set properties + Id = transactionId; + Product = product; + } + + ~BillingTransactionBase() + { + Dispose(false); + } + + #endregion + + #region Abstract methods + + protected abstract int GetRequestedQuantityInternal(); + protected abstract string GetTagInternal(); + protected abstract DateTime GetTransactionDateUTCInternal(); + protected abstract BillingTransactionState GetTransactionStateInternal(); + protected abstract BillingReceiptVerificationState GetReceiptVerificationStateInternal(); + protected abstract void SetReceiptVerificationStateInternal(BillingReceiptVerificationState value); + protected abstract string GetReceiptInternal(); + protected abstract BillingEnvironment GetEnvironmentInternal(); + protected abstract string GetApplicationBundleIdentifierInternal(); + protected abstract int GetPurchasedQuantityInternal(); + protected abstract BillingProductRevocationInfo GetRevocationInfoInternal(); + protected abstract BillingProductSubscriptionStatus GetSubscriptionStatusInternal(); + protected abstract Error GetErrorInternal(); + protected abstract string GetRawDataInternal(); + + #endregion + + #region IBillingTransaction implementation + + public string Id { get; private set; } + public IBillingPayment Payment { get; private set; } + public IBillingProduct Product { get; private set; } + public int RequestedQuantity => GetRequestedQuantityInternal(); + public string Tag => GetTagInternal(); + + public DateTime DateUTC => GetTransactionDateUTCInternal(); + public DateTime Date => DateUTC.ToLocalTime(); + public BillingTransactionState TransactionState => GetTransactionStateInternal(); + public BillingReceiptVerificationState ReceiptVerificationState + { + get => GetReceiptVerificationStateInternal(); + set => SetReceiptVerificationStateInternal(value); + } + + public string Receipt => GetReceiptInternal(); + public BillingEnvironment Environment => GetEnvironmentInternal(); + public string ApplicationBundleIdentifier => GetApplicationBundleIdentifierInternal(); + public int PurchasedQuantity => GetPurchasedQuantityInternal(); + public BillingProductRevocationInfo RevocationInfo => GetRevocationInfoInternal(); + public BillingProductSubscriptionStatus SubscriptionStatus => GetSubscriptionStatusInternal(); + public Error Error => GetErrorInternal(); + public BillingTransactionAndroidProperties AndroidProperties => null; + public string RawData => GetRawDataInternal(); + + #endregion + + #region Override methods + + public override string ToString() + { + var sb = new StringBuilder(); + + sb.Append("BillingTransaction { ") + .Append($"Id: {Id} ") + .Append($"Product: {Product} ") + .Append($"RequestedQuantity: {RequestedQuantity} ") + .Append($"Tag: {Tag} ") + .Append($"TransactionState: {TransactionState} "); + + if(TransactionState != BillingTransactionState.Failed) + { + + sb.Append($"Date: {Date} ") + .Append($"DateUTC: {DateUTC} ") + .Append($"ReceiptVerificationState: {ReceiptVerificationState} ") + .Append($"Receipt: {Receipt} ") + .Append($"Environment: {Environment} ") + .Append($"ApplicationBundleIdentifier: {ApplicationBundleIdentifier} ") + .Append($"PurchasedQuantity: {PurchasedQuantity} ") + .Append($"RevocationDate: {RevocationInfo} ") + .Append($"SubscriptionStatus: {SubscriptionStatus} ") + .Append($"RawData: {RawData} "); + } + else + { + sb.Append($"Error: {Error} "); + } + sb.Append("}"); + + return sb.ToString(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionBase.cs.meta new file mode 100644 index 00000000..6c397897 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7545a291182074ba587485ad84950847 +timeCreated: 1553091765 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionPlain.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionPlain.cs new file mode 100644 index 00000000..f1054a04 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionPlain.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public sealed class BillingTransactionPlain : BillingTransactionBase + { + #region Fields + + private readonly int m_requestedQuantity; + private readonly string m_tag; + private readonly BillingTransactionState m_transactionState; + private BillingReceiptVerificationState m_verificationState; + private readonly DateTime m_date; + private readonly string m_receipt; + private readonly BillingEnvironment m_environment; + private readonly string m_applicationBundleIdentifier; + private readonly int m_purchasedQuantity; + private readonly BillingProductRevocationInfo m_revocationInfo; + private readonly BillingProductSubscriptionStatus m_subscriptionStatus; + private readonly string m_rawData; + private readonly Error m_error; + + #endregion + + #region Constructors + + public BillingTransactionPlain(string transactionId, IBillingProduct product, + int requestedQuantity, + string tag, + BillingTransactionState transactionState, + BillingReceiptVerificationState verificationState, + DateTime transactionDate, + string receipt, + BillingEnvironment environment, + string applicationBundleIdentifier, + int purchasedQuantity, + BillingProductRevocationInfo revocationInfo, + BillingProductSubscriptionStatus subscriptionStatus, + string rawData, + Error error) + : base(transactionId: transactionId, product: product) + { + // set properties + m_requestedQuantity = requestedQuantity; + m_tag = tag; + m_transactionState = transactionState; + m_verificationState = verificationState; + m_date = transactionDate; + m_receipt = receipt; + m_environment = environment; + m_applicationBundleIdentifier = applicationBundleIdentifier; + m_purchasedQuantity = purchasedQuantity; + m_revocationInfo = revocationInfo; + m_subscriptionStatus = subscriptionStatus; + m_rawData = rawData; + m_error = error; + } + + ~BillingTransactionPlain() + { + Dispose(false); + } + + #endregion + + #region Base methods + + protected override DateTime GetTransactionDateUTCInternal() + { + return m_date; + } + + protected override BillingTransactionState GetTransactionStateInternal() + { + return m_transactionState; + } + + protected override BillingReceiptVerificationState GetReceiptVerificationStateInternal() + { + return m_verificationState; + } + + protected override void SetReceiptVerificationStateInternal(BillingReceiptVerificationState value) + { + m_verificationState = value; + } + + protected override string GetReceiptInternal() + { + return m_receipt; + } + + protected override Error GetErrorInternal() + { + return m_error; + } + + protected override BillingEnvironment GetEnvironmentInternal() + { + return m_environment; + } + + protected override string GetApplicationBundleIdentifierInternal() + { + return m_applicationBundleIdentifier; + } + + protected override int GetPurchasedQuantityInternal() + { + return m_purchasedQuantity; + } + + protected override BillingProductRevocationInfo GetRevocationInfoInternal() + { + return m_revocationInfo; + } + + protected override BillingProductSubscriptionStatus GetSubscriptionStatusInternal() + { + return m_subscriptionStatus; + } + + protected override string GetRawDataInternal() + { + return m_rawData; + } + + protected override int GetRequestedQuantityInternal() + { + return m_requestedQuantity; + } + + protected override string GetTagInternal() + { + return m_tag; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionPlain.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionPlain.cs.meta new file mode 100644 index 00000000..43847b7e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionPlain.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c016e3aff44649bf9bf2bd27013a090 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionState.cs new file mode 100644 index 00000000..bc6d837a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionState.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The state of a billing product payment. + /// + public enum BillingTransactionState + { + Unknown, + /// Transaction is being added to the server queue. + Purchasing, + + /// Transaction is in queue, user has been charged. + Purchased, + + /// Transaction was cancelled or failed before being added to the server queue. + Failed, + + /// This transaction restores content previously purchased by the user. + [Obsolete("This state is deprecated. Instead, just use OnRestorePurchasesComplete event with Purchased status to identify restored/past purchases.", true)] //Obsolete:2024 + Restored, + + /// The transaction is in the queue, but its final status is pending external action. + Deferred, + + /// This transaction was refunded back to the user. You can restrict/remove associated item. + Refunded, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionState.cs.meta new file mode 100644 index 00000000..b7be9ff1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BillingTransactionState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cf2368f8d2a1e46f9ae5bdc5585ee93e +timeCreated: 1551075039 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BuyProductOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BuyProductOptions.cs new file mode 100644 index 00000000..5b488ba1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BuyProductOptions.cs @@ -0,0 +1,159 @@ +using System; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents options for purchasing a . + /// + /// + /// This class provides a fluent API for setting up options for a purchase request. + /// + /// + /// The following code demonstrates how to create an instance of with offer redeem details: + /// + /// var offerRedeemDetails = new BillingProductOfferRedeemDetails.Builder() + /// .SetIosPlatformProperties("offerId", "keyId", "nonce", "signature", 123456) + /// .SetAndroidPlatformProperties("offerId") + /// .Build(); + /// var options = new BuyProductOptions.Builder() + /// .SetTag("your-uuid-v4-tag") + /// .SetQuantity(2) + /// .SetOfferRedeemDetails(offerRedeemDetails) + /// .Build(); + /// + /// + /// @ingroup BillingServices + public sealed class BuyProductOptions + { + /// + /// Gets the default instance. + /// + /// + /// Default options have quantity set to 1 and no custom tag associated. + /// + public static BuyProductOptions Default { get; } = new BuyProductOptions(); + + /// + /// Gets or sets a custom tag to be passed along with the purchase request. + /// + /// The custom tag associated with the purchase request. Default value is null. + /// @attention + /// The tag should be a valid UUID v4 formatted string. + /// @remark + /// This can be used as a filter to identify the purchase requests related to a specific user. + public string Tag { get; private set; } = null; + + /// + /// Gets or sets the quantity to be purchased. + /// + /// The quantity to be purchased. Default value is 1. + /// + /// Must be greater than 0. + /// + public int Quantity { get; private set; } = 1; + + /// + /// Gets or sets the offer redeem details for the product offer. + /// + /// The offer redeem details for the product offer. Default value is null. + /// + /// Use this property to provide the details necessary for redeeming a product offer. + /// + public BillingProductOfferRedeemDetails OfferRedeemDetails { get; private set; } = null; + + + private BuyProductOptions() {} + + + public override string ToString() + { + return string.Format("[Tag={0}, Quantity={1}, OfferRedeemDetails={2}]", Tag, Quantity, OfferRedeemDetails); + } + + + + /// + /// Builder class for . + /// + public class Builder + { + /// + /// Options being built. + /// + private BuyProductOptions m_options; + + /// + /// Initializes a new instance of the class. + /// + public Builder() + { + m_options = new BuyProductOptions(); + } + + /// + /// Sets a custom tag to be passed along with the purchase request. + /// + /// Tag to be associated with the purchase. + /// Current Builder instance. + public Builder SetTag(string tag) + { + var isValid = Guid.TryParse(tag, out _); + if(isValid) + { + m_options.Tag = tag; + } + else + { + throw new ArgumentException("Tag must be a valid UUID v4 formatted string."); + } + + return this; + } + + /// + /// Sets the quantity to be purchased. + /// + /// Quantity to be purchased. Must be greater than 0. + /// Current Builder instance. + public Builder SetQuantity(int quantity) + { + m_options.Quantity = quantity; + return this; + } + + + /// + /// Sets the offer redeem details for the product offer. + /// + /// Offer redeem details for the product offer. + /// Current Builder instance. + public Builder SetOfferRedeemDetails(BillingProductOfferRedeemDetails offerRedeemDetails) + { + m_options.OfferRedeemDetails = offerRedeemDetails; + return this; + } + + /// + /// Creates the instance. + /// + /// + /// Instance of . + /// + /// + /// Thrown if is less than 1. + /// + public BuyProductOptions Build() + { + // Ensure that quantity is greater than 0 + if (m_options.Quantity <= 0) + { + throw new VBException("Quantity can't be less than 1."); + } + + return m_options; + } + + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BuyProductOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BuyProductOptions.cs.meta new file mode 100644 index 00000000..76300b05 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/BuyProductOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44322fb09ad584112aef7ff59503ff79 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/Delegates.cs new file mode 100644 index 00000000..19905876 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/Delegates.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public delegate void RetrieveProductsInternalCallback(IBillingProduct[] products, string[] invalidIds, Error error); + + public delegate void PaymentStateChangeInternalCallback(IBillingTransaction[] transactions); + + public delegate void RestorePurchasesInternalCallback(IBillingTransaction[] transactions, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/Delegates.cs.meta new file mode 100644 index 00000000..df3e4c45 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 326df4c556f7346338c03a20b73c7c4e +timeCreated: 1554434122 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingPayment.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingPayment.cs new file mode 100644 index 00000000..5607fbe8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingPayment.cs @@ -0,0 +1,37 @@ +using System; + +namespace VoxelBusters.EssentialKit +{ + public interface IBillingPayment + { + #region Properties + + /// + /// The string that identifies the product within Unity environment (read-only). Potentially independent of store IDs. + /// + [Obsolete("This property is deprecated. Please use Product.Id(IBillingProduct.Id) in IBillingTransaction interface", true)] + string ProductId { get; } + + /// + /// The string that identifies the product registered in the Store (platform specific). (read-only) + /// + [Obsolete("This property is deprecated. Please use Product.PlatformId(IBillingProduct.PlatformId) in IBillingTransaction interface", true)] + string ProductPlatformId { get; } + + /// + /// The number of units to be purchased. This should be a non-zero number. This will be always 1 on Android as user can only set it from store purchase dialog window. + /// + [Obsolete("This property is deprecated. Please use RequestedQuantity in IBillingTransaction interface", true)] + int Quantity { get; } + + /// + /// An optional information provided by the developer at the time of initiating purchase. + /// This can be used to identify a user or anything specific to the product purchase. + /// @note This must be UUID v4 format identifier and can be generated with Guid.NewGuid(). + /// + [Obsolete("This property is deprecated. Please use Tag in IBillingTransaction interface", true)] + string Tag { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingPayment.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingPayment.cs.meta new file mode 100644 index 00000000..3539785a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingPayment.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 28ee8a59bdfe64bffac26d1bfce3bc4a +timeCreated: 1551075456 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingProduct.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingProduct.cs new file mode 100644 index 00000000..cb777e6e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingProduct.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access information about a product registered in Store. + /// + /// @ingroup BillingServices + public interface IBillingProduct + { + #region Properties + + /// + /// The string that identifies the product within Unity environment. (read-only) + /// + string Id { get; } + + /// + /// The string that identifies the product registered in the Store (platform specific). (read-only) + /// + string PlatformId { get; } + + /// + /// The name of the product. + /// + string LocalizedTitle { get; } + + /// + /// A description of the product. + /// + string LocalizedDescription { get; } + + /// + /// The type of the product. + /// + BillingProductType Type { get; } + + /// + /// The cost of the product. + /// + BillingPrice Price { get; } + + /// + /// Determine whether the product can be purchased. + /// + bool IsAvailable { get; } + + /// + /// Gets the subscription information for a billing product. + /// + BillingProductSubscriptionInfo SubscriptionInfo { get; } + + IEnumerable Offers { get; } + + /// + /// The Additional information associated with this product. + /// + IEnumerable Payouts { get; } + + /// + /// The cost of the product prefixed with local currency symbol. + /// + [Obsolete("Use LocalizedText property of Price(BillingPrice) property")] + string LocalizedPrice { get; } + + /// + /// The currency code of the price. + /// + [Obsolete("Use Code property of Price(BillingPrice) property")] + string PriceCurrencyCode { get; } + + /// + /// Gets the currency symbol for the price. + /// + [Obsolete("Use Symbol property of Price(BillingPrice) property")] + string PriceCurrencySymbol { get; } + + /// + /// Additional information associated with this product. This information is provided by the developer using property. + /// + [System.Obsolete("This property is deprecated. Use Payout instead.", false)] + object Tag { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingProduct.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingProduct.cs.meta new file mode 100644 index 00000000..8fae400f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingProduct.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a6bbf3071771d47859cbd4942250a5da +timeCreated: 1551071215 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingTransaction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingTransaction.cs new file mode 100644 index 00000000..c1b642b0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingTransaction.cs @@ -0,0 +1,116 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides an interface to access transaction information of the purchased product. + /// + /// @ingroup BillingServices + public interface IBillingTransaction + { + #region Properties + + /// + /// The string that uniquely identifies a payment transaction. (read-only) + /// + string Id { get; } + + /// [Deprecated]Returns the payment request associated with this transaction. + /// + /// @deprecated since v3.0.0 + [Obsolete("This property is deprecated. Use the properties available in IBillingPayment interface", false)] //Obsolete:2024 + IBillingPayment Payment { get; } + + /// + /// The product associated with this transaction. + /// + /// @warning + /// Check if the product is null before accessing the properties of this object. It's possible in future, you may delete a product and get its transaction details. + /// @note + /// To avoid having null, you can mark a product inactive in our settings so that you can still get the details of this product. + IBillingProduct Product { get; } + + /// + /// The number of units to be purchased. This should be a non-zero number. + /// + int RequestedQuantity { get; } + + /// + /// An optional information provided by the developer at the time of calling BuyProduct provided via BuyProductOptions. + /// This can be used to identify a user or anything specific to the product purchase. + /// + /// @note This must be UUID v4 format identifier and can be generated with Guid.NewGuid(). + string Tag { get; } + + /// + /// The UTC date and time, when user initiated this transaction. + /// + DateTime DateUTC { get; } + + /// + /// The local date and time, when user initiated this transaction. + /// + DateTime Date { get; } + + /// + /// The current state of the transaction. (read-only) + /// + BillingTransactionState TransactionState { get; } + + /// + /// The current state of the validation. + /// + BillingReceiptVerificationState ReceiptVerificationState { get; set; } + + /// + /// The receipt associated with this transaction. + /// @note This is same as PurchaseToken on Android and on iOS this will be null (as starting from StoreKit2, server side validation isn't required and verifyReceipt endpoint is deprecated.) + /// + string Receipt {get; } + + /// Gets the billing environment. + /// The billing environment. + BillingEnvironment Environment { get; } + + /// + /// Gets the quantity of the product that the user has purchased. + /// + int PurchasedQuantity { get; } + + /// + /// Gets the revocation info if this product is revoked + /// + BillingProductRevocationInfo RevocationInfo { get; } + + /// + /// Gets the subscription status of a billing product. + /// + /// The subscription status of the billing product. + BillingProductSubscriptionStatus SubscriptionStatus { get; } + + /// + /// Json string representation of a dictionary containing transaction (iOS & Android) and signature (Android only) data . This can be used for accessing platform specific details. + /// + /// @remark + /// This contains transaction details with "transaction" key identifier. + /// On Android, additionally it contains "signature" key identifier. + string RawData { get; } + + /// + /// An object describing the error that occurred while processing the transaction. (read-only) + /// + Error Error { get; } + + /// + /// Android specific properties useful for receipt validation on server. (read-only) + /// + [Obsolete("This property is obsolete. Use data from RawData properties", true)] + BillingTransactionAndroidProperties AndroidProperties { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingTransaction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingTransaction.cs.meta new file mode 100644 index 00000000..2a68d7cf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/IBillingTransaction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0c3e438bb5cd64f7ea0acd4002938470 +timeCreated: 1551071228 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/INativeBillingServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/INativeBillingServicesInterface.cs new file mode 100644 index 00000000..32fddfb2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/INativeBillingServicesInterface.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public interface INativeBillingServicesInterface : INativeFeatureInterface + { + #region Events + + event RetrieveProductsInternalCallback OnRetrieveProductsComplete; + + event PaymentStateChangeInternalCallback OnTransactionStateChange; + + event RestorePurchasesInternalCallback OnRestorePurchasesComplete; + + #endregion + + #region Methods + + bool CanMakePayments(); + + void RetrieveProducts(BillingProductDefinition[] productDefinitions); + + bool IsProductPurchased(IBillingProduct product); + + void BuyProduct(string productId, string platformProductId, BuyProductOptions options); //Instead just pass BuyOptions in V4. + + IBillingTransaction[] GetTransactions(); + + void FinishTransactions(IBillingTransaction[] transactions); + + void RestorePurchases(bool forceRefresh, string tag); + + void TryClearingUnfinishedTransactions(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/INativeBillingServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/INativeBillingServicesInterface.cs.meta new file mode 100644 index 00000000..5f89839f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/INativeBillingServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3bbaddb016a04467987418debab3d65f +timeCreated: 1551943718 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NativeBillingServicesInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NativeBillingServicesInterfaceBase.cs new file mode 100644 index 00000000..0bffdf14 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NativeBillingServicesInterfaceBase.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public abstract class NativeBillingServicesInterfaceBase : NativeFeatureInterfaceBase, INativeBillingServicesInterface + { + #region Constructors + + protected NativeBillingServicesInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeBillingInterface implementation + + public event RetrieveProductsInternalCallback OnRetrieveProductsComplete; + + public event PaymentStateChangeInternalCallback OnTransactionStateChange; + + public event RestorePurchasesInternalCallback OnRestorePurchasesComplete; + + public abstract void RetrieveProducts(BillingProductDefinition[] productDefinitions); + + public abstract bool IsProductPurchased(IBillingProduct product); + public abstract bool CanMakePayments(); + + public abstract void BuyProduct(string productId, string platformProductId, BuyProductOptions options); + + public abstract IBillingTransaction[] GetTransactions(); + + public abstract void FinishTransactions(IBillingTransaction[] transactions); + + public abstract void RestorePurchases(bool forceRefresh, string tag); + + public abstract void TryClearingUnfinishedTransactions(); + + #endregion + + #region Private methods + + protected void SendRetrieveProductsCompleteEvent(IBillingProduct[] products, string[] invalidProductIds, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnRetrieveProductsComplete(products, invalidProductIds, error)); + } + + protected void SendPaymentStateChangeEvent(params IBillingTransaction[] transactions) + { + CallbackDispatcher.InvokeOnMainThread(() => OnTransactionStateChange(transactions)); + } + + protected void SendRestorePurchasesCompleteEvent(IBillingTransaction[] transactions, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnRestorePurchasesComplete(transactions, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NativeBillingServicesInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NativeBillingServicesInterfaceBase.cs.meta new file mode 100644 index 00000000..9e45d383 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NativeBillingServicesInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ad19adf21aaa441ce992867a129fa5c6 +timeCreated: 1551943718 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NullBillingServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NullBillingServicesInterface.cs new file mode 100644 index 00000000..01bbf0c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NullBillingServicesInterface.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + internal class NullBillingServicesInterface : NativeBillingServicesInterfaceBase + { + #region Constructors + + public NullBillingServicesInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("BillingServices"); + } + + #endregion + + #region Base class methods + + public override bool CanMakePayments() + { + LogNotSupported(); + + return false; + } + + public override void RetrieveProducts(BillingProductDefinition[] productDefinitions) + { + LogNotSupported(); + + SendRetrieveProductsCompleteEvent(new IBillingProduct[0], Array.ConvertAll(productDefinitions, (item) => item.GetPlatformIdForActivePlatform()), Diagnostics.kFeatureNotSupported); + } + + public override bool IsProductPurchased(IBillingProduct product) + { + return false; + } + + public override void BuyProduct(string productId, string productPlatformId, BuyProductOptions options) + { + // set default value to reference parameters + LogNotSupported(); + } + + public override IBillingTransaction[] GetTransactions() + { + LogNotSupported(); + + return new IBillingTransaction[0]; + } + + public override void FinishTransactions(IBillingTransaction[] transactions) + { + LogNotSupported(); + } + + public override void RestorePurchases(bool forceRefresh, string tag) + { + LogNotSupported(); + + SendRestorePurchasesCompleteEvent(new IBillingTransaction[0], Diagnostics.kFeatureNotSupported); + } + + public override void TryClearingUnfinishedTransactions() + { + LogNotSupported(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NullBillingServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NullBillingServicesInterface.cs.meta new file mode 100644 index 00000000..244b6bac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/BillingServices/NullBillingServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 058585d011dbd4ebfa598cdafd8b7f76 +timeCreated: 1562654598 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices.meta new file mode 100644 index 00000000..32ffa925 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bfd3b808eb3b541e9a9ce145a6e7fe15 +folderAsset: yes +timeCreated: 1550466068 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudSavedDataChangeReasonCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudSavedDataChangeReasonCode.cs new file mode 100644 index 00000000..fe089bdd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudSavedDataChangeReasonCode.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Possible reasons when cloud data changed event occurs. + /// + public enum CloudSavedDataChangeReasonCode + { + /// This occurs when another instance of your app using same cloud service account, uploads a new value. + ServerChange, + + /// This occurs when an attempt to write to key-value storage was discarded because an initial download from cloud server has not yet happened. + InitialSyncChange, + + /// This occurs when your app’s key-value store has exceeded its space quota on the cloud server. + QuotaViolationChange, + + /// This occurs when user has changed the cloud service account. The keys and values in the local key-value store have been replaced with those from the new account. + AccountChange + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudSavedDataChangeReasonCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudSavedDataChangeReasonCode.cs.meta new file mode 100644 index 00000000..be9bd740 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudSavedDataChangeReasonCode.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 06181585bc6494b9b91ec4cafc489f5e +timeCreated: 1553342238 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServices.cs new file mode 100644 index 00000000..8fab0ded --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServices.cs @@ -0,0 +1,593 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.CloudServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup CloudServices Cloud Services + * @brief Provides a cross-platform interface to sync information across various devices by storing it in the cloud. + */ + + /// + /// Provides a cross-platform interface to sync information across various devices by storing it in the cloud. + /// + /// + /// + /// You can use to make preference, configuration, and app-state data available to every instance of your app on every device connected to a user’s cloud service account. + /// You can store primitive values as well as object types: IList and IDictionary. + /// + /// + /// When you use this feature on iOS device, iCloud service will be used. Whereas on Android, it will use Google Cloud service. + /// For setup instructions on iOS, read Adding iCloud Support, + /// Similarly for Android, see . + /// + /// + /// + /// \note + /// + /// On iOS, the total amount of space available to store key-value data, for a given user, is 1 MB. There is a per-key value size limit of 1 MB, and a maximum of 1024 keys. + /// If you attempt to write data that exceeds these quotas, the write attempt fails and no change is made to your cloud. + /// In this scenario, the system posts the with a change reason of . + /// + /// + /// @ingroup CloudServices + public static class CloudServices + { + #region Constants + + private const string kCacheKeyUserId = "$userId"; + + #endregion + + #region Static fields + + [ClearOnReload] + private static INativeCloudServicesInterface s_nativeInterface; + [ClearOnReload] + private static KeyValueDataStore s_localCache; + + #endregion + + #region Static properties + + public static CloudServicesUnitySettings UnitySettings { get; private set; } + + public static CloudUser ActiveUser { get; private set; } + + internal static KeyValueDataStore LocalCache => ObjectHelper.CreateInstanceIfNull( + reference: ref s_localCache, + createFunc: () => new KeyValueDataStore(savePath: $"{EssentialKitSettings.PersistentDataPath}/CloudLocalCache.json")); + + #endregion + + #region Static events + + /// + /// Event that will be called when cloud user changed. + /// + public static event EventCallback OnUserChange; + + /// + /// Event that will be called when the value of one or more keys in the local key-value store changed due to incoming data pushed from cloud. + /// + /// @note This event is triggered ONLY if there are changes between local and cloud data values. + public static event Callback OnSavedDataChange; + + /// + /// Event that will be called when the synchronize request is finished. + /// + public static event Callback OnSynchronizeComplete; + + #endregion + + #region Setup methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + public static void Initialize(CloudServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Reset event properties + OnUserChange = null; + OnSavedDataChange = null; + OnSynchronizeComplete = null; + + // Set default properties + UnitySettings = settings; + ActiveUser = new CloudUser(userId: null, accountStatus: CloudUserAccountStatus.CouldNotDetermine); + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.CloudServices, true); + + RegisterForEvents(); + } + + #endregion + + #region Get values methods + + /// + /// Returns the boolean value associated with the specified key. + /// + /// The boolean value associated with the specified key, that value is returned. or false if the key was not found. + /// A string used to identify the value stored in the cloud data store. + public static bool GetBool(string key) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return default(bool); + } + + try + { + // make request + return s_nativeInterface.GetBool(key); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return default(bool); + } + } + + /// + /// Returns the integer value associated with the specified key. + /// + /// The integer value associated with the specified key, that value is returned. or 0 if the key was not found. + /// A string used to identify the value stored in the cloud data store. + public static int GetInt(string key) + { + return (int)GetLong(key); + } + + /// + /// Returns the long value associated with the specified key. + /// + /// The long value associated with the specified key or 0 if the key was not found. + /// A string used to identify the value stored in the cloud data store. + public static long GetLong(string key) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return default(long); + } + + try + { + // make request + return s_nativeInterface.GetLong(key); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return default(long); + } + } + + /// + /// Returns the float value associated with the specified key. + /// + /// The float value associated with the specified key or 0 if the key was not found. + /// A string used to identify the value stored in the cloud data store. + public static float GetFloat(string key) + { + return (float)GetDouble(key); + } + + /// + /// Returns the double value associated with the specified key. + /// + /// The double value associated with the specified key or 0 if the key was not found. + /// A string used to identify the value stored in the cloud data store. + public static double GetDouble(string key) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return default(double); + } + + try + { + // make request + return s_nativeInterface.GetDouble(key); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return default(double); + } + } + + /// + /// Returns the string value associated with the specified key. + /// + /// The string associated with the specified key, or null if the key was not found or its value is not an string object. + /// A string used to identify the value stored in the cloud data store. + public static string GetString(string key) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return null; + } + + try + { + // make request + return s_nativeInterface.GetString(key); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + + /// + /// Returns the array object associated with the specified key. + /// + /// Array object associated with the specified key, or null if the key was not found or its value is not an Array object. + /// A string used to identify the value stored in the cloud data store. + public static byte[] GetByteArray(string key) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return null; + } + + try + { + // make request + return s_nativeInterface.GetByteArray(key); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + + /// + /// Returns true if key exists in the data snapshot. + /// + /// A string used to identify the value stored in the current data snapshot. + /// true if key exists in the data snapshot, otherwise false. + public static bool HasKey(string key) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return false; + } + + try + { + // make request + return s_nativeInterface.HasKey(key); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + #endregion + + #region Set values methods + + /// + /// Sets a boolean value for the specified key in the cloud data store. + /// + /// The key under which to store the value. The length of this key must not exceed 64 bytes. + /// The boolean value to store. + public static void SetBool(string key, bool value) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return; + } + + try + { + // copy value to the local cache + LocalCache.SetBool(key, value); + + // make request + s_nativeInterface.SetBool(key, value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets a interger value for the specified key in the cloud data store. + /// + /// The key under which to store the value. The length of this key must not exceed 64 bytes. + /// The integer value to store. + public static void SetInt(string key, int value) + { + SetLong(key, value); + } + + /// + /// Sets a long value for the specified key in the cloud data store. + /// + /// The key under which to store the value. The length of this key must not exceed 64 bytes. + /// The long value to store. + public static void SetLong(string key, long value) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return; + } + + try + { + // copy value to the local cache + LocalCache.SetLong(key, value); + + // make request + s_nativeInterface.SetLong(key, value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets a float value for the specified key in the cloud data store. + /// + /// The key under which to store the value. The length of this key must not exceed 64 bytes. + /// The float value to store. + public static void SetFloat(string key, float value) + { + SetDouble(key, value); + } + + /// + /// Sets a double value for the specified key in the cloud data store. + /// + /// The key under which to store the value. The length of this key must not exceed 64 bytes. + /// The double value to store. + public static void SetDouble(string key, double value) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return; + } + + try + { + // copy value to the local cache + LocalCache.SetDouble(key, value); + + // make request + s_nativeInterface.SetDouble(key, value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets a string value for the specified key in the cloud data store. + /// + /// The key under which to store the value. The length of this key must not exceed 64 bytes. + /// The string value to store. + public static void SetString(string key, string value) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return; + } + + try + { + // copy value to the local cache + LocalCache.SetString(key, value); + + // make request + s_nativeInterface.SetString(key, value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets an array object for the specified key in the cloud data store. + /// + /// The key under which to store the value. The length of this key must not exceed 64 bytes. + /// Array object whose contents has to be stored. The objects in the list must be primitive, IList, IDictionary. + public static void SetByteArray(string key, byte[] value) + { + // validate arguments + if (string.IsNullOrEmpty(key)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Key is null/empty."); + return; + } + + try + { + // copy value to the local cache + LocalCache.SetByteArray(key, value); + + // make request + s_nativeInterface.SetByteArray(key, value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + public static IDictionary GetSnapshot() + { + return s_nativeInterface.GetSnapshot(); + } + + #endregion + + #region Sync methods + + /// + /// Explicitly synchronizes in-memory data with those stored on disk. + /// + /// + /// \note is triggered, when your app has completed processing synchronisation request. + /// + public static void Synchronize(Callback callback = null) + { + try + { + // serialize local copy + LocalCache.Synchronize(); + + // make request + s_nativeInterface.Synchronize((success, error) => + { + // send result to caller object and global listeners + var result = new CloudServicesSynchronizeResult(success); + CallbackDispatcher.InvokeOnMainThread(callback, result); + CallbackDispatcher.InvokeOnMainThread(OnSynchronizeComplete, result); + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Remove value methods + + /// + /// Removes the value associated with the specified key from the cloud data store. + /// + /// The key corresponding to the value you want to remove. + public static void RemoveKey(string key) + { + // validate arguments + Assert.IsNotNullOrEmpty(key, "key"); + + try + { + // remove value from the local cache + LocalCache.RemoveKey(key); + + // make request + s_nativeInterface.RemoveKey(key); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + private static void RegisterForEvents() + { + s_nativeInterface.OnUserChange += HandleOnUserChange; + s_nativeInterface.OnSavedDataChange += HandleOnSavedDataChange; + } + + private static void UnregisterFromEvents() + { + s_nativeInterface.OnUserChange -= HandleOnUserChange; + s_nativeInterface.OnSavedDataChange -= HandleOnSavedDataChange; + } + + private static void UpdateLocalCacheOnUserChange(CloudUser user) + { + switch (user.AccountStatus) + { + case CloudUserAccountStatus.CouldNotDetermine: + case CloudUserAccountStatus.Restricted: + // no action + break; + + case CloudUserAccountStatus.NoAccount: + // reset cache + LocalCache.Clear(); + break; + + case CloudUserAccountStatus.Available: + string cacheOwnerId = LocalCache.GetString(key: kCacheKeyUserId); + if (user.UserId != cacheOwnerId) + { + LocalCache.Clear(); + LocalCache.SetString(key: kCacheKeyUserId, user.UserId); + } + break; + } + } + + #endregion + + #region Event callback methods + + private static void HandleOnUserChange(CloudUser user, Error error) + { + // update user information + ActiveUser = user; + + // check whether cache is dirty + if (user != null) + { + UpdateLocalCacheOnUserChange(user); + } + + // notify listeners + var result = new CloudServicesUserChangeResult(user: user); + CallbackDispatcher.InvokeOnMainThread(OnUserChange, result, error); + } + + private static void HandleOnSavedDataChange(CloudSavedDataChangeReasonCode changeReason, string[] changedKeys) + { + // notify listeners + var result = new CloudServicesSavedDataChangeResult( + changeReason: changeReason, + changedKeys: changedKeys); + CallbackDispatcher.InvokeOnMainThread(OnSavedDataChange, result); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServices.cs.meta new file mode 100644 index 00000000..ce7bca2d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 15e55cdbe679b407499a3bdfc18667e5 +timeCreated: 1550466346 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesError.cs new file mode 100644 index 00000000..6d6addb5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesError.cs @@ -0,0 +1,17 @@ + +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class CloudServicesError + { + public const string kDomain = "Cloud Services(Essential Kit)"; + + public static Error Unknown => CreateError(CloudServicesErrorCode.Unknown, "Unknown error"); + + private static Error CreateError(CloudServicesErrorCode code, string description) + { + return new Error(kDomain, (int)code, description); + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesError.cs.meta new file mode 100644 index 00000000..efa43cb8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7ffd338ff0ea411187a5975d4028e94 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesErrorCode.cs new file mode 100644 index 00000000..16f73969 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesErrorCode.cs @@ -0,0 +1,16 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [IncludeInDocs] + /// + /// Contains the list of error codes that can occur during cloud services operations. + /// + public enum CloudServicesErrorCode + { + /// + /// Unknown error occurred. + /// + Unknown + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesErrorCode.cs.meta new file mode 100644 index 00000000..39f798cf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a481dabe434e404ea27000ae6ec0a32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSavedDataChangeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSavedDataChangeResult.cs new file mode 100644 index 00000000..7a2842e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSavedDataChangeResult.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.CloudServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information related to event. + /// + /// @ingroup CloudServices + public class CloudServicesSavedDataChangeResult + { + #region Properties + + /// + /// The reason causing local data change. + /// + public CloudSavedDataChangeReasonCode ChangeReason { get; private set; } + + /// + /// An array of changed keys. + /// + public string[] ChangedKeys { get; private set; } + + #endregion + + #region Constructors + + internal CloudServicesSavedDataChangeResult(CloudSavedDataChangeReasonCode changeReason, string[] changedKeys) + { + // Set properties + ChangeReason = changeReason; + ChangedKeys = changedKeys; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSavedDataChangeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSavedDataChangeResult.cs.meta new file mode 100644 index 00000000..7b60162e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSavedDataChangeResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1311a04de8e3844a1a35a4f212e505ef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSynchronizeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSynchronizeResult.cs new file mode 100644 index 00000000..e0a8b9b7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSynchronizeResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information related to event. + /// + /// @ingroup CloudServices + public class CloudServicesSynchronizeResult + { + #region Properties + + /// + /// The value indicates whether synchronize request was successful. + /// + /// true if success; otherwise, false. + public bool Success { get; private set; } + + #endregion + + #region Constructors + + internal CloudServicesSynchronizeResult(bool success) + { + // Set properties + Success = success; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSynchronizeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSynchronizeResult.cs.meta new file mode 100644 index 00000000..2b19693e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesSynchronizeResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a125ffe6a52344beaca63369be09cc1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUserChangeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUserChangeResult.cs new file mode 100644 index 00000000..b53e8e37 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUserChangeResult.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information related to event. + /// + /// @ingroup CloudServices + public class CloudServicesUserChangeResult + { + #region Properties + + /// + /// The cloud user. + /// + public ICloudUser User { get; private set; } + + #endregion + + #region Constructors + + internal CloudServicesUserChangeResult(ICloudUser user) + { + // set properties + User = user; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUserChangeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUserChangeResult.cs.meta new file mode 100644 index 00000000..408d972a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUserChangeResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf034480c6d7e4a4d881b5e0fb59112c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUtility.cs new file mode 100644 index 00000000..af982360 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUtility.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Utility class for handling cloud services related operations. + /// + /// @ingroup CloudServices + public static class CloudServicesUtility + { + /// + /// Gets the cloud and local cache value associated with the specified key. + /// + /// Specify the type of the value stored in cloud. + /// string used to identify the value stored in the cloud data store. + /// The value available in Cloud storage. + /// The value available in local cache. + /// The default value to be used when specified key doesn't exist in local cache. + /// + public static bool TryGetCloudAndLocalCacheValues(string key, out T cloudValue, out T localCacheValue, T localCacheDefaultValue = default) + { + switch (Type.GetTypeCode(typeof(T))) + { + case TypeCode.Boolean: + cloudValue = (T)(object)CloudServices.GetBool(key); + localCacheValue = (T)(object)CloudServices.LocalCache.GetBool(key, (bool)(object)localCacheDefaultValue); + return true; + + case TypeCode.Int32: + cloudValue = (T)(object)CloudServices.GetInt(key); + localCacheValue = (T)(object)CloudServices.LocalCache.GetLong(key, (long)(object)localCacheDefaultValue); + return true; + + case TypeCode.Int64: + cloudValue = (T)(object)CloudServices.GetLong(key); + localCacheValue = (T)(object)CloudServices.LocalCache.GetLong(key, (long)(object)localCacheDefaultValue); + return true; + + case TypeCode.Single: + cloudValue = (T)(object)CloudServices.GetFloat(key); + localCacheValue = (T)(object)CloudServices.LocalCache.GetDouble(key, (double)(object)localCacheDefaultValue); + return true; + + case TypeCode.Double: + cloudValue = (T)(object)CloudServices.GetDouble(key); + localCacheValue = (T)(object)CloudServices.LocalCache.GetDouble(key, (double)(object)localCacheDefaultValue); + return true; + + case TypeCode.String: + cloudValue = (T)(object)CloudServices.GetString(key); + localCacheValue = (T)(object)CloudServices.LocalCache.GetString(key, (string)(object)localCacheDefaultValue); + return true; + + case TypeCode.Object: + if (typeof(T) == typeof(byte[])) + { + cloudValue = (T)(object)CloudServices.GetByteArray(key); + localCacheValue = (T)(object)CloudServices.LocalCache.GetByteArray(key, (byte[])(object)localCacheDefaultValue); + return true; + } + else + { + cloudValue = default; + localCacheValue = default; + return false; + } + + default: + cloudValue = default; + localCacheValue = default; + return false; + } + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUtility.cs.meta new file mode 100644 index 00000000..8a179175 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudServicesUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2ca438e7a68c47a69e67d8040faf098 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUser.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUser.cs new file mode 100644 index 00000000..0c01e696 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUser.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.CloudServicesCore +{ + public class CloudUser : ICloudUser + { + #region Properties + + public string UserId { get; private set; } + + public CloudUserAccountStatus AccountStatus { get; private set; } + + #endregion + + #region Constructors + + public CloudUser(string userId, CloudUserAccountStatus accountStatus) + { + // set properties + UserId = userId; + AccountStatus = accountStatus; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUser.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUser.cs.meta new file mode 100644 index 00000000..8b4262dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUser.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6f85d8e985ee945aeb17bec3512cdfe4 +timeCreated: 1578594082 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUserAccountStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUserAccountStatus.cs new file mode 100644 index 00000000..540f0457 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUserAccountStatus.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Enumeration indicating the availability of the user’s cloud account. + /// + public enum CloudUserAccountStatus + { + /// Indicates that an error occurred during an attempt to retrieve the account status. + CouldNotDetermine = 0, + + /// The user’s iCloud account is available and may be used by this app. + Available = 1, + + /// The user’s iCloud account is not available. Access was denied due to Parental Controls. + Restricted = 2, + + /// The user’s iCloud account is not available because no account information has been provided for this device. + NoAccount = 3, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUserAccountStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUserAccountStatus.cs.meta new file mode 100644 index 00000000..93c0c40c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/CloudUserAccountStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ad715e883882d4285b6b5848d185a776 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/Delegates.cs new file mode 100644 index 00000000..a3b9c861 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/Delegates.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.CloudServicesCore +{ + public delegate void UserChangeInternalCallback(CloudUser user, Error error); + + public delegate void SavedDataChangeInternalCallback(CloudSavedDataChangeReasonCode changeReason, string[] changedKeys); + + public delegate void SynchronizeInternalCallback(bool success, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/Delegates.cs.meta new file mode 100644 index 00000000..7c634ba4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3917091740c6468280630df02783aa5 +timeCreated: 1554435757 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/ICloudUser.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/ICloudUser.cs new file mode 100644 index 00000000..5f4b4c65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/ICloudUser.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access information related to active cloud user. + /// + /// @ingroup CloudServices + public interface ICloudUser + { + #region Properties + + /// + /// The string to identify active user. + /// + string UserId { get; } + + /// + /// The current status of user account. + /// + CloudUserAccountStatus AccountStatus { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/ICloudUser.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/ICloudUser.cs.meta new file mode 100644 index 00000000..cdd060bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/ICloudUser.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8504c1b14d34b4d7a9cb8d6f6e15d6aa +timeCreated: 1578640095 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/INativeCloudServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/INativeCloudServicesInterface.cs new file mode 100644 index 00000000..aa9f33ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/INativeCloudServicesInterface.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.CloudServicesCore +{ + public interface INativeCloudServicesInterface : INativeFeatureInterface + { + #region Events + + event UserChangeInternalCallback OnUserChange; + + event SavedDataChangeInternalCallback OnSavedDataChange; + + #endregion + + #region Getting values methods + + bool GetBool(string key); + + long GetLong(string key); + + double GetDouble(string key); + + string GetString(string key); + + byte[] GetByteArray(string key); + + #endregion + + #region Query methods + + bool HasKey(string key); + + #endregion + + #region Setting values methods + + void SetBool(string key, bool value); + + void SetLong(string key, long value); + + void SetDouble(string key, double value); + + void SetString(string key, string value); + + void SetByteArray(string key, byte[] value); + + #endregion + + #region Removing keys methods + + void RemoveKey(string key); + + #endregion + + #region Other methods + + void Synchronize(SynchronizeInternalCallback callback); + + IDictionary GetSnapshot(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/INativeCloudServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/INativeCloudServicesInterface.cs.meta new file mode 100644 index 00000000..1d001142 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/INativeCloudServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6c1c7b76d19024905876dffc360c5db8 +timeCreated: 1550467930 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NativeCloudServicesInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NativeCloudServicesInterfaceBase.cs new file mode 100644 index 00000000..10b742fc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NativeCloudServicesInterfaceBase.cs @@ -0,0 +1,70 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.CloudServicesCore +{ + public abstract class NativeCloudServicesInterfaceBase : NativeFeatureInterfaceBase, INativeCloudServicesInterface + { + #region Constructors + + protected NativeCloudServicesInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeCloudServicesInterface implementation + + public event UserChangeInternalCallback OnUserChange; + + public event SavedDataChangeInternalCallback OnSavedDataChange; + + public abstract bool GetBool(string key); + + public abstract long GetLong(string key); + + public abstract double GetDouble(string key); + + public abstract string GetString(string key); + + public abstract byte[] GetByteArray(string key); + + public abstract bool HasKey(string key); + + public abstract void SetBool(string key, bool value); + + public abstract void SetLong(string key, long value); + + public abstract void SetDouble(string key, double value); + + public abstract void SetString(string key, string value); + + public abstract void SetByteArray(string key, byte[] value); + + public abstract void RemoveKey(string key); + + public abstract void Synchronize(SynchronizeInternalCallback callback); + + public abstract IDictionary GetSnapshot(); + + #endregion + + #region Private methods + + protected void SendUserChangeEvent(CloudUser user, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnUserChange(user, error)); + } + + protected void SendSavedDataChangeEvent(CloudSavedDataChangeReasonCode changeReason, string[] changedKeys) + { + CallbackDispatcher.InvokeOnMainThread(() => OnSavedDataChange(changeReason, changedKeys)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NativeCloudServicesInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NativeCloudServicesInterfaceBase.cs.meta new file mode 100644 index 00000000..b1982107 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NativeCloudServicesInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0d514393ee8ca4e0a82b6904a46890f0 +timeCreated: 1550469447 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NullCloudServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NullCloudServicesInterface.cs new file mode 100644 index 00000000..037bd367 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NullCloudServicesInterface.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.CloudServicesCore +{ + public class NullCloudServicesInterface : NativeCloudServicesInterfaceBase, INativeCloudServicesInterface + { + #region Constructors + + public NullCloudServicesInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("CloudServices"); + } + + #endregion + + #region Base methods + + public override bool GetBool(string key) + { + LogNotSupported(); + + return false; + } + + public override long GetLong(string key) + { + LogNotSupported(); + + return 0L; + } + + public override double GetDouble(string key) + { + LogNotSupported(); + + return 0d; + } + + public override string GetString(string key) + { + LogNotSupported(); + + return null; + } + + public override byte[] GetByteArray(string key) + { + LogNotSupported(); + + return null; + } + + public override bool HasKey(string key) + { + LogNotSupported(); + + return false; + } + + + public override void SetBool(string key, bool value) + { + LogNotSupported(); + } + + public override void SetLong(string key, long value) + { + LogNotSupported(); + } + + public override void SetDouble(string key, double value) + { + LogNotSupported(); + } + + public override void SetString(string key, string value) + { + LogNotSupported(); + } + + public override void SetByteArray(string key, byte[] value) + { + LogNotSupported(); + } + + public override void RemoveKey(string key) + { + LogNotSupported(); + } + + public override void Synchronize(SynchronizeInternalCallback callback) + { + LogNotSupported(); + + callback(false, null); + } + + public override IDictionary GetSnapshot() + { + LogNotSupported(); + + return null; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NullCloudServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NullCloudServicesInterface.cs.meta new file mode 100644 index 00000000..0b9a9c9c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/CloudServices/NullCloudServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a8af1d377b9e349aea064af3d101d8af +timeCreated: 1562654598 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices.meta new file mode 100644 index 00000000..f7e065f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ac6a8b19ba8644638993d30cc1dd0ed0 +folderAsset: yes +timeCreated: 1586355101 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkDefinition.cs new file mode 100644 index 00000000..5e31fa20 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkDefinition.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents definition of deep link which can be used to configure deep link services. + /// + /// @ingroup DeepLinkServices + [Serializable] + public class DeepLinkDefinition + { + #region Fields + + [SerializeField, DefaultValue("identifier")] + private string m_identifier; + + [SerializeField, DefaultValue("applinks")] + private string m_serviceType; + + [SerializeField] + private string m_scheme; + + [SerializeField] + private string m_host; + + [SerializeField] + private string m_path; + + #endregion + + #region Properties + /// + /// Gets the identifier for the deep link. + /// + public string Identifier => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_identifier, + value: m_identifier); + + /// + /// Gets the service type for the deep link. + /// + public string ServiceType => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_serviceType, + value: m_serviceType); + + /// + /// Gets the scheme for the deep link. + /// + public string Scheme => PropertyHelper.GetValueOrDefault(m_scheme); + + /// + /// Gets the host for the deep link. + /// + public string Host => PropertyHelper.GetValueOrDefault(m_host); + + /// + /// Gets the path for the deep link. + /// + public string Path => PropertyHelper.GetValueOrDefault(m_path); + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// The identifier for the deep link. + /// The service type for the deep link. + /// The scheme for the deep link. + /// The host for the deep link. + /// The path for the deep link. + public DeepLinkDefinition(string identifier = null, string serviceType = null, + string scheme = null, string host = null, + string path = null) + { + // set properties + m_identifier = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_identifier, + value: identifier); + m_serviceType = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_serviceType, + value: serviceType); + m_scheme = scheme; + m_host = host; + m_path = path; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkDefinition.cs.meta new file mode 100644 index 00000000..e292ef3e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7538fc1e75d974a8c88ade23e53743d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServices.cs new file mode 100644 index 00000000..3ba4f631 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServices.cs @@ -0,0 +1,147 @@ +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.DeepLinkServicesCore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup DeepLinkServices Deep Link Services + * @brief Cross-platform interface to handle deep links. + */ + + /// + /// Provides cross-platform interface to handle deep links. + /// + /// + /// This class provides cross-platform interface to handle deep links. + /// + /// @ingroup DeepLinkServices + public static class DeepLinkServices + { + #region Static fields + + [ClearOnReload] + private static INativeDeepLinkServicesInterface s_nativeInterface; + + #endregion + + #region Static properties + + public static DeepLinkServicesUnitySettings UnitySettings { get; private set; } + + public static IDeepLinkServicesDelegate Delegate { get; set; } + + #endregion + + #region Static events + + /// + /// Event that will be called when url scheme is opened. + /// + public static event Callback OnCustomSchemeUrlOpen; + + /// + /// Event that will be called when universal link is opened. + /// + public static event Callback OnUniversalLinkOpen; + + #endregion + + #region Setup methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + /// @name Advanced Usage + /// @{ + + /// + /// Initializes the module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + /// The settings to be used for initialization. + /// + /// + /// The settings configure the behavior of the module. + /// + /// + public static void Initialize(DeepLinkServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Reset event properties + OnCustomSchemeUrlOpen = null; + OnUniversalLinkOpen = null; + + // Set properties + UnitySettings = settings; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.DeepLinkServices, true); + s_nativeInterface.SetCanHandleCustomSchemeUrl(handler: CanHandleCustomSchemeUrl); + s_nativeInterface.SetCanHandleUniversalLink(handler: CanHandleUniversalLink); + s_nativeInterface.OnCustomSchemeUrlOpen += HandleOnCustomSchemeUrlOpen; + s_nativeInterface.OnUniversalLinkOpen += HandleOnUniversalLinkOpen; + s_nativeInterface.Init(); + } + /// @} + + private static bool CanHandleCustomSchemeUrl(string url) + { + return (Delegate == null) || Delegate.CanHandleCustomSchemeUrl(new Uri(url)); + } + + private static bool CanHandleUniversalLink(string url) + { + return (Delegate == null) || Delegate.CanHandleUniversalLink(new Uri(url)); + } + + #endregion + + #region Callback methods + + private static void HandleOnCustomSchemeUrlOpen(string url) + { + DebugLogger.Log(EssentialKitDomain.Default, $"Detected url scheme: {url}"); + + // notify listeners + var result = new DeepLinkServicesDynamicLinkOpenResult(new Uri(url), url); + + if (OnCustomSchemeUrlOpen != null) + { + CallbackDispatcher.InvokeOnMainThread(OnCustomSchemeUrlOpen, result); + } + else + { + SurrogateCoroutine.WaitUntilAndInvoke(new WaitUntil(() => OnCustomSchemeUrlOpen != null), () => + { + CallbackDispatcher.InvokeOnMainThread(OnCustomSchemeUrlOpen, result); + }); + } + } + + private static void HandleOnUniversalLinkOpen(string url) + { + DebugLogger.Log(EssentialKitDomain.Default, $"Detected universal link: {url}"); + + // notify listeners + var result = new DeepLinkServicesDynamicLinkOpenResult(new Uri(url), url); + + if (OnUniversalLinkOpen != null) + { + CallbackDispatcher.InvokeOnMainThread(OnUniversalLinkOpen, result); + } + else + { + SurrogateCoroutine.WaitUntilAndInvoke(new WaitUntil(() => OnUniversalLinkOpen != null), () => + { + CallbackDispatcher.InvokeOnMainThread(OnUniversalLinkOpen, result); + }); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServices.cs.meta new file mode 100644 index 00000000..75bab6d4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f5bd418e7f69a4b9a93b3aa6a40a2e9b +timeCreated: 1586417812 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServicesDynamicLinkOpenResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServicesDynamicLinkOpenResult.cs new file mode 100644 index 00000000..a31b925b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServicesDynamicLinkOpenResult.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when deep link is opened. + /// + /// @ingroup DeepLinkServices + public class DeepLinkServicesDynamicLinkOpenResult + { + #region Properties + + /// + /// The URL of the deep link. + /// + public Uri Url { get; private set; } + + /// + /// The received notification as a raw string. + /// + public string RawUrlString { get; private set; } + + #endregion + + #region Constructors + + internal DeepLinkServicesDynamicLinkOpenResult(Uri url, string rawUrlString) + { + // Set properties + Url = url; + RawUrlString = rawUrlString; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServicesDynamicLinkOpenResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServicesDynamicLinkOpenResult.cs.meta new file mode 100644 index 00000000..2cf97af4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/DeepLinkServicesDynamicLinkOpenResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01de02c2e895b46ddb93671bde4bcfd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/Delegates.cs new file mode 100644 index 00000000..7636d1c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/Delegates.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore +{ + public delegate void DynamicLinkOpenInternalCallback(string url); + + public delegate bool CanHandleDynamicLinkInternal(string url); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/Delegates.cs.meta new file mode 100644 index 00000000..785392c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8374d9568269c4193b907a16eb359850 +timeCreated: 1586355320 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/IDeepLinkServicesDelegate.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/IDeepLinkServicesDelegate.cs new file mode 100644 index 00000000..8f13e1e6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/IDeepLinkServicesDelegate.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public interface IDeepLinkServicesDelegate + { + bool CanHandleCustomSchemeUrl(Uri link); + + bool CanHandleUniversalLink(Uri link); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/IDeepLinkServicesDelegate.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/IDeepLinkServicesDelegate.cs.meta new file mode 100644 index 00000000..316978b4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/IDeepLinkServicesDelegate.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 77f52ab6a69154a51b877eb2cc6de402 +timeCreated: 1586419884 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/INativeDeepLinkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/INativeDeepLinkServicesInterface.cs new file mode 100644 index 00000000..be77d2af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/INativeDeepLinkServicesInterface.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore +{ + public interface INativeDeepLinkServicesInterface : INativeFeatureInterface + { + #region Events + + event DynamicLinkOpenInternalCallback OnCustomSchemeUrlOpen; + + event DynamicLinkOpenInternalCallback OnUniversalLinkOpen; + + #endregion + + #region Methods + + void Init(); + + void SetCanHandleCustomSchemeUrl(CanHandleDynamicLinkInternal handler); + + void SetCanHandleUniversalLink(CanHandleDynamicLinkInternal handler); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/INativeDeepLinkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/INativeDeepLinkServicesInterface.cs.meta new file mode 100644 index 00000000..ba27d2ff --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/INativeDeepLinkServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9ade47ca7cee34aa4915817402e41bb6 +timeCreated: 1586355246 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NativeDeepLinkServicesInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NativeDeepLinkServicesInterfaceBase.cs new file mode 100644 index 00000000..c5ec1c7e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NativeDeepLinkServicesInterfaceBase.cs @@ -0,0 +1,71 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore +{ + public abstract class NativeDeepLinkServicesInterfaceBase : NativeFeatureInterfaceBase, INativeDeepLinkServicesInterface + { + #region Fields + + private CanHandleDynamicLinkInternal m_canHandleCustomSchemeUrl; + + private CanHandleDynamicLinkInternal m_canHandleUniversalLink; + + #endregion + + #region Constructors + + protected NativeDeepLinkServicesInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeDeepLinkServicesInterface implementation + + public event DynamicLinkOpenInternalCallback OnCustomSchemeUrlOpen; + + public event DynamicLinkOpenInternalCallback OnUniversalLinkOpen; + + public void SetCanHandleCustomSchemeUrl(CanHandleDynamicLinkInternal handler) + { + m_canHandleCustomSchemeUrl = handler; + } + + public void SetCanHandleUniversalLink(CanHandleDynamicLinkInternal handler) + { + m_canHandleUniversalLink = handler; + } + + public abstract void Init(); + + #endregion + + #region Private methods + + protected bool CanHandleCustomSchemeUrl(string url) + { + return m_canHandleCustomSchemeUrl(url); + } + + protected bool CanHandleUniversalLink(string url) + { + return m_canHandleUniversalLink(url); + } + + protected void SendCustomSchemeUrlOpenEvent(string url) + { + CallbackDispatcher.InvokeOnMainThread(() => OnCustomSchemeUrlOpen(url)); + } + + protected void SendUniversalLinkOpenEvent(string url) + { + CallbackDispatcher.InvokeOnMainThread(() => OnUniversalLinkOpen(url)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NativeDeepLinkServicesInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NativeDeepLinkServicesInterfaceBase.cs.meta new file mode 100644 index 00000000..9556f186 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NativeDeepLinkServicesInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 34b7ebded89364cad9cc96569c39b329 +timeCreated: 1586355932 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NullDeepLinkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NullDeepLinkServicesInterface.cs new file mode 100644 index 00000000..d981ab33 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NullDeepLinkServicesInterface.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore +{ + public class NullDeepLinkServicesInterface : NativeDeepLinkServicesInterfaceBase, INativeDeepLinkServicesInterface + { + #region Constructors + + public NullDeepLinkServicesInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Base methods + + public override void Init() + { + Diagnostics.LogNotSupported("DeepLinkServices"); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NullDeepLinkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NullDeepLinkServicesInterface.cs.meta new file mode 100644 index 00000000..660c2113 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/DeepLinkServices/NullDeepLinkServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 91bd0ff4d88b14bc7b1bbe3283fd47ee +timeCreated: 1586430007 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/EssentialKitManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/EssentialKitManager.cs new file mode 100644 index 00000000..6268db15 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/EssentialKitManager.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +/// +/// Namespace for essential kit features. You need to import this namespace along with to use essential kit features. +/// +namespace VoxelBusters.EssentialKit +{ + public class EssentialKitManager : PrivateSingletonBehaviour + { + #region Static methods + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + private static void OnLoad() + { +#pragma warning disable + var singleton = GetSingleton(); +#pragma warning restore + } + + #endregion + + #region Unity methods + + protected override void OnSingletonAwake() + { + base.OnSingletonAwake(); + + // Create required systems + CallbackDispatcher.Initialize(); + ApplicationLifecycleObserver.Initialize(); + + // Set environment variables + var settings = EssentialKitSettings.Instance; + DebugLogger.SetLogLevel(settings.ApplicationSettings.LogLevel, + CoreLibraryDomain.Default, + CoreLibraryDomain.NativePlugins, + EssentialKitDomain.Default); + + settings.InitialiseFeatures(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/EssentialKitManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/EssentialKitManager.cs.meta new file mode 100644 index 00000000..44266466 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/EssentialKitManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: beb6ee137f49042e98dbb57e655414d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras.meta new file mode 100644 index 00000000..7f871c46 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8618d149c7c6a403ba13afc5d26a773f +folderAsset: yes +timeCreated: 1577098490 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/INativeUtilityInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/INativeUtilityInterface.cs new file mode 100644 index 00000000..21149435 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/INativeUtilityInterface.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.ExtrasCore +{ + public interface INativeUtilityInterface : INativeFeatureInterface + { + #region Methods + + void OpenAppStorePage(string applicationId); + + void OpenApplicationSettings(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/INativeUtilityInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/INativeUtilityInterface.cs.meta new file mode 100644 index 00000000..af48c7cb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/INativeUtilityInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a13f0976255aa45a6b4a7cfdc6516b59 +timeCreated: 1577099747 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NativeUtilityInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NativeUtilityInterfaceBase.cs new file mode 100644 index 00000000..c4d74a79 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NativeUtilityInterfaceBase.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.ExtrasCore +{ + public abstract class NativeUtilityInterfaceBase : NativeFeatureInterfaceBase, INativeUtilityInterface + { + #region Constructors + + protected NativeUtilityInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeUtilityInterface implementation + + public abstract void OpenAppStorePage(string applicationId); + + public abstract void OpenApplicationSettings(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NativeUtilityInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NativeUtilityInterfaceBase.cs.meta new file mode 100644 index 00000000..2e89636e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NativeUtilityInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 327780221da554251818303afd4d1ca9 +timeCreated: 1577101673 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NullNativeUtilityInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NullNativeUtilityInterface.cs new file mode 100644 index 00000000..b78df98c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NullNativeUtilityInterface.cs @@ -0,0 +1,44 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.ExtrasCore +{ + public class NullNativeUtilityInterface : NativeUtilityInterfaceBase + { + #region Constructors + + public NullNativeUtilityInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Base methods + + public override void OpenAppStorePage(string applicationId) + { + var activePlatform = PlatformMappingServices.GetActivePlatform(); + switch (activePlatform) + { + case NativePlatform.Android: + Application.OpenURL("https://play.google.com/store/apps/details?id=" + applicationId); + break; + + case NativePlatform.iOS: + case NativePlatform.tvOS: + Application.OpenURL("https://itunes.apple.com/app/id" + applicationId); + break; + } + } + + public override void OpenApplicationSettings() + { + Diagnostics.LogNotSupportedInEditor(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NullNativeUtilityInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NullNativeUtilityInterface.cs.meta new file mode 100644 index 00000000..909e4c65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/NullNativeUtilityInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ce7c0cfb69a7746d4a6376d3efa6d538 +timeCreated: 1578053378 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/Utilities.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/Utilities.cs new file mode 100644 index 00000000..979a82d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/Utilities.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.ExtrasCore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup Utilities Utilities + * @brief Provides cross-platform interface to access commonly used native features. + */ + /// + /// Provides a cross-platform interface to access commonly used native features. + /// + /// @ingroup Utilities + public static class Utilities + { + #region Static fields + + [ClearOnReload] + private static INativeUtilityInterface s_nativeInterface; + + #endregion + + #region Static methods + + /// @name Advanced Usage + /// @{ + + /// + /// Initializes the utilities module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + /// The settings to be used for initialization. + /// + /// The settings configure the utilities module. + /// + public static void Initialize(UtilityUnitySettings settings) + { + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.Extras, true); + } + /// @} + + /// + /// Opens the app store website page associated with this app. + /// + public static void OpenAppStorePage() + { + // validate argument + var settings = EssentialKitSettings.Instance.ApplicationSettings; + string appId = settings.GetAppStoreIdForActiveOrSimulationPlatform(); + OpenAppStorePage(appId); + } + + + /// + /// Opens the app store page associated with the specified application id. + /// + /// + /// For iOS platform, id is the value that identifies your app on App Store. + /// And on Android, it will be same as app's bundle identifier (com.example.test). + /// + /// An array of string values, that holds app id's of each supported platform. + /// + /// The following code example shows how to open store link. + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// public void OpenStorePage () + /// { + /// Utilities.OpenStoreLink(PlatformValue.Android("com.example.app"), PlatformValue.IOS("ios-app-id")); + /// } + /// } + /// + /// + public static void OpenAppStorePage(params RuntimePlatformConstant[] applicationIds) + { + // validate arguments + Assert.IsNotNullOrEmpty(applicationIds, "applicationIds"); + + try + { + var targetValue = RuntimePlatformConstantUtility.FindConstantForActivePlatform(applicationIds); + if (targetValue == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Application id not found for current platform."); + return; + } + + s_nativeInterface.OpenAppStorePage(targetValue.Value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Opens the app store website page associated with the specified application id. + /// + /// Application id. + public static void OpenAppStorePage(string applicationId) + { + // validate arguments + Assert.IsNotNullOrEmpty(applicationId, "Application id null/empty."); + + try + { + s_nativeInterface.OpenAppStorePage(applicationId); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Opens the app settings page associated with this app. + /// + /// + /// For iOS platform, this will open the settings app to the app's custom settings page. + /// On Android, this will open app's settings page in the device's settings app. + /// + public static void OpenApplicationSettings() + { + try + { + s_nativeInterface.OpenApplicationSettings(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/Utilities.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/Utilities.cs.meta new file mode 100644 index 00000000..0b0187d2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Extras/Utilities.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 17801e866ff8f45c394a137315bcf2d9 +timeCreated: 1577109893 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices.meta new file mode 100644 index 00000000..ce58e12a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a157dc5991d1b47039d1267b3c7d1934 +folderAsset: yes +timeCreated: 1550518318 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementBase.cs new file mode 100644 index 00000000..50351738 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementBase.cs @@ -0,0 +1,77 @@ +using System; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public abstract class AchievementBase : NativeObjectBase, IAchievement + { + #region Constructors + + protected AchievementBase(string id, string platformId) + { + // set properties + Id = id; + PlatformId = platformId; + } + + #endregion + + #region Abstract methods + + protected abstract double GetPercentageCompletedInternal(); + + protected abstract void SetPercentageCompletedInternal(double value); + + protected abstract bool GetIsCompletedInternal(); + + protected abstract DateTime GetLastReportedDateInternal(); + + protected abstract void ReportProgressInternal(ReportAchievementProgressInternalCallback callback); + + #endregion + + #region Base class methods + + public override string ToString() + { + return $"[Id={Id}, PlatformId={PlatformId}, PercentageCompleted={PercentageCompleted}, IsCompleted={IsCompleted}, LastReportedDate={LastReportedDate}]"; + } + + #endregion + + #region IGameServicesAchievement implementation + + public string Id { get; internal set; } + + public string PlatformId { get; internal set; } + + public double PercentageCompleted + { + get => GetPercentageCompletedInternal(); + set => SetPercentageCompletedInternal(value); + } + + public bool IsCompleted => GetIsCompletedInternal(); + + public DateTime LastReportedDate => GetLastReportedDateInternal(); + + public void ReportProgress(CompletionCallback callback) + { + // retain object to avoid unintentional release + ManagedObjectReferencePool.Retain(this); + + // make call + ReportProgressInternal((success, error) => + { + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, success, error); + + // remove object from cache + ManagedObjectReferencePool.Release(this); + }); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementBase.cs.meta new file mode 100644 index 00000000..15b16506 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d3ec104b39c541ab88c4f5bc75e3c3c +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.AndroidPlatformProperties.cs new file mode 100644 index 00000000..d8c2db78 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.AndroidPlatformProperties.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public partial class AchievementDefinition + { + [Serializable] + public class AndroidPlatformProperties + { + #region Constructors + + public AndroidPlatformProperties() + { } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..ba2d8353 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9ae667cca36f42038e803d288d79a60 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.IosPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.IosPlatformProperties.cs new file mode 100644 index 00000000..416fb356 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.IosPlatformProperties.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public partial class AchievementDefinition + { + [Serializable] + public class IosPlatformProperties + { + #region Constructors + + public IosPlatformProperties() + { } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.IosPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.IosPlatformProperties.cs.meta new file mode 100644 index 00000000..26672de3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.IosPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 124277f149f5f4d18afe820b538aef3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.cs new file mode 100644 index 00000000..f84633bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.cs @@ -0,0 +1,96 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents an object containing additional information related to game achievement. + /// + /// @ingroup GameServices + [Serializable] + public partial class AchievementDefinition + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private string m_platformId; + + [SerializeField] + private RuntimePlatformConstantSet m_platformIdOverrides; + + [SerializeField] + private string m_title; + + [SerializeField] + private int m_numOfStepsToUnlock = 1; + + [SerializeField, HideInInspector] + private IosPlatformProperties m_iosProperties; + + [SerializeField, HideInInspector] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + /// + /// The string that identifies the achievement within Unity environment. (read-only) + /// + public string Id => PropertyHelper.GetValueOrDefault(m_id); + + /// + /// The name of the achievement. (read-only) + /// + public string Title => PropertyHelper.GetValueOrDefault(m_title); + + /// + /// The number of steps required to unlock the achievement. + /// + public int NumOfStepsToUnlock => Math.Max(m_numOfStepsToUnlock, 1); + + public IosPlatformProperties IosProperties => m_iosProperties; + + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + public AchievementDefinition(string id = null, string platformId = null, + RuntimePlatformConstantSet platformIdOverrides = null, string title = null, + int numOfStepsToUnlock = 1, IosPlatformProperties iosProperties = null, + AndroidPlatformProperties androidProperties = null) + { + // set default values + m_id = id; + m_platformId = platformId; + m_platformIdOverrides = platformIdOverrides ?? new RuntimePlatformConstantSet(); + m_title = title; + m_numOfStepsToUnlock = numOfStepsToUnlock; + m_iosProperties = iosProperties ?? new IosPlatformProperties(); + m_androidProperties = androidProperties ?? new AndroidPlatformProperties(); + } + + #endregion + + #region Public methods + + /// + /// Returns the achievement identifier for active platform. + /// + public string GetPlatformIdForActivePlatform() + { + return m_platformIdOverrides.GetConstantForActivePlatform(m_platformId); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.cs.meta new file mode 100644 index 00000000..5bdedf04 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abe2ccacf96754a8bb7fe69f146c12da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDescriptionBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDescriptionBase.cs new file mode 100644 index 00000000..f9ab6ac4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDescriptionBase.cs @@ -0,0 +1,145 @@ +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public abstract class AchievementDescriptionBase : NativeObjectBase, IAchievementDescription + { + #region Constructors + + protected AchievementDescriptionBase(string id, string platformId, int numOfStepsToUnlock) + { + // set properties + Id = id; + PlatformId = platformId; + NumberOfStepsRequiredToUnlockAchievement = numOfStepsToUnlock; + } + + #endregion + + #region Abstract methods + + protected abstract string GetTitleInternal(); + + protected abstract string GetUnachievedDescriptionInternal(); + + protected abstract string GetAchievedDescriptionInternal(); + + protected abstract long GetMaximumPointsInternal(); + + protected abstract bool GetIsHiddenInternal(); + + protected abstract bool GetIsReplayableInternal(); + + protected abstract void LoadIncompleteAchievementImageInternal(LoadImageInternalCallback callback); + + protected abstract void LoadImageInternal(LoadImageInternalCallback callback); + + #endregion + + #region Base class methods + + public override string ToString() + { + return $"[AchievementId={Id}, PlatformId={PlatformId}, NumberOfStepsRequiredToUnlockAchievement={NumberOfStepsRequiredToUnlockAchievement}, IsHidden={IsHidden}, IsReplayable={IsReplayable}, Title={Title}, UnachievedDescription={UnachievedDescription}, AchievedDescription={AchievedDescription}, MaximumPoints={MaximumPoints}]"; + } + + #endregion + + #region IGameServicesAchievementDescription implementation + + public string Id + { + get; + internal set; + } + + public string PlatformId + { + get; + private set; + } + + public string Title + { + get + { + return GetTitleInternal(); + } + } + + public string UnachievedDescription + { + get + { + return GetUnachievedDescriptionInternal(); + } + } + + public string AchievedDescription + { + get + { + return GetAchievedDescriptionInternal(); + } + } + + public long MaximumPoints + { + get + { + return GetMaximumPointsInternal(); + } + } + + public int NumberOfStepsRequiredToUnlockAchievement + { + get; + private set; + } + + public bool IsHidden + { + get + { + return GetIsHiddenInternal(); + } + } + + public bool IsReplayable + { + get + { + return GetIsReplayableInternal(); + } + } + + public void LoadIncompleteAchievementImage(EventCallback callback) + { + // make request + LoadIncompleteAchievementImageInternal((imageData, error) => + { + // send result to caller object + var data = (imageData == null) ? null : new TextureData(imageData); + CallbackDispatcher.InvokeOnMainThread(callback, data, error); + }); + } + + public void LoadImage(EventCallback callback) + { + // make request + LoadImageInternal((imageData, error) => + { + // send result to caller object + var data = (imageData == null) ? null : new TextureData(imageData); + CallbackDispatcher.InvokeOnMainThread(callback, data, error); + }); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDescriptionBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDescriptionBase.cs.meta new file mode 100644 index 00000000..26acf080 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementDescriptionBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ea1dc3210d7c0489f8ed803c611bf6f1 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementIdAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementIdAttribute.cs new file mode 100644 index 00000000..fbfb5bbb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementIdAttribute.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class AchievementIdAttribute : StringPopupAttribute + { + #region Fields + + private string[] m_options; + + #endregion + + #region Constructors + + public AchievementIdAttribute() + : base() + { + // set properties + m_options = GetAchievementIds(); + } + + #endregion + + #region Private static methods + + private static string[] GetAchievementIds() + { + try + { + return System.Array.ConvertAll(EssentialKitSettings.Instance.GameServicesSettings.Achievements, (item) => item.Id); + } + catch + { + return new string[0]; + } + } + + #endregion + + #region Base class methods + + protected override string[] GetDynamicOptions() + { + return m_options; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementIdAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementIdAttribute.cs.meta new file mode 100644 index 00000000..ace232ba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementIdAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9b3d5afac5de7490dbde3df23bb67d04 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementProgressReporter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementProgressReporter.cs new file mode 100644 index 00000000..436989c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementProgressReporter.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class AchievementProgressReporter : MonoBehaviour + { + #region Fields + + [SerializeField, AchievementId] + private string m_achievementId; + + [SerializeField] + private ReportProgressFinishEvent m_onReportProgressFinish; + + #endregion + + #region Public methods + + public void ReportProgress(double percentageCompleted) + { + // check whether behaviour is enabled + if (!enabled) + { + return; + } + + // initiate request + GameServices.ReportAchievementProgress( + achievementId: m_achievementId, + percentageCompleted: percentageCompleted, + callback: (success, error) => + { + // send result + m_onReportProgressFinish?.Invoke(success, error); + }); + } + + #endregion + + #region Nested types + + [Serializable] + private class ReportProgressFinishEvent : UnityEvent + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementProgressReporter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementProgressReporter.cs.meta new file mode 100644 index 00000000..0bf6b709 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/AchievementProgressReporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b7456f0273e24053b7ed27de9f826c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/Delegates.cs new file mode 100644 index 00000000..d2eda783 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/Delegates.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public delegate void LoadLeaderboardsInternalCallback(ILeaderboard[] leaderboards, Error error); + + public delegate void LoadAchievementDescriptionsInternalCallback(IAchievementDescription[] achievementDescriptions, Error error); + + public delegate void LoadAchievementsInternalCallback(IAchievement[] achievements, Error error); + + public delegate void ReportAchievementProgressInternalCallback(bool success, Error error); + + public delegate void LocalPlayerAuthChangeInternalCallback(ILocalPlayer localPlayer, Error error); + + public delegate void LoadPlayersInternalCallback(IPlayer[] players, Error error); + + public delegate void LoadScoresInternalCallback(ILeaderboardScore[] scores, ILeaderboardScore localPlayerScore,Error error); + + public delegate void ReportScoreInternalCallback(bool success, Error error); + + public delegate void ViewClosedInternalCallback(Error error); + + public delegate void LoadServerCredentialsInternalCallback(ServerCredentials credentials, Error error); + + public delegate void AuthChangeInternalCallback(LocalPlayerAuthStatus authStatus, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/Delegates.cs.meta new file mode 100644 index 00000000..bd8dd3dd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b05e4d417a134d21907ae4958129c00 +timeCreated: 1554436365 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServices.cs new file mode 100644 index 00000000..e61333b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServices.cs @@ -0,0 +1,679 @@ +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.GameServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup GameServices Game Services + * @brief Provides cross-platform interface to easily integrate popular social gaming functionalities such as achievements, leaderboards. + */ + /// + /// Provides cross-platform interface to easily integrate popular social gaming functionalities such as achievements, leaderboards on your mobile games. + /// + /// + /// + /// Internally, game services feature uses native game servers for handling functionalities. + /// So while running your game on iOS devices, Game Center servers will be used. Whereas on Android platform, Play Game Services server will be used. + /// + /// + /// Goto iTune's Connect to configure leaderboard, achievemnts for your iOS game. + /// And for Android, add records at Google Developer Console. + /// + /// + /// @ingroup GameServices + public static class GameServices + { + #region Static fields + + [ClearOnReload] + private static INativeGameServicesInterface s_nativeInterface; + + #endregion + + #region Static properties + + public static GameServicesUnitySettings UnitySettings { get; private set; } + + public static LeaderboardDefinition[] LeaderboardDefinitions { get; private set; } + + public static AchievementDefinition[] AchievementDefinitions { get; private set; } + + /// + /// Returns the local player. + /// + /// The local player. + public static ILocalPlayer LocalPlayer + { + get + { + try + { + return (s_nativeInterface != null) ? s_nativeInterface.GetLocalPlayer() : new NullLocalPlayer(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + } + + /// + /// A boolean value indicating whether this local player is authenticated. + /// + /// true if is authenticated; otherwise, false. + public static bool IsAuthenticated + { + get + { + try + { + return LocalPlayer.IsAuthenticated; + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + } + + /// + /// Returns the cached leaderboards array. + /// + /// + /// \note This property is invalid until a call to is completed. + /// + public static ILeaderboard[] Leaderboards { get; private set; } + + /// + /// Returns the cached achievement description array. + /// + /// + /// \note This property is invalid until a call to is completed. + /// + public static IAchievementDescription[] AchievementDescriptions { get; private set; } + + /// + /// Returns the cached achievements array. + /// + /// + /// \note This property is invalid until a call to is completed. + /// + public static IAchievement[] Achievements { get; private set; } + + #endregion + + #region Static events + + /// + /// Event called on local player auth change. + /// + public static event EventCallback OnAuthStatusChange; + + #endregion + + #region Setup methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + /// @name Advanced Usage + /// @{ + + /// + /// Initializes game services with custom settings created at runtime. + /// + /// Settings for the game services. + public static void Initialize(GameServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Reset event properties + OnAuthStatusChange = null; + + // Set properties + UnitySettings = settings; + Leaderboards = new ILeaderboard[0]; + AchievementDescriptions = new IAchievementDescription[0]; + Achievements = new IAchievement[0]; + LeaderboardDefinitions = settings.Leaderboards; + AchievementDefinitions = settings.Achievements; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.GameServices, true); + s_nativeInterface.SetCanShowAchievementCompletionBanner(UnitySettings.ShowAchievementCompletionBanner); + s_nativeInterface.SetAuthChangeCallback(HandleAuthChangeInternalCallback); + } + /// @} + + internal static LeaderboardDefinition FindLeaderboardDefinitionWithId(string leaderboardId) + { + return Array.Find(LeaderboardDefinitions, (item) => string.Equals(item.Id, leaderboardId)); + } + + internal static LeaderboardDefinition FindLeaderboardDefinitionWithPlatformId(string leaderboardPlatformId) + { + return Array.Find(LeaderboardDefinitions, (item) => string.Equals(item.GetPlatformIdForActivePlatform(), leaderboardPlatformId)); + } + + internal static AchievementDefinition FindAchievementDefinitionWithId(string achievementId) + { + return Array.Find(AchievementDefinitions, (item) => string.Equals(item.Id, achievementId)); + } + + internal static AchievementDefinition FindAchievementDefinitionWithPlatformId(string achievementPlatformId) + { + return Array.Find(AchievementDefinitions, (item) => string.Equals(item.GetPlatformIdForActivePlatform(), achievementPlatformId)); + } + + #endregion + + #region Leaderboard methods + + /// + /// Creates a new instance of leaderboard object. + /// + /// A string used to uniquely identify the leaderboard. + public static ILeaderboard CreateLeaderboard(string leaderboardId) + { + // find settings information for specified id + var settings = FindLeaderboardDefinitionWithId(leaderboardId); + Assert.IsFalse(null == settings, "Could not find settings for specified id: " + leaderboardId); + + try + { + // create object + return s_nativeInterface.CreateLeaderboard(settings.Id, settings.GetPlatformIdForActivePlatform()); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + + /// + /// Loads the leaderboards. + /// + /// Callback method that will be invoked after operation is completed. + public static void LoadLeaderboards(EventCallback callback) + { + try + { + // make request + s_nativeInterface.LoadLeaderboards(LeaderboardDefinitions, (leaderboards, error) => SendLoadLeaderboardsResult(callback, leaderboards, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Achievement methods + + /// + /// Creates a new instance of achievement object. + /// + /// A string used to uniquely identify the achievement. + public static IAchievement CreateAchievement(string achievementId) + { + // find settings information for specified id + var settings = FindAchievementDefinitionWithId(achievementId); + Assert.IsFalse(null == settings, "Could not find settings for specified id: " + achievementId); + + try + { + // make request + return s_nativeInterface.CreateAchievement(settings.Id, settings.GetPlatformIdForActivePlatform()); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + + /// + /// Loads the achievement descriptions from game server. + /// + /// Callback method that will be invoked after operation is completed. + public static void LoadAchievementDescriptions(EventCallback callback) + { + try + { + // make request + s_nativeInterface.LoadAchievementDescriptions((descriptions, error) => SendLoadAchievementDescriptionsResult(callback, descriptions, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Loads previously submitted achievement progress for the current local player. + /// + /// Callback method that will be invoked after operation is completed. + public static void LoadAchievements(EventCallback callback) + { + try + { + // make request + s_nativeInterface.LoadAchievements((achievements, error) => SendLoadAchievementsResult(callback, achievements, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Reports the local user's achievement progress to game server, using platform specific id. + /// + /// A string used to uniquely identify the achievement. + /// The value indicates how far the player has progressed. + /// Callback that will be called after operation is completed. + public static void ReportAchievementProgress(string achievementId, double percentageCompleted, CompletionCallback callback) + { + var achievement = CreateAchievement(achievementId); + ReportAchievementProgress(achievement, percentageCompleted, callback); + } + + /// + /// Reports the local user's achievement progress to game server. + /// + /// The achievement description object. + /// The value indicates how far the player has progressed. + /// Callback that will be called after operation is completed. + public static void ReportAchievementProgress(IAchievementDescription achievementDescription, double percentageCompleted, CompletionCallback callback) + { + var achievement = CreateAchievement(achievementDescription.Id); + ReportAchievementProgress(achievement, percentageCompleted, callback); + } + + /// + /// Reports the local user's achievement progress to game server. + /// + /// The achievement object. + /// The value indicates how far the player has progressed. + /// Callback that will be called after operation is completed. + public static void ReportAchievementProgress(IAchievement achievement, double percentageCompleted, CompletionCallback callback) + { + Assert.IsArgNotNull(achievement, "achievement"); + + // submit information + achievement.PercentageCompleted = percentageCompleted; + achievement.ReportProgress(callback); + } + + + /// + /// Loads the list of friends for the authenticated local player. + /// + /// + /// The callback that will be called after operation is completed. + /// If successful, it will contain the list of friends. + /// + public static void LoadFriends(EventCallback callback) + { + // Check if the local player is authenticated. If not, return error. + if(!IsAuthenticated) + { + DebugLogger.LogError("Player is not authenticated"); + callback?.Invoke(null, new Error("Player is not authenticated")); + return; + } + + LocalPlayer.LoadFriends(callback); + } + + /// + /// Initiates a friend request to the specified player. + /// + /// The id of the player to send the request to. + /// + /// The callback that will be called after operation is completed. + /// + public static void AddFriend(string playerId, EventCallback callback) + { + // Check if the local player is authenticated. If not, return error. + if(!IsAuthenticated) + { + DebugLogger.LogError("Player is not authenticated"); + callback?.Invoke(false, new Error("Player is not authenticated")); + return; + } + + LocalPlayer.AddFriend(playerId, callback); + } + + #endregion + + #region Player methods + + /// + /// Initiates authentication process for the local player on the device. + /// + public static void Authenticate() + { + try + { + s_nativeInterface.Authenticate(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Signout the local player on the device. + /// + public static void Signout() + { + try + { + s_nativeInterface.Signout(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Score methods + + /// + /// Reports the score to game server. + /// + /// A string used to uniquely identify the leaderboard. + /// The value of the score. + /// Callback that will be called after operation is completed. + /// The tag used to identify the score (optional). This needs to be of max length 8 characters in ascii characters. + public static void ReportScore(string leaderboardId, long value, CompletionCallback callback, string tag = null) + { + ReportScore(CreateLeaderboard(leaderboardId), value, callback, tag); + } + + /// + /// Reports the score to game server. + /// + /// The leaderboard object. + /// The value of the score. + /// Callback that will be called after operation is completed. + /// The tag used to identify the score (optional). This needs to be of max length 8 characters in ascii characters. + public static void ReportScore(ILeaderboard leaderboard, long value, CompletionCallback callback, string tag = null) + { + // create score object + Assert.IsPropertyNotNull(leaderboard, "leaderboard"); + + // submit score + leaderboard.ReportScore(value, callback, tag); + } + + #endregion + + #region View methods + + /// + /// Opens the standard view to display all the leaderboards. + /// + /// A time filter used to restrict which scores are displayed to the player. + /// Callback that will be called after operation is completed. + public static void ShowLeaderboards(LeaderboardTimeScope timescope = LeaderboardTimeScope.AllTime, EventCallback callback = null) + { + try + { + // make request + s_nativeInterface.ShowLeaderboard( + leaderboardId: null, + leaderboardPlatformId: null, + timeScope: timescope, + callback: (error) => SendViewClosedResult(callback, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Opens the standard view to display leaderboard scores corresponding to given id. + /// + /// A string used to identify the leaderboard. + /// A time filter used to restrict which scores are displayed to the player. + /// Callback that will be called after operation is completed. + /// + /// \note Incase, if you want to list out all the leaderboards that are used in your game, then pass null for leaderboard identifier. + /// + public static void ShowLeaderboard(string leaderboardId, LeaderboardTimeScope timescope = LeaderboardTimeScope.AllTime, EventCallback callback = null) + { + // find settings information for specified id + var settings = FindLeaderboardDefinitionWithId(leaderboardId); + Assert.IsFalse(null == settings, "Could not find settings for specified id: " + leaderboardId); + + try + { + // make request + s_nativeInterface.ShowLeaderboard( + leaderboardId: leaderboardId, + leaderboardPlatformId: settings.GetPlatformIdForActivePlatform(), + timeScope: timescope, + callback: (error) => SendViewClosedResult(callback, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Opens the standard view to display leaderboard scores corresponding to given leaderboard. + /// + /// The leaderboard object. + /// A time filter used to restrict which scores are displayed to the player. + /// Callback that will be called after operation is completed. + /// + /// \note Incase, if you want to list out all the leaderboards that are used in your game, then pass null for leaderboard identifier. + /// + public static void ShowLeaderboard(ILeaderboard leaderboard, LeaderboardTimeScope timescope = LeaderboardTimeScope.AllTime, EventCallback callback = null) + { + // validate arguments + Assert.IsArgNotNull(leaderboard, "leaderboard"); + + try + { + // make request + s_nativeInterface.ShowLeaderboard( + leaderboardId: leaderboard.Id, + leaderboardPlatformId: leaderboard.PlatformId, + timeScope: timescope, + callback: (error) => SendViewClosedResult(callback, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Opens the standard view to display achievement progress screen for the local player. + /// + /// Callback that will be called after operation is completed. + public static void ShowAchievements(EventCallback callback = null) + { + try + { + s_nativeInterface.ShowAchievements((error) => SendViewClosedResult(callback, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Misc methods + + + /// + /// Loads the server credentials. + /// + /// Callback that will be called after operation is completed. + /// + /// The server credentials is a set of properties that can be used to connect to game service from your backend. + /// + public static void LoadServerCredentials(EventCallback callback) + { + try + { + s_nativeInterface.LoadServerCredentials((credentials, error) => SendLoadServerCredentialsResult(callback, credentials, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Callback methods + + private static void HandleAuthChangeInternalCallback(LocalPlayerAuthStatus authStatus, Error error) + { + // invoke event + var result = new GameServicesAuthStatusChangeResult(LocalPlayer, authStatus); + CallbackDispatcher.InvokeOnMainThread(OnAuthStatusChange, result, error); + } + + private static void SendLoadLeaderboardsResult(EventCallback callback, ILeaderboard[] leaderboards, Error error) + { + // check whether fetched value is null + leaderboards = leaderboards ?? new ILeaderboard[0]; + + // cache data + Leaderboards = leaderboards; + + // send result to caller object + var result = new GameServicesLoadLeaderboardsResult(leaderboards); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + private static void SendLoadAchievementDescriptionsResult(EventCallback callback, IAchievementDescription[] descriptions, Error error) + { + // check whether fetched value is null + descriptions = descriptions ?? new IAchievementDescription[0]; + + // cache data + AchievementDescriptions = descriptions; + + // send result to caller object + var result = new GameServicesLoadAchievementDescriptionsResult(descriptions); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + private static void SendLoadAchievementsResult(EventCallback callback, IAchievement[] achievements, Error error) + { + // check whether fetched value is null + achievements = achievements ?? new IAchievement[0]; + + // update cached data + Achievements = achievements; + + // send result to caller object + var result = new GameServicesLoadAchievementsResult(achievements); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + private static void SendLoadPlayersResult(EventCallback callback, IPlayer[] players, Error error) + { + // send result to caller object + var result = new GameServicesLoadPlayersResult(players ?? new IPlayer[0]); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + private static void SendViewClosedResult(EventCallback callback, Error error) + { + // send result to caller object + var resultCode = (error == null) ? GameServicesViewResultCode.Done : GameServicesViewResultCode.Unknown; + var result = new GameServicesViewResult(resultCode); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + private static void SendLoadServerCredentialsResult(EventCallback callback, ServerCredentials serverCredentials, Error error) + { + // send result to caller object + var result = new GameServicesLoadServerCredentialsResult(serverCredentials); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + #endregion + + #region Obsolete methods + + /// @name Obsolete methods + /// @{ + + /// + /// Loads the player details from game server. + /// + /// An array of player id's whose details has to be retrieved from game server. + /// Callback that will be called after operation is completed. + [Obsolete("This method is obsolete due to privacy restrictions on supported platforms.")] + public static void LoadPlayers(string[] playerIds, EventCallback callback) + { + // validate arguments + Assert.IsNotNullOrEmpty(playerIds, "playerIds"); + + try + { + // make request + s_nativeInterface.LoadPlayers(playerIds, (players, error) => SendLoadPlayersResult(callback, players, error)); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Creates the score for specified leaderboard. + /// + /// The score object. + /// A string used to uniquely identify the leaderboard. + [Obsolete("Use ReportScore(string, long, CompletionCallback, string) or ILeaderboard.ReportScore(long, CompletionCallback) instead for submitting scores.", true)] + public static IScore CreateScore(string leaderboardId) + { + // find settings information for specified id + var settings = FindLeaderboardDefinitionWithId(leaderboardId); + Assert.IsFalse(null == settings, "Could not find settings for specified id: " + leaderboardId); + + return null; + } + + /// + /// Creates the score for specified leaderboard. + /// + /// The score object. + /// The leaderboard object. + [Obsolete("Use ReportScore(string, long, CompletionCallback, string) instead for submitting scores.", true)] + public static IScore CreateScore(ILeaderboard leaderboard) + { + // validate arguments + Assert.IsArgNotNull(leaderboard, "leaderboard"); + return null; + } + + /// @} + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServices.cs.meta new file mode 100644 index 00000000..a643ae7e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 82e5dd9eb04de4213b911d93a473cb05 +timeCreated: 1550556422 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesAuthStatusChangeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesAuthStatusChangeResult.cs new file mode 100644 index 00000000..0ba3c669 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesAuthStatusChangeResult.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup GameServices + public class GameServicesAuthStatusChangeResult + { + #region Properties + + /// + /// The local player. + /// + public ILocalPlayer LocalPlayer { get; private set; } + + /// + /// The value is used to determine whether user is logged in to system. + /// + public LocalPlayerAuthStatus AuthStatus { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesAuthStatusChangeResult(ILocalPlayer localPlayer, LocalPlayerAuthStatus authStatus) + { + // set properties + LocalPlayer = localPlayer; + AuthStatus = authStatus; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesAuthStatusChangeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesAuthStatusChangeResult.cs.meta new file mode 100644 index 00000000..d3411632 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesAuthStatusChangeResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf5aea5f2af0345aca67f12de10cbfcd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesError.cs new file mode 100644 index 00000000..84f98365 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesError.cs @@ -0,0 +1,71 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class GameServicesError + { + #region Constants + + public const string kDomain = "[Essential Kit] Game Services"; + + #endregion + + #region Properties + + public static Error Unknown(string description = null) => CreateError( + code: (int)GameServicesErrorCode.Unknown, + description: description ?? "Unknown error." + ); + + public static Error SystemError(string description = null) => CreateError( + code: (int)GameServicesErrorCode.SystemError, + description: description ?? "System error." + ); + + public static Error NetworkError(string description = null) => CreateError( + code: (int)GameServicesErrorCode.NetworkError, + description: "Network error." + ); + + public static Error NotAllowed(string description = null) => CreateError( + code: (int)GameServicesErrorCode.NotAllowed, + description: description ?? "Not allowed." + ); + + public static Error DataNotAvailable(string description = null) => CreateError( + code: (int)GameServicesErrorCode.DataNotAvailable, + description: description ?? "Data not available." + ); + + public static Error NotSupported(string description = null) => CreateError( + code: (int)GameServicesErrorCode.NotSupported, + description: description ?? "Not supported." + ); + + public static Error ConfigurationError(string description = null) => CreateError( + code: (int)GameServicesErrorCode.ConfigurationError, + description: description ?? "Configuration error." + ); + + public static Error InvalidInput(string description = null) => CreateError( + code: (int)GameServicesErrorCode.InvalidInput, + description: description ?? "Invalid input." + ); + + public static Error NotAuthenticated(string description = null) => CreateError( + code: (int)GameServicesErrorCode.NotAuthenticated, + description: description ?? "Not authenticated." + ); + + #endregion + + #region Static methods + + private static Error CreateError(int code, string description) => new Error( + domain: kDomain, + code: code, + description: description); + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesError.cs.meta new file mode 100644 index 00000000..f9c3ce43 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f60e4adfa56d345e18a20e991ed4c4b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesErrorCode.cs new file mode 100644 index 00000000..c3c3d894 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesErrorCode.cs @@ -0,0 +1,46 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Enum used to specify the error code for game services operations. + /// + public enum GameServicesErrorCode + { + /// + /// The error code indicating that the cause of the error could not be + /// determined. + /// + Unknown, + /// + /// The error code indicating that an error occurred on the server. + /// + SystemError, + /// + /// The error code indicating that a network error occurred. + /// + NetworkError, + /// + /// The error code indicating that the operation was not allowed. + /// + NotAllowed, + /// + /// The error code indicating that the data being requested is not available. + /// + DataNotAvailable, + /// + /// The error code indicating that the feature is not supported or enabled. + /// + NotSupported, + /// + /// The error code indicating that the configuration is invalid. + /// + ConfigurationError, + /// + /// The error code indicating that the input was invalid. + /// + InvalidInput, + /// + /// The error code indicating that the user is not authenticated. + /// + NotAuthenticated + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesErrorCode.cs.meta new file mode 100644 index 00000000..90c92823 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e56e9aff1a9b4d2e805bdf72f7332be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementDescriptionsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementDescriptionsResult.cs new file mode 100644 index 00000000..6110254f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementDescriptionsResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup GameServices + public class GameServicesLoadAchievementDescriptionsResult + { + #region Properties + + /// + /// An array of achievement descriptions. + /// + public IAchievementDescription[] AchievementDescriptions { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesLoadAchievementDescriptionsResult(IAchievementDescription[] descriptions) + { + // set properties + AchievementDescriptions = descriptions; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementDescriptionsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementDescriptionsResult.cs.meta new file mode 100644 index 00000000..d8a97301 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementDescriptionsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c42f8c2d280b5426a875a413ccfa0a7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementsResult.cs new file mode 100644 index 00000000..a17bf317 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementsResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup GameServices + public class GameServicesLoadAchievementsResult + { + #region Properties + + /// + /// An array of registered achievements. + /// + public IAchievement[] Achievements { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesLoadAchievementsResult(IAchievement[] achievements) + { + // set properties + Achievements = achievements; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementsResult.cs.meta new file mode 100644 index 00000000..ed84b8b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadAchievementsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66b4b16277b2d47658d8f2ecda5b1dd6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadLeaderboardsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadLeaderboardsResult.cs new file mode 100644 index 00000000..fa12b2a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadLeaderboardsResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup GameServices + public class GameServicesLoadLeaderboardsResult + { + #region Properties + + /// + /// An array of registered leaderboards. + /// + public ILeaderboard[] Leaderboards { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesLoadLeaderboardsResult(ILeaderboard[] leaderboards) + { + // set properties + Leaderboards = leaderboards; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadLeaderboardsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadLeaderboardsResult.cs.meta new file mode 100644 index 00000000..e2abd216 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadLeaderboardsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1db1e48a1410c4f5da6dc12b5843fb60 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayerFriendsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayerFriendsResult.cs new file mode 100644 index 00000000..465d54fd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayerFriendsResult.cs @@ -0,0 +1,28 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when load player friends operation is completed. + /// + /// @ingroup GameServices + public class GameServicesLoadPlayerFriendsResult + { + #region Properties + + /// + /// An array of available player friends. + /// + public IPlayer[] Players { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesLoadPlayerFriendsResult(IPlayer[] players) + { + // set properties + Players = players; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayerFriendsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayerFriendsResult.cs.meta new file mode 100644 index 00000000..92cfa0f1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayerFriendsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dbdabdf1b09aa40a28eb11acc2a4e536 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayersResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayersResult.cs new file mode 100644 index 00000000..d65f2f83 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayersResult.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + //[Obsolete("This result access is obsolete due to privacy restrictions on supported platforms.")] + public class GameServicesLoadPlayersResult + { + #region Properties + + /// + /// An array of requested players. + /// + public IPlayer[] Players { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesLoadPlayersResult(IPlayer[] players) + { + // set properties + Players = players; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayersResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayersResult.cs.meta new file mode 100644 index 00000000..dcbc6245 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadPlayersResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9412965e201a4fa2802f0f777e9b45b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadServerCredentialsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadServerCredentialsResult.cs new file mode 100644 index 00000000..f067b9e3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadServerCredentialsResult.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup GameServices + public class GameServicesLoadServerCredentialsResult + { + #region Properties + + /// + /// Server Credentials. + /// + public ServerCredentials ServerCredentials { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesLoadServerCredentialsResult(ServerCredentials serverCredentials) + { + // set properties + ServerCredentials = serverCredentials; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadServerCredentialsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadServerCredentialsResult.cs.meta new file mode 100644 index 00000000..889c50b2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesLoadServerCredentialsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6aef49872d2e648f7be064b9f3f83f94 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResult.cs new file mode 100644 index 00000000..98be7cd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResult.cs @@ -0,0 +1,26 @@ + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when game view is closed. + /// + /// @ingroup GameServices + public class GameServicesViewResult + { + #region Properties + + public GameServicesViewResultCode ResultCode { get; private set; } + + #endregion + + #region Constructors + + internal GameServicesViewResult(GameServicesViewResultCode resultCode) + { + // set properties + ResultCode = resultCode; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResult.cs.meta new file mode 100644 index 00000000..d03d394d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 34d1067a791d94edea6d5ce5a00d0ee9 +timeCreated: 1577885875 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResultCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResultCode.cs new file mode 100644 index 00000000..afcd6ede --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResultCode.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Result codes returned when the game service interface is dismissed. + /// + public enum GameServicesViewResultCode + { + /// The user action could not be determined. This occurs in platforms where there is no provision to find result. + Unknown, + + /// The user successfully closed. + Done, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResultCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResultCode.cs.meta new file mode 100644 index 00000000..02d98a0b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/GameServicesViewResultCode.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b82e5a964d24a4736a70bbbf723478a2 +timeCreated: 1577885875 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievement.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievement.cs new file mode 100644 index 00000000..c4a241df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievement.cs @@ -0,0 +1,62 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides an interface to communicate with game server about local players progress towards completing achievement. + /// + /// + /// By default, when an achievement is completed, a notification banner is displayed to the player. + /// If your game wants to display its own interface, you can prevent it by setting ShowAchievementCompletionBanner property in Game Services Settings to NO. + /// + /// + /// \note Your game must authenticate the local user before using any features. + /// + /// @ingroup GameServices + public interface IAchievement + { + #region Properties + + /// + /// An unique identifier used to identify the achievement across all the supported platforms. (read-only) + /// + string Id { get; } + + /// + /// A string used to identify the achievement in the current platform. (read-only) + /// + string PlatformId { get; } + + /// + /// The percentage describes how far the player has progressed on this achievement. + /// + double PercentageCompleted { get; set; } + + /// + /// The bool value indicates whether the current player has completed this achievement. (read-only) + /// + bool IsCompleted { get; } + + /// + /// The last time that progress on the achievement was successfully reported to game server. (read-only) + /// + DateTime LastReportedDate { get; } + + #endregion + + #region Methods + + /// + /// Reports the progress of this achievement. + /// + /// Callback that will be called after operation is completed. + void ReportProgress(CompletionCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievement.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievement.cs.meta new file mode 100644 index 00000000..c0b2c5d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 773ae54c6a314427f96197340097a4a0 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievementDescription.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievementDescription.cs new file mode 100644 index 00000000..f42a84d2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievementDescription.cs @@ -0,0 +1,83 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides an interface to access an achievement's properties such as achievement's title, max points, image etc. + /// + /// + /// \note Your game must authenticate the local user before using any features. + /// + /// @ingroup GameServices + public interface IAchievementDescription + { + #region Properties + + /// + /// An unique string used to identify the achievement across all the supported platforms. (read-only) + /// + string Id { get; } + + /// + /// A string used to identify the achievement in the current platform. (read-only) + /// + string PlatformId { get; } + + /// + /// A localized title for the achievement. (read-only) + /// + string Title { get; } + + /// + /// A localized description of the achievement to be used when the local player has not completed the achievement. (read-only) + /// + string UnachievedDescription { get; } + + /// + /// A localized description to be used after the local player has completed the achievement. (read-only) + /// + string AchievedDescription { get; } + + /// + /// The number of points the player earns by completing this achievement. (read-only) + /// + long MaximumPoints { get; } + + /// + /// The number of steps required for completing this achievement. + /// + int NumberOfStepsRequiredToUnlockAchievement { get; } + + /// + /// A boolean that states whether this achievement is initially visible to users. (read-only) + /// + bool IsHidden { get; } + + /// + /// A Boolean value that states whether this achievement can be earned multiple times. (read-only) + /// + bool IsReplayable { get; } + + #endregion + + #region Methods + + /// + /// Loads the image property for an incomplete achievement. + /// + /// Callback method that will be invoked after operation is completed. + void LoadIncompleteAchievementImage(EventCallback callback); + + /// + /// Loads the image property for a completed achievement. + /// + /// Callback method that will be invoked after operation is completed. + void LoadImage(EventCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievementDescription.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievementDescription.cs.meta new file mode 100644 index 00000000..21174da7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IAchievementDescription.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 65354c73dae1a466d8e08e8aa9e4035e +timeCreated: 1553342238 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboard.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboard.cs new file mode 100644 index 00000000..62c4bdd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboard.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides interface to read data from a leaderboard stored on game server. + /// + /// @remark Your game must authenticate the local user before using any features. + /// @ingroup GameServices + public interface ILeaderboard + { + #region Properties + + /// + /// An unique string used to identify the leaderboard across all the supported platforms. (read-only) + /// + string Id { get; } + + /// + /// An unique used to identify the leaderboard in the current platform. (read-only) + /// + string PlatformId { get; } + + /// + /// A localized title for the leaderboard. (read-only) + /// + string Title { get; } + + /// + /// A filter used to restrict the search to a subset of the players on game server. + /// + LeaderboardPlayerScope PlayerScope { get; set; } + + /// + /// A filter used to restrict the search to scores that were posted within a specific period of time. + /// + LeaderboardTimeScope TimeScope { get; set; } + + /// + /// The value indicates maximum entries that has to be fetched from search. + /// + int LoadScoresQuerySize { get; set; } + + /// + /// Returns the earned by the local player. (read-only) + /// + /// + /// \note This property is invalid until a call to load scores is completed. + /// + [Obsolete("Use LocalPlayerScore property in LeaderboardLoadScoresResult instead")] + ILeaderboardScore LocalPlayerScore { get; } + + #endregion + + #region Methods + + /// + /// Reports the score to game server. + /// + /// The score value. + /// Callback method that will be invoked after operation is completed. + /// The tag used to identify the score (optional). This needs to be of max length 8 characters in ascii characters. + void ReportScore(long score, CompletionCallback callback, string tag = null); + + + /// + /// Loads the top set of scores. + /// + /// Callback method that will be invoked after operation is completed. + void LoadTopScores(EventCallback callback); + + /// + /// Loads player-centered set of scores. + /// + /// Callback method that will be invoked after operation is completed. + void LoadPlayerCenteredScores(EventCallback callback); + + /// + /// Loads next set of scores. + /// + /// Callback method that will be invoked after operation is completed. + void LoadNext(EventCallback callback); + + /// + /// Loads previous set of scores. + /// + /// Callback method that will be invoked after operation is completed. + void LoadPrevious(EventCallback callback); + + /// + /// Loads the image. + /// + /// Callback method that will be invoked after operation is completed. + void LoadImage(EventCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboard.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboard.cs.meta new file mode 100644 index 00000000..48d571de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboard.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 045c0c2bca3aa43bfbbc20c64a3c2b3d +timeCreated: 1553342238 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboardScore.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboardScore.cs new file mode 100644 index 00000000..d90ee0ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboardScore.cs @@ -0,0 +1,61 @@ +using System; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access information about a leaderboard score. + /// + /// @ingroup GameServices + public interface ILeaderboardScore + { + #region Properties + + /// + /// An unique string used to identify the leaderboard across all the supported platforms. (read-only) + /// + string LeaderboardId { get; } + + /// + /// A string used to identify the leaderboard in the current platform. (read-only) + /// + string LeaderboardPlatformId { get; } + + /// + /// The player that earned the score. (read-only) + /// + IPlayer Player { get; } + + /// + /// The position of the score in leaderboard. (read-only) + /// + long Rank { get; } + + /// + /// The score earned by the player. + /// + long Value { get; } + + /// + /// The players score as a localized string. (read-only) + /// + string FormattedValue { get; } + + /// + /// The date and time when score was reported. (read-only) + /// + DateTime LastReportedDate { get; } + + /// + /// A tag string associated with the score. + /// The value may contain no more than 64 URI-safe characters as defined by section 2.3 of RFC 3986. + /// + /// + /// This tag value is used to identify a unique score within the same leaderboard. + /// You can use this tag to update or retrieve the score in the future. + /// + string Tag { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboardScore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboardScore.cs.meta new file mode 100644 index 00000000..00428762 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILeaderboardScore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb6a4eb0d4f4c4e1fb7b9438f8162d90 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILocalPlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILocalPlayer.cs new file mode 100644 index 00000000..453bfc5a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILocalPlayer.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides interface to access information about the authenticated player running your game on the device. + /// + /// + /// At any given time, only one user may be authenticated on the device, this user must log out before another user can log in. + /// + /// @remark Your game must authenticate the local user before using any features. + /// @ingroup GameServices + public interface ILocalPlayer : IPlayer + { + #region Properties + + /// + /// A bool value that indicates whether a local player is currently signed in to game service. (read-only) + /// + bool IsAuthenticated { get; } + + /// + /// A bool value that indicates whether a local player is underage. (read-only) + /// + /// true if is under age; otherwise, false. + bool IsUnderAge { get; } + + #endregion + + #region Friends Methods + + /// + /// Loads the list of friends for the authenticated local player. + /// + /// The callback that will be called after operation is completed. + /// If successful, it will contain the list of friends. + void LoadFriends(EventCallback callback); + + /// + /// Initiates a friend request to the specified player. + /// + /// The id of the player to send the request to. + /// The callback that will be called after operation is completed. + /// + void AddFriend(string playerId, EventCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILocalPlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILocalPlayer.cs.meta new file mode 100644 index 00000000..398ea8f8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ILocalPlayer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 899311610e06c49a89727d381e572ddc +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/INativeGameServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/INativeGameServicesInterface.cs new file mode 100644 index 00000000..196c4c23 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/INativeGameServicesInterface.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public interface INativeGameServicesInterface : INativeFeatureInterface + { + #region Methods + + void LoadLeaderboards(LeaderboardDefinition[] leaderboardDefinitions, LoadLeaderboardsInternalCallback callback); + + void ShowLeaderboard(string leaderboardId, string leaderboardPlatformId, LeaderboardTimeScope timeScope, ViewClosedInternalCallback callback); + + ILeaderboard CreateLeaderboard(string id, string platformId); + + void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback); + + void LoadAchievements(LoadAchievementsInternalCallback callback); + + void ShowAchievements(ViewClosedInternalCallback callback); + + void SetCanShowAchievementCompletionBanner(bool value); + + IAchievement CreateAchievement(string id, string platformId); + + void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback); + + void SetAuthChangeCallback(AuthChangeInternalCallback callback); + + void Authenticate(); + + void Signout(); + + ILocalPlayer GetLocalPlayer(); + + void LoadServerCredentials(LoadServerCredentialsInternalCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/INativeGameServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/INativeGameServicesInterface.cs.meta new file mode 100644 index 00000000..056b322b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/INativeGameServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8347d572102704ad7b7171ccb1867cd9 +timeCreated: 1576503281 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IPlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IPlayer.cs new file mode 100644 index 00000000..304b7650 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IPlayer.cs @@ -0,0 +1,69 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access information about a player playing your game. + /// + /// @ingroup GameServices + public interface IPlayer + { + #region Properties + + /// + /// A string assigned by game service to uniquely identify a player. (read-only) + /// + string Id { get; } + + + /// + /// A unique identifier for a player of all the games that you distribute using your developer account. + /// + /// + /// This property is used to identify a player across all the games that you develop and distribute with the same developer account. + /// + /// @note + /// This is currently available for iOS only. + string DeveloperScopeId { get; } + + + /// + /// Legacy identifier for backward compatibility. + /// Use or instead. + /// + /// + /// This property is used for legacy purposes and should not be used in new code. + /// Please use or instead. + /// + string LegacyId { get; } + + /// + /// A string chosen by the player to identify themselves to others. (read-only) + /// + /// + /// This property is used when a player is not a friend of the local player. For displaying name on user interface, use the property. + /// + string Alias { get; } + + /// + /// A string to display for the player. (read-only) + /// + /// + /// If the player is a friend of the local player, then the value returned is the actual name of the player. + /// And incase if he is not a friend, then players alias will be returned. + /// + string DisplayName { get; } + + #endregion + + #region Methods + + /// + /// Loads the player profile image. + /// + /// Callback that will be called after operation is completed. + void LoadImage(EventCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IPlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IPlayer.cs.meta new file mode 100644 index 00000000..cc4f38ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IPlayer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef48c3e4086554b02b0e6f49e0995127 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IScore.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IScore.cs new file mode 100644 index 00000000..eb5df8eb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IScore.cs @@ -0,0 +1,74 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// @deprecated Since V3.0.0 + [Obsolete("Use ILeaderboardScore for accessing the score of a leaderboard. For reporting scores, use ILeaderboard.", true)] + public interface IScore + { + #region Properties + + /// + /// An unique string used to identify the leaderboard across all the supported platforms. (read-only) + /// + string LeaderboardId { get; } + + /// + /// A string used to identify the leaderboard in the current platform. (read-only) + /// + string LeaderboardPlatformId { get; } + + /// + /// The player that earned the score. (read-only) + /// + IPlayer Player { get; } + + /// + /// The position of the score in leaderboard. (read-only) + /// + long Rank { get; } + + /// + /// The score earned by the player. + /// + long Value { get; set; } + + /// + /// The players score as a localized string. (read-only) + /// + string FormattedValue { get; } + + /// + /// The date and time when score was reported. (read-only) + /// + DateTime LastReportedDate { get; } + + // value may contain no more than 64 URI-safe characters as defined by section 2.3 of RFC 3986. + /// + /// A tag string associated with the score. + /// The value may contain no more than 64 URI-safe characters as defined by section 2.3 of RFC 3986. + /// + /// + /// This tag value is used to identify a unique score within the same leaderboard. + /// You can use this tag to update or retrieve the score in the future. + /// + string Tag { get; set; } + + #endregion + + #region Methods + + /// + /// Reports the score to game server. + /// + /// Callback that will be called after operation is completed. + void ReportScore(CompletionCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IScore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IScore.cs.meta new file mode 100644 index 00000000..682e01c7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/IScore.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dba34e2f072724d7c89f79a9ead53798 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardBase.cs new file mode 100644 index 00000000..a1df57af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardBase.cs @@ -0,0 +1,205 @@ +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public abstract class LeaderboardBase : NativeObjectBase, ILeaderboard + { + #region Constructors + + protected LeaderboardBase(string id, string platformId) + { + // set properties + Id = id; + PlatformId = platformId; + } + + #endregion + + #region Abstract methods + + protected abstract string GetTitleInternal(); + + protected abstract LeaderboardPlayerScope GetPlayerScopeInternal(); + + protected abstract void SetPlayerScopeInternal(LeaderboardPlayerScope value); + + protected abstract LeaderboardTimeScope GetTimeScopeInternal(); + + protected abstract void SetTimeScopeInternal(LeaderboardTimeScope value); + + protected abstract ILeaderboardScore GetLocalPlayerScoreInternal(); + + protected abstract void ReportScoreInternal(long score, ReportScoreInternalCallback callback, string tag = null); + + protected abstract void LoadTopScoresInternal(LoadScoresInternalCallback callback); + + protected abstract void LoadPlayerCenteredScoresInternal(LoadScoresInternalCallback callback); + + protected abstract void LoadNextInternal(LoadScoresInternalCallback callback); + + protected abstract void LoadPreviousInternal(LoadScoresInternalCallback callback); + + protected abstract void LoadImageInternal(LoadImageInternalCallback callback); + + #endregion + + #region Base class methods + + public override string ToString() + { + return $"[Id={Id}, PlatformId={PlatformId}, Title={Title}, PlayerScope={PlayerScope}, TimeScope={TimeScope}, LoadScoresQuerySize={LoadScoresQuerySize}]"; + } + + #endregion + + #region IGameServicesLeaderboard implementation + + public string Id + { + get; + internal set; + } + + public string PlatformId + { + get; + private set; + } + + public string Title + { + get + { + return GetTitleInternal(); + } + } + + public LeaderboardPlayerScope PlayerScope + { + get + { + return GetPlayerScopeInternal(); + } + set + { + SetPlayerScopeInternal(value); + } + } + + public LeaderboardTimeScope TimeScope + { + get + { + return GetTimeScopeInternal(); + } + set + { + SetTimeScopeInternal(value); + } + } + + public int LoadScoresQuerySize + { + get; + set; + } + + public ILeaderboardScore LocalPlayerScore + { + get + { + return GetLocalPlayerScoreInternal(); + } + } + + public void ReportScore(long score, CompletionCallback callback, string tag = null) + { + // retain object to avoid unintentional releases + ManagedObjectReferencePool.Retain(this); + + ReportScoreInternal(score, (success, error) => + { + // send result + SendReportScoreResult(callback, success, error); + + // remove object from cache + ManagedObjectReferencePool.Release(this); + }, tag); + } + + public void LoadTopScores(EventCallback callback) + { + LoadTopScoresInternal((scores, localPlayerScore, error) => + { + // send result + SendLoadScoresResult(callback, scores, localPlayerScore, error); + }); + } + + public void LoadPlayerCenteredScores(EventCallback callback) + { + LoadPlayerCenteredScoresInternal((scores, localPlayerScore, error) => + { + // send result + SendLoadScoresResult(callback, scores, localPlayerScore, error); + }); + } + + + public void LoadNext(EventCallback callback) + { + LoadNextInternal((scores, localPlayerScore, error) => + { + // send result + SendLoadScoresResult(callback, scores, localPlayerScore, error); + }); + } + + public void LoadPrevious(EventCallback callback) + { + LoadPreviousInternal((scores, localPlayerScore, error) => + { + // send result + SendLoadScoresResult(callback, scores, localPlayerScore, error); + }); + } + + public void LoadImage(EventCallback callback) + { + // make call + LoadImageInternal((imageData, error) => + { + // send result to caller object + var data = (imageData == null) ? null : new TextureData(imageData); + CallbackDispatcher.InvokeOnMainThread(callback, data, error); + }); + } + + #endregion + + #region Private methods + + private void SendLoadScoresResult(EventCallback callback, ILeaderboardScore[] scores, ILeaderboardScore localPlayerScore, Error error) + { + // fallback case to avoid null values + scores = scores ?? new ILeaderboardScore[0]; + + // send result to caller object + var result = new LeaderboardLoadScoresResult(scores, localPlayerScore); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + private void SendReportScoreResult(CompletionCallback callback, bool success, Error error) + { + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, success, error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardBase.cs.meta new file mode 100644 index 00000000..d40ef6d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7b14e5cedaad44ae39af6a268bc82318 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.AndroidPlatformProperties.cs new file mode 100644 index 00000000..853a939e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.AndroidPlatformProperties.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public partial class LeaderboardDefinition + { + [Serializable] + public class AndroidPlatformProperties + { + #region Constructors + + public AndroidPlatformProperties() + { } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..b473cfec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff81c00dd9edf441788957dc003f90e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.IosPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.IosPlatformProperties.cs new file mode 100644 index 00000000..e6e9c737 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.IosPlatformProperties.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public partial class LeaderboardDefinition + { + [Serializable] + public class IosPlatformProperties + { + #region Constructors + + public IosPlatformProperties() + { } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.IosPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.IosPlatformProperties.cs.meta new file mode 100644 index 00000000..d8f6c446 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.IosPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f182cce9f8ba4eb7b180871e85a9767 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.cs new file mode 100644 index 00000000..8412657d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.cs @@ -0,0 +1,95 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents an object containing additional information related to game leaderboard. + /// + /// @ingroup GameServices + [Serializable] + public partial class LeaderboardDefinition + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private string m_platformId; + + [SerializeField] + private RuntimePlatformConstantSet m_platformIdOverrides; + + [SerializeField] + private string m_title; + + [SerializeField, HideInInspector] + private IosPlatformProperties m_iosProperties; + + [SerializeField, HideInInspector] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + /// + /// The string that identifies the leaderboard within Unity environment. (read-only) + /// + public string Id => PropertyHelper.GetValueOrDefault(m_id); + + /// + /// The name of the leaderboard. (read-only) + /// + public string Title => PropertyHelper.GetValueOrDefault(m_title); + + public IosPlatformProperties IosProperties => m_iosProperties; + + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the with specified properties. + /// + /// The string that identifies the leaderboard within Unity environment. + /// The leaderboard identifier for active platform. + /// The set of platform-specific leaderboard identifiers which overrides . + /// The name of the leaderboard. + /// The leaderboard identifier for iOS platform. + /// The leaderboard identifier for Android platform. + public LeaderboardDefinition(string id = null, string platformId = null, + RuntimePlatformConstantSet platformIdOverrides = null, string title = null, + IosPlatformProperties iosProperties = null, AndroidPlatformProperties androidProperties = null) + { + // set default values + m_id = id; + m_platformId = platformId; + m_platformIdOverrides = platformIdOverrides ?? new RuntimePlatformConstantSet(); + m_title = title; + m_iosProperties = iosProperties ?? new IosPlatformProperties(); + m_androidProperties = androidProperties ?? new AndroidPlatformProperties(); + } + + #endregion + + #region Public methods + + /// + /// Returns the leaderboard identifier for active platform. + /// + public string GetPlatformIdForActivePlatform() + { + return m_platformIdOverrides.GetConstantForActivePlatform(m_platformId); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.cs.meta new file mode 100644 index 00000000..052259a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardDefinition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 06a43403ea7ff40aca604dd42b306a38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardIdAttribute.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardIdAttribute.cs new file mode 100644 index 00000000..5f28f33f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardIdAttribute.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class LeaderboardIdAttribute : StringPopupAttribute + { + #region Fields + + private string[] m_options; + + #endregion + + #region Constructors + + public LeaderboardIdAttribute() + : base() + { + // set properties + m_options = GetLeaderboardIds(); + } + + #endregion + + #region Private static methods + + private static string[] GetLeaderboardIds() + { + try + { + return System.Array.ConvertAll(EssentialKitSettings.Instance.GameServicesSettings.Leaderboards, (item) => item.Id); + } + catch + { + return new string[0]; + } + } + + #endregion + + #region Base class methods + + protected override string[] GetDynamicOptions() + { + return m_options; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardIdAttribute.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardIdAttribute.cs.meta new file mode 100644 index 00000000..8375174d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardIdAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2ac04a2a690de4777814d359bbc8f75e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardLoadScoresResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardLoadScoresResult.cs new file mode 100644 index 00000000..4b3d1f02 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardLoadScoresResult.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when load scores operation is completed. + /// + /// @ingroup GameServices + public class LeaderboardLoadScoresResult + { + #region Properties + + /// + /// An array of score values. + /// + public ILeaderboardScore[] Scores { get; private set; } + + /// + /// The current player's score information. + /// + public ILeaderboardScore LocalPlayerScore { get; private set; } + + #endregion + + #region Constructors + + public LeaderboardLoadScoresResult(ILeaderboardScore[] scores, ILeaderboardScore localPlayerScore) + { + // Set properties + Scores = scores; + LocalPlayerScore = localPlayerScore; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardLoadScoresResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardLoadScoresResult.cs.meta new file mode 100644 index 00000000..f43d5a0c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardLoadScoresResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ce69c41711ca47d2b583951776d3aa2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardPlayerScope.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardPlayerScope.cs new file mode 100644 index 00000000..a28a0bd8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardPlayerScope.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The scope of player to be searched for scores. + /// + public enum LeaderboardPlayerScope + { + /// All the players are considered for search. + Global, + + /// Only friends of local player are considered for search. + FriendsOnly, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardPlayerScope.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardPlayerScope.cs.meta new file mode 100644 index 00000000..dc51f37b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardPlayerScope.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e15dab1b3270d4cba9efbead91dc6e2a +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreBase.cs new file mode 100644 index 00000000..e8cd2b6c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreBase.cs @@ -0,0 +1,75 @@ +using System; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public abstract class LeaderboardScoreBase : NativeObjectBase, ILeaderboardScore + { + #region Constructors + + protected LeaderboardScoreBase(string leaderboardId, string leaderboardPlatformId) + { + // set properties + LeaderboardId = leaderboardId; + LeaderboardPlatformId = leaderboardPlatformId; + } + + protected LeaderboardScoreBase(string leaderboardPlatformId) + { + var settings = GameServices.FindLeaderboardDefinitionWithPlatformId(leaderboardPlatformId); + Assert.IsFalse(null == settings, "Could not find settings for specified platform id: " + leaderboardPlatformId); + + // set properties + LeaderboardId = settings.Id; + LeaderboardPlatformId = leaderboardPlatformId; + } + + #endregion + + #region Abstract methods + + protected abstract IPlayer GetPlayerInternal(); + protected abstract long GetRankInternal(); + protected abstract long GetValueInternal(); + protected abstract DateTime GetLastReportedDateInternal(); + protected abstract string GetTagInternal(); + + #endregion + + #region Base class methods + + public override string ToString() + { + return $"[LeaderboardId={LeaderboardId}, LeaderboardPlatformId={LeaderboardPlatformId}, Player={Player}, Rank={Rank}, Value={Value}, LastReportedDate={LastReportedDate}, Tag={Tag}]"; + } + + #endregion + + #region IGameServicesScore implementation + + public string LeaderboardId { get; internal set; } + + public string LeaderboardPlatformId { get; internal set; } + + public IPlayer Player => GetPlayerInternal(); + + public long Rank => GetRankInternal(); + + public long Value + { + get => GetValueInternal(); + } + + public string FormattedValue => GetValueInternal().ToString(); + + public DateTime LastReportedDate => GetLastReportedDateInternal(); + + public string Tag + { + get => GetTagInternal(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreBase.cs.meta new file mode 100644 index 00000000..e18f587d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3799d17bcafe46109963a0a7e7ba46c +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreReporter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreReporter.cs new file mode 100644 index 00000000..fc6c1695 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreReporter.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class LeaderboardScoreReporter : MonoBehaviour + { + #region Fields + + [SerializeField, LeaderboardId] + private string m_leaderboardId; + + [SerializeField] + private ReportScoreFinishEvent m_onReportScoreFinish; + + #endregion + + #region Public methods + + public void ReportScore(long score) + { + // check whether behaviour is enabled + if (!enabled) + { + return; + } + + // initiate request + GameServices.ReportScore( + leaderboardId: m_leaderboardId, + value: score, + callback: (success, error) => + { + // send result + m_onReportScoreFinish?.Invoke(success, error); + }); + } + + #endregion + + #region Nested types + + [Serializable] + private class ReportScoreFinishEvent : UnityEvent + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreReporter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreReporter.cs.meta new file mode 100644 index 00000000..00b5bc85 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardScoreReporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 576afaaa33f124318b32f13b5310e19d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardTimeScope.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardTimeScope.cs new file mode 100644 index 00000000..73996aa2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardTimeScope.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The period of time to which user's best score are restricted. + /// + public enum LeaderboardTimeScope + { + /// Best score of all user's recorded in past 24hrs is returned. + Today, + + /// Best score of all user's recorded in past week is returned. + Week, + + /// Best score of all user's recorded is returned. + AllTime, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardTimeScope.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardTimeScope.cs.meta new file mode 100644 index 00000000..c973b3c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LeaderboardTimeScope.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 05c8fc535715b40fb91fe78fc36fefa0 +timeCreated: 1553342238 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LocalPlayerAuthStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LocalPlayerAuthStatus.cs new file mode 100644 index 00000000..8fd59934 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LocalPlayerAuthStatus.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Enumeration for determining auth status. + /// + public enum LocalPlayerAuthStatus + { + /// User authentication status is not found. + NotAvailable = 0, + + /// Local player auth process has been initiated. + Authenticating, + + /// Local player is signed in. + Authenticated + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LocalPlayerAuthStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LocalPlayerAuthStatus.cs.meta new file mode 100644 index 00000000..a3801215 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/LocalPlayerAuthStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5d96c410fac5b44eb8fb2d709327ebcd +timeCreated: 1564035075 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NativeGameServicesInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NativeGameServicesInterfaceBase.cs new file mode 100644 index 00000000..4b457d2b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NativeGameServicesInterfaceBase.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public abstract class NativeGameServicesInterfaceBase : NativeFeatureInterfaceBase, INativeGameServicesInterface + { + #region Constructors + + protected NativeGameServicesInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeGameServicesInterface implementation + + public abstract void LoadLeaderboards(LeaderboardDefinition[] leaderboardDefinitions, LoadLeaderboardsInternalCallback callback); + + public abstract void ShowLeaderboard(string leaderboardId, string leaderboardPlatformId, LeaderboardTimeScope timeScope, ViewClosedInternalCallback callback); + + public abstract ILeaderboard CreateLeaderboard(string id, string platformId); + + public abstract void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback); + + public abstract void LoadAchievements(LoadAchievementsInternalCallback callback); + + public abstract void ShowAchievements(ViewClosedInternalCallback callback); + + public abstract void SetCanShowAchievementCompletionBanner(bool value); + + public abstract IAchievement CreateAchievement(string id, string platformId); + + public abstract void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback); + + public abstract void SetAuthChangeCallback(AuthChangeInternalCallback callback); + + public abstract void Authenticate(); + + public abstract void Signout(); + + public abstract ILocalPlayer GetLocalPlayer(); + + public abstract void LoadServerCredentials(LoadServerCredentialsInternalCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NativeGameServicesInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NativeGameServicesInterfaceBase.cs.meta new file mode 100644 index 00000000..ee86b60d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NativeGameServicesInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: faf3d45b8752240a8b15f41baf090044 +timeCreated: 1576562954 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievement.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievement.cs new file mode 100644 index 00000000..54122b4b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievement.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + internal sealed class NullAchievement : AchievementBase + { + #region Constructors + + public NullAchievement(string id, string platformId) : base(id, platformId) + { } + + #endregion + + #region Static methods + + public static void SetCanShowBannerOnCompletion(bool value) + { + LogNotSupported(); + } + + public static void LoadAchievements(LoadAchievementsInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + public static void ShowAchievementView(ViewClosedInternalCallback callback) + { + LogNotSupported(); + + callback(Diagnostics.kFeatureNotSupported); + } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("Achievement"); + } + + #endregion + + #region Base class methods + + protected override double GetPercentageCompletedInternal() + { + LogNotSupported(); + + return 0; + } + + protected override void SetPercentageCompletedInternal(double value) + { + LogNotSupported(); + } + + protected override bool GetIsCompletedInternal() + { + LogNotSupported(); + + return false; + } + + protected override DateTime GetLastReportedDateInternal() + { + LogNotSupported(); + + return default(DateTime); + } + + protected override void ReportProgressInternal(ReportAchievementProgressInternalCallback callback) + { + LogNotSupported(); + + callback(false, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievement.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievement.cs.meta new file mode 100644 index 00000000..dc3e36db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 47424efc7b7394fba9566de41d4d5c95 +timeCreated: 1562672082 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievementDescription.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievementDescription.cs new file mode 100644 index 00000000..ba3a7738 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievementDescription.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + internal sealed class NullAchievementDescription : AchievementDescriptionBase + { + #region Constructors + + public NullAchievementDescription(string id, string platformId, int numOfStepsToUnlock) + : base(id, platformId, numOfStepsToUnlock) + { } + + #endregion + + #region Static methods + + public static void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("AchievementDescription"); + } + + #endregion + + #region Base class methods + + protected override string GetTitleInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetUnachievedDescriptionInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetAchievedDescriptionInternal() + { + LogNotSupported(); + + return null; + } + + protected override long GetMaximumPointsInternal() + { + LogNotSupported(); + + return 0; + } + + protected override bool GetIsHiddenInternal() + { + LogNotSupported(); + + return false; + } + + protected override bool GetIsReplayableInternal() + { + LogNotSupported(); + + return false; + } + + protected override void LoadIncompleteAchievementImageInternal(LoadImageInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievementDescription.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievementDescription.cs.meta new file mode 100644 index 00000000..1df6797d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullAchievementDescription.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5e29c6351c2594938832e489a4f91f38 +timeCreated: 1562673934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullGameServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullGameServicesInterface.cs new file mode 100644 index 00000000..75537c22 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullGameServicesInterface.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + internal sealed class NullGameServicesInterface : NativeGameServicesInterfaceBase + { + #region Constructors + + public NullGameServicesInterface() + : base(isAvailable: false) + { } + + #endregion + + #region INativeGameServicesInterface implementation + + public override void LoadLeaderboards(LeaderboardDefinition[] leaderboardDefinitions, LoadLeaderboardsInternalCallback callback) + { + NullLeaderboard.LoadLeaderboards(callback); + } + + public override void ShowLeaderboard(string leaderboardId, string leaderboardPlatformId, LeaderboardTimeScope timeScope, ViewClosedInternalCallback callback) + { + NullLeaderboard.ShowLeaderboardView(leaderboardId, timeScope, callback); + } + + public override ILeaderboard CreateLeaderboard(string id, string platformId) + { + return new NullLeaderboard(id, platformId); + } + + public override void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback) + { + NullAchievementDescription.LoadAchievementDescriptions(callback); + } + + public override void LoadAchievements(LoadAchievementsInternalCallback callback) + { + NullAchievement.LoadAchievements(callback); + } + + public override void ShowAchievements(ViewClosedInternalCallback callback) + { + NullAchievement.ShowAchievementView(callback); + } + + public override IAchievement CreateAchievement(string id, string platformId) + { + return new NullAchievement(id, platformId); + } + + public override void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback) + { + NullPlayer.LoadPlayers(playerIds, callback); + } + + public override void SetAuthChangeCallback(AuthChangeInternalCallback callback) + { + NullLocalPlayer.SetAuthChangeCallback(callback); + } + + public override void Authenticate() + { + NullLocalPlayer.Authenticate(); + } + + public override void Signout() + { + NullLocalPlayer.Signout(); + } + + public override ILocalPlayer GetLocalPlayer() + { + return NullLocalPlayer.GetLocalPlayer(); + } + + public override void SetCanShowAchievementCompletionBanner(bool value) + { + NullAchievement.SetCanShowBannerOnCompletion(value); + } + + public override void LoadServerCredentials(LoadServerCredentialsInternalCallback callback) + { + Diagnostics.LogNotSupported("LoadServerCredentials"); + callback(null, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullGameServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullGameServicesInterface.cs.meta new file mode 100644 index 00000000..a7816e78 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullGameServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3c0e0c8edde34d2995733152bb540bd +timeCreated: 1576564038 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboard.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboard.cs new file mode 100644 index 00000000..2ec69fe0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboard.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + internal sealed class NullLeaderboard : LeaderboardBase + { + #region Constructors + + public NullLeaderboard(string id, string platformId) : base(id, platformId) + { } + + #endregion + + #region Static methods + + public static void LoadLeaderboards(LoadLeaderboardsInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + public static void ShowLeaderboardView(string leaderboardId, LeaderboardTimeScope timescope, ViewClosedInternalCallback callback) + { + LogNotSupported(); + + callback(Diagnostics.kFeatureNotSupported); + } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("Leaderboard"); + } + + #endregion + + #region Base class methods + + protected override string GetTitleInternal() + { + LogNotSupported(); + + return null; + } + + protected override LeaderboardPlayerScope GetPlayerScopeInternal() + { + LogNotSupported(); + + return default(LeaderboardPlayerScope); + } + + protected override void SetPlayerScopeInternal(LeaderboardPlayerScope value) + { + LogNotSupported(); + } + + protected override LeaderboardTimeScope GetTimeScopeInternal() + { + LogNotSupported(); + + return default(LeaderboardTimeScope); + } + + protected override void SetTimeScopeInternal(LeaderboardTimeScope value) + { + LogNotSupported(); + } + + protected override ILeaderboardScore GetLocalPlayerScoreInternal() + { + LogNotSupported(); + + return null; + } + + protected override void LoadTopScoresInternal(LoadScoresInternalCallback callback) + { + LogNotSupported(); + + callback(null, null, Diagnostics.kFeatureNotSupported); + } + + protected override void LoadPlayerCenteredScoresInternal(LoadScoresInternalCallback callback) + { + LogNotSupported(); + + callback(null, null, Diagnostics.kFeatureNotSupported); + } + + protected override void LoadNextInternal(LoadScoresInternalCallback callback) + { + LogNotSupported(); + + callback(null, null, Diagnostics.kFeatureNotSupported); + } + + protected override void LoadPreviousInternal(LoadScoresInternalCallback callback) + { + LogNotSupported(); + + callback(null, null, Diagnostics.kFeatureNotSupported); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + protected override void ReportScoreInternal(long score, ReportScoreInternalCallback callback, string tag = null) + { + LogNotSupported(); + + callback(false, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboard.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboard.cs.meta new file mode 100644 index 00000000..f1f52642 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboard.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5dca1f5d5861f45d9815a36d7197b1f1 +timeCreated: 1562673934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboardScore.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboardScore.cs new file mode 100644 index 00000000..e7402126 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboardScore.cs @@ -0,0 +1,61 @@ +using System; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + internal sealed class NullLeaderboardScore : LeaderboardScoreBase + { + #region Constructors + + public NullLeaderboardScore(string leaderboardId, string leaderboardPlatformId) : base(leaderboardId, leaderboardPlatformId) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("LeaderboardScore"); + } + + #endregion + + #region Base class methods + + protected override IPlayer GetPlayerInternal() + { + LogNotSupported(); + + return new NullPlayer(); + } + + protected override long GetRankInternal() + { + LogNotSupported(); + + return 0; + } + + protected override long GetValueInternal() + { + LogNotSupported(); + + return 0; + } + + protected override DateTime GetLastReportedDateInternal() + { + LogNotSupported(); + + return default(DateTime); + } + + protected override string GetTagInternal() + { + return null; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboardScore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboardScore.cs.meta new file mode 100644 index 00000000..099a562f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLeaderboardScore.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 337e1ed8d5eea418f9b2c824a51e2aed +timeCreated: 1562673934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLocalPlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLocalPlayer.cs new file mode 100644 index 00000000..df054714 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLocalPlayer.cs @@ -0,0 +1,101 @@ +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + internal sealed class NullLocalPlayer : NullPlayer, ILocalPlayer + { + #region Static fields + + private static readonly NullLocalPlayer s_localPlayer = new NullLocalPlayer(); + + private static AuthChangeInternalCallback s_onAuthChange; + + #endregion + + #region Constructors + + public NullLocalPlayer() + { } + + #endregion + + #region Static methods + + public static NullLocalPlayer GetLocalPlayer() + { + LogNotSupported(); + + return s_localPlayer; + } + + public static void Authenticate() + { + LogNotSupported(); + + if (s_onAuthChange != null) + { + s_onAuthChange(LocalPlayerAuthStatus.NotAvailable, Diagnostics.kFeatureNotSupported); + } + } + + public static void Signout() + { + LogNotSupported(); + } + + public static void SetAuthChangeCallback(AuthChangeInternalCallback callback) + { + // set value + s_onAuthChange = callback; + } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("LocalPlayer"); + } + + #endregion + + #region ILocalPlayer implementation + + public bool IsAuthenticated + { + get + { + LogNotSupported(); + + return false; + } + } + + public bool IsUnderAge + { + get + { + LogNotSupported(); + + return false; + } + } + + public void LoadFriends(EventCallback callback) + { + LogNotSupported(); + callback?.Invoke(null, Diagnostics.kFeatureNotSupported); + } + + public void AddFriend(string playerId, EventCallback callback) + { + LogNotSupported(); + + callback?.Invoke(false, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLocalPlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLocalPlayer.cs.meta new file mode 100644 index 00000000..388d16d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullLocalPlayer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef82625d368fa447c8153828a7d33ca7 +timeCreated: 1562673934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullPlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullPlayer.cs new file mode 100644 index 00000000..90f85b6c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullPlayer.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + internal class NullPlayer : PlayerBase + { + #region Constructors + + public NullPlayer() + { } + + #endregion + + #region Static methods + + public static void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("Player"); + } + + #endregion + + #region Base class methods + + protected override string GetIdInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetDeveloperScopeIdInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetLegacyIdInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetAliasInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetDisplayNameInternal() + { + LogNotSupported(); + + return null; + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullPlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullPlayer.cs.meta new file mode 100644 index 00000000..628f363b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/NullPlayer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 26bfe9f8fd42b47fe93043ea4d23aaee +timeCreated: 1562673934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/PlayerBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/PlayerBase.cs new file mode 100644 index 00000000..59b91469 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/PlayerBase.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore +{ + public abstract class PlayerBase : NativeObjectBase, IPlayer + { + #region Abstract methods + + protected abstract string GetIdInternal(); + + protected abstract string GetDeveloperScopeIdInternal(); + + protected abstract string GetLegacyIdInternal(); + + protected abstract string GetAliasInternal(); + + protected abstract string GetDisplayNameInternal(); + + protected abstract void LoadImageInternal(LoadImageInternalCallback callback); + + #endregion + + #region Base class methods + + public override string ToString() + { + return $"[Id={Id}, Alias={Alias}, DisplayName={DisplayName}, DeveloperScopeId={DeveloperScopeId}, LegacyId={LegacyId}]"; + } + + #endregion + + #region IGameServicesPlayer implementation + + public string Id => GetIdInternal(); + + public string Alias => GetAliasInternal(); + + public string DisplayName => GetDisplayNameInternal(); + + public string DeveloperScopeId => GetDeveloperScopeIdInternal(); + + public string LegacyId => GetLegacyIdInternal(); + + + public void LoadImage(EventCallback callback) + { + LoadImageInternal((imageData, error) => + { + // send result to caller object + var data = (imageData == null) ? null : new TextureData(imageData); + CallbackDispatcher.InvokeOnMainThread(callback, data, error); + }); + } + + #endregion + + #region Utilities + + protected static void SendLoadPlayerFriendsResult(EventCallback callback, IPlayer[] players, Error error) + { + // send result to caller object + var result = new GameServicesLoadPlayerFriendsResult(players ?? new IPlayer[0]); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + protected static void SendViewClosedResult(EventCallback callback, Error error) + { + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, error != null, error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/PlayerBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/PlayerBase.cs.meta new file mode 100644 index 00000000..892ee6ae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/PlayerBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d133fe17dce324f539a28c7520b3b6ca +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.AndroidPlatformProperties.cs new file mode 100644 index 00000000..db43b66e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.AndroidPlatformProperties.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections; +using System.Text; + +namespace VoxelBusters.EssentialKit +{ + public partial class ServerCredentials + { + /// + /// Represents the android platform-specific properties for connecting to google play services from your backend. + /// + public class AndroidPlatformProperties + { + #region Properties + + /// + /// The code obtained after the user has granted access to the specified scopes. + /// + /// + /// The code is only valid for a short period of time. + /// + /// @remark It's possible to add refresh token to this by configuring in settings. + public string ServerAuthCode { get; private set; } + + #endregion + + #region Constructors + + public AndroidPlatformProperties(string serverAuthCode) + { + ServerAuthCode = serverAuthCode; + } + + #endregion + + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..dd22e392 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c7f6fe5fa8f14bbe89c257faff561ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.IosPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.IosPlatformProperties.cs new file mode 100644 index 00000000..6d0b4dde --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.IosPlatformProperties.cs @@ -0,0 +1,87 @@ + +using System.Collections; + +namespace VoxelBusters.EssentialKit +{ + public partial class ServerCredentials + { + /// + /// Represents iOS platform-specific properties for server credentials. + /// + public class IosPlatformProperties + { + #region Constants + + private const string kCredentialsPublicKeyUrl = "public-key-url"; + private const string kCredentialsSignature = "signature"; + private const string kCredentialsSalt = "salt"; + private const string kCredentialsTimestamp = "timestamp"; + + #endregion + + #region Fields + + /// + /// Gets the public key URL associated with the server credentials. + /// + public string PublicKeyUrl { get; private set; } + + /// + /// Gets the signature used for server authentication. + /// + public byte[] Signature { get; private set; } + + /// + /// Gets the salt value used for cryptographic operations. + /// + public byte[] Salt { get; private set; } + + /// + /// Gets the timestamp indicating when the credentials were generated. + /// + public long Timestamp { get; private set; } + + #endregion + + #region Constructors + + public IosPlatformProperties(string publicKeyUrl, byte[] signature, byte[] salt, long timestamp) + { + PublicKeyUrl = publicKeyUrl; + Signature = signature; + Salt = salt; + Timestamp = timestamp; + } + + #endregion + + #region Private methods + + private void Load(IDictionary json) + { + PublicKeyUrl = (string)json[kCredentialsPublicKeyUrl]; + + var signature = (string)json[kCredentialsSignature]; + if (!string.IsNullOrEmpty(signature)) + { + Signature = System.Convert.FromBase64String(signature); + } + + string salt = (string)json[kCredentialsSalt]; + if (!string.IsNullOrEmpty(salt)) + { + Salt = System.Convert.FromBase64String(salt); + } + + string timestamp = (string)json[kCredentialsTimestamp]; + + if (!string.IsNullOrEmpty(timestamp)) + { + Timestamp = long.Parse(timestamp); + } + } + + #endregion + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.IosPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.IosPlatformProperties.cs.meta new file mode 100644 index 00000000..6618cbe2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.IosPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03832b9fd14e349498006695ec85305d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.cs new file mode 100644 index 00000000..f97074fc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.cs @@ -0,0 +1,50 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Contains information about the game service credentials which can be used to connect to game service from your backend. + /// + /// @ingroup GameServices + public partial class ServerCredentials + { + #region Fields + + private IosPlatformProperties m_iosProperties; + + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + /// + /// Contains the iOS platform properties. + /// + public IosPlatformProperties IosProperties => m_iosProperties; + + /// + /// Contains the Android platform properties. + /// + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + public ServerCredentials(IosPlatformProperties iosProperties = null, AndroidPlatformProperties androidProperties = null) + { + m_iosProperties = iosProperties; + m_androidProperties = androidProperties; + } + + #endregion + + #region Utility + + public override string ToString() + { + return $"[IosProperties={IosProperties}, AndroidProperties={AndroidProperties}]"; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.cs.meta new file mode 100644 index 00000000..3fa9916c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/GameServices/ServerCredentials.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 930a738fb1efe4bfda5a5381961c8b41 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal.meta new file mode 100644 index 00000000..1defa63c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27109e6e08d9c4b3cbe640796f21d0a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/Delegates.cs new file mode 100644 index 00000000..aeadf53e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/Delegates.cs @@ -0,0 +1,9 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public delegate void LoadImageInternalCallback(byte[] imageData, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/Delegates.cs.meta new file mode 100644 index 00000000..124eaa1e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d076ef062077443bb1a59232fccce62 +timeCreated: 1553263002 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ImplementationSchema.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ImplementationSchema.cs new file mode 100644 index 00000000..fe8d303d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ImplementationSchema.cs @@ -0,0 +1,451 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + public static class AssemblyName + { + public const string kMain = "VoxelBusters.EssentialKit"; + + public const string kIos = "VoxelBusters.EssentialKit.iOSModule"; + + public const string kAndroid = "VoxelBusters.EssentialKit.AndroidModule"; + + public const string kSimulator = "VoxelBusters.EssentialKit.SimulatorModule"; + } + + public static class NamespaceName + { + public const string kRoot = "VoxelBusters.EssentialKit"; + + public const string kAddressBook = kRoot + ".AddressBookCore"; + + public const string kAppUpdater = kRoot + ".AppUpdaterCore"; + + public const string kBillingServices = kRoot + ".BillingServicesCore"; + + public const string kCloudServices = kRoot + ".CloudServicesCore"; + + public const string kGameServices = kRoot + ".GameServicesCore"; + + public const string kMediaServices = kRoot + ".MediaServicesCore"; + + public const string kNativeUI = kRoot + ".NativeUICore"; + + public const string kNetworkServices = kRoot + ".NetworkServicesCore"; + + public const string kNotificationServices = kRoot + ".NotificationServicesCore"; + + public const string kSharingServices = kRoot + ".SharingServicesCore"; + + public const string kWebView = kRoot + ".WebViewCore"; + + public const string kExtras = kRoot + ".ExtrasCore"; + + public const string kDeepLinkServices = kRoot + ".DeepLinkServicesCore"; + + public const string kRateMyApp = kRoot + ".RateMyAppCore"; + } + + internal static class ImplementationSchema + { + #region Static fields + + private static Dictionary s_configurationMap; + + #endregion + + #region Static properties + + public static NativeFeatureRuntimeConfiguration AddressBook + { + get => GetRuntimeConfiguration(NativeFeatureType.kAddressBook); + } + + public static NativeFeatureRuntimeConfiguration AppUpdater + { + get => GetRuntimeConfiguration(NativeFeatureType.kAppUpdater); + } + + public static NativeFeatureRuntimeConfiguration BillingServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kBillingServices); + } + + public static NativeFeatureRuntimeConfiguration CloudServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kCloudServices); + } + + public static NativeFeatureRuntimeConfiguration GameServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kGameServices); + } + + public static NativeFeatureRuntimeConfiguration MediaServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kMediaServices); + } + + public static NativeFeatureRuntimeConfiguration NativeUI + { + get => GetRuntimeConfiguration(NativeFeatureType.kNativeUI); + } + + public static NativeFeatureRuntimeConfiguration NetworkServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kNetworkServices); + } + + public static NativeFeatureRuntimeConfiguration NotificationServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kNotificationServices); + } + + public static NativeFeatureRuntimeConfiguration SharingServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kSharingServices); + } + + public static NativeFeatureRuntimeConfiguration WebView + { + get => GetRuntimeConfiguration(NativeFeatureType.kWebView); + } + + public static NativeFeatureRuntimeConfiguration Extras + { + get => GetRuntimeConfiguration(NativeFeatureType.kExtras); + } + + public static NativeFeatureRuntimeConfiguration DeepLinkServices + { + get => GetRuntimeConfiguration(NativeFeatureType.kDeepLinkServices); + } + + public static NativeFeatureRuntimeConfiguration RateMyApp + { + get => GetRuntimeConfiguration(NativeFeatureType.kRateMyApp); + } + + #endregion + + #region Constructors + + static ImplementationSchema() + { + s_configurationMap = new Dictionary() + { + // Address Book + { + NativeFeatureType.kAddressBook, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kAddressBook}.iOS", + nativeInterfaceType: "AddressBookInterface", + bindingTypes: new string[] { "AddressBookBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kAddressBook}.Android", + nativeInterfaceType: "AddressBookInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kAddressBook}.Simulator", + nativeInterfaceType: "AddressBookInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kAddressBook, + nativeInterfaceType: "NullAddressBookInterface")) + }, + + // App Updater + { + NativeFeatureType.kAppUpdater, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kAppUpdater}.iOS", + nativeInterfaceType: "AppUpdaterInterface", + bindingTypes: new string[] { "AppUpdaterBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kAppUpdater}.Android", + nativeInterfaceType: "AppUpdaterInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kAppUpdater}.Simulator", + nativeInterfaceType: "AppUpdaterInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kAppUpdater, + nativeInterfaceType: "NullAppUpdaterInterface")) + }, + + // Billing Services + { + NativeFeatureType.kBillingServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kBillingServices}.iOS", + nativeInterfaceType: "BillingServicesInterface", + bindingTypes: new string[] { "BillingServicesBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kBillingServices}.Android", + nativeInterfaceType: "BillingServicesInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kBillingServices}.Simulator", + nativeInterfaceType: "BillingServicesInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kBillingServices, + nativeInterfaceType: "NullBillingServicesInterface")) + }, + + // Cloud Services + { + NativeFeatureType.kCloudServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kCloudServices}.iOS", + nativeInterfaceType: "CloudServicesInterface", + bindingTypes: new string[] { "CloudServicesBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kCloudServices}.Android", + nativeInterfaceType: "CloudServicesInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kCloudServices}.Simulator", + nativeInterfaceType: "CloudServicesInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kCloudServices, + nativeInterfaceType: "NullCloudServicesInterface")) + }, + + // Game Services + { + NativeFeatureType.kGameServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kGameServices}.iOS", + nativeInterfaceType: "GameCenterInterface", + bindingTypes: new string[] { "LeaderboardScoreBinding", "PlayerBinding", "LeaderboardBinding", "GameCenterBinding", "AchievementDescriptionBinding", "AchievementBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kGameServices}.Android", + nativeInterfaceType: "GameServicesInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kGameServices}.Simulator", + nativeInterfaceType: "GameServicesInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kGameServices, + nativeInterfaceType: "NullGameServicesInterface")) + }, + + // Media Services + { + NativeFeatureType.kMediaServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kMediaServices}.iOS", + nativeInterfaceType: "MediaServicesInterface", + bindingTypes: new string[] { "MediaServicesBinding", "MediaContentBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kMediaServices}.Android", + nativeInterfaceType: "MediaServicesInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kMediaServices}.Simulator", + nativeInterfaceType: "MediaServicesInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kMediaServices, + nativeInterfaceType: "NullMediaServicesInterface")) + }, + + // Native UI + { + NativeFeatureType.kNativeUI, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kNativeUI}.iOS", + nativeInterfaceType: "NativeUIInterface", + bindingTypes: new string[] { "DatePickerControllerBinding", "AlertControllerBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kNativeUI}.Android", + nativeInterfaceType: "UIInterface"), + }, + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kNativeUI, + nativeInterfaceType: "UnityUIInterface")) + }, + + // Network Services + { + NativeFeatureType.kNetworkServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kNetworkServices}.iOS", + nativeInterfaceType: "NetworkServicesInterface", + bindingTypes: new string[] { "NetworkServicesBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kNetworkServices}.Android", + nativeInterfaceType: "NetworkServicesInterface"), + }, + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kNetworkServices, + nativeInterfaceType: "UnityNetworkServicesInterface")) + }, + + // Notification Services + { + NativeFeatureType.kNotificationServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kNotificationServices}.iOS", + nativeInterfaceType: "NotificationCenterInterface", + bindingTypes: new string[] { "NotificationCenterBinding", "NotificationBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kNotificationServices}.Android", + nativeInterfaceType: "NotificationCenterInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kNotificationServices}.Simulator", + nativeInterfaceType: "NotificationCenterInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kNotificationServices, + nativeInterfaceType: "NullNotificationCenterInterface")) + }, + + // Sharing Services + { + NativeFeatureType.kSharingServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kSharingServices}.iOS", + nativeInterfaceType: "NativeSharingInterface", + bindingTypes: new string[] { "SocialShareComposerBinding", "ShareSheetBinding", "MessageComposerBinding", "MailComposerBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kSharingServices}.Android", + nativeInterfaceType: "SharingServicesInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kSharingServices}.Simulator", + nativeInterfaceType: "NativeSharingInterface"), + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kSharingServices, + nativeInterfaceType: "NullSharingInterface")) + }, + + // Webview + { + NativeFeatureType.kWebView, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kWebView}.iOS", + nativeInterfaceType: "NativeWebView", + bindingTypes: new string[] { "WebViewBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kWebView}.Android", + nativeInterfaceType: "WebView"), + }, + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kWebView, + nativeInterfaceType: "NullNativeWebView")) + }, + + // Extras + { + NativeFeatureType.kExtras, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kExtras}.iOS", + nativeInterfaceType: "NativeUtilityInterface", + bindingTypes: new string[] { "NativeUtilityInterface" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kExtras}.Android", + nativeInterfaceType: "UtilityInterface"), + }, + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kExtras, + nativeInterfaceType: "NullNativeUtilityInterface")) + }, + + // Deep Link Services + { + NativeFeatureType.kDeepLinkServices, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kDeepLinkServices}.iOS", + nativeInterfaceType: "DeepLinkServicesInterface", + bindingTypes: new string[] { "DeepLinkServicesBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kDeepLinkServices}.Android", + nativeInterfaceType: "DeepLinkServicesInterface"), + }, + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kDeepLinkServices, + nativeInterfaceType: "NullDeepLinkServicesInterface")) + }, + + // RateMyApp + { + NativeFeatureType.kRateMyApp, + new NativeFeatureRuntimeConfiguration(packages: new NativeFeatureRuntimePackage[] + { + NativeFeatureRuntimePackage.iOS(assembly: AssemblyName.kIos, + ns: $"{NamespaceName.kRateMyApp}.iOS", + nativeInterfaceType: "NativeRateMyAppInterface", + bindingTypes: new string[] { "RateMyAppBinding" }), + NativeFeatureRuntimePackage.Android(assembly: AssemblyName.kAndroid, + ns: $"{NamespaceName.kRateMyApp}.Android", + nativeInterfaceType: "RateMyAppInterface"), + }, + simulatorPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kSimulator, + ns: $"{NamespaceName.kRateMyApp}.Simulator", + nativeInterfaceType: "RateMyAppInterface"), + + fallbackPackage: NativeFeatureRuntimePackage.Generic(assembly: AssemblyName.kMain, + ns: NamespaceName.kRateMyApp, + nativeInterfaceType: "NullRateMyAppInterface")) + } + }; + } + + #endregion + + #region Public static methods + + public static KeyValuePair[] GetAllRuntimeConfigurations(bool includeInactive = true, EssentialKitSettings settings = null) + { + Assert.IsTrue(includeInactive || (settings != null), "Arg settings is null."); + + var configurations = new List>(); + foreach (var feature in s_configurationMap) + { + if (includeInactive || ((settings != null) && settings.IsFeatureUsed(feature.Key))) + { + configurations.Add(feature); + } + } + return configurations.ToArray(); + } + + public static NativeFeatureRuntimeConfiguration GetRuntimeConfiguration(string featureName) + { + s_configurationMap.TryGetValue(featureName, out NativeFeatureRuntimeConfiguration config); + + return config; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ImplementationSchema.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ImplementationSchema.cs.meta new file mode 100644 index 00000000..013cc85b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ImplementationSchema.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 62061a0f2eff444d89c9da4d83d00b76 +timeCreated: 1579703881 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureType.cs new file mode 100644 index 00000000..18279518 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureType.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public static class NativeFeatureType + { + #region Constants + + // grouped features + public const string kAddressBook = "AddressBook"; + + public const string kAppUpdater = "AppUpdater"; + + public const string kBillingServices = "BillingServices"; + + public const string kCloudServices = "CloudServices"; + + public const string kExtras = "Extras"; + + public const string kGameServices = "GameServices"; + + public const string kMediaServices = "MediaServices"; + + public const string kNetworkServices = "NetworkServices"; + + public const string kNotificationServices = "NotificationServices"; + + public const string kSharingServices = "SharingServices"; + + public const string kNativeUI = "NativeUI"; + + public const string kWebView = "WebView"; + + public const string kDeepLinkServices = "DeepLinkServices"; + + // sub features + public const string kRateMyApp = "RateMyApp"; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureType.cs.meta new file mode 100644 index 00000000..2b8d0977 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 735d25a2afde5430386156ce1aa9da33 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureUsagePermissionType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureUsagePermissionType.cs new file mode 100644 index 00000000..0a9465bb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureUsagePermissionType.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public static class NativeFeatureUsagePermissionType + { + #region Constants + + public const string kAddressBook = "AddressBook"; + + public const string kCamera = "Camera"; + + public const string kGalleryRead = "GalleryRead"; + + public const string kGalleryReadWrite = "GalleryReadWrite"; + + public const string kNotification = "Notification"; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureUsagePermissionType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureUsagePermissionType.cs.meta new file mode 100644 index 00000000..1aed63c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/NativeFeatureUsagePermissionType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 006ddf0af10264f6dbdb166e04b91edf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ProductResources.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ProductResources.cs new file mode 100644 index 00000000..419f0e1f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ProductResources.cs @@ -0,0 +1,113 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public static class ProductResources + { + #region Constants + + private const string kAddressBookPage = "https://assetstore.essentialkit.voxelbusters.com/features/address-book"; + + private const string kAppUpdaterPage = "https://assetstore.essentialkit.voxelbusters.com/features/app-updater"; + + private const string kBillingServicesPage = "https://assetstore.essentialkit.voxelbusters.com/features/billing-services"; + + private const string kCloudServicesPage = "https://assetstore.essentialkit.voxelbusters.com/features/cloud-services"; + + private const string kExtrasPage = "https://assetstore.essentialkit.voxelbusters.com/features/utilities"; + + private const string kGameServicesPage = "https://assetstore.essentialkit.voxelbusters.com/features/game-services"; + + private const string kMediaServicesPage = "https://assetstore.essentialkit.voxelbusters.com/features/media-services"; + + private const string kNetworkServicesPage = "https://assetstore.essentialkit.voxelbusters.com/features/network-services"; + + private const string kNotificationServicesPage = "https://assetstore.essentialkit.voxelbusters.com/features/notification-services"; + + private const string kRateMyAppPage = "https://assetstore.essentialkit.voxelbusters.com/features/rate-my-app"; + + private const string kSharingPage = "https://assetstore.essentialkit.voxelbusters.com/features/sharing"; + + private const string kUIPage = "https://assetstore.essentialkit.voxelbusters.com/features/native-ui"; + + private const string kWebViewPage = "https://assetstore.essentialkit.voxelbusters.com/features/web-view"; + + private const string kDeepLinkServicesPage = "https://assetstore.essentialkit.voxelbusters.com/features/deep-link-services"; + + #endregion + + #region Public static methods + + public static void OpenResourcePage(string feature) + { + string resourcePage = null; + switch (feature) + { + case NativeFeatureType.kAddressBook: + resourcePage = kAddressBookPage; + break; + case NativeFeatureType.kAppUpdater: + resourcePage = kAppUpdaterPage; + break; + + case NativeFeatureType.kBillingServices: + resourcePage = kBillingServicesPage; + break; + + case NativeFeatureType.kCloudServices: + resourcePage = kCloudServicesPage; + break; + + case NativeFeatureType.kDeepLinkServices: + resourcePage = kDeepLinkServicesPage; + break; + + case NativeFeatureType.kExtras: + resourcePage = kExtrasPage; + break; + + case NativeFeatureType.kGameServices: + resourcePage = kGameServicesPage; + break; + + case NativeFeatureType.kMediaServices: + resourcePage = kMediaServicesPage; + break; + + case NativeFeatureType.kNetworkServices: + resourcePage = kNetworkServicesPage; + break; + + case NativeFeatureType.kNotificationServices: + resourcePage = kNotificationServicesPage; + break; + + case NativeFeatureType.kRateMyApp: + resourcePage = kRateMyAppPage; + break; + + case NativeFeatureType.kSharingServices: + resourcePage = kSharingPage; + break; + + case NativeFeatureType.kNativeUI: + resourcePage = kUIPage; + break; + + case NativeFeatureType.kWebView: + resourcePage = kWebViewPage; + break; + } + + // open link + if (resourcePage != null) + { + Application.OpenURL(resourcePage); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ProductResources.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ProductResources.cs.meta new file mode 100644 index 00000000..2427e3ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Internal/ProductResources.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d696412a029fb4fcbad16e939697dc3e +timeCreated: 1576150231 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices.meta new file mode 100644 index 00000000..e38d8c1b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b7029feb0f904aef8a059e126b55d28 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/CameraAccessStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/CameraAccessStatus.cs new file mode 100644 index 00000000..2c335e64 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/CameraAccessStatus.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// An access status the user can grant for an app to access the camera. + /// + public enum CameraAccessStatus + { + /// The user has not yet made a choice regarding whether this app can access the camera. + NotDetermined, + + /// The application is not authorized to access the camera. + Restricted, + + /// The user explicitly denied access to camera for this application. + Denied, + + /// The application is authorized to access camera. + Authorized, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/CameraAccessStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/CameraAccessStatus.cs.meta new file mode 100644 index 00000000..75f8a338 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/CameraAccessStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e2307a8ee4ae14c3ebb9eb163fe88254 +timeCreated: 1554376066 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/Delegates.cs new file mode 100644 index 00000000..a31ef7da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/Delegates.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.MediaServicesCore +{ + public delegate void RequestGalleryAccessInternalCallback(GalleryAccessStatus status, Error error); + + public delegate void RequestCameraAccessInternalCallback(CameraAccessStatus status, Error error); + + public delegate void SelectImageInternalCallback(byte[] imageData, Error error); + + public delegate void SelectMediaContentInternalCallback(IMediaContent[] contents, Error error); + + public delegate void CaptureMediaContentInternalCallback(IMediaContent content, Error error); + + public delegate void SaveImageToGalleryInternalCallback(bool success, Error error); + + public delegate void SaveMediaContentInternalCallback(bool success, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/Delegates.cs.meta new file mode 100644 index 00000000..417f6cfd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b0fdfb464b5154b058824eefe9c72b2c +timeCreated: 1554375996 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessMode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessMode.cs new file mode 100644 index 00000000..964ef82e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessMode.cs @@ -0,0 +1,19 @@ +using UnityEngine; +using System.Collections; +using System; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Enumeration values indicating the mode in which application wants to access user's gallery. + /// + [Flags] + public enum GalleryAccessMode + { + /// The ability to access gallery files. + Read = 1 << 0, + + /// The ability to access and write files to gallery. + ReadWrite = 1 << 1, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessMode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessMode.cs.meta new file mode 100644 index 00000000..98c5a2b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b0f84ea95172430b9185e008968c928 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessStatus.cs new file mode 100644 index 00000000..1308a752 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessStatus.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// An access status the user can grant for an app to access the gallery data. + /// + public enum GalleryAccessStatus + { + /// The user has not yet made a choice regarding whether this app can access the gallery data. + NotDetermined, + + /// The application is not authorized to access the gallery data. + Restricted, + + /// The user explicitly denied access to gallery data for this application. + Denied, + + /// The application is authorized to access gallery data. + Authorized, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessStatus.cs.meta new file mode 100644 index 00000000..8e9e8ac6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/GalleryAccessStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e869575508197490bbd8f651bbdb33b5 +timeCreated: 1554376057 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/IMediaContent.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/IMediaContent.cs new file mode 100644 index 00000000..6e78577a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/IMediaContent.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Interface to be implemented by media content classes. + /// + /// + /// This interface provides methods to convert the media content to various formats. + /// + /// @ingroup MediaServices + public interface IMediaContent + { + /// + /// Converts the media content to a + /// + /// + /// The callback will be invoked with the converted texture. + /// + /// Callback to be invoked when the conversion is completed. + void AsTexture2D(EventCallback onComplete); + + /// + /// Converts the media content to a . + /// + /// + /// The callback will be invoked with the converted raw media data. + /// + /// Callback to be invoked when the conversion is completed. + void AsRawMediaData(EventCallback onComplete); + + /// + /// Converts the media content to a file path. + /// + /// + /// The callback will be invoked with the converted file path. + /// + /// The directory to which the file should be saved. + /// The name of the file to be saved. + /// Callback to be invoked when the conversion is completed. + void AsFilePath(string destinationDirectory, string fileName, EventCallback onComplete); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/IMediaContent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/IMediaContent.cs.meta new file mode 100644 index 00000000..00852cd5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/IMediaContent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20312dbfc359b427a8a1cff63721913a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/INativeMediaServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/INativeMediaServicesInterface.cs new file mode 100644 index 00000000..591912d9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/INativeMediaServicesInterface.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.MediaServicesCore +{ + public interface INativeMediaServicesInterface : INativeFeatureInterface + { + #region Methods + + GalleryAccessStatus GetGalleryAccessStatus(GalleryAccessMode mode); + CameraAccessStatus GetCameraAccessStatus(); + + + void SelectMediaContent(MediaContentSelectOptions options, SelectMediaContentInternalCallback callback); + void CaptureMediaContent(MediaContentCaptureOptions options, CaptureMediaContentInternalCallback callback); + void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, SaveMediaContentInternalCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/INativeMediaServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/INativeMediaServicesInterface.cs.meta new file mode 100644 index 00000000..10c72d4b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/INativeMediaServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee0aadd6f2ac6492a8e93e055205bd64 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContent.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContent.cs new file mode 100644 index 00000000..7e4d1ecd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContent.cs @@ -0,0 +1,53 @@ +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class MediaContent : IMediaContent + { + protected byte[] Data { get; set; } + protected string Mime { get; set; } + + public virtual void AsTexture2D(EventCallback onComplete) + { + var texture = new TextureData(Data).GetTexture(); + CallbackDispatcher.InvokeOnMainThread(onComplete, texture, null); + } + + public void AsRawMediaData(EventCallback onComplete) + { + CallbackDispatcher.InvokeOnMainThread(onComplete, new RawMediaData(Data, Mime), null); + } + + public virtual void AsFilePath(string destinationDirectory, string fileName, EventCallback onComplete) + { + string extension = MimeType.GetExtensionForType(Mime); + string destinationDirectoryPath = Path.Combine(Application.persistentDataPath, destinationDirectory); + string path = Path.Combine(destinationDirectoryPath, $"{fileName}.{extension}"); + IOServices.CreateDirectory(destinationDirectoryPath); + IOServices.CreateFile(path, Data); + CallbackDispatcher.InvokeOnMainThread(onComplete, path, null); + } + + public static MediaContent From(byte[] data, string mime) + { + return new MediaContent() { + Data = data, + Mime = mime + }; + } + + public static MediaContent From(Texture2D texture) + { + var data = texture.EncodeToPNG(); + + return new MediaContent() { + Data = data, + Mime = MimeType.kPNGImage + }; + } + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContent.cs.meta new file mode 100644 index 00000000..6c98eb85 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbeeccd03f83149e19b681d538871a81 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureOptions.cs new file mode 100644 index 00000000..0d25104c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureOptions.cs @@ -0,0 +1,79 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Contains options which customize the behavior of the method. + /// + /// @ingroup MediaServices + public class MediaContentCaptureOptions + { + #region Properties + + /// + /// Gets the type of media content. + /// + /// The type of media content. + public MediaContentCaptureType CaptureType { get; private set; } + + /// + /// Gets the title of the capture. + /// + /// The title of the capture. + public string Title { get; private set; } + + /// + /// Gets the file name. + /// + /// The file name without extension. + public string FileName { get; private set; } + + /// + /// Gets the source of media content. + /// + /// The source of media content. + public MediaContentCaptureSource Source { get; set; } + + #endregion + + /// + /// Initializes a new instance of the class. + /// + /// Type of the capture. + /// Title of the capture. + /// File name without extension. + /// Source of media content. + public MediaContentCaptureOptions(MediaContentCaptureType captureType, string title, string fileName, MediaContentCaptureSource source = MediaContentCaptureSource.Camera) + { + CaptureType = captureType; + Title = title; + FileName = fileName; + Source = source; + } + + #region Utility methods + + /// + /// Creates the options for image capture. + /// + /// The options for image capture. + public static MediaContentCaptureOptions CreateForImage() + { + return new MediaContentCaptureOptions(MediaContentCaptureType.Image, title: "Capture image", "captured_image", MediaContentCaptureSource.Camera); + } + + /// + /// Creates the options for video capture. + /// + /// The options for video capture. + public static MediaContentCaptureOptions CreateForVideo() + { + return new MediaContentCaptureOptions(MediaContentCaptureType.Video, title: "Capture video", "captured_video", MediaContentCaptureSource.Camera); + } + + public override string ToString() + { + return $"Capture Type: {CaptureType}, Title: {Title}, File Name: {FileName}"; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureOptions.cs.meta new file mode 100644 index 00000000..0aefa884 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc907f7323c004812bc3f90c16dd947e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureSource.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureSource.cs new file mode 100644 index 00000000..42134d30 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureSource.cs @@ -0,0 +1,15 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents a source of media content capture. + /// + public enum MediaContentCaptureSource + { + /// + /// Capture media content from a camera. + /// + Camera, + + //VoiceRecorder + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureSource.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureSource.cs.meta new file mode 100644 index 00000000..7217df6d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureSource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 65aaec49324764fa3bc084477ba46a8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureType.cs new file mode 100644 index 00000000..ae439282 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureType.cs @@ -0,0 +1,19 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Type of media content that can be captured. + /// + public enum MediaContentCaptureType + { + /// + /// Capture an image. + /// + Image, + /// + /// Capture a video. + /// + Video, + + // Audio - Future + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureType.cs.meta new file mode 100644 index 00000000..1dfa1e22 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentCaptureType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ed159ae74a6a4a308bed529f6255031 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSaveOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSaveOptions.cs new file mode 100644 index 00000000..a0f3ce08 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSaveOptions.cs @@ -0,0 +1,37 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Contains options which customize the behavior of the method. + /// + /// @ingroup MediaServices + public class MediaContentSaveOptions + { + #region Properties + + /// + /// Gets the directory name where the media content will be saved. + /// + /// The directory name (album name). + public string DirectoryName { get; private set; } + + /// + /// Gets the file name without extension. + /// + /// The file name without extension. + public string FileName { get; private set; } + + #endregion + + /// + /// Initializes a new instance of the class. + /// + /// The directory name(album) where the media content will be saved. + /// The file name without extension. + public MediaContentSaveOptions(string directoryName, string fileName) + { + // set properties + DirectoryName = directoryName; + FileName = fileName; + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSaveOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSaveOptions.cs.meta new file mode 100644 index 00000000..8041143e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSaveOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58cfe27e14b604d40b5a83bdd3e0dcef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSelectOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSelectOptions.cs new file mode 100644 index 00000000..55fcc4a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSelectOptions.cs @@ -0,0 +1,105 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Contains options for selecting media content. + /// + /// @ingroup MediaServices + public class MediaContentSelectOptions + { + #region Properties + + /// + /// Gets the title which is shown to user. + /// + /// The title. + public string Title { get; private set; } + + /// + /// Gets the allowed mime type. + /// + /// The allowed mime type. + public string AllowedMimeType { get; private set; } + + /// + /// Gets the max allowed. + /// + /// The max allowed. + public int MaxAllowed { get; private set; } + + /// + /// Gets a value indicating whether this show prepermission dialog. + /// + /// true if show prepermission dialog; otherwise, false. + private bool ShowPrepermissionDialog { get; set; } + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// Title. + /// Allowed mime type. + /// Max allowed contents to select. + public MediaContentSelectOptions(string title, string allowedMimeType, int maxAllowed) + { + // set properties + Title = title; + AllowedMimeType = allowedMimeType; + MaxAllowed = maxAllowed; + ShowPrepermissionDialog = false; + } + + #endregion + + #region Utility methods + + /// @name Helpers + /// @{ + + /// + /// Creates options for selecting image. + /// + /// The options. + /// Max allowed. + public static MediaContentSelectOptions CreateForImage(int maxAllowed = 1) + { + return new MediaContentSelectOptions(title: maxAllowed == 1 ? "Select image" : "Select images", allowedMimeType: MimeType.kAllImages, maxAllowed: maxAllowed); + } + + /// + /// Creates options for selecting video. + /// + /// The options. + /// Max allowed contents. + public static MediaContentSelectOptions CreateForVideo(int maxAllowed = 1) + { + return new MediaContentSelectOptions(title: maxAllowed == 1 ? "Select video" : "Select videos", allowedMimeType: MimeType.kAllVideos, maxAllowed: maxAllowed); + } + + /// + /// Creates options for selecting audio. + /// + /// The options. + /// Max allowed. + public static MediaContentSelectOptions CreateForAudio(int maxAllowed = 1) + { + return new MediaContentSelectOptions(title: maxAllowed == 1 ? "Select audio" : "Select audio", allowedMimeType: MimeType.kAllAudio, maxAllowed: maxAllowed); + } + + /// + /// Creates options for selecting any file type. + /// + /// The options. + /// Max allowed. + public static MediaContentSelectOptions CreateForAny(int maxAllowed = 1) + { + return new MediaContentSelectOptions(title: maxAllowed == 1 ? "Select file" : "Select files", allowedMimeType: MimeType.kAny, maxAllowed: maxAllowed); + } + /// @} + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSelectOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSelectOptions.cs.meta new file mode 100644 index 00000000..393a8bb9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaContentSelectOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc604ab464b724c79bdc163520cd722f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServices.cs new file mode 100644 index 00000000..d197bf48 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServices.cs @@ -0,0 +1,232 @@ +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.MediaServicesCore; +using System; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup MediaServices Media Services + * @brief Provides cross-platform interface to access devices's media gallery and camera for picking/saving images/videos/documents etc. + */ + + /// + /// Provides cross-platform interface to access devices's media gallery and camera for picking/saving media content. + /// + /// @ingroup MediaServices + public static class MediaServices + { + #region Static fields + + [ClearOnReload] + private static INativeMediaServicesInterface s_nativeInterface = null; + + #endregion + + #region Static properties + + public static MediaServicesUnitySettings UnitySettings { get; private set; } + + #endregion + + #region Setup methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + /// @name Advanced Usage + ///@{ + + /// + /// Initializes the media services module with the given settings. + /// @note This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + /// The settings to be used for initialization. + /// + /// + /// The settings configure the behavior of the media services module. + /// + /// + public static void Initialize(MediaServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Set properties + UnitySettings = settings; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.MediaServices, true); + } + /// @} + + #endregion + + + #region Public methods + + /// + /// Returns the current authorization status provided to access the gallery. + /// + /// + /// To see different authorization status, see . + /// + /// The access mode your app is requesting. + public static GalleryAccessStatus GetGalleryAccessStatus(GalleryAccessMode mode) + { + try + { + // make request + return s_nativeInterface.GetGalleryAccessStatus(mode); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return GalleryAccessStatus.NotDetermined; + } + } + + /// + /// Returns the current authorization status provided to access the camera. + /// + /// + /// To see different authorization status, see . + /// + public static CameraAccessStatus GetCameraAccessStatus() + { + try + { + // make request + return s_nativeInterface.GetCameraAccessStatus(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return CameraAccessStatus.NotDetermined; + } + } + + /// + /// Select media content from the gallery. + /// + /// + /// Selects media content as per the options specified in + /// + /// A set of options that customize the behavior of the method. + /// A callback which will be invoked after the user selects media content. + public static void SelectMediaContent(MediaContentSelectOptions options, EventCallback callback) + { + Assert.IsArgNotNull(options, nameof(options)); + + // Make request + s_nativeInterface.SelectMediaContent(options, (contents, error) => SendSelectMediaContentResult(callback, contents, error)); + } + + /// + /// Capture media content from a camera. + /// + /// + /// Captures media content as per the options specified in + /// + /// A set of options that customize the behavior of the method. + /// A callback which will be invoked after the user captures media content. + public static void CaptureMediaContent(MediaContentCaptureOptions options, EventCallback callback) + { + Assert.IsArgNotNull(options, nameof(options)); + + // Make request + s_nativeInterface.CaptureMediaContent(options, (contents, error) => SendCaptureMediaContentResult(callback, contents, error)); + } + + /// + /// Save media content to the gallery. + /// + /// + /// Saves media content as per the options specified in + /// + /// The data to save to the gallery. + /// The mime type of the data. + /// A set of options that customize the behavior of the method. + /// A callback which will be invoked after the data is saved to the gallery. + public static void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, EventCallback callback) + { + Assert.IsArgNotNull(data, nameof(data)); + Assert.IsArgNotNull(mimeType, nameof(mimeType)); + Assert.IsArgNotNull(options, nameof(options)); + + // Make request + s_nativeInterface.SaveMediaContent(data, mimeType, options, (success, error) => SendSaveMediaContentResult(callback, success, error)); + } + + #endregion + + #region Helper methods + private static void SendSelectMediaContentResult(EventCallback callback, IMediaContent[] contents, Error error) + { + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, contents, error); + } + + private static void SendCaptureMediaContentResult(EventCallback callback, IMediaContent content, Error error) + { + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, content, error); + } + + private static void SendSaveMediaContentResult(EventCallback callback, bool success, Error error) + { + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, success, error); + } + #endregion + + #region Obsolete methods + + [Obsolete("Use SelectMediaContent instead. If a permission is required, SelectMediaContent shows up the permission dialog.", true)] //Obsolete:2024 + private static void RequestGalleryAccess(GalleryAccessMode mode, bool showPrepermissionDialog = true, EventCallback callback = null) + {} + + + [Obsolete("Use CaptureMediaContent instead. If a permission is required, CaptureMediaContent shows up the permission dialog.", true)] //Obsolete:2024 + private static void RequestCameraAccess(bool showPrepermissionDialog = true, EventCallback callback = null) + {} + + [Obsolete("Use GetGalleryAccessStatus instead.", true)] //Obsolete:2024 + private static bool CanSelectImageFromGallery() + { + return false; + } + + [Obsolete("Use SelectMediaContent instead.", true)] //Obsolete:2024 + private static void SelectImageFromGallery(bool canEdit, EventCallback callback) + {} + + [Obsolete("Use GetCameraAccessStatus instead.", true)] //Obsolete:2024 + private static bool CanCaptureImageFromCamera() + { + return false; + } + + + [Obsolete("Use CaptureMediaContent instead.", true)] //Obsolete:2024 + public static void CaptureImageFromCamera(bool canEdit, EventCallback callback) + {} + + [Obsolete("This method is obsolete. Use SaveMediaContent instead.", true)] //Obsolete:2024 + private static bool CanSaveImageToGallery() + { + return false; + } + + + [Obsolete("This method is obsolete. Use SaveMediaContent instead.", true)] //Obsolete:2024 + public static void SaveImageToGallery(UnityEngine.Texture2D image, EventCallback callback) + {} + + [Obsolete("This method is obsolete. Use SaveMediaContent instead.", true)] //Obsolete:2024 + public static void SaveImageToGallery(string albumName, UnityEngine.Texture2D image, EventCallback callback) + {} + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServices.cs.meta new file mode 100644 index 00000000..3153c7aa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3ad777a6de9e442f9ab8cbfa419eef6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesError.cs new file mode 100644 index 00000000..fe332b1e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesError.cs @@ -0,0 +1,40 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class MediaServicesError + { + public const string kDomain = "[Essential Kit] Media Services"; + + + + public static Error Unknown(string description = null) => CreateError( + code: (int)MediaServicesErrorCode.Unknown, + description: description ?? "Unknown error." + ); + + + public static Error PermissionNotAvailable(string description = null) => CreateError( + code: (int)MediaServicesErrorCode.PermissionNotAvailable, + description: description ?? "Permission not available." + ); + + + public static Error UserCancelled(string description = null) => CreateError( + code: (int)MediaServicesErrorCode.UserCancelled, + description: description ?? "User cancelled." + ); + + + public static Error DataNotAvailable(string description = null) => CreateError( + code: (int)MediaServicesErrorCode.DataNotAvailable, + description: description ?? "Data not available." + ); + + + private static Error CreateError(int code, string description) => new Error( + domain: kDomain, + code: code, + description: description); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesError.cs.meta new file mode 100644 index 00000000..6c4fcfd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ecd0dc72918284656ba88b0f03170839 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesErrorCode.cs new file mode 100644 index 00000000..4e6537cf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesErrorCode.cs @@ -0,0 +1,28 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Contains a list of error codes that can occur while using the Media Services. + /// + public enum MediaServicesErrorCode + { + /// + /// An unknown error occurred. + /// + Unknown, + + /// + /// The permission to access the camera or photo library is not available. + /// + PermissionNotAvailable, + + /// + /// The user cancelled the operation. + /// + UserCancelled, + + /// + /// The required data is not available. + /// + DataNotAvailable + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesErrorCode.cs.meta new file mode 100644 index 00000000..80119545 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efb6b923e91804ea79a7c09b3eba4624 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestCameraAccessResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestCameraAccessResult.cs new file mode 100644 index 00000000..0fd6098c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestCameraAccessResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup MediaServices + public class MediaServicesRequestCameraAccessResult + { + #region Properties + + /// + /// The access permission granted by the user. + /// + public CameraAccessStatus AccessStatus { get; private set; } + + #endregion + + #region Constructors + + internal MediaServicesRequestCameraAccessResult(CameraAccessStatus accessStatus) + { + // Set properties + AccessStatus = accessStatus; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestCameraAccessResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestCameraAccessResult.cs.meta new file mode 100644 index 00000000..eed474bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestCameraAccessResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6727b53da55314e0cb79679fd3cf87dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestGalleryAccessResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestGalleryAccessResult.cs new file mode 100644 index 00000000..8439bdda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestGalleryAccessResult.cs @@ -0,0 +1,32 @@ +using System.Collections; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup MediaServices + public class MediaServicesRequestGalleryAccessResult + { + #region Properties + + /// + /// The access permission provided by the user. + /// + public GalleryAccessStatus AccessStatus { get; private set; } + + #endregion + + #region Constructors + + internal MediaServicesRequestGalleryAccessResult(GalleryAccessStatus accessStatus) + { + // Set properties + AccessStatus = accessStatus; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestGalleryAccessResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestGalleryAccessResult.cs.meta new file mode 100644 index 00000000..f1cc9b5e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesRequestGalleryAccessResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7517fcfaf1114bf09cc86915051303e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSaveImageToGalleryResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSaveImageToGalleryResult.cs new file mode 100644 index 00000000..54a7ead5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSaveImageToGalleryResult.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @deprecated Use instead + [Obsolete("This class is obsolete. Use SaveMediaContent instead.", true)] //Obsolete:2024 + public class MediaServicesSaveImageToGalleryResult + { + #region Properties + + /// + /// The status of requested operation. + /// + /// true if success; otherwise, false. + public bool Success { get; private set; } + + #endregion + + #region Constructors + + internal MediaServicesSaveImageToGalleryResult(bool success) + { + // Set properties + Success = success; + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSaveImageToGalleryResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSaveImageToGalleryResult.cs.meta new file mode 100644 index 00000000..0d2560f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSaveImageToGalleryResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5323aae3a2fb421e99bb7c7d6e8e648 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSelectMediaContentResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSelectMediaContentResult.cs new file mode 100644 index 00000000..83bd7b40 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSelectMediaContentResult.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Contains information about the media content selected by the user. + /// + /// @ingroup MediaServices + public class MediaServicesSelectMediaContentResult + { + #region Properties + + + /// + /// The list of media contents selected by the user. + /// + /// The list of media contents. + public IMediaContent[] Contents + { + get; + private set; + } + + #endregion + + #region Constructors + + internal MediaServicesSelectMediaContentResult(List contents) + { + // Set properties + Contents = contents.ToArray(); + } + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSelectMediaContentResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSelectMediaContentResult.cs.meta new file mode 100644 index 00000000..ae9d55ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/MediaServicesSelectMediaContentResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8c696ad36996480199aa463ad81d675 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NativeMediaServicesInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NativeMediaServicesInterfaceBase.cs new file mode 100644 index 00000000..9a760872 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NativeMediaServicesInterfaceBase.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.MediaServicesCore +{ + public abstract class NativeMediaServicesInterfaceBase : NativeFeatureInterfaceBase, INativeMediaServicesInterface + { + #region Constructors + + protected NativeMediaServicesInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeMediaServicesInterface implementation + public abstract GalleryAccessStatus GetGalleryAccessStatus(GalleryAccessMode mode); + + public abstract CameraAccessStatus GetCameraAccessStatus(); + + public abstract void SelectMediaContent(MediaContentSelectOptions options, SelectMediaContentInternalCallback callback); + public abstract void CaptureMediaContent(MediaContentCaptureOptions options, CaptureMediaContentInternalCallback callback); + public abstract void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, SaveMediaContentInternalCallback callback); + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NativeMediaServicesInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NativeMediaServicesInterfaceBase.cs.meta new file mode 100644 index 00000000..97b16a78 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NativeMediaServicesInterfaceBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e73c66fa76484b20b0ebc2e68672a42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NullMediaServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NullMediaServicesInterface.cs new file mode 100644 index 00000000..ad72217a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NullMediaServicesInterface.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.MediaServicesCore +{ + internal sealed class NullMediaServicesInterface : NativeMediaServicesInterfaceBase + { + #region Constructors + + public NullMediaServicesInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("MediaServices"); + } + + #endregion + + #region Base class methods + + public override GalleryAccessStatus GetGalleryAccessStatus(GalleryAccessMode mode) + { + LogNotSupported(); + + return GalleryAccessStatus.Restricted; + } + + public override CameraAccessStatus GetCameraAccessStatus() + { + LogNotSupported(); + + return CameraAccessStatus.Restricted; + } + + public override void SelectMediaContent(MediaContentSelectOptions options, SelectMediaContentInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + public override void CaptureMediaContent(MediaContentCaptureOptions options, CaptureMediaContentInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + public override void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, SaveMediaContentInternalCallback callback) + { + LogNotSupported(); + + callback(false, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NullMediaServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NullMediaServicesInterface.cs.meta new file mode 100644 index 00000000..0ae11a99 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/NullMediaServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d8c6265523e3643ada86d1991e3afb92 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/RawMediaData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/RawMediaData.cs new file mode 100644 index 00000000..88e89e01 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/RawMediaData.cs @@ -0,0 +1,30 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Contains information about raw media data. + /// + /// @ingroup MediaServices + public class RawMediaData + { + /// + /// Bytes of the raw media data. + /// + public byte[] Bytes { get; private set; } + + /// + /// Mime type of the raw media data. + /// + public string Mime { get; private set; } + + /// + /// Constructor. + /// + /// Bytes of the raw media data. + /// Mime type of the raw media data. + internal RawMediaData(byte[] bytes, string mime) + { + Bytes = bytes; + Mime = mime; + } + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/RawMediaData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/RawMediaData.cs.meta new file mode 100644 index 00000000..4342542a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/MediaServices/RawMediaData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ba9cd2a8ca1d4d42b1f3f78528d1fce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI.meta new file mode 100644 index 00000000..e83ebebc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 167316aaf8b7644108f821a3fe100d5a +folderAsset: yes +timeCreated: 1547453607 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialog.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialog.cs new file mode 100644 index 00000000..11d2a3c6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialog.cs @@ -0,0 +1,326 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.NativeUICore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + + /** @defgroup NativeUI Native UI + * @brief Provides a group of classes to access native UI components. + */ + + /// + /// The AlertDialog class provides an interface to display an alert message to the user. + /// + /// + /// The following code example shows how to configure and present an alert dialog. + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// public void Start() + /// { + /// AlertDialog newDialog = AlertDialog.CreateInstance(); + /// newDialog.SetTitle(title); + /// newDialog.SetMessage(message); + /// newDialog.AddButton(button, OnAlertButtonClicked); + /// newDialog.Show(); + /// } + /// + /// private void OnAlertButtonClicked() + /// { + /// // add your code + /// } + /// } + /// + /// + /// @ingroup NativeUI + public partial class AlertDialog : NativeFeatureBehaviour + { + #region Fields + + private INativeAlertDialogInterface m_nativeDialog = null; + + private List m_buttonActions; + + #endregion + + #region Properties + + /// + /// The title of the alert. + /// + /// The title of the alert. + public string Title + { + get + { + try + { + return m_nativeDialog.GetTitle(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + set + { + SetTitleInternal(value); + } + } + + /// + /// The message of the alert. + /// + /// The message of the alert. + public string Message + { + get + { + try + { + return m_nativeDialog.GetMessage(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + set + { + SetMessageInternal(value); + } + } + + #endregion + + #region Static methods + + /// + /// Creates a new instance of the class. + /// + /// The alert style to be used. + public static AlertDialog CreateInstance(AlertDialogStyle alertStyle = AlertDialogStyle.Default) + { + return CreateInstanceInternal("AlertDialog", alertStyle); + } + + #endregion + + #region Lifecycle methods + + protected override void AwakeInternal(object[] args) + { + base.AwakeInternal(args); + + // initialise properties + var nativeUIInterface = NativeUI.NativeInterface; + var alertStyle = (args == null) ? AlertDialogStyle.Default : (AlertDialogStyle)args[0]; + m_nativeDialog = nativeUIInterface.CreateAlertDialog(alertStyle); + m_buttonActions = new List(capacity: 3); + + // register for events + m_nativeDialog.OnButtonClick += HandleButtonClickInternalCallback; + } + + protected override void DestroyInternal() + { + base.DestroyInternal(); + + if (m_nativeDialog != null) + { + // unregister from event + m_nativeDialog.OnButtonClick -= HandleButtonClickInternalCallback; + + // reset interface properties + m_nativeDialog.Dispose(); + } + if (m_buttonActions != null) + { + m_buttonActions.Clear(); + } + } + + #endregion + + #region Behaviour methods + + public override bool IsAvailable() + { + return NativeUI.NativeInterface.IsAvailable; + } + + protected override string GetFeatureName() + { + return "Alert Dialog"; + } + + #endregion + + #region Public methods + + /// + /// Adds an action button to the alert. Here, the default style is used. + /// + /// The title of the button. + /// The method to execute when the user selects this button. + public void AddButton(string title, Callback callback) + { + // validate arguments + if (null == title) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Button title is null."); + return; + } + + // create button object and add it to the dialog + m_buttonActions.Add(new ButtonAction() { title = title, onClick = callback }); + + try + { + m_nativeDialog.AddButton(title, false); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds action button to the alert. This style type indicates the action cancels the operation and leaves things unchanged. + /// + /// The title of the button. + /// The method to execute when the user selects this button. + public void AddCancelButton(string title, Callback callback) + { + if (null == title) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Button title is null."); + return; + } + + // create button object and add it to the dialog + m_buttonActions.Add(new ButtonAction() { title = title, onClick = callback }); + + try + { + m_nativeDialog.AddButton(title, true); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Shows the alert dialog to the user. + /// + public void Show() + { + try + { + m_nativeDialog.Show(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Dismisses the alert dialog before user selects an action. + /// + public void Dismiss() + { + try + { + m_nativeDialog.Dismiss(); + + Destroy(gameObject); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + private void SetTitleInternal(string value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Title value is null."); + return; + } + + try + { + m_nativeDialog.SetTitle(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + private void SetMessageInternal(string value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Message value is null."); + return; + } + + try + { + m_nativeDialog.SetMessage(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Event callback methods + + private void HandleButtonClickInternalCallback(int selectedButtonIndex) + { + // invoke selected button callback + var onClickCallback = m_buttonActions[selectedButtonIndex].onClick; + CallbackDispatcher.InvokeOnMainThread(onClickCallback); + + // hide dialog + Dismiss(); + } + + #endregion + + #region Nested types + + private class ButtonAction + { + public string title; + + public Callback onClick; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialog.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialog.cs.meta new file mode 100644 index 00000000..84cd7acd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialog.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 23cd32dfbfb88474393ecb4699005393 +timeCreated: 1547453620 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogBuilder.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogBuilder.cs new file mode 100644 index 00000000..201f0790 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogBuilder.cs @@ -0,0 +1,122 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Builder class for objects. Provides a convenient way to set the various fields of a . + /// + /// + /// The following code example shows how to configure and present an alert dialog using builder. + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// public void Start() + /// { + /// AlertDialog newDialog = new Builder() + /// .SetTitle(title); + /// .SetMessage(message); + /// .AddButton(button, OnAlertButtonClicked); + /// .Build(); + /// newDialog.Show(); + /// } + /// + /// private void OnAlertButtonClicked() + /// { + /// // add your code + /// } + /// } + /// + /// + public class AlertDialogBuilder + { + #region Fields + + private AlertDialog m_alertDialog; + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// The alert style to be used. + public AlertDialogBuilder(AlertDialogStyle alertStyle = AlertDialogStyle.Default) + { + // create new instance + m_alertDialog = AlertDialog.CreateInstance(alertStyle); + } + + #endregion + + #region Public methods + + /// + /// Sets the title of the alert. + /// + /// The title of the alert. + public AlertDialogBuilder SetTitle(string value) + { + m_alertDialog.Title = value; + + return this; + } + + /// + /// Sets the message of the alert. + /// + /// The descriptive text that provides more details about the reason for the alert. + public AlertDialogBuilder SetMessage(string value) + { + m_alertDialog.Message = value; + + return this; + } + + /// + /// Adds an action button to the alert. Here, the default style is used. + /// + /// The title of the button. + /// The method to execute when the user selects this button. + public AlertDialogBuilder AddButton(string title, Callback callback) + { + m_alertDialog.AddButton(title, callback); + + return this; + } + + /// + /// Adds action button to the alert. This style type indicates the action cancels the operation and leaves things unchanged. + /// + /// The title of the button. + /// The method to execute when the user selects this button. + public AlertDialogBuilder AddCancelButton(string title, Callback callback) + { + m_alertDialog.AddCancelButton(title, callback); + + return this; + } + + /// + /// Combines all of the options that have been set and return a new object. + /// + /// The build. + public AlertDialog Build() + { + try + { + return m_alertDialog; + } + finally + { + m_alertDialog = null; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogBuilder.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogBuilder.cs.meta new file mode 100644 index 00000000..1192260b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 461266b5977b043f3928a0d435aeba68 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogStyle.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogStyle.cs new file mode 100644 index 00000000..10c4fdb2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogStyle.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// An enumeration for the available alert dialog styles. + /// + public enum AlertDialogStyle + { + /// An overlay alert dialog is displayed. + Default, + + /// An action sheet style is used to display alert. (iOS feature) + ActionSheet, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogStyle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogStyle.cs.meta new file mode 100644 index 00000000..60849c5d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/AlertDialogStyle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 67b590bef29014bbb9ff34e87021cac5 +timeCreated: 1576912639 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePicker.cs new file mode 100644 index 00000000..28b90c35 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePicker.cs @@ -0,0 +1,405 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.NativeUICore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access device's date picker view. + /// + /// @ingroup NativeUI + public sealed class DatePicker : NativeFeatureBehaviour + { + #region Fields + + private INativeDatePickerInterface m_nativeInterface = null; + + private DateTimeKind m_kind; + + private DateTime? m_minDate; + + private DateTime? m_maxDate; + + private DateTime? m_initialDate; + + private DateTime? m_selectedDate; + + #endregion + + #region Properties + + public DateTime? SelectedDate { get { return m_selectedDate; } } + + #endregion + + #region Delegates + + public delegate void ValueChangeCallback(DateTime? date); + + #endregion + + #region Events + + /// + /// Event triggered when the selected date value changes. + /// + public ValueChangeCallback OnValueChange = delegate { }; + + /// + /// Event triggered when the date picker is closed. + /// + public Callback OnCloseCallback = delegate { }; + + #endregion + + #region Static methods + + /// + /// Creates a new instance of the class. + /// + /// The picker mode to be used. + public static DatePicker CreateInstance(DatePickerMode mode = DatePickerMode.DateAndTime) + { + return CreateInstanceInternal("DatePicker", mode); + } + + #endregion + + #region Lifecycle methods + + protected override void AwakeInternal(object[] args) + { + base.AwakeInternal(args); + + // configure component + var mode = (args == null) ? DatePickerMode.DateAndTime : (DatePickerMode)args[0]; + m_nativeInterface = NativeUI.NativeInterface.CreateDatePicker(mode); + + // set default properties + SetKind(DateTimeKind.Local); + OnCloseCallback = null; + + // register for events + m_nativeInterface.OnClose += HandleCloseInternalCallback; + } + + protected override void DestroyInternal() + { + base.DestroyInternal(); + + // unregister from event + m_nativeInterface.OnClose -= HandleCloseInternalCallback; + + // reset interface properties + m_nativeInterface.Dispose(); + } + + #endregion + + #region Behaviour methods + + public override bool IsAvailable() + { + return NativeUI.NativeInterface.IsAvailable; + } + + protected override string GetFeatureName() + { + return "Date Picker"; + } + + #endregion + + #region Getter methods + + /// + /// Gets the DateTimeKind for the DatePicker. + /// + /// The DateTimeKind. + public DateTimeKind GetKind() + { + return m_kind; + } + + /// + /// Gets the DatePickerMode for the DatePicker. + /// + /// The DatePickerMode. + public DatePickerMode GetMode() + { + return m_nativeInterface.Mode; + } + + /// + /// Gets the minimum date that can be selected. + /// + /// The minimum date. + public DateTime? GetMinimumDate() + { + return m_minDate; + } + + /// + /// Gets the maximum date that can be selected. + /// + /// The maximum date. + public DateTime? GetMaximumDate() + { + return m_maxDate; + } + + /// + /// Gets the initial date set for the DatePicker. + /// + /// The initial date. + public DateTime? GetInitialDate() + { + return m_initialDate; + } + + #endregion + + #region Setter methods + + /// + /// Sets the DateTimeKind for the DatePicker. + /// + /// The DateTimeKind to set. + /// The DatePicker instance. + public DatePicker SetKind(DateTimeKind value) + { + // cache local value + m_kind = value; + + try + { + // update native interface + m_nativeInterface.SetKind(value); + + // reset all values to match specified format + if (m_minDate != null) + { + SetMinimumDate(m_minDate); + } + if (m_initialDate != null) + { + SetInitialDate(m_initialDate); + } + if (m_maxDate != null) + { + SetMaximumDate(m_maxDate); + } + if (m_selectedDate != null) + { + SetSelectedDate(m_selectedDate); + } + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + + return this; + } + + /// + /// Sets the minimum date that can be selected. + /// + /// The minimum date to set. + /// The DatePicker instance. + public DatePicker SetMinimumDate(DateTime? value) + { + // save value + m_minDate = ChangeDateTimeToSuitableFormat(value); + + try + { + // update native interface + m_nativeInterface.SetMinimumDate(m_minDate); + + // reset dependent fields + SetInitialDate(m_initialDate); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + + return this; + } + + /// + /// Sets the maximum date that can be selected. + /// + /// The maximum date to set. + /// The DatePicker instance. + public DatePicker SetMaximumDate(DateTime? value) + { + // save value + m_maxDate = ChangeDateTimeToSuitableFormat(value); + + try + { + // update native interface + m_nativeInterface.SetMaximumDate(m_maxDate); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + + return this; + } + + /// + /// Sets the initial date that the picker will show. + /// + /// The initial date to set. + /// The DatePicker instance. + public DatePicker SetInitialDate(DateTime? value) + { + // The initial date is the date that is shown when the picker is first presented, but it is not the selected date. + // save value + m_initialDate = ChangeDateTimeToSuitableFormat(value); + if (m_minDate != null) + { + if ((m_initialDate == null) || (m_initialDate < m_minDate)) + { + m_initialDate = m_minDate; + } + } + + try + { + // update native interface + m_nativeInterface.SetInitialDate(m_initialDate); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + + // store modified value + if (m_selectedDate == null) + { + SetSelectedDate(m_initialDate); + } + + return this; + } + + private void SetSelectedDate(DateTime? value) + { + // update local copy + if (value != null) + { + m_selectedDate = ChangeDateTimeToSuitableFormat(value); + OnValueChange(value.Value); + } + } + + public DatePicker SetOnValueChange(ValueChangeCallback callback) + { + // validate arguments + if (null == callback) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Callback is null."); + return this; + } + + // save callback reference + OnValueChange = callback; + + return this; + } + + public DatePicker SetOnCloseCallback(Callback callback) + { + // validate arguments + if (null == callback) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Callback is null."); + return this; + } + + // save callback reference + OnCloseCallback = callback; + + return this; + } + + /// + /// Shows the date picker dialog to the user. + /// + public void Show() + { + try + { + // present view + m_nativeInterface.Show(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + private void RegisterForEvents() + { + m_nativeInterface.OnClose += HandleCloseInternalCallback; + } + + private void UnregisterFromEvents() + { + m_nativeInterface.OnClose -= HandleCloseInternalCallback; + } + + // boundary case to ensure that all values are in same format + private DateTime? ChangeDateTimeToSuitableFormat(DateTime? dateTime) + { + if (dateTime != null) + { + var value = dateTime.Value; + if (value.Kind != m_kind) + { + if (DateTimeKind.Local == m_kind) + { + return value.ToLocalTime(); + } + else if (DateTimeKind.Utc == m_kind) + { + return value.ToUniversalTime(); + } + } + } + + return dateTime; + } + + #endregion + + #region Event callback methods + + private void HandleCloseInternalCallback(DateTime? selectedDate, Error error) + { + SetSelectedDate(selectedDate); + + // send result to caller object + var result = new DatePickerResult(m_selectedDate); + CallbackDispatcher.InvokeOnMainThread(OnCloseCallback, result); + + // release + Destroy(gameObject); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePicker.cs.meta new file mode 100644 index 00000000..fcf0a362 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePicker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4e2d81dbf73f94ea889d5cc9a5bf5ace +timeCreated: 1576473986 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerMode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerMode.cs new file mode 100644 index 00000000..df310fd4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerMode.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Specifies the mode of the date picker to be displayed. + /// + public enum DatePickerMode + { + /// + /// The date picker should show date only. + /// + Date, + + /// + /// The date picker should show time only. + /// + Time, + + /// + /// The date picker should show date and time. + /// + DateAndTime, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerMode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerMode.cs.meta new file mode 100644 index 00000000..4efb684c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1ea40b2599b64ba0a29e60658fef449 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerResult.cs new file mode 100644 index 00000000..1907508d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerResult.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when is invoked. + /// + /// @ingroup NativeUI + public class DatePickerResult + { + #region Properties + + /// + /// Gets the selected date from the date picker. + /// + /// The selected date, or null if no date was selected. + public DateTime? SelectedDate { get; private set; } + + #endregion + + #region Constructors + + internal DatePickerResult(DateTime? selectedDate) + { + // Set properties + SelectedDate = selectedDate; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerResult.cs.meta new file mode 100644 index 00000000..a205baef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/DatePickerResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ecd40149f5d824015a15ec74d1117477 +timeCreated: 1576473986 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/Delegates.cs new file mode 100644 index 00000000..66267238 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/Delegates.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public delegate void AlertButtonClickInternalCallback(int selectedButtonIndex); + + public delegate void DatePickerClosedInternalCallback(DateTime? selectedDate, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/Delegates.cs.meta new file mode 100644 index 00000000..a3aba3ed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d6058caacee9442aaaee69f12fd09274 +timeCreated: 1554441609 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeAlertDialogInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeAlertDialogInterface.cs new file mode 100644 index 00000000..1b98ef5e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeAlertDialogInterface.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public interface INativeAlertDialogInterface : INativeObject + { + #region Events + + event AlertButtonClickInternalCallback OnButtonClick; + + #endregion + + #region Methods + + // setters and getter methods + void SetTitle(string value); + + string GetTitle(); + + void SetMessage(string value); + + string GetMessage(); + + // action methods + void AddButton(string text, bool isCancelType); + + // presentation methods + void Show(); + + void Dismiss(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeAlertDialogInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeAlertDialogInterface.cs.meta new file mode 100644 index 00000000..2de46f5b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeAlertDialogInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b91a3cd204b834949bf0f47b602f5a4a +timeCreated: 1578301249 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeDatePickerInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeDatePickerInterface.cs new file mode 100644 index 00000000..c50dd71a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeDatePickerInterface.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public interface INativeDatePickerInterface : INativeObject + { + #region Properties + + DatePickerMode Mode { get; } + + #endregion + + #region Events + + event DatePickerClosedInternalCallback OnClose; + + #endregion + + #region Methods + + void SetKind(DateTimeKind value); + + void SetMinimumDate(DateTime? value); + + void SetMaximumDate(DateTime? value); + + void SetInitialDate(DateTime? value); + + void Show(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeDatePickerInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeDatePickerInterface.cs.meta new file mode 100644 index 00000000..3f781f92 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeDatePickerInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fedc68318032645a596494476162d7c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeUIInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeUIInterface.cs new file mode 100644 index 00000000..4ef42568 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeUIInterface.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public interface INativeUIInterface : INativeFeatureInterface + { + #region Methods + + INativeAlertDialogInterface CreateAlertDialog(AlertDialogStyle style); + + INativeDatePickerInterface CreateDatePicker(DatePickerMode mode); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeUIInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeUIInterface.cs.meta new file mode 100644 index 00000000..7f3c34c5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/INativeUIInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4f0245fc18e344ca3ac597b06b2e8e14 +timeCreated: 1577084744 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/IUnityUIDatePicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/IUnityUIDatePicker.cs new file mode 100644 index 00000000..818d3ab3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/IUnityUIDatePicker.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public interface IUnityUIDatePicker + { + #region Properties + + DatePickerMode Mode { get; set; } + + DateTime? MinDate { get; set; } + + DateTime? MaxDate { get; set; } + + DateTime? InitialDate { get; set; } + + DateTimeKind Kind { get; set; } + + DateTime SelectedDate { get; set; } + + #endregion + + #region Methods + + void Show(); + + void Dismiss(); + + void SetCompletionCallback(EventCallback callback); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/IUnityUIDatePicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/IUnityUIDatePicker.cs.meta new file mode 100644 index 00000000..fcef507d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/IUnityUIDatePicker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2f8a18bcfcd7344a78198d14055b31d0 +timeCreated: 1596368395 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeAlertDialogInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeAlertDialogInterfaceBase.cs new file mode 100644 index 00000000..efae6a03 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeAlertDialogInterfaceBase.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public abstract class NativeAlertDialogInterfaceBase : NativeObjectBase, INativeAlertDialogInterface + { + #region INativeAlertDialog implementation + + public event AlertButtonClickInternalCallback OnButtonClick; + + public abstract void SetTitle(string value); + + public abstract string GetTitle(); + + public abstract void SetMessage(string value); + + public abstract string GetMessage(); + + public abstract void AddButton(string text, bool isCancelType); + + public abstract void Show(); + + public abstract void Dismiss(); + + #endregion + + #region Private methods + + protected void SendButtonClickEvent(int selectedButtonIndex) + { + CallbackDispatcher.InvokeOnMainThread(() => OnButtonClick(selectedButtonIndex)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeAlertDialogInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeAlertDialogInterfaceBase.cs.meta new file mode 100644 index 00000000..6cf69ebe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeAlertDialogInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 905ddc142ce7649feafda8da57931b92 +timeCreated: 1578301130 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeDatePickerInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeDatePickerInterfaceBase.cs new file mode 100644 index 00000000..7af3e573 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeDatePickerInterfaceBase.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public abstract class NativeDatePickerInterfaceBase : NativeObjectBase, INativeDatePickerInterface + { + #region Properties + + public DatePickerMode Mode { get; private set; } + + #endregion + + #region Constructors + + protected NativeDatePickerInterfaceBase(DatePickerMode mode) + { + // set properties + Mode = mode; + } + + #endregion + + #region INativeDatePickerInterface implementation + + public event DatePickerClosedInternalCallback OnClose; + + public abstract void SetKind(DateTimeKind value); + + public abstract void SetMinimumDate(DateTime? value); + + public abstract void SetMaximumDate(DateTime? value); + + public abstract void SetInitialDate(DateTime? value); + + public abstract void Show(); + + #endregion + + #region Private methods + + protected void SendCloseEvent(DateTime? selectedDate, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnClose(selectedDate, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeDatePickerInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeDatePickerInterfaceBase.cs.meta new file mode 100644 index 00000000..788ae831 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeDatePickerInterfaceBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4429d77f3c5048c388047a60bdfbe71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUI.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUI.cs new file mode 100644 index 00000000..b25873f5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUI.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.NativeUICore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + public static class NativeUI + { + #region Static fields + + [ClearOnReload] + private static INativeUIInterface s_nativeInterface = null; + + #endregion + + #region Static properties + + public static NativeUIUnitySettings UnitySettings { get; private set; } + + public static INativeUIInterface NativeInterface => s_nativeInterface; + + #endregion + + #region Static methods + + public static void Initialize(NativeUIUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Set properties + UnitySettings = settings; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.NativeUI, true); + } + + /// + /// Creates a new alert dialog with specified values. + /// + /// The title of the alert. + /// The descriptive text that provides more details. + /// The title of the button. + /// The method to execute when the user selects preferred action button. + /// The title of the cancel button. + /// The method to execute when the user selects cancel button. + public static void ShowAlertDialog(string title, string message, string preferredActionLabel, Callback preferredActionCallback = null, string cancelActionLabel = null, Callback cancelActionCallback = null) + { + var newInstance = AlertDialog.CreateInstance(); + newInstance.Title = title; + newInstance.Message = message; + if (preferredActionLabel != null) + { + newInstance.AddButton(preferredActionLabel, preferredActionCallback); + } + if (cancelActionLabel != null) + { + newInstance.AddCancelButton(cancelActionLabel, cancelActionCallback); + } + newInstance.Show(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUI.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUI.cs.meta new file mode 100644 index 00000000..1686c4c7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7e957182696c24932bebee9077305f2f +timeCreated: 1577433824 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUIInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUIInterfaceBase.cs new file mode 100644 index 00000000..7fcb4d45 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUIInterfaceBase.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public abstract class NativeUIInterfaceBase : NativeFeatureInterfaceBase, INativeUIInterface + { + #region Private methods + + protected NativeUIInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeUIInterface implementation + + public abstract INativeAlertDialogInterface CreateAlertDialog(AlertDialogStyle style); + + public abstract INativeDatePickerInterface CreateDatePicker(DatePickerMode mode); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUIInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUIInterfaceBase.cs.meta new file mode 100644 index 00000000..d98820d5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NativeUIInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6f82fe0ae458e490090a08c610fa802b +timeCreated: 1577084744 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NullDatePickerInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NullDatePickerInterface.cs new file mode 100644 index 00000000..0d06005c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NullDatePickerInterface.cs @@ -0,0 +1,90 @@ +using System; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using UnityObject = UnityEngine.Object; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public class NullDatePickerInterface : NativeDatePickerInterfaceBase + { + #region Fields + + private DateTime? m_minDate; + + private DateTime? m_maxDate; + + private DateTime? m_initialDate; + + private DateTimeKind m_kind; + + #endregion + + #region Constructors + + public NullDatePickerInterface(DatePickerMode mode) + : base(mode) + { + // set properties + m_initialDate = null; + m_maxDate = null; + m_kind = DateTimeKind.Utc; + } + + ~NullDatePickerInterface() + { + Dispose(false); + } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("Date Picker"); + } + + #endregion + + #region Base class implementation + + public override void SetKind(DateTimeKind value) + { + m_kind = value; + } + + public override void SetMinimumDate(DateTime? value) + { + m_minDate = value; + } + + public override void SetMaximumDate(DateTime? value) + { + m_maxDate = value; + } + + public override void SetInitialDate(DateTime? value) + { + m_initialDate = value; + } + + public override void Show() + { + LogNotSupported(); + SendCloseEvent(null, new Error("Feature not supported on this platform")); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + base.Dispose(disposing); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NullDatePickerInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NullDatePickerInterface.cs.meta new file mode 100644 index 00000000..71f0c484 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/NullDatePickerInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1a1b037993feb456096807efabea57e1 +timeCreated: 1576915906 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIAlertDialogInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIAlertDialogInterface.cs new file mode 100644 index 00000000..58ac0082 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIAlertDialogInterface.cs @@ -0,0 +1,110 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.UnityUI; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public sealed class UnityUIAlertDialogInterface : NativeAlertDialogInterfaceBase + { + #region Fields + + private UnityUIAlertDialog m_unityDialog; + + #endregion + + #region Constructors + + public UnityUIAlertDialogInterface(UnityUIAlertDialog dialogPrefab, RectTransform parent) + { + // check argument + Assert.IsArgNotNull(dialogPrefab, "dialogPrefab"); + Assert.IsArgNotNull(parent, "parent"); + + // create object + m_unityDialog = Object.Instantiate(dialogPrefab, parent, false); + + // set default properties + m_unityDialog.Title = string.Empty; + m_unityDialog.Message = string.Empty; + m_unityDialog.SetCompletionCallback(SendButtonClickEvent); + } + + ~UnityUIAlertDialogInterface() + { + Dispose(false); + } + + #endregion + + #region Base methods + + public override void SetTitle(string value) + { + m_unityDialog.Title = value; + } + + public override string GetTitle() + { + return m_unityDialog.Title; + } + + public override void SetMessage(string value) + { + m_unityDialog.Message = value; + } + + public override string GetMessage() + { + return m_unityDialog.Message; + } + + public override void AddButton(string text, bool isCancelType) + { + m_unityDialog.AddActionButton(text); + } + + public override void Show() + { + m_unityDialog.Show(); + } + + public override void Dismiss() + { + m_unityDialog.Dismiss(); + } + + #endregion + + #region Private methods + + private void DestroyDialog() + { + // kill gameobject + if (m_unityDialog) + { + Object.Destroy(m_unityDialog.gameObject); + m_unityDialog = null; + } + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + if (disposing) + { + DestroyDialog(); + } + + base.Dispose(disposing); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIAlertDialogInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIAlertDialogInterface.cs.meta new file mode 100644 index 00000000..523d6982 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIAlertDialogInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f020c6686a52c459eafe2f257d94bae8 +timeCreated: 1578301130 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePicker.cs new file mode 100644 index 00000000..84004e08 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePicker.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public abstract class UnityUIDatePicker : MonoBehaviour, IUnityUIDatePicker + { + #region Fields + + private EventCallback m_callback; + + #endregion + + #region Properties + + public bool IsShowing { get; private set; } + + #endregion + + #region Static methods + + protected DateTime GetCurrentDateTime(DateTimeKind kind) + { + return ((kind == DateTimeKind.Local) ? DateTime.Now : DateTime.UtcNow); + } + + #endregion + + #region Unity methods + + protected virtual void Awake() + { } + + protected virtual void Start() + { + if (!IsShowing) + { + gameObject.SetActive(false); + } + } + + #endregion + + #region Public methods + + public DatePickerMode Mode { get; set; } + + public DateTime? MinDate { get; set; } + + public DateTime? MaxDate { get; set; } + + public DateTime? InitialDate { get; set; } + + public DateTimeKind Kind { get; set; } + + public DateTime SelectedDate { get; set; } + + public virtual void Show() + { + // update visibility status + IsShowing = true; + + // update object state + if (!gameObject.activeSelf) + { + gameObject.SetActive(true); + } + } + + public virtual void Dismiss() + { + // send result + SendCompletionResult(null, new Error("User cancelled.")); + + DismissInternal(); + } + + public void SetCompletionCallback(EventCallback callback) + { + // store reference + m_callback = callback; + } + + #endregion + + #region Private methods + + protected void DismissInternal() + { + // update visibility status + IsShowing = false; + + // destroy object + gameObject.SetActive(false); + Destroy(gameObject); + } + + protected void SendCompletionResult(DateTime? result, Error error) + { + CallbackDispatcher.InvokeOnMainThread(m_callback, result, error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePicker.cs.meta new file mode 100644 index 00000000..c1107b5d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePicker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dc7a258ee1c3748389e6a1d369df5d72 +timeCreated: 1596309993 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePickerInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePickerInterface.cs new file mode 100644 index 00000000..c14ff528 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePickerInterface.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +using UnityObject = UnityEngine.Object; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public class UnityUIDatePickerInterface : NativeDatePickerInterfaceBase + { + #region Fields + + private DateTime? m_minDate; + + private DateTime? m_maxDate; + + private DateTime? m_initialDate; + + private DateTimeKind m_kind; + + private UnityUIDatePicker m_datePicker; + + private RectTransform m_parent; + + private UnityUIDatePicker m_datePickerPrefab; + + #endregion + + #region Constructors + + public UnityUIDatePickerInterface(DatePickerMode mode, UnityUIDatePicker datePickerPrefab, RectTransform parent) + : base(mode) + { + // check arguments + Assert.IsArgNotNull(datePickerPrefab, "datePickerPrefab"); + Assert.IsArgNotNull(parent, "parent"); + + // set properties + m_initialDate = null; + m_maxDate = null; + m_kind = DateTimeKind.Local; + m_datePickerPrefab = datePickerPrefab; + m_parent = parent; + } + + ~UnityUIDatePickerInterface() + { + Dispose(false); + } + + #endregion + + #region Base class implementation + + public override void SetKind(DateTimeKind value) + { + m_kind = value; + } + + public override void SetMinimumDate(DateTime? value) + { + m_minDate = value; + + // set default initial date + if (value != null) + { + if ((m_initialDate == null) || (m_initialDate < m_minDate)) + { + m_initialDate = (m_minDate != null) ? m_minDate : DateTime.Now; + } + } + } + + public override void SetMaximumDate(DateTime? value) + { + m_maxDate = value; + } + + public override void SetInitialDate(DateTime? value) + { + m_initialDate = value ?? DateTime.Now; + } + + public override void Show() + { + // check whether the dialog is already presented + if (m_datePicker != null) + { + return; + } + + // create object using prefab + m_datePicker = UnityObject.Instantiate(m_datePickerPrefab, m_parent, false); + m_datePicker.Mode = Mode; + m_datePicker.MinDate = m_minDate; + m_datePicker.MaxDate = m_maxDate; + m_datePicker.InitialDate = m_initialDate; + m_datePicker.Kind = m_kind; + m_datePicker.SetCompletionCallback(HandleCompletionCallback); + m_datePicker.Show(); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + if (disposing) + { + // destroy gameobject + if (m_datePicker != null) + { + UnityObject.Destroy(m_datePicker.gameObject); + } + } + + base.Dispose(disposing); + } + + #endregion + + #region Private methods + + private void HandleCompletionCallback(DateTime? result, Error error) + { + SendCloseEvent(result, error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePickerInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePickerInterface.cs.meta new file mode 100644 index 00000000..950cae15 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIDatePickerInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3991a0f69546484796a0fd398048fc0 +timeCreated: 1578295021 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIInterface.cs new file mode 100644 index 00000000..cfb9b951 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIInterface.cs @@ -0,0 +1,89 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins.UnityUI; + +namespace VoxelBusters.EssentialKit.NativeUICore +{ + public sealed class UnityUIInterface : NativeUIInterfaceBase + { + #region Constructors + + public UnityUIInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override INativeAlertDialogInterface CreateAlertDialog(AlertDialogStyle style) + { + var collection = GetCustomUICollection(); + + // create renderer + CreateRenderIfRequired(collection); + + // create dialog + var parent = (RectTransform)UnityUIRenderer.ActiveRenderer.transform; + return new UnityUIAlertDialogInterface(collection.AlertDialogPrefab, parent); + } + + public override INativeDatePickerInterface CreateDatePicker(DatePickerMode mode) + { + return new NullDatePickerInterface(mode); + /*var collection = GetCustomUICollection(); + + // create renderer + CreateRenderIfRequired(collection); + + var parent = (RectTransform)UnityUIRenderer.ActiveRenderer.transform; + return new UnityUIDatePickerInterface(mode, collection.DatePickerPrefab, parent);*/ + } + + #endregion + + #region Static methods + + private static NativeUIUnitySettings.UnityUICollection GetCustomUICollection() + { + return NativeUI.UnitySettings.CustomUICollection; + } + + private static void CreateRenderIfRequired(NativeUIUnitySettings.UnityUICollection uiCollection) + { + // find renderer as specified in the settings + int targetDisplayOrder = uiCollection.RendererPrefab.DisplayOrder; + if (UnityUIRenderer.ActiveRenderer != null && UnityUIRenderer.ActiveRenderer.DisplayOrder == targetDisplayOrder) + { + return; + } + + // find whether scene has required renderer + UnityUIRenderer targetRenderer = null; + var renderers = Object.FindObjectsByType(FindObjectsSortMode.None); + if (renderers.Length > 0) + { + foreach (var current in renderers) + { + if (current.DisplayOrder == targetDisplayOrder) + { + targetRenderer = current; + break; + } + } + } + + // create object using prefab + if (targetRenderer == null) + { + targetRenderer = Object.Instantiate(uiCollection.RendererPrefab); + } + + // set value + UnityUIRenderer.ActiveRenderer = targetRenderer; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIInterface.cs.meta new file mode 100644 index 00000000..3c3df697 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NativeUI/UnityUIInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 736e8a8ddeb0144cfbe7ad882fe481c9 +timeCreated: 1577085780 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices.meta new file mode 100644 index 00000000..0ed27e0b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6313a4dbba2b246ed917515db3281cff +folderAsset: yes +timeCreated: 1551083436 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/Delegates.cs new file mode 100644 index 00000000..150e658b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/Delegates.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore +{ + public delegate void InternetConnectivityChangeInternalCallback(bool isConnected); + + public delegate void HostReachabilityChangeInternalCallback(bool isReachable); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/Delegates.cs.meta new file mode 100644 index 00000000..5a3066bd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7df79146a9977447890ee84dafc1e3dd +timeCreated: 1554441715 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/INativeNetworkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/INativeNetworkServicesInterface.cs new file mode 100644 index 00000000..2a89d5b4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/INativeNetworkServicesInterface.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore +{ + public interface INativeNetworkServicesInterface : INativeFeatureInterface + { + #region Events + + event InternetConnectivityChangeInternalCallback OnInternetConnectivityChange; + + event HostReachabilityChangeInternalCallback OnHostReachabilityChange; + + #endregion + + #region Methods + + void StartNotifier(); + + void StopNotifier(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/INativeNetworkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/INativeNetworkServicesInterface.cs.meta new file mode 100644 index 00000000..5d06f3ad --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/INativeNetworkServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: afd43129dc1c3410e9fe92f06d99161e +timeCreated: 1551083565 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NativeNetworkServicesInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NativeNetworkServicesInterfaceBase.cs new file mode 100644 index 00000000..061ede3d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NativeNetworkServicesInterfaceBase.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore +{ + public abstract class NativeNetworkServicesInterfaceBase : NativeFeatureInterfaceBase, INativeNetworkServicesInterface + { + #region Constructors + + protected NativeNetworkServicesInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeNetworkServicesInterface implementation + + public event InternetConnectivityChangeInternalCallback OnInternetConnectivityChange; + + public event HostReachabilityChangeInternalCallback OnHostReachabilityChange; + + public abstract void StartNotifier(); + + public abstract void StopNotifier(); + + #endregion + + #region Private methods + + protected void SendInternetConnectivityChangeEvent(bool isConnected) + { + CallbackDispatcher.InvokeOnMainThread(() => OnInternetConnectivityChange(isConnected)); + } + + protected void SendHostReachabilityChangeEvent(bool isReachable) + { + CallbackDispatcher.InvokeOnMainThread(() => OnHostReachabilityChange(isReachable)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NativeNetworkServicesInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NativeNetworkServicesInterfaceBase.cs.meta new file mode 100644 index 00000000..e6431e3e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NativeNetworkServicesInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f2173c1c77054ca7b392bbf3f113d64 +timeCreated: 1551084167 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServices.cs new file mode 100644 index 00000000..62b91b26 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServices.cs @@ -0,0 +1,239 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.NetworkServicesCore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup NetworkServices Network Services + * @brief Provides cross-platform interface to check network connectivity status. + */ + + /// + /// Provides cross-platform interface to check network connectivity status. + /// + /// + /// The following example illustrates how to use network service related events. + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// private void OnEnable() + /// { + /// // registering for event + /// NetworkServices.OnInternetConnectivityChange += OnInternetConnectivityChange; + /// NetworkServices.OnHostReachabilityChange += OnHostReachabilityChange; + /// } + /// + /// private void OnDisable() + /// { + /// // unregistering event + /// NetworkServices.OnInternetConnectivityChange -= OnInternetConnectivityChange; + /// NetworkServices.OnHostReachabilityChange -= OnHostReachabilityChange; + /// } + /// + /// private void OnInternetConnectivityChange(NetworkServicesInternetConnectivityStatus data) + /// { + /// if (data.IsConnected) + /// { + /// // notify user that he/she is online + /// } + /// else + /// { + /// // notify user that he/she is offline + /// } + /// } + /// + /// private void OnHostReachabilityChange(NetworkServicesHostReachabilityStatus data) + /// { + /// Debug.Log("Host connectivity status: " + data.IsReachable); + /// } + /// } + /// + /// + /// @ingroup NetworkServices + public static class NetworkServices + { + #region Static fields + + [ClearOnReload] + private static INativeNetworkServicesInterface s_nativeInterface = null; + + #endregion + + #region Static properties + + public static NetworkServicesUnitySettings UnitySettings { get; private set; } + + /// + /// A boolean value that is used to determine internet connectivity status. + /// + /// true if connected to network; otherwise, false. + public static bool IsInternetActive { get; private set; } + + /// + /// A boolean value that is used to determine whether host is reachable or not. + /// + /// true if is host reachable; otherwise, false. + public static bool IsHostReachable { get; private set; } + + /// + /// A boolean value that is used to determine whether notifier is running or not. + /// + /// true if notifier is active; otherwise, false. + public static bool IsNotifierActive { get; private set; } + + #endregion + + #region Static events + + /// + /// Event that will be called whenever network state changes. + /// + public static event Callback OnInternetConnectivityChange; + + /// + /// Event that will be called whenever host reachability state changes. + /// + public static event Callback OnHostReachabilityChange; + + #endregion + + #region Public methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + /// @name Advanced Usage + /// @{ + + /// + /// Initialize the NetworkServices module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + /// The settings to be used for initialization. + /// + /// + /// The settings configure the behavior of the NetworkServices module. + /// + /// + public static void Initialize(NetworkServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Reset event properties + OnInternetConnectivityChange = null; + OnHostReachabilityChange = null; + + // Set default properties + UnitySettings = settings; + IsInternetActive = true; + IsHostReachable = true; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.NetworkServices, true); + + RegisterForEvents(); + if (UnitySettings.IsEnabled && UnitySettings.AutoStartNotifier) + { + SurrogateCoroutine.WaitUntilAndInvoke(new WaitForFixedUpdate(), StartNotifier); + } + } + /// @} + + /// + /// Starts the notifier. + /// + public static void StartNotifier() + { + try + { + // check current status and stop the existing notifier instance if required + if (IsNotifierActive) + { + StopNotifier(); + } + + // make request + IsNotifierActive = true; + s_nativeInterface.StartNotifier(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Stops the notifier. + /// + public static void StopNotifier() + { + try + { + // check whether notifier is running + if (!IsNotifierActive) + { + return; + } + + // make request + IsNotifierActive = false; + s_nativeInterface.StopNotifier(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + private static void RegisterForEvents() + { + s_nativeInterface.OnInternetConnectivityChange += HandleInternetConnectivityChangeInternalCallback; + s_nativeInterface.OnHostReachabilityChange += HandleHostReachabilityChangeInternalCallback; + } + + private static void UnregisterFromEvents() + { + s_nativeInterface.OnInternetConnectivityChange -= HandleInternetConnectivityChangeInternalCallback; + s_nativeInterface.OnHostReachabilityChange -= HandleHostReachabilityChangeInternalCallback; + } + + #endregion + + #region Event callback methods + + private static void HandleInternetConnectivityChangeInternalCallback(bool isConnected) + { + // Update value + IsInternetActive = isConnected; + + // Notify listeners + var result = new NetworkServicesInternetConnectivityStatusChangeResult(isConnected); + CallbackDispatcher.InvokeOnMainThread(OnInternetConnectivityChange, result); + } + + private static void HandleHostReachabilityChangeInternalCallback(bool isReachable) + { + // Update value + IsHostReachable = isReachable; + + // Notify listeners + var result = new NetworkServicesHostReachabilityStatusChangeResult(isReachable); + CallbackDispatcher.InvokeOnMainThread(OnHostReachabilityChange, result); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServices.cs.meta new file mode 100644 index 00000000..61f63867 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9e2ddfbadf97b4630962b8d3b7bc1379 +timeCreated: 1551083445 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesHostReachabilityStatusChangeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesHostReachabilityStatusChangeResult.cs new file mode 100644 index 00000000..3556a682 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesHostReachabilityStatusChangeResult.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This object contains the information retrieved when event occurs. + /// + /// @ingroup NetworkServices + public class NetworkServicesHostReachabilityStatusChangeResult + { + #region Properties + + /// + /// This boolean value is used to determine whether host is reachable. + /// + /// true if is reachable; otherwise, false. + public bool IsReachable { get; private set; } + + #endregion + + #region Constructors + + internal NetworkServicesHostReachabilityStatusChangeResult(bool isReachable) + { + // Set properties + IsReachable = isReachable; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesHostReachabilityStatusChangeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesHostReachabilityStatusChangeResult.cs.meta new file mode 100644 index 00000000..f9175bac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesHostReachabilityStatusChangeResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 56aa9c90d492745cfbe5753e22dc344f +timeCreated: 1596357594 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesInternetConnectivityStatusChangeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesInternetConnectivityStatusChangeResult.cs new file mode 100644 index 00000000..c44270db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesInternetConnectivityStatusChangeResult.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This interface contains the information retrieved when event occurs. + /// + /// @ingroup NetworkServices + public class NetworkServicesInternetConnectivityStatusChangeResult + { + #region Properties + + /// + /// This boolean value is used to determine whether internet connection is available. + /// + /// true if is connected; otherwise, false. + public bool IsConnected { get; private set; } + + #endregion + + #region Constructors + + internal NetworkServicesInternetConnectivityStatusChangeResult(bool isConnected) + { + // Set properties + IsConnected = isConnected; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesInternetConnectivityStatusChangeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesInternetConnectivityStatusChangeResult.cs.meta new file mode 100644 index 00000000..9f9e2c07 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NetworkServicesInternetConnectivityStatusChangeResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 61c86ce80fb0649e48cbcac7bc86960b +timeCreated: 1596357594 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NullNetworkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NullNetworkServicesInterface.cs new file mode 100644 index 00000000..4a5166d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NullNetworkServicesInterface.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore +{ + internal sealed class NullNetworkServicesInterface : NativeNetworkServicesInterfaceBase, INativeNetworkServicesInterface + { + #region Constructors + + public NullNetworkServicesInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("NetworkServices"); + } + + #endregion + + #region Base class methods + + public override void StartNotifier() + { + LogNotSupported(); + } + + public override void StopNotifier() + { + LogNotSupported(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NullNetworkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NullNetworkServicesInterface.cs.meta new file mode 100644 index 00000000..d74f0153 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/NullNetworkServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 74d90a16d5b3d489198ea3772f78dcb0 +timeCreated: 1562656621 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/UnityNetworkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/UnityNetworkServicesInterface.cs new file mode 100644 index 00000000..9e9e3454 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/UnityNetworkServicesInterface.cs @@ -0,0 +1,140 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore +{ + internal sealed class UnityNetworkServicesInterface : NativeNetworkServicesInterfaceBase, INativeNetworkServicesInterface + { + #region Fields + + [SerializeField] + private IEnumerator m_activeScheduler; + + private bool m_sendEventsOnStart; + + private bool m_isConnected; + + #endregion + + #region Constructors + + public UnityNetworkServicesInterface() + : base(isAvailable: true) + { + // set properties + m_activeScheduler = null; + m_sendEventsOnStart = true; + m_isConnected = true; + } + + #endregion + + #region Base class methods + + public override void StartNotifier() + { + IEnumerator scheduler = StatusCheckScheduler(); + + // use surrogate to run scheduler + SurrogateCoroutine.StartCoroutine(scheduler); + + // cache reference + m_activeScheduler = scheduler; + } + + public override void StopNotifier() + { + SurrogateCoroutine.StopCoroutine(m_activeScheduler); + + // reset property + m_activeScheduler = null; + } + + #endregion + + #region Private methods + + private IEnumerator StatusCheckScheduler() + { + var unitySettings = EssentialKitSettings.Instance.NetworkServicesSettings; + string pingAddress = unitySettings.HostAddress.IpV4; + int maxRetryCount = unitySettings.PingSettings.MaxRetryCount; + float dt = unitySettings.PingSettings.TimeGapBetweenPolling; + float timeOutPeriod = unitySettings.PingSettings.TimeOutPeriod; + bool isConnected = m_isConnected; + + // send initial event + if (m_sendEventsOnStart) + { + m_sendEventsOnStart = false; + OnPingStatusChange(isConnected); + } + + // start ping test + while (true) + { + bool nowConnected = false; +#if !UNITY_WEBGL + for (int iter = 0; iter < maxRetryCount; iter++) + { + Ping ping = new Ping(pingAddress); + float elapsedTime = 0f; + + // ping test + while (!ping.isDone && elapsedTime < timeOutPeriod) + { + elapsedTime += Time.deltaTime; + + // wait until next frame + yield return null; + } + + // check status + if (ping.isDone && (ping.time != -1) && elapsedTime < timeOutPeriod) + { + nowConnected = true; + break; + } + } +#else + yield return null; +#endif + + // update others about state change + if (!isConnected) + { + if (nowConnected) + { + isConnected = true; + OnPingStatusChange(isConnected); + } + } + else + { + if (!nowConnected) + { + isConnected = false; + OnPingStatusChange(isConnected); + } + } + + // wait until we are ready to start next polling + yield return new WaitForSeconds(dt); + } + } + + private void OnPingStatusChange(bool newStatus) + { + // update status flag + m_isConnected = newStatus; + + // send events + SendHostReachabilityChangeEvent(newStatus); + SendInternetConnectivityChangeEvent(newStatus); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/UnityNetworkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/UnityNetworkServicesInterface.cs.meta new file mode 100644 index 00000000..db58e1b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NetworkServices/UnityNetworkServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 23d04b2bae83d40029531dd65af8f828 +timeCreated: 1562655475 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices.meta new file mode 100644 index 00000000..6bb25be7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5cb86613ecf494232913839c7c71936d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/CalendarNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/CalendarNotificationTrigger.cs new file mode 100644 index 00000000..60c8b3e6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/CalendarNotificationTrigger.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// A trigger condition that causes a notification to be delivered at a specific date and time. + /// + /// @ingroup NotificationServices + [Serializable] + public sealed class CalendarNotificationTrigger : INotificationTrigger + { + #region Fields + + [SerializeField] + private DateComponents m_dateComponents; + + [SerializeField] + private bool m_repeats = false; + + private DateTime? m_nextTriggerDate; + + #endregion + + #region Properties + + /// + /// The temporal information to use when constructing the trigger. Provide only the date components that are relevant for your trigger. + /// + public DateComponents DateComponents + { + get + { + return m_dateComponents; + } + } + + /// + /// The next date at which the trigger conditions will be met. + /// + public DateTime? NextTriggerDate + { + get + { + return m_nextTriggerDate; + } + } + + #endregion + + #region Constructors + + /// + /// Creates a new instance of the class. + /// + /// Date components. + /// If set to true repeats. + /// Next trigger date. + public CalendarNotificationTrigger(DateComponents dateComponents, bool repeats, DateTime? nextTriggerDate = null) + { + // set properties + m_dateComponents = dateComponents; + m_repeats = repeats; + m_nextTriggerDate = nextTriggerDate; + } + + #endregion + + #region INotificationTrigger implementation + + public bool Repeats => m_repeats; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/CalendarNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/CalendarNotificationTrigger.cs.meta new file mode 100644 index 00000000..def54b3f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/CalendarNotificationTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3587803fc0582432dbe11af279372c6e +timeCreated: 1578033947 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/Delegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/Delegates.cs new file mode 100644 index 00000000..c9f3863b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/Delegates.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore +{ + public delegate void RequestPermissionInternalCallback(NotificationPermissionStatus permissionStatus, Error error); + + public delegate void GetSettingsInternalCallback(NotificationSettingsInternal settings); + + public delegate void ScheduleNotificationInternalCallback(bool success, Error error); + + public delegate void GetNotificationsInternalCallback(INotification[] notifications, Error error); + + public delegate void NotificationReceivedInternalCallback(INotification notification); + + public delegate void RegisterForPushNotificationsInternalCallback(string deviceToken, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/Delegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/Delegates.cs.meta new file mode 100644 index 00000000..1cf8d59b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/Delegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 00e04307f7a774f9a9d912c55af32dbc +timeCreated: 1554443599 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/IMutableNotification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/IMutableNotification.cs new file mode 100644 index 00000000..05ac968b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/IMutableNotification.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore +{ + public interface IMutableNotification : INotification + { + #region Setter methods + + void SetTitle(string value); + + void SetSubtitle(string value); + + void SetBody(string value); + + void SetBadge(int value); + + void SetUserInfo(IDictionary value); + + void SetSoundFileName(string value); + + void SetIosProperties(NotificationIosProperties value); + + void SetAndroidProperties(NotificationAndroidProperties value); + + void SetTrigger(INotificationTrigger trigger); + + void SetPriority(NotificationPriority value); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/IMutableNotification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/IMutableNotification.cs.meta new file mode 100644 index 00000000..e86d0f22 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/IMutableNotification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a77d45d6a0d284d8b81e5e52fbba5062 +timeCreated: 1578033947 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INativeNotificationCenterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INativeNotificationCenterInterface.cs new file mode 100644 index 00000000..e1f80d2b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INativeNotificationCenterInterface.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore +{ + public interface INativeNotificationCenterInterface : INativeFeatureInterface + { + #region Events + + event NotificationReceivedInternalCallback OnNotificationReceived; + + #endregion + + #region Methods + + // settings methods + void RequestPermission(NotificationPermissionOptions options, RequestPermissionInternalCallback callback); + + void GetSettings(GetSettingsInternalCallback callback); + + // local notification methods + IMutableNotification CreateMutableNotification(string notificationId); + + void ScheduleNotification(INotification notification, ScheduleNotificationInternalCallback callback); + + void GetScheduledNotifications(GetNotificationsInternalCallback callback); + + void CancelScheduledNotification(string notificationId); + + void CancelAllScheduledNotifications(); + + void GetDeliveredNotifications(GetNotificationsInternalCallback callback); + + void RemoveAllDeliveredNotifications(); + + // remote notification methods + void RegisterForPushNotifications(RegisterForPushNotificationsInternalCallback callback); + + void UnregisterForPushNotifications(); + + bool IsRegisteredForPushNotifications(); + + void SetApplicationIconBadgeNumber(int count); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INativeNotificationCenterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INativeNotificationCenterInterface.cs.meta new file mode 100644 index 00000000..d9399e1f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INativeNotificationCenterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d487059b628eb48649a388d4786312ad +timeCreated: 1554525182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotification.cs new file mode 100644 index 00000000..06762a96 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotification.cs @@ -0,0 +1,77 @@ +using System.Collections; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access properties of Notification object. + /// + /// @ingroup NotificationServices + public interface INotification + { + #region Properties + + /// + /// The unique identifier for this notification. + /// + string Id { get; } + + /// + /// The short description of the notification. + /// + string Title { get; } + + /// + /// The secondary description of the notification. + /// + string Subtitle { get; } + + /// + /// The message included in the notification. + /// + string Body { get; } + + /// + /// The number to display as the app’s icon badge. + /// + int Badge { get; } + + /// + /// A dictionary of custom information associated with the notification. + /// + IDictionary UserInfo { get; } + + /// + /// The sound to play when the notification is delivered. + /// + string SoundFileName { get; } + + /// + /// The type of the trigger associated with the notification. + /// + NotificationTriggerType TriggerType { get; } + + /// + /// The trigger associated with the notification. + /// + INotificationTrigger Trigger { get; } + + /// + /// The trigger associated with the notification. + /// + bool IsLaunchNotification { get; } + + /// + /// The object containing properties specific to android. + /// + /// The android properties. + NotificationIosProperties IosProperties { get; } + + /// + /// The object containing properties specific to android. + /// + /// The android properties. + NotificationAndroidProperties AndroidProperties { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotification.cs.meta new file mode 100644 index 00000000..1e6c9930 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: df202bedf7f2d4030af07456daded21e +timeCreated: 1551811050 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotificationTrigger.cs new file mode 100644 index 00000000..d9ae7842 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotificationTrigger.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Base interface for representing an event that triggers the delivery of a notification. + /// + /// @ingroup NotificationServices + public interface INotificationTrigger + { + #region Properties + + /// + /// A Boolean value indicating whether the system reschedules the notification after it is delivered. + /// + bool Repeats { get; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotificationTrigger.cs.meta new file mode 100644 index 00000000..82c3329e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/INotificationTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57a8d2ea4ece7465796e602c63c306c2 +timeCreated: 1551854084 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/LocationNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/LocationNotificationTrigger.cs new file mode 100644 index 00000000..02cac10a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/LocationNotificationTrigger.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// A trigger condition that causes a notification to be delivered when the user's device enters or exits the specified geographic region. + /// + [Serializable] + internal sealed class LocationNotificationTrigger : INotificationTrigger + { + #region Fields + + [SerializeField] + private CircularRegion m_region; + + [SerializeField] + private bool m_notifyOnEntry = false; + + [SerializeField] + private bool m_notifyOnExit = false; + + [SerializeField] + private bool m_repeats = false; + + #endregion + + #region Properties + + /// + /// The region used to determine when the notification is sent. + /// + public CircularRegion Region => m_region; + + /// + /// A Boolean indicating that notifications are generated upon entry into the region. + /// + public bool NotifyOnEntry => m_notifyOnEntry; + + /// + /// A Boolean indicating that notifications are generated upon exit from the region. + /// + public bool NotifyOnExit => m_notifyOnExit; + + #endregion + + #region Constructors + + /// + /// Creates a new instance of the class. + /// + /// Region. + /// If set to true notify on entry. + /// If set to true notify on exit. + /// If set to true repeats. + public LocationNotificationTrigger(CircularRegion region, bool notifyOnEntry, bool notifyOnExit, bool repeats) + { + // set properties + m_region = region; + m_notifyOnEntry = notifyOnEntry; + m_notifyOnExit = notifyOnExit; + m_repeats = repeats; + } + + #endregion + + #region INotificationTrigger implementation + + public bool Repeats => m_repeats; + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/LocationNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/LocationNotificationTrigger.cs.meta new file mode 100644 index 00000000..49da028c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/LocationNotificationTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4f3d60b1f29c344aa9d2ee7980163b6b +timeCreated: 1578033947 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NativeNotificationCenterInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NativeNotificationCenterInterfaceBase.cs new file mode 100644 index 00000000..97179cec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NativeNotificationCenterInterfaceBase.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore +{ + public abstract class NativeNotificationCenterInterfaceBase : NativeFeatureInterfaceBase, INativeNotificationCenterInterface + { + #region Constructors + + protected NativeNotificationCenterInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeNotificationServicesInterface implementation + + public event NotificationReceivedInternalCallback OnNotificationReceived; + + public abstract void RequestPermission(NotificationPermissionOptions options, RequestPermissionInternalCallback callback); + + public abstract void GetSettings(GetSettingsInternalCallback callback); + + public abstract IMutableNotification CreateMutableNotification(string notificationId); + + public abstract void ScheduleNotification(INotification notification, ScheduleNotificationInternalCallback callback); + + public abstract void GetScheduledNotifications(GetNotificationsInternalCallback callback); + + public abstract void CancelScheduledNotification(string notificationId); + + public abstract void CancelAllScheduledNotifications(); + + public abstract void GetDeliveredNotifications(GetNotificationsInternalCallback callback); + + public abstract void RemoveAllDeliveredNotifications(); + + public abstract void RegisterForPushNotifications(RegisterForPushNotificationsInternalCallback callback); + + public abstract void UnregisterForPushNotifications(); + + public abstract bool IsRegisteredForPushNotifications(); + + public abstract void SetApplicationIconBadgeNumber(int count); + + #endregion + + #region Private methods + + protected void SendNotificationReceivedEvent(INotification notification) + { + CallbackDispatcher.InvokeOnMainThread(() => OnNotificationReceived(notification)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NativeNotificationCenterInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NativeNotificationCenterInterfaceBase.cs.meta new file mode 100644 index 00000000..a360a728 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NativeNotificationCenterInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b4f7fd71671a947f09df898ff0d173c5 +timeCreated: 1554525182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAlertStyle.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAlertStyle.cs new file mode 100644 index 00000000..2a13f13a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAlertStyle.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Constants indicating the presentation styles for alerts. + /// + public enum NotificationAlertStyle + { + /// No alert. + None = 0, + + /// Modal alerts. + Alert, + + /// Banner alerts. + Banner, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAlertStyle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAlertStyle.cs.meta new file mode 100644 index 00000000..3ca99c01 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAlertStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c03a70a4dba649cf8c0e746e14d6515 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAndroidProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAndroidProperties.cs new file mode 100644 index 00000000..2e0f4d1d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAndroidProperties.cs @@ -0,0 +1,43 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Notification properties specific to Android platform. + /// + /// @ingroup NotificationServices + public class NotificationAndroidProperties + { + #region Properties + + /// + /// The tag of the notification. + /// + /// + /// The tag defines this notification uniquely or can be empty which overwrites previous notification. + /// If the tag is set with different value than previous notification, it won't override the previous one in notification bar, otherwise it will. + /// + public string Tag { get; set; } + + /// + /// The image used as the large icon for notification. + /// + /// + /// \note This will be the icon thats displayed in the notification. + /// If the value is not set, then default image will be used. + /// + public string LargeIcon { get; set; } + + /// + /// The image used as the big picture for notification. + /// + /// + /// \note This will be the image used as the preview for notification. + /// + public string BigPicture { get; set; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAndroidProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAndroidProperties.cs.meta new file mode 100644 index 00000000..930b6045 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationAndroidProperties.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b4ccb0181ffc241eba0dd7533c01ef63 +timeCreated: 1551855086 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBase.cs new file mode 100644 index 00000000..fb837270 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBase.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore +{ + public abstract class NotificationBase : NativeObjectBase, INotification + { + #region Fields + + [SerializeField] + private string m_id; + + #endregion + + #region Constructors + + protected NotificationBase(string id) + { + // set properties + m_id = id; + } + + #endregion + + #region Abstract methods + + protected abstract string GetTitleInternal(); + + protected abstract string GetSubtitleInternal(); + + protected abstract string GetBodyInternal(); + + protected abstract int GetBadgeInternal(); + + protected abstract IDictionary GetUserInfoInternal(); + + protected abstract string GetSoundFileNameInternal(); + + protected abstract INotificationTrigger GetTriggerInternal(); + + protected abstract bool GetIsLaunchNotificationInternal(); + + protected abstract NotificationIosProperties GetIosPropertiesInternal(); + + protected abstract NotificationAndroidProperties GetAndroidPropertiesInternal(); + + #endregion + + #region Base class methods + + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("Notification { "); + sb.Append("Id: ").Append(Id).Append(" "); + sb.Append("}"); + return sb.ToString(); + } + + #endregion + + #region INotification implementation + + public string Id => m_id; + + public string Title => GetTitleInternal(); + + public string Subtitle => GetSubtitleInternal(); + + public string Body => GetBodyInternal(); + + public int Badge => GetBadgeInternal(); + + public IDictionary UserInfo => GetUserInfoInternal(); + + public string SoundFileName => GetSoundFileNameInternal(); + + public NotificationTriggerType TriggerType + { + get + { + INotificationTrigger trigger = Trigger; + if (trigger is TimeIntervalNotificationTrigger) + { + return NotificationTriggerType.TimeInterval; + } + if (trigger is CalendarNotificationTrigger) + { + return NotificationTriggerType.Calendar; + } + if (trigger is LocationNotificationTrigger) + { + return NotificationTriggerType.Location; + } + if (trigger is PushNotificationTrigger) + { + return NotificationTriggerType.PushNotification; + } + + return NotificationTriggerType.Undefined; + } + } + + public INotificationTrigger Trigger => GetTriggerInternal(); + + public bool IsLaunchNotification => GetIsLaunchNotificationInternal(); + + public NotificationIosProperties IosProperties => GetIosPropertiesInternal(); + + public NotificationAndroidProperties AndroidProperties => GetAndroidPropertiesInternal(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBase.cs.meta new file mode 100644 index 00000000..3b3a9dbd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3c2a597e242214f19bac160046d51540 +timeCreated: 1554780418 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBuilder.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBuilder.cs new file mode 100644 index 00000000..d4751836 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBuilder.cs @@ -0,0 +1,326 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.NotificationServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Builder class for objects. + /// Provides a convenient way to set the various fields of a . + /// + /// @ingroup NotificationServices + public class NotificationBuilder + { + #region Fields + + private IMutableNotification m_notification; + + #endregion + + #region Constructors + + private NotificationBuilder() + { } + + #endregion + + #region Create methods + + /// + /// Initializes a new instance of the class. + /// + /// The unique identifier for this notification. + public static NotificationBuilder CreateNotification(string notificationId) + { + var nativeInterface = NotificationServices.NativeInterface; + return new NotificationBuilder() + { + m_notification = nativeInterface.CreateMutableNotification(notificationId), + }; + } + + #endregion + + #region Setter methods + + /// + /// Sets the title property of notification. + /// + /// Value. + public NotificationBuilder SetTitle(string value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Title value is null."); + return this; + } + + // set value + m_notification.SetTitle(value); + + return this; + } + + /// + /// Sets the subtitle property of notification. + /// + /// Value. + public NotificationBuilder SetSubtitle(string value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Subtitle value is null."); + return this; + } + + // set value + m_notification.SetSubtitle(value); + + return this; + } + + /// + /// Sets the body property of notification. + /// + /// Value. + public NotificationBuilder SetBody(string value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Body value is null."); + return this; + } + + // set value + m_notification.SetBody(value); + + return this; + } + + /// + /// Sets the badge property of notification. + /// + /// Value. + public NotificationBuilder SetBadge(int value) + { + // validate arguments + if (value < 0) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Badge value must be a positive number."); + return this; + } + + // set value + m_notification.SetBadge(value); + + return this; + } + + /// + /// Sets the custom userinfo property of notification. + /// + /// Value. + public NotificationBuilder SetUserInfo(Dictionary value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "User info value is null."); + return this; + } + + // set value + m_notification.SetUserInfo(value); + + return this; + } + + /// + /// Sets the custom userinfo property of notification. + /// + /// Key value pair values. + public NotificationBuilder SetUserInfo(params KeyValuePair[] values) + { + // validate arguments + if (null == values) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "User info value is null."); + return this; + } + + + // set value + var userInfo = new Dictionary(); + foreach (KeyValuePair keyValuePair in values) + { + userInfo.Add(keyValuePair.Key, keyValuePair.Value); + } + + m_notification.SetUserInfo(userInfo); + + return this; + } + + /// + /// Sets the sound filename property of notification. + /// + /// Value. + public NotificationBuilder SetSoundFileName(string value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Sound file name value is null."); + return this; + } + + // set value + m_notification.SetSoundFileName(value); + + return this; + } + + /// + /// Sets the iOS specific properties of notification. + /// + /// Value. + public NotificationBuilder SetIosProperties(NotificationIosProperties value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "iOS properties value is null."); + return this; + } + + // set value + m_notification.SetIosProperties(value); + + return this; + } + + /// + /// Sets the android specific properties of notification. + /// + /// Value. + public NotificationBuilder SetAndroidProperties(NotificationAndroidProperties value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Android properties value is null."); + return this; + } + + // set value + m_notification.SetAndroidProperties(value); + + return this; + } + + /// + /// Adds the time interval based trigger. + /// + /// The time (in seconds) that must elapse from the current time before the trigger fires. + /// If set to true repeats. + public NotificationBuilder SetTimeIntervalNotificationTrigger(double interval, bool repeats = false) + { + // validate arguments + if (interval <= 0) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Interval value must be a positive number."); + return this; + } + + // create trigger object + var trigger = new TimeIntervalNotificationTrigger(interval, repeats); + + // add trigger + m_notification.SetTrigger(trigger); + + return this; + } + + /// + /// Adds the date time based trigger. + /// + /// The date time based trigger. + /// The time when notification is triggered for first time. + /// If set to true repeats. + public NotificationBuilder SetCalendarNotificationTrigger(DateComponents dateComponent, bool repeats = false) + { + // validate arguments + if (null == dateComponent) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Date component value is null."); + return this; + } + + // create trigger object + var trigger = new CalendarNotificationTrigger(dateComponent, repeats); + + // add trigger + m_notification.SetTrigger(trigger); + + return this; + } + + /// + /// Adds the location based trigger. + /// + /// The location based trigger. + /// The geographic region that must be entered or exited. + /// If set to true notify on entry. + /// If set to true notify on exit. + /// If set to true repeats. + public NotificationBuilder SetLocationNotificationTrigger(CircularRegion region, bool notifyOnEntry, bool notifyOnExit, bool repeats = false) + { + // create trigger object + var trigger = new LocationNotificationTrigger(region, notifyOnEntry, notifyOnExit, repeats); + + // add trigger + m_notification.SetTrigger(trigger); + + return this; + } + + + /// + /// Sets the priority of notification + /// + /// Value representing the priority of the notification. + /// + + public NotificationBuilder SetPriority(NotificationPriority priority) + { + // set value + m_notification.SetPriority(priority); + + return this; + } + + /// + /// Returns newly created instance. + /// + public INotification Create() + { + try + { + return m_notification; + } + finally + { + m_notification = null; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBuilder.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBuilder.cs.meta new file mode 100644 index 00000000..c42874b4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationBuilder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2668b3c4f95d6405a8b3d3033bdef82f +timeCreated: 1554784376 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationIosProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationIosProperties.cs new file mode 100644 index 00000000..c42376d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationIosProperties.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Notification properties specific to iOS platform. + /// + /// @ingroup NotificationServices + public class NotificationIosProperties + { + #region Properties + + /// + /// The name of the launch image to display when your app is launched in response to the notification + /// + public string LaunchImageFileName { get; private set; } + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// The name of the launch image to display when your app is launched in response to the notification. + public NotificationIosProperties(string launchImageFileName = null) + { + // set properties + LaunchImageFileName = launchImageFileName; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationIosProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationIosProperties.cs.meta new file mode 100644 index 00000000..5a2a0406 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationIosProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f3d22d0350bc44059b80b85fee42296 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionOptions.cs new file mode 100644 index 00000000..d06daaee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionOptions.cs @@ -0,0 +1,44 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Enumeration values for requesting authorization to interact with the user. + /// + [Flags] + public enum NotificationPermissionOptions + { + None = 0, + + /// The ability to update the app’s badge. + Badge = 1 << 0, + + /// The ability to play sounds. + Sound = 1 << 1, + + /// The ability to display alerts. + Alert = 1 << 2, + + /// The ability to display notifications in a CarPlay environment. + CarPlay = 1 << 3, + + /// The ability to play sounds for critical alerts. + CriticalAlert = 1 << 4, + + /// An option indicating the system should display a button for in-app notification settings. + ProvidesAppNotificationSettings = 1 << 5, + + /// The ability to post noninterrupting notifications provisionally to the Notification Center. + Provisional = 1 << 6, + + /// The ability for Siri to automatically read out messages over AirPods. + Announcement = 1 << 7, + + ExactTiming = 1 << 8, + + All = Badge | Sound | Alert | CarPlay | CriticalAlert | ProvidesAppNotificationSettings | Provisional | Announcement | ExactTiming + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionOptions.cs.meta new file mode 100644 index 00000000..ae6e1d15 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6371609fabc74491d8e8a34407c7352c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionStatus.cs new file mode 100644 index 00000000..3a394670 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionStatus.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Constants indicating whether the app is allowed to schedule notifications. + /// + public enum NotificationPermissionStatus + { + /// The user hasn't yet made a choice about whether the app is allowed to schedule notifications. + NotDetermined, + + /// The app isn't authorized to schedule or receive notifications. + Denied, + + /// The app is authorized to schedule or receive notifications. + Authorized, + + /// The application is provisionally authorized to post noninterruptive user notifications. + Provisional, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionStatus.cs.meta new file mode 100644 index 00000000..347ae8ba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPermissionStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e52ddc04e83f4d27ac519d9b8051cf0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPresentationOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPresentationOptions.cs new file mode 100644 index 00000000..bc849677 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPresentationOptions.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Constants indicating how to present a notification in a foreground app. + /// + [Flags] + public enum NotificationPresentationOptions + { + /// Display the alert using the content provided by the notification. + Alert = 1 << 0, + + /// Apply the notification's badge value to the app’s icon. + Badge = 1 << 1, + + /// Play the sound associated with the notification. + Sound = 1 << 2, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPresentationOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPresentationOptions.cs.meta new file mode 100644 index 00000000..63be6e20 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPresentationOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcfa012199cb6499b9bb29c950da61ac +timeCreated: 1564059281 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPreviewStyle.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPreviewStyle.cs new file mode 100644 index 00000000..50823d2a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPreviewStyle.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Constants indicating the style previewing a notification's content. + /// + public enum NotificationPreviewStyle + { + /// The notification's content is always shown, even when the device is locked. + Always = 0, + + /// The notification's content is shown only when the device is unlocked. + WhenAuthenticated, + + /// The notification's content is never shown, even when the device is unlocked. + Never, + + NotAccessible + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPreviewStyle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPreviewStyle.cs.meta new file mode 100644 index 00000000..acd8b566 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPreviewStyle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 02f5e37b74a144f3e8feaea1abbba693 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPriority.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPriority.cs new file mode 100644 index 00000000..223807ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPriority.cs @@ -0,0 +1,31 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Specifies the priority levels for notifications, determining how they are delivered to the user. + /// + public enum NotificationPriority + { + /// + /// Low priority. Can be silent or with no disturbance. + /// + Low = 0, + + /// + /// Medium priority. + /// (Default) Can make noise, alert in banner, but respects battery optimization settings or focus mode. + /// + Medium = 1, + + /// + /// High priority. + /// Can make noise, alert in banner and can be visually intruding ("May" break-through doze/battery optimization or focus modes). + /// + High = 2, + + /// + /// Max priority. + /// Can make noise, alert in banner and visually intruding ("Must" break-through doze or focus modes). + /// + Max = 3 + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPriority.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPriority.cs.meta new file mode 100644 index 00000000..6992a5c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationPriority.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8653edd2437f400587e408b286493ef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServices.cs new file mode 100644 index 00000000..ba69ddda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServices.cs @@ -0,0 +1,614 @@ +using System; +using System.Collections; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.NotificationServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup NotificationServices Notification Services + * @brief Provides cross-platform interface for scheduling, registering and handling notifications. + */ + + /// + /// Provides cross-platform interface for scheduling, registering and handling notifications. + /// + /// @ingroup NotificationServices + public static class NotificationServices + { + #region Static fields + + private static INativeNotificationCenterInterface s_nativeInterface = null; + + private static string s_deviceToken = null; + + #endregion + + #region Static properties + + public static NotificationServicesUnitySettings UnitySettings { get; private set; } + + internal static INativeNotificationCenterInterface NativeInterface => s_nativeInterface; + + /// + /// Returns the cached scheduled notification array. + /// + /// + /// \note This property is invalid until a call to is completed. + /// + public static INotification[] ScheduledNotifications { get; private set; } + + public static NotificationSettings CachedSettings { get; private set; } + + #endregion + + #region Static events + + public static event Callback OnSettingsUpdate; + + public static event Callback OnNotificationReceived; + + public static event EventCallback OnRegisterForPushNotificationsComplete; + + #endregion + + #region Static methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + /// @name Advanced Usage + ///@{ + + /// + /// Initializes the notification services module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + public static void Initialize(NotificationServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Reset event properties + OnSettingsUpdate = null; + OnNotificationReceived = null; + OnRegisterForPushNotificationsComplete = null; + + // Set default properties + UnitySettings = settings; + ScheduledNotifications = new INotification[0]; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.NotificationServices, true); + + RegisterForEvents(); + } + /// @} + + /// + /// Requests for permission to interact with the user when local and remote notifications are delivered to the user's device. + /// + /// The authorization options your app is requesting. You may combine the available constants to request authorization for multiple items. + /// Indicates whether pre-confirmation is required, before prompting system permission dialog. + /// Callback method that will be invoked after operation is completed. + public static void RequestPermission(NotificationPermissionOptions options, bool showPrepermissionDialog = true, EventCallback callback = null) + { + // check whether preconfirmation dialog needs to be shown before triggering system permission dialog + var permissionHandler = NativeFeatureUsagePermissionHandler.Default; + if (showPrepermissionDialog && (permissionHandler != null)) + { + // start request on receiving user permission + permissionHandler.ShowPrepermissionDialog( + permissionType: NativeFeatureUsagePermissionType.kNotification, + onAllowCallback: () => + { + RequestPermissionInternal(options, callback); + }, + onDenyCallback: () => + { + var result = new NotificationServicesRequestPermissionResult( + permissionStatus: NotificationPermissionStatus.NotDetermined); + CallbackDispatcher.InvokeOnMainThread(callback, result, new Error(description: "User cancelled.")); + }); + } + else + { + RequestPermissionInternal(options, callback); + } + } + + /// + /// Gets the notification settings available for this application. + /// + /// Callback method that will be invoked after operation is completed. + public static void GetSettings(Callback callback = null) + { + GetSettingsInternal(sendUpdateEvent: true, callback: callback); + } + + #endregion + + #region Local notification methods + + /// + /// Creates a new instance of local notification. + /// + /// The notification. + /// Notification identifier. + public static NotificationBuilder CreateNotificationWithId(string notificationId) + { + try + { + // create new object + return NotificationBuilder.CreateNotification(notificationId); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + + /// + /// Schedules a local notification for delivery. + /// + /// Notification. + /// Callback method that will be invoked after operation is completed. + public static void ScheduleNotification(INotification notification, CompletionCallback callback = null) + { + // validate arguments + if (null == notification) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Notification object is null."); + return; + } + + try + { + // make request + s_nativeInterface.ScheduleNotification(notification, (success, error) => + { + // send result to caller object + CallbackDispatcher.InvokeOnMainThread(callback, success, error); + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Returns a list of all notification requests that are scheduled and waiting to be delivered. + /// + /// Callback method that will be invoked after operation is completed. + public static void GetScheduledNotifications(EventCallback callback = null) + { + try + { + // make native request + s_nativeInterface.GetScheduledNotifications((notifications, error) => + { + // avoid passing null value + notifications = notifications ?? new INotification[0]; + + // cache value + ScheduledNotifications = notifications; + + // send result to caller object + var result = new NotificationServicesGetScheduledNotificationsResult(notifications); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Unschedules the specified notification. + /// + /// Notification id. + public static void CancelScheduledNotification(string notificationId) + { + // validate arguments + if (string.IsNullOrEmpty(notificationId)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Notification id is null/empty."); + return; + } + + try + { + // make request + s_nativeInterface.CancelScheduledNotification(notificationId); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Unschedules the specified notification. + /// + /// Notification. + public static void CancelScheduledNotification(INotification notification) + { + // validate arguments + if (null == notification) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Notification object is null."); + return; + } + + try + { + // make request + s_nativeInterface.CancelScheduledNotification(notification.Id); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Unschedules all pending notification requests. + /// + public static void CancelAllScheduledNotifications() + { + try + { + // make request + s_nativeInterface.CancelAllScheduledNotifications(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Returns a list of the app’s notifications that are still displayed in Notification Center. + /// + /// Callback method that will be invoked after operation is completed. + public static void GetDeliveredNotifications(EventCallback callback = null) + { + try + { + // make request + s_nativeInterface.GetDeliveredNotifications((notifications, error) => + { + // avoid passing null + notifications = notifications ?? new INotification[0]; + + // send result to caller object + var result = new NotificationServicesGetDeliveredNotificationsResult(notifications); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Removes all of the app’s delivered notifications from Notification Center. + /// + public static void RemoveAllDeliveredNotifications() + { + try + { + // make request + s_nativeInterface.RemoveAllDeliveredNotifications(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Remote notification methods + + /// + /// Registers to receive remote notifications via Push Notification service. + /// + /// + /// Call this method to initiate the registration process with Push Notification service. + /// When registration process completes, callback is fired. + /// If registration succeeds, then you should pass device token to the server you use to generate remote notifications. + /// + /// + /// \note If you want your app’s remote notifications to display alerts, play sounds etc you must call the method before registering for remote notifications. + /// + /// Callback method that will be invoked after operation is completed. + public static void RegisterForPushNotifications(EventCallback callback = null) + { + try + { + // make request + s_nativeInterface.RegisterForPushNotifications((deviceToken, error) => + { + // cache device token + if (null == error) + { + s_deviceToken = deviceToken; + CopyPushNotificationPropertiesToCachedSettings(); + } + + // notify listeners + var result = new NotificationServicesRegisterForPushNotificationsResult(deviceToken); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + CallbackDispatcher.InvokeOnMainThread(OnRegisterForPushNotificationsComplete, result, error); + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Unregister for all remote notifications received via Push Notification service. + /// + /// + /// \note Apps unregistered through this method can always re-register. + /// + public static void UnregisterForPushNotifications() + { + try + { + // make request + s_nativeInterface.UnregisterForPushNotifications(); + + // unset value + s_deviceToken = null; + CopyPushNotificationPropertiesToCachedSettings(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Returns the registeration status for remote notifications. + /// + /// true, if registered for remote notifications, false otherwise. + public static bool IsRegisteredForPushNotifications() + { + try + { + // make request + return s_nativeInterface.IsRegisteredForPushNotifications(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + /// + /// Set application icon badge number. + /// + /// \note When set to 0, the application badge will be cleared from the icon. + /// + public static void SetApplicationIconBadgeNumber(int count) + { + try + { + // make request + s_nativeInterface.SetApplicationIconBadgeNumber(count); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Helper methods + + public static bool IsAuthorizedPermissionStatus(NotificationPermissionStatus accessStatus) + { + return (NotificationPermissionStatus.Authorized == accessStatus) || + (NotificationPermissionStatus.Provisional == accessStatus); + } + + public static bool? IsInitializedAndAuthorized() + { + return (CachedSettings == null) + ? (bool?) null + : IsAuthorizedPermissionStatus(CachedSettings.PermissionStatus); + } + + public static bool IsAuthorized() + { + return (CachedSettings != null) && IsAuthorizedPermissionStatus(CachedSettings.PermissionStatus); + } + + public static bool IsPermissionAvailable() + { + return (CachedSettings != null) && (CachedSettings.PermissionStatus != NotificationPermissionStatus.NotDetermined); + } + + // returns device token if user has already registered with the token + public static void TryRegisterForPushNotifications() + { + // check device settings whether app has required permissions + var authorized = IsInitializedAndAuthorized(); + if (authorized == null) + { + GetSettings((result) => + { + if (IsAuthorizedPermissionStatus(result.Settings.PermissionStatus)) + { + // initiate registration request + RegisterForPushNotifications(); + } + }); + } + else if (authorized.Value) + { + // initiate registration request + RegisterForPushNotifications(); + } + } + + #endregion + + #region Private methods + + private static void RegisterForEvents() + { + s_nativeInterface.OnNotificationReceived += HandleNotificationReceivedInternalCallback; + } + + private static void UnregisterFromEvents() + { + s_nativeInterface.OnNotificationReceived -= HandleNotificationReceivedInternalCallback; + } + + private static void RequestPermissionInternal(NotificationPermissionOptions options, EventCallback callback = null) + { + try + { + // make request + s_nativeInterface.RequestPermission(options, (permissionStatus, accessError) => + { + // update settings information + GetSettingsInternal(sendUpdateEvent: true, callback: (settingsResult) => + { + // register for push notification if required + if (IsAuthorizedPermissionStatus(permissionStatus) && (UnitySettings.PushNotificationServiceType != PushNotificationServiceType.None)) + { + // register for remote notification + RegisterForPushNotifications((result, registerError) => + { + SendRequestPermissionResult(callback, permissionStatus, accessError); + }); + } + else + { + SendRequestPermissionResult(callback, permissionStatus, accessError); + } + }); + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + private static void SendRequestPermissionResult(EventCallback callback, NotificationPermissionStatus permissionStatus, Error error) + { + // send result to caller object + var result = new NotificationServicesRequestPermissionResult(permissionStatus); + CallbackDispatcher.InvokeOnMainThread(callback, result, error); + } + + private static void GetSettingsInternal(bool sendUpdateEvent, Callback callback = null) + { + try + { + // make request + s_nativeInterface.GetSettings((settings) => + { + // cache result + var newSettings = new NotificationSettings( + permissionStatus: settings.PermissionStatus, + alertSetting: settings.AlertSetting, + badgeSetting: settings.BadgeSetting, + carPlaySetting: settings.CarPlaySetting, + lockScreenSetting: settings.LockScreenSetting, + notificationCenterSetting: settings.NotificationCenterSetting, + soundSetting: settings.SoundSetting, + criticalAlertSetting: settings.CriticalAlertSetting, + announcementSetting: settings.AnnouncementSetting, + alertStyle: settings.AlertStyle, + previewStyle: settings.PreviewStyle, + pushNotificationEnabled: (s_deviceToken != null), + deviceToken: s_deviceToken, + exactTimingSetting: settings.ExactTimingSetting); + CachedSettings = newSettings; + + // notify listeners + var result = new NotificationServicesGetSettingsResult(newSettings); + CallbackDispatcher.InvokeOnMainThread(callback, result); + if (sendUpdateEvent) + { + CallbackDispatcher.InvokeOnMainThread(OnSettingsUpdate, newSettings); + } + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + private static void CopyPushNotificationPropertiesToCachedSettings(bool sendUpdateEvent = true) + { + if (CachedSettings == null) + { + return; + } + + // update local copy + var newSettingsCopy = new NotificationSettings( + permissionStatus: CachedSettings.PermissionStatus, + alertSetting: CachedSettings.AlertSetting, + badgeSetting: CachedSettings.BadgeSetting, + carPlaySetting: CachedSettings.CarPlaySetting, + lockScreenSetting: CachedSettings.LockScreenSetting, + notificationCenterSetting: CachedSettings.NotificationCenterSetting, + soundSetting: CachedSettings.SoundSetting, + criticalAlertSetting: CachedSettings.CriticalAlertSetting, + announcementSetting: CachedSettings.AnnouncementSetting, + alertStyle: CachedSettings.AlertStyle, + previewStyle: CachedSettings.PreviewStyle, + pushNotificationEnabled: (s_deviceToken != null), + deviceToken: s_deviceToken, + exactTimingSetting: CachedSettings.ExactTimingSetting); + CachedSettings = newSettingsCopy; + + // send event + if (sendUpdateEvent) + { + CallbackDispatcher.InvokeOnMainThread(OnSettingsUpdate, newSettingsCopy); + } + } + + #endregion + + #region Event callback methods + + private static void HandleNotificationReceivedInternalCallback(INotification notification) + { + // send result to caller object + var result = new NotificationServicesNotificationReceivedResult(notification); + if (OnNotificationReceived != null) + { + CallbackDispatcher.InvokeOnMainThread(OnNotificationReceived, result); + } + else + { + SurrogateCoroutine.WaitUntilAndInvoke(new WaitUntil(() => (OnNotificationReceived != null)), () => + { + CallbackDispatcher.InvokeOnMainThread(OnNotificationReceived, result); + }); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServices.cs.meta new file mode 100644 index 00000000..15feb447 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 078aae18970fb4bf6b0b796e2ade2ca6 +timeCreated: 1551799617 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesError.cs new file mode 100644 index 00000000..b8820af8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesError.cs @@ -0,0 +1,39 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class NotificationServicesError + { + public const string kDomain = "[Essential Kit] Notification Services"; + + public static Error Unknown(string description = null) => CreateError( + code: (int)NotificationServicesErrorCode.Unknown, + description: description ?? "Unknown error." + ); + + public static Error PermissionNotAvailable(string description = null) => CreateError( + code: (int)NotificationServicesErrorCode.PermissionNotAvailable, + description: description ?? "Permission not available." + ); + + public static Error TriggerNotValid(string description = null) => CreateError( + code: (int)NotificationServicesErrorCode.TriggerNotValid, + description: description ?? "Trigger not valid." + ); + + public static Error ConfigurationError(string description = null) => CreateError( + code: (int)NotificationServicesErrorCode.ConfigurationError, + description: description ?? "Configuration error." + ); + + public static Error ScheduledTimeNotValid(string description = null) => CreateError( + code: (int)NotificationServicesErrorCode.ScheduledTimeNotValid, + description: description ?? "Scheduled time not valid." + ); + + private static Error CreateError(int code, string description) => new Error( + domain: kDomain, + code: code, + description: description); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesError.cs.meta new file mode 100644 index 00000000..a2dd18d2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4480ca9e45744447fa74d00cb369e59b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesErrorCode.cs new file mode 100644 index 00000000..67201953 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesErrorCode.cs @@ -0,0 +1,33 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents error codes for notification services. + /// + public enum NotificationServicesErrorCode + { + /// + /// An unknown error occurred. + /// + Unknown, + + /// + /// The permission for notifications is not available. + /// + PermissionNotAvailable, + + /// + /// The notification trigger is not valid. + /// + TriggerNotValid, + + /// + /// There was a configuration error. + /// + ConfigurationError, + + /// + /// The scheduled time for the notification is not valid. + /// + ScheduledTimeNotValid + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesErrorCode.cs.meta new file mode 100644 index 00000000..995f80ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3fe176b06081a4e8694b61528cc9122c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetDeliveredNotificationsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetDeliveredNotificationsResult.cs new file mode 100644 index 00000000..78c10f11 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetDeliveredNotificationsResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when request is completed. + /// + /// @ingroup NotificationServices + public class NotificationServicesGetDeliveredNotificationsResult + { + #region Properties + + /// + /// An array of delivered notifications. + /// + public INotification[] Notifications { get; private set; } + + #endregion + + #region Constructors + + internal NotificationServicesGetDeliveredNotificationsResult(INotification[] notifications) + { + // Set properties + Notifications = notifications; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetDeliveredNotificationsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetDeliveredNotificationsResult.cs.meta new file mode 100644 index 00000000..bf8fe781 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetDeliveredNotificationsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: affc03b34971c410b98402b0e972da16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetScheduledNotificationsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetScheduledNotificationsResult.cs new file mode 100644 index 00000000..353aa5a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetScheduledNotificationsResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when request is completed. + /// + /// @ingroup NotificationServices + public class NotificationServicesGetScheduledNotificationsResult + { + #region Properties + + /// + /// The scheduled notifications. + /// + public INotification[] Notifications { get; private set; } + + #endregion + + #region Constructors + + internal NotificationServicesGetScheduledNotificationsResult(INotification[] notifications) + { + // Set properties + Notifications = notifications; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetScheduledNotificationsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetScheduledNotificationsResult.cs.meta new file mode 100644 index 00000000..5d7f6758 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetScheduledNotificationsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0315986eb01594a1e9198e247c3b1878 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetSettingsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetSettingsResult.cs new file mode 100644 index 00000000..74779958 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetSettingsResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when is completed. + /// + /// @ingroup NotificationServices + public class NotificationServicesGetSettingsResult + { + #region Properties + + /// + /// The runtime settings. + /// + public NotificationSettings Settings { get; private set; } + + #endregion + + #region Constructors + + internal NotificationServicesGetSettingsResult(NotificationSettings settings) + { + // Set properties + Settings = settings; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetSettingsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetSettingsResult.cs.meta new file mode 100644 index 00000000..6c573bd4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesGetSettingsResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a267dc799a0b455d989074a2e1854d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesNotificationReceivedResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesNotificationReceivedResult.cs new file mode 100644 index 00000000..21e96139 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesNotificationReceivedResult.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when notification message is received. + /// + /// @ingroup NotificationServices + public class NotificationServicesNotificationReceivedResult + { + #region Properties + + /// + /// The received notification. + /// + public INotification Notification { get; private set; } + + #endregion + + #region Constructors + + internal NotificationServicesNotificationReceivedResult(INotification notification) + { + // Set properties + Notification = notification; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesNotificationReceivedResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesNotificationReceivedResult.cs.meta new file mode 100644 index 00000000..180e73ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesNotificationReceivedResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6565bf97254a74199940526fdc739c8a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRegisterForPushNotificationsResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRegisterForPushNotificationsResult.cs new file mode 100644 index 00000000..ffdf1f5a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRegisterForPushNotificationsResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup NotificationServices + public class NotificationServicesRegisterForPushNotificationsResult + { + #region Properties + + /// + /// The device token. + /// + public string DeviceToken { get; private set; } + + #endregion + + #region Constructors + + internal NotificationServicesRegisterForPushNotificationsResult(string deviceToken) + { + // Set properties + DeviceToken = deviceToken; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRegisterForPushNotificationsResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRegisterForPushNotificationsResult.cs.meta new file mode 100644 index 00000000..dcd36334 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRegisterForPushNotificationsResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8528915afef0e48a49a4ba5d06ebe373 +timeCreated: 1579703881 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRequestPermissionResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRequestPermissionResult.cs new file mode 100644 index 00000000..51d9cd30 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRequestPermissionResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup NotificationServices + public class NotificationServicesRequestPermissionResult + { + #region Properties + + /// + /// The permission granted by the user. + /// + public NotificationPermissionStatus PermissionStatus { get; private set; } + + #endregion + + #region Constructors + + internal NotificationServicesRequestPermissionResult(NotificationPermissionStatus permissionStatus) + { + // Set properties + PermissionStatus = permissionStatus; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRequestPermissionResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRequestPermissionResult.cs.meta new file mode 100644 index 00000000..fe965cf6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationServicesRequestPermissionResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c52fb3fc3684e452d9c40fe77f0a13a1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingStatus.cs new file mode 100644 index 00000000..0f14b416 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingStatus.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Enumeration values indicating the current status of a notification setting. + /// + [Flags] + public enum NotificationSettingStatus + { + /// The notification setting is turned off. + Disabled, + + /// The notification setting is turned on. + Enabled, + + /// The app does not support this notification setting. + NotSupported, + + /// The platform unable to fetch this setting. + NotAccessible + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingStatus.cs.meta new file mode 100644 index 00000000..b90229ed --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b1a75bf678c1498b95bce9ac6075c27 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettings.cs new file mode 100644 index 00000000..e82bb367 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettings.cs @@ -0,0 +1,138 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Represents the user’s notification settings. + /// + public class NotificationSettings + { + #region Properties + + /// + /// The permission granted by the user. + /// + public NotificationPermissionStatus PermissionStatus { get; private set; } + + /// + /// The authorization status for displaying alerts. + /// + public NotificationSettingStatus AlertSetting { get; private set; } + + /// + /// The setting that indicates whether badges appear on your app’s icon. + /// + public NotificationSettingStatus BadgeSetting { get; private set; } + + /// + /// The setting that indicates whether your app’s notifications appear in CarPlay. + /// + public NotificationSettingStatus CarPlaySetting { get; private set; } + + /// + /// The setting that indicates whether your app’s notifications appear on a device’s Lock screen. + /// + public NotificationSettingStatus LockScreenSetting { get; private set; } + + /// + /// The setting that indicates whether your app’s notifications appear in Notification Center. + /// + public NotificationSettingStatus NotificationCenterSetting { get; private set; } + + /// + /// The authorization status for playing sounds for incoming notifications. + /// + public NotificationSettingStatus SoundSetting { get; private set; } + + /// + /// The authorization status for playing sounds for critical alerts. + /// + public NotificationSettingStatus CriticalAlertSetting { get; private set; } + + /// + /// The setting that indicates whether Siri can announce your app’s notifications. + /// + public NotificationSettingStatus AnnouncementSetting { get; private set; } + + /// + /// The type of alert that the app may display when the device is unlocked. + /// + public NotificationAlertStyle AlertStyle { get; private set; } + + /// + /// The setting that indicates whether the app shows a preview of the notification's content. + /// + public NotificationPreviewStyle PreviewStyle { get; private set; } + + /// + /// Gets a value indicating whether push notification is enabled. + /// + public bool PushNotificationEnabled { get; private set; } + + /// + /// The device token received while registering for remote notification service. + /// + public string DeviceToken { get; private set; } + + public NotificationSettingStatus ExactTimingSetting { get; private set; } + + #endregion + + #region Constructors + + internal NotificationSettings(NotificationPermissionStatus permissionStatus, NotificationSettingStatus alertSetting, + NotificationSettingStatus badgeSetting, NotificationSettingStatus carPlaySetting, + NotificationSettingStatus lockScreenSetting, NotificationSettingStatus notificationCenterSetting, + NotificationSettingStatus soundSetting, NotificationSettingStatus criticalAlertSetting, + NotificationSettingStatus announcementSetting, NotificationAlertStyle alertStyle, + NotificationPreviewStyle previewStyle, bool pushNotificationEnabled, string deviceToken, NotificationSettingStatus exactTimingSetting) + { + // set properties + PermissionStatus = permissionStatus; + AlertSetting = alertSetting; + BadgeSetting = badgeSetting; + CarPlaySetting = carPlaySetting; + LockScreenSetting = lockScreenSetting; + NotificationCenterSetting = notificationCenterSetting; + SoundSetting = soundSetting; + CriticalAlertSetting = criticalAlertSetting; + AnnouncementSetting = announcementSetting; + AlertStyle = alertStyle; + PreviewStyle = previewStyle; + PushNotificationEnabled = pushNotificationEnabled; + DeviceToken = deviceToken; + ExactTimingSetting = exactTimingSetting; + } + + #endregion + + #region Base class methods + + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("NotificationSettings {"); + sb.Append("PermissionStatus: ").Append(PermissionStatus).Append(" "); + sb.Append("AlertSetting: ").Append(AlertSetting).Append(" "); + sb.Append("BadgeSetting: ").Append(BadgeSetting).Append(" "); + sb.Append("CarPlaySetting: ").Append(CarPlaySetting).Append(" "); + sb.Append("LockScreenSetting: ").Append(LockScreenSetting).Append(" "); + sb.Append("NotificationCenterSetting: ").Append(NotificationCenterSetting).Append(" "); + sb.Append("SoundSetting: ").Append(SoundSetting).Append(" "); + sb.Append("CriticalAlertSetting: ").Append(CriticalAlertSetting).Append(" "); + sb.Append("AnnouncementSetting: ").Append(AnnouncementSetting).Append(" "); + sb.Append("AlertStyle: ").Append(AlertStyle).Append(" "); + sb.Append("PreviewStyle: ").Append(PreviewStyle).Append(" "); + sb.Append("PushNotificationEnabled: ").Append(PushNotificationEnabled).Append(" "); + sb.Append("DeviceToken: ").Append(DeviceToken); + sb.Append("}"); + return sb.ToString(); + + } + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettings.cs.meta new file mode 100644 index 00000000..b794dd7a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 10ef57004ec0d430e8e5dd1819035e07 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingsInternal.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingsInternal.cs new file mode 100644 index 00000000..8a99f274 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingsInternal.cs @@ -0,0 +1,63 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public class NotificationSettingsInternal + { + #region Properties + + public NotificationPermissionStatus PermissionStatus { get; private set; } + + public NotificationSettingStatus AlertSetting { get; private set; } + + public NotificationSettingStatus BadgeSetting { get; private set; } + + public NotificationSettingStatus CarPlaySetting { get; private set; } + + public NotificationSettingStatus LockScreenSetting { get; private set; } + + public NotificationSettingStatus NotificationCenterSetting { get; private set; } + + public NotificationSettingStatus SoundSetting { get; private set; } + + public NotificationSettingStatus CriticalAlertSetting { get; private set; } + + public NotificationSettingStatus AnnouncementSetting { get; private set; } + + public NotificationAlertStyle AlertStyle { get; private set; } + + public NotificationPreviewStyle PreviewStyle { get; private set; } + + public NotificationSettingStatus ExactTimingSetting { get; private set; } + + #endregion + + #region Constructors + + internal NotificationSettingsInternal(NotificationPermissionStatus permissionStatus, NotificationSettingStatus alertSetting, + NotificationSettingStatus badgeSetting, NotificationSettingStatus carPlaySetting, + NotificationSettingStatus lockScreenSetting, NotificationSettingStatus notificationCenterSetting, + NotificationSettingStatus soundSetting, NotificationSettingStatus criticalAlertSetting, + NotificationSettingStatus announcementSetting, NotificationAlertStyle alertStyle, + NotificationPreviewStyle previewStyle, NotificationSettingStatus exactTimingSetting) + { + // set properties + PermissionStatus = permissionStatus; + AlertSetting = alertSetting; + BadgeSetting = badgeSetting; + CarPlaySetting = carPlaySetting; + LockScreenSetting = lockScreenSetting; + NotificationCenterSetting = notificationCenterSetting; + SoundSetting = soundSetting; + CriticalAlertSetting = criticalAlertSetting; + AnnouncementSetting = announcementSetting; + AlertStyle = alertStyle; + PreviewStyle = previewStyle; + ExactTimingSetting = exactTimingSetting; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingsInternal.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingsInternal.cs.meta new file mode 100644 index 00000000..6bec7a0f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationSettingsInternal.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ba385c46c5544e14a7a144748b4c5c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationTriggerType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationTriggerType.cs new file mode 100644 index 00000000..b43c0843 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationTriggerType.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Constants indicating available trigger types. + /// + [Flags] + public enum NotificationTriggerType + { + Undefined, + + /// Triggers notification after the specified amount of time elapses. + TimeInterval = 1 << 0, + + /// Triggers notification at a specific date and time. + Calendar = 1 << 1, + + /// Triggers notification after the user's device enters or exits the specified geographic region. + Location = 1 << 2, + + /// Notification received from Push Notification Service. + PushNotification = 1 << 3, + + LocalNotification = (TimeInterval | Calendar | Location), + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationTriggerType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationTriggerType.cs.meta new file mode 100644 index 00000000..27c871b7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NotificationTriggerType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41a1579c9ca524801934834c03fb3d1d +timeCreated: 1554789289 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullMutableNotification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullMutableNotification.cs new file mode 100644 index 00000000..6e17e18e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullMutableNotification.cs @@ -0,0 +1,155 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore +{ + internal sealed class NullMutableNotification : NotificationBase, IMutableNotification + { + #region Constructors + + public NullMutableNotification(string notificationId) + : base(notificationId) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("NotificationServices"); + } + + #endregion + + #region Base class implementation + + protected override string GetTitleInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetSubtitleInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetBodyInternal() + { + LogNotSupported(); + + return null; + } + + protected override int GetBadgeInternal() + { + LogNotSupported(); + + return 0; + } + + protected override IDictionary GetUserInfoInternal() + { + LogNotSupported(); + + return null; + } + + protected override string GetSoundFileNameInternal() + { + LogNotSupported(); + + return null; + } + + protected override INotificationTrigger GetTriggerInternal() + { + LogNotSupported(); + + return null; + } + + protected override bool GetIsLaunchNotificationInternal() + { + LogNotSupported(); + + return false; + } + + protected override NotificationIosProperties GetIosPropertiesInternal() + { + LogNotSupported(); + + return null; + } + + protected override NotificationAndroidProperties GetAndroidPropertiesInternal() + { + LogNotSupported(); + + return null; + } + + #endregion + + #region IMutableNotification implementation + + public void SetTitle(string value) + { + LogNotSupported(); + } + + public void SetSubtitle(string value) + { + LogNotSupported(); + } + + public void SetBody(string value) + { + LogNotSupported(); + } + + public void SetBadge(int value) + { + LogNotSupported(); + } + + public void SetUserInfo(IDictionary value) + { + LogNotSupported(); + } + + public void SetSoundFileName(string value) + { + LogNotSupported(); + } + + public void SetIosProperties(NotificationIosProperties value) + { + LogNotSupported(); + } + + public void SetAndroidProperties(NotificationAndroidProperties value) + { + LogNotSupported(); + } + + public void SetTrigger(INotificationTrigger trigger) + { + LogNotSupported(); + } + + public void SetPriority(NotificationPriority value) + { + LogNotSupported(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullMutableNotification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullMutableNotification.cs.meta new file mode 100644 index 00000000..1de1d26d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullMutableNotification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 794a0fe952688444b8e93af48adf7281 +timeCreated: 1564059729 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullNotificationCenterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullNotificationCenterInterface.cs new file mode 100644 index 00000000..0265b3de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullNotificationCenterInterface.cs @@ -0,0 +1,129 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore +{ + internal sealed class NullNotificationCenterInterface : NativeNotificationCenterInterfaceBase + { + #region Constructors + + public NullNotificationCenterInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("NotificationServices"); + } + + #endregion + + #region Base class methods + + public override void RequestPermission(NotificationPermissionOptions options, RequestPermissionInternalCallback callback) + { + LogNotSupported(); + + // send result + callback(NotificationPermissionStatus.Denied, Diagnostics.kFeatureNotSupported); + } + + public override void GetSettings(GetSettingsInternalCallback callback) + { + LogNotSupported(); + + // send result + var settings = new NotificationSettingsInternal( + permissionStatus: NotificationPermissionStatus.Denied, + alertSetting: NotificationSettingStatus.NotSupported, + badgeSetting: NotificationSettingStatus.NotSupported, + carPlaySetting: NotificationSettingStatus.NotSupported, + lockScreenSetting: NotificationSettingStatus.NotSupported, + notificationCenterSetting: NotificationSettingStatus.NotSupported, + soundSetting: NotificationSettingStatus.NotSupported, + criticalAlertSetting: NotificationSettingStatus.NotSupported, + announcementSetting: NotificationSettingStatus.NotSupported, + alertStyle: NotificationAlertStyle.None, + previewStyle: NotificationPreviewStyle.Never, + exactTimingSetting: NotificationSettingStatus.NotSupported); + callback(settings); + } + + public override IMutableNotification CreateMutableNotification(string notificationId) + { + LogNotSupported(); + + return new NullMutableNotification(notificationId); + } + + public override void ScheduleNotification(INotification notification, ScheduleNotificationInternalCallback callback) + { + LogNotSupported(); + + // send result + callback(false, Diagnostics.kFeatureNotSupported); + } + + public override void GetScheduledNotifications(GetNotificationsInternalCallback callback) + { + LogNotSupported(); + + // send result + callback(null, Diagnostics.kFeatureNotSupported); + } + + public override void CancelScheduledNotification(string notificationId) + { + LogNotSupported(); + } + + public override void CancelAllScheduledNotifications() + { + LogNotSupported(); + } + + public override void GetDeliveredNotifications(GetNotificationsInternalCallback callback) + { + LogNotSupported(); + + // send result + callback(null, Diagnostics.kFeatureNotSupported); + } + + public override void RemoveAllDeliveredNotifications() + { + LogNotSupported(); + } + + public override void RegisterForPushNotifications(RegisterForPushNotificationsInternalCallback callback) + { + LogNotSupported(); + + // send result + callback(null, Diagnostics.kFeatureNotSupported); + } + + public override void UnregisterForPushNotifications() + { + LogNotSupported(); + } + + public override bool IsRegisteredForPushNotifications() + { + return false; + } + + public override void SetApplicationIconBadgeNumber(int count) + { + LogNotSupported(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullNotificationCenterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullNotificationCenterInterface.cs.meta new file mode 100644 index 00000000..60af61d3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/NullNotificationCenterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b27f34d6800e0478bab0177836358ae4 +timeCreated: 1564059390 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationServiceType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationServiceType.cs new file mode 100644 index 00000000..e23daa6c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationServiceType.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Defines the type of push notification service which sends the notifications to the device. + /// + public enum PushNotificationServiceType + { + /// Disables receiving remote push notifications completely as no service is used to send push notifications. + None = 0, + + /// Custom push notification backend service which sends the payload to the device in plugin's expected format. + Custom + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationServiceType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationServiceType.cs.meta new file mode 100644 index 00000000..768bdf76 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationServiceType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8fc9a26cf2f184173bb11bdd00027fe9 +timeCreated: 1576151838 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationTrigger.cs new file mode 100644 index 00000000..ce35d26e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationTrigger.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// A trigger condition that indicates the notification was using a Push Notification Service. + /// + [Serializable] + public sealed class PushNotificationTrigger : INotificationTrigger + { + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + public PushNotificationTrigger() + { + // set properties + Repeats = false; + } + + #endregion + + #region INotificationTrigger implementation + + public bool Repeats { get; private set; } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationTrigger.cs.meta new file mode 100644 index 00000000..72a2e238 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/PushNotificationTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 87ccb274f8e8f46d6acc6a520ba4a8cd +timeCreated: 1578033947 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/TimeIntervalNotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/TimeIntervalNotificationTrigger.cs new file mode 100644 index 00000000..b191791e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/TimeIntervalNotificationTrigger.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// A trigger condition that causes a notification to be delivered after the specified amount of time elapses. + /// + /// @ingroup NotificationServices + [Serializable] + public sealed class TimeIntervalNotificationTrigger : INotificationTrigger + { + #region Fields + + [SerializeField] + private double m_timeInterval = 0; + + [SerializeField] + private bool m_repeats = false; + + private DateTime? m_nextTriggerDate; + + #endregion + + #region Properties + + /// + /// The time (in seconds) that must elapse from the current time before the trigger fires. This value must be greater than zero. + /// + public double TimeInterval + { + get + { + return m_timeInterval; + } + } + + /// + /// The next date at which the trigger conditions will be met. + /// + public DateTime? NextTriggerDate + { + get + { + return m_nextTriggerDate; + } + } + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// Time interval. + /// If set to true repeats. + /// Next trigger date. + public TimeIntervalNotificationTrigger(double timeInterval, bool repeats, DateTime? nextTriggerDate = null) + { + // set properties + m_timeInterval = timeInterval; + m_repeats = repeats; + m_nextTriggerDate = nextTriggerDate; + } + + #endregion + + #region INotificationTrigger implementation + + public bool Repeats + { + get + { + return m_repeats; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/TimeIntervalNotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/TimeIntervalNotificationTrigger.cs.meta new file mode 100644 index 00000000..dbaba899 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/NotificationServices/TimeIntervalNotificationTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ce6658931b79b43a6a562ae8066686cd +timeCreated: 1578033947 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp.meta new file mode 100644 index 00000000..25952a7d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d90e8613953594f5da486df846017a31 +folderAsset: yes +timeCreated: 1547778130 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/INativeRateMyAppInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/INativeRateMyAppInterface.cs new file mode 100644 index 00000000..ac052778 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/INativeRateMyAppInterface.cs @@ -0,0 +1,9 @@ +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + public interface INativeRateMyAppInterface : INativeFeatureInterface + { + void RequestStoreReview(); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/INativeRateMyAppInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/INativeRateMyAppInterface.cs.meta new file mode 100644 index 00000000..c2baf49a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/INativeRateMyAppInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 269fb31c4e5664fc7ac9c1b1336d752e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NativeRateMyAppInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NativeRateMyAppInterfaceBase.cs new file mode 100644 index 00000000..88bdec33 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NativeRateMyAppInterfaceBase.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.RateMyAppCore +{ + public abstract class NativeRateMyAppInterfaceBase : NativeFeatureInterfaceBase, INativeRateMyAppInterface + { + #region Constructors + + protected NativeRateMyAppInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeUtilityInterface implementation + + public abstract void RequestStoreReview(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NativeRateMyAppInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NativeRateMyAppInterfaceBase.cs.meta new file mode 100644 index 00000000..d7c88658 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NativeRateMyAppInterfaceBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88a640ac85e3b4828b698f4031c9d7f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NullRateMyAppInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NullRateMyAppInterface.cs new file mode 100644 index 00000000..6079bd29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NullRateMyAppInterface.cs @@ -0,0 +1,34 @@ +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.RateMyAppCore +{ + public class NullRateMyAppInterface : NativeRateMyAppInterfaceBase + { + #region Constructors + + public NullRateMyAppInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("NetworkServices"); + } + + #endregion + + #region Base methods + + public override void RequestStoreReview() + { + LogNotSupported(); + } + + #endregion + + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NullRateMyAppInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NullRateMyAppInterface.cs.meta new file mode 100644 index 00000000..85116bf9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/NullRateMyAppInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f918655863f7147f0a04d6a81182f310 +timeCreated: 1578053378 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyApp.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyApp.cs new file mode 100644 index 00000000..7749064d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyApp.cs @@ -0,0 +1,93 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.NativeUICore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup RateMyApp Rate My App + * @brief Provides option for user to rate the app. + */ + + /// + /// The RateMyApp class provides an unique way to prompt user to review the app. + /// + /// + /// By default, prompt system makes use of configuration available in RateMyApp section of Essential Kit Settings. + /// These values can be adjusted according to developer preference. + /// + /// @ingroup RateMyApp + public class RateMyApp + { + #region Static properties + + public static RateMyAppUnitySettings UnitySettings; + + [ClearOnReload] + private static RateMyAppController s_controller = null; + + #endregion + + #region Static events + + /// + /// Event triggered when user clicks on any of the buttons in the confirmation dialog. + /// + public static event Callback OnConfirmationPromptAction; + + #endregion + + #region Static methods + + /// @name Advanced Usage + /// @{ + + /// + /// Initialize the RateMyApp module with the given settings. This call is optional and only need to be called if you have custom settings to initialize this feature. + /// + public static void Initialize(RateMyAppUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Set properties + UnitySettings = settings; + + s_controller = new RateMyAppController(settings); + s_controller.SetConfirmationDialogCallback( onAction: (selectedAction) => OnConfirmationPromptAction?.Invoke(selectedAction)); + + //Debug.LogError("Reloading... : Check here added to "); + } + /// @} + + /// + /// Checks whether it is allowed to show the rate my app prompt or not. Returns true when the constraints set in settings are met, else false. + /// + /// + public static bool IsAllowedToRate() + { + return s_controller.CanShow(); + } + + /// + /// Immediately prompts user to review. This method ignores the conditions to be satisfied and presents the confirmation dialog(optional) followed by native store review dialog(based on quota). + /// + /// If set to true skip confirmation prompt. + public static void AskForReviewNow(bool skipConfirmation = false) + { + // check whether feature is available + if (UnitySettings == null || !UnitySettings.IsEnabled) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Feature is not active or not yet initialised."); + return; + } + + s_controller.Show(skipConfirmation); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyApp.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyApp.cs.meta new file mode 100644 index 00000000..d90a242f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyApp.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 245ecfb49accd4c73803eb22f83ef7ab +timeCreated: 1547710259 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppConfirmationPromptActionType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppConfirmationPromptActionType.cs new file mode 100644 index 00000000..23fbf1c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppConfirmationPromptActionType.cs @@ -0,0 +1,23 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Enum representing the actions that can be taken when the rate my app confirmation prompt is shown. + /// + public enum RateMyAppConfirmationPromptActionType + { + /// + /// The user has chosen to be reminded later. + /// + RemindLater, + + /// + /// The user has chosen to cancel. + /// + Cancel, + + /// + /// The user has chosen to rate the app. + /// + Ok, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppConfirmationPromptActionType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppConfirmationPromptActionType.cs.meta new file mode 100644 index 00000000..0c245160 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppConfirmationPromptActionType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51f139f60081742a59264c0bc350c59f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppController.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppController.cs new file mode 100644 index 00000000..7a826d01 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppController.cs @@ -0,0 +1,214 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using System.Globalization; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + internal class RateMyAppController + { + #region Fields + + private RateMyAppUnitySettings m_settings = null; + private RateMyAppPresenter m_presenter; + private RateMyAppControllerStateInfo m_stateInfo = null; + private Action m_onConfirmationPromptAction; + + #endregion + + #region Unity methods + + public RateMyAppController(RateMyAppUnitySettings settings) + { + // initialise + m_settings = settings; + m_presenter = new RateMyAppPresenter(settings.ConfirmationDialogSettings, OnConfirmationDialogAction); + m_stateInfo = LoadStateInfo() ?? new RateMyAppControllerStateInfo(); + + RecordAppLaunch(); + + if(settings.AutoShow) + { + CallbackDispatcher.InvokeOnMainThread(() => { + SurrogateCoroutine.StopCoroutine(CheckForPresentation()); + SurrogateCoroutine.StartCoroutine(CheckForPresentation()); + }); + } + } + + + private IEnumerator CheckForPresentation() + { + while(true) + { + if(!m_presenter.IsShowing()) + { + if(CanShow()) + { + m_presenter.Show(skipConfirmationPrompt: false); + } + } + + yield return new WaitForSeconds(1.0f); + } + } + + #endregion + + #region Public methods + + public void SetConfirmationDialogCallback(Action onAction) + { + m_onConfirmationPromptAction = onAction; + } + + public void Show(bool skipConfirmationPrompt = false) + { + m_presenter.Show(skipConfirmationPrompt); + } + + + #endregion + + #region Private methods + + private void OnConfirmationDialogAction(RateMyAppConfirmationPromptActionType selectedButtonType) + { + switch (selectedButtonType) + { + case RateMyAppConfirmationPromptActionType.RemindLater: + break; + + case RateMyAppConfirmationPromptActionType.Cancel: + m_stateInfo.IsActive = false; + SetDirty(); + break; + + case RateMyAppConfirmationPromptActionType.Ok: + m_stateInfo.VersionLastRated = Application.identifier; + SetDirty(); + break; + } + + m_onConfirmationPromptAction?.Invoke(selectedButtonType); + } + + + + private void RecordAppLaunch() + { + m_stateInfo.AppLaunchCount++; + SetDirty(); + } + + private void SetPromptLastShown(DateTime dateTime, bool incrementPromptCount) + { + m_stateInfo.PromptLastShown = dateTime; + if (incrementPromptCount) + { + m_stateInfo.PromptCount++; + } + SetDirty(); + } + + private bool CheckIfValidatorConditionsAreSatisfied() + { + // check whether constraints are satisfied + var currentTime = DateTime.UtcNow; + var promptLastShown = m_stateInfo.PromptLastShown; + if (promptLastShown == null) + { + SetPromptLastShown(currentTime, incrementPromptCount: false); + return false; + } + + var constraints = (m_stateInfo.PromptCount == 0) ? m_settings.ConstraintsSettings.InitialPromptConstraints : m_settings.ConstraintsSettings.RepeatPromptConstraints; + if (m_stateInfo.AppLaunchCount > constraints.MinLaunches && constraints.MinLaunches != -1) + { + int hoursSincePromptLastShown = (int)(currentTime - promptLastShown.Value.ToUniversalTime()).TotalHours; + if (hoursSincePromptLastShown > constraints.MinHours) + { + SetPromptLastShown(currentTime, incrementPromptCount: true); + return true; + } + } + + return false; + } + + #endregion + + #region Serialize methods + + private void SetDirty() + { + SaveStateInfo(m_stateInfo); + } + + private const string kPrefKey = "rma_state"; + private RateMyAppControllerStateInfo LoadStateInfo() + { + string savedValue = PlayerPrefs.GetString(kPrefKey); + if (!string.IsNullOrEmpty(savedValue)) + { + return JsonUtility.FromJson(savedValue); + } + return null; + } + + private void SaveStateInfo(RateMyAppControllerStateInfo stateInfo) + { + Assert.IsArgNotNull(stateInfo, "stateInfo"); + + string jsonStr = JsonUtility.ToJson(stateInfo); + PlayerPrefs.SetString(kPrefKey, jsonStr); + } + + #endregion + + #region IRateMyAppValidator implementation + + public bool CanShow() + { + // check if user has denied to show + if (!m_stateInfo.IsActive) + { + return false; + } + + // if we don't want any prompts, -1 is set in settings. + if (m_settings.ConstraintsSettings.InitialPromptConstraints.MinLaunches == -1 && + m_settings.ConstraintsSettings.RepeatPromptConstraints.MinLaunches == -1) + { + return false; + } + + // check if rating is provided already + var versionLastRated = m_stateInfo.VersionLastRated; + if (!string.IsNullOrEmpty(versionLastRated)) + { + if(!m_settings.AllowReratingForNewVersion) + { + return false; + } + + // check if version matches, then it means app is already reviewed for this version + string currentVersion = Application.version; + if (string.Compare(currentVersion, versionLastRated, StringComparison.InvariantCulture) <= 0) + { + return false; + } + } + + return CheckIfValidatorConditionsAreSatisfied(); + } + +#endregion +#region Nested types + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppController.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppController.cs.meta new file mode 100644 index 00000000..29db48e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f45b74ee3d9ba4e549904e922d4dc7c4 +timeCreated: 1578052087 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppControllerStateInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppControllerStateInfo.cs new file mode 100644 index 00000000..e8a1af48 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppControllerStateInfo.cs @@ -0,0 +1,127 @@ +using System; +using System.Globalization; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + internal class RateMyAppControllerStateInfo + { + #region Fields + + [SerializeField] + private string m_versionLastRated; + + [SerializeField] + private int m_appLaunchCount; + + [SerializeField] + private string m_promptLastShown; + + [SerializeField] + private int m_promptCount; + + [SerializeField] + private bool m_isActive; + + #endregion + + #region Properties + + public string VersionLastRated + { + get + { + return m_versionLastRated; + } + set + { + m_versionLastRated = value; + } + } + + public int AppLaunchCount + { + get + { + return m_appLaunchCount; + } + set + { + m_appLaunchCount = value; + } + } + + public DateTime? PromptLastShown + { + get + { + return string.IsNullOrEmpty(m_promptLastShown) ? null : DeserializeDateTime(m_promptLastShown); + } + set + { + m_promptLastShown = (value == null) ? null : SerializeDateTime(value.Value); + } + } + + public int PromptCount + { + get + { + return m_promptCount; + } + set + { + m_promptCount = value; + } + } + + public bool IsActive + { + get + { + return m_isActive; + } + set + { + m_isActive = value; + } + } + + #endregion + + #region Constructors + + public RateMyAppControllerStateInfo() + { + // set properties + m_versionLastRated = null; + m_appLaunchCount = 0; + m_promptLastShown = null; + m_promptCount = 0; + m_isActive = true; + } + + #endregion + + #region Static methods + + private static string SerializeDateTime(DateTime dateTime) + { + return dateTime.ToString("O"); + } + + private static DateTime? DeserializeDateTime(string dateTimeStr) + { + DateTime dateTime; + + if (DateTime.TryParse(dateTimeStr, CultureInfo.InvariantCulture,DateTimeStyles.AdjustToUniversal, out dateTime)) + { + return dateTime; + } + return null; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppControllerStateInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppControllerStateInfo.cs.meta new file mode 100644 index 00000000..64784f8c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppControllerStateInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 980473855e41d44edace52cc65ad55b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppLocalisationKey.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppLocalisationKey.cs new file mode 100644 index 00000000..d46c3d75 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppLocalisationKey.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Keys used to localize the rate my app feature. + /// + /// @ingroup RateMyApp + public static class RateMyAppLocalisationKey + { + /// + /// The key for the title of the rate my app prompt. + /// + public const string kTitle = "rma_title"; + + /// + /// The key for the description of the rate my app prompt. + /// + public const string kDescription = "rma_description"; + + /// + /// The key for the 'Ok' button of the rate my app prompt. + /// + public const string kOkButton = "rma_button_ok"; + + /// + /// The key for the 'Cancel' button of the rate my app prompt. + /// + public const string kCancelButton = "rma_button_cancel"; + + /// + /// The key for the 'Remind me later' button of the rate my app prompt. + /// + public const string kRemindLaterButton = "rma_button_remind_later"; + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppLocalisationKey.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppLocalisationKey.cs.meta new file mode 100644 index 00000000..89cbd051 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppLocalisationKey.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e2af3dffca0c460992f8f3004f011e6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppPresenter.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppPresenter.cs new file mode 100644 index 00000000..a0944bc3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppPresenter.cs @@ -0,0 +1,90 @@ +using System; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + internal class RateMyAppPresenter + { + + + #region Fields + private INativeRateMyAppInterface m_nativeInterface = null; + + private RateMyAppConfirmationDialogSettings m_confirmationDialogSettings; + + private Action m_onConfirmationPromptAction = null; + private bool m_isShowingPrompt = false; + + #endregion + + #region Constructor + + public RateMyAppPresenter(RateMyAppConfirmationDialogSettings settings, Action onConfirmationPromptAction) + { + m_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.RateMyApp, true); + m_confirmationDialogSettings = settings; + m_onConfirmationPromptAction = onConfirmationPromptAction; + } + + #endregion + + #region Public methods + + public bool IsShowing() + { + return m_isShowingPrompt; + } + + public void Show(bool skipConfirmationPrompt) + { + // create prompt + var dialogSettings = m_confirmationDialogSettings; + if (dialogSettings.CanShow && !skipConfirmationPrompt) + { + m_isShowingPrompt = true; + + var localisationServiceProvider = ExternalServiceProvider.LocalisationServiceProvider; + var dialogBuilder = new AlertDialogBuilder() + .SetTitle(localisationServiceProvider.GetLocalisedString(key: RateMyAppLocalisationKey.kTitle, defaultValue: dialogSettings.PromptTitle)) + .SetMessage(localisationServiceProvider.GetLocalisedString(key: RateMyAppLocalisationKey.kDescription, defaultValue: dialogSettings.PromptDescription)) + .AddButton(localisationServiceProvider.GetLocalisedString(key: RateMyAppLocalisationKey.kOkButton, defaultValue: dialogSettings.OkButtonLabel), () => OnPromptButtonPressed(RateMyAppConfirmationPromptActionType.Ok)) + .AddCancelButton(localisationServiceProvider.GetLocalisedString(key: RateMyAppLocalisationKey.kCancelButton, defaultValue: dialogSettings.CancelButtonLabel), () => OnPromptButtonPressed(RateMyAppConfirmationPromptActionType.Cancel)); + if (dialogSettings.CanShowRemindMeLaterButton) + { + dialogBuilder.AddButton(localisationServiceProvider.GetLocalisedString(key: RateMyAppLocalisationKey.kRemindLaterButton, defaultValue: dialogSettings.RemindLaterButtonLabel), () => OnPromptButtonPressed(RateMyAppConfirmationPromptActionType.RemindLater)); + } + var newAlertDialog = dialogBuilder.Build(); + newAlertDialog.Show(); + } + else + { + ShowReviewWindow(); + } + } + + #endregion + + #region Private methods + + private void ShowReviewWindow() + { + m_nativeInterface.RequestStoreReview(); + } + + private void OnPromptButtonPressed(RateMyAppConfirmationPromptActionType selectedButtonType) + { + // reset flag + m_isShowingPrompt = false; + + if(selectedButtonType == RateMyAppConfirmationPromptActionType.Ok) + { + ShowReviewWindow(); + } + + m_onConfirmationPromptAction?.Invoke(selectedButtonType); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppPresenter.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppPresenter.cs.meta new file mode 100644 index 00000000..ea458a88 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/RateMyApp/RateMyAppPresenter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cc2f30fe1d6b4946bda86e92455aa8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup.meta new file mode 100644 index 00000000..ea18519a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b2a07ef3f8d94433395bf78231f06e9c +folderAsset: yes +timeCreated: 1548142906 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AddressBookUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AddressBookUnitySettings.cs new file mode 100644 index 00000000..f8ffcaa1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AddressBookUnitySettings.cs @@ -0,0 +1,50 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The AddressBookUnitySettings class is used to configure Address Book module of Essential Kit. + /// + [Serializable] + public class AddressBookUnitySettings : SettingsPropertyGroup + { + #region Fields + + /// + /// The default image to be used for contact. + /// + [SerializeField] + [Tooltip("The default image to be used for contact.")] + private Texture2D m_defaultImage; + + #endregion + + #region Properties + + /// + /// Gets the default image to be used for contact. + /// + public Texture2D DefaultImage => m_defaultImage; + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class with the specified settings. + /// + /// if set to true [is enabled]. + public AddressBookUnitySettings(bool isEnabled = true) + : base(isEnabled: isEnabled, name: NativeFeatureType.kAddressBook) + { + // set properties + m_defaultImage = null; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AddressBookUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AddressBookUnitySettings.cs.meta new file mode 100644 index 00000000..d85ac25a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AddressBookUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91bddb04b2be64defa20e1afc79d5793 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AppUpdaterUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AppUpdaterUnitySettings.cs new file mode 100644 index 00000000..1c66fadd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AppUpdaterUnitySettings.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class AppUpdaterUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField] + [Tooltip("The default text used for update prompt title, if displayed.")] + private string m_defaultPromptTitle = "New version available"; + + [SerializeField] + [Tooltip("The default text used for update prompt message, if displayed.")] + private string m_defaultPromptMessage = "A new version of this app is available with exciting new features and improvements."; + + #endregion + + #region Properties + + public string DefaultPromptTitle => m_defaultPromptTitle; + public string DefaultPromptMessage => m_defaultPromptMessage; + + #endregion + + #region Constructors + + public AppUpdaterUnitySettings(bool isEnabled = true, string defaultPromptTitle = null, string defaultPromptMessage = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kAppUpdater) + { + // set properties + m_defaultPromptTitle = defaultPromptTitle; + m_defaultPromptMessage = defaultPromptMessage; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AppUpdaterUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AppUpdaterUnitySettings.cs.meta new file mode 100644 index 00000000..490ba604 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/AppUpdaterUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3591d895c5e284cc4a77db8189abf31f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/ApplicationSettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/ApplicationSettings.cs new file mode 100644 index 00000000..0a454140 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/ApplicationSettings.cs @@ -0,0 +1,68 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class ApplicationSettings + { + #region Fields + + [SerializeField] + private DebugLogger.LogLevel m_logLevel; + + [SerializeField] + [Tooltip("Stores the registration ids of this app.")] + private RuntimePlatformConstantSet m_appStoreIds; + + [SerializeField] + [Tooltip("Usage permission settings.")] + private NativeFeatureUsagePermissionSettings m_usagePermissionSettings; + + #endregion + + #region Properties + + public DebugLogger.LogLevel LogLevel => m_logLevel; + + public NativeFeatureUsagePermissionSettings UsagePermissionSettings => m_usagePermissionSettings; + + #endregion + + #region Constructors + + public ApplicationSettings(RuntimePlatformConstantSet appStoreIds = null, + NativeFeatureUsagePermissionSettings usagePermissionSettings = null, DebugLogger.LogLevel logLevel = DebugLogger.LogLevel.Critical) + { + // set properties + m_appStoreIds = appStoreIds ?? new RuntimePlatformConstantSet(); + m_usagePermissionSettings = usagePermissionSettings ?? new NativeFeatureUsagePermissionSettings(); + m_logLevel = logLevel; + } + + #endregion + + #region Public methods + + public string GetAppStoreIdForPlatform(RuntimePlatform platform) + { + return m_appStoreIds.GetConstantForPlatform(platform); + } + + public string GetAppStoreIdForActivePlatform() + { + return m_appStoreIds.GetConstantForActivePlatform(); + } + + public string GetAppStoreIdForActiveOrSimulationPlatform() + { + return m_appStoreIds.GetConstantForActiveOrSimulationPlatform(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/ApplicationSettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/ApplicationSettings.cs.meta new file mode 100644 index 00000000..eb41bbb8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/ApplicationSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 54a341f97f37043c3aa3dc21b4094a20 +timeCreated: 1548142292 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.AndroidPlatformProperties.cs new file mode 100644 index 00000000..cf245941 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.AndroidPlatformProperties.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public partial class BillingServicesUnitySettings + { + [Serializable] + public class AndroidPlatformProperties + { + #region Fields + + [SerializeField] + [Tooltip("Public key provided by Google Play Services for in-app billing.")] + private string m_publicKey; + + #endregion + + #region Properties + + public string PublicKey => PropertyHelper.GetValueOrDefault(m_publicKey)?.Trim(); + + #endregion + + #region Constructors + + public AndroidPlatformProperties(string publicKey = null) + { + // set properties + m_publicKey = publicKey; + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..4fd95fe4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b55ba157d522f41d7a1f1243da8adf67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.cs new file mode 100644 index 00000000..19cc83c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using UnityEngine.Serialization; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + /// + /// The BillingServicesUnitySettings class is used to configure the Billing module of Essential Kit. + /// + public partial class BillingServicesUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField, FormerlySerializedAs("m_billingProductMetaArray")] + [Tooltip("Array contains information of the products used in the app.")] + private BillingProductDefinition[] m_products; + + [SerializeField] + [Tooltip("If enabled, completed transactions are removed from queue automatically. Else, you need to call FinishTransactions method manually. This is usually set to off if you have external verification system.")] + private bool m_autoFinishTransactions; + + [SerializeField] + [Header("Platform specific")] + [Tooltip("Android specific properties.")] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + /// + /// Gets an array of product definitions. + /// + /// Array of product definitions. + public BillingProductDefinition[] Products => m_products; + + /// + /// Gets a value indicating whether completed transactions are finished automatically. + /// + /// + /// true if completed transactions are finished automatically; otherwise, false. + /// + public bool AutoFinishTransactions => m_autoFinishTransactions; + + /// + /// Gets the Android specific properties. + /// + /// The Android properties. + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class with the specified settings. + /// + /// if set to true [is enabled]. + /// Array of product definitions. + /// if set to true completed transactions are finished automatically. + /// Android specific properties. + public BillingServicesUnitySettings(bool isEnabled = true, BillingProductDefinition[] products = null, + bool autoFinishTransactions = true, + AndroidPlatformProperties androidProperties = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kBillingServices) + { + // set properties + m_products = products ?? new BillingProductDefinition[0]; + m_autoFinishTransactions = autoFinishTransactions; + m_androidProperties = androidProperties ?? new AndroidPlatformProperties(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.cs.meta new file mode 100644 index 00000000..25239952 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/BillingServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4bcc663d579564d9e8c2bcfa7a1137ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.AndroidPlatformProperties.cs new file mode 100644 index 00000000..d36947e7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.AndroidPlatformProperties.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public partial class CloudServicesUnitySettings + { + [Serializable] + public class AndroidPlatformProperties + { + #region Fields + + [SerializeField] + [ReadOnly("On Android, both Cloud Services and Game Services internally use Google Play Services. So, setting play services application id in Game Services settings will get reflected here.")] + [Tooltip ("Your application id in Google Play services. Set this value in Game Services settings -> Android Properties -> Play Services Application Id.")] + private string m_playServicesApplicationId; + + #endregion + + #region Properties + + public string PlayServicesApplicationId + { + get + { + return m_playServicesApplicationId; + } + set + { + m_playServicesApplicationId = value; + } + } + + #endregion + + #region Constructors + + public AndroidPlatformProperties(string playServicesApplicationId = null) + { + // set properties + m_playServicesApplicationId = playServicesApplicationId; + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..1c55c064 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 71a3ea8121ca14f73b02f16d90dee169 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.cs new file mode 100644 index 00000000..688859ce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public partial class CloudServicesUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField] + [Tooltip("Android specific settings.")] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + public AndroidPlatformProperties AndroidProperties { get { return m_androidProperties; } } + + #endregion + + #region Constructors + + public CloudServicesUnitySettings(bool isEnabled = true, AndroidPlatformProperties androidProperties = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kCloudServices) + { + m_androidProperties = androidProperties; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.cs.meta new file mode 100644 index 00000000..d3b1db7c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/CloudServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44e339b004e924d4ba48f583491be7f1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.AndroidPlatformProperties.cs new file mode 100644 index 00000000..419815bf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.AndroidPlatformProperties.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + public partial class DeepLinkServicesUnitySettings + { + [Serializable] + public class AndroidPlatformProperties + { + #region Fields + + [SerializeField] + private List m_customSchemeUrls; + + [SerializeField] + [Tooltip("Universal links are termed as App Links on Android")] + private List m_universalLinks; + + #endregion + + #region Properties + + public DeepLinkDefinition[] CustomSchemeUrls => m_customSchemeUrls.ToArray(); + + public DeepLinkDefinition[] UniversalLinks => m_universalLinks.ToArray(); + + #endregion + + #region Constructors + + public AndroidPlatformProperties(DeepLinkDefinition[] customSchemeUrls = null, DeepLinkDefinition[] universalLinks = null) + { + // set properties + m_customSchemeUrls = new List(customSchemeUrls ?? new DeepLinkDefinition[0]); + m_universalLinks = new List(universalLinks ?? new DeepLinkDefinition[0]); + } + + #endregion + + #region Public methods + + public void AddCustomSchemeUrl(DeepLinkDefinition definition) + { + AddDeepLinkDefinition(m_customSchemeUrls, definition); + } + + public void AddUniversalLink(DeepLinkDefinition definition) + { + AddDeepLinkDefinition(m_universalLinks, definition); + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..eb8fd602 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96e3f66e6ac4745b3b32533027ba284a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.IosPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.IosPlatformProperties.cs new file mode 100644 index 00000000..6bccbf59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.IosPlatformProperties.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + public partial class DeepLinkServicesUnitySettings + { + [Serializable] + public class IosPlatformProperties + { + #region Fields + + [SerializeField] + private List m_customSchemeUrls; + + [SerializeField] + private List m_universalLinks; + + #endregion + + #region Properties + + public DeepLinkDefinition[] CustomSchemeUrls => m_customSchemeUrls.ToArray(); + + public DeepLinkDefinition[] UniversalLinks => m_universalLinks.ToArray(); + + #endregion + + #region Constructors + + public IosPlatformProperties(DeepLinkDefinition[] customSchemeUrls = null, DeepLinkDefinition[] universalLinks = null) + { + // set properties + m_customSchemeUrls = new List(customSchemeUrls ?? new DeepLinkDefinition[0]); + m_universalLinks = new List(universalLinks ?? new DeepLinkDefinition[0]); + } + + #endregion + + #region Public methods + + public void AddCustomSchemeUrl(DeepLinkDefinition definition) + { + AddDeepLinkDefinition(m_customSchemeUrls, definition); + } + + public void AddUniversalLink(DeepLinkDefinition definition) + { + AddDeepLinkDefinition(m_universalLinks, definition); + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.IosPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.IosPlatformProperties.cs.meta new file mode 100644 index 00000000..53c13852 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.IosPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 596fdaa0c5fbe413f911bb1819f7090d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.cs new file mode 100644 index 00000000..eb8afc34 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public partial class DeepLinkServicesUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField] + private IosPlatformProperties m_iosProperties; + + [SerializeField] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + public IosPlatformProperties IosProperties => m_iosProperties; + + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + public DeepLinkServicesUnitySettings(bool isEnabled = true, IosPlatformProperties iosProperties = null, + AndroidPlatformProperties androidProperties = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kDeepLinkServices) + { + // set properties + m_iosProperties = iosProperties ?? new IosPlatformProperties(); + m_androidProperties = androidProperties ?? new AndroidPlatformProperties(); + } + + #endregion + + #region Static methods + + private static int FindDeepLinkIndexWithIdentifier(List list, string identifier) + { + return list.FindIndex((item) => string.Equals(item.Identifier, identifier)); + } + + private static void AddDeepLinkDefinition(List list, DeepLinkDefinition deepLinkSettings) + { + int index = FindDeepLinkIndexWithIdentifier(list, deepLinkSettings.Identifier); + if (index != -1) + { + list[index] = deepLinkSettings; + } + else + { + list.Add(deepLinkSettings); + } + } + + #endregion + + #region Public methods + + public DeepLinkDefinition[] GetCustomSchemeUrlsForPlatform(NativePlatform platform) + { + switch (platform) + { + case NativePlatform.iOS: + return m_iosProperties.CustomSchemeUrls; + + case NativePlatform.Android: + return m_androidProperties.CustomSchemeUrls; + + default: + return new DeepLinkDefinition[0]; + } + } + + public DeepLinkDefinition[] GetUniversalLinksForPlatform(NativePlatform platform) + { + switch (platform) + { + case NativePlatform.iOS: + return m_iosProperties.UniversalLinks; + + case NativePlatform.Android: + return m_androidProperties.UniversalLinks; + + default: + return new DeepLinkDefinition[0]; + } + } + + public void AddCustomSchemeUrl(DeepLinkDefinition definition, NativePlatform platform) + { + switch (platform) + { + case NativePlatform.iOS: + m_iosProperties.AddCustomSchemeUrl(definition); + break; + + case NativePlatform.Android: + m_androidProperties.AddCustomSchemeUrl(definition); + break; + } + } + + public void AddUniversalLink(DeepLinkDefinition definition, NativePlatform platform) + { + switch (platform) + { + case NativePlatform.iOS: + m_iosProperties.AddUniversalLink(definition); + break; + + case NativePlatform.Android: + m_androidProperties.AddUniversalLink(definition); + break; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.cs.meta new file mode 100644 index 00000000..04d298f5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/DeepLinkServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1ee8a3f6bcd34d00a6cbd9076f8030f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/EssentialKitSettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/EssentialKitSettings.cs new file mode 100644 index 00000000..482b9a05 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/EssentialKitSettings.cs @@ -0,0 +1,390 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + public class EssentialKitDomain + { + public static string Default => "VoxelBusters.CoreLibrary.EssentialKit"; + } + + public class EssentialKitSettings : SettingsObject + { + #region Static fields + + [ClearOnReload] + private static EssentialKitSettings s_sharedInstance; + + [ClearOnReload] + private static UnityPackageDefinition s_package; + + #endregion + + #region Fields + + [SerializeField] + private ApplicationSettings m_applicationSettings = new ApplicationSettings(); + + [SerializeField] + private AddressBookUnitySettings m_addressBookSettings = new AddressBookUnitySettings(); + + [SerializeField] + private AppUpdaterUnitySettings m_appUpdaterSettings = new AppUpdaterUnitySettings(); + + [SerializeField] + private NativeUIUnitySettings m_nativeUISettings = new NativeUIUnitySettings(); + + [SerializeField] + private SharingServicesUnitySettings m_sharingServicesSettings = new SharingServicesUnitySettings(); + + [SerializeField] + private CloudServicesUnitySettings m_cloudServicesSettings = new CloudServicesUnitySettings(); + + [SerializeField] + private GameServicesUnitySettings m_gameServicesSettings = new GameServicesUnitySettings(); + + [SerializeField] + private BillingServicesUnitySettings m_billingServicesSettings = new BillingServicesUnitySettings(); + + [SerializeField] + private NetworkServicesUnitySettings m_networkServicesSettings = new NetworkServicesUnitySettings(); + + [SerializeField] + private WebViewUnitySettings m_webViewSettings = new WebViewUnitySettings(); + + [SerializeField] + private NotificationServicesUnitySettings m_notificationServicesSettings = new NotificationServicesUnitySettings(); + + [SerializeField] + private MediaServicesUnitySettings m_mediaServicesSettings = new MediaServicesUnitySettings(); + + [SerializeField] + private DeepLinkServicesUnitySettings m_deepLinkServicesSettings = new DeepLinkServicesUnitySettings(); + + [SerializeField] + private UtilityUnitySettings m_utilitySettings = new UtilityUnitySettings(); + + [SerializeField] + [Tooltip("RateMyApp settings.")] + private RateMyAppUnitySettings m_rateMyAppSettings = new RateMyAppUnitySettings(); + + #endregion + + #region Static properties + + internal static UnityPackageDefinition Package => ObjectHelper.CreateInstanceIfNull( + ref s_package, + () => + { + return new UnityPackageDefinition(name: "com.voxelbusters.essentialkit", + displayName: "Essential Kit", + version: "3.2.1", + defaultInstallPath: $"Assets/Plugins/VoxelBusters/EssentialKit", + dependencies: CoreLibrarySettings.Package); + }); + + public static string PackageName => Package.Name; + + public static string DisplayName => Package.DisplayName; + + public static string Version => Package.Version; + + public static string DefaultSettingsAssetName => "EssentialKitSettings"; + + public static string DefaultSettingsAssetPath => $"{Package.GetMutableResourcesPath()}/{DefaultSettingsAssetName}.asset"; + + public static string PersistentDataPath => Package.PersistentDataPath; + + public static EssentialKitSettings Instance => GetSharedInstanceInternal(); + + #endregion + + #region Properties + + public ApplicationSettings ApplicationSettings + { + get => m_applicationSettings; + set => m_applicationSettings = value; + } + + public AddressBookUnitySettings AddressBookSettings + { + get => m_addressBookSettings; + set => m_addressBookSettings = value; + } + + public AppUpdaterUnitySettings AppUpdaterSettings + { + get => m_appUpdaterSettings; + set => m_appUpdaterSettings = value; + } + + + public NativeUIUnitySettings NativeUISettings + { + get => m_nativeUISettings; + set => m_nativeUISettings = value; + } + + public SharingServicesUnitySettings SharingServicesSettings + { + get => m_sharingServicesSettings; + set => m_sharingServicesSettings = value; + } + + public CloudServicesUnitySettings CloudServicesSettings + { + get => m_cloudServicesSettings; + set => m_cloudServicesSettings = value; + } + + public GameServicesUnitySettings GameServicesSettings + { + get => m_gameServicesSettings; + set => m_gameServicesSettings = value; + } + + public BillingServicesUnitySettings BillingServicesSettings + { + get => m_billingServicesSettings; + set => m_billingServicesSettings = value; + } + + public NetworkServicesUnitySettings NetworkServicesSettings + { + get => m_networkServicesSettings; + set => m_networkServicesSettings = value; + } + + public WebViewUnitySettings WebViewSettings + { + get => m_webViewSettings; + set => m_webViewSettings = value; + } + + public NotificationServicesUnitySettings NotificationServicesSettings + { + get => m_notificationServicesSettings; + set => m_notificationServicesSettings = value; + } + + public MediaServicesUnitySettings MediaServicesSettings + { + get => m_mediaServicesSettings; + set => m_mediaServicesSettings = value; + } + + public DeepLinkServicesUnitySettings DeepLinkServicesSettings + { + get => m_deepLinkServicesSettings; + set => m_deepLinkServicesSettings = value; + } + + public UtilityUnitySettings UtilitySettings + { + get => m_utilitySettings; + set => m_utilitySettings = value; + } + + public RateMyAppUnitySettings RateMyAppSettings + { + get => m_rateMyAppSettings; + set => m_rateMyAppSettings = value; + } + + #endregion + + #region Static methods + + public static void SetSettings(EssentialKitSettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // set properties + s_sharedInstance = settings; + } + + private static EssentialKitSettings GetSharedInstanceInternal(bool throwError = true) + { + if (null == s_sharedInstance) + { + // check whether we are accessing in edit or play mode + var assetPath = DefaultSettingsAssetName; + var settings = Resources.Load(assetPath); + if (throwError && (null == settings)) + { + throw Diagnostics.PluginNotConfiguredException("Essential Kit"); + } + + // store reference + s_sharedInstance = settings; + } + + return s_sharedInstance; + } + + #endregion + + #region Base class methods + + protected override void UpdateLoggerSettings() + { +#if NATIVE_PLUGINS_DEBUG + DebugLogger.SetLogLevel(ApplicationSettings.LogLevel, EssentialKitDomain.Default, CoreLibraryDomain.NativePlugins, CoreLibraryDomain.Default, "VoxelBusters"); +#else + DebugLogger.SetLogLevel(ApplicationSettings.LogLevel, EssentialKitDomain.Default); +#endif + } + + protected override void OnValidate() + { + base.OnValidate(); + + UpdateLoggerSettings(); + SyncSettings(); + } + + #endregion + + #region Private methods + + private string[] GetAvailableFeatureNames() + { + return new string[] + { + NativeFeatureType.kAddressBook, + NativeFeatureType.kAppUpdater, + NativeFeatureType.kBillingServices, + NativeFeatureType.kCloudServices, + NativeFeatureType.kGameServices, + NativeFeatureType.kMediaServices, + NativeFeatureType.kNativeUI, + NativeFeatureType.kNetworkServices, + NativeFeatureType.kNotificationServices, + NativeFeatureType.kRateMyApp, + NativeFeatureType.kSharingServices, + NativeFeatureType.kWebView, + NativeFeatureType.kDeepLinkServices, + NativeFeatureType.kExtras + }; + } + + private string[] GetUsedFeatureNames() + { + var usedFeatures = new List(); + if (m_addressBookSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kAddressBook); + } + if (m_appUpdaterSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kAppUpdater); + } + if (m_billingServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kBillingServices); + } + if (m_cloudServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kCloudServices); + } + if (m_gameServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kGameServices); + } + if (m_mediaServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kMediaServices); + } + if (m_nativeUISettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kNativeUI); + } + if (m_networkServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kNetworkServices); + } + if (m_notificationServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kNotificationServices); + } + if (m_sharingServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kSharingServices); + } + if (m_webViewSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kWebView); + } + if (m_deepLinkServicesSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kDeepLinkServices); + } + if (m_rateMyAppSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kRateMyApp); + } + if (usedFeatures.Count > 0) + { + usedFeatures.Add(NativeFeatureType.kNativeUI);//Required for showing confirmation dialog + } + if (m_utilitySettings.IsEnabled || m_rateMyAppSettings.IsEnabled) + { + usedFeatures.Add(NativeFeatureType.kExtras); + } + + return usedFeatures.ToArray(); + } + + + private void InitialiseFeatureIfRequired(string feature, Action initialiseAction) + { + if (IsFeatureUsed(feature)) + { + initialiseAction.Invoke(); + } + } + + private void SyncSettings() + { + //Cloud Services Play Services Application Id + if (m_cloudServicesSettings.IsEnabled) + { + m_cloudServicesSettings.AndroidProperties.PlayServicesApplicationId = m_gameServicesSettings.AndroidProperties.PlayServicesApplicationId; + } + } + + #endregion + + #region Public methods + + public void InitialiseFeatures() + { + // Initialize required features + InitialiseFeatureIfRequired(NativeFeatureType.kAddressBook, () => AddressBook.Initialize(m_addressBookSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kAppUpdater, () => AppUpdater.Initialize(m_appUpdaterSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kBillingServices, () => BillingServices.Initialize(m_billingServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kCloudServices, () => CloudServices.Initialize(m_cloudServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kDeepLinkServices, () => DeepLinkServices.Initialize(m_deepLinkServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kGameServices, () => GameServices.Initialize(m_gameServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kMediaServices, () => MediaServices.Initialize(m_mediaServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kNetworkServices, () => NetworkServices.Initialize(m_networkServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kNotificationServices, () => NotificationServices.Initialize(m_notificationServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kNativeUI, () => NativeUI.Initialize(m_nativeUISettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kRateMyApp, () => RateMyApp.Initialize(m_rateMyAppSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kSharingServices, () => SharingServices.Initialize(m_sharingServicesSettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kExtras, () => Utilities.Initialize(m_utilitySettings)); + InitialiseFeatureIfRequired(NativeFeatureType.kWebView, () => WebView.Initialize(m_webViewSettings)); + } + + public bool IsFeatureUsed(string name) + { + return Array.Exists(GetUsedFeatureNames(), (item) => string.Equals(item, name)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/EssentialKitSettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/EssentialKitSettings.cs.meta new file mode 100644 index 00000000..c6c4a044 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/EssentialKitSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5e0ea44ec561e4ff9a51024a414c5e02 +timeCreated: 1576930243 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.AndroidPlatformProperties.cs new file mode 100644 index 00000000..10e272d4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.AndroidPlatformProperties.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public partial class GameServicesUnitySettings + { + [Serializable] + public class AndroidPlatformProperties + { + #region Fields + + [SerializeField] + [Tooltip ("Your application id in Google Play services.")] + private string m_playServicesApplicationId; + + [Header("External Server Control")] + [SerializeField] + [Tooltip("Your Server Client Id for getting external authentication credentials (Make sure its from a web app)")] + private string m_serverClientId; + + /// + /// If enabled, allows the use of refresh tokens to obtain long-lived access to Google Play Services. + /// + /// + /// This is useful for long-lived access to Google Play Services, such as when offline access is required. + /// + [SerializeField] + [Tooltip("If enabled, allows the use of refresh tokens to obtain long-lived access to Google Play Services.")] + private bool m_forceRefreshToken = true; + + [Tooltip("Text formats used to derive completed achievement description. Note: Achievement title will be inserted in place of token \'#\'.")] + private string[] m_achievedDescriptionFormats; + + [Header("Extra Settings")] + [SerializeField] + [Tooltip("If enabled, alert dialog is shown automatically on error(for ex: signin failure).")] + private bool m_showErrorDialogs; + + #endregion + + #region Properties + + public string PlayServicesApplicationId => PropertyHelper.GetValueOrDefault(m_playServicesApplicationId); + + public string ServerClientId => PropertyHelper.GetValueOrDefault(m_serverClientId)?.Trim(); + + public string[] AchievedDescriptionFormats => m_achievedDescriptionFormats; + + public bool ShowErrorDialogs => m_showErrorDialogs; + + public bool ForceRefreshToken => m_forceRefreshToken; + + + #endregion + + #region Constructors + + public AndroidPlatformProperties(string playServicesApplicationId = null, string serverClientId = null, + string[] achievedDescriptionFormats = null, bool showErrorDialogs = true, + bool forceRefreshToken = true) + { + // set properties + m_playServicesApplicationId = playServicesApplicationId; + m_serverClientId = serverClientId; + m_achievedDescriptionFormats = achievedDescriptionFormats ?? new string[] + { + "Awesome! Achievement # completed." + }; + m_showErrorDialogs = showErrorDialogs; + m_forceRefreshToken = forceRefreshToken; + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..8cf9f4e7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42e2a73278e524dfaab1a6704e88c4ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.cs new file mode 100644 index 00000000..c1724669 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.cs @@ -0,0 +1,87 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.Serialization; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + /// + /// The GameServicesUnitySettings class is used to configure Game Services module of Essential Kit. + /// + /// @ingroup GameServices + public partial class GameServicesUnitySettings : SettingsPropertyGroup + { + #region Nested types + + [SerializeField, FormerlySerializedAs("m_leaderboardMetaArray")] + [Tooltip ("Array contains information of the leaderboards used within the game.")] + public LeaderboardDefinition[] m_leaderboards; + + [SerializeField] + [Tooltip ("Array contains information of the achievements used within the game.")] + public AchievementDefinition[] m_achievements; + + [SerializeField] + [Tooltip ("If enabled, a banner is displayed when an achievement is completed (iOS).")] + private bool m_showAchievementCompletionBanner; + + [SerializeField] + [Tooltip ("If enabled, required permissions for accessing friends will be added.")] + private bool m_allowFriendsAccess; + + [SerializeField] + [Tooltip("Android specific settings.")] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + /// + /// Gets an array of leaderboards used in the game. + /// + public LeaderboardDefinition[] Leaderboards => m_leaderboards; + + /// + /// Gets an array of achievements used in the game. + /// + public AchievementDefinition[] Achievements => m_achievements; + + /// + /// Gets a value indicating whether a banner should be displayed when an achievement is completed (iOS). + /// + public bool ShowAchievementCompletionBanner => m_showAchievementCompletionBanner; + + /// + /// Gets a value indicating whether required permissions for accessing friends will be added. + /// + public bool AllowFriendsAccess => m_allowFriendsAccess; + + /// + /// Gets Android specific settings for the Game Services module. + /// + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + public GameServicesUnitySettings(bool isEnabled = true, bool initializeOnStart = true, + LeaderboardDefinition[] leaderboards = null, AchievementDefinition[] achievements = null, + bool showAchievementCompletionBanner = true, bool allowFriendsAccess = true, AndroidPlatformProperties androidProperties = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kGameServices) + { + // set default values + m_leaderboards = leaderboards ?? new LeaderboardDefinition[0]; + m_achievements = achievements ?? new AchievementDefinition[0]; + m_showAchievementCompletionBanner = showAchievementCompletionBanner; + m_allowFriendsAccess = allowFriendsAccess; + m_androidProperties = androidProperties ?? new AndroidPlatformProperties(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.cs.meta new file mode 100644 index 00000000..fca0602c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/GameServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ecad6aa326894030aca0c3510afef90 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/MediaServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/MediaServicesUnitySettings.cs new file mode 100644 index 00000000..140bd900 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/MediaServicesUnitySettings.cs @@ -0,0 +1,63 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using UnityEngine.Serialization; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class MediaServicesUnitySettings : SettingsPropertyGroup + { + #region Fields + + [Header("Capture Media Content Settings")] + [SerializeField, FormerlySerializedAs("m_usesCamera")] + [Tooltip ("If enabled, permission required to access camera will be added for image capture.")] + private bool m_usesCameraForImageCapture; + + [SerializeField] + [Tooltip("If enabled, permission required to access camera will be added for video capture (video capture additionally needs microphone, we add it automatically once you enable this).")] + private bool m_usesCameraForVideoCapture; + + + [Space] + [Header("Save Media Content Settings")] + [SerializeField] + [Tooltip ("If enabled, permission required to save files in photo gallery will be added.")] + private bool m_savesFilesToPhotoGallery = true; + + [SerializeField] + [Tooltip ("If enabled, permission required to create custom directories when saving will be added. For ex: permission to create new albums in photo gallery will be added.")] + private bool m_savesFilesToCustomDirectories = true; + + #endregion + + #region Properties + + public bool UsesCameraForImageCapture => m_usesCameraForImageCapture; + public bool UsesCameraForVideoCapture => m_usesCameraForVideoCapture; + + public bool SavesFilesToPhotoGallery => m_savesFilesToPhotoGallery; + + public bool SavesFilesToCustomDirectories => m_savesFilesToCustomDirectories; + + #endregion + + #region Constructors + + public MediaServicesUnitySettings(bool isEnabled = true, bool usesCameraForImageCapture = true, bool usesCameraForVideoCapture = false, + bool savesFilesToGallery = true, bool savesFilesToCustomAlbums = true) + : base(isEnabled: isEnabled, name: NativeFeatureType.kMediaServices) + { + // set properties + m_usesCameraForImageCapture = usesCameraForImageCapture; + m_usesCameraForVideoCapture = usesCameraForVideoCapture; + m_savesFilesToPhotoGallery = savesFilesToGallery; + m_savesFilesToCustomDirectories = savesFilesToCustomAlbums; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/MediaServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/MediaServicesUnitySettings.cs.meta new file mode 100644 index 00000000..71a848e2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/MediaServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c429411e26944bfc97619d74d5731e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeFeatureUsagePermissionSettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeFeatureUsagePermissionSettings.cs new file mode 100644 index 00000000..2b81843d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeFeatureUsagePermissionSettings.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class NativeFeatureUsagePermissionSettings + { + #region Fields + + [SerializeField] + [Tooltip("Usage description displayed prior to accessing address book.")] + private NativeFeatureUsagePermissionDefinition m_addressBookUsagePermission; + + [SerializeField] + [Tooltip("Usage description displayed prior to accessing camera.")] + private NativeFeatureUsagePermissionDefinition m_cameraUsagePermission; + + [SerializeField] + [Tooltip("Usage description displayed prior to accessing gallery.")] + private NativeFeatureUsagePermissionDefinition m_galleryUsagePermission; + + [SerializeField] + [Tooltip("Usage description displayed prior to saving files to gallery.")] + private NativeFeatureUsagePermissionDefinition m_galleryWritePermission; + + [SerializeField] + [Tooltip("Usage description displayed prior to accessing location information.")] + private NativeFeatureUsagePermissionDefinition m_locationWhenInUsePermission; + + [SerializeField] + [Tooltip("Usage description displayed prior to loading friends.")] + private NativeFeatureUsagePermissionDefinition m_accessFriendsPermission; + + + + + #endregion + + #region Properties + + public NativeFeatureUsagePermissionDefinition AddressBookUsagePermission => m_addressBookUsagePermission; + + public NativeFeatureUsagePermissionDefinition CameraUsagePermission => m_cameraUsagePermission; + + public NativeFeatureUsagePermissionDefinition GalleryUsagePermission => m_galleryUsagePermission; + + public NativeFeatureUsagePermissionDefinition GalleryWritePermission => m_galleryWritePermission; + + public NativeFeatureUsagePermissionDefinition LocationWhenInUsePermission => m_locationWhenInUsePermission; + + public NativeFeatureUsagePermissionDefinition AccessFriendsPermission => m_accessFriendsPermission; + + #endregion + + #region Constructors + + public NativeFeatureUsagePermissionSettings(NativeFeatureUsagePermissionDefinition addressBookUsagePermission = null, NativeFeatureUsagePermissionDefinition cameraUsagePermission = null, + NativeFeatureUsagePermissionDefinition galleryUsagePermission = null, NativeFeatureUsagePermissionDefinition galleryWritePermission = null, + NativeFeatureUsagePermissionDefinition locationWhenInUsePermission = null, NativeFeatureUsagePermissionDefinition accessFriendsPermission = null) + { + // set properties + m_addressBookUsagePermission = addressBookUsagePermission ?? new NativeFeatureUsagePermissionDefinition(description: "$productName uses contacts."); + m_cameraUsagePermission = cameraUsagePermission ?? new NativeFeatureUsagePermissionDefinition(description: "$productName uses camera."); + m_galleryUsagePermission = galleryUsagePermission ?? new NativeFeatureUsagePermissionDefinition(description: "$productName uses gallery."); + m_galleryWritePermission = galleryWritePermission ?? new NativeFeatureUsagePermissionDefinition(description: "$productName wants to write to gallery."); + m_locationWhenInUsePermission = locationWhenInUsePermission ?? new NativeFeatureUsagePermissionDefinition(description: "$productName would like to user your location."); + m_accessFriendsPermission = accessFriendsPermission ?? new NativeFeatureUsagePermissionDefinition(description: "$productName wants to access friends."); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeFeatureUsagePermissionSettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeFeatureUsagePermissionSettings.cs.meta new file mode 100644 index 00000000..1aab7831 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeFeatureUsagePermissionSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2dedbbc3d9c3640e29945fb20c7102c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.UnityUICollection.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.UnityUICollection.cs new file mode 100644 index 00000000..6744b85c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.UnityUICollection.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.UnityUI; +using VoxelBusters.EssentialKit.NativeUICore; + +namespace VoxelBusters.EssentialKit +{ + public partial class NativeUIUnitySettings + { + [Serializable] + public class UnityUICollection + { + #region Properties + + [SerializeField] + [Tooltip("Canvas used to render native plugins components (primarily simulator window).")] + private UnityUIRenderer m_rendererPrefab; + + [SerializeField] + [Tooltip("Custom alert dialog prefab. Object should implement IUnityUIAlertDialog interface.")] + private UnityUIAlertDialog m_alertDialogPrefab; + + [SerializeField] + private UnityUIDatePicker m_datePickerPrefab; + + #endregion + + #region Properties + + public UnityUIRenderer RendererPrefab + { + get => m_rendererPrefab; + internal set => m_rendererPrefab = value; + } + + public UnityUIAlertDialog AlertDialogPrefab + { + get => m_alertDialogPrefab; + internal set => m_alertDialogPrefab = value; + } + + public UnityUIDatePicker DatePickerPrefab + { + get => m_datePickerPrefab; + internal set => m_datePickerPrefab = value; + } + + #endregion + + #region Constructors + + public UnityUICollection(UnityUIRenderer rendererPrefab = null, UnityUIAlertDialog alertDialogPrefab = null, + UnityUIDatePicker datePickerPrefab = null) + { + // set properties + m_rendererPrefab = rendererPrefab; + m_alertDialogPrefab = alertDialogPrefab; + m_datePickerPrefab = datePickerPrefab; + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.UnityUICollection.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.UnityUICollection.cs.meta new file mode 100644 index 00000000..a2e07cd7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.UnityUICollection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bc701979148e469699657b7af5aa59a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.cs new file mode 100644 index 00000000..e32a73a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public partial class NativeUIUnitySettings : SettingsPropertyGroup + { + #region Properties + + [SerializeField] + [Tooltip("Custom assets references.")] + private UnityUICollection m_customUICollection; + + #endregion + + #region Properties + + public UnityUICollection CustomUICollection => m_customUICollection; + + #endregion + + #region Constructors + + public NativeUIUnitySettings(bool isEnabled = true, UnityUICollection customUICollection = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kNativeUI) + { + // set properties + m_customUICollection = customUICollection ?? new UnityUICollection(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.cs.meta new file mode 100644 index 00000000..30e33f19 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NativeUIUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37d93d5bc95b84fa9b2947c7860f5064 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.Address.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.Address.cs new file mode 100644 index 00000000..0b26ea54 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.Address.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public partial class NetworkServicesUnitySettings + { + [Serializable] + public class Address + { + #region Fields + + [SerializeField, DefaultValue("8.8.8.8")] + [Tooltip("IPV4 format address.")] + private string m_ipv4; + + [SerializeField, DefaultValue("0:0:0:0:0:FFFF:0808:0808")] + [Tooltip("IPV6 format address.")] + private string m_ipv6; + + #endregion + + #region Properties + + public string IpV4 => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_ipv4, + value: m_ipv4); + + public string IpV6 => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_ipv6, + value: m_ipv6); + + #endregion + + #region Constructors + + public Address(string ipv4 = null, string ipv6 = null) + { + // set properties + m_ipv4 = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_ipv4, + value: ipv4); + m_ipv6 = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_ipv6, + value: ipv6); + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.Address.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.Address.cs.meta new file mode 100644 index 00000000..631924fd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.Address.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9ec27d3370e544569ed7995ddc3ec0f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.PingTestSettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.PingTestSettings.cs new file mode 100644 index 00000000..09cbae62 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.PingTestSettings.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public partial class NetworkServicesUnitySettings + { + [Serializable] + public class PingTestSettings + { + #region Fields + + [SerializeField] + [Tooltip ("The number of retries to be performed for failed tests.")] + private int m_maxRetryCount; + + [SerializeField] + [Tooltip ("The time interval between consecutive polling.")] + private float m_timeGapBetweenPolling; + + [SerializeField] + [Tooltip ("The time out period.")] + private float m_timeOutPeriod; + + [SerializeField] + [Tooltip ("The connection port of the host. For DNS IP, it will be 53 or else 80.")] + private int m_port; + + #endregion + + #region Properties + + public int MaxRetryCount => m_maxRetryCount; + + public float TimeGapBetweenPolling => m_timeGapBetweenPolling; + + public float TimeOutPeriod => m_timeOutPeriod; + + public int Port => m_port; + + #endregion + + #region Constuctors + + public PingTestSettings(int maxRetryCount = 3, float timeGapBetweenPolling = 2f, + float timeOutPeriod = 60f, int port = 53) + { + // set properties + m_maxRetryCount = maxRetryCount; + m_timeGapBetweenPolling = timeGapBetweenPolling; + m_timeOutPeriod = timeOutPeriod; + m_port = port; + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.PingTestSettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.PingTestSettings.cs.meta new file mode 100644 index 00000000..6487243f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.PingTestSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b62bccc92f23a4660a4ba1940ad83ab2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.cs new file mode 100644 index 00000000..5b5cd7e2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public partial class NetworkServicesUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField] + [Tooltip("Host address.")] + private Address m_hostAddress; + + [SerializeField] + [Tooltip("If enabled, rechability trackers are activated on launch.")] + private bool m_autoStartNotifier; + + [SerializeField] + [Tooltip("Ping test configuration.")] + private PingTestSettings m_pingSettings; + + #endregion + + #region Properties + + public Address HostAddress => m_hostAddress; + + public bool AutoStartNotifier => m_autoStartNotifier; + + public PingTestSettings PingSettings => m_pingSettings; + + #endregion + + #region Constructors + + public NetworkServicesUnitySettings(bool isEnabled = true, Address hostAddress = null, + bool autoStartNotifier = true, PingTestSettings pingSettings = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kNetworkServices) + { + // set properties + m_hostAddress = hostAddress ?? new Address(); + m_autoStartNotifier = autoStartNotifier; + m_pingSettings = pingSettings ?? new PingTestSettings(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.cs.meta new file mode 100644 index 00000000..f0515275 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NetworkServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7c6584237c3441399b72d71623779ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.AndroidPlatformProperties.cs new file mode 100644 index 00000000..f022a864 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.AndroidPlatformProperties.cs @@ -0,0 +1,271 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Serialization; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public partial class NotificationServicesUnitySettings + { + [Serializable] + public class AndroidPlatformProperties + { + #region Fields + + [HideInInspector] + [SerializeField] + [Tooltip("If enabled, app will use big style notification.")] + private bool m_needsBigStyle; + + [SerializeField] + [Tooltip("If enabled, device vibrates on receiving a notification.")] + private bool m_allowVibration; + + [SerializeField] + [Tooltip("The texture used as small icon in post Android L Devices.")] + private Texture2D m_whiteSmallIcon; + + [SerializeField] + [Tooltip("The texture used as small icon in pre Android L Devices.")] + private Texture2D m_colouredSmallIcon; + + [SerializeField] + [Tooltip("If enabled, notifications are displayed even when app is foreground.")] + private bool m_allowNotificationDisplayWhenForeground; + + [SerializeField, DefaultValue("#FFFFFF")] + [Tooltip("If set, the value will be used as accent color for notification.")] + private string m_accentColor; + + [SerializeField] + [Tooltip("Array of payload keys.")] + private Keys m_payloadKeys; + + [Space] + [Header("Advanced Settings")] + [Space] + [Header("Exact timing settings - Can affect battery optimisation and focus mode")] + [SerializeField] + [Tooltip("Enable if you need notifications at exact time (Make sure your app is eligible for using this feature.). Enabling this will NOT have energy saving capabilities.")] + private bool m_allowExactTimeScheduling; + + [SerializeField] + [Tooltip("Enable this if you want exact timing notifications to even ignore doze mode. This may consume user's device battery and not recommended for most apps.")] + private bool m_canIgnoreDozeMode; + + + + #endregion + + #region Properties + + public bool NeedsBigStyle => m_needsBigStyle; + + public bool AllowVibration => m_allowVibration; + + public Texture2D WhiteSmallIcon => m_whiteSmallIcon; + + public Texture2D ColouredSmallIcon => m_colouredSmallIcon; + + public Keys PayloadKeys => m_payloadKeys; + + public bool AllowNotificationDisplayWhenForeground => m_allowNotificationDisplayWhenForeground; + + public string AccentColor => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_accentColor, + value: m_accentColor); + + public bool AllowExactTimeScheduling => m_allowExactTimeScheduling; + + public bool AllowExactTimeSchedulingIgnoringDozeMode => m_canIgnoreDozeMode; + + + #endregion + + #region Constructors + + public AndroidPlatformProperties(bool needsBigStyle = false, bool allowVibration = true, + Texture2D whiteSmallIcon = null, Texture2D colouredSmallIcon = null, + bool allowNotificationDisplayWhenForeground = false, string accentColor = null, + Keys payloadKeys = null, bool allowExactTimeScheduling = false, bool canIgnoreDozeMode = false) + { + // set properties + m_needsBigStyle = needsBigStyle; + m_allowVibration = allowVibration; + m_whiteSmallIcon = whiteSmallIcon; + m_colouredSmallIcon = colouredSmallIcon; + m_allowNotificationDisplayWhenForeground = allowNotificationDisplayWhenForeground; + m_accentColor = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_accentColor, + value: accentColor); + m_payloadKeys = payloadKeys ?? new Keys(); + m_allowExactTimeScheduling = allowExactTimeScheduling; + m_canIgnoreDozeMode = canIgnoreDozeMode; + } + + #endregion + + #region Nested types + + [Serializable] + public class Keys + { + #region Fields + + [SerializeField, DefaultValue("content_title")] + [Tooltip("The key used to capture content title property from the payload.")] + private string m_contentTitle; + + [SerializeField, DefaultValue("content_text")] + [Tooltip("The key used to capture content text property from the payload.")] + private string m_contentText; + + [SerializeField, DefaultValue("ticker_text")] + [Tooltip("The key used to capture ticker text property from the payload.")] + private string m_tickerText; + + [SerializeField, DefaultValue("user_info")] + [Tooltip("The key used to capture user info dictionary from the payload.")] + private string m_userInfo; + + [SerializeField, DefaultValue("tag")] + [Tooltip("The key used to capture tag property from the payload.")] + private string m_tag; + + [SerializeField, DefaultValue("badge")] + [Tooltip("The key used to capture badge property from the payload.")] + private string m_badge; + + [SerializeField, DefaultValue("priority")] + [Tooltip("The key used to capture priority property from the payload.")] + private string m_priority; + + [SerializeField, DefaultValue("sound")] + [Tooltip("The key used to capture sound property from the payload.")] + private string m_sound; + + [SerializeField, DefaultValue("big_picture")] + [Tooltip("The key used to capture big picture property from the payload.")] + private string m_bigPicture; + + [SerializeField, DefaultValue("large_icon")] + [Tooltip("The key used to capture large icon property from the payload.")] + private string m_largeIcon; + + #endregion + + #region Properties + + public string TickerTextKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_tickerText, + value: m_tickerText); + + public string ContentTitleKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_contentTitle, + value: m_contentTitle); + + public string ContentTextKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_contentText, + value: m_contentText); + + public string UserInfoKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_userInfo, + value: m_userInfo); + + public string TagKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_tag, + value: m_tag); + + public string BadgeKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_badge, + value: m_badge); + + public string PriorityKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_priority, + value: m_priority); + + public string SoundFileNameKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_sound, + value: m_sound); + + public string BigPictureKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_bigPicture, + value: m_bigPicture); + + public string LargeIconKey => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_largeIcon, + value: m_largeIcon); + + #endregion + + #region Constructors + + public Keys(string tickerText = null, string contentTitle = null, + string contentText = null, string userInfo = null, + string tag = null, string badge = null, string priority = null, string sound = null, + string bigPicture = null, string largeIcon = null) + { + // set properties + m_tickerText = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_tickerText, + value: tickerText); + m_contentTitle = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_contentTitle, + value: contentTitle); + m_contentText = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_contentText, + value: contentText); + m_userInfo = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_userInfo, + value: userInfo); + m_tag = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_tag, + value: tag); + m_priority = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_priority, + value: priority); + m_badge = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_badge, + value: badge); + m_sound = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_sound, + value: sound); + m_bigPicture = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_bigPicture, + value: bigPicture); + m_largeIcon = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_largeIcon, + value: largeIcon); + } + + #endregion + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..3129c57a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bca03201860ed4644bb8fa6cab67a991 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.cs new file mode 100644 index 00000000..c0a654d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public partial class NotificationServicesUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField, EnumMaskField(typeof(NotificationPresentationOptions))] + [Tooltip("Notification display options.")] + private NotificationPresentationOptions m_presentationOptions; + + [SerializeField] + [HideInInspector] + [Tooltip("If enabled, permission required to use location based notification will be added.")] + private bool m_usesLocationBasedNotification; + + [SerializeField] + [Tooltip("External notification service used within the app.")] + private PushNotificationServiceType m_pushNotificationServiceType; + + [SerializeField] + [Tooltip("Android specific properties.")] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + public NotificationPresentationOptions PresentationOptions => m_presentationOptions; + + public bool UsesLocationBasedNotification => m_usesLocationBasedNotification; + + public PushNotificationServiceType PushNotificationServiceType => m_pushNotificationServiceType; + + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + public NotificationServicesUnitySettings(bool isEnabled = true, NotificationPresentationOptions presentationOptions = NotificationPresentationOptions.Alert | NotificationPresentationOptions.Badge | NotificationPresentationOptions.Sound, + bool usesLocationBasedNotification = false, PushNotificationServiceType pushNotificationServiceType = PushNotificationServiceType.Custom, + AndroidPlatformProperties androidProperties = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kNotificationServices) + { + // set properties + m_presentationOptions = presentationOptions; + m_usesLocationBasedNotification = usesLocationBasedNotification; + m_pushNotificationServiceType = pushNotificationServiceType; + m_androidProperties = androidProperties ?? new AndroidPlatformProperties(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.cs.meta new file mode 100644 index 00000000..10dc369b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/NotificationServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 072834b3586b5498982f846b80ebf7f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConfirmationDialogSettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConfirmationDialogSettings.cs new file mode 100644 index 00000000..9505b9c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConfirmationDialogSettings.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class RateMyAppConfirmationDialogSettings + { + #region Fields + + [SerializeField, DefaultValue(true)] + [Tooltip("If enabled, confirmation dialog is shown prior to prompting rating window.")] + private bool m_canShow; + + [SerializeField, DefaultValue("Rate My App")] + [Tooltip("Title.")] + private string m_promptTitle; + + [SerializeField, TextArea, DefaultValue("If you enjoy using Native Plugins would you mind taking a moment to rate it? It wont take more than a minute. Thanks for your support.")] + [Tooltip("Description.")] + private string m_promptDescription; + + [SerializeField, DefaultValue("Ok")] + [Tooltip("Positive action button label.")] + private string m_okButtonLabel; + + [SerializeField, DefaultValue("Cancel")] + [Tooltip("Negative action button label.")] + private string m_cancelButtonLabel; + + [SerializeField, DefaultValue("Remind Me Later")] + [Tooltip("Neutral action button label.")] + private string m_remindLaterButtonLabel; + + [SerializeField, DefaultValue(true)] + [Tooltip("Determines whether neutral action button is required.")] + private bool m_canShowRemindMeLaterButton; + + #endregion + + #region Properties + + public bool CanShow => m_canShow; + + public string PromptTitle => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_promptTitle, + value: m_promptTitle); + + public string PromptDescription => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_promptDescription, + value: m_promptDescription); + + public string OkButtonLabel => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_okButtonLabel, + value: m_okButtonLabel); + + public string CancelButtonLabel => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_cancelButtonLabel, + value: m_cancelButtonLabel); + + public string RemindLaterButtonLabel => PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_remindLaterButtonLabel, + value: m_remindLaterButtonLabel); + + public bool CanShowRemindMeLaterButton => m_canShowRemindMeLaterButton; + + #endregion + + #region Constructors + + public RateMyAppConfirmationDialogSettings(bool canShow = true, string title = null, + string description = null, string okButtonLabel = null, + string cancelButtonLabel = null, string remindLaterButtonLabel = null, + bool canShowRemindMeLaterButton = true) + { + // set properties + m_canShow = canShow; + m_promptTitle = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_promptTitle, + value: title); + m_promptDescription = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_promptDescription, + value: description); + m_okButtonLabel = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_okButtonLabel, + value: okButtonLabel); + m_cancelButtonLabel = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_cancelButtonLabel, + value: cancelButtonLabel); + m_remindLaterButtonLabel = PropertyHelper.GetValueOrDefault( + instance: this, + fieldAccess: (field) => field.m_remindLaterButtonLabel, + value: remindLaterButtonLabel); + m_canShowRemindMeLaterButton = canShowRemindMeLaterButton; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConfirmationDialogSettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConfirmationDialogSettings.cs.meta new file mode 100644 index 00000000..880feabd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConfirmationDialogSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8c94d9cf0ef264e899ab28aa9ac24229 +timeCreated: 1578052087 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConstraints.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConstraints.cs new file mode 100644 index 00000000..27816190 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConstraints.cs @@ -0,0 +1,75 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class RateMyAppConstraints + { + #region Fields + + [SerializeField] + [Tooltip("The number of hours elapsed since first launch, to show ratings window for the first time.")] + private PromptConstraints m_initialPromptConstraints; + + [SerializeField] + [Tooltip("The number of times the user must launch the app to show ratings window for the first time.")] + private PromptConstraints m_repeatPromptConstraints; + + #endregion + + #region Properties + + public PromptConstraints InitialPromptConstraints => m_initialPromptConstraints; + + public PromptConstraints RepeatPromptConstraints => m_repeatPromptConstraints; + + #endregion + + #region Constructors + + public RateMyAppConstraints() + : this(new PromptConstraints(minHours: 2, minLaunches: 0), new PromptConstraints(minHours: 6, minLaunches: 5)) + { } + + public RateMyAppConstraints(PromptConstraints initialPromptConstraints, PromptConstraints repeatPromptConstraints) + { + // set properties + m_initialPromptConstraints = initialPromptConstraints; + m_repeatPromptConstraints = repeatPromptConstraints; + } + + #endregion + + #region Nested types + + [Serializable] + public class PromptConstraints + { + [SerializeField] + [Tooltip("Minimum hours elapsed.")] + private int m_minHours; + + [SerializeField] + [Tooltip("Minimum app launches count.")] + private int m_minLaunches; + + + public int MinHours { get { return m_minHours; } } + + public int MinLaunches { get { return m_minLaunches; } } + + + public PromptConstraints(int minHours, int minLaunches) + { + // set properties + m_minHours = minHours; + m_minLaunches = minLaunches; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConstraints.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConstraints.cs.meta new file mode 100644 index 00000000..681ec00d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppConstraints.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 459a38ed29f434e7a861d25ebfe8e3c8 +timeCreated: 1578052087 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppUnitySettings.cs new file mode 100644 index 00000000..b42eec13 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppUnitySettings.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class RateMyAppUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField] + [Tooltip("Automatically show the rating prompt when conditions are met. This presents as soon as conditions are met on app launch. Disable this if you want to control on when to show it with the help of RateMyApp.IsAllowedToRate + RateMyApp.AskForReviewNow methods.")] + private bool m_autoShow = true; + + [Tooltip("Allow users to rate the app again in a new version, even if they have rated it previously. If enabled, users will be prompted to provide feedback on the new version.")] + [SerializeField] + private bool m_allowReratingForNewVersion = false; + + [Space] + [SerializeField] + [Tooltip("Confirmation dialog settings.")] + private RateMyAppConfirmationDialogSettings m_confirmationDialogSettings; + + [SerializeField] + [Tooltip("Constraints to meet for rating.")] + private RateMyAppConstraints m_contraintsSettings; + + + #endregion + + #region Properties + + public bool AllowReratingForNewVersion => m_allowReratingForNewVersion; + + public bool AutoShow => m_autoShow; + + public RateMyAppConfirmationDialogSettings ConfirmationDialogSettings => m_confirmationDialogSettings; + + public RateMyAppConstraints ConstraintsSettings => m_contraintsSettings; + + #endregion + + #region Constructors + + public RateMyAppUnitySettings(bool isEnabled = true, RateMyAppConfirmationDialogSettings dialogSettings = null, + RateMyAppConstraints defaultValidatorSettings = null, bool allowRatingAgainForNewVersion = false, bool autoShowWhenConditionsAreMet = true) : base(isEnabled: isEnabled, name: NativeFeatureType.kRateMyApp) + { + // set properties + m_confirmationDialogSettings = dialogSettings ?? new RateMyAppConfirmationDialogSettings(); + m_contraintsSettings = defaultValidatorSettings ?? new RateMyAppConstraints(); + m_allowReratingForNewVersion = allowRatingAgainForNewVersion; + m_autoShow = autoShowWhenConditionsAreMet; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppUnitySettings.cs.meta new file mode 100644 index 00000000..3c96e3d2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/RateMyAppUnitySettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bad9d4dc47c774cbcb2561b3da7fc205 +timeCreated: 1547710276 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/SharingServicesUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/SharingServicesUnitySettings.cs new file mode 100644 index 00000000..5baea9d8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/SharingServicesUnitySettings.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public partial class SharingServicesUnitySettings : SettingsPropertyGroup + { + #region Constructors + + public SharingServicesUnitySettings(bool isEnabled = true) + : base(isEnabled: isEnabled, name: NativeFeatureType.kSharingServices) + { } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/SharingServicesUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/SharingServicesUnitySettings.cs.meta new file mode 100644 index 00000000..06c7e3af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/SharingServicesUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bdf021cbf82cb4515b2a33614dcca8af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/UtilityUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/UtilityUnitySettings.cs new file mode 100644 index 00000000..e31a4050 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/UtilityUnitySettings.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public class UtilityUnitySettings : SettingsPropertyGroup + { + + #region Fields + + #endregion + + + #region Properties + + #endregion + + #region Constructors + + public UtilityUnitySettings(bool isEnabled = true) + : base(isEnabled: isEnabled, name: NativeFeatureType.kExtras) + { + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/UtilityUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/UtilityUnitySettings.cs.meta new file mode 100644 index 00000000..e424c1ec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/UtilityUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62f07732aed47427c9f15a35d8bab47c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.AndroidPlatformProperties.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.AndroidPlatformProperties.cs new file mode 100644 index 00000000..64154a73 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.AndroidPlatformProperties.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public partial class WebViewUnitySettings + { + [Serializable] + public class AndroidPlatformProperties + { + #region Fields + + [SerializeField] + [Tooltip ("Enabling this will allow your app to access camera from webview")] + private bool m_usesCamera; + + [SerializeField] + [Tooltip("Enabling this will allow your app to access microphone from webview")] + private bool m_usesMicrophone; + + [SerializeField] + [Tooltip("Enabling this will allow you to dismiss webview when back navigation button on the device is pressed")] + private bool m_allowBackNavigationKey; + + #endregion + + #region Properties + + public bool UsesCamera => m_usesCamera; + + public bool UsesMicrophone => m_usesMicrophone; + + public bool AllowBackNavigationKey => m_allowBackNavigationKey; + + #endregion + + #region Constructors + + public AndroidPlatformProperties(bool usesCamera = false, bool usesMicrophone = false, + bool allowBackNavigationKey = true) + { + // set properties + m_usesCamera = usesCamera; + m_usesMicrophone = usesMicrophone; + m_allowBackNavigationKey = allowBackNavigationKey; + } + + #endregion + } + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.AndroidPlatformProperties.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.AndroidPlatformProperties.cs.meta new file mode 100644 index 00000000..1f167db9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.AndroidPlatformProperties.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c53c53d957dc646c8872f801663a8ab8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.cs new file mode 100644 index 00000000..4c4f5d82 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + [Serializable] + public partial class WebViewUnitySettings : SettingsPropertyGroup + { + #region Fields + + [SerializeField] + [Tooltip("Android specific settings.")] + private AndroidPlatformProperties m_androidProperties; + + #endregion + + #region Properties + + public AndroidPlatformProperties AndroidProperties => m_androidProperties; + + #endregion + + #region Constructors + + public WebViewUnitySettings(bool isEnabled = true, AndroidPlatformProperties androidProperties = null) + : base(isEnabled: isEnabled, name: NativeFeatureType.kWebView) + { + m_androidProperties = androidProperties ?? new AndroidPlatformProperties(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.cs.meta new file mode 100644 index 00000000..f7d2d12b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/Setup/WebViewUnitySettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19d41577b027d4cda8ecab3d96abef5e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices.meta new file mode 100644 index 00000000..70271d80 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 85edda551cffc40408573283b8378f49 +folderAsset: yes +timeCreated: 1549105554 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMailComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMailComposer.cs new file mode 100644 index 00000000..b338c2b8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMailComposer.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public interface INativeMailComposer : INativeObject + { + #region Events + + event MailComposerClosedInternalCallback OnClose; + + #endregion + + #region Methods + + // setter methods + void SetToRecipients(params string[] values); + + void SetCcRecipients(params string[] values); + + void SetBccRecipients(params string[] values); + + void SetSubject(string value); + + void SetBody(string value, bool isHtml); + + // attachments + void AddScreenshot(string fileName); + + void AddAttachmentData(byte[] data, string mimeType, string fileName); + + // presentation methods + void Show(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMailComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMailComposer.cs.meta new file mode 100644 index 00000000..517e3b88 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMailComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 069eebbd015914c42baf07daabf41eec +timeCreated: 1576907091 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMessageComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMessageComposer.cs new file mode 100644 index 00000000..8e03ba51 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMessageComposer.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public interface INativeMessageComposer : INativeObject + { + #region Events + + event MessageComposerClosedInternalCallback OnClose; + + #endregion + + #region Methods + + // setter methods + void SetRecipients(params string[] values); + + void SetSubject(string value); + + void SetBody(string value); + + // attachment methods + void AddScreenshot(string fileName); + + void AddImage(Texture2D image, string fileName); + + void AddAttachmentData(byte[] data, string mimeType, string fileName); + + // presentation methods + void Show(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMessageComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMessageComposer.cs.meta new file mode 100644 index 00000000..b60dd214 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeMessageComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c8cb738006b194623bd3c62af95e1935 +timeCreated: 1576907927 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeShareSheet.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeShareSheet.cs new file mode 100644 index 00000000..cddae333 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeShareSheet.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public interface INativeShareSheet : INativeObject + { + #region Events + + event ShareSheetClosedInternalCallback OnClose; + + #endregion + + #region Methods + + // attachment methods + void AddText(string text); + + void AddScreenshot(); + + void AddImage(byte[] imageData, string mimeType); + + void AddAttachment(byte[] data, string mimeType, string filename); + + void AddURL(URLString url); + + // presentation methods + void Show(Vector2 screenPosition); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeShareSheet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeShareSheet.cs.meta new file mode 100644 index 00000000..8f029615 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeShareSheet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4e012f6e982284a4586c231871c8d63f +timeCreated: 1547660629 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSharingInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSharingInterface.cs new file mode 100644 index 00000000..4da2dbcd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSharingInterface.cs @@ -0,0 +1,44 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public interface INativeSharingInterface : INativeFeatureInterface + { + #region Mail composer methods + + bool CanSendMail(); + + INativeMailComposer CreateMailComposer(); + + #endregion + + #region Message composer methods + + bool CanSendText(); + + bool CanSendAttachments(); + + bool CanSendSubject(); + + INativeMessageComposer CreateMessageComposer(); + + #endregion + + #region Share sheet methods + + INativeShareSheet CreateShareSheet(); + + #endregion + + #region Social share composer methods + + bool IsSocialShareComposerAvailable(SocialShareComposerType composerType); + + INativeSocialShareComposer CreateSocialShareComposer(SocialShareComposerType composerType); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSharingInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSharingInterface.cs.meta new file mode 100644 index 00000000..22f4b475 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSharingInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7c9b2a1e48f1542de943f3f004235269 +timeCreated: 1577081685 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSocialShareComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSocialShareComposer.cs new file mode 100644 index 00000000..7362c140 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSocialShareComposer.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public interface INativeSocialShareComposer : INativeObject + { + #region Events + + event SocialShareComposerClosedInternalCallback OnClose; + + #endregion + + #region Methods + + // attachment options + void SetText(string value); + + void AddScreenshot(); + + void AddImage(byte[] imageData); + + void AddURL(URLString url); + + // presentation methods + void Show(Vector2 screenPosition); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSocialShareComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSocialShareComposer.cs.meta new file mode 100644 index 00000000..5f31b9df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/INativeSocialShareComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 332861b4bd7724eeeb69149ab0c5d2fd +timeCreated: 1577081810 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/InternalDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/InternalDelegates.cs new file mode 100644 index 00000000..c87bd757 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/InternalDelegates.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public delegate void MailComposerClosedInternalCallback(MailComposerResultCode resultCode, Error error); + + public delegate void MessageComposerClosedInternalCallback(MessageComposerResultCode resultCode, Error error); + + public delegate void ShareSheetClosedInternalCallback(ShareSheetResultCode resultCode, Error error); + + public delegate void SocialShareComposerClosedInternalCallback(SocialShareComposerResultCode resultCode, Error error); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/InternalDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/InternalDelegates.cs.meta new file mode 100644 index 00000000..fab0f8df --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/InternalDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 39fc21e71e8ea4e889c7afd249edaeec +timeCreated: 1553000523 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposer.cs new file mode 100644 index 00000000..a2784190 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposer.cs @@ -0,0 +1,371 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.SharingServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup SharingServices Sharing Services + * @brief Provides a cross-platform interface to access sharing services. + */ + + /// + /// The MailComposer class provides an interface to compose and send an email message. + /// + /// + /// + /// Use this composer to display a standard email interface inside your app. + /// Before presenting the interface, populate the fields with initial values for the subject, email recipients, body text, and attachments of the email. + /// After presenting the interface, the user can edit your initial values before sending the email. + /// + /// + /// + /// The following code example shows how to compose mail. + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// public void Start() + /// { + /// if (MailComposer.CanSendMail()) + /// { + /// // create new instance and populate fields + /// MailComposer newComposer = MailComposer.CreateInstance(); + /// newComposer.SetSubject("Example"); + /// newComposer.SetBody("Lorem ipsum dolor sit amet"); + /// newComposer.AddScreenshot("screenshot.jpg"); + /// newComposer.SetCompletionCallback(OnMailComposerClosed); + /// newComposer.Show(); + /// } + /// else + /// { + /// // device doesn't support sending emails + /// } + /// } + /// + /// private void OnMailComposerClosed(MailComposerResult result, Error error) + /// { + /// // add your code + /// } + /// } + /// + /// + /// @ingroup SharingServices + public sealed class MailComposer : NativeFeatureBehaviour + { + #region Fields + + private INativeMailComposer m_nativeComposer = null; + + private EventCallback m_callback = null; + + #endregion + + #region Create methods + + /// + /// Initializes a new instance of the class. + /// + public static MailComposer CreateInstance() + { + return CreateInstanceInternal("MailComposer"); + } + + #endregion + + #region Static methods + + /// + /// Returns a Boolean indicating whether the current device is able to send email. + /// + /// true, if the device is configured for sending email, false otherwise. + public static bool CanSendMail() + { + try + { + var sharingInterface = SharingServices.NativeInterface; + return sharingInterface.CanSendMail(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + #endregion + + #region Lifecycle methods + + protected override void AwakeInternal(object[] args) + { + base.AwakeInternal(args); + + // initialise component + var sharingInterface = SharingServices.NativeInterface; + m_nativeComposer = sharingInterface.CreateMailComposer(); + m_callback = null; + + // register for events + m_nativeComposer.OnClose += HandleComposerCloseInternalCallback; + } + + protected override void DestroyInternal() + { + base.DestroyInternal(); + + // unregister from event + m_nativeComposer.OnClose -= HandleComposerCloseInternalCallback; + + // reset interface properties + m_nativeComposer.Dispose(); + + m_callback = null; + } + + #endregion + + #region Behaviour methods + + public override bool IsAvailable() + { + return SharingServices.NativeInterface.IsAvailable; + } + + protected override string GetFeatureName() + { + return "Mail Composer"; + } + + #endregion + + #region Setter methods + + /// + /// Sets the initial recipients to include in the email’s “To” field. + /// + /// An array of string values, each of which contains the email address of a single recipient. + public void SetToRecipients(params string[] values) + { + // validate arguments + Assert.IsArgNotNull(values, "values"); + + try + { + // make request + m_nativeComposer.SetToRecipients(values); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets the initial recipients to include in the email’s “Cc” field. + /// + /// An array of string values, each of which contains the email address of a single recipient. + public void SetCcRecipients(params string[] values) + { + // validate arguments + Assert.IsArgNotNull(values, "values"); + + try + { + // make request + m_nativeComposer.SetCcRecipients(values); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets the initial recipients to include in the email’s “Bcc” field. + /// + /// An array of string values, each of which contains the email address of a single recipient. + public void SetBccRecipients(params string[] values) + { + // validate arguments + Assert.IsArgNotNull(values, "values"); + + try + { + // make request + m_nativeComposer.SetBccRecipients(values); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets the initial text for the subject line of the email. + /// + /// The text to display in the subject line. + public void SetSubject(string value) + { + // validate arguments + Assert.IsArgNotNull(value, "value"); + + try + { + // make request + m_nativeComposer.SetSubject(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets the initial body text to include in the email. + /// + /// The initial body text of the message. The text is interpreted as either plain text or HTML depending on the value of the isHTML parameter.. + /// Specify YES if the body parameter contains HTML content or specify NO if it contains plain text. + public void SetBody(string value, bool isHtml = false) + { + // validate arguments + Assert.IsArgNotNull(value, "value"); + + try + { + // make request + m_nativeComposer.SetBody(value, isHtml); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Captures a screenshot and adds it as an attachment of the email. + /// + /// The preferred filename to associate with the image. + public void AddScreenshot(string fileName) + { + // validate arguments + Assert.IsNotNullOrEmpty(fileName, "fileName"); + + try + { + // make request + m_nativeComposer.AddScreenshot(fileName); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds specified image as an attachment of the email. + /// + /// The image that has to be added as an attachment. + /// The preferred filename to associate with the image. + /// Texture encoding format. + public void AddImage(Texture2D image, string fileName, TextureEncodingFormat textureEncodingFormat = TextureEncodingFormat.JPG) + { + // validate arguments + Assert.IsArgNotNull(image, "image"); + Assert.IsNotNullOrEmpty(fileName, "fileName"); + + try + { + // convert image to raw format + string mimeType; + byte[] data = image.Encode(textureEncodingFormat, out mimeType); + + // submit data + m_nativeComposer.AddAttachmentData(data, mimeType, fileName); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds the specified data as an attachment of the email. + /// + /// The data of the file that has to be added as an attachment. + /// The MIME type of the specified data. + /// The filename of the specified data. + public void AddAttachment(byte[] data, string mimeType, string fileName) + { + // validate arguments + Assert.IsArgNotNull(data, "data"); + Assert.IsNotNullOrEmpty(mimeType, "mimeType"); + Assert.IsNotNullOrEmpty(fileName, "fileName"); + + try + { + // make request + m_nativeComposer.AddAttachmentData(data, mimeType, fileName); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Specify the action to execute after the composer is dismissed. + /// + /// The action to be called on completion. + public void SetCompletionCallback(EventCallback callback) + { + // validate arguments + Assert.IsArgNotNull(callback, "callback"); + + // save callback reference + m_callback = callback; + } + + /// + /// Shows the email composer interface with values initially set. + /// + public void Show() + { + try + { + // present view + m_nativeComposer.Show(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + #endregion + + #region Event callback methods + + private void HandleComposerCloseInternalCallback(MailComposerResultCode resultCode, Error error) + { + // send result to caller object + var result = new MailComposerResult(resultCode); + CallbackDispatcher.InvokeOnMainThread(m_callback, result, error); + + // release object + Destroy(gameObject); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposer.cs.meta new file mode 100644 index 00000000..dd18160b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7cd72474aaa6743a0952fd2a0049dc6f +timeCreated: 1547488848 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerExtensions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerExtensions.cs new file mode 100644 index 00000000..9c42ea0e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerExtensions.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Mail composer extensions. + /// + public static class MailComposerExtensions + { + #region Attachment methods + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerExtensions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerExtensions.cs.meta new file mode 100644 index 00000000..35ab01c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerExtensions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b54f1cc27b46141e184b12fb23a7f05e +timeCreated: 1564039002 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResult.cs new file mode 100644 index 00000000..816b4c13 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the result of the user action which caused interface to dismiss. + /// + /// @ingroup SharingServices + public class MailComposerResult + { + #region Properties + + /// + /// Gets the result of the user’s action. + /// + /// The result code of user’s action. + public MailComposerResultCode ResultCode { get; private set; } + + #endregion + + #region Constructors + + internal MailComposerResult(MailComposerResultCode resultCode) + { + // Set properties + ResultCode = resultCode; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResult.cs.meta new file mode 100644 index 00000000..5afc4fc9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82df77ad526e54d0c82f7469e8ca474a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResultCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResultCode.cs new file mode 100644 index 00000000..fab88e5f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResultCode.cs @@ -0,0 +1,27 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Result codes returned when the interface is dismissed. + /// + public enum MailComposerResultCode + { + /// The user action could not be determined. + Unknown, + + /// The user cancelled the operation. No email message was queued. + Cancelled, + + /// The email message was saved in the user’s Drafts folder. + Saved, + + /// The email message was queued in the user’s outbox. + Sent, + + /// The email message was not saved or queued, possibly due to an error. + Failed, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResultCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResultCode.cs.meta new file mode 100644 index 00000000..e55e650e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MailComposerResultCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61debae14653a4d38b223105c943c0ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposer.cs new file mode 100644 index 00000000..a7c9e096 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposer.cs @@ -0,0 +1,359 @@ +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.SharingServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The MessageComposer class provides a standard interface for composing and sending SMS or MMS messages. + /// + /// + /// + /// Before presenting the interface, populate the fields with the set of initial recipients and the message you want to send. + /// After presenting the interface, the user can edit your initial values before sending the message. + /// + /// + /// + /// The following code example shows how to compose text message. + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// public void Start() + /// { + /// if (MessageComposer.CanSendText()) + /// { + /// // create new instance and populate fields + /// MessageComposer newComposer = MessageComposer.CreateInstance(); + /// newComposer.SetBody("Lorem ipsum dolor sit amet"); + /// newComposer.SetCompletionCallback(OnMessageComposerClosed); + /// newComposer.Show(); + /// } + /// else + /// { + /// // device doesn't support sending emails + /// } + /// } + /// + /// private void OnMessageComposerClosed(MessageComposerResult result, Error error) + /// { + /// // add your code + /// } + /// } + /// + /// + /// @ingroup SharingServices + public sealed class MessageComposer : NativeFeatureBehaviour + { + #region Fields + + private INativeMessageComposer m_nativeComposer = null; + + private EventCallback m_callback = null; + + #endregion + + #region Create methods + + /// + /// Initializes a new instance of the class. + /// + public static MessageComposer CreateInstance() + { + return CreateInstanceInternal("MessageComposer"); + } + + #endregion + + #region Static methods + + /// + /// Returns a Boolean value indicating whether the current device is capable of sending text messages. + /// + /// true, if the device can send text messages, false otherwise. + public static bool CanSendText() + { + try + { + var sharingInterface = SharingServices.NativeInterface; + return sharingInterface.CanSendText(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + /// + /// Returns a Boolean value indicating whether or not messages can include attachments. + /// + /// true, if the device can send attachments in MMS or iMessage messages, false otherwise. + public static bool CanSendAttachments() + { + try + { + var sharingInterface = SharingServices.NativeInterface; + return sharingInterface.CanSendAttachments(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + /// + /// Returns a Boolean value indicating whether or not messages can include subject lines. + /// + /// true, if the device can include subject lines in messages, false otherwise. + public static bool CanSendSubject() + { + try + { + var sharingInterface = SharingServices.NativeInterface; + return sharingInterface.CanSendSubject(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + #endregion + + #region Lifecycle methods + + protected override void AwakeInternal(object[] args) + { + base.AwakeInternal(args); + + // set properties + var sharingInterface = SharingServices.NativeInterface; + m_nativeComposer = sharingInterface.CreateMessageComposer(); + m_callback = null; + + // register for events + m_nativeComposer.OnClose += HandleComposerCloseInternalCallback; + } + + protected override void DestroyInternal() + { + base.DestroyInternal(); + + // unregister from event + m_nativeComposer.OnClose -= HandleComposerCloseInternalCallback; + + // reset interface properties + m_nativeComposer.Dispose(); + + m_callback = null; + } + + #endregion + + #region Behaviour methods + + public override bool IsAvailable() + { + return SharingServices.NativeInterface.IsAvailable; + } + + protected override string GetFeatureName() + { + return "Message Composer"; + } + + #endregion + + #region Setter methods + + /// + /// Sets the initial recipients of the message.. + /// + /// An array of string values containing the initial recipients of the message. + public void SetRecipients(params string[] values) + { + // validate arguments + Assert.IsArgNotNull(values, "values"); + + try + { + // make request + m_nativeComposer.SetRecipients(values); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets the initial subject of the message. + /// + /// The initial subject for a message. + public void SetSubject(string value) + { + // validate arguments + Assert.IsArgNotNull(value, "value"); + + try + { + // make request + m_nativeComposer.SetSubject(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Sets the initial content of the message. + /// + /// The initial content in the body of a message. + public void SetBody(string value) + { + // validate arguments + Assert.IsArgNotNull(value, "value"); + + try + { + // make request + m_nativeComposer.SetBody(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Captures a screenshot and adds it as an attachment of the message. + /// + /// The preferred filename to associate with the image. + public void AddScreenshot(string fileName) + { + // validate arguments + Assert.IsArgNotNull(fileName, "fileName"); + + try + { + // make request + m_nativeComposer.AddScreenshot(fileName); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds specified image as an attachment of the message. + /// + /// The image that has to be added as an attachment. + /// The preferred filename to associate with the image. + /// Texture encoding format. + public void AddImage(Texture2D image, string fileName, TextureEncodingFormat textureEncodingFormat = TextureEncodingFormat.JPG) + { + // validate arguments + Assert.IsArgNotNull(image, "image"); + Assert.IsArgNotNull(fileName, "fileName"); + + try + { + // convert image to raw format + string mimeType; + var data = image.Encode(textureEncodingFormat, out mimeType); + + // submit data + m_nativeComposer.AddAttachmentData(data, mimeType, fileName); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds the specified data as an attachment of the message. + /// + /// The data of the file that has to be added as an attachment. + /// The MIME type of the specified data. + /// The filename of the specified data. + public void AddAttachment(byte[] data, string mimeType, string fileName) + { + // validate arguments + Assert.IsArgNotNull(data, "data"); + Assert.IsArgNotNull(mimeType, "mimeType"); + Assert.IsArgNotNull(fileName, "fileName"); + + try + { + // make request + m_nativeComposer.AddAttachmentData(data, mimeType, fileName); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Specify the action to execute after the composer is dismissed. + /// + /// The action to be called on completion. + public void SetCompletionCallback(EventCallback callback) + { + // validate arguments + Assert.IsArgNotNull(callback, "callback"); + + // save callback reference + m_callback = callback; + } + + /// + /// Shows the message composer interface with values initially set. + /// + public void Show() + { + try + { + // present view + m_nativeComposer.Show(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + #endregion + + #region Event callback methods + + private void HandleComposerCloseInternalCallback(MessageComposerResultCode resultCode, Error error) + { + // send result to caller object + var result = new MessageComposerResult(resultCode); + CallbackDispatcher.InvokeOnMainThread(m_callback, result, error); + + // release object + Destroy(gameObject); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposer.cs.meta new file mode 100644 index 00000000..b8e66c69 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f0e1b67fb09294263bdf7af6c615313b +timeCreated: 1547488868 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerExtensions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerExtensions.cs new file mode 100644 index 00000000..fb1d9680 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerExtensions.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + public static class MessageComposerExtensions + { + #region Attachement methods + + #endregion + } +} diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerExtensions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerExtensions.cs.meta new file mode 100644 index 00000000..61f465c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerExtensions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9472e99ee23e343b4b0f6c934e9e78f5 +timeCreated: 1564039968 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResult.cs new file mode 100644 index 00000000..2d427bda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the result of the user action which caused interface to dismiss. + /// + /// @ingroup SharingServices + public class MessageComposerResult + { + #region Properties + + /// + /// Gets the result code. + /// + /// The result code of user’s action. + public MessageComposerResultCode ResultCode { get; private set; } + + #endregion + + #region Constructors + + internal MessageComposerResult(MessageComposerResultCode resultCode) + { + // Set properties + ResultCode = resultCode; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResult.cs.meta new file mode 100644 index 00000000..75c06433 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 272ebec2458fe4c0f8ed0a71cd73aa1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResultCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResultCode.cs new file mode 100644 index 00000000..ca98375c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResultCode.cs @@ -0,0 +1,24 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Result codes returned when the interface is dismissed. + /// + public enum MessageComposerResultCode + { + /// The user action could not be determined. This occurs in platforms where there is no provision to find result. + Unknown, + + /// The user canceled the composition. + Cancelled, + + /// The user successfully queued or sent the message. + Sent, + + /// The message was not saved or queued, possibly due to an error. + Failed, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResultCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResultCode.cs.meta new file mode 100644 index 00000000..9cf5e3dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/MessageComposerResultCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dffa9b51206794090bf776b2b047bfc8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMailComposerBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMailComposerBase.cs new file mode 100644 index 00000000..c2f7c7dc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMailComposerBase.cs @@ -0,0 +1,42 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public abstract class NativeMailComposerBase : NativeObjectBase, INativeMailComposer + { + #region INativeMailComposer implementation + + public event MailComposerClosedInternalCallback OnClose; + + public abstract void SetToRecipients(params string[] values); + + public abstract void SetCcRecipients(params string[] values); + + public abstract void SetBccRecipients(params string[] values); + + public abstract void SetSubject(string value); + + public abstract void SetBody(string value, bool isHtml); + + public abstract void AddScreenshot(string fileName); + + public abstract void AddAttachmentData(byte[] data, string mimeType, string fileName); + + public abstract void Show(); + + #endregion + + #region Private methods + + protected void SendCloseEvent(MailComposerResultCode resultCode, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnClose(resultCode, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMailComposerBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMailComposerBase.cs.meta new file mode 100644 index 00000000..de289425 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMailComposerBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 078f69a977fa04d88993f5374c7a981b +timeCreated: 1576907091 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMessageComposerBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMessageComposerBase.cs new file mode 100644 index 00000000..1886eb5a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMessageComposerBase.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public abstract class NativeMessageComposerBase : NativeObjectBase, INativeMessageComposer + { + #region INativeMessageComposer implementation + + public event MessageComposerClosedInternalCallback OnClose; + + public abstract void SetRecipients(params string[] values); + + public abstract void SetSubject(string value); + + public abstract void SetBody(string value); + + public abstract void AddScreenshot(string fileName); + + public abstract void AddImage(Texture2D image, string fileName); + + public abstract void AddAttachmentData(byte[] data, string mimeType, string fileName); + + public abstract void Show(); + + #endregion + + #region Private methods + + protected void SendCloseEvent(MessageComposerResultCode resultCode, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnClose(resultCode, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMessageComposerBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMessageComposerBase.cs.meta new file mode 100644 index 00000000..bbec0b36 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeMessageComposerBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b122148496fd7478aaba2ec35ce3164a +timeCreated: 1576908000 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeShareSheetBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeShareSheetBase.cs new file mode 100644 index 00000000..1984b0ba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeShareSheetBase.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public abstract class NativeShareSheetBase : NativeObjectBase, INativeShareSheet + { + #region INativeShareSheet implementation + + public event ShareSheetClosedInternalCallback OnClose; + + public abstract void AddText(string text); + + public abstract void AddScreenshot(); + + public abstract void AddImage(byte[] imageData, string mimeType); + + public abstract void AddAttachment(byte[] data, string mimeType, string filename); + + public abstract void AddURL(URLString url); + + public abstract void Show(Vector2 screenPosition); + + #endregion + + #region Private methods + + protected void SendCloseEvent(ShareSheetResultCode resultCode, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnClose(resultCode, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeShareSheetBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeShareSheetBase.cs.meta new file mode 100644 index 00000000..f8d5373e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeShareSheetBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5b922c7d8e4934e37ad6a7912a9b8558 +timeCreated: 1547660629 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSharingInterfaceBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSharingInterfaceBase.cs new file mode 100644 index 00000000..c234927e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSharingInterfaceBase.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public abstract class NativeSharingInterfaceBase : NativeFeatureInterfaceBase, INativeSharingInterface + { + #region Constructors + + protected NativeSharingInterfaceBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeSharingInterface implementation + + public abstract bool CanSendMail(); + + public abstract INativeMailComposer CreateMailComposer(); + + public abstract bool CanSendText(); + + public abstract bool CanSendAttachments(); + + public abstract bool CanSendSubject(); + + public abstract INativeMessageComposer CreateMessageComposer(); + + public abstract INativeShareSheet CreateShareSheet(); + + public abstract bool IsSocialShareComposerAvailable(SocialShareComposerType composerType); + + public abstract INativeSocialShareComposer CreateSocialShareComposer(SocialShareComposerType composerType); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSharingInterfaceBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSharingInterfaceBase.cs.meta new file mode 100644 index 00000000..4a043d00 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSharingInterfaceBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3ebc45e2e03e448b08e1ffc635d22c7f +timeCreated: 1577081685 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSocialShareComposerBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSocialShareComposerBase.cs new file mode 100644 index 00000000..ad9d993c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSocialShareComposerBase.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public abstract class NativeSocialShareComposerBase : NativeObjectBase, INativeSocialShareComposer + { + #region INativeSocialShareComposer implementation + + public event SocialShareComposerClosedInternalCallback OnClose; + + public abstract void SetText(string value); + + public abstract void AddScreenshot(); + + public abstract void AddImage(byte[] imageData); + + public abstract void AddURL(URLString url); + + public abstract void Show(Vector2 screenPosition); + + #endregion + + #region Private methods + + protected void SendCloseEvent(SocialShareComposerResultCode resultCode, Error error) + { + CallbackDispatcher.InvokeOnMainThread(() => OnClose(resultCode, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSocialShareComposerBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSocialShareComposerBase.cs.meta new file mode 100644 index 00000000..4c7450f3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NativeSocialShareComposerBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57b5b4c7d7ff74b3eaf7c4e46efee199 +timeCreated: 1577081930 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMailComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMailComposer.cs new file mode 100644 index 00000000..f8c1855d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMailComposer.cs @@ -0,0 +1,73 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public sealed class NullMailComposer : NativeMailComposerBase, INativeMailComposer + { + #region Constructors + + public NullMailComposer() + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("MailComposer"); + } + + #endregion + + #region Base class methods + + public override void SetToRecipients(params string[] values) + { + LogNotSupported(); + } + + public override void SetCcRecipients(params string[] values) + { + LogNotSupported(); + } + + public override void SetBccRecipients(params string[] values) + { + LogNotSupported(); + } + + public override void SetSubject(string value) + { + LogNotSupported(); + } + + public override void SetBody(string value, bool isHtml) + { + LogNotSupported(); + } + + public override void AddScreenshot(string fileName) + { + LogNotSupported(); + } + + public override void AddAttachmentData(byte[] data, string mimeType, string fileName) + { + LogNotSupported(); + } + + public override void Show() + { + LogNotSupported(); + + // send result + SendCloseEvent(MailComposerResultCode.Failed, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMailComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMailComposer.cs.meta new file mode 100644 index 00000000..186daea3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMailComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e46d7320134ed4be0ba2fe03a7a5875f +timeCreated: 1576909863 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMessageComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMessageComposer.cs new file mode 100644 index 00000000..ade8287d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMessageComposer.cs @@ -0,0 +1,68 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public sealed class NullMessageComposer : NativeMessageComposerBase, INativeMessageComposer + { + #region Constructors + + public NullMessageComposer() + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("MessageComposer"); + } + + #endregion + + #region Base class methods + + public override void SetRecipients(params string[] values) + { + LogNotSupported(); + } + + public override void SetSubject(string value) + { + LogNotSupported(); + } + + public override void SetBody(string value) + { + LogNotSupported(); + } + + public override void AddScreenshot(string fileName) + { + LogNotSupported(); + } + + public override void AddImage(Texture2D image, string fileName) + { + LogNotSupported(); + } + + public override void AddAttachmentData(byte[] data, string mimeType, string fileName) + { + LogNotSupported(); + } + + public override void Show() + { + LogNotSupported(); + + // send result + SendCloseEvent(MessageComposerResultCode.Failed, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMessageComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMessageComposer.cs.meta new file mode 100644 index 00000000..5f5f9967 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullMessageComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 69e496356ba764d81b44903ab31f5992 +timeCreated: 1576908575 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullShareSheet.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullShareSheet.cs new file mode 100644 index 00000000..7cc861ae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullShareSheet.cs @@ -0,0 +1,64 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public sealed class NullShareSheet : NativeShareSheetBase, INativeShareSheet + { + #region Constructors + + public NullShareSheet() + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("ShareSheet"); + } + + #endregion + + #region Base class methods + + public override void AddText(string text) + { + LogNotSupported(); + } + + public override void AddScreenshot() + { + LogNotSupported(); + } + + public override void AddImage(byte[] imageData, string mimeType) + { + LogNotSupported(); + } + + public override void AddURL(URLString url) + { + LogNotSupported(); + } + + public override void AddAttachment(byte[] data, string mimeType, string filename) + { + LogNotSupported(); + } + + public override void Show(Vector2 screenPosition) + { + LogNotSupported(); + + // send result + SendCloseEvent(ShareSheetResultCode.Cancelled, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullShareSheet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullShareSheet.cs.meta new file mode 100644 index 00000000..548d1477 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullShareSheet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6f6605a396d694766897f2be3160a21d +timeCreated: 1562656621 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSharingInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSharingInterface.cs new file mode 100644 index 00000000..e7ec6930 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSharingInterface.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public sealed class NullSharingInterface : NativeSharingInterfaceBase, INativeSharingInterface + { + #region Constructors + + public NullSharingInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Base methods + + public override bool CanSendMail() + { + return false; + } + + public override INativeMailComposer CreateMailComposer() + { + return new NullMailComposer(); + } + + public override bool CanSendText() + { + return false; + } + + public override bool CanSendAttachments() + { + return false; + } + + public override bool CanSendSubject() + { + return false; + } + + public override INativeMessageComposer CreateMessageComposer() + { + return new NullMessageComposer(); + } + + public override INativeShareSheet CreateShareSheet() + { + return new NullShareSheet(); + } + + public override bool IsSocialShareComposerAvailable(SocialShareComposerType composerType) + { + return false; + } + + public override INativeSocialShareComposer CreateSocialShareComposer(SocialShareComposerType composerType) + { + return new NullSocialShareComposer(composerType); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSharingInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSharingInterface.cs.meta new file mode 100644 index 00000000..b5056706 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSharingInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f88b96a3fdcf3438aad87ce8e23d7dde +timeCreated: 1577082378 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSocialShareComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSocialShareComposer.cs new file mode 100644 index 00000000..d16e8041 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSocialShareComposer.cs @@ -0,0 +1,59 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore +{ + public sealed class NullSocialShareComposer : NativeSocialShareComposerBase, INativeSocialShareComposer + { + #region Construtors + + public NullSocialShareComposer(SocialShareComposerType composerType) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("SocialShareComposer"); + } + + #endregion + + #region Base class methods + + public override void SetText(string value) + { + LogNotSupported(); + } + + public override void AddScreenshot() + { + LogNotSupported(); + } + + public override void AddImage(byte[] imageData) + { + LogNotSupported(); + } + + public override void AddURL(URLString url) + { + LogNotSupported(); + } + + public override void Show(Vector2 screenPosition) + { + LogNotSupported(); + + // send result + SendCloseEvent(SocialShareComposerResultCode.Cancelled, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSocialShareComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSocialShareComposer.cs.meta new file mode 100644 index 00000000..a5f95f09 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/NullSocialShareComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 83b22f00847984a1289f93c21735cf56 +timeCreated: 1577081930 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareItem.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareItem.cs new file mode 100644 index 00000000..3fd271cb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareItem.cs @@ -0,0 +1,234 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Class internally used to pass data options into sharing functions. + /// + /// @ingroup SharingServices + public class ShareItem + { + #region Constants + + private static readonly ShareItem kInvalidItem = new ShareItem() { m_itemType = ShareItemType.None }; + + #endregion + + #region Fields + + private ShareItemType m_itemType; + + private string m_text; + + private URLString? m_url; + + private byte[] m_rawData; + + private string m_imagePath; + + private string m_mimeType; + + private string m_fileName; + + #endregion + + #region Properties + + public ShareItemType ItemType => m_itemType; + + #endregion + + #region Create methods + + /// + /// Option used to share a text content. + /// + /// Text. + public static ShareItem Text(string text) + { + // check arguments + if (text == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Text is null."); + return kInvalidItem; + } + + // create new instance + return new ShareItem() + { + m_itemType = ShareItemType.Text, + m_text = text, + }; + } + + /// + /// Option used to share a url. + /// + /// URL. + public static ShareItem URL(URLString url) + { + // check arguments + if (!url.IsValid) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Url is invalid."); + return kInvalidItem; + } + + // create new instance + return new ShareItem() + { + m_itemType = ShareItemType.URL, + m_url = url, + }; + } + + /// + /// Option used to share an image content. + /// + /// Image. + /// Texture encoding format. + /// File name. + public static ShareItem Image(Texture2D image, TextureEncodingFormat textureEncodingFormat, string fileName) + { + // check arguments + if (image == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Image is null."); + return kInvalidItem; + } + if (fileName == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "File name is null."); + return kInvalidItem; + } + + // create instance + var data = image.Encode(textureEncodingFormat, out string mimeType); + return new ShareItem() + { + m_itemType = ShareItemType.ImageData, + m_rawData = data, + m_mimeType = mimeType, + m_fileName = fileName, + }; + } + + /// + /// Option used to share an file content (image). + /// + /// Image data. + /// Mime type. + /// File name. + public static ShareItem File(byte[] data, string mimeType, string fileName) + { + // check arguments + if (data == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Data is null."); + return kInvalidItem; + } + if (mimeType == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Mime type is null."); + return kInvalidItem; + } + if (fileName == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "File name is null."); + return kInvalidItem; + } + + // create new instance + return new ShareItem() + { + m_itemType = ShareItemType.FileData, + m_rawData = data, + m_mimeType = mimeType, + m_fileName = fileName, + }; + } + + /// + /// Option used to a share screenshot. + /// + public static ShareItem Screenshot() + { + return new ShareItem() + { + m_itemType = ShareItemType.Screenshot, + }; + } + + #endregion + + #region Internal methods + + public string GetText() + { + // validate request + if (m_itemType != ShareItemType.Text) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Invalid request."); + return null; + } + + return m_text; + } + + public URLString? GetURL() + { + // validate request + if (m_itemType != ShareItemType.URL) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Invalid request."); + return null; + } + + return m_url; + } + + public byte[] GetFileData(out string mimeType, out string fileName) + { + // set default reference values + mimeType = null; + fileName = null; + + // validate request + if ((m_itemType != ShareItemType.ImageData) && (m_itemType != ShareItemType.FileData)) + { + DebugLogger.LogError(EssentialKitDomain.Default, "Invalid request."); + return null; + } + + // set reference values + mimeType = m_mimeType; + fileName = m_fileName; + + return m_rawData; + } + + #endregion + + #region Nested types + + public enum ShareItemType + { + None = 0, + + Text, + + URL, + + ImageData, + + FileData, + + Screenshot, + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareItem.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareItem.cs.meta new file mode 100644 index 00000000..607a5a62 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareItem.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 13e6bf531d40f46c4b0b5f4c73a80276 +timeCreated: 1579758170 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheet.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheet.cs new file mode 100644 index 00000000..6d9a7580 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheet.cs @@ -0,0 +1,275 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.SharingServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The ShareSheet class provides an interface to access standard services from your app. + /// + /// + /// + /// The system provides several standard services, such as copying items to the pasteboard, posting content to social media sites, sending items via email or SMS, and more. + /// + /// + /// @ingroup SharingServices + public sealed class ShareSheet : NativeFeatureBehaviour + { + #region Fields + + private INativeShareSheet m_nativeComposer = null; + + private EventCallback m_callback = null; + + #endregion + + #region Create methods + + /// + /// Initializes a new instance of the class. + /// + public static ShareSheet CreateInstance() + { + return CreateInstanceInternal("ShareSheet"); + } + + #endregion + + #region Lifecycle methods + + protected override void AwakeInternal(object[] args) + { + base.AwakeInternal(args); + + // set properties + var sharingInterface = SharingServices.NativeInterface; + m_nativeComposer = sharingInterface.CreateShareSheet(); + m_callback = null; + + // register for events + m_nativeComposer.OnClose += HandleOnClose; + } + + protected override void DestroyInternal() + { + base.DestroyInternal(); + + // unregister from event + m_nativeComposer.OnClose -= HandleOnClose; + + // reset interface properties + m_nativeComposer.Dispose(); + + m_callback = null; + } + + #endregion + + #region Behaviour methods + + public override bool IsAvailable() + { + return SharingServices.NativeInterface.IsAvailable; + } + + protected override string GetFeatureName() + { + return "Share Sheet"; + } + + #endregion + + #region Public methods + + /// + /// Adds the initial text to the share sheet. + /// + /// The text to add. + public void AddText(string value) + { + // validate arguments + if (null == value) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Text value is null."); + return; + } + + try + { + // make request + m_nativeComposer.AddText(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Creates a screenshot and adds it to the share sheet. + /// + public void AddScreenshot() + { + try + { + // make request + m_nativeComposer.AddScreenshot(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds the specified image to the share sheet. + /// + /// The image to add. + /// The texture encoding format. + public void AddImage(Texture2D image, TextureEncodingFormat textureEncodingFormat = TextureEncodingFormat.JPG) + { + // validate arguments + if (null == image) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Image is null."); + return; + } + + try + { + // convert image to raw format + string mimeType; + byte[] data = image.Encode(textureEncodingFormat, out mimeType); + + // submit data + m_nativeComposer.AddImage(data, mimeType); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds the specified image to the share sheet. + /// + public void AddImage(byte[] imageData, string mimeType) + { + // validate arguments + if (null == imageData) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Image data array is null."); + return; + } + + try + { + // make request + m_nativeComposer.AddImage(imageData, mimeType); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds the URL to the share sheet. + /// + /// The URL to add. + public void AddURL(URLString url) + { + // validate arguments + if (false == url.IsValid) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Specified url is invalid."); + return; + } + + try + { + // make request + m_nativeComposer.AddURL(url); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + + /// + /// Adds the attachment to the share sheet. + /// + public void AddAttachment(byte[] data, string mimeType, string filename) + { + m_nativeComposer.AddAttachment(data, mimeType, filename); + } + + /// + /// Specify the action to execute after the share sheet is dismissed. + /// + /// The action to be called on completion. + public void SetCompletionCallback(EventCallback callback) + { + // validate arguments + if (null == callback) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Callback is null."); + return; + } + + // save callback reference + m_callback = callback; + } + + /// + /// Shows the share sheet interface, anchored at screen position (0, 0). + /// + public void Show() + { + Show(Vector2.zero); + } + + /// + /// Shows the share sheet interface, anchored to given position. + /// + /// The position (in the coordinate system of screen) at which to anchor the share sheet menu. This property is used in iOS platform only. + public void Show(Vector2 screenPosition) + { + try + { + // present view + m_nativeComposer.Show(screenPosition); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + #endregion + + #region Event callback methods + + private void HandleOnClose(ShareSheetResultCode resultCode, Error error) + { + // send result to caller object + var result = new ShareSheetResult(resultCode); + CallbackDispatcher.InvokeOnMainThread(m_callback, result, error); + + // release native object + Destroy(gameObject); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheet.cs.meta new file mode 100644 index 00000000..c01c7171 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6987abf2297854f9c8445db93e1a36af +timeCreated: 1547645482 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResult.cs new file mode 100644 index 00000000..7daece29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the result of the user action which caused interface to dismiss. + /// + /// @ingroup SharingServices + public class ShareSheetResult + { + #region Properties + + /// + /// Gets the result of the user’s action. + /// + /// The result code of user’s action. + public ShareSheetResultCode ResultCode { get; private set; } + + #endregion + + #region Constructors + + internal ShareSheetResult(ShareSheetResultCode resultCode) + { + // Set properties + ResultCode = resultCode; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResult.cs.meta new file mode 100644 index 00000000..cfa989b3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7929af2228ae4091baba3d8affa6fc6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResultCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResultCode.cs new file mode 100644 index 00000000..c13682d2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResultCode.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Result codes returned when the interface is dismissed. + /// + /// @ingroup SharingServices + public enum ShareSheetResultCode + { + /// The user action could not be determined. This occurs in platforms where there is no provision to find result. + Unknown, + + /// The user cancelled the operation. + Cancelled, + + /// The user has completed action by selecting one of the service. + Done, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResultCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResultCode.cs.meta new file mode 100644 index 00000000..7325247b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/ShareSheetResultCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ae00d606b02244ddfa7f571508aa8c23 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServices.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServices.cs new file mode 100644 index 00000000..843f86fb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServices.cs @@ -0,0 +1,262 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit.SharingServicesCore; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Provides a cross-platform interface to access sharing services. + /// + /// @ingroup SharingServices + public static class SharingServices + { + #region Static fields + + [ClearOnReload] + private static INativeSharingInterface s_nativeInterface = null; + + #endregion + + #region Static properties + + public static SharingServicesUnitySettings UnitySettings { get; private set; } + + internal static INativeSharingInterface NativeInterface => s_nativeInterface; + + #endregion + + #region Static methods + + public static bool IsAvailable() + { + return (s_nativeInterface != null) && s_nativeInterface.IsAvailable; + } + + public static void Initialize(SharingServicesUnitySettings settings) + { + Assert.IsArgNotNull(settings, nameof(settings)); + + // Set default properties + UnitySettings = settings; + + // Configure interface + s_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.SharingServices, true); + } + + /// + /// Shows the mail composer. + /// + /// To recipients. + /// Cc recipients. + /// Bcc recipients. + /// Subject. + /// Body. + /// If set to true is html body. + /// Callback. + /// Share items. + public static void ShowMailComposer(string[] toRecipients = null, string[] ccRecipients = null, string[] bccRecipients = null, string subject = null, string body = null, bool isHtmlBody = false, EventCallback callback = null, params ShareItem[] shareItems) + { + // create a new instance and set specified properties + var newComposer = MailComposer.CreateInstance(); + if (toRecipients != null) + { + newComposer.SetToRecipients(toRecipients); + } + if (ccRecipients != null) + { + newComposer.SetCcRecipients(ccRecipients); + } + if (bccRecipients != null) + { + newComposer.SetBccRecipients(bccRecipients); + } + if (subject != null) + { + newComposer.SetSubject(subject); + } + if (body != null) + { + newComposer.SetBody(body, isHtmlBody); + } + if (shareItems != null) + { + for (int iter = 0; iter < shareItems.Length; iter++) + { + var item = shareItems[iter]; + var itemType = item.ItemType; + switch (itemType) + { + case ShareItem.ShareItemType.ImageData: + case ShareItem.ShareItemType.FileData: + string mimeType, fileName; + var data = item.GetFileData(out mimeType, out fileName); + newComposer.AddAttachment(data, mimeType, fileName); + break; + + case ShareItem.ShareItemType.Screenshot: + newComposer.AddScreenshot("screenshot.png"); + break; + } + } + } + if (callback != null) + { + newComposer.SetCompletionCallback(callback); + } + newComposer.Show(); + } + + /// + /// Shows the message composer. + /// + /// Recipients. + /// Subject. + /// Body. + /// Callback. + /// Share items. + public static void ShowMessageComposer(string[] recipients = null, string subject = null, string body = null, EventCallback callback = null, params ShareItem[] shareItems) + { + // create a new instance and set specified properties + var newComposer = MessageComposer.CreateInstance(); + if (recipients != null) + { + newComposer.SetRecipients(recipients); + } + if (MessageComposer.CanSendSubject() && (subject != null)) + { + newComposer.SetSubject(subject); + } + if (body != null) + { + newComposer.SetBody(body); + } + if (MessageComposer.CanSendAttachments() && (shareItems != null)) + { + for (int iter = 0; iter < shareItems.Length; iter++) + { + var item = shareItems[iter]; + var itemType = item.ItemType; + switch (itemType) + { + case ShareItem.ShareItemType.FileData: + case ShareItem.ShareItemType.ImageData: + string mimeType, fileName; + var data = item.GetFileData(out mimeType, out fileName); + newComposer.AddAttachment(data, mimeType, fileName); + break; + + case ShareItem.ShareItemType.Screenshot: + newComposer.AddScreenshot("screenshot.png"); + break; + } + } + } + if (callback != null) + { + newComposer.SetCompletionCallback(callback); + } + newComposer.Show(); + } + + public static void ShowShareSheet(EventCallback callback = null, params ShareItem[] shareItems) + { + // create a new instance and set specified properties + var newSheet = ShareSheet.CreateInstance(); + if (shareItems != null) + { + for (int iter = 0; iter < shareItems.Length; iter++) + { + var item = shareItems[iter]; + var itemType = item.ItemType; + switch (itemType) + { + case ShareItem.ShareItemType.Text: + newSheet.AddText(item.GetText()); + break; + + case ShareItem.ShareItemType.URL: + newSheet.AddURL(item.GetURL().Value); + break; + + case ShareItem.ShareItemType.ImageData: + string mimeType, fileName; + var data = item.GetFileData(out mimeType, out fileName); + newSheet.AddImage(data, mimeType); + break; + + case ShareItem.ShareItemType.Screenshot: + newSheet.AddScreenshot(); + break; + } + } + } + if (callback != null) + { + newSheet.SetCompletionCallback(callback); + } + newSheet.Show(); + } + + public static void ShowSocialShareComposer(SocialShareComposerType composerType, EventCallback callback = null, params ShareItem[] shareItems) + { + // create a new instance and set specified properties + var newSheet = SocialShareComposer.CreateInstance(composerType); + if (shareItems != null) + { + for (int iter = 0; iter < shareItems.Length; iter++) + { + var item = shareItems[iter]; + var itemType = item.ItemType; + switch (itemType) + { + case ShareItem.ShareItemType.Text: + newSheet.SetText(item.GetText()); + break; + + case ShareItem.ShareItemType.URL: + newSheet.AddURL(item.GetURL().Value); + break; + + case ShareItem.ShareItemType.ImageData: + string mimeType, fileName; + var data = item.GetFileData(out mimeType, out fileName); + newSheet.AddImage(data); + break; + + case ShareItem.ShareItemType.Screenshot: + newSheet.AddScreenshot(); + break; + } + } + } + if (callback != null) + { + newSheet.SetCompletionCallback(callback); + } + newSheet.Show(); + } + + #endregion + + #region Convertion methods + + public static void ConvertGifToShareItem(string filePath, SuccessCallback onSuccess, ErrorCallback onError) + { + // Guard cases + if (!IOServices.FileExists(filePath)) + { + onError?.Invoke(new Error("File not found.")); + return; + } + + // Check + + } + + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServices.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServices.cs.meta new file mode 100644 index 00000000..f6410129 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServices.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b061c59548fad44ba80dbd8771c5bd04 +timeCreated: 1577194989 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesError.cs new file mode 100644 index 00000000..3f3dd15b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesError.cs @@ -0,0 +1,24 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class SharingServicesError + { + public const string kDomain = "[Essential Kit] Notification Services"; + + public static Error Unknown(string description = null) => CreateError( + code: (int)SharingServicesErrorCode.Unknown, + description: description ?? "Unknown error." + ); + + public static Error PermissionNotAvailable(string description = null) => CreateError( + code: (int)SharingServicesErrorCode.AttachmentNotValid, + description: description ?? "Attacment not valid." + ); + + private static Error CreateError(int code, string description) => new Error( + domain: kDomain, + code: code, + description: description); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesError.cs.meta new file mode 100644 index 00000000..42e85cf3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6163c9d84ed6e43e58ad870a7904866a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesErrorCode.cs new file mode 100644 index 00000000..920cacfe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesErrorCode.cs @@ -0,0 +1,18 @@ +namespace VoxelBusters.EssentialKit +{ + /// + /// Error codes for . + /// + public enum SharingServicesErrorCode + { + /// + /// Unknown error. + /// + Unknown, + + /// + /// Attachment to be shared is not valid. + /// + AttachmentNotValid + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesErrorCode.cs.meta new file mode 100644 index 00000000..5e66bb24 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SharingServicesErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04e9e1c1cdd944945881a4eee8f5e267 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposer.cs new file mode 100644 index 00000000..71c2ba10 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposer.cs @@ -0,0 +1,289 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.SharingServicesCore; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The SocialShareComposer class provides an interface to compose a post for supported social networking services. + /// + /// + /// The following code example shows how to create composer for Facebook + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// public void Start() + /// { + /// SocialShareComposer newComposer = SocialShareComposer.CreateInstance(SocialShareComposerType.Facebook); + /// newComposer.AddText("Example"); + /// newComposer.AddScreenshot(); + /// newComposer.SetCompletionCallback(OnShareComposerClosed); + /// newComposer.Show(); + /// } + /// + /// private void OnShareComposerClosed(SocialShareComposerResult result, Error error) + /// { + /// // add your code + /// } + /// } + /// + /// + /// @ingroup SharingServices + public sealed class SocialShareComposer : NativeFeatureBehaviour + { + #region Fields + + private INativeSocialShareComposer m_nativeComposer = null; + + private EventCallback m_callback = null; + + #endregion + + #region Create methods + + /// + /// Initializes a new instance of the class. + /// + /// Composer type. + public static SocialShareComposer CreateInstance(SocialShareComposerType composerType) + { + return CreateInstanceInternal("SocialShareComposer", composerType); + } + + #endregion + + #region Static methods + + /// + /// Checks if a composer is available. + /// + /// Composer type. + public static bool IsComposerAvailable(SocialShareComposerType composerType) + { + try + { + var sharingInterface = SharingServices.NativeInterface; + return sharingInterface.IsSocialShareComposerAvailable(composerType); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + + #endregion + + #region Lifecycle methods + + protected override void AwakeInternal(object[] args) + { + base.AwakeInternal(args); + + // initialise component + var sharingInterface = SharingServices.NativeInterface; + var composerType = (args == null) ? SocialShareComposerType.Facebook : (SocialShareComposerType)args[0]; + m_nativeComposer = sharingInterface.CreateSocialShareComposer(composerType); + m_callback = null; + + // register for events + m_nativeComposer.OnClose += HandleOnClose; + } + + protected override void DestroyInternal() + { + base.DestroyInternal(); + + // unregister from event + m_nativeComposer.OnClose -= HandleOnClose; + + // reset interface properties + m_nativeComposer.Dispose(); + + m_callback = null; + } + + #endregion + + #region Behaviour methods + + public override bool IsAvailable() + { + return SharingServices.NativeInterface.IsAvailable; + } + + protected override string GetFeatureName() + { + return "Social Share Composer"; + } + + #endregion + + #region Public methods + + /// + /// Adds the initial text to be posted. + /// + /// The text to add to the post. + public void SetText(string value) + { + // validate arguments + Assert.IsArgNotNull(value, "value"); + + try + { + // make request + m_nativeComposer.SetText(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Creates a screenshot and adds it to the post. + /// + public void AddScreenshot() + { + try + { + // make request + m_nativeComposer.AddScreenshot(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds an image to the post. + /// + public void AddImage(Texture2D image, TextureEncodingFormat textureEncodingFormat = TextureEncodingFormat.JPG) + { + // validate arguments + Assert.IsArgNotNull(image, "image"); + + try + { + // convert image to raw format + string mimeType; + byte[] data = image.Encode(textureEncodingFormat, out mimeType); + + // submit data + m_nativeComposer.AddImage(data); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds an image to the post. + /// + /// The image to add to the post. + public void AddImage(byte[] imageData) + { + // validate arguments + Assert.IsArgNotNull(imageData, "imageData"); + + try + { + // make request + m_nativeComposer.AddImage(imageData); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Adds a URL to the post. + /// + /// The URL to add to the post. + public void AddURL(URLString url) + { + // validate arguments + Assert.IsTrue(url.IsValid, "Specified url is invalid."); + + try + { + // make request + m_nativeComposer.AddURL(url); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Specify the action to execute after the share sheet is dismissed. + /// + /// The action to be called on completion. + public void SetCompletionCallback(EventCallback callback) + { + // validate arguments + Assert.IsArgNotNull(callback, "callback"); + + // save callback reference + m_callback = callback; + } + + /// + /// Shows the share sheet interface, anchored at screen position (0, 0). + /// + public void Show() + { + Show(Vector2.zero); + } + + /// + /// Shows the share sheet interface, anchored to given position. + /// + /// The position (in the coordinate system of screen) at which to anchor the share sheet menu. This property is used in iOS platform only. + public void Show(Vector2 screenPosition) + { + try + { + // present view + m_nativeComposer.Show(screenPosition); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + #endregion + + #region Event callback methods + + private void HandleOnClose(SocialShareComposerResultCode resultCode, Error error) + { + // send result to caller object + var result = new SocialShareComposerResult(resultCode); + CallbackDispatcher.InvokeOnMainThread(m_callback, result, error); + + // release native object + Destroy(gameObject); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposer.cs.meta new file mode 100644 index 00000000..f5462290 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c47840e1570234684bd8d4e811148fc5 +timeCreated: 1547645482 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResult.cs new file mode 100644 index 00000000..1f507575 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the result of the user action which caused interface to dismiss. + /// + /// @ingroup SharingServices + public class SocialShareComposerResult + { + #region Properties + + /// + /// Gets the result of the user’s action. + /// + /// The result code of user’s action. + public SocialShareComposerResultCode ResultCode { get; private set; } + + #endregion + + #region Constructors + + internal SocialShareComposerResult(SocialShareComposerResultCode resultCode) + { + // Set properties + ResultCode = resultCode; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResult.cs.meta new file mode 100644 index 00000000..339e14e5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 84c46365966c14588944e46107dd8bb2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResultCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResultCode.cs new file mode 100644 index 00000000..d9d1a61f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResultCode.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Possible values for the result, when interface is dismissed. + /// + public enum SocialShareComposerResultCode + { + /// The composer view is dismissed, but system couldn't determine the result. This occurs in platforms where there is no provision to find result. + Unknown, + + /// The view controller is dismissed without sending the post. For example, the user selects Cancel or the account is not available. + Cancelled, + + /// The composer view is dismissed and the message is being sent in the background. This occurs when the user selects Done. + Done, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResultCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResultCode.cs.meta new file mode 100644 index 00000000..3dc99705 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerResultCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee2b270b56c1147ef83f259ed20645d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerType.cs new file mode 100644 index 00000000..adbea175 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerType.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// The enum specifies the sharing service you want to post to. + /// + public enum SocialShareComposerType + { + /// The value indicates Facebook platform. + Facebook, + + /// The value indicates Twitter platform. + Twitter, + + /// The value indicates WhatsApp platform. + WhatsApp, + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerType.cs.meta new file mode 100644 index 00000000..23c8bc4c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/SharingServices/SocialShareComposerType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4dcd29182d28644f9a2bce864d8619b1 +timeCreated: 1547647426 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView.meta new file mode 100644 index 00000000..1af55a6b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db8d87963ff014141a8a06c850d558ab +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/INativeWebView.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/INativeWebView.cs new file mode 100644 index 00000000..e299e6c0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/INativeWebView.cs @@ -0,0 +1,68 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.WebViewCore +{ + public interface INativeWebView : INativeFeatureInterface + { + #region Events + + event WebViewInternalCallback OnShow; + + event WebViewInternalCallback OnHide; + + event WebViewInternalCallback OnLoadStart; + + event WebViewInternalCallback OnLoadFinish; + + event URLSchemeMatchFoundInternalCallback OnURLSchemeMatchFound; + + #endregion + + #region Methods + + string GetURL(); + + string GetTitle(); + + void SetFrame(Rect value); + + void SetStyle(WebViewStyle style); + + void SetScalesPageToFit(bool value); + + void SetCanBounce(bool value); + + void SetBackgroundColor(Color value); + + double GetProgress(); + + bool GetIsLoading(); + + void SetJavaScriptEnabled(bool value); + + void Show(); + + void Hide(); + + void LoadURL(string url); + + void LoadHtmlString(string htmlString, string baseURL); + + void LoadData(byte[] data, string mimeType, string textEncodingName, string baseURL); + + void Reload(); + + void StopLoading(); + + void RunJavaScript(string script, RunJavaScriptInternalCallback callback); + + void AddURLScheme(string urlScheme); + + void ClearCache(); + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/INativeWebView.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/INativeWebView.cs.meta new file mode 100644 index 00000000..8acfd84b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/INativeWebView.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b77a17fb31185420f9dccccbf66dbe52 +timeCreated: 1576915667 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/InternalDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/InternalDelegates.cs new file mode 100644 index 00000000..5ee9982d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/InternalDelegates.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.WebViewCore +{ + public delegate void WebViewInternalCallback(Error error); + + public delegate void RunJavaScriptInternalCallback(string result, Error error); + + public delegate void URLSchemeMatchFoundInternalCallback(string url); +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/InternalDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/InternalDelegates.cs.meta new file mode 100644 index 00000000..9f0238a5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/InternalDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2ad25c143697429996e26151abcd69f +timeCreated: 1553082368 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NativeWebViewBase.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NativeWebViewBase.cs new file mode 100644 index 00000000..3be7f897 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NativeWebViewBase.cs @@ -0,0 +1,117 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.WebViewCore +{ + public abstract class NativeWebViewBase : NativeFeatureInterfaceBase, INativeWebView + { + #region Constructors + + protected NativeWebViewBase(bool isAvailable) + : base(isAvailable) + { } + + #endregion + + #region INativeWebViewInterface implementation + + public event WebViewInternalCallback OnShow; + + public event WebViewInternalCallback OnHide; + + public event WebViewInternalCallback OnLoadStart; + + public event WebViewInternalCallback OnLoadFinish; + + public event URLSchemeMatchFoundInternalCallback OnURLSchemeMatchFound; + + public abstract string GetURL(); + + public abstract string GetTitle(); + + public abstract void SetFrame(Rect value); + + public abstract void SetStyle(WebViewStyle style); + + public abstract void SetScalesPageToFit(bool value); + + public abstract void SetCanBounce(bool value); + + public abstract void SetBackgroundColor(Color value); + + public abstract double GetProgress(); + + public abstract bool GetIsLoading(); + + public abstract void SetJavaScriptEnabled(bool value); + + public abstract void Show(); + + public abstract void Hide(); + + public abstract void LoadURL(string url); + + public abstract void LoadHtmlString(string htmlString, string baseURL); + + public abstract void LoadData(byte[] data, string mimeType, string textEncodingName, string baseURL); + + public abstract void Reload(); + + public abstract void StopLoading(); + + public abstract void RunJavaScript(string script, RunJavaScriptInternalCallback callback); + + public abstract void AddURLScheme(string urlScheme); + + public abstract void ClearCache(); + + #endregion + + #region Private methods + + protected void SendShowEvent(Error error) + { + if (OnShow != null) + { + CallbackDispatcher.InvokeOnMainThread(() => OnShow(error)); + } + } + + protected void SendHideEvent(Error error) + { + if (OnHide != null) + { + CallbackDispatcher.InvokeOnMainThread(() => OnHide(error)); + } + } + + protected void SendLoadStartEvent(Error error) + { + if (OnLoadStart != null) + { + CallbackDispatcher.InvokeOnMainThread(() => OnLoadStart(error)); + } + } + + protected void SendLoadFinishEvent(Error error) + { + if (OnLoadFinish != null) + { + CallbackDispatcher.InvokeOnMainThread(() => OnLoadFinish(error)); + } + } + + protected void SendURLSchemeMatchFoundEvent(string url) + { + if (OnURLSchemeMatchFound != null) + { + CallbackDispatcher.InvokeOnMainThread(() => OnURLSchemeMatchFound(url)); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NativeWebViewBase.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NativeWebViewBase.cs.meta new file mode 100644 index 00000000..ca03dba3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NativeWebViewBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 87548f76608bf4829b7829fed614f6d0 +timeCreated: 1576915906 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NullNativeWebView.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NullNativeWebView.cs new file mode 100644 index 00000000..39865a17 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NullNativeWebView.cs @@ -0,0 +1,177 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.WebViewCore +{ + internal sealed class NullNativeWebView : NativeWebViewBase, INativeWebView + { + #region Fields + + private string m_url; + + #endregion + + #region Constructors + + public NullNativeWebView() + : base(isAvailable: false) + { } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("WebView"); + } + + #endregion + + #region Base class methods + + public override string GetURL() + { + LogNotSupported(); + + return m_url; + } + + public override string GetTitle() + { + LogNotSupported(); + + return string.Empty; + } + + public override void SetFrame(Rect value) + { + LogNotSupported(); + } + + public override void SetStyle(WebViewStyle style) + { + LogNotSupported(); + } + + public override void SetScalesPageToFit(bool value) + { + LogNotSupported(); + } + + public override void SetCanBounce(bool value) + { + LogNotSupported(); + } + + public override void SetBackgroundColor(Color value) + { + LogNotSupported(); + } + + public override double GetProgress() + { + LogNotSupported(); + + return 0d; + } + + public override bool GetIsLoading() + { + LogNotSupported(); + + return false; + } + + public override void SetJavaScriptEnabled(bool value) + { + LogNotSupported(); + } + + public override void Show() + { + LogNotSupported(); + + SendShowEvent(Diagnostics.kFeatureNotSupported); + } + + public override void Hide() + { + LogNotSupported(); + + SendHideEvent(Diagnostics.kFeatureNotSupported); + } + + public override void LoadURL(string url) + { + // set value + m_url = url; + + LogNotSupported(); + + SendLoadEvents(); + } + + public override void LoadHtmlString(string htmlString, string baseURL) + { + // set value + m_url = "blank"; + + LogNotSupported(); + + SendLoadEvents(); + } + + public override void LoadData(byte[] data, string mimeType, string textEncodingName, string baseURL) + { + // set value + m_url = "blank"; + + LogNotSupported(); + + SendLoadEvents(); + } + + public override void Reload() + { + LogNotSupported(); + } + + public override void StopLoading() + { + LogNotSupported(); + } + + public override void RunJavaScript(string script, RunJavaScriptInternalCallback callback) + { + LogNotSupported(); + + callback(null, Diagnostics.kFeatureNotSupported); + } + + public override void AddURLScheme(string urlScheme) + { + LogNotSupported(); + } + + public override void ClearCache() + { + LogNotSupported(); + } + + #endregion + + #region Private methods + + private void SendLoadEvents() + { + SendLoadStartEvent(Diagnostics.kFeatureNotSupported); + + SendLoadFinishEvent(Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NullNativeWebView.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NullNativeWebView.cs.meta new file mode 100644 index 00000000..1c68177d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/NullNativeWebView.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1d6fce99fd12f452ca0366b56de766da +timeCreated: 1576915906 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebView.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebView.cs new file mode 100644 index 00000000..d2aeda67 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebView.cs @@ -0,0 +1,795 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit.WebViewCore; + +namespace VoxelBusters.EssentialKit +{ + /** @defgroup WebView Web View + * @brief Provides a cross-platform interface to display web contents inside your application. + */ + + /// + /// Provides a cross-platform interface to display web contents inside your application. + /// + /// + /// To do so, drag and drop the WebView prefab into scene heirarchy, which is placed under folder Assets/VoxelBusters/NativePlugins/Prefab. + /// And then send it a request to display web content. + /// You can also use this class to move back and forward in the history, just like web browser by setting control type to eWebviewControlType.TOOLBAR. + /// + /// + /// The following code illustrates how to load webpage using web view. + /// + /// using UnityEngine; + /// using System.Collections; + /// using VoxelBusters.EssentialKit; + /// + /// public class ExampleClass : MonoBehaviour + /// { + /// public WebView m_webView; + /// + /// private void Start() + /// { + /// // set web view properties + /// m_webView = WebView.CreateInstance(); + /// m_webView.SetFullScreen(); + /// + /// // start request + /// m_webView.LoadURL(new URLString("https://www.google.com")); + /// } + /// + /// private void OnEnable() + /// { + /// // registering for event + /// WebView.OnShow += OnShow; + /// WebView.OnHide += OnHide; + /// WebView.OnLoadStart += OnLoadStart; + /// WebView.OnLoadFinish += OnLoadFinish; + /// } + /// + /// private void OnDisable() + /// { + /// // unregistering event + /// WebView.OnShow -= OnShow; + /// WebView.OnHide -= OnHide; + /// WebView.OnLoadStart -= OnLoadStart; + /// WebView.OnLoadFinish -= OnLoadFinish; + /// } + /// + /// private void OnShow(WebView result) + /// { + /// if (m_webView == result) + /// { + /// Debug.Log("Showing webview."); + /// } + /// } + /// + /// private void OnHide(WebView result) + /// { + /// if (m_webView == result) + /// { + /// Debug.Log("Hiding webview."); + /// } + /// } + /// + /// private void OnLoadStart(WebView result) + /// { + /// if (m_webView == result) + /// { + /// Debug.Log("Started loading request with url:" + m_webView.URL); + /// } + /// } + /// + /// private void OnLoadFinish(WebView result, Error error) + /// { + /// if (m_webView == result) + /// { + /// if (error == null) + /// { + /// Debug.Log("Webview did finish loading request successfully."); + /// } + /// else + /// { + /// Debug.Log("Webview did fail to load request. Error: " + error.Description); + /// } + /// } + /// } + /// } + /// + /// + /// @ingroup WebView + public sealed class WebView : NativeFeatureBehaviour + { + #region Fields + + [SerializeField] + private bool m_autoShowOnLoadFinish = true; + + [SerializeField] + private bool m_scalesPageToFit = true; + + [SerializeField] + private bool m_canBounce = true; + + [SerializeField] + private bool m_javascriptEnabled = true; + + [SerializeField] + private WebViewStyle m_style = WebViewStyle.Popup; + + [SerializeField] + private Rect m_frame = new Rect(); + + [SerializeField] + private Color m_backgroundColor = Color.white; + + private INativeWebView m_nativeInterface; + private WebViewUnitySettings m_settings; + + #endregion + + #region Static properties + + public static WebViewUnitySettings GlobalSettings { get; private set; } + + #endregion + + #region Properties + + public WebViewUnitySettings Settings + { + get => m_settings; + set => m_settings = value; + } + + /// + /// The active URL. (read-only) + /// + public string URL + { + get + { + try + { + return m_nativeInterface.GetURL(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + } + + /// + /// The page title. (read-only) + /// + public string Title + { + get + { + try + { + return m_nativeInterface.GetTitle(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + } + } + + /// + /// The frame rectangle describes the webview’s position and size. + /// + public Rect Frame + { + get + { + return m_frame; + } + set + { + try + { + // set new value + m_frame = value; + + // apply changes to native object + m_nativeInterface.SetFrame(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + } + + /// + /// An enum value that determines the appearence of webview. + /// + public WebViewStyle Style + { + get + { + return m_style; + } + set + { + try + { + // set new value + m_style = value; + + // apply changes to native object + m_nativeInterface.SetStyle(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + } + + /// + /// A boolean value indicating whether webview can auto show itself when load request is finished. + /// + public bool AutoShowOnLoadFinish + { + get + { + return m_autoShowOnLoadFinish; + } + set + { + m_autoShowOnLoadFinish = value; + } + } + + /// + /// A boolean value indicating whether web view scales webpages to fit the view and the user can change the scale. + /// + public bool ScalesPageToFit + { + get + { + return m_scalesPageToFit; + } + set + { + try + { + // set new value + m_scalesPageToFit = value; + + // apply changes to native object + m_nativeInterface.SetScalesPageToFit(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + } + + /// + /// A Boolean value that controls whether the web view bounces past the edge of content and back again. + /// + public bool CanBounce + { + get + { + return m_canBounce; + } + set + { + try + { + // set new value + m_canBounce = value; + + // apply changes to native object + m_nativeInterface.SetCanBounce(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + } + + /// + /// The background color of the webview. + /// + public Color BackgroundColor + { + get + { + return m_backgroundColor; + } + set + { + try + { + // set new value + m_backgroundColor = value; + + // apply changes to native object + m_nativeInterface.SetBackgroundColor(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + } + + /// + /// The value indicates the progress of load request. + /// + public double Progress + { + get + { + try + { + return m_nativeInterface.GetProgress(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return 0d; + } + } + } + + /// + /// A boolean value indicating whether this webview is loading content. + /// + public bool IsLoading + { + get + { + try + { + return m_nativeInterface.GetIsLoading(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return false; + } + } + } + + /// + /// A boolean value indicating whether this webview allows java script execution. + /// + public bool JavaScriptEnabled + { + get + { + return m_javascriptEnabled; + } + set + { + try + { + // set new value + m_javascriptEnabled = value; + + // apply changes to native object + m_nativeInterface.SetJavaScriptEnabled(value); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + } + + #endregion + + #region Static events + + /// + /// Event that will be called when webview is first displayed. + /// + public static event Callback OnShow; + + /// + /// Event that will be called when webview is dismissed. + /// + public static event Callback OnHide; + + /// + /// Event that will be called when web view begins load request. + /// + public static event Callback OnLoadStart; + + /// + /// Event that will be called when web view has finished loading. + /// + public static event EventCallback OnLoadFinish; + + /// + /// Event that will be called when web view has finished loading. + /// + public static event Callback OnURLSchemeMatchFound; + + #endregion + + #region Create methods + + public static void Initialize(WebViewUnitySettings globalSettings) + { + Assert.IsArgNotNull(globalSettings, nameof(globalSettings)); + + // Set default properties + GlobalSettings = globalSettings; + } + + /// + /// Initializes a new instance of the class. + /// + public static WebView CreateInstance(WebViewUnitySettings settings = null) + { + return CreateInstanceInternal("WebView", new object[] { settings }); //@@ Passing array object isn't required but just to make aware of the ambiguity when passing null to params parameter so that on the receiving end it's considered accordingly (as array with null element if null is passed). + } + + #endregion + + #region Lifecycle methods + + protected override void AwakeInternal(object[] args) + { + base.AwakeInternal(args); + + // Configure interface + Settings = (args.IsNullOrEmpty() || args[0] == null) ? GlobalSettings : args[0] as WebViewUnitySettings; + m_nativeInterface = NativeFeatureActivator.CreateInterface(ImplementationSchema.WebView, true); + + RegisterForEvents(); + } + + protected override void StartInternal() + { + base.StartInternal(); + + // apply available settings values + ScalesPageToFit = m_scalesPageToFit; + CanBounce = m_canBounce; + JavaScriptEnabled = m_javascriptEnabled; + BackgroundColor = m_backgroundColor; + Style = m_style; + Frame = m_frame; + } + + protected override void DestroyInternal() + { + base.DestroyInternal(); + + UnregisterFromEvents(); + + // invalidate native object + if (m_nativeInterface != null) + { + m_nativeInterface.Hide(); + m_nativeInterface.Dispose(); + } + } + + #endregion + + #region Behaviour methodss + + public override bool IsAvailable() + { + return (m_nativeInterface != null) && m_nativeInterface.IsAvailable; + } + + protected override string GetFeatureName() + { + return "WebView"; + } + + #endregion + + #region Public methods + + /// + /// Displays the webview on the top of Unity view. + /// + public void Show() + { + try + { + m_nativeInterface.Show(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Hides the web view. + /// + public void Hide() + { + try + { + m_nativeInterface.Hide(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Connects to a given URL and asynchronously loads the content. + /// + /// A URL identifying the location of the content to load. + /// + /// \note Don’t use this method to load local HTML files, instead use . + /// + public void LoadURL(URLString url) + { + // validate arguments + if (false == url.IsValid) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Specified url is invalid."); + return; + } + + try + { + m_nativeInterface.LoadURL(url.ToString()); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Loads the webpage contents. + /// + /// The contents of the webpage. + /// The base URL for the content. + public void LoadHtmlString(string htmlString, URLString? baseURL = null) + { + // validate arguments + if (null == htmlString) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Html string is null."); + return; + } + if (baseURL.HasValue && !baseURL.Value.IsValid) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Specified base url is invalid."); + return; + } + + try + { + m_nativeInterface.LoadHtmlString(htmlString, baseURL.ToString()); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Loads the webpage contents from specified file. + /// + /// The data to use as the contents of the webpage. + /// The MIME type of the content. + /// The content's character encoding name. + /// The base URL for the content. + public void LoadData(byte[] data, string mimeType, string textEncodingName, URLString? baseURL = null) + { + // validate arguments + if (null == data) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Data array is null."); + return; + } + if (string.IsNullOrEmpty(mimeType)) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Mime type is null."); + return; + } + if (string.IsNullOrEmpty(textEncodingName)) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Text encoding name is null."); + return; + } + if (baseURL.HasValue && !baseURL.Value.IsValid) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Specified base url is invalid."); + return; + } + + try + { + m_nativeInterface.LoadData(data, mimeType, textEncodingName, baseURL.ToString()); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Reloads the current page. + /// + public void Reload() + { + try + { + m_nativeInterface.Reload(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Stops loading the current page contents. + /// + public void StopLoading() + { + try + { + m_nativeInterface.StopLoading(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Executes a JavaScript string. + /// + /// The JavaScript string to evaluate. + /// Callback method that will be invoked after operation is completed. + public void RunJavaScript(string script, EventCallback callback) + { + // validate arguments + if (null == callback) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Callback is null."); + return; + } + if (script == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, "Script is null."); + return; + } + + try + { + // make request + m_nativeInterface.RunJavaScript(script, (jsResult, jsError) => + { + // send result to caller object + var result = new WebViewRunJavaScriptResult(jsResult); + CallbackDispatcher.InvokeOnMainThread(callback, result, jsError); + }); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Registers the specified scheme, after which web view will start to listen for custom URL. + /// + /// + /// This approach is used for communicating web view with Unity. + /// When web view starts loading contents, it will check against registered schemes. + /// And incase if a match is found, web view will raise DidReceiveMessageEvent along with URL information. + /// + /// The scheme name of the URL. + public void AddURLScheme(string urlScheme) + { + try + { + m_nativeInterface.AddURLScheme(urlScheme); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + /// + /// Clears all stored cached URL responses. + /// + public void ClearCache() + { + try + { + m_nativeInterface.ClearCache(); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + } + + #endregion + + #region Private methods + + private void RegisterForEvents() + { + m_nativeInterface.OnShow += HandleOnWebViewShow; + m_nativeInterface.OnHide += HandleOnWebViewHide; + m_nativeInterface.OnLoadStart += HandleOnWebViewLoadStart; + m_nativeInterface.OnLoadFinish += HandleOnWebViewLoadFinish; + m_nativeInterface.OnURLSchemeMatchFound += HandleOnURLSchemeMatchFound; + } + + private void UnregisterFromEvents() + { + m_nativeInterface.OnShow -= HandleOnWebViewShow; + m_nativeInterface.OnHide -= HandleOnWebViewHide; + m_nativeInterface.OnLoadStart -= HandleOnWebViewLoadStart; + m_nativeInterface.OnLoadFinish -= HandleOnWebViewLoadFinish; + m_nativeInterface.OnURLSchemeMatchFound -= HandleOnURLSchemeMatchFound; + } + + #endregion + + #region Event callback methods + + private void HandleOnWebViewShow(Error error) + { + // notify listeners + CallbackDispatcher.InvokeOnMainThread(OnShow, this); + } + + private void HandleOnWebViewHide(Error error) + { + // notify listeners + CallbackDispatcher.InvokeOnMainThread(OnHide, this); + } + + private void HandleOnWebViewLoadStart(Error error) + { + // notify listeners + CallbackDispatcher.InvokeOnMainThread(OnLoadStart, this); + } + + private void HandleOnWebViewLoadFinish(Error error) + { + // notify listeners + CallbackDispatcher.InvokeOnMainThread(OnLoadFinish, this, error); + + // check whether webview needs to be displayed on completing request + if ((null == error) && AutoShowOnLoadFinish) + { + Show(); + } + } + + private void HandleOnURLSchemeMatchFound(string url) + { + // notify listeners + CallbackDispatcher.InvokeOnMainThread(OnURLSchemeMatchFound, url); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebView.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebView.cs.meta new file mode 100644 index 00000000..9311330e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebView.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 76a14c73d63db47159b2df86a9156be8 +timeCreated: 1551091364 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewError.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewError.cs new file mode 100644 index 00000000..b6d6ef68 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewError.cs @@ -0,0 +1,19 @@ +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + public class WebViewError + { + public const string kDomain = "WebView"; + + public static Error Unknown(string description = null) => CreateError( + code: (int)SharingServicesErrorCode.Unknown, + description: description ?? "Unknown error." + ); + + private static Error CreateError(int code, string description) => new Error( + domain: kDomain, + code: code, + description: description); + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewError.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewError.cs.meta new file mode 100644 index 00000000..94fa4beb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09fa37d5221f44c05b78b5444435fc69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewErrorCode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewErrorCode.cs new file mode 100644 index 00000000..439628bc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewErrorCode.cs @@ -0,0 +1,7 @@ +namespace VoxelBusters.EssentialKit +{ + public enum WebViewErrorCode + { + Unknown + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewErrorCode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewErrorCode.cs.meta new file mode 100644 index 00000000..f741f9a5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewErrorCode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efd51e06dd33e4272a8c337413a2d035 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewExtensions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewExtensions.cs new file mode 100644 index 00000000..c180934c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewExtensions.cs @@ -0,0 +1,64 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Web view extensions. + /// + /// @ingroup WebView + public static class WebViewExtensions + { + #region Property extension methods + + /// + /// Sets the webview frame to full screen size. + /// + public static void SetFullScreen(this WebView webView) + { + SurrogateCoroutine.WaitUntilAndInvoke(new WaitForFixedUpdate(), () => + { + Rect newRect = new Rect(0f, 0f, Screen.width, Screen.height); + webView.Frame = newRect; + }); + } + + /// + /// Sets the frame rectangle describes the webview’s position and size in normalized coordinate system. + /// + public static void SetNormalizedFrame(this WebView webView, Rect normalizedRect) + { + Rect rect = new Rect() + { + x = normalizedRect.x * Screen.width, + y = normalizedRect.y * Screen.height, + width = normalizedRect.width * Screen.width, + height = normalizedRect.height * Screen.height, + }; + webView.Frame = rect; + } + + #endregion + + #region Extension methods + + /// + /// Loads a texture into the webview. + /// + /// The web view. + /// The texture. + /// The texture encoding format. + public static void LoadTexture(this WebView webView, Texture2D texture, TextureEncodingFormat textureEncodingFormat) + { + // get texture properties + string mimeType, textEncodingName; + byte[] data = texture.Encode(textureEncodingFormat, out mimeType, out textEncodingName); + + webView.LoadData(data, mimeType, textEncodingName); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewExtensions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewExtensions.cs.meta new file mode 100644 index 00000000..b6e493ab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewExtensions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88179926ea3d94e409a59944a7e30f80 +timeCreated: 1562570808 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewRunJavaScriptResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewRunJavaScriptResult.cs new file mode 100644 index 00000000..ac7e3a46 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewRunJavaScriptResult.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit +{ + /// + /// This class contains the information retrieved when operation is completed. + /// + /// @ingroup WebView + public class WebViewRunJavaScriptResult + { + #region Properties + + /// + /// The result returned on completing js code. + /// + public string Result { get; private set; } + + #endregion + + #region Constructors + + internal WebViewRunJavaScriptResult(string result) + { + // Set properties + Result = result; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewRunJavaScriptResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewRunJavaScriptResult.cs.meta new file mode 100644 index 00000000..c3acdd8d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewRunJavaScriptResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67ff1d409159b4b3d8bad649ac0761e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewStyle.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewStyle.cs new file mode 100644 index 00000000..6bb34613 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewStyle.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit +{ + /// + /// Enumeration for supported webview control styles. + /// + public enum WebViewStyle + { + /// + /// No controls are shown for web view. This appearence is ideal for banner ads like requirement. + /// + Default, + + /// + /// This option creates a close button at top-right corner of the web view. On clicking this, web view gets dismissed. + /// + /// + /// \note Incase if you want to permanetly remove web view instance, use . + /// + Popup, + + /// + /// This option provides browser like appearence with 4 buttons for easy access to web view features. + /// + /// + /// It has Back and Forward buttons for navigating through the history. + /// Reload button for reloading the current webpage contents. + /// And finally, Done button for dismissing the web view. + /// + Browser + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewStyle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewStyle.cs.meta new file mode 100644 index 00000000..886ec16a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Core/WebView/WebViewStyle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e57d751765e914f118a17187bb5bc844 +timeCreated: 1563544785 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator.meta new file mode 100644 index 00000000..3bd36274 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 53b5d23417dba4f72b624cb3605057bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook.meta new file mode 100644 index 00000000..a451666d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 13e7495690d144fa5a87dae745557546 +folderAsset: yes +timeCreated: 1554431411 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookContact.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookContact.cs new file mode 100644 index 00000000..1ad52b85 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookContact.cs @@ -0,0 +1,85 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Simulator +{ + internal sealed class AddressBookContact : AddressBookContactBase, IAddressBookContact + { + #region Fields + + private string m_firstName; + + private string m_lastName; + + private string m_middleName; + + private string[] m_phoneNumbers; + + private string[] m_emailAddresses; + + private string m_companyName; + + #endregion + + #region Constructors + + public AddressBookContact(string firstName, string middleName = "", string lastName = "", string[] phoneNumbers = null, string[] emailAddresses = null, string companyName = null) + { + // set properties + m_firstName = firstName; + m_middleName = middleName; + m_lastName = lastName; + m_phoneNumbers = phoneNumbers ?? new string[0]; + m_emailAddresses = emailAddresses ?? new string[0]; + m_companyName = companyName; + } + + ~AddressBookContact() + { + Dispose(false); + } + + #endregion + + #region Base methods + + protected override string GetFirstNameInternal() + { + return m_firstName; + } + + protected override string GetMiddleNameInternal() + { + return m_middleName; + } + + protected override string GetLastNameInternal() + { + return m_lastName; + } + + protected override string[] GetPhoneNumbersInternal() + { + return m_phoneNumbers; + } + + protected override string[] GetEmailAddressesInternal() + { + return m_emailAddresses; + } + + protected override string GetCompanyNameInternal() + { + return m_companyName; + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + callback(null, new Error(description: "Not supported!")); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookContact.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookContact.cs.meta new file mode 100644 index 00000000..1f5d9c33 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookContact.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0f181f8719bc84ff09a42d6bac3ba3cb +timeCreated: 1554431655 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookInterface.cs new file mode 100644 index 00000000..51cb6d89 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookInterface.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Simulator +{ + public sealed class AddressBookInterface : NativeAddressBookInterfaceBase, INativeAddressBookInterface + { + #region Constructors + + public AddressBookInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override AddressBookContactsAccessStatus GetContactsAccessStatus() + { + return AddressBookSimulator.Instance.GetContactsAccessStatus(); + } + + public override void ReadContacts(ReadContactsOptions optons, ReadContactsInternalCallback callback) + { + AddressBookSimulator.Instance.ReadContacts(optons, (contacts, nextOffset, error) => callback(contacts, nextOffset, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookInterface.cs.meta new file mode 100644 index 00000000..30b84cfe --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b4137390d83b147eca2d00a383b20a64 +timeCreated: 1554431729 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulator.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulator.cs new file mode 100644 index 00000000..4ee27c48 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulator.cs @@ -0,0 +1,162 @@ +using System.IO; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.Editor.NativePlugins; +using System.Linq; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Simulator +{ + public sealed class AddressBookSimulator : SingletonObject + { + #region Constants + + // messages + private const string kUnauthorizedAccessError = "Unauthorized access! You need permission to access the contacts."; + + #endregion + + #region Fields + + private readonly AddressBookContact[] m_contacts = null; + + private readonly AddressBookSimulatorData m_simulatorData = null; + + #endregion + + #region Delegates + + public delegate void RequestContactsAccessCallback(AddressBookContactsAccessStatus accessStatus, Error error); + + public delegate void ReadContactsCallback(IAddressBookContact[] contacts, int nextOffset, Error error); + + #endregion + + #region Constructors + + private AddressBookSimulator() + { + // set properties + m_contacts = GetDummyContacts(); + m_simulatorData = LoadData() ?? new AddressBookSimulatorData(); + } + + #endregion + + #region Database methods + + private AddressBookSimulatorData LoadData() + { + return SimulatorServices.GetObject(NativeFeatureType.kAddressBook); + } + + private void SaveData() + { + SimulatorServices.SetObject(NativeFeatureType.kAddressBook, m_simulatorData); + } + + public static void Reset() + { + SimulatorServices.RemoveObject(NativeFeatureType.kAddressBook); + } + + #endregion + + #region Public static methods + + public AddressBookContactsAccessStatus GetContactsAccessStatus() + { + return m_simulatorData.ContactsAccessStatus; + } + + public void RequestContactsAccess(RequestContactsAccessCallback callback) + { + // check whether required permission is already granted + var accessStatus = GetContactsAccessStatus(); + if (AddressBookContactsAccessStatus.Authorized == accessStatus) + { + callback(AddressBookContactsAccessStatus.Authorized, null); + } + else + { + // show prompt to user asking for required permission + var applicationSettings = EssentialKitSettings.Instance.ApplicationSettings; + var usagePermission = applicationSettings.UsagePermissionSettings.AddressBookUsagePermission; + + var newAlertDialog = new AlertDialogBuilder() + .SetTitle("Address Book Simulator") + .SetMessage(usagePermission.GetDescriptionForActivePlatform()) + .AddButton("Authorise", () => + { + // save selection + m_simulatorData.ContactsAccessStatus = AddressBookContactsAccessStatus.Authorized; + SaveData(); + + // send result + callback(AddressBookContactsAccessStatus.Authorized, null); + }) + .AddCancelButton("Cancel", () => + { + // save selection + m_simulatorData.ContactsAccessStatus = AddressBookContactsAccessStatus.Denied; + SaveData(); + + // send result + callback(AddressBookContactsAccessStatus.Denied, null); + }). + Build(); + newAlertDialog.Show(); + } + } + + public void ReadContacts(ReadContactsOptions options, ReadContactsCallback callback) + { + RequestContactsAccess((status, error) => { + var accessStatus = GetContactsAccessStatus(); + if (AddressBookContactsAccessStatus.Authorized == accessStatus) + { + var contacts = m_contacts.Skip(options.Offset).Take(options.Limit).ToArray(); + var nextOffset = (contacts.Length < options.Limit) ? -1 : (options.Limit + options.Offset); + nextOffset = HasMoreContacts(nextOffset) ? nextOffset : -1; //Checking one entry forward so that we can know if there are any existing. + callback(contacts, nextOffset, null); + } + else + { + callback(null, -1, new Error(AddressBookError.kDomain, code: (int)AddressBookErrorCode.PermissionDenied, description: kUnauthorizedAccessError)); + } + }); + } + + #endregion + + #region Private methods + + private AddressBookContact[] GetDummyContacts() + { + // create fake contacts + int count = 20; + var newContacts = new AddressBookContact[count]; + for (int iter = 0; iter < count; iter++) + { + newContacts[iter] = new AddressBookContact( + firstName: Path.GetRandomFileName(), + lastName: Path.GetRandomFileName(), + phoneNumbers: Random.value > 0.5f ? new string[] { (9876543200 + iter).ToString() } : new string[] {}, + emailAddresses: Random.value > 0.5f ? new string[] { "abc" + iter.ToString() + "@xyz.com" } : new string[] {} + ); + } + return newContacts; + } + + private bool HasMoreContacts(int fromOffset) + { + if(fromOffset == -1) + return false; + + var contacts = m_contacts.Skip(fromOffset).Take(1).ToArray(); + return contacts.Length > 0; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulator.cs.meta new file mode 100644 index 00000000..a1acc882 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 30272c087f902429b89cf9bb9a97b004 +timeCreated: 1554431655 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulatorData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulatorData.cs new file mode 100644 index 00000000..505847b5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulatorData.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.AddressBookCore.Simulator +{ + [Serializable] + internal sealed class AddressBookSimulatorData + { + #region Fields + + [SerializeField] + private AddressBookContactsAccessStatus m_contactsAccessStatus = AddressBookContactsAccessStatus.NotDetermined; + + #endregion + + #region Properties + + public AddressBookContactsAccessStatus ContactsAccessStatus + { + get + { + return m_contactsAccessStatus; + } + set + { + m_contactsAccessStatus = value; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulatorData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulatorData.cs.meta new file mode 100644 index 00000000..38085cc8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AddressBook/AddressBookSimulatorData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e1aaa7e977232488aa3efbd6c0133fcb +timeCreated: 1576674714 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater.meta new file mode 100644 index 00000000..01a9810e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0952cfcfe981f440bb4d5fb336e42392 +folderAsset: yes +timeCreated: 1554431411 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater/AppUpdaterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater/AppUpdaterInterface.cs new file mode 100644 index 00000000..003c0627 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater/AppUpdaterInterface.cs @@ -0,0 +1,149 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.Simulator +{ + public sealed class AppUpdaterInterface : NativeFeatureInterfaceBase, INativeAppUpdaterInterface + { + #region Constants + private const string kBuildTagKey = "EssentialKit.AppUpdaterBuildTagKey"; + #endregion + + #region Fields + + private AppUpdaterUpdateInfo m_cachedUpdateInfo; + + #endregion + + #region Constructors + + public AppUpdaterInterface() + : base(isAvailable: true) + { + + } + + #endregion + + #region INativeAppUpdaterInterface implementation methods + + public void RequestUpdateInfo(EventCallback callback) + { + bool isNewUpdateAvailable = IsNewUpdateAvailable(); + if(isNewUpdateAvailable) + { + m_cachedUpdateInfo = new AppUpdaterUpdateInfo(AppUpdaterUpdateStatus.Available, GetBuildTag()); + callback(m_cachedUpdateInfo, null); + } + else + { + if(IsFirstTimeInstall()) + { + RecordCurrentBuildTag(); + } + + m_cachedUpdateInfo = new AppUpdaterUpdateInfo(AppUpdaterUpdateStatus.NotAvailable, -1); + callback(m_cachedUpdateInfo, null); + } + } + + public void PromptUpdate(PromptUpdateOptions options, EventCallback callback) + { + if (m_cachedUpdateInfo != null) + { + if (m_cachedUpdateInfo.Status == AppUpdaterUpdateStatus.Available) + { + var alertDialogBuilder = new AlertDialogBuilder() + .SetTitle(AppUpdater.UnitySettings.DefaultPromptTitle) + .SetMessage(AppUpdater.UnitySettings.DefaultPromptMessage) + .AddButton("Update", () => + { + if (options.IsForceUpdate || options.AllowInstallationIfDownloaded) + { + RecordCurrentBuildTag(); + } + callback(1f, null); + }); + + if (!options.IsForceUpdate) + { + alertDialogBuilder.AddCancelButton("Cancel", () => + { + callback(0f, AppUpdaterError.UpdateCancelled); + }); + } + + var alertDialog = alertDialogBuilder.Build(); + alertDialog.Show(); + } + else + { + callback(0f, AppUpdaterError.UpdateNotAvailable); + } + } + else + { + callback(0f, AppUpdaterError.UpdateInfoNotAvailable); + } + } + + + #endregion + + #region Private methods + + private bool IsNewUpdateAvailable() + { + if(IsFirstTimeInstall()) + { + return false; + } + + var existingVersionCode = PlayerPrefs.GetInt(kBuildTagKey); + var currentVersionCode = GetBuildTag(); + + return currentVersionCode > existingVersionCode; + } + + private bool IsFirstTimeInstall() + { + return !PlayerPrefs.HasKey(kBuildTagKey); + } + + private void RecordCurrentBuildTag() + { + PlayerPrefs.SetInt(kBuildTagKey, GetBuildTag()); + } + + + private int GetBuildTag() + { + var platform = ApplicationServices.GetActiveOrSimulationPlatform(); + switch(platform) + { + case RuntimePlatform.Android: + return PlayerSettings.Android.bundleVersionCode; + case RuntimePlatform.IPhonePlayer: + int.TryParse(PlayerSettings.iOS.buildNumber, out int result); + return result; + } + + return -1; + } + + #endregion + + #region Static methods + public static void Reset() + { + PlayerPrefs.DeleteKey(kBuildTagKey); + } + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater/AppUpdaterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater/AppUpdaterInterface.cs.meta new file mode 100644 index 00000000..7bf94a69 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/AppUpdater/AppUpdaterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9872c5fba64346d19dc07186497ec8b +timeCreated: 1554431729 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices.meta new file mode 100644 index 00000000..16459847 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0d6bbd495da304af3ac52cc8dd7545be +folderAsset: yes +timeCreated: 1554433909 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingProductData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingProductData.cs new file mode 100644 index 00000000..e24e7fda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingProductData.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Serialization; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Simulator +{ + [Serializable] + public sealed class BillingProductData + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private BillingProductType m_productType; + + [SerializeField] + private string m_localizedTitle; + + [SerializeField] + private string m_localizedDescription; + + [FormerlySerializedAs("m_localizedPrice")] + [SerializeField] + private double m_price; + + [SerializeField] + private string m_priceCurrencyCode; + + [SerializeField] + private string m_priceCurrencySymbol; + + [SerializeField] + private string m_displayText; + + #endregion + + #region Properties + + public string Id + { + get + { + return m_id; + } + } + + public BillingProductType ProductType + { + get + { + return m_productType; + } + } + + public string LocalizedTitle + { + get + { + return m_localizedTitle; + } + } + + public string LocalizedDescription + { + get + { + return m_localizedDescription; + } + } + public double Price + { + get + { + return m_price; + } + } + + public string PriceCurrencyCode + { + get + { + return m_priceCurrencyCode; + } + } + + public string PriceCurrencySymbol + { + get + { + return m_priceCurrencySymbol; + } + } + + public string DisplayText + { + get + { + return m_displayText; + } + } + + #endregion + + #region Constructors + + public BillingProductData(string id, string title, string description, double price, string currencyCode, string currencySymbol, string displayText, BillingProductType productType) + { + // set properties + m_id = id; + m_productType = productType; + m_localizedTitle = title; + m_localizedDescription = description; + m_price = price; + m_priceCurrencyCode = currencyCode; + m_priceCurrencySymbol = currencySymbol; + m_displayText = displayText; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingProductData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingProductData.cs.meta new file mode 100644 index 00000000..ee4a2688 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingProductData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 38882bc5bc5d74cdab6b5092c0a62a8b +timeCreated: 1563793521 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingServicesInterface.cs new file mode 100644 index 00000000..0a97250e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingServicesInterface.cs @@ -0,0 +1,228 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Simulator +{ + public sealed class BillingServicesInterface : NativeBillingServicesInterfaceBase + { + #region Constructors + + public BillingServicesInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Create methods + + private static BillingProductPlain[] ConvertToProductArray(BillingProductData[] array) + { + return SystemUtility.ConvertEnumeratorItems( + enumerator: ((IEnumerable)array).GetEnumerator(), + converter: (input) => + { + string productId = input.Id; + var settings = BillingServices.FindProductDefinitionWithId(productId); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified id: {productId}."); + return null; + } + + var price = new BillingPrice(input.Price, input.PriceCurrencyCode, input.PriceCurrencySymbol, input.DisplayText); + var subscriptionInfo = GetSampleSubscriptionInfo(settings); + + return new BillingProductPlain( + id: productId, + platformId: settings.GetPlatformIdForActivePlatform(), + type: settings.ProductType, + localizedTitle: input.LocalizedTitle, + localizedDescription: input.LocalizedDescription, + price: price, + subscriptionInfo: subscriptionInfo, + offers: GetSampleOffers(settings, price), + payouts: settings.Payouts); + }, + includeNullObjects: false); + } + + private static BillingTransactionPlain[] ConvertToTransactionArray(BillingTransactionData[] array, BillingReceiptVerificationState verificationState) + { + return SystemUtility.ConvertEnumeratorItems( + enumerator: ((IEnumerable)array).GetEnumerator(), + converter: (input) => + { + string productId = input.ProductId; + var settings = BillingServices.FindProductDefinitionWithId(productId, returnObjectOnFail: true); + var billingProduct = BillingServices.GetProductWithId(productId, includeInactive: true); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified id: {productId}."); + return null; + } + + var payment = new BillingPayment( + productId: productId, + productPlatformId: settings.GetPlatformIdForActivePlatform(), + quantity: input.Quantity, + tag: input.Tag); + + return new BillingTransactionPlain( + transactionId: input.TransactionId, + product: billingProduct, + requestedQuantity: input.Quantity, + tag: input.Tag, + transactionState: input.TransactionState, + verificationState: verificationState, + transactionDate: input.TransactionDate, + receipt: null, + environment: input.Environment, + applicationBundleIdentifier: input.ApplicationBundleIdentifier, + purchasedQuantity: input.PurchasedQuantity, + revocationInfo: input.RevocationDate.HasValue ? new BillingProductRevocationInfo(dateUTC: input.RevocationDate.Value, reason: input.RevocationReason.Value) : null, + subscriptionStatus: input.SubscriptionStatus, + rawData: input.RawData, + error: input.Error); + }, + includeNullObjects: false); + } + + private static BillingProductSubscriptionInfo GetSampleSubscriptionInfo(BillingProductDefinition product) + { + if(product.ProductType != BillingProductType.Subscription) + { + return null; + } + + var billingPeriodUnit = GetPeriodUnitFromSubscriptionProduct(product); + + if(billingPeriodUnit == null) + return null; + + var info = new BillingProductSubscriptionInfo(groupId: "simulatorGroupId", localizedGroupTitle: "simulatorSubscriptionGroup", level: 1, period: new BillingPeriod(duration: 1, billingPeriodUnit.Value)); + return info; + } + + private static IEnumerable GetSampleOffers(BillingProductDefinition productDefinition, BillingPrice price) + { + List offers = new List(); + + if(productDefinition.ProductType != BillingProductType.Subscription) + { + return offers; + } + + var billingPeriodUnit = GetPeriodUnitFromSubscriptionProduct(productDefinition); + if(billingPeriodUnit == null) + { + return offers; + } + + var random = UnityEngine.Random.Range(0.0f, 1f); + BillingProductOfferPricingPhase freeTrialPricingPhase = new BillingProductOfferPricingPhase(BillingProductOfferPaymentMode.FreeTrial, new BillingPrice(0.00, "USD", "$", "Free trial"), new BillingPeriod(1, billingPeriodUnit.Value-1), 1); + BillingProductOfferPricingPhase promotionalPricingPhase = new BillingProductOfferPricingPhase(BillingProductOfferPaymentMode.PayAsYouGo, new BillingPrice(Math.Round(price.Value * random,2), "USD", "$", $"${price.Value*random:0.##}"), new BillingPeriod(1, billingPeriodUnit.Value-1), 3); + offers.Add(new BillingProductOffer("sampleOffer1", BillingProductOfferCategory.Introductory, new List(){freeTrialPricingPhase})); + offers.Add(new BillingProductOffer("sampleOffer2", BillingProductOfferCategory.Promotional, new List(){promotionalPricingPhase})); + + return offers; + } + + private static BillingPeriodUnit? GetPeriodUnitFromSubscriptionProduct(BillingProductDefinition productDefinition) + { + var subscriptionDescription = productDefinition.Description; + BillingPeriodUnit? unit = null; + + if(string.IsNullOrEmpty(subscriptionDescription)) + unit = null; + + if(subscriptionDescription.Contains("week", StringComparison.OrdinalIgnoreCase)) + { + unit = BillingPeriodUnit.Week; + } + else if(subscriptionDescription.Contains("month", StringComparison.OrdinalIgnoreCase)) + { + unit = BillingPeriodUnit.Month; + } + else if(subscriptionDescription.Contains("year", StringComparison.OrdinalIgnoreCase)) + { + unit = BillingPeriodUnit.Year; + } + + if(unit == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Set a product description (containing week/month/year text)for the subscription {productDefinition.Id} so that subscription can be relevantly simulated on editor."); + } + + return unit; + } + + + #endregion + + #region Base class methods + + public override bool CanMakePayments() + { + return true; + } + + public override void RetrieveProducts(BillingProductDefinition[] productDefinitions) + { + BillingStoreSimulator.Instance.GetProducts(productDefinitions, (dataArray, error) => + { + var products = ConvertToProductArray(dataArray); + SendRetrieveProductsCompleteEvent(products, null, error); + }); + } + + public override bool IsProductPurchased(IBillingProduct product) + { + return BillingStoreSimulator.Instance.IsProductPurchased(product.Id); + } + + public override void BuyProduct(string productId, string productPlatformId, BuyProductOptions options) + { + // initate request + BillingStoreSimulator.Instance.BuyProduct(productId, productPlatformId, options.Quantity, options.Tag, (data) => + { + var transactions = ConvertToTransactionArray(new BillingTransactionData[] { data }, GetReceiptVerificationState()); + SendPaymentStateChangeEvent(transactions); + }); + } + + public override IBillingTransaction[] GetTransactions() + { + return null; + } + + public override void FinishTransactions(IBillingTransaction[] transactions) + { } + + public override void RestorePurchases(bool forceRefresh, string tag) + { + BillingStoreSimulator.Instance.RestorePurchases(forceRefresh, tag, (dataArray, error) => + { + var transactions = ConvertToTransactionArray(dataArray, GetReceiptVerificationState()); + SendRestorePurchasesCompleteEvent(transactions, error); + }); + } + + public override void TryClearingUnfinishedTransactions() + { + } + + #endregion + + #region Private methods + + private BillingReceiptVerificationState GetReceiptVerificationState() + { + return BillingReceiptVerificationState.Success; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingServicesInterface.cs.meta new file mode 100644 index 00000000..f74f875d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2a4535574fb2d48408a81394769c5560 +timeCreated: 1554434153 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulator.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulator.cs new file mode 100644 index 00000000..b1eb4da3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulator.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.Editor.NativePlugins; +using UnityEditor; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Simulator +{ + public sealed class BillingStoreSimulator : SingletonObject + { + #region Fields + private BillingProductData[] m_products; + + private readonly BillingStoreSimulatorData m_simulatorData = null; + + private bool m_isPurchasing = false; + + #endregion + + #region Constructors + + private BillingStoreSimulator() + { + // set properties + m_products = null; + m_simulatorData = LoadFromDisk() ?? new BillingStoreSimulatorData(); + } + + #endregion + + #region Create methods + + private static BillingProductData CreateProduct(BillingProductDefinition productDefinition) + { + return new BillingProductData(productDefinition.Id, productDefinition.Title, productDefinition.Description, 0.99, "USD", "$", "$0.99", productDefinition.ProductType); + } + + private static BillingTransactionData CreateTransaction(string productId, int quantity, string tag, BillingTransactionState transactionState, BillingProductType productType, Error error = null) + { + return new BillingTransactionData(productId, quantity, tag, "transactionId", DateTime.Now, transactionState, productType, quantity, "originalTransactionId", DateTime.Now, PlayerSettings.applicationIdentifier, BillingEnvironment.Local, null, null, null, null, error); + } + + #endregion + + #region Public methods + + public void GetProducts(BillingProductDefinition[] productDefinitions, Action callback) + { + BillingProductData[] storeProducts = null; + Error error = null; + + // check input + if (productDefinitions.Length == 0) + { + error = new Error(description: "The operation could not be completed because product list is empty."); + } + else + { + // create product info + storeProducts = Array.ConvertAll(productDefinitions, (item) => CreateProduct(item)); + } + + // update cache + m_products = storeProducts; + + // send result + callback(storeProducts, error); + } + + public bool IsProductPurchased(string productId) + { + return m_simulatorData.IsProductPurchased(productId); + } + + public bool BuyProduct(string productId, string productPlatformId, int quantity, string tag, Action callback) + { + // check input + var product = FindProductWithId(productId); + if (product == null) + { + callback(CreateTransaction(productId, quantity, tag, BillingTransactionState.Failed, product.ProductType, BillingServicesError.ProductNotAvailable())); + return false; + } + else if(string.IsNullOrEmpty(productPlatformId)) + { + var description = $"You must specify the platform id (or its overrides) for the current active build platform in the settings for billing product with id: {productId}."; + DebugLogger.LogError(description); + callback(CreateTransaction(productId, quantity, tag, BillingTransactionState.Failed, product.ProductType, BillingServicesError.ProductNotAvailable())); + return false; + } + + // check whether item is purchased + if (m_simulatorData.IsProductPurchased(product.Id) && (product.ProductType == BillingProductType.NonConsumable || product.ProductType == BillingProductType.Subscription)) + { + callback(CreateTransaction(productId, quantity, tag, BillingTransactionState.Failed, product.ProductType, BillingServicesError.ProductOwned())); + return true; + } + + if(m_isPurchasing) + { + callback(CreateTransaction(productId, quantity, tag, BillingTransactionState.Failed, product.ProductType, BillingServicesError.StoreIsBusy())); + return false; + } + + m_isPurchasing = true; + + // confirm with user + string message = string.Format("Do you want to buy {0} for {1}?", product.LocalizedTitle, product.Price); + var newAlertDialog = new AlertDialogBuilder() + .SetTitle("Confirm your purchase") + .SetMessage(message) + .AddButton("Ok", () => + { + m_isPurchasing = false; + // update purchase data + if (product.ProductType == BillingProductType.NonConsumable || product.ProductType == BillingProductType.Subscription) + { + m_simulatorData.AddProductToPurchaseHistory(product.Id); + SaveData(); + } + + // send result + callback(CreateTransaction(productId, quantity, tag, BillingTransactionState.Purchased, product.ProductType)); + }) + .AddCancelButton("Cancel", () => + { + m_isPurchasing = false; + // send result + callback(CreateTransaction(productId, quantity, tag, BillingTransactionState.Failed, product.ProductType, BillingServicesError.UserCancelled())); + }) + .Build(); + newAlertDialog.Show(); + + return true; + } + + public void RestorePurchases(bool forceRefresh, string tag, Action callback) + { + if (m_products == null) + { + callback(null, BillingServicesError.StoreNotInitialized()); + return; + } + + var purchasedIds = m_simulatorData.GetPurchasedProductIds(); + var transactions = new List(); + + for (int iter = 0; iter < purchasedIds.Length; iter++) + { + string productId = purchasedIds[iter]; + var product = FindProductWithId(productId); + if (product != null) + { + var transaction = CreateTransaction(productId, 1, tag, BillingTransactionState.Purchased, product.ProductType); + transactions.Add(transaction); + } + } + callback(transactions.ToArray(), null); + } + + #endregion + + #region Database methods + + private BillingStoreSimulatorData LoadFromDisk() + { + return SimulatorServices.GetObject(NativeFeatureType.kBillingServices); + } + + private void SaveData() + { + SimulatorServices.SetObject(NativeFeatureType.kBillingServices, m_simulatorData); + } + + public static void Reset() + { + SimulatorServices.RemoveObject(NativeFeatureType.kBillingServices); + } + + #endregion + + #region Private methods + + private BillingProductData FindProductWithId(string id) + { + return Array.Find(m_products, (item) => item.Id == id); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulator.cs.meta new file mode 100644 index 00000000..1acfed1e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 359eeb355cb0d4a51a5ec79c62a08b34 +timeCreated: 1563868342 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulatorData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulatorData.cs new file mode 100644 index 00000000..b076d1b7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulatorData.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Simulator +{ + [Serializable] + internal sealed class BillingStoreSimulatorData + { + #region Fields + + [SerializeField] + private List m_purchasedProducts = new List(); + + #endregion + + #region Public methods + + public void AddProductToPurchaseHistory(string pid) + { + if (!IsProductPurchased(pid)) + { + m_purchasedProducts.Add(pid); + } + } + + public bool IsProductPurchased(string pid) + { + return m_purchasedProducts.Contains(pid); + } + + public string[] GetPurchasedProductIds() + { + return m_purchasedProducts.ToArray(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulatorData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulatorData.cs.meta new file mode 100644 index 00000000..3eebbbfd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingStoreSimulatorData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c6d0f3aa7581b4395903c564cd1296ad +timeCreated: 1576675107 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingTransactionData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingTransactionData.cs new file mode 100644 index 00000000..39838a12 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingTransactionData.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.Simulator +{ + [Serializable] + public sealed class BillingTransactionData + { + #region Properties + + public string ProductId + { + get; + set; + } + + + public int Quantity + { + get; + set; + } + + public string Tag + { + get; + set; + } + + public string TransactionId + { + get; + set; + } + + public DateTime TransactionDate + { + get; + set; + } + + public BillingTransactionState TransactionState + { + get; + set; + } + + public BillingProductType ProductType + { + get; + set; + } + + public int PurchasedQuantity + { + get; + set; + } + + public string OriginalTransactionId + { + get; + set; + } + + public DateTime OriginalPurchaseDate + { + get; + set; + } + + public string ApplicationBundleIdentifier + { + get; + set; + } + + public BillingEnvironment Environment + { + get; + set; + } + + public DateTime? RevocationDate + { + get; + set; + } + + public BillingProductRevocationReason? RevocationReason + { + get; + set; + } + public BillingProductSubscriptionStatus SubscriptionStatus + { + get; + set; + } + public string RawData + { + get; + set; + } + + public Error Error + { + get; + set; + } + + #endregion + + #region Constructors + + public BillingTransactionData(string productId, int quantity, string tag, string transactionId, DateTime transactionDate, BillingTransactionState transactionState, BillingProductType productType, int purchasedQuantity, string originalTransactionId, DateTime originalPurchaseDate, string applicationBundleIdentifier, BillingEnvironment environment, DateTime? revocationDate, BillingProductRevocationReason? revocationReason, BillingProductSubscriptionStatus subscriptionStatus, string rawData, Error error) + { + ProductId = productId; + Quantity = quantity; + Tag = tag; + TransactionId = transactionId; + TransactionDate = transactionDate; + TransactionState = transactionState; + ProductType = productType; + PurchasedQuantity = purchasedQuantity; + OriginalTransactionId = originalTransactionId; + OriginalPurchaseDate = originalPurchaseDate; + ApplicationBundleIdentifier = applicationBundleIdentifier; + Environment = environment; + RevocationDate = revocationDate; + RevocationReason = revocationReason; + SubscriptionStatus = subscriptionStatus; + RawData = rawData; + Error = error; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingTransactionData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingTransactionData.cs.meta new file mode 100644 index 00000000..647ec292 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/BillingServices/BillingTransactionData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 28c3f0baaeac44791a16e9f3c7b2119e +timeCreated: 1563795864 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices.meta new file mode 100644 index 00000000..19af5628 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9998c7c8fe7624034b0d783274c997e0 +folderAsset: yes +timeCreated: 1554435765 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesInterface.cs new file mode 100644 index 00000000..1e6b2fce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesInterface.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Simulator +{ + public sealed class CloudServicesInterface : NativeCloudServicesInterfaceBase, INativeCloudServicesInterface + { + #region Properties + + private string m_userId = null; + + #endregion + + #region Constructors + + public CloudServicesInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base class methods + + public override bool GetBool(string key) + { + string value = CloudServicesSimulator.Instance.GetData(key); + + // convert to source type + bool result; + bool.TryParse(value, out result); + + return result; + } + + public override long GetLong(string key) + { + string value = CloudServicesSimulator.Instance.GetData(key); + + // convert to source type + long result; + long.TryParse(value, out result); + + return result; + } + + public override double GetDouble(string key) + { + string value = CloudServicesSimulator.Instance.GetData(key); + + // convert to source type + double result; + double.TryParse(value, out result); + + return result; + } + + public override string GetString(string key) + { + return CloudServicesSimulator.Instance.GetData(key); + } + + public override byte[] GetByteArray(string key) + { + string value = CloudServicesSimulator.Instance.GetData(key); + return (value == null) ? null : Convert.FromBase64String(value); + } + + public override bool HasKey(string key) + { + return CloudServicesSimulator.Instance.HasKey(key); + } + + public override void SetBool(string key, bool value) + { + CloudServicesSimulator.Instance.AddData(key, value.ToString()); + } + + public override void SetLong(string key, long value) + { + CloudServicesSimulator.Instance.AddData(key, value.ToString()); + } + + public override void SetDouble(string key, double value) + { + CloudServicesSimulator.Instance.AddData(key, value.ToString()); + } + + public override void SetString(string key, string value) + { + CloudServicesSimulator.Instance.AddData(key, value); + } + + public override void SetByteArray(string key, byte[] value) + { + string valueStr = Convert.ToBase64String(value); + CloudServicesSimulator.Instance.AddData(key, valueStr); + } + + public override void RemoveKey(string key) + { + CloudServicesSimulator.Instance.RemoveData(key); + } + + public override void Synchronize(SynchronizeInternalCallback callback) + { + if(m_userId == null) + { + m_userId = "DummyUser"; + SendUserChangeEvent(new CloudUser(m_userId, CloudUserAccountStatus.Available), null); + } + + CloudServicesSimulator.Instance.Synchronize(); + callback(true, null); + } + + public override IDictionary GetSnapshot() + { + string jsonStr = CloudServicesSimulator.Instance.GetSnapshot(); + return (IDictionary)ExternalServiceProvider.JsonServiceProvider.FromJson(jsonStr); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesInterface.cs.meta new file mode 100644 index 00000000..457e2e0b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d0005336535524f3f8d5d715e355f8d6 +timeCreated: 1554435934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulator.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulator.cs new file mode 100644 index 00000000..5acb4051 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulator.cs @@ -0,0 +1,96 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.Editor.NativePlugins; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Simulator +{ + public sealed class CloudServicesSimulator : SingletonObject + { + #region Fields + + private CloudServicesSimulatorData m_simulatorData = null; + + #endregion + + #region Constructors + + private CloudServicesSimulator() + { } + + #endregion + + #region Private methods + + private void EnsureInitialised() + { + if (m_simulatorData != null) return; + + // Set properties + m_simulatorData = LoadFromDisk() ?? new CloudServicesSimulatorData(); + } + + #endregion + + #region Database methods + + private CloudServicesSimulatorData LoadFromDisk() + { + return SimulatorServices.GetObject(NativeFeatureType.kCloudServices); + } + + private void SaveData() + { + SimulatorServices.SetObject(NativeFeatureType.kCloudServices, m_simulatorData); + } + + public static void Reset() + { + SimulatorServices.RemoveObject(NativeFeatureType.kCloudServices); + } + + #endregion + + #region Public methods + + public void AddData(string key, string value) + { + EnsureInitialised(); + m_simulatorData.AddData(key, value); + SaveData(); + } + + public string GetData(string key) + { + EnsureInitialised(); + return m_simulatorData.GetData(key); + } + + public bool HasKey(string key) + { + EnsureInitialised(); + return m_simulatorData.HasKey(key); + } + + public bool RemoveData(string key) + { + EnsureInitialised(); + return m_simulatorData.RemoveData(key); + } + + public string GetSnapshot() + { + EnsureInitialised(); + return m_simulatorData?.GetSnapshot(); + } + + public void Synchronize() + { + EnsureInitialised(); + SaveData(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulator.cs.meta new file mode 100644 index 00000000..d0d8d404 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 744cc315430934e4fa87123f9fc1792b +timeCreated: 1563363009 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulatorData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulatorData.cs new file mode 100644 index 00000000..06024008 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulatorData.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.Simulator +{ + [Serializable] + internal sealed class CloudServicesSimulatorData + { + #region Fields + + [SerializeField] + private List m_keyValues = new List(); + + #endregion + + #region Public methods + + public void AddData(string key, string value) + { + // create item + StringKeyValuePair item = new StringKeyValuePair() { Key = key, Value = value }; + + // insert item + int index = FindIndexWithKey(key); + if (index == -1) + { + m_keyValues.Add(item); + } + else + { + m_keyValues[index] = item; + } + } + + public string GetData(string key) + { + int index = FindIndexWithKey(key); + if (index != -1) + { + return m_keyValues[index].Value; + } + + return null; + } + + public bool HasKey(string key) + { + return FindIndexWithKey(key) != -1; + } + + public bool RemoveData(string key) + { + int index = FindIndexWithKey(key); + if (index != -1) + { + m_keyValues.RemoveAt(index); + return true; + } + + return false; + } + + public string GetSnapshot() + { + IDictionary dictionary = new Dictionary(); + foreach (StringKeyValuePair keyValue in m_keyValues) + { + dictionary.Add(key: keyValue.Key, value: keyValue.Value); + } + + return ExternalServiceProvider.JsonServiceProvider.ToJson(dictionary); + } + + #endregion + + #region Private methods + + private int FindIndexWithKey(string key) + { + return m_keyValues.FindIndex((item) => string.Equals(key, item.Key)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulatorData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulatorData.cs.meta new file mode 100644 index 00000000..cacf8cfc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/CloudServices/CloudServicesSimulatorData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c164fbdd359df42cbab91f8317e85f19 +timeCreated: 1576675857 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices.meta new file mode 100644 index 00000000..7fd9083b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 08bdfc81f95c344f9930f0d8e80a7464 +folderAsset: yes +timeCreated: 1562671619 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Achievement.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Achievement.cs new file mode 100644 index 00000000..876c856f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Achievement.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + internal sealed class Achievement : AchievementBase + { + #region Fields + + private float m_percentageCompleted; + + private bool m_isCompleted; + + #endregion + + #region Constructors + + public Achievement(string id, string platformId, + float percentageCompleted = 0f, bool isCompleted = false) + : base(id: id, platformId: platformId) + { + // set properties + m_percentageCompleted = percentageCompleted; + m_isCompleted = isCompleted; + } + + #endregion + + #region Static methods + + private static Achievement[] ConvertToAchievementArray(IEnumerator enumerator) + { + return SystemUtility.ConvertEnumeratorItems( + enumerator: enumerator, + converter: (input) => + { + string achievementId = input.Id; + var settings = GameServices.FindAchievementDefinitionWithId(input.Id); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified id: {achievementId}."); + return null; + } + + return new Achievement( + id: achievementId, + platformId: settings.GetPlatformIdForActivePlatform(), + percentageCompleted: input.PercentageCompleted, + isCompleted: input.IsCompleted); + }, + includeNullObjects: false); + } + + #endregion + + #region Static methods + + public static void LoadAchievements(LoadAchievementsInternalCallback callback) + { + // get data + Error error; + var enumerator = GameServicesSimulator.Instance.GetAchievements(out error); + + // parse data and send callback + if (error == null) + { + var achievements = ConvertToAchievementArray(enumerator); + callback(achievements, null); + } + else + { + callback(null, error); + } + } + + public static void ShowAchievementView(ViewClosedInternalCallback callback) + { + GameServicesSimulator.Instance.ShowAchievementView((error) => callback(error)); + } + + #endregion + + #region Base class methods + + protected override double GetPercentageCompletedInternal() + { + return m_percentageCompleted; + } + + protected override void SetPercentageCompletedInternal(double value) + { + m_percentageCompleted = Mathf.Clamp((float)value, 0, 100f); + } + + protected override bool GetIsCompletedInternal() + { + return m_isCompleted; + } + + protected override DateTime GetLastReportedDateInternal() + { + return default(DateTime); + } + + protected override void ReportProgressInternal(ReportAchievementProgressInternalCallback callback) + { + // report data + Error error; + GameServicesSimulator.Instance.ReportAchievementProgress(Id, (float)PercentageCompleted, out m_isCompleted, out error); + + // send result + callback((error == null), error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Achievement.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Achievement.cs.meta new file mode 100644 index 00000000..20f1683a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Achievement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9c537d97a74374d889346eb7c3050adb +timeCreated: 1562674114 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementData.cs new file mode 100644 index 00000000..6dba92c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementData.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + [Serializable] + public sealed class AchievementData + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private string m_playerId; + + [SerializeField] + private float m_percentageCompleted; + + [SerializeField] + private bool m_isCompleted; + + #endregion + + #region Properties + + public string Id + { + get + { + return m_id; + } + } + + public string PlayerId + { + get + { + return m_playerId; + } + } + + public float PercentageCompleted + { + get + { + return m_percentageCompleted; + } + set + { + m_percentageCompleted = value; + } + } + + public bool IsCompleted + { + get + { + return m_isCompleted; + } + set + { + m_isCompleted = value; + } + } + + #endregion + + #region Constructors + + public AchievementData(string id, string playerId) + { + // set properties + m_id = id; + m_playerId = playerId; + m_percentageCompleted = 0; + m_isCompleted = false; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementData.cs.meta new file mode 100644 index 00000000..a3966ded --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5cb50554485aa4411b8963103648683a +timeCreated: 1562738867 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescription.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescription.cs new file mode 100644 index 00000000..01bb173f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescription.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + internal sealed class AchievementDescription : AchievementDescriptionBase + { + #region Fields + + private string m_title; + + #endregion + + #region Constructors + + public AchievementDescription(string id, string platformId, int numOfStepsToUnlock, string title) + : base(id: id, platformId: platformId, numOfStepsToUnlock: numOfStepsToUnlock) + { + // set properties + m_title = title; + } + + #endregion + + #region Static methods + + private static AchievementDescription[] ConvertToAchievementDescriptionArray(IEnumerator enumerator) + { + return SystemUtility.ConvertEnumeratorItems( + enumerator: enumerator, + converter: (input) => + { + string achievementId = input.Id; + var settings = GameServices.FindAchievementDefinitionWithId(achievementId); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified id: {achievementId}."); + return null; + } + + return new AchievementDescription( + id: achievementId, + platformId: settings.GetPlatformIdForActivePlatform(), + numOfStepsToUnlock: settings.NumOfStepsToUnlock, + title: input.Title); + }, + includeNullObjects: false); + } + + #endregion + + #region Public static methods + + public static void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback) + { + // get data + Error error; + var enumerator = GameServicesSimulator.Instance.GetAchievementDescriptions(out error); + + // parse data and send callback + if (error == null) + { + var descriptions = ConvertToAchievementDescriptionArray(enumerator); + callback(descriptions, null); + } + else + { + callback(null, error); + } + } + + #endregion + + #region Base class methods + + protected override string GetTitleInternal() + { + return m_title; + } + + protected override string GetUnachievedDescriptionInternal() + { + return string.Empty; + } + + protected override string GetAchievedDescriptionInternal() + { + return string.Empty; + } + + protected override long GetMaximumPointsInternal() + { + return 100; + } + + protected override bool GetIsHiddenInternal() + { + return false; + } + + protected override bool GetIsReplayableInternal() + { + return false; + } + + protected override void LoadIncompleteAchievementImageInternal(LoadImageInternalCallback callback) + { + Error error; + var image = GameServicesSimulator.Instance.GetAchievementImage(Id, out error); + + // send result + callback(image.EncodeToPNG(), error); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + // send result + callback(null, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescription.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescription.cs.meta new file mode 100644 index 00000000..6509f0c7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescription.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 66bbc377c480241ec86db1d41c51ff24 +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescriptionData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescriptionData.cs new file mode 100644 index 00000000..1e949942 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescriptionData.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + [Serializable] + public sealed class AchievementDescriptionData + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private string m_title; + + #endregion + + #region Properties + + public string Id + { + get + { + return m_id; + } + set + { + m_id = value; + } + } + + public string Title + { + get + { + return m_title; + } + set + { + m_title = value; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescriptionData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescriptionData.cs.meta new file mode 100644 index 00000000..a4808271 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/AchievementDescriptionData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f59fe9ae5ea54f758b265037a20d9e8 +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesInterface.cs new file mode 100644 index 00000000..24b8b580 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesInterface.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + public sealed class GameServicesInterface : NativeGameServicesInterfaceBase + { + #region Constructors + + public GameServicesInterface() + : base(isAvailable: true) + { } + + #endregion + + #region INativeGameServicesInterface implementation + + public override void LoadLeaderboards(LeaderboardDefinition[] leaderboardDefinitions, LoadLeaderboardsInternalCallback callback) + { + Leaderboard.LoadLeaderboards(callback); + } + + public override void ShowLeaderboard(string leaderboardId, string leaderboardPlatformId, LeaderboardTimeScope timeScope, ViewClosedInternalCallback callback) + { + Leaderboard.ShowLeaderboardView(leaderboardId, timeScope, callback); + } + + public override ILeaderboard CreateLeaderboard(string id, string platformId) + { + return new Leaderboard(id: id, platformId: platformId); + } + + public override void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback) + { + AchievementDescription.LoadAchievementDescriptions(callback); + } + + public override void LoadAchievements(LoadAchievementsInternalCallback callback) + { + Achievement.LoadAchievements(callback); + } + + public override void ShowAchievements(ViewClosedInternalCallback callback) + { + Achievement.ShowAchievementView(callback); + } + + public override IAchievement CreateAchievement(string id, string platformId) + { + return new Achievement(id, platformId); + } + + public override void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback) + { + Player.LoadPlayers(playerIds, callback); + } + + public override void SetAuthChangeCallback(AuthChangeInternalCallback callback) + { + LocalPlayer.SetAuthChangeCallback(callback); + } + + public override void Authenticate() + { + LocalPlayer.Authenticate(); + } + + public override void Signout() + { + LocalPlayer.Signout(); + } + + public override ILocalPlayer GetLocalPlayer() + { + return LocalPlayer.GetLocalPlayer(); + } + + public override void SetCanShowAchievementCompletionBanner(bool value) + { } + + public override void LoadServerCredentials(LoadServerCredentialsInternalCallback callback) + { + Diagnostics.LogNotSupportedInEditor("LoadServerCredentials"); + callback(null, Diagnostics.kFeatureNotSupported); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesInterface.cs.meta new file mode 100644 index 00000000..289815ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3c84263151a134f26b891bdaf921d1a1 +timeCreated: 1576565833 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulator.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulator.cs new file mode 100644 index 00000000..fe99903e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulator.cs @@ -0,0 +1,318 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.Editor.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + public sealed class GameServicesSimulator : SingletonObject + { + #region properties + + private GameServicesSimulatorData m_simulatorData; + + #endregion + + #region Constructors + + private GameServicesSimulator() + { + // save instance + m_simulatorData = LoadFromDisk() ?? CreateInstance(); + } + + #endregion + + #region Database methods + + private GameServicesSimulatorData CreateInstance() + { + // get information required to initialize simulator + var achievementSettingsArray = GameServices.AchievementDefinitions; + var leaderboardSettingsArray = GameServices.LeaderboardDefinitions; + + // create simulator specific objects + var descriptions = Array.ConvertAll(achievementSettingsArray, (item) => new AchievementDescriptionData() { Id = item.Id, Title = item.Title }); + var leaderboards = Array.ConvertAll(leaderboardSettingsArray, (item) => new LeaderboardData() { Id = item.Id, Title = item.Title }); + return new GameServicesSimulatorData(descriptions, leaderboards); + } + + private GameServicesSimulatorData LoadFromDisk() + { + return SimulatorServices.GetObject(NativeFeatureType.kGameServices); + } + + private void SaveData() + { + SimulatorServices.SetObject(NativeFeatureType.kGameServices, m_simulatorData); + } + + public static void Reset() + { + SimulatorServices.RemoveObject(NativeFeatureType.kGameServices); + } + + #endregion + + #region Public methods + + public IEnumerator GetAchievementDescriptions(out Error error) + { + if (ValidateSession(out error)) + { + return m_simulatorData.GetAchievementDescriptions(); + } + + return null; + } + + public IEnumerator GetAchievements(out Error error) + { + if (ValidateSession(out error)) + { + return m_simulatorData.GetAchievements(GetLocalPlayer().Id); + } + + return null; + } + + public void ReportAchievementProgress(string achievementId, float percentageCompleted, out bool isCompleted, out Error error) + { + // set default value + isCompleted = false; + + // check auth and update local copy + if (ValidateSession(out error)) + { + // find object + var data = m_simulatorData.GetAchievement(achievementId, GetLocalPlayer().Id); + if (data == null) + { + data = new AchievementData(achievementId, GetLocalPlayer().Id); + } + + // update properties + data.PercentageCompleted = percentageCompleted; + data.IsCompleted = Mathf.Approximately(100f, data.PercentageCompleted); + m_simulatorData.AddAchievement(data); + + // update reference values + isCompleted = data.IsCompleted; + + // save changes + SaveData(); + } + } + + public Texture2D GetAchievementImage(string achievementId, out Error error) + { + if (ValidateSession(out error)) + { + return SimulatorServices.GetRandomImage(); + } + + return null; + } + + #endregion + + #region Leaderboard methods + + public IEnumerator GetLeaderboards(out Error error) + { + if (ValidateSession(out error)) + { + return m_simulatorData.GetLeaderboards(); + } + + return null; + } + + public void ReportLeaderboardScore(string leaderboardId, long value, out Error error, string tag = null) + { + if (ValidateSession(out error)) + { + LeaderboardDefinition definition = GameServices.FindLeaderboardDefinitionWithId(leaderboardId); + m_simulatorData.AddScore(new ScoreData() { LeaderboardId = leaderboardId, LeaderboardPlatformId = definition.GetPlatformIdForActivePlatform(), PlayerId = GetLocalPlayer().Id, Value = value, Tag = tag } ); + + // save changes + SaveData(); + } + } + + public IEnumerator GetLeaderboardScores(string leaderboardId, out ScoreData localPlayerScore, out Error error) + { + // set default value + localPlayerScore = null; + + if (ValidateSession(out error)) + { + localPlayerScore = m_simulatorData.GetLeaderboardScore(leaderboardId, GetLocalPlayerId()); + return m_simulatorData.GetLeaderboardScores(leaderboardId); + } + + return null; + } + + public Texture2D GetLeaderboardImage(string leaderboardId, out Error error) + { + if (ValidateSession(out error)) + { + return SimulatorServices.GetRandomImage(); + } + + return null; + } + + #endregion + + #region Player methods + + public PlayerData[] FindPlayers(string[] ids) + { + return Array.ConvertAll(ids, (id) => FindPlayerWithId(id)); + } + + public PlayerData FindPlayerWithId(string id) + { + var player = m_simulatorData.FindPlayer(id); + if (player == null) + { + return null; + } + + return player; + } + + public PlayerData GetLocalPlayer() + { + var localPlayer = m_simulatorData.GetLocalPlayer(); + if (localPlayer == null) + { + return null; + } + + return localPlayer; + } + + public Texture2D GetPlayerImage(string playerId, out Error error) + { + if (ValidateSession(out error)) + { + return SimulatorServices.GetRandomImage(); + } + + return null; + } + + public bool IsAuthenticated() + { + Error error; + if (ValidateSession(out error)) + { + return true; + } + + return false; + } + + public void Authenticate(Action callback) + { + // check whether required permission is already granted + Error error; + if (ValidateSession(out error)) + { + callback(LocalPlayerAuthStatus.Authenticated, null); + } + else + { + callback(LocalPlayerAuthStatus.Authenticating, null); + + // show prompt to user asking for required permission + var newAlertDialog = new AlertDialogBuilder() + .SetTitle("Game Services Simulator") + .SetMessage("Would you like to login?") + .AddButton("Ok", () => + { + // save selection + PlayerData player = new PlayerData() { Id = "1", Name = "You" }; + m_simulatorData.AddPlayer(player); + m_simulatorData.SetLocalPlayer(player); + + // send result + callback(LocalPlayerAuthStatus.Authenticated, null); + + // save changes + SaveData(); + }) + .AddCancelButton("Cancel", () => + { + // send result + callback(LocalPlayerAuthStatus.NotAvailable, null); + }) + .Build(); + newAlertDialog.Show(); + } + } + + private bool ValidateSession(out Error error) + { + var localPlayer = m_simulatorData.GetLocalPlayer(); + if (localPlayer != null) + { + error = null; + + return true; + } + + error = GameServicesError.NotAuthenticated("The requested operation could not be completed because user authentication is missing."); + + return false; + } + + private string GetLocalPlayerId() + { + return m_simulatorData.GetLocalPlayerId(); + } + + private void AddSamplePlayers() + { + m_simulatorData.AddPlayer(new PlayerData() { Id = "2", Name = "Player 1" }); + m_simulatorData.AddPlayer(new PlayerData() { Id = "3", Name = "Player 2" }); + m_simulatorData.AddPlayer(new PlayerData() { Id = "4", Name = "Player 3" }); + m_simulatorData.AddPlayer(new PlayerData() { Id = "5", Name = "Player 4" }); + m_simulatorData.AddPlayer(new PlayerData() { Id = "6", Name = "Player 5" }); + } + + #endregion + + #region Preseantation methods + + public void ShowAchievementView(Action callback) + { + Error error; + if (ValidateSession(out error)) + { + callback(null); + return; + } + + callback(error); + } + + public void ShowLeaderboardView(Action callback) + { + Error error; + if (ValidateSession(out error)) + { + callback(null); + return; + } + + callback(error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulator.cs.meta new file mode 100644 index 00000000..dd587171 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eef59275ece0748d8aa0eb35bcd4c4b1 +timeCreated: 1562675461 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulatorData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulatorData.cs new file mode 100644 index 00000000..03784f3a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulatorData.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + [Serializable] + internal sealed class GameServicesSimulatorData + { + #region Fields + + [SerializeField] + private List m_achievementDescriptionTable; + + [SerializeField] + private List m_achievementTable; + + [SerializeField] + private List m_leaderboardTable; + + [SerializeField] + private List m_scoreTable; + + [SerializeField] + private List m_playerTable; + + [SerializeField] + private string m_localPlayerId; + + #endregion + + #region Constructors + + public GameServicesSimulatorData(AchievementDescriptionData[] achievementDescriptions, LeaderboardData[] leaderboards) + { + // set properties + m_achievementDescriptionTable = new List(achievementDescriptions); + m_achievementTable = new List(); + m_leaderboardTable = new List(leaderboards); + m_scoreTable = new List(); + m_playerTable = new List(); + } + + #endregion + + #region Public methods + + public IEnumerator GetAchievementDescriptions() + { + return m_achievementDescriptionTable.GetEnumerator(); + } + + public IEnumerator GetAchievements(string playerId) + { + return m_achievementTable.FindAll((item) => string.Equals(item.PlayerId, playerId)).GetEnumerator(); + } + + public AchievementData GetAchievement(string id, string playerId) + { + int index = FindAchievementIndex(id, playerId); + return (index == -1) ? null : m_achievementTable[index]; + } + + public void AddAchievement(AchievementData achievementData) + { + int index = FindAchievementIndex(achievementData.Id, achievementData.PlayerId); + if (index == -1) + { + m_achievementTable.Add(achievementData); + } + else + { + m_achievementTable[index] = achievementData; + } + } + + private int FindAchievementIndex(string id, string playerId) + { + return m_achievementTable.FindIndex((obj) => string.Equals(obj.Id, id) && string.Equals(obj.PlayerId, playerId)); + } + + #endregion + + #region Leaderboard methods + + public IEnumerator GetLeaderboards() + { + return m_leaderboardTable.GetEnumerator(); + } + + public LeaderboardData GetLeaderboardWithId(string id) + { + return m_leaderboardTable.Find((obj) => string.Equals(obj.Id, id)); + } + + public IEnumerator GetLeaderboardScores(string leaderboardId) + { + return m_scoreTable.FindAll((item) => string.Equals(item.LeaderboardId, leaderboardId)).GetEnumerator(); + } + + public ScoreData GetLeaderboardScore(string leaderboardId, string playerId) + { + return m_scoreTable.Find((item) => string.Equals(item.LeaderboardId, leaderboardId) && string.Equals(item.PlayerId, playerId)); + } + + public void AddScore(ScoreData scoreData) + { + int index = FindScoreIndex(scoreData.LeaderboardId, scoreData.PlayerId); + if (index == -1) + { + m_scoreTable.Add(scoreData); + } + else + { + m_scoreTable[index] = scoreData; + } + } + + private int FindScoreIndex(string leaderboardId, string playerId) + { + return m_scoreTable.FindIndex((obj) => string.Equals(obj.LeaderboardId, leaderboardId) && string.Equals(obj.PlayerId, playerId)); + } + + #endregion + + #region Player methods + + public PlayerData FindPlayer(string id) + { + int index = FindPlayerIndex(id); + return index == -1 ? null : m_playerTable[index]; + } + + public void AddPlayer(PlayerData playerData) + { + int index = FindPlayerIndex(playerData.Id); + if (index == -1) + { + m_playerTable.Add(playerData); + } + else + { + m_playerTable[index] = playerData; + } + } + + public void SetLocalPlayer(PlayerData player) + { + m_localPlayerId = player.Id; + } + + public PlayerData GetLocalPlayer() + { + return FindPlayer(m_localPlayerId); + } + + public string GetLocalPlayerId() + { + return string.IsNullOrEmpty(m_localPlayerId) ? null : m_localPlayerId; + } + + private int FindPlayerIndex(string playerId) + { + return m_playerTable.FindIndex((obj) => string.Equals(obj.Id, playerId)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulatorData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulatorData.cs.meta new file mode 100644 index 00000000..5c606e97 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/GameServicesSimulatorData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a0f9782ba249c47faba62389b4d58f3a +timeCreated: 1576675857 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Leaderboard.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Leaderboard.cs new file mode 100644 index 00000000..12a839ab --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Leaderboard.cs @@ -0,0 +1,198 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + internal sealed class Leaderboard : LeaderboardBase + { + #region Fields + + private string m_title = string.Empty; + + private LeaderboardPlayerScope m_playerScope = LeaderboardPlayerScope.Global; + + private LeaderboardTimeScope m_timeScope = LeaderboardTimeScope.AllTime; + + private LeaderboardScore m_localPlayerScore = null; + + #endregion + + #region Constructors + + public Leaderboard(string id, string platformId, string title = "") + : base(id: id, platformId: platformId) + { + // set properties + m_title = title; + } + + #endregion + + #region Static methods + + private static Leaderboard[] ConvertToLeaderboardArray(IEnumerator enumerator) + { + return SystemUtility.ConvertEnumeratorItems( + enumerator: enumerator, + converter: (input) => + { + string leaderboardId = input.Id; + var settings = GameServices.FindLeaderboardDefinitionWithId(leaderboardId); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified id: {leaderboardId}."); + return null; + } + + return new Leaderboard( + id: leaderboardId, + platformId: settings.GetPlatformIdForActivePlatform(), + title: input.Title); + }, + includeNullObjects: false); + } + + #endregion + + #region Static methods + + public static void LoadLeaderboards(LoadLeaderboardsInternalCallback callback) + { + // get data + Error error; + var enumerator = GameServicesSimulator.Instance.GetLeaderboards(out error); + + // parse data and send callback + if (error == null) + { + var leaderboards = ConvertToLeaderboardArray(enumerator); + callback(leaderboards, null); + } + else + { + callback(null, error); + } + } + + public static void ShowLeaderboardView(string leaderboardId, LeaderboardTimeScope timescope, ViewClosedInternalCallback callback) + { + GameServicesSimulator.Instance.ShowLeaderboardView((error) => callback(error)); + } + + #endregion + + #region Base class methods + + protected override string GetTitleInternal() + { + return m_title; + } + + protected override LeaderboardPlayerScope GetPlayerScopeInternal() + { + return m_playerScope; + } + + protected override void SetPlayerScopeInternal(LeaderboardPlayerScope value) + { + // set value + m_playerScope = value; + } + + protected override LeaderboardTimeScope GetTimeScopeInternal() + { + return m_timeScope; + } + + protected override void SetTimeScopeInternal(LeaderboardTimeScope value) + { + // set value + m_timeScope = value; + } + + protected override ILeaderboardScore GetLocalPlayerScoreInternal() + { + return m_localPlayerScore; + } + + protected override void LoadTopScoresInternal(LoadScoresInternalCallback callback) + { + // get data + Error error; + ScoreData localPlayerScore; + var enumerator = GameServicesSimulator.Instance.GetLeaderboardScores(Id, out localPlayerScore, out error); + + // parse data + if (error == null) + { + var scores = new List(); + while (enumerator.MoveNext()) + { + var current = enumerator.Current; + scores.Add(LeaderboardScore.CreateScoreFromData(current)); + } + + // update local player score + var localScore = LeaderboardScore.CreateScoreFromData(localPlayerScore); + m_localPlayerScore = localScore; + + // send result + callback(scores.ToArray(), localScore, error); + } + else + { + // send result + callback(null, null, error); + } + } + + protected override void LoadPlayerCenteredScoresInternal(LoadScoresInternalCallback callback) + { + LoadTopScoresInternal(callback); + } + + protected override void LoadNextInternal(LoadScoresInternalCallback callback) + { + if (m_localPlayerScore == null) + { + LoadTopScoresInternal(callback); + return; + } + + callback(null, m_localPlayerScore, null); + } + + protected override void LoadPreviousInternal(LoadScoresInternalCallback callback) + { + if (m_localPlayerScore == null) + { + LoadTopScoresInternal(callback); + return; + } + + callback(null, m_localPlayerScore, null); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + Error error; + var image = GameServicesSimulator.Instance.GetLeaderboardImage(Id, out error); + + // send result to caller object + callback(image.EncodeToPNG(), error); + } + + protected override void ReportScoreInternal(long score, ReportScoreInternalCallback callback, string tag = null) + { + Error error; + GameServicesSimulator.Instance.ReportLeaderboardScore(Id, score, out error, tag); + + // send result + callback(error == null, error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Leaderboard.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Leaderboard.cs.meta new file mode 100644 index 00000000..1bd454ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Leaderboard.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 908bbee4995554cb0aaa84cc982126c5 +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardData.cs new file mode 100644 index 00000000..b74dcfd1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardData.cs @@ -0,0 +1,47 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + [Serializable] + public sealed class LeaderboardData + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private string m_title; + + #endregion + + #region Properties + + public string Id + { + get + { + return m_id; + } + set + { + m_id = value; + } + } + + public string Title + { + get + { + return m_title; + } + set + { + m_title = value; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardData.cs.meta new file mode 100644 index 00000000..9e10e5f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 78a77468bf69441adb6dc46a053cffd4 +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardScore.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardScore.cs new file mode 100644 index 00000000..4a9998ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardScore.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +using SPlayer = VoxelBusters.EssentialKit.GameServicesCore.Simulator.Player; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + internal sealed class LeaderboardScore : LeaderboardScoreBase + { + #region Fields + + private string m_playerId; + + private long m_rank; + + private long m_value; + + private string m_tag; + + #endregion + + #region Constructors + + public LeaderboardScore(string leaderboardId, string leaderboardPlatformId) + : base(leaderboardId, leaderboardPlatformId) + { + // set default values + m_rank = 0; + m_value = 0; + } + + public LeaderboardScore(string leaderboardPlatformId, string playerId, long rank, long value, string tag) + : base(leaderboardPlatformId) + { + // set properties + m_playerId = playerId; + m_rank = rank; + m_value = value; + m_tag = tag; + } + + #endregion + + #region Create methods + + internal static LeaderboardScore CreateScoreFromData(ScoreData data) + { + return (data != null) ? new LeaderboardScore(data.LeaderboardPlatformId, data.PlayerId, 1, data.Value, data.Tag) : null; + } + + #endregion + + #region Base class methods + + protected override IPlayer GetPlayerInternal() + { + // create player object using data + var data = GameServicesSimulator.Instance.FindPlayerWithId(m_playerId); + return SPlayer.CreatePlayerFromData(data); + } + + protected override long GetRankInternal() + { + return m_rank; + } + + protected override long GetValueInternal() + { + return m_value; + } + + protected override DateTime GetLastReportedDateInternal() + { + return default(DateTime); + } + + protected override string GetTagInternal() + { + return m_tag; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardScore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardScore.cs.meta new file mode 100644 index 00000000..8c3e6260 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LeaderboardScore.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 209922caae6a64e2bb266ab60c0038e4 +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LocalPlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LocalPlayer.cs new file mode 100644 index 00000000..65f428c8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LocalPlayer.cs @@ -0,0 +1,123 @@ +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + internal sealed class LocalPlayer : Player, ILocalPlayer + { + #region Static fields + + private static LocalPlayer s_localPlayer = new LocalPlayer(); + + private static AuthChangeInternalCallback s_onAuthChange; + + #endregion + + #region Constructors + + private LocalPlayer(string playerId = null, string displayName = null, string alias = null) + : base(playerId, displayName, alias) + { } + + #endregion + + #region Create methods + + private static LocalPlayer CreateLocalPlayerFromData(PlayerData data) + { + return new LocalPlayer(data.Id, data.Name, data.Name); + } + + #endregion + + #region Static methods + + public static LocalPlayer GetLocalPlayer() + { + return s_localPlayer; + } + + public static void Authenticate() + { + GameServicesSimulator.Instance.Authenticate((status, error) => + { + bool isLoggedIn = (status == LocalPlayerAuthStatus.Authenticated); + + // update local references + s_localPlayer = isLoggedIn ? CreateLocalPlayerFromData(GameServicesSimulator.Instance.GetLocalPlayer()) : new LocalPlayer(); + + // notify listeners + if (s_onAuthChange != null) + { + s_onAuthChange(status, error); + } + }); + } + + public static void Signout() + { + Diagnostics.LogNotSupported("Signout"); + } + + public static void SetAuthChangeCallback(AuthChangeInternalCallback callback) + { + // set value + s_onAuthChange = callback; + } + + #endregion + + #region ILocalPlayer implementation + + public bool IsAuthenticated + { + get + { + return GameServicesSimulator.Instance.IsAuthenticated(); + } + } + + public bool IsUnderAge + { + get + { + return false; + } + } + + public void LoadFriends(EventCallback callback) + { + if(callback != null) + { + var result = new GameServicesLoadPlayerFriendsResult(CreateSampleFriends()); + callback(result, null); + } + } + + public void AddFriend(string playerId, EventCallback callback) + { + if(callback != null) + { + callback(true, null); + } + } + + #endregion + + #region Utilities + + private IPlayer[] CreateSampleFriends() + { + IPlayer[] friends = new IPlayer[] + { + new Player("11", "Friend 1", "Friend Alias 1"), + new Player("22", "Friend 2", "Friend Alias 2"), + new Player("33", "Friend 3", "Friend Alias 3") + }; + + return friends; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LocalPlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LocalPlayer.cs.meta new file mode 100644 index 00000000..5fc1428b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/LocalPlayer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b8474ec454df46db828956d3d9eb64c +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Player.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Player.cs new file mode 100644 index 00000000..756591a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Player.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + internal class Player : PlayerBase + { + #region Fields + + private string m_id; + + private string m_name; + + private string m_alias; + + #endregion + + #region Constructors + + public Player(string id, string name, string alias) + { + // set properties + m_id = id; + m_name = name; + m_alias = alias; + } + + #endregion + + #region Create methods + + internal static Player CreatePlayerFromData(PlayerData data) + { + return new Player(data.Id, data.Name, data.Name); + } + + #endregion + + #region Static methods + + public static void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback) + { + // get data + var data = GameServicesSimulator.Instance.FindPlayers(playerIds); + var players = Array.ConvertAll(data, (item) => CreatePlayerFromData(item)); + + // send result + callback(players, null); + } + + #endregion + + #region Base class methods + + protected override string GetIdInternal() + { + return m_id; + } + + protected override string GetDeveloperScopeIdInternal() + { + return null; + } + + protected override string GetLegacyIdInternal() + { + return null; + } + + protected override string GetAliasInternal() + { + return m_alias; + } + + protected override string GetDisplayNameInternal() + { + return m_name; + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + Error error; + var image = GameServicesSimulator.Instance.GetPlayerImage(Id, out error); + + // send result + callback(image.EncodeToPNG(), error); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Player.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Player.cs.meta new file mode 100644 index 00000000..16267661 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/Player.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b16cc431c3fd492ba128280bec8146d +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/PlayerData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/PlayerData.cs new file mode 100644 index 00000000..23803f87 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/PlayerData.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + [Serializable] + public class PlayerData + { + #region Fields + + [SerializeField] + private string m_id; + + [SerializeField] + private string m_name; + + #endregion + + #region Properties + + public string Id + { + get + { + return m_id; + } + set + { + m_id = value; + } + } + + public string Name + { + get + { + return m_name; + } + set + { + m_name = value; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/PlayerData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/PlayerData.cs.meta new file mode 100644 index 00000000..0f44b281 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/PlayerData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e90ec75b58c5349c4874e4eeb1931b80 +timeCreated: 1562739355 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/ScoreData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/ScoreData.cs new file mode 100644 index 00000000..49717448 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/ScoreData.cs @@ -0,0 +1,92 @@ +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.Simulator +{ + [Serializable] + public sealed class ScoreData + { + #region Fields + + [SerializeField] + private string m_playerId; + + [SerializeField] + private string m_leaderboardId; + + [SerializeField] + private string m_leaderboardPlatformId; + + [SerializeField] + private long m_value; + + [SerializeField] + private string m_tag; + + #endregion + + #region Properties + + public string PlayerId + { + get + { + return m_playerId; + } + set + { + m_playerId = value; + } + } + + public string LeaderboardId + { + get + { + return m_leaderboardId; + } + set + { + m_leaderboardId = value; + } + } + + public string LeaderboardPlatformId + { + get + { + return m_leaderboardPlatformId; + } + set + { + m_leaderboardPlatformId = value; + } + } + + public long Value + { + get + { + return m_value; + } + set + { + m_value = value; + } + } + + public string Tag + { + get + { + return m_tag; + } + set + { + m_tag = value; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/ScoreData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/ScoreData.cs.meta new file mode 100644 index 00000000..74705252 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/GameServices/ScoreData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80efb406d0fa64f24b9e437957640508 +timeCreated: 1562674309 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices.meta new file mode 100644 index 00000000..e3a4813d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ebeeeea86bed64efb8488894463f3dff +folderAsset: yes +timeCreated: 1562129205 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesInterface.cs new file mode 100644 index 00000000..166107ec --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesInterface.cs @@ -0,0 +1,46 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Simulator +{ + public sealed class MediaServicesInterface : NativeMediaServicesInterfaceBase + { + #region Constructors + + public MediaServicesInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base class methods + + public override GalleryAccessStatus GetGalleryAccessStatus(GalleryAccessMode mode) + { + return MediaServicesSimulator.Instance.GetGalleryAccessStatus(); + } + + public override CameraAccessStatus GetCameraAccessStatus() + { + return MediaServicesSimulator.Instance.GetCameraAccessStatus(); + } + + public override void SelectMediaContent(MediaContentSelectOptions options, SelectMediaContentInternalCallback callback) + { + MediaServicesSimulator.Instance.SelectMediaContent(options, (contents, error) => callback(contents, error)); + } + + public override void CaptureMediaContent(MediaContentCaptureOptions options, CaptureMediaContentInternalCallback callback) + { + MediaServicesSimulator.Instance.CaptureMediaContent(options, (content, error) => callback(content, error)); + } + + public override void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, SaveMediaContentInternalCallback callback) + { + MediaServicesSimulator.Instance.SaveMediaContent(data, mimeType, options, (status, error) => callback(status, error)); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesInterface.cs.meta new file mode 100644 index 00000000..cf5dc878 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d214ba0b3d4a465c978d7b73a08e96d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulator.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulator.cs new file mode 100644 index 00000000..881ebfb9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulator.cs @@ -0,0 +1,264 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.Editor.NativePlugins; +using System.IO; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Simulator +{ + public sealed class MediaServicesSimulator : SingletonObject + { + #region Constants + + // messages + private const string kGalleryUnauthorizedAccessError = "Unauthorized access! Check permission before accessing gallery."; + + private const string kGalleryAuthorizedError = "Permission for accessing gallery is already provided. Please check access status before requesting access."; + + private const string kCameraAuthorizedError = "Permission for accessing gallery is already provided. Please check access status before requesting access."; + + #endregion + + #region Fields + + private MediaServicesSimulatorData m_simulatorData; + + #endregion + + #region Constructors + + private MediaServicesSimulator() + { + // initialise + m_simulatorData = LoadFromDisk() ?? new MediaServicesSimulatorData(); + } + + #endregion + + #region Database methods + + private MediaServicesSimulatorData LoadFromDisk() + { + return SimulatorServices.GetObject(NativeFeatureType.kMediaServices); + } + + private void SaveData() + { + SimulatorServices.SetObject(NativeFeatureType.kMediaServices, m_simulatorData); + } + + public static void Reset() + { + SimulatorServices.RemoveObject(NativeFeatureType.kMediaServices); + } + + #endregion + + #region Public methods + + public void RequestGalleryAccess(Action callback) + { + // check whether required permission is already granted + var accessStatus = GetGalleryAccessStatus(); + if (GalleryAccessStatus.Authorized == accessStatus) + { + callback(GalleryAccessStatus.Authorized, new Error(description: kGalleryAuthorizedError)); + } + else + { + // show prompt to user asking for required permission + var applicationSettings = EssentialKitSettings.Instance.ApplicationSettings; + var usagePermission = applicationSettings.UsagePermissionSettings.GalleryUsagePermission; + + var newAlertDialog = new AlertDialogBuilder() + .SetTitle("Gallery Simulator") + .SetMessage(usagePermission.GetDescriptionForActivePlatform()) + .AddButton("Authorise", () => + { + // save selection + UpdateGalleryAccessStatus(GalleryAccessStatus.Authorized); + + // send result + callback(GalleryAccessStatus.Authorized, null); + }) + .AddCancelButton("Cancel", () => + { + // save selection + UpdateGalleryAccessStatus(GalleryAccessStatus.Denied); + + // send result + callback(GalleryAccessStatus.Denied, null); + }) + .Build(); + newAlertDialog.Show(); + } + } + + public GalleryAccessStatus GetGalleryAccessStatus() + { + return m_simulatorData.GalleryAccessStatus; + } + + public void RequestCameraAccess(Action callback) + { + // check whether required permission is already granted + var accessStatus = GetCameraAccessStatus(); + if (CameraAccessStatus.Authorized == accessStatus) + { + callback(CameraAccessStatus.Authorized, null); + } + else + { + // show prompt to user asking for required permission + var applicationSettings = EssentialKitSettings.Instance.ApplicationSettings; + var usagePermission = applicationSettings.UsagePermissionSettings.CameraUsagePermission; + + var newAlertDialog = new AlertDialogBuilder() + .SetTitle("Gallery Simulator") + .SetMessage(usagePermission.GetDescriptionForActivePlatform()) + .AddButton("Authorise", () => + { + // save selection + UpdateCameraAccessStatus(CameraAccessStatus.Authorized); + + // send result + callback(CameraAccessStatus.Authorized, null); + }) + .AddCancelButton("Cancel", () => + { + // save selection + UpdateCameraAccessStatus(CameraAccessStatus.Denied); + + // send result + callback(CameraAccessStatus.Denied, null); + }) + .Build(); + newAlertDialog.Show(); + } + } + + public CameraAccessStatus GetCameraAccessStatus() + { + return m_simulatorData.CameraAccessStatus; + } + + public bool CanSelectImageFromGallery() + { + return (GalleryAccessStatus.Authorized == GetGalleryAccessStatus()); + } + + public void SelectMediaContent(MediaContentSelectOptions options, Action callback) + { + if(options.MaxAllowed > 1) + { + DebugLogger.LogWarning("Multiple media file selection is not supported in simulator. Defaulting to single selection."); + } + string extensions = GetExtensionsFromMimeType(options.AllowedMimeType); + string imagePath = EditorUtility.OpenFilePanelWithFilters("Select media", "", extensions == null ? new string[] { "All files", "*"} : new string[] { "Media files", extensions}); + if (imagePath.Length != 0) + { + List list = new List(); + var mediaContent = MediaContent.From(IOServices.ReadFileData(imagePath), MimeType.GetTypeForExtension(Path.GetExtension(imagePath))); + list.Add(mediaContent); + callback(list.ToArray(), null); + } + else + { + callback(null, new Error(description: "User cancelled operation.")); + } + } + + public bool CanCaptureImageFromCamera() + { + return (CameraAccessStatus.Authorized == GetCameraAccessStatus()); + } + + public bool CanSaveImageToGallery() + { + return (GalleryAccessStatus.Authorized == GetGalleryAccessStatus()); + } + + public void CaptureMediaContent(MediaContentCaptureOptions options, Action callback) + { + RequestCameraAccess((accessStatus, error) => { + if (CameraAccessStatus.Authorized == accessStatus) + { + var image = SimulatorServices.GetRandomImage(); + callback(MediaContent.From(image), null); + } + else + { + callback(null, MediaServicesError.PermissionNotAvailable()); + } + }); + } + + public void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, SaveMediaContentInternalCallback callback) + { + RequestGalleryAccess((accessStatus, error) => { + if (GalleryAccessStatus.Authorized == accessStatus) + { + var mediaContent = MediaContent.From(data, mimeType); + string extension = MimeType.GetExtensionForType(mimeType); + string selectedPath = EditorUtility.SaveFilePanel("Save media content", options.DirectoryName, $"{options.FileName}.{extension}", extension); + if (selectedPath.Length != 0) + { + mediaContent.AsFilePath(IOServices.GetDirectoryName(selectedPath), options.FileName, (savedPath, error) => { + callback(error == null, error); + }); + return; + } + + callback(false, MediaServicesError.UserCancelled()); + } + else + { + callback(false, MediaServicesError.PermissionNotAvailable()); + } + }); + } + + #endregion + + #region Private methods + + private void UpdateGalleryAccessStatus(GalleryAccessStatus value) + { + m_simulatorData.GalleryAccessStatus = value; + + SaveData(); + } + + private void UpdateCameraAccessStatus(CameraAccessStatus value) + { + m_simulatorData.CameraAccessStatus = value; + + SaveData(); + } + + private string GetExtensionsFromMimeType(string allowedMimeType) + { + if (allowedMimeType == null) + { + return null; + } + + switch (allowedMimeType) + { + case "image/*": + return "jpg,jpeg,png"; + case "video/*": + return "mp4, avi, mkv"; + case "audio/*": + return "mp3, wav, ogg"; + default: + return MimeType.GetExtensionForType(allowedMimeType); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulator.cs.meta new file mode 100644 index 00000000..44cd0a7b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 894bd8f9bc9cd449eb57a46183b8519f +timeCreated: 1562660707 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulatorData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulatorData.cs new file mode 100644 index 00000000..b14f511e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulatorData.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.Simulator +{ + [Serializable] + internal sealed class MediaServicesSimulatorData + { + #region Fields + + [SerializeField] + private GalleryAccessStatus m_galleryAccessStatus; + + [SerializeField] + public CameraAccessStatus m_cameraAccessStatus; + + #endregion + + #region Properties + + public GalleryAccessStatus GalleryAccessStatus + { + get + { + return m_galleryAccessStatus; + } + set + { + m_galleryAccessStatus = value; + } + } + + public CameraAccessStatus CameraAccessStatus + { + get + { + return m_cameraAccessStatus; + } + set + { + m_cameraAccessStatus = value; + } + } + + #endregion + + #region Constructors + + public MediaServicesSimulatorData() + { + // set properties + m_galleryAccessStatus = GalleryAccessStatus.NotDetermined; + m_cameraAccessStatus = CameraAccessStatus.NotDetermined; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulatorData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulatorData.cs.meta new file mode 100644 index 00000000..5352282a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/MediaServices/MediaServicesSimulatorData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2bbb3289fa854bba96bd73e9ab2bdac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices.meta new file mode 100644 index 00000000..0c2d075e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c5c9505c63ac348878d8b7f11940e51f +folderAsset: yes +timeCreated: 1554444049 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/MutableNotification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/MutableNotification.cs new file mode 100644 index 00000000..8f4c05de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/MutableNotification.cs @@ -0,0 +1,101 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Simulator +{ + public sealed class MutableNotification : Notification, IMutableNotification + { + #region Constructors + + public MutableNotification(string notificationId) + : base(notificationId) + { + // + } + + ~MutableNotification() + { + Dispose(false); + } + + #endregion + + #region IMutableNotification implementation + + public void SetTitle(string value) + { + // set value + m_title = value; + } + + public void SetSubtitle(string value) + { + // set value + m_subtitle = value; + } + + public void SetBody(string value) + { + // set value + m_body = value; + } + + public void SetBadge(int value) + { + // set value + m_badge = value; + } + + public void SetUserInfo(IDictionary value) + { + // set value + m_userInfo = ExternalServiceProvider.JsonServiceProvider.ToJson(value); + } + + public void SetSoundFileName(string value) + { + // set value + m_sound = value; + } + + public void SetIosProperties(NotificationIosProperties value) + { } + + public void SetAndroidProperties(NotificationAndroidProperties value) + { } + + public void SetTrigger(INotificationTrigger trigger) + { + Assert.IsArgNotNull(trigger, "trigger"); + + if (m_triggerType != NotificationTriggerType.Undefined) + { + return; + } + + // set trigger data + if (trigger is TimeIntervalNotificationTrigger) + { + m_triggerType = NotificationTriggerType.TimeInterval; + } + if (trigger is CalendarNotificationTrigger) + { + m_triggerType = NotificationTriggerType.Calendar; + } + if (trigger is LocationNotificationTrigger) + { + m_triggerType = NotificationTriggerType.Location; + } + m_triggerData = JsonUtility.ToJson(trigger); + } + + public void SetPriority(NotificationPriority value) + { + m_priority = value; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/MutableNotification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/MutableNotification.cs.meta new file mode 100644 index 00000000..c8925a69 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/MutableNotification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d9200ebc509704aefa38208fd0fba7c1 +timeCreated: 1562764230 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/Notification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/Notification.cs new file mode 100644 index 00000000..4cceda03 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/Notification.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Simulator +{ + [Serializable] + public class Notification : NotificationBase + { + #region Fields + + [SerializeField] + protected string m_title; + + [SerializeField] + protected string m_subtitle; + + [SerializeField] + protected string m_body; + + [SerializeField] + protected int m_badge; + + [SerializeField] + protected string m_userInfo; + + [SerializeField] + protected string m_sound; + + [SerializeField] + protected NotificationTriggerType m_triggerType = NotificationTriggerType.Undefined; + + [SerializeField] + protected string m_triggerData; + + [SerializeField] + protected NotificationPriority m_priority; + + #endregion + + #region Constructors + + public Notification(string id) : base(id) + { } + + ~Notification() + { + Dispose(false); + } + + #endregion + + #region Private static methods + + private static void LogNotSupported() + { + Diagnostics.LogNotSupported("NotificationServices"); + } + + #endregion + + #region Base class implementation + + protected override string GetTitleInternal() + { + return m_title; + } + + protected override string GetSubtitleInternal() + { + return m_subtitle; + } + + protected override string GetBodyInternal() + { + return m_body; + } + + protected override int GetBadgeInternal() + { + return m_badge; + } + + protected override IDictionary GetUserInfoInternal() + { + return string.IsNullOrEmpty(m_userInfo) + ? null + : (IDictionary)ExternalServiceProvider.JsonServiceProvider.FromJson(m_userInfo); + } + + protected override string GetSoundFileNameInternal() + { + return m_sound; + } + + protected override INotificationTrigger GetTriggerInternal() + { + switch (m_triggerType) + { + case NotificationTriggerType.Undefined: + return null; + + case NotificationTriggerType.TimeInterval: + return JsonUtility.FromJson(m_triggerData); + + case NotificationTriggerType.Calendar: + return JsonUtility.FromJson(m_triggerData); + + case NotificationTriggerType.LocalNotification: + return JsonUtility.FromJson(m_triggerData); + + case NotificationTriggerType.PushNotification: + return JsonUtility.FromJson(m_triggerData); + + default: + throw VBException.SwitchCaseNotImplemented(m_triggerType); + } + } + + protected override bool GetIsLaunchNotificationInternal() + { + LogNotSupported(); + + return false; + } + + protected override NotificationIosProperties GetIosPropertiesInternal() + { + return null; + } + + protected override NotificationAndroidProperties GetAndroidPropertiesInternal() + { + return null; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/Notification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/Notification.cs.meta new file mode 100644 index 00000000..de4f2a1e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/Notification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 676d372cb35034433a5a3132e8242b7c +timeCreated: 1554711554 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationCenterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationCenterInterface.cs new file mode 100644 index 00000000..7a026585 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationCenterInterface.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Simulator +{ + public sealed class NotificationCenterInterface : NativeNotificationCenterInterfaceBase, INativeNotificationCenterInterface + { + #region Constructors + + public NotificationCenterInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base class methods + + public override void RequestPermission(NotificationPermissionOptions options, RequestPermissionInternalCallback callback) + { + NotificationServicesSimulator.Instance.RequestPermission(options, (status, error) => + { + callback(status, error); + }); + } + + public override void GetSettings(GetSettingsInternalCallback callback) + { + // send result + var enabledOptions = NotificationPermissionOptions.None; + var settings = new NotificationSettingsInternal( + permissionStatus: NotificationServicesSimulator.Instance.GetPermissionStatus(out enabledOptions), + alertSetting: NotificationSettingStatus.NotSupported, + badgeSetting: NotificationSettingStatus.NotSupported, + carPlaySetting: NotificationSettingStatus.NotSupported, + lockScreenSetting: NotificationSettingStatus.NotSupported, + notificationCenterSetting: NotificationSettingStatus.NotSupported, + soundSetting: NotificationSettingStatus.NotSupported, + criticalAlertSetting: NotificationSettingStatus.NotSupported, + announcementSetting: NotificationSettingStatus.NotSupported, + alertStyle: NotificationAlertStyle.None, + previewStyle: NotificationPreviewStyle.Never, + exactTimingSetting: NotificationSettingStatus.NotSupported); + callback(settings); + } + + public override IMutableNotification CreateMutableNotification(string notificationId) + { + return new MutableNotification(notificationId); + } + + public override void ScheduleNotification(INotification notification, ScheduleNotificationInternalCallback callback) + { + Error error; + NotificationServicesSimulator.Instance.AddNotification((Notification)notification, out error); + + // send result + callback((error == null), error); + } + + public override void GetScheduledNotifications(GetNotificationsInternalCallback callback) + { + Error error; + var notifications = NotificationServicesSimulator.Instance.GetScheduledNotifications(out error); + + // send result + callback(notifications, error); + } + + public override void CancelScheduledNotification(string notificationId) + { + // get scheduled notifications + Error error; + var notifications = NotificationServicesSimulator.Instance.GetScheduledNotifications(out error); + + // find requested notification and cancel it + var notification = Array.Find(notifications, (item) => string.Equals(notificationId, item.Id)); + if (notification != null) + { + NotificationServicesSimulator.Instance.RemoveScheduledNotification(notification); + } + } + + public override void CancelAllScheduledNotifications() + { + NotificationServicesSimulator.Instance.RemoveAllScheduledNotifications(); + } + + public override void GetDeliveredNotifications(GetNotificationsInternalCallback callback) + { + Error error; + var notifications = NotificationServicesSimulator.Instance.GetDeliveredNotifications(out error); + + // send result + callback(notifications, error); + } + + public override void RemoveAllDeliveredNotifications() + { + NotificationServicesSimulator.Instance.RemoveAllDeliveredNotifications(); + } + + public override void RegisterForPushNotifications(RegisterForPushNotificationsInternalCallback callback) + { + NotificationServicesSimulator.Instance.RegisterForRemoteNotification((deviceToken, error) => callback(deviceToken, error)); + } + + public override void UnregisterForPushNotifications() + { + NotificationServicesSimulator.Instance.UnregisterForRemoteNotification(); + } + + public override bool IsRegisteredForPushNotifications() + { + return NotificationServicesSimulator.Instance.IsRegisteredForRemoteNotification(); + } + + public override void SetApplicationIconBadgeNumber(int count) + { + Diagnostics.LogNotSupportedInEditor("SetApplicationIconBadgeNumber in NotificationServices"); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationCenterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationCenterInterface.cs.meta new file mode 100644 index 00000000..04f02c79 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationCenterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f62a5cf4a1ef74e76a98a261b6bbd85c +timeCreated: 1563887455 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulator.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulator.cs new file mode 100644 index 00000000..1b8d6937 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulator.cs @@ -0,0 +1,241 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.Editor.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Simulator +{ + public sealed class NotificationServicesSimulator : SingletonObject + { + #region Constants + + // messages + private const string kUnauthorizedAccessError = "Unauthorized access! Check permission before accessing notification feature."; + + private const string kAlreadyAuthorizedError = "Permission for accessing notification is already provided."; + + #endregion + + #region properties + + private NotificationServicesSimulatorData m_simulatorData; + + #endregion + + #region Constructors + + private NotificationServicesSimulator() + { + // save instance + m_simulatorData = LoadFromDisk() ?? new NotificationServicesSimulatorData(); + } + + #endregion + + #region Database methods + + private NotificationServicesSimulatorData LoadFromDisk() + { + return SimulatorServices.GetObject(NativeFeatureType.kNotificationServices); + } + + private void SaveData() + { + SimulatorServices.SetObject(NativeFeatureType.kNotificationServices, m_simulatorData); + } + + public static void Reset() + { + SimulatorServices.RemoveObject(NativeFeatureType.kNotificationServices); + } + + #endregion + + #region Permission methods + + public NotificationPermissionStatus GetPermissionStatus(out NotificationPermissionOptions enabledOptions) + { + enabledOptions = m_simulatorData.EnabledOptions; + + return m_simulatorData.PermissionStatus; + } + + public void RequestPermission(NotificationPermissionOptions options, Action callback) + { + // check whether required permission is already granted + var permissionStatus = m_simulatorData.PermissionStatus; + if (NotificationPermissionStatus.Authorized == permissionStatus) + { + callback(NotificationPermissionStatus.Authorized, new Error(description: kAlreadyAuthorizedError)); + } + else + { + // show prompt to user asking for required permission + var newAlertDialog = new AlertDialogBuilder() + .SetTitle("Notification Services Simulator") + .SetMessage("App would like to send you notifications.") + .AddButton("Authorise", () => + { + // save selection + UpdatePermissionStatus(NotificationPermissionStatus.Authorized, options); + + // send result + callback(NotificationPermissionStatus.Authorized, null); + }) + .AddCancelButton("Cancel", () => + { + // save selection + UpdatePermissionStatus(NotificationPermissionStatus.Denied); + + // send result + callback(NotificationPermissionStatus.Denied, null); + }) + .Build(); + newAlertDialog.Show(); + } + } + + #endregion + + #region Local notification methods + + public void AddNotification(Notification notification, out Error error) + { + if (ValidateAccess(out error)) + { + m_simulatorData.AddScheduledNotification(notification); + + // save state + SaveData(); + } + } + + public Notification[] GetScheduledNotifications(out Error error) + { + if (ValidateAccess(out error)) + { + var notifications = m_simulatorData.GetScheduledNotifications(); + return notifications.ToArray(); + } + + return new Notification[0]; + } + + public void RemoveScheduledNotification(Notification notification) + { + Error error; + if (ValidateAccess(out error)) + { + m_simulatorData.RemoveNotificationWithId(notification); + + // save state + SaveData(); + } + } + + public void RemoveAllScheduledNotifications() + { + Error error; + if (ValidateAccess(out error)) + { + m_simulatorData.RemoveAllScheduledNotifications(); + + // save state + SaveData(); + } + } + + public Notification[] GetDeliveredNotifications(out Error error) + { + if (ValidateAccess(out error)) + { + IEnumerable notifications = m_simulatorData.GetDeliveredNotifications(); + return notifications.ToArray(); + } + + return null; + } + + public void RemoveAllDeliveredNotifications() + { + Error error; + if (ValidateAccess(out error)) + { + m_simulatorData.ClearDeliveredNotifications(); + } + } + + #endregion + + #region Remote notification + + public void RegisterForRemoteNotification(Action callback) + { + // get required info + string deviceToken = null; + Error error = null; + if (ValidateAccess(out error)) + { + deviceToken = "device-token"; + m_simulatorData.IsRegistedForRemoteNotifications = true; + + // save state + SaveData(); + } + + // send result + callback(deviceToken, error); + } + + public void UnregisterForRemoteNotification() + { + Error error = null; + if (ValidateAccess(out error)) + { + m_simulatorData.IsRegistedForRemoteNotifications = false; + + // save state + SaveData(); + } + } + + public bool IsRegisteredForRemoteNotification() + { + return m_simulatorData.IsRegistedForRemoteNotifications; + } + + #endregion + + #region Private methods + + private bool ValidateAccess(out Error error) + { + // set default value + error = null; + + // read current status + if (m_simulatorData.PermissionStatus == NotificationPermissionStatus.Authorized) + { + return true; + } + + // set error info + error = NotificationServicesError.PermissionNotAvailable(); + + return false; + } + + private void UpdatePermissionStatus(NotificationPermissionStatus accessStatus, NotificationPermissionOptions enabledOptions = NotificationPermissionOptions.None) + { + m_simulatorData.SetPermissionStatus(accessStatus, enabledOptions); + + // save state + SaveData(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulator.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulator.cs.meta new file mode 100644 index 00000000..1cd5e703 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 450cf166755674909949ae939ad613fe +timeCreated: 1562822612 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulatorData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulatorData.cs new file mode 100644 index 00000000..f3b0e913 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulatorData.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.Simulator +{ + [Serializable] + internal sealed class NotificationServicesSimulatorData + { + #region Nested types + + [SerializeField] + private NotificationPermissionStatus m_permissionStatus = NotificationPermissionStatus.NotDetermined; + + [SerializeField] + private NotificationPermissionOptions m_enabledOptions = NotificationPermissionOptions.None; + + [SerializeField] + private List m_scheduledNotifications = new List(); + + [SerializeField] + private List m_deliveredNotifications = new List(); + + [SerializeField] + private bool m_isRegistedForRemoteNotifications = false; + + #endregion + + #region Properties + + public NotificationPermissionStatus PermissionStatus + { + get + { + return m_permissionStatus; + } + } + + public NotificationPermissionOptions EnabledOptions + { + get + { + return m_enabledOptions; + } + } + + public bool IsRegistedForRemoteNotifications + { + get + { + return m_isRegistedForRemoteNotifications; + } + set + { + m_isRegistedForRemoteNotifications = value; + } + } + + #endregion + + #region Public methods + + public void SetPermissionStatus(NotificationPermissionStatus permissionStatus, NotificationPermissionOptions enabledOptions) + { + // set values + m_permissionStatus = permissionStatus; + m_enabledOptions = enabledOptions; + } + + public void AddScheduledNotification(Notification notification) + { + int index; + // replace existing objects + if (-1 != (index = FindScheduledNotificationWithId(notification.Id))) + { + m_scheduledNotifications[index] = notification; + } + else + { + m_scheduledNotifications.Add(notification); + } + } + + public IEnumerable GetScheduledNotifications() + { + return m_scheduledNotifications; + } + + public void RemoveNotificationWithId(Notification notification) + { + int index; + if (-1 != (index = FindScheduledNotificationWithId(notification.Id))) + { + m_scheduledNotifications.RemoveAt(index); + } + } + + public void RemoveAllScheduledNotifications() + { + m_scheduledNotifications.Clear(); + } + + private int FindScheduledNotificationWithId(string id) + { + return m_scheduledNotifications.FindIndex((item) => string.Equals(id, item.Id)); + } + + public IEnumerable GetDeliveredNotifications() + { + return m_deliveredNotifications; + } + + public void ClearDeliveredNotifications() + { + m_deliveredNotifications.Clear(); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulatorData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulatorData.cs.meta new file mode 100644 index 00000000..72369c65 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/NotificationServices/NotificationServicesSimulatorData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2a61d47b0b7649d3821b07e48827ed0 +timeCreated: 1576677891 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp.meta new file mode 100644 index 00000000..d246d4a7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: af5d65a8da3dd4646a65feb37ab39025 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp/RateMyAppInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp/RateMyAppInterface.cs new file mode 100644 index 00000000..ed55edb5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp/RateMyAppInterface.cs @@ -0,0 +1,54 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.RateMyAppCore.Simulator +{ + public class RateMyAppInterface : NativeRateMyAppInterfaceBase + { + #region Constructors + + public RateMyAppInterface() + : base(isAvailable: false) + { } + + #endregion + + #region Base methods + + public override void RequestStoreReview() + { + var appSettings = EssentialKitSettings.Instance.ApplicationSettings; + string appId = appSettings.GetAppStoreIdForActiveOrSimulationPlatform(); + OpenAppStorePage(appId); + } + + #endregion + + #region Helper methods + + private void OpenAppStorePage(string applicationId) + { + var activePlatform = PlatformMappingServices.GetActivePlatform(); + switch (activePlatform) + { + case NativePlatform.Android: + Application.OpenURL("https://play.google.com/store/apps/details?id=" + applicationId); + break; + + case NativePlatform.iOS: + case NativePlatform.tvOS: + Application.OpenURL("https://itunes.apple.com/app/id" + applicationId); + break; + default: + DebugLogger.LogWarning(EssentialKitDomain.Default, "Cannot open app store page. Unsupported platform: " + activePlatform.ToString()); + Application.OpenURL("https://google.com/search?" + applicationId); + break; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp/RateMyAppInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp/RateMyAppInterface.cs.meta new file mode 100644 index 00000000..599f74ae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/RateMyApp/RateMyAppInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 31ac4c5d9a2ae45f2aa0d292d6a0cd0c +timeCreated: 1578053378 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices.meta new file mode 100644 index 00000000..b5099984 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e6e37e220c156411a9794ac775bed14e +folderAsset: yes +timeCreated: 1554437384 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeMailComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeMailComposer.cs new file mode 100644 index 00000000..12befbba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeMailComposer.cs @@ -0,0 +1,75 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Simulator +{ + public sealed class NativeMailComposer : NativeMailComposerBase, INativeMailComposer + { + #region Fields + + private string[] m_toRecipients = null; + + private string m_subject = null; + + private string m_body = null; + + #endregion + + #region Static methods + + public static bool CanSendMail() + { + return true; + } + + #endregion + + #region Base class methods + + public override void SetToRecipients(params string[] values) + { + m_toRecipients = values; + } + + public override void SetCcRecipients(params string[] values) + {} + + public override void SetBccRecipients(params string[] values) + {} + + public override void SetSubject(string value) + { + m_subject = value; + } + + public override void SetBody(string value, bool isHtml) + { + m_body = value; + } + + public override void AddScreenshot(string fileName) + {} + + public override void AddAttachmentData(byte[] data, string mimeType, string fileName) + {} + + public override void Show() + { + // create mailto link + string toAddress = (m_toRecipients != null) ? string.Join(",", m_toRecipients) : string.Empty; + string subject = SystemUtility.EscapeString(m_subject); + string body = SystemUtility.EscapeString(m_body); + string expression = string.Format("mailto:{0}?subject={1}&body={2}", toAddress, subject, body); + + // execute expression + Application.OpenURL(expression); + + // send result + SendCloseEvent(MailComposerResultCode.Sent, null); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeMailComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeMailComposer.cs.meta new file mode 100644 index 00000000..505669b9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeMailComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4113644d1f86d42279e1cd84227f22aa +timeCreated: 1576937871 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeSharingInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeSharingInterface.cs new file mode 100644 index 00000000..a1b875b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeSharingInterface.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.Simulator +{ + public sealed class NativeSharingInterface : NativeSharingInterfaceBase, INativeSharingInterface + { + #region Constructors + + public NativeSharingInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override bool CanSendMail() + { + return NativeMailComposer.CanSendMail(); + } + + public override INativeMailComposer CreateMailComposer() + { + return new NativeMailComposer(); + } + + public override bool CanSendText() + { + return false; + } + + public override bool CanSendAttachments() + { + return false; + } + + public override bool CanSendSubject() + { + return false; + } + + public override INativeMessageComposer CreateMessageComposer() + { + return new NullMessageComposer(); + } + + public override INativeShareSheet CreateShareSheet() + { + return new NullShareSheet(); + } + + public override bool IsSocialShareComposerAvailable(SocialShareComposerType composerType) + { + return false; + } + + public override INativeSocialShareComposer CreateSocialShareComposer(SocialShareComposerType composerType) + { + return new NullSocialShareComposer(composerType); + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeSharingInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeSharingInterface.cs.meta new file mode 100644 index 00000000..6d7de041 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/SharingServices/NativeSharingInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 845124dcef214454987dac280adac134 +timeCreated: 1577083819 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/VoxelBusters.EssentialKit.SimulatorModule.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/VoxelBusters.EssentialKit.SimulatorModule.asmdef new file mode 100644 index 00000000..38fa4e18 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/VoxelBusters.EssentialKit.SimulatorModule.asmdef @@ -0,0 +1,20 @@ +{ + "name": "VoxelBusters.EssentialKit.SimulatorModule", + "references": [ + "VoxelBusters.CoreLibrary", + "VoxelBusters.CoreLibrary.Editor", + "VoxelBusters.CoreLibrary.NativePlugins", + "VoxelBusters.CoreLibrary.Editor.NativePlugins", + "VoxelBusters.EssentialKit" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/VoxelBusters.EssentialKit.SimulatorModule.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/VoxelBusters.EssentialKit.SimulatorModule.asmdef.meta new file mode 100644 index 00000000..8916835c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/Simulator/VoxelBusters.EssentialKit.SimulatorModule.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8936e0e68f6846158608a18f1512705 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/VoxelBusters.EssentialKit.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/VoxelBusters.EssentialKit.asmdef new file mode 100644 index 00000000..2dea0d15 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/VoxelBusters.EssentialKit.asmdef @@ -0,0 +1,15 @@ +{ + "name": "VoxelBusters.EssentialKit", + "references": [ + "VoxelBusters.CoreLibrary", + "VoxelBusters.CoreLibrary.NativePlugins" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/VoxelBusters.EssentialKit.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/VoxelBusters.EssentialKit.asmdef.meta new file mode 100644 index 00000000..9e362d9b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/VoxelBusters.EssentialKit.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bfb3a80268dac420ab25cd26e09e4475 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS.meta new file mode 100644 index 00000000..4b32c6fb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 25eae59b10f144fefb7890d41a187bf6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook.meta new file mode 100644 index 00000000..4b3f4ea9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 139fe976fab594ec29f0a19977232f08 +folderAsset: yes +timeCreated: 1551939721 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookBinding.cs new file mode 100644 index 00000000..ae602cf0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookBinding.cs @@ -0,0 +1,20 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.AddressBookCore.iOS +{ + internal static class AddressBookBinding + { + + [DllImport("__Internal")] + public static extern CNAuthorizationStatus NPAddressBookGetAuthorizationStatus(); + + [DllImport("__Internal")] + public static extern void NPAddressBookReadContacts(NativeReadContactsOptionsData options, IntPtr tagPtr, ReadContactsNativeCallback readContactsCallback); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookBinding.cs.meta new file mode 100644 index 00000000..72831f8d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bbc24d7a3226243369fde812d74138b1 +timeCreated: 1551939905 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookContact.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookContact.cs new file mode 100644 index 00000000..bbdb0017 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookContact.cs @@ -0,0 +1,116 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.EssentialKit; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.AddressBookCore.iOS +{ + internal sealed class AddressBookContact : AddressBookContactBase, IAddressBookContact + { + #region Fields + + private string m_firstName; + + private string m_middleName; + + private string m_lastName; + + private string[] m_phoneNumbers; + + private string[] m_emailAddresses; + + private IosNativeObjectRef m_image; + + private string m_companyName; + + #endregion + + #region Constructors + + public AddressBookContact(NativeAddressBookContactData data) + { + // set properties + m_firstName = MarshalUtility.ToString(data.FirstNamePtr); + m_middleName = MarshalUtility.ToString(data.MiddleNamePtr); + m_lastName = MarshalUtility.ToString(data.LastNamePtr); + m_phoneNumbers = MarshalUtility.CreateStringArray(data.PhoneNumbersPtr, data.PhoneNumbersCount); + m_emailAddresses = MarshalUtility.CreateStringArray(data.EmailAddressesPtr, data.EmailAddressesCount); + m_image = (data.ImageDataPtr != IntPtr.Zero) ? new IosNativeObjectRef(data.ImageDataPtr) : null; + m_companyName = MarshalUtility.ToString(data.CompanyNamePtr); + } + + ~AddressBookContact() + { + Dispose(false); + } + + #endregion + + #region Base implementation + + protected override string GetFirstNameInternal() + { + return m_firstName; + } + + protected override string GetMiddleNameInternal() + { + return m_middleName; + } + + protected override string GetLastNameInternal() + { + return m_lastName; + } + + protected override string[] GetPhoneNumbersInternal() + { + return m_phoneNumbers; + } + + protected override string[] GetEmailAddressesInternal() + { + return m_emailAddresses; + } + + protected override string GetCompanyNameInternal() + { + return m_companyName; + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + // check whether image exists + if (m_image == null) + { + callback(null, new Error(description: "Image not found.")); + return; + } + + // fetch actual data + IosNativePluginsUtility.LoadImage(m_image.Pointer, (imageData, error) => callback(imageData, error)); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release native reference + if (m_image != null) + { + m_image.Dispose(); + } + + base.Dispose(disposing); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookContact.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookContact.cs.meta new file mode 100644 index 00000000..e658a60f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookContact.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0274c2a554d8847df9a9d7ed0c0e27b7 +timeCreated: 1576069387 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookInterface.cs new file mode 100644 index 00000000..0cf652af --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookInterface.cs @@ -0,0 +1,74 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using AOT; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AddressBookCore.iOS +{ + public sealed class AddressBookInterface : NativeAddressBookInterfaceBase, INativeAddressBookInterface + { + #region Constructors + + static AddressBookInterface() + { + } + + public AddressBookInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base class methods + + public override AddressBookContactsAccessStatus GetContactsAccessStatus() + { + var authorizationStatus = AddressBookBinding.NPAddressBookGetAuthorizationStatus(); + var accessStatus = AddressBookUtility.ConvertToAddressBookContactsAccessStatus(authorizationStatus); + + return accessStatus; + } + + public override void ReadContacts(ReadContactsOptions options, ReadContactsInternalCallback callback) + { + // make call + var tagPtr = MarshalUtility.GetIntPtr(callback); + AddressBookBinding.NPAddressBookReadContacts(AddressBookUtility.From(options), tagPtr, HandleReadContactsCallbackInternal); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(ReadContactsNativeCallback))] + private static void HandleReadContactsCallbackInternal(IntPtr contactsPtr, int count, int nextOffset, NativeError nativeError, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var contacts = AddressBookUtility.ConvertNativeDataArrayToContactsArray(contactsPtr, count); + var errorObj = nativeError.Convert(AddressBookError.kDomain); + ((ReadContactsInternalCallback)tagHandle.Target).Invoke(contacts, nextOffset, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookInterface.cs.meta new file mode 100644 index 00000000..96d209d8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7f2884b1fb64e49728db02ae849291b0 +timeCreated: 1552917488 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookUtility.cs new file mode 100644 index 00000000..8fcef0d7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookUtility.cs @@ -0,0 +1,75 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AddressBookCore.iOS +{ + internal static class AddressBookUtility + { + #region Converter methods + + public static AddressBookContactsAccessStatus ConvertToAddressBookContactsAccessStatus(CNAuthorizationStatus status) + { + switch (status) + { + case CNAuthorizationStatus.CNAuthorizationStatusNotDetermined: + return AddressBookContactsAccessStatus.NotDetermined; + + case CNAuthorizationStatus.CNAuthorizationStatusRestricted: + return AddressBookContactsAccessStatus.Restricted; + + case CNAuthorizationStatus.CNAuthorizationStatusDenied: + return AddressBookContactsAccessStatus.Denied; + + case CNAuthorizationStatus.CNAuthorizationStatusAuthorized: + return AddressBookContactsAccessStatus.Authorized; + + case CNAuthorizationStatus.CNAuthorizationStatusLimited: + return AddressBookContactsAccessStatus.Limited; + + default: + throw VBException.SwitchCaseNotImplemented(status); + } + } + + public static AddressBookContact[] ConvertNativeDataArrayToContactsArray(IntPtr contactsPtr, int length) + { + if (IntPtr.Zero == contactsPtr) + { + return null; + } + + // create original data array from native data + AddressBookContact[] contacts = new AddressBookContact[length]; + int sizeOfNativeData = Marshal.SizeOf(typeof(NativeAddressBookContactData)); + int offset = 0; + for (int iter = 0; iter < length; iter++) + { + NativeAddressBookContactData unmanagedItem = MarshalUtility.PtrToStructure(new IntPtr(contactsPtr.ToInt64() + offset)); + contacts[iter] = new AddressBookContact(unmanagedItem); + + // move pointer + offset += sizeOfNativeData; + } + return contacts; + } + + public static NativeReadContactsOptionsData From(ReadContactsOptions options) + { + var nativeOptions = new NativeReadContactsOptionsData(); + nativeOptions.Limit = options.Limit; + nativeOptions.Offset = options.Offset; + nativeOptions.Constraints = options.Constraints; + + return nativeOptions; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookUtility.cs.meta new file mode 100644 index 00000000..98e7e576 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/AddressBookUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 307712b070630406eb00e8fb6fd37883 +timeCreated: 1552917488 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/CNAuthorizationStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/CNAuthorizationStatus.cs new file mode 100644 index 00000000..acc52dd4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/CNAuthorizationStatus.cs @@ -0,0 +1,21 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.AddressBookCore.iOS +{ + internal enum CNAuthorizationStatus : long + { + CNAuthorizationStatusNotDetermined, + + CNAuthorizationStatusRestricted, + + CNAuthorizationStatusDenied, + + CNAuthorizationStatusAuthorized, + + CNAuthorizationStatusLimited + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/CNAuthorizationStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/CNAuthorizationStatus.cs.meta new file mode 100644 index 00000000..cf41f7ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/CNAuthorizationStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f1fb1de9d60264cb6a6644e60b4da025 +timeCreated: 1551939735 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeDelegates.cs new file mode 100644 index 00000000..d1bb4b73 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeDelegates.cs @@ -0,0 +1,12 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.AddressBookCore.iOS +{ + internal delegate void ReadContactsNativeCallback(IntPtr contactsPtr, int count, int nextOffset, NativeError nativeError, IntPtr tagPtr); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeDelegates.cs.meta new file mode 100644 index 00000000..b168e55d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5787c9197bffe49cc967684947214377 +timeCreated: 1551942107 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeReadContactsOptionsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeReadContactsOptionsData.cs new file mode 100644 index 00000000..4023bd14 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeReadContactsOptionsData.cs @@ -0,0 +1,32 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.AddressBookCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct NativeReadContactsOptionsData + { + #region Properties + + public int Limit + { + get; + internal set; + } + + public int Offset + { + get; + internal set; + } + + public ReadContactsConstraint Constraints + { + get; + internal set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeReadContactsOptionsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeReadContactsOptionsData.cs.meta new file mode 100644 index 00000000..9923f2da --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AddressBook/NativeReadContactsOptionsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 481bb1cff1da442838b2aca238c68eec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater.meta new file mode 100644 index 00000000..a18841ba --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ffe0fa68988e542308e6e7870127fd36 +folderAsset: yes +timeCreated: 1553077406 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterBinding.cs new file mode 100644 index 00000000..13e9f26b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterBinding.cs @@ -0,0 +1,23 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.iOS +{ + internal static class AppUpdaterBinding + { + + [DllImport("__Internal")] + public static extern void NPAppUpdaterCreate(string appId); + + [DllImport("__Internal")] + public static extern void NPAppUpdaterRequestUpdateInfo(IntPtr tagPtr, RequestUpdateInfoNativeCallback callback); + + [DllImport("__Internal")] + public static extern void NPAppUpdaterPromptUpdate(NativeAppUpdaterPromptOptionsData options, IntPtr tagPtr, PromptUpdateNativeCallback callback); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterBinding.cs.meta new file mode 100644 index 00000000..82db0d59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f1dec98ceed31488386276af53be2c55 +timeCreated: 1553077418 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterInterface.cs new file mode 100644 index 00000000..58b5c93a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterInterface.cs @@ -0,0 +1,97 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using AOT; +using VoxelBusters.EssentialKit; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; +using System; +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.iOS +{ + public sealed class AppUpdaterInterface : NativeFeatureInterfaceBase, INativeAppUpdaterInterface + { + #region Constructors + + public AppUpdaterInterface() + : base(isAvailable: true) + { + AppUpdaterBinding.NPAppUpdaterCreate(EssentialKitSettings.Instance.ApplicationSettings.GetAppStoreIdForActivePlatform()); + } + + #endregion + + #region INativeAppUpdaterInterface implementation methods + + public void RequestUpdateInfo(EventCallback callback) + { + AppUpdaterBinding.NPAppUpdaterRequestUpdateInfo(MarshalUtility.GetIntPtr(callback), HandleRequestUpdateInfoNativeCallback); + } + + public void PromptUpdate(PromptUpdateOptions options, EventCallback callback) + { + NativeAppUpdaterPromptOptionsData nativeOptions = new NativeAppUpdaterPromptOptionsData() + { + IsForceUpdate = options.IsForceUpdate, + Title = options.Title, + Message = options.Message, + AllowInstallationIfDownloaded = options.AllowInstallationIfDownloaded + }; + AppUpdaterBinding.NPAppUpdaterPromptUpdate(nativeOptions, MarshalUtility.GetIntPtr(callback), HandlePromptUpdateNativeCallback); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(RequestUpdateInfoNativeCallback))] + private static void HandleRequestUpdateInfoNativeCallback(NativeAppUpdaterUpdateInfoData nativeUpdateInfo, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + AppUpdaterUpdateInfo updateInfo = new AppUpdaterUpdateInfo((AppUpdaterUpdateStatus)nativeUpdateInfo.Status, nativeUpdateInfo.BuildTag); + var errorObj = error.Convert(); + ((EventCallback)tagHandle.Target).Invoke(updateInfo, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(PromptUpdateNativeCallback))] + private static void HandlePromptUpdateNativeCallback(float progress, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var errorObj = error.Convert(); + ((EventCallback)tagHandle.Target).Invoke(progress, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterInterface.cs.meta new file mode 100644 index 00000000..a0074646 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/AppUpdaterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aeb5153e800ff4c279b9029f3a8dea92 +timeCreated: 1553078261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterPromptOptionsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterPromptOptionsData.cs new file mode 100644 index 00000000..9e6d6b59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterPromptOptionsData.cs @@ -0,0 +1,34 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct NativeAppUpdaterPromptOptionsData + { + public bool IsForceUpdate + { + get; + internal set; + } + + public string Title + { + get; + internal set; + } + + public string Message + { + get; + internal set; + } + + public bool AllowInstallationIfDownloaded + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterPromptOptionsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterPromptOptionsData.cs.meta new file mode 100644 index 00000000..43de3f66 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterPromptOptionsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26f218926c1bd494b928e274a579d112 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterUpdateInfoData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterUpdateInfoData.cs new file mode 100644 index 00000000..a9f66f34 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterUpdateInfoData.cs @@ -0,0 +1,21 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct NativeAppUpdaterUpdateInfoData + { + public NativeUpdateInfoStatus Status + { + get; + internal set; + } + public int BuildTag + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterUpdateInfoData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterUpdateInfoData.cs.meta new file mode 100644 index 00000000..6becfa3c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeAppUpdaterUpdateInfoData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7402639e0e2644bc3aabbd68cef35a57 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeDelegates.cs new file mode 100644 index 00000000..6238a557 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeDelegates.cs @@ -0,0 +1,15 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.EssentialKit; + +namespace VoxelBusters.EssentialKit.AppUpdaterCore.iOS +{ + internal delegate void RequestUpdateInfoNativeCallback(NativeAppUpdaterUpdateInfoData nativeUpdateInfo, NativeError error, IntPtr tagPtr); + internal delegate void PromptUpdateNativeCallback(float progress, NativeError error, IntPtr tagPtr); + +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeDelegates.cs.meta new file mode 100644 index 00000000..a2ff32cc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fb91ad3f5b1454ad79682a5a6d6b5faa +timeCreated: 1553345360 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeUpdateInfoStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeUpdateInfoStatus.cs new file mode 100644 index 00000000..87a866a3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeUpdateInfoStatus.cs @@ -0,0 +1,12 @@ +#if UNITY_IOS || UNITY_TVOS +namespace VoxelBusters.EssentialKit.AppUpdaterCore.iOS +{ + public enum NativeUpdateInfoStatus + { + Unknown = 0, + UpdateAvailable = 1, + UpdateNotAvailable = 2, + UpdateInProgress = 3 + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeUpdateInfoStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeUpdateInfoStatus.cs.meta new file mode 100644 index 00000000..2267f51d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AppUpdater/NativeUpdateInfoStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03c24f89193ae456895a6184ba206314 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AssemblyInfo.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AssemblyInfo.cs new file mode 100644 index 00000000..a1b2458a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AssemblyInfo.cs @@ -0,0 +1,4 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.Editor")] +[assembly: InternalsVisibleTo("VoxelBusters.EssentialKit.Editor.Build.iOSModule")] \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AssemblyInfo.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AssemblyInfo.cs.meta new file mode 100644 index 00000000..1fb740a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 226fd62539eba4c3786b7af26fba8da2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices.meta new file mode 100644 index 00000000..ea9ad623 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0302d45bdd5184e1cb40bfd9074cc1db +folderAsset: yes +timeCreated: 1551957207 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingProduct.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingProduct.cs new file mode 100644 index 00000000..f1995b08 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingProduct.cs @@ -0,0 +1,81 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + internal sealed class BillingProduct : BillingProductBase + { + #region Fields + + private string m_localizedTitle; + + private string m_localizedDescription; + + private BillingPrice m_price; + + private readonly List m_offers; + + private BillingProductSubscriptionInfo m_subscriptionInfo; + + #endregion + + #region Constructors + + public BillingProduct(IntPtr nativeObjectPtr, string id, + string platformId, BillingProductType type, string localizedTitle, + string localizedDescription, BillingPrice price, + BillingProductSubscriptionInfo subscriptionInfo, + List offers, + IEnumerable payouts) + : base(id: id, platformId: platformId, type: type, payouts: payouts) + { + // set properties + NativeObjectRef = new IosNativeObjectRef(nativeObjectPtr); + m_localizedTitle = localizedTitle; + m_localizedDescription = localizedDescription; + m_price = price; + m_offers = offers; + m_subscriptionInfo = subscriptionInfo; + } + + ~BillingProduct() + { + Dispose(false); + } + + #endregion + + #region Base methods + + protected override string GetLocalizedTitleInternal() + { + return m_localizedTitle; + } + + protected override string GetLocalizedDescriptionInternal() + { + return m_localizedDescription; + } + + protected override BillingPrice GetPriceInternal() + { + return m_price; + } + + protected override IEnumerable GetOffersInternal() + { + return m_offers; + } + + protected override BillingProductSubscriptionInfo GetSubscriptionInfoInternal() + { + return m_subscriptionInfo; + } + + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingProduct.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingProduct.cs.meta new file mode 100644 index 00000000..2e86021a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingProduct.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c058be470c1464d108b11924503d4efe +timeCreated: 1553091765 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesBinding.cs new file mode 100644 index 00000000..ae8db35f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesBinding.cs @@ -0,0 +1,43 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + internal static class BillingServicesBinding + { + [DllImport("__Internal")] + public static extern bool NPBillingServicesCanMakePayments(); + + [DllImport("__Internal")] + public static extern void NPBillingServicesRegisterCallbacks(RequestForProductsNativeCallback requestForProductsCallback, TransactionStateChangeNativeCallback transactionStateChangeCallback, RestorePurchasesNativeCallback restorePurchasesCallback); + + [DllImport("__Internal")] + public static extern void NPBillingServicesInit(bool autoFinishTransactions); + + [DllImport("__Internal")] + public static extern bool NPBillingServicesIsProductPurchased(string productId); + + [DllImport("__Internal")] + public static extern void NPBillingServicesRequestForBillingProducts(string[] productIds, int length); + + [DllImport("__Internal")] + public static extern void NPBillingServicesBuyProduct(string productId, SKBuyProductOptionsData buyProductOptionsData); + + [DllImport("__Internal")] + public static extern IntPtr NPBillingServicesGetTransactions(out int length); + + [DllImport("__Internal")] + public static extern void NPBillingServicesRestorePurchases(bool forceRefresh, string tag); + + [DllImport("__Internal")] + public static extern void NPBillingServicesFinishTransactions(IntPtr transactionsPtr, int length); + + [DllImport("__Internal")] + public static extern void NPBillingServicesTryClearingUnfinishedTransactions(); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesBinding.cs.meta new file mode 100644 index 00000000..d83ad020 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 52622081a54344dcd9113ca4e3021e5c +timeCreated: 1551987565 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesInterface.cs new file mode 100644 index 00000000..fa7bc6c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesInterface.cs @@ -0,0 +1,155 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + public sealed class BillingServicesInterface : NativeBillingServicesInterfaceBase, INativeBillingServicesInterface + { + #region Static fields + + private static BillingServicesInterface s_staticInstance; + + #endregion + + #region Constructors + + static BillingServicesInterface() + { + BillingServicesBinding.NPBillingServicesRegisterCallbacks(HandleRequestForProductsCallbackInternal, HandlePaymentStateChangeCallbackInternal, HandleRestorePurchasesCallbackInternal); + } + + public BillingServicesInterface() + : base(isAvailable: true) + { + // initialise component + var unitySettings = BillingServices.UnitySettings; + BillingServicesBinding.NPBillingServicesInit(unitySettings.AutoFinishTransactions); + + // cache reference + s_staticInstance = this; + } + + #endregion + + #region Base class methods + + public override bool CanMakePayments() + { + return BillingServicesBinding.NPBillingServicesCanMakePayments(); + } + + public override void RetrieveProducts(BillingProductDefinition[] productDefinitions) + { + var productIds = Array.ConvertAll(productDefinitions, (item) => item.GetPlatformIdForActivePlatform()); + BillingServicesBinding.NPBillingServicesRequestForBillingProducts(productIds, productIds.Length); + } + + public override bool IsProductPurchased(IBillingProduct product) + { + return BillingServicesBinding.NPBillingServicesIsProductPurchased(product.PlatformId); + } + + public override void BuyProduct(string productId, string productPlatformId, BuyProductOptions options) + { + var offerRedeemDetails = options.OfferRedeemDetails; + SKBillingProductOfferRedeemDetailsData billingProductOfferRedeemDetailsData = new SKBillingProductOfferRedeemDetailsData() { OfferId = offerRedeemDetails?.IosPlatformProperties.OfferId, KeyId = offerRedeemDetails?.IosPlatformProperties.KeyId, Nonce = offerRedeemDetails?.IosPlatformProperties.Nonce, Signature = offerRedeemDetails?.IosPlatformProperties.Signature, Timestamp = offerRedeemDetails != null ? offerRedeemDetails.IosPlatformProperties.Timestamp : 0 }; + SKBuyProductOptionsData buyProductOptionsData = new SKBuyProductOptionsData() { Quantity = options.Quantity, Tag = options.Tag?.ToString(), OfferRedeemDetails = billingProductOfferRedeemDetailsData}; + + // make request + BillingServicesBinding.NPBillingServicesBuyProduct(productPlatformId, buyProductOptionsData); + } + + public override IBillingTransaction[] GetTransactions() + { + IntPtr transactionsPtr = BillingServicesBinding.NPBillingServicesGetTransactions(out var length); + + try + { + // convert native array to unity type + return BillingServicesUtility.CreateTransactionArray(transactionsPtr, length); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + return null; + } + finally + { + IosNativePluginsUtility.FreeCPointerObject(transactionsPtr); + } + } + + public override void FinishTransactions(IBillingTransaction[] transactions) + { + // create native array + var transactionsPtr = Array.ConvertAll(transactions, (item) => ((BillingTransaction)item).AddrOfNativeObject()); + var unmangedPtr = MarshalUtility.CreateUnmanagedArray(transactionsPtr); + + try + { + BillingServicesBinding.NPBillingServicesFinishTransactions(unmangedPtr, transactions.Length); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release + MarshalUtility.ReleaseUnmanagedArray(unmangedPtr); + } + } + + public override void RestorePurchases(bool forceRefresh, string tag) + { + BillingServicesBinding.NPBillingServicesRestorePurchases(forceRefresh, tag); + } + + public override void TryClearingUnfinishedTransactions() + { + BillingServicesBinding.NPBillingServicesTryClearingUnfinishedTransactions(); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(RequestForProductsNativeCallback))] + private static void HandleRequestForProductsCallbackInternal(IntPtr productsPtr, int length, NativeError error, ref NativeArray invalidProductIds) + { + // send event + IBillingProduct[] products = BillingServicesUtility.CreateProductArray(productsPtr, length); + var invalidIdManagedArray = MarshalUtility.CreateStringArray(invalidProductIds.Pointer, invalidProductIds.Length); + var errorObj = error.Convert(BillingServicesError.kDomain); + s_staticInstance.SendRetrieveProductsCompleteEvent(products, invalidIdManagedArray, errorObj); + } + + [MonoPInvokeCallback(typeof(TransactionStateChangeNativeCallback))] + private static void HandlePaymentStateChangeCallbackInternal(IntPtr transactionsPtr, int length) + { + // send event + var transactions = BillingServicesUtility.CreateTransactionArray(transactionsPtr, length); + s_staticInstance.SendPaymentStateChangeEvent(transactions); + } + + [MonoPInvokeCallback(typeof(RestorePurchasesNativeCallback))] + private static void HandleRestorePurchasesCallbackInternal(IntPtr transactionsPtr, int length, NativeError error) + { + // send event + var transactions = BillingServicesUtility.CreateTransactionArray(transactionsPtr, length); + var errorObj = error.Convert(BillingServicesError.kDomain); + s_staticInstance.SendRestorePurchasesCompleteEvent(transactions, errorObj); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesInterface.cs.meta new file mode 100644 index 00000000..6dcf61ae --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5fe42b32a193c4749a8cd01f4bed0249 +timeCreated: 1552917669 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesUtility.cs new file mode 100644 index 00000000..a53f6a24 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesUtility.cs @@ -0,0 +1,192 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections.Generic; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +// ReSharper disable CheckNamespace +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + internal static class BillingServicesUtility + { + #region Converter methods + + public static IBillingProduct[] CreateProductArray(IntPtr productsPtr, int length) + { + // ReSharper disable once CoVariantArrayConversion + return MarshalUtility.ConvertNativeArrayItems( + arrayPtr: productsPtr, + length: length, + converter: (input) => + { + string platformId = MarshalUtility.ToString(input.IdentifierPtr); + var settings = BillingServices.FindProductDefinitionWithPlatformId(platformId); + if (settings == null) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified platform id: {platformId}."); + return null; + } + + return new BillingProduct( + nativeObjectPtr: input.NativeObjectPtr, + id: settings.Id, + platformId: platformId, + type: settings.ProductType, + localizedTitle: MarshalUtility.ToString(input.LocalizedTitlePtr), + localizedDescription: MarshalUtility.ToString(input.LocalizedDescriptionPtr), + price: new BillingPrice(input.Price.Value, input.Price.CurrencyCodePtr.AsString(), input.Price.CurrencySymbolPtr.AsString(), input.Price.LocalizedPricePtr.AsString()), + offers: new List(ConvertToBillingProductOffers(input.OffersArray)), + subscriptionInfo: ConvertToSubscriptionInfo(input.SubscriptionInfoPtr), + payouts: settings.Payouts); + }, + includeNullObjects: false); + } + + public static IBillingTransaction[] CreateTransactionArray(IntPtr transactionsPtr, int length) + { + // ReSharper disable once CoVariantArrayConversion + return MarshalUtility.ConvertNativeArrayItems( + arrayPtr: transactionsPtr, + length: length, + converter: (input) => + { + var nativeObjectPtr = input.NativeObjectPtr; + var verificationState = input.TransactionState == BillingTransactionState.Purchased ? BillingReceiptVerificationState.Success : BillingReceiptVerificationState.Failed; + var productPlatformId = MarshalUtility.ToString(input.ProductIdentifierPtr); + var productDefinition = BillingServices.FindProductDefinitionWithPlatformId(productPlatformId, returnObjectOnFail: true); + var product = BillingServices.GetProductWithId(productDefinition.Id, includeInactive: true); + + return new BillingTransaction( + nativeObjectPtr: nativeObjectPtr, + transactionId: MarshalUtility.ToString(input.IdentifierPtr), + product: product, + requestedQuantity: input.RequestedQuantity, + tag: input.PurchaseTagPtr.AsString(), + transactionState: input.TransactionState, + verificationState: verificationState, + date: input.DatePtr.AsDateTime(), + receipt: input.ReceiptPtr.AsString(), + environment: input.Environment, + applicationBundleIdentifier: input.ApplicationBundleIdentifierPtr.AsString(), + purchasedQuantity: input.PurchasedQuantity, + revocationInfo: input.RevocationDatePtr != IntPtr.Zero ? new BillingProductRevocationInfo(input.RevocationDatePtr.AsDateTime(), input.RevocationReason) : null, + subscriptionStatus: ConvertToSubscriptionStatus(input.SubscriptionStatusPtr), + rawData: input.RawDataPtr.AsString(), + error: input.ErrorData.Convert(domain: null)); + }, + includeNullObjects: false); + } + + public static IBillingPayment CreatePayment(IntPtr productIdentifierPtr, int quantity, IntPtr tagPtr) + { + string productPlatformId = MarshalUtility.ToString(productIdentifierPtr); + var productDefinition = BillingServices.FindProductDefinitionWithPlatformId(productPlatformId, returnObjectOnFail: true); + var tagStr = MarshalUtility.ToString(tagPtr); + + return new BillingPayment( + productId: productDefinition.Id, + productPlatformId: productPlatformId, + quantity: quantity, + tag: tagStr); + } + + private static BillingProductSubscriptionInfo ConvertToSubscriptionInfo(IntPtr subscriptionInfoDataPtr) + { + if(subscriptionInfoDataPtr == IntPtr.Zero) + { + return null; + } + + SKSubscriptionInfoData data = MarshalUtility.PtrToStructure(subscriptionInfoDataPtr); + + return new BillingProductSubscriptionInfo( + groupId: data.GroupIdentifierPtr.AsString(), + localizedGroupTitle: data.LocalizedGroupTitlePtr.AsString(), + level: data.Level, + period: new BillingPeriod(data.Period.Duration, (BillingPeriodUnit)data.Period.Unit) + ); + } + + private static BillingProductSubscriptionStatus ConvertToSubscriptionStatus(IntPtr subscriptionStatusDataPtr) + { + if(subscriptionStatusDataPtr == IntPtr.Zero) + { + return null; + } + + SKSubscriptionStatusData data = MarshalUtility.PtrToStructure(subscriptionStatusDataPtr); + + return new BillingProductSubscriptionStatus( + groupId: data.GroupIdentifierPtr.AsString(), + renewalInfo: ConvertToRenewalInfo(data.RenewalInfoPtr), + expirationDate: data.ExpirationDatePtr.AsDateTime(), + isUpgraded: data.IsUpgraded == 1, + appliedOfferIdentifier: data.AppliedOfferIdentifier.AsString(), + appliedOfferCategory: data.AppliedOfferCategory + ); + } + + private static BillingProductOfferPricingPhase[] ConvertToBillingProductOfferPricingPhases(NativeArray array) + { + return MarshalUtility.ConvertNativeArrayItems( + arrayPtr: array.Pointer, + length: array.Length, + converter: ConvertToBillingProductOfferPricingPhase, + includeNullObjects: false); + } + + private static BillingProductOfferPricingPhase ConvertToBillingProductOfferPricingPhase(SkProductOfferPricingPhaseData input) + { + return new BillingProductOfferPricingPhase( + paymentMode: (BillingProductOfferPaymentMode)input.PaymentMode, + price: new BillingPrice(input.Price.Value, input.Price.CurrencyCodePtr.AsString(), input.Price.CurrencySymbolPtr.AsString(), input.Price.LocalizedPricePtr.AsString()), + period: new BillingPeriod(input.Period.Duration, (BillingPeriodUnit)input.Period.Unit), + repeatCount: input.RepeatCount + ); + } + + private static BillingProductOffer ConvertToBillingProductOffer(SKProductOfferData data) + { + return new BillingProductOffer( + id: data.IdentifierPtr.AsString(), + category: (BillingProductOfferCategory) data.Category, + pricingPhases: new List(ConvertToBillingProductOfferPricingPhases(data.PricingPhasesArray)) + ); + } + + private static BillingProductOffer[] ConvertToBillingProductOffers(NativeArray promotionalOffersArray) + { + NativeArray array = promotionalOffersArray; + return MarshalUtility.ConvertNativeArrayItems( + arrayPtr: array.Pointer, + length: array.Length, + converter: ConvertToBillingProductOffer, + includeNullObjects: false); + } + + private static BillingProductSubscriptionRenewalInfo ConvertToRenewalInfo(IntPtr renewalInfoPtr) + { + if(renewalInfoPtr == IntPtr.Zero) + { + return null; + } + + SKSubscriptionRenewalInfoData data = MarshalUtility.PtrToStructure(renewalInfoPtr); + return new BillingProductSubscriptionRenewalInfo( + state: data.State, + applicableOfferIdentifier: data.ApplicableOfferIdentifierPtr.AsString(), + applicableOfferCategory: data.ApplicableOfferCategory, + lastRenewedDate: data.LastRenewedDatePtr.AsDateTime(), + lastRenewalId: data.LastRenewalIdPtr.AsString(), + isAutoRenewEnabled: data.IsAutoRenewEnabled == 1, + expirationReason: data.ExpirationReason == BillingProductSubscriptionExpirationReason.None ? null : data.ExpirationReason, + renewalDate: data.RenewalDatePtr.AsOptionalDateTime(), + gracePeriodExpirationDate: data.GracePeriodExpirationDatePtr.AsOptionalDateTime(), + priceIncreaseStatus: data.PriceIncreaseStatus + ); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesUtility.cs.meta new file mode 100644 index 00000000..e5cd086c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingServicesUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f85bfe0cb7d094a949a8a14698467b0f +timeCreated: 1552917669 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingTransaction.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingTransaction.cs new file mode 100644 index 00000000..916eef50 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingTransaction.cs @@ -0,0 +1,148 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + internal sealed class BillingTransaction : BillingTransactionBase + { + #region Fields + + private readonly int m_requestedQuantity; + private readonly string m_tag; + + private readonly BillingTransactionState m_transactionState; + private BillingReceiptVerificationState m_verificationState; + private readonly DateTime m_date; + private readonly string m_receipt; + private readonly BillingEnvironment m_environment; + private readonly string m_applicationBundleIdentifier; + private readonly BillingProductType m_productType; + private readonly int m_purchasedQuantity; + private readonly BillingProductRevocationInfo m_revocationInfo; + private readonly BillingProductSubscriptionStatus m_subscriptionStatus; + private readonly string m_rawData; + private readonly Error m_error; + + #endregion + + #region Constructors + + public BillingTransaction(IntPtr nativeObjectPtr, string transactionId, IBillingProduct product, + int requestedQuantity, string tag, + BillingTransactionState transactionState, + BillingReceiptVerificationState verificationState, + DateTime date, + string receipt, + BillingEnvironment environment, + string applicationBundleIdentifier, + int purchasedQuantity, + BillingProductRevocationInfo revocationInfo, + BillingProductSubscriptionStatus subscriptionStatus, + string rawData, + Error error) + : base(transactionId: transactionId, product: product) + { + // set properties + NativeObjectRef = new IosNativeObjectRef(nativeObjectPtr, false); + m_requestedQuantity = requestedQuantity; + m_tag = tag; + m_transactionState = transactionState; + m_verificationState = verificationState; + m_date = date; + m_receipt = receipt; + m_environment = environment; + m_applicationBundleIdentifier = applicationBundleIdentifier; + m_purchasedQuantity = purchasedQuantity; + m_revocationInfo = revocationInfo; + m_subscriptionStatus = subscriptionStatus; + m_rawData = rawData; + m_error = error; + } + + ~BillingTransaction() + { + Dispose(false); + } + + #endregion + + #region Base methods + + protected override DateTime GetTransactionDateUTCInternal() + { + return m_date; + } + + protected override BillingTransactionState GetTransactionStateInternal() + { + return m_transactionState; + } + + protected override BillingReceiptVerificationState GetReceiptVerificationStateInternal() + { + return m_verificationState; + } + + protected override void SetReceiptVerificationStateInternal(BillingReceiptVerificationState value) + { + m_verificationState = value; + } + + protected override string GetReceiptInternal() + { + return m_receipt; + } + + protected override Error GetErrorInternal() + { + return m_error; + } + + protected override BillingEnvironment GetEnvironmentInternal() + { + return m_environment; + } + + protected override string GetApplicationBundleIdentifierInternal() + { + return m_applicationBundleIdentifier; + } + + protected override int GetPurchasedQuantityInternal() + { + return m_purchasedQuantity; + } + + protected override BillingProductRevocationInfo GetRevocationInfoInternal() + { + return m_revocationInfo; + } + + protected override BillingProductSubscriptionStatus GetSubscriptionStatusInternal() + { + return m_subscriptionStatus; + } + + protected override string GetRawDataInternal() + { + return m_rawData; + } + + protected override int GetRequestedQuantityInternal() + { + return m_requestedQuantity; + } + + protected override string GetTagInternal() + { + return m_tag; + } + + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingTransaction.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingTransaction.cs.meta new file mode 100644 index 00000000..8c12c06d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/BillingTransaction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b3a07576f6e0447b99d3078537ac9226 +timeCreated: 1553091765 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/NativeDelegates.cs new file mode 100644 index 00000000..b87f492e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/NativeDelegates.cs @@ -0,0 +1,16 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + internal delegate void RequestForProductsNativeCallback(IntPtr productsPtr, int length, NativeError error, ref NativeArray invalidProductIds); + + internal delegate void TransactionStateChangeNativeCallback(IntPtr transactionsPtr, int length); + + internal delegate void RestorePurchasesNativeCallback(IntPtr transactionsPtr, int length, NativeError error); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/NativeDelegates.cs.meta new file mode 100644 index 00000000..5f62bac4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2ea0ababec9544ae19f3b984475fa795 +timeCreated: 1551957290 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingPeriodData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingPeriodData.cs new file mode 100644 index 00000000..1b4b0d26 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingPeriodData.cs @@ -0,0 +1,24 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKBillingPeriodData + { + public double Duration + { + get; + internal set; + } + + + public int Unit + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingPeriodData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingPeriodData.cs.meta new file mode 100644 index 00000000..347ab1f6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingPeriodData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 545efa9d79ddb4253b1de69b3135b592 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingProductOfferRedeemDetailsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingProductOfferRedeemDetailsData.cs new file mode 100644 index 00000000..52d9384f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingProductOfferRedeemDetailsData.cs @@ -0,0 +1,41 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKBillingProductOfferRedeemDetailsData + { + public string OfferId + { + get; + internal set; + } + + public string KeyId + { + get; + internal set; + } + + public string Nonce + { + get; + internal set; + } + + public string Signature + { + get; + internal set; + } + + public long Timestamp + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingProductOfferRedeemDetailsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingProductOfferRedeemDetailsData.cs.meta new file mode 100644 index 00000000..eee0bbc0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBillingProductOfferRedeemDetailsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f586f295a80a34ac493395557a977343 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBuyProductOptionsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBuyProductOptionsData.cs new file mode 100644 index 00000000..aeb6776b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBuyProductOptionsData.cs @@ -0,0 +1,30 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKBuyProductOptionsData + { + public int Quantity + { + get; + internal set; + } + + + public string Tag + { + get; + internal set; + } + + public SKBillingProductOfferRedeemDetailsData OfferRedeemDetails + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBuyProductOptionsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBuyProductOptionsData.cs.meta new file mode 100644 index 00000000..aac6a7c2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKBuyProductOptionsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a90cd9d6fcd24881ae499f845c4b23c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentData.cs new file mode 100644 index 00000000..6419ffb6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentData.cs @@ -0,0 +1,36 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKPaymentData + { + #region Properties + + public IntPtr ProductIdentifierPtr + { + get; + internal set; + } + + public int Quantity + { + get; + internal set; + } + + public IntPtr ApplicationUsernamePtr + { + get; + internal set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentData.cs.meta new file mode 100644 index 00000000..1b47f5dd --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 325c58d91b2904fc38bbb24b2c33a056 +timeCreated: 1551987117 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentTransactionData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentTransactionData.cs new file mode 100644 index 00000000..ae4e4712 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentTransactionData.cs @@ -0,0 +1,121 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKPaymentTransactionData + { + #region Properties + + public IntPtr NativeObjectPtr + { + get; + internal set; + } + + public IntPtr IdentifierPtr + { + get; + internal set; + } + + public IntPtr DatePtr + { + get; + internal set; + } + + public BillingTransactionState TransactionState + { + get; + internal set; + } + + public IntPtr ReceiptPtr + { + get; + internal set; + } + + public BillingEnvironment Environment + { + get; + internal set; + } + + public IntPtr ApplicationBundleIdentifierPtr + { + get; + internal set; + } + + public IntPtr ProductIdentifierPtr + { + get; + internal set; + } + + public BillingProductType ProductType + { + get; + internal set; + } + + public int RequestedQuantity + { + get; + internal set; + } + + public int PurchasedQuantity + { + get; + internal set; + } + + public IntPtr RevocationDatePtr + { + get; + internal set; + } + + public BillingProductRevocationReason RevocationReason + { + get; + internal set; + } + + public IntPtr PurchaseTagPtr + { + get; + internal set; + } + + public IntPtr SubscriptionStatusPtr + { + get; + internal set; + } + + public IntPtr RawDataPtr + { + get; + internal set; + } + + public NativeError ErrorData + { + get; + internal set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentTransactionData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentTransactionData.cs.meta new file mode 100644 index 00000000..eab9fa19 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPaymentTransactionData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fe85f0117275447f5a925a8ed35b9899 +timeCreated: 1551987117 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPriceData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPriceData.cs new file mode 100644 index 00000000..c20b814b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPriceData.cs @@ -0,0 +1,36 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Runtime.InteropServices; + + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKPriceData + { + public double Value + { + get; + internal set; + } + + public IntPtr CurrencyCodePtr + { + get; + internal set; + } + + public IntPtr CurrencySymbolPtr + { + get; + internal set; + } + + public IntPtr LocalizedPricePtr + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPriceData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPriceData.cs.meta new file mode 100644 index 00000000..152a0023 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKPriceData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e150deb9917e944ec93779dc51a603fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductData.cs new file mode 100644 index 00000000..69cdf1ef --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductData.cs @@ -0,0 +1,61 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKProductData + { + #region Properties + + public IntPtr NativeObjectPtr + { + get; + internal set; + } + + public IntPtr IdentifierPtr + { + get; + internal set; + } + + public IntPtr LocalizedTitlePtr + { + get; + internal set; + } + + public IntPtr LocalizedDescriptionPtr + { + get; + internal set; + } + + public SKPriceData Price + { + get; + internal set; + } + + public IntPtr SubscriptionInfoPtr + { + get; + internal set; + } + + public NativeArray OffersArray + { + get; + internal set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductData.cs.meta new file mode 100644 index 00000000..69fecb0e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7c9745194a22b41bb9661c9512b8ab15 +timeCreated: 1551987117 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductOfferData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductOfferData.cs new file mode 100644 index 00000000..e433ffb4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductOfferData.cs @@ -0,0 +1,40 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Runtime.InteropServices; +using VoxelBusters.CoreLibrary.NativePlugins; + + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKProductOfferData + { + #region Properties + + public IntPtr NativeObjectPtr + { + get; + internal set; + } + + public IntPtr IdentifierPtr + { + get; + internal set; + } + + public int Category + { + get; + internal set; + } + public NativeArray PricingPhasesArray + { + get; + internal set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductOfferData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductOfferData.cs.meta new file mode 100644 index 00000000..382a9938 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKProductOfferData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c9b931366f5b54775a27683d5c7af62b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionInfoData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionInfoData.cs new file mode 100644 index 00000000..03fd0562 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionInfoData.cs @@ -0,0 +1,49 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKSubscriptionInfoData + { + #region Properties + + public IntPtr NativeObjectPtr + { + get; + internal set; + } + + public IntPtr GroupIdentifierPtr + { + get; + internal set; + } + + public IntPtr LocalizedGroupTitlePtr + { + get; + internal set; + } + + public int Level + { + get; + internal set; + } + + public SKBillingPeriodData Period + { + get; + internal set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionInfoData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionInfoData.cs.meta new file mode 100644 index 00000000..be53c81c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionInfoData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f417601a400b0409b8abb43da50d7e64 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionRenewalInfoData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionRenewalInfoData.cs new file mode 100644 index 00000000..b858f222 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionRenewalInfoData.cs @@ -0,0 +1,78 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKSubscriptionRenewalInfoData + { + #region Properties + + public BillingProductSubscriptionRenewalState State + { + get; + internal set; + } + + public IntPtr ApplicableOfferIdentifierPtr + { + get; + internal set; + } + + public BillingProductOfferCategory ApplicableOfferCategory + { + get; + internal set; + } + + public IntPtr LastRenewedDatePtr + { + get; + internal set; + } + + public IntPtr LastRenewalIdPtr + { + get; + internal set; + } + + public int IsAutoRenewEnabled + { + get; + internal set; + } + + public BillingProductSubscriptionExpirationReason ExpirationReason + { + get; + internal set; + } + + public IntPtr RenewalDatePtr + { + get; + internal set; + } + + public IntPtr GracePeriodExpirationDatePtr + { + get; + internal set; + } + + public BillingProductSubscriptionPriceIncreaseStatus PriceIncreaseStatus + { + get; + internal set; + } + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionRenewalInfoData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionRenewalInfoData.cs.meta new file mode 100644 index 00000000..1172247a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionRenewalInfoData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c5f81bd5e789460cab83e3e2a1f7c20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionStatusData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionStatusData.cs new file mode 100644 index 00000000..14a4a1fb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionStatusData.cs @@ -0,0 +1,54 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SKSubscriptionStatusData + { + #region Properties + + public IntPtr GroupIdentifierPtr + { + get; + internal set; + } + public IntPtr RenewalInfoPtr + { + get; + internal set; + } + + public IntPtr ExpirationDatePtr + { + get; + internal set; + } + + public int IsUpgraded + { + get; + internal set; + } + + public IntPtr AppliedOfferIdentifier + { + get; + internal set; + } + + public BillingProductOfferCategory AppliedOfferCategory + { + get; + internal set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionStatusData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionStatusData.cs.meta new file mode 100644 index 00000000..cb3e9cee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SKSubscriptionStatusData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97a5fc499897048c6aab0fc7268157e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SkProductOfferPricingPhaseData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SkProductOfferPricingPhaseData.cs new file mode 100644 index 00000000..977719f9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SkProductOfferPricingPhaseData.cs @@ -0,0 +1,34 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.BillingServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct SkProductOfferPricingPhaseData + { + public int PaymentMode + { + get; + internal set; + } + + public SKPriceData Price + { + get; + internal set; + } + + public SKBillingPeriodData Period + { + get; + internal set; + } + + public int RepeatCount + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SkProductOfferPricingPhaseData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SkProductOfferPricingPhaseData.cs.meta new file mode 100644 index 00000000..02fae0fa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/BillingServices/SkProductOfferPricingPhaseData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e3f24f33f4e04535a2444f4a878c13f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices.meta new file mode 100644 index 00000000..cce7d082 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e4f85fbddb92a466b94539be3f67ea2e +folderAsset: yes +timeCreated: 1550517425 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountData.cs new file mode 100644 index 00000000..472a3171 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountData.cs @@ -0,0 +1,24 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct CKAccountData + { + #region Properties + + public IntPtr AccountIdentifierPtr + { + get; + private set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountData.cs.meta new file mode 100644 index 00000000..3425ed5f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6daa653081824402291061a78510dc58 +timeCreated: 1552917993 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountStatus.cs new file mode 100644 index 00000000..92dcc607 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountStatus.cs @@ -0,0 +1,19 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.iOS +{ + internal enum CKAccountStatus : long + { + CKAccountStatusCouldNotDetermine = 0, + + CKAccountStatusAvailable = 1, + + CKAccountStatusRestricted = 2, + + CKAccountStatusNoAccount = 3, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountStatus.cs.meta new file mode 100644 index 00000000..918fdf74 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CKAccountStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f7b14f20454ac48b7b752e9d8e930d77 +timeCreated: 1550515665 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesBinding.cs new file mode 100644 index 00000000..cc597688 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesBinding.cs @@ -0,0 +1,73 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.iOS +{ + internal static class CloudServicesBinding + { + [DllImport("__Internal")] + public static extern void NPCloudServicesRegisterCallbacks(UserChangeNativeCallback userChangeCallback, SavedDataChangeNativeCallback savedDataChangeCallback); + + [DllImport("__Internal")] + public static extern void NPCloudServicesInit(); + + [DllImport("__Internal")] + public static extern bool NPCloudServicesGetBool(string key); + + [DllImport("__Internal")] + public static extern long NPCloudServicesGetLong(string key); + + [DllImport("__Internal")] + public static extern double NPCloudServicesGetDouble(string key); + + [DllImport("__Internal")] + public static extern string NPCloudServicesGetString(string key); + + [DllImport("__Internal")] + public static extern IntPtr NPCloudServicesGetByteArray(string key, out int length); + + [DllImport("__Internal")] + public static extern string NPCloudServicesGetArray(string key); + + [DllImport("__Internal")] + public static extern string NPCloudServicesGetDictionary(string key); + + [DllImport("__Internal")] + public static extern bool NPCloudServicesHasKey(string key); + + [DllImport("__Internal")] + public static extern void NPCloudServicesSetBool(string key, bool value); + + [DllImport("__Internal")] + public static extern void NPCloudServicesSetLong(string key, long value); + + [DllImport("__Internal")] + public static extern void NPCloudServicesSetDouble(string key, double value); + + [DllImport("__Internal")] + public static extern void NPCloudServicesSetString(string key, string value); + + [DllImport("__Internal")] + public static extern void NPCloudServicesSetByteArray(string key, byte[] value, int length); + + [DllImport("__Internal")] + public static extern void NPCloudServicesSetArray(string key, string valueAsJSONStr); + + [DllImport("__Internal")] + public static extern void NPCloudServicesSetDictionary(string key, string valueAsJSONStr); + + [DllImport("__Internal")] + public static extern void NPCloudServicesRemoveKey(string key); + + [DllImport("__Internal")] + public static extern bool NPCloudServicesSynchronize(); + + [DllImport("__Internal")] + public static extern string NPCloudServicesSnapshot(); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesBinding.cs.meta new file mode 100644 index 00000000..eda8c91a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2db0a40933aa6461e84ac70aa2d5cb2a +timeCreated: 1551940728 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesInterface.cs new file mode 100644 index 00000000..08a4df6c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesInterface.cs @@ -0,0 +1,176 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.iOS +{ + public sealed class CloudServicesInterface : NativeCloudServicesInterfaceBase, INativeCloudServicesInterface + { +#region Static fields + + private static CloudServicesInterface s_sharedInstance = null; + +#endregion + +#region Constructors + + static CloudServicesInterface() + { + // initialise component + CloudServicesBinding.NPCloudServicesRegisterCallbacks(userChangeCallback: HandleUserChangeNativeCallback, savedDataChangeCallback: HandleSavedDataChangeNativeCallback); + CloudServicesBinding.NPCloudServicesInit(); + } + + public CloudServicesInterface() + : base(isAvailable: true) + { + // cache instance + s_sharedInstance = this; + } + + ~CloudServicesInterface() + { + Dispose(false); + } + +#endregion + +#region Base class methods + + public override bool GetBool(string key) + { + return CloudServicesBinding.NPCloudServicesGetBool(key); + } + + public override long GetLong(string key) + { + return CloudServicesBinding.NPCloudServicesGetLong(key); + } + + public override double GetDouble(string key) + { + return CloudServicesBinding.NPCloudServicesGetDouble(key); + } + + public override string GetString(string key) + { + return CloudServicesBinding.NPCloudServicesGetString(key); + } + + public override byte[] GetByteArray(string key) + { + int length; + IntPtr byteArrayPtr = CloudServicesBinding.NPCloudServicesGetByteArray(key, out length); + + // Copy bytes to managed memory + var bytes = new byte[length]; + Marshal.Copy(byteArrayPtr, bytes, 0, length); + return bytes; + } + + public override bool HasKey(string key) + { + return CloudServicesBinding.NPCloudServicesHasKey(key); + } + + public override void SetBool(string key, bool value) + { + CloudServicesBinding.NPCloudServicesSetBool(key, value); + } + + public override void SetLong(string key, long value) + { + CloudServicesBinding.NPCloudServicesSetLong(key, value); + } + + public override void SetDouble(string key, double value) + { + CloudServicesBinding.NPCloudServicesSetDouble(key, value); + } + + public override void SetString(string key, string value) + { + CloudServicesBinding.NPCloudServicesSetString(key, value); + } + + public override void SetByteArray(string key, byte[] value) + { + int length = (null == value) ? -1 : value.Length; + CloudServicesBinding.NPCloudServicesSetByteArray(key, value, length); + } + + public override void RemoveKey(string key) + { + CloudServicesBinding.NPCloudServicesRemoveKey(key); + } + + public override void Synchronize(SynchronizeInternalCallback callback) + { + bool status = CloudServicesBinding.NPCloudServicesSynchronize(); + + // send result + callback(status, null); + } + + public override IDictionary GetSnapshot() + { + string jsonStr = CloudServicesBinding.NPCloudServicesSnapshot(); + if (jsonStr != null) + { + return (IDictionary)ExternalServiceProvider.JsonServiceProvider.FromJson(jsonStr); + } + + return null; + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + if (disposing) + { + // reset shared instance + if (this == s_sharedInstance) + { + s_sharedInstance = null; + } + } + + base.Dispose(disposing); + } + +#endregion + +#region Native callback methods + + [MonoPInvokeCallback(typeof(UserChangeNativeCallback))] + private static void HandleUserChangeNativeCallback(ref CKAccountData accountData, NativeError error) + { + string userId = MarshalUtility.ToString(accountData.AccountIdentifierPtr); + var status = (userId == null) ? CloudUserAccountStatus.NoAccount : CloudUserAccountStatus.Available; + var errorObj = error.Convert(CloudServicesError.kDomain); + s_sharedInstance.SendUserChangeEvent(new CloudUser(userId, status), errorObj); + } + + [MonoPInvokeCallback(typeof(SavedDataChangeNativeCallback))] + private static void HandleSavedDataChangeNativeCallback(int changeReason, ref NativeArray changedKeys) + { + var reasonCode = CloudServicesUtility.ConvertToCloudSavedDataChangeReasonCode((NSUbiquitousKeyValueStoreChange)changeReason); + var changedKeysManagedArray = MarshalUtility.CreateStringArray(changedKeys.Pointer, changedKeys.Length); + s_sharedInstance.SendSavedDataChangeEvent(reasonCode, changedKeysManagedArray); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesInterface.cs.meta new file mode 100644 index 00000000..ac8dc008 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b21912c99c9a4249b75c47b300293b2 +timeCreated: 1553345241 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesUtility.cs new file mode 100644 index 00000000..481a106e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesUtility.cs @@ -0,0 +1,59 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.iOS +{ + internal static class CloudServicesUtility + { + #region Converter methods + + public static CloudUserAccountStatus ConvertToCloudUserAccountStatus(CKAccountStatus accountStatus) + { + switch (accountStatus) + { + case CKAccountStatus.CKAccountStatusAvailable: + return CloudUserAccountStatus.Available; + + case CKAccountStatus.CKAccountStatusNoAccount: + return CloudUserAccountStatus.NoAccount; + + case CKAccountStatus.CKAccountStatusRestricted: + return CloudUserAccountStatus.Restricted; + + case CKAccountStatus.CKAccountStatusCouldNotDetermine: + return CloudUserAccountStatus.CouldNotDetermine; + + default: + throw VBException.SwitchCaseNotImplemented(accountStatus); + } + } + + public static CloudSavedDataChangeReasonCode ConvertToCloudSavedDataChangeReasonCode(NSUbiquitousKeyValueStoreChange changeCode) + { + switch (changeCode) + { + case NSUbiquitousKeyValueStoreChange.NSUbiquitousKeyValueStoreAccountChange: + return CloudSavedDataChangeReasonCode.AccountChange; + + case NSUbiquitousKeyValueStoreChange.NSUbiquitousKeyValueStoreInitialSyncChange: + return CloudSavedDataChangeReasonCode.InitialSyncChange; + + case NSUbiquitousKeyValueStoreChange.NSUbiquitousKeyValueStoreQuotaViolationChange: + return CloudSavedDataChangeReasonCode.QuotaViolationChange; + + case NSUbiquitousKeyValueStoreChange.NSUbiquitousKeyValueStoreServerChange: + return CloudSavedDataChangeReasonCode.ServerChange; + + default: + throw VBException.SwitchCaseNotImplemented(changeCode); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesUtility.cs.meta new file mode 100644 index 00000000..3be0644a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/CloudServicesUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0f2b11ed6285f416bb0a6a9127364add +timeCreated: 1552917993 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NSUbiquitousKeyValueStoreChange.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NSUbiquitousKeyValueStoreChange.cs new file mode 100644 index 00000000..1c7b7934 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NSUbiquitousKeyValueStoreChange.cs @@ -0,0 +1,19 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.iOS +{ + internal enum NSUbiquitousKeyValueStoreChange : long + { + NSUbiquitousKeyValueStoreServerChange = 0, + + NSUbiquitousKeyValueStoreInitialSyncChange = 1, + + NSUbiquitousKeyValueStoreQuotaViolationChange = 2, + + NSUbiquitousKeyValueStoreAccountChange = 3, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NSUbiquitousKeyValueStoreChange.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NSUbiquitousKeyValueStoreChange.cs.meta new file mode 100644 index 00000000..5c14617c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NSUbiquitousKeyValueStoreChange.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 83c27fceef9ff4b608d4cf42afaf91a1 +timeCreated: 1550516603 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NativeDelegates.cs new file mode 100644 index 00000000..4d0b70c4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NativeDelegates.cs @@ -0,0 +1,13 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.CloudServicesCore.iOS +{ + internal delegate void UserChangeNativeCallback(ref CKAccountData accountData, NativeError error); + + internal delegate void SavedDataChangeNativeCallback(int changeReason, ref NativeArray changedKeys); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NativeDelegates.cs.meta new file mode 100644 index 00000000..ee91eab6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/CloudServices/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cf326caa8e0b54904ad98d8ad11eb058 +timeCreated: 1552917993 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices.meta new file mode 100644 index 00000000..6d57cdd2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4d1ed148538374035838001775066c53 +folderAsset: yes +timeCreated: 1586355942 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesBinding.cs new file mode 100644 index 00000000..b0002bd9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesBinding.cs @@ -0,0 +1,15 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore.iOS +{ + internal static class DeepLinkServicesBinding + { + [DllImport("__Internal")] + public static extern void NPDeepLinkServicesRegisterCallbacks(HandleCustomSchemeUrlNativeCallback handleCustomSchemeUrlCallback, HandleUniversalLinkNativeCallback handleUniversalLinkCallback); + + [DllImport("__Internal")] + public static extern void NPDeepLinkServicesInit(); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesBinding.cs.meta new file mode 100644 index 00000000..99ac23ca --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fb3ae0c6e30eb4f17aaf7fabb6177e4a +timeCreated: 1586356777 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesInterface.cs new file mode 100644 index 00000000..e6400a69 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesInterface.cs @@ -0,0 +1,71 @@ +#if UNITY_IOS || UNITY_TVOS +using AOT; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore.iOS +{ + public sealed class DeepLinkServicesInterface : NativeDeepLinkServicesInterfaceBase, INativeDeepLinkServicesInterface + { + #region Static fields + + private static bool s_initialised = false; + + private static DeepLinkServicesInterface s_instance = null; + + #endregion + + #region Constructors + + public DeepLinkServicesInterface() + : base(isAvailable: true) + { + if (!s_initialised) + { + s_initialised = true; + DeepLinkServicesBinding.NPDeepLinkServicesRegisterCallbacks(HandleCustomSchemeUrl, HandleUniversalLink); + } + + // save reference + s_instance = this; + } + + #endregion + + #region Base methods + + public override void Init() + { + DeepLinkServicesBinding.NPDeepLinkServicesInit(); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(HandleCustomSchemeUrlNativeCallback))] + private static bool HandleCustomSchemeUrl(string url) + { + if (s_instance.CanHandleCustomSchemeUrl(url)) + { + s_instance.SendCustomSchemeUrlOpenEvent(url); + return true; + } + + return false; + } + + [MonoPInvokeCallback(typeof(HandleUniversalLinkNativeCallback))] + private static bool HandleUniversalLink(string url) + { + if (s_instance.CanHandleUniversalLink(url)) + { + s_instance.SendUniversalLinkOpenEvent(url); + return true; + } + + return false; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesInterface.cs.meta new file mode 100644 index 00000000..95f05ccc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/DeepLinkServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84d9fbaf543a44621acdadb92e9e2523 +timeCreated: 1586356777 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/NativeDelegates.cs new file mode 100644 index 00000000..ef268c18 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/NativeDelegates.cs @@ -0,0 +1,12 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.DeepLinkServicesCore.iOS +{ + internal delegate bool HandleCustomSchemeUrlNativeCallback(string url); + + internal delegate bool HandleUniversalLinkNativeCallback(string url); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/NativeDelegates.cs.meta new file mode 100644 index 00000000..5a38bc59 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/DeepLinkServices/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 85f403361abbe479cac8aa06b72efcdb +timeCreated: 1553345360 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras.meta new file mode 100644 index 00000000..f47f9114 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1b378d07e606642a3ba67d77bc89c636 +folderAsset: yes +timeCreated: 1577099726 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras/NativeUtilityInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras/NativeUtilityInterface.cs new file mode 100644 index 00000000..e72d8364 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras/NativeUtilityInterface.cs @@ -0,0 +1,43 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.ExtrasCore.iOS +{ + public class NativeUtilityInterface : NativeUtilityInterfaceBase + { + #region Binding methods + + [DllImport("__Internal")] + private static extern void NPStoreReviewRequestReview(); + + #endregion + + #region Constructors + + public NativeUtilityInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override void OpenAppStorePage(string applicationId) + { + string storeURL = string.Format("itms-apps://itunes.apple.com/app/id{0}?action=write-review", applicationId); + Application.OpenURL(storeURL); + } + + public override void OpenApplicationSettings() + { + IosNativePluginsUtility.OpenApplicationSettings(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras/NativeUtilityInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras/NativeUtilityInterface.cs.meta new file mode 100644 index 00000000..34b1ee3d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/Extras/NativeUtilityInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 976f6d33f58af4d5ba839dfa946b0451 +timeCreated: 1577101688 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices.meta new file mode 100644 index 00000000..f691482b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 960663167b44c4bf1bb4865d9deeb452 +folderAsset: yes +timeCreated: 1552918044 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Achievement.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Achievement.cs new file mode 100644 index 00000000..d1f132b1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Achievement.cs @@ -0,0 +1,168 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal sealed class Achievement : AchievementBase + { + #region Constructors + + static Achievement() + { + // register callbacks + AchievementBinding.NPAchievementRegisterCallbacks(HandleLoadAchievementsCallbackInternal, HandleReportProgressCallbackInternal); + } + + public Achievement(IntPtr nativePtr, string id, string platformId) + : base(id, platformId) + { + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr); + } + + public Achievement(string id, string platformId) + : base(id, platformId) + { + var nativePtr = AchievementBinding.NPAchievementCreate(platformId); + + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + } + + ~Achievement() + { + Dispose(false); + } + + #endregion + + #region Static methods + + private static Achievement[] CreateAchievementArray(ref NativeArray nativeArray) + { + return MarshalUtility.ConvertNativeArrayItems( + arrayPtr: nativeArray.Pointer, + length: nativeArray.Length, + converter: (input) => + { + string platformId = AchievementBinding.NPAchievementGetId(input); + var settings = GameServices.FindAchievementDefinitionWithPlatformId(platformId); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified platform id: {platformId}."); + return null; + } + + return new Achievement(nativePtr: input, id: settings.Id, platformId: platformId); + }, + includeNullObjects: false); + } + + public static void SetCanShowBannerOnCompletion(bool value) + { + AchievementBinding.NPAchievementSetCanShowBannerOnCompletion(value); + } + + public static void LoadAchievements(LoadAchievementsInternalCallback callback) + { + IntPtr tagPtr = MarshalUtility.GetIntPtr(callback); + AchievementBinding.NPAchievementLoadAchievements(tagPtr); + } + + public static void ShowAchievementView(ViewClosedInternalCallback callback) + { + AchievementBinding.NPAchievementShowView(MarshalUtility.GetIntPtr(callback)); + } + + #endregion + + #region Base class methods + + protected override double GetPercentageCompletedInternal() + { + return AchievementBinding.NPAchievementGetPercentageCompleted(AddrOfNativeObject()); + } + + protected override void SetPercentageCompletedInternal(double value) + { + AchievementBinding.NPAchievementSetPercentageCompleted(AddrOfNativeObject(), value); + } + + protected override bool GetIsCompletedInternal() + { + return AchievementBinding.NPAchievementGetIsCompleted(AddrOfNativeObject()); + } + + protected override DateTime GetLastReportedDateInternal() + { + string dateStr = AchievementBinding.NPAchievementGetLastReportedDate(AddrOfNativeObject()); + return IosNativePluginsUtility.ParseDateTimeStringInUTCFormat(dateStr); + } + + protected override void ReportProgressInternal(ReportAchievementProgressInternalCallback callback) + { + IntPtr tagPtr = MarshalUtility.GetIntPtr(callback); + AchievementBinding.NPAchievementReportProgress(AddrOfNativeObject(), tagPtr); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(GameServicesLoadArrayNativeCallback))] + private static void HandleLoadAchievementsCallbackInternal(ref NativeArray nativeArray, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var achievements = CreateAchievementArray(ref nativeArray); + var errorObj = error.Convert(GameServicesError.kDomain); + ((LoadAchievementsInternalCallback)tagHandle.Target)(achievements, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GameServicesReportNativeCallback))] + private static void HandleReportProgressCallbackInternal(NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var errorObj = error.Convert(GameServicesError.kDomain); + ((ReportAchievementProgressInternalCallback)tagHandle.Target)((errorObj == null), errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Achievement.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Achievement.cs.meta new file mode 100644 index 00000000..efcd5a27 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Achievement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e02c2542bd7944ea685aea2182fcfda7 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementBinding.cs new file mode 100644 index 00000000..4909f2e2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementBinding.cs @@ -0,0 +1,46 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class AchievementBinding + { + [DllImport("__Internal")] + public static extern void NPAchievementRegisterCallbacks(GameServicesLoadArrayNativeCallback loadAchievementsCallback, GameServicesReportNativeCallback reportAchievementCallback); + + [DllImport("__Internal")] + public static extern void NPAchievementSetCanShowBannerOnCompletion(bool showsBannerOnCompletion); + + [DllImport("__Internal")] + public static extern void NPAchievementLoadAchievements(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern IntPtr NPAchievementCreate(string id); + + [DllImport("__Internal")] + public static extern string NPAchievementGetId(IntPtr achievementPtr); + + [DllImport("__Internal")] + public static extern double NPAchievementGetPercentageCompleted(IntPtr achievementPtr); + + [DllImport("__Internal")] + public static extern void NPAchievementSetPercentageCompleted(IntPtr achievementPtr, double percentComplete); + + [DllImport("__Internal")] + public static extern bool NPAchievementGetIsCompleted(IntPtr achievementPtr); + + [DllImport("__Internal")] + public static extern string NPAchievementGetLastReportedDate(IntPtr achievementPtr); + + [DllImport("__Internal")] + public static extern void NPAchievementReportProgress(IntPtr achievementPtr, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPAchievementShowView(IntPtr tagPtr); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementBinding.cs.meta new file mode 100644 index 00000000..c5bb6420 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c28de1bc858ca40929dd4dc2e3b81a34 +timeCreated: 1554372544 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescription.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescription.cs new file mode 100644 index 00000000..e4a1a307 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescription.cs @@ -0,0 +1,165 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.EssentialKit; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal sealed class AchievementDescription : AchievementDescriptionBase + { + #region Fields + + private string m_title; + + private string m_unachievedDescription; + + private string m_achievedDescription; + + private long m_maximumPoints; + + private bool m_isHidden; + + private bool m_isReplayable; + + #endregion + + #region Constructors + + static AchievementDescription() + { + // register callbacks + AchievementDescriptionBinding.NPAchievementDescriptionRegisterCallbacks(HandleLoadAchievementDescriptionsNativeCallback, NativeCallbackResponder.HandleLoadImageNativeCallback); + } + + public AchievementDescription(IntPtr nativePtr, string id, string platformId, int numOfStepsToUnlock) + : base(id: id, platformId: platformId, numOfStepsToUnlock: numOfStepsToUnlock) + { + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr); + m_title = AchievementDescriptionBinding.NPAchievementDescriptionGetTitle(nativePtr); + m_unachievedDescription = AchievementDescriptionBinding.NPAchievementDescriptionGetUnachievedDescription(nativePtr); + m_achievedDescription = AchievementDescriptionBinding.NPAchievementDescriptionGetAchievedDescription(nativePtr); + m_maximumPoints = AchievementDescriptionBinding.NPAchievementDescriptionGetMaximumPoints(nativePtr); + m_isHidden = AchievementDescriptionBinding.NPAchievementDescriptionGetHidden(nativePtr); + m_isReplayable = AchievementDescriptionBinding.NPAchievementDescriptionGetReplayable(nativePtr); + } + + ~AchievementDescription() + { + Dispose(false); + } + + #endregion + + #region Static methods + + private static AchievementDescription[] CreateAchievementDescriptionArray(ref NativeArray nativeArray) + { + return MarshalUtility.ConvertNativeArrayItems( + arrayPtr: nativeArray.Pointer, + length: nativeArray.Length, + converter: (input) => + { + string platformId = AchievementDescriptionBinding.NPAchievementDescriptionGetId(input); + var settings = GameServices.FindAchievementDefinitionWithPlatformId(platformId); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified platform id: {platformId}."); + return null; + } + + return new AchievementDescription(nativePtr: input, id: settings.Id, platformId: platformId, numOfStepsToUnlock: settings.NumOfStepsToUnlock); + }, + includeNullObjects: false); + } + + public static void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback) + { + IntPtr tagPtr = MarshalUtility.GetIntPtr(callback); + AchievementDescriptionBinding.NPAchievementDescriptionLoadDescriptions(tagPtr); + } + + #endregion + + #region Base class methods + + protected override string GetTitleInternal() + { + return m_title; + } + + protected override string GetUnachievedDescriptionInternal() + { + return m_unachievedDescription; + } + + protected override string GetAchievedDescriptionInternal() + { + return m_achievedDescription; + } + + protected override long GetMaximumPointsInternal() + { + return m_maximumPoints; + } + + protected override bool GetIsHiddenInternal() + { + return m_isHidden; + } + + protected override bool GetIsReplayableInternal() + { + return m_isReplayable; + } + + protected override void LoadIncompleteAchievementImageInternal(LoadImageInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + AchievementDescriptionBinding.NPAchievementDescriptionLoadIncompleteAchievementImage(AddrOfNativeObject(), tagPtr); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + AchievementDescriptionBinding.NPAchievementDescriptionLoadImage(AddrOfNativeObject(), tagPtr); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(GameServicesLoadArrayNativeCallback))] + private static void HandleLoadAchievementDescriptionsNativeCallback(ref NativeArray nativeArray, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var descriptions = CreateAchievementDescriptionArray(ref nativeArray); + var errorObj = error.Convert(GameServicesError.kDomain); + ((LoadAchievementDescriptionsInternalCallback)tagHandle.Target)(descriptions, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescription.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescription.cs.meta new file mode 100644 index 00000000..2734441f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescription.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c1c76516d8003423aa98483a69a2a914 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescriptionBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescriptionBinding.cs new file mode 100644 index 00000000..44d8887f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescriptionBinding.cs @@ -0,0 +1,46 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class AchievementDescriptionBinding + { + [DllImport("__Internal")] + public static extern void NPAchievementDescriptionRegisterCallbacks(GameServicesLoadArrayNativeCallback loadDescriptionsCallback, GameServicesLoadImageNativeCallback loadImageCallback); + + [DllImport("__Internal")] + public static extern void NPAchievementDescriptionLoadDescriptions(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern string NPAchievementDescriptionGetId(IntPtr descriptionPtr); + + [DllImport("__Internal")] + public static extern string NPAchievementDescriptionGetTitle(IntPtr descriptionPtr); + + [DllImport("__Internal")] + public static extern string NPAchievementDescriptionGetAchievedDescription(IntPtr descriptionPtr); + + [DllImport("__Internal")] + public static extern string NPAchievementDescriptionGetUnachievedDescription(IntPtr descriptionPtr); + + [DllImport("__Internal")] + public static extern long NPAchievementDescriptionGetMaximumPoints(IntPtr descriptionPtr); + + [DllImport("__Internal")] + public static extern bool NPAchievementDescriptionGetHidden(IntPtr descriptionPtr); + + [DllImport("__Internal")] + public static extern bool NPAchievementDescriptionGetReplayable(IntPtr descriptionPtr); + + [DllImport("__Internal")] + public static extern void NPAchievementDescriptionLoadIncompleteAchievementImage(IntPtr descriptionPtr, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPAchievementDescriptionLoadImage(IntPtr descriptionPtr, IntPtr tagPtr); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescriptionBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescriptionBinding.cs.meta new file mode 100644 index 00000000..4ec01706 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/AchievementDescriptionBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5533661bdf7544492a83981c666e09b9 +timeCreated: 1554372544 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardPlayerScope.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardPlayerScope.cs new file mode 100644 index 00000000..ecac8b06 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardPlayerScope.cs @@ -0,0 +1,15 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal enum GKLeaderboardPlayerScope : long + { + GKLeaderboardPlayerScopeGlobal = 0, + + GKLeaderboardPlayerScopeFriendsOnly + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardPlayerScope.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardPlayerScope.cs.meta new file mode 100644 index 00000000..f549bb9e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardPlayerScope.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 404c40a9af93d485a8a6b4b96045831d +timeCreated: 1553238443 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardTimeScope.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardTimeScope.cs new file mode 100644 index 00000000..8c95c6ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardTimeScope.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal enum GKLeaderboardTimeScope : long + { + GKLeaderboardTimeScopeToday = 0, + + GKLeaderboardTimeScopeWeek, + + GKLeaderboardTimeScopeAllTime + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardTimeScope.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardTimeScope.cs.meta new file mode 100644 index 00000000..2f7722a5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLeaderboardTimeScope.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 884b68d8f8aca4638955022c2c227376 +timeCreated: 1553238451 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLocalPlayerAuthState.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLocalPlayerAuthState.cs new file mode 100644 index 00000000..d397cfe3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLocalPlayerAuthState.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal enum GKLocalPlayerAuthState : long + { + GKLocalPlayerAuthStateNotFound, + + GKLocalPlayerAuthStateAuthenticating, + + GKLocalPlayerAuthStateAvailable, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLocalPlayerAuthState.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLocalPlayerAuthState.cs.meta new file mode 100644 index 00000000..9aee6120 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GKLocalPlayerAuthState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 99acfd7c1901a4512aee9d86d5da858e +timeCreated: 1564034641 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterBinding.cs new file mode 100644 index 00000000..c093825f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterBinding.cs @@ -0,0 +1,22 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class GameCenterBinding + { + [DllImport("__Internal")] + public static extern void NPGameServicesSetViewClosedCallback(GameServicesViewClosedNativeCallback viewClosedCallback); + + [DllImport("__Internal")] + public static extern void NPGameServicesLoadServerCredentials(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPGameServicesLoadServerCredentialsCompleteCallback(GameServicesLoadServerCredentialsNativeCallback serverCredentialsCallback); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterBinding.cs.meta new file mode 100644 index 00000000..106f2a75 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9642451898b564a6ea9960b4d77fb500 +timeCreated: 1578708965 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterInterface.cs new file mode 100644 index 00000000..864bb4f1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterInterface.cs @@ -0,0 +1,101 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + public sealed class GameCenterInterface : NativeGameServicesInterfaceBase + { + #region Constructors + + static GameCenterInterface() + { + GameCenterBinding.NPGameServicesSetViewClosedCallback(NativeCallbackResponder.HandleViewClosedNativeCallback); + GameCenterBinding.NPGameServicesLoadServerCredentialsCompleteCallback(NativeCallbackResponder.HandleLoadServerCredentialsNativeCallback); + } + + public GameCenterInterface() + : base(isAvailable: true) + { } + + #endregion + + #region INativeGameServicesInterface implementation + + public override void LoadLeaderboards(LeaderboardDefinition[] leaderboardDefinitions, LoadLeaderboardsInternalCallback callback) + { + var leaderboardIds = Array.ConvertAll(leaderboardDefinitions, (item) => item.GetPlatformIdForActivePlatform()); + Leaderboard.LoadLeaderboards(leaderboardIds, callback); + } + + public override void ShowLeaderboard(string leaderboardId, string leaderboardPlatformId, LeaderboardTimeScope timeScope, ViewClosedInternalCallback callback) + { + Leaderboard.ShowLeaderboardView(leaderboardPlatformId, timeScope, callback); + } + + public override ILeaderboard CreateLeaderboard(string id, string platformId) + { + return new Leaderboard(id, platformId); + } + + public override void LoadAchievementDescriptions(LoadAchievementDescriptionsInternalCallback callback) + { + AchievementDescription.LoadAchievementDescriptions(callback); + } + + public override void LoadAchievements(LoadAchievementsInternalCallback callback) + { + Achievement.LoadAchievements(callback); + } + + public override void ShowAchievements(ViewClosedInternalCallback callback) + { + Achievement.ShowAchievementView(callback); + } + + public override void SetCanShowAchievementCompletionBanner(bool value) + { + Achievement.SetCanShowBannerOnCompletion(value); + } + + public override IAchievement CreateAchievement(string id, string platformId) + { + return new Achievement(id, platformId); + } + + public override void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback) + { + Player.LoadPlayers(playerIds, callback); + } + + public override void SetAuthChangeCallback(AuthChangeInternalCallback callback) + { + LocalPlayer.SetAuthChangeCallback(callback); + } + + public override void Authenticate() + { + LocalPlayer.Authenticate(); + } + + public override ILocalPlayer GetLocalPlayer() + { + return LocalPlayer.GetLocalPlayer(); + } + + public override void Signout() + { + Diagnostics.LogNotSupported("Signout"); + } + + public override void LoadServerCredentials(LoadServerCredentialsInternalCallback callback) + { + GameCenterBinding.NPGameServicesLoadServerCredentials(MarshalUtility.GetIntPtr(callback)); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterInterface.cs.meta new file mode 100644 index 00000000..039325e2 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ece162a13a58547febbf2200405358cb +timeCreated: 1578709151 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterUtility.cs new file mode 100644 index 00000000..d8387b1c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterUtility.cs @@ -0,0 +1,97 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class GameCenterUtility + { + public static LeaderboardPlayerScope ConvertToLeaderboardPlayerScope(GKLeaderboardPlayerScope value) + { + switch (value) + { + case GKLeaderboardPlayerScope.GKLeaderboardPlayerScopeFriendsOnly: + return LeaderboardPlayerScope.FriendsOnly; + + case GKLeaderboardPlayerScope.GKLeaderboardPlayerScopeGlobal: + return LeaderboardPlayerScope.Global; + + default: + throw VBException.SwitchCaseNotImplemented(value); + } + } + + public static GKLeaderboardPlayerScope ConvertToGKLeaderboardPlayerScope(LeaderboardPlayerScope value) + { + switch (value) + { + case LeaderboardPlayerScope.FriendsOnly: + return GKLeaderboardPlayerScope.GKLeaderboardPlayerScopeFriendsOnly; + + case LeaderboardPlayerScope.Global: + return GKLeaderboardPlayerScope.GKLeaderboardPlayerScopeGlobal; + + default: + throw VBException.SwitchCaseNotImplemented(value); + } + } + + public static LeaderboardTimeScope ConvertToLeaderboardTimeScope(GKLeaderboardTimeScope value) + { + switch (value) + { + case GKLeaderboardTimeScope.GKLeaderboardTimeScopeToday: + return LeaderboardTimeScope.Today; + + case GKLeaderboardTimeScope.GKLeaderboardTimeScopeWeek: + return LeaderboardTimeScope.Week; + + case GKLeaderboardTimeScope.GKLeaderboardTimeScopeAllTime: + return LeaderboardTimeScope.AllTime; + + default: + throw VBException.SwitchCaseNotImplemented(value); + } + } + + public static GKLeaderboardTimeScope ConvertToGKLeaderboardTimeScope(LeaderboardTimeScope value) + { + switch (value) + { + case LeaderboardTimeScope.Today: + return GKLeaderboardTimeScope.GKLeaderboardTimeScopeToday; + + case LeaderboardTimeScope.Week: + return GKLeaderboardTimeScope.GKLeaderboardTimeScopeWeek; + + case LeaderboardTimeScope.AllTime: + return GKLeaderboardTimeScope.GKLeaderboardTimeScopeAllTime; + + default: + throw VBException.SwitchCaseNotImplemented(value); + } + } + + public static LocalPlayerAuthStatus ConvertToLocalPlayerAuthStatus(GKLocalPlayerAuthState value) + { + switch (value) + { + case GKLocalPlayerAuthState.GKLocalPlayerAuthStateNotFound: + return LocalPlayerAuthStatus.NotAvailable; + + case GKLocalPlayerAuthState.GKLocalPlayerAuthStateAuthenticating: + return LocalPlayerAuthStatus.Authenticating; + + case GKLocalPlayerAuthState.GKLocalPlayerAuthStateAvailable: + return LocalPlayerAuthStatus.Authenticated; + + default: + throw VBException.SwitchCaseNotImplemented(value); + } + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterUtility.cs.meta new file mode 100644 index 00000000..cf4b1da7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/GameCenterUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 815b004da51554a5aaf74bb8f4b721c1 +timeCreated: 1578709151 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Leaderboard.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Leaderboard.cs new file mode 100644 index 00000000..c89bc238 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Leaderboard.cs @@ -0,0 +1,348 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.EssentialKit; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal sealed class Leaderboard : LeaderboardBase + { +#region Fields + + private string m_title; + private Range m_lastRequestRange; + private ILeaderboardScore[] m_scores; + private LeaderboardPlayerScope m_playerScope = LeaderboardPlayerScope.Global; + private LeaderboardTimeScope m_timeScope = LeaderboardTimeScope.AllTime; + private ILeaderboardScore m_localPlayerScore; + + #endregion + + #region Constructors + + static Leaderboard() + { + // register callbacks + LeaderboardBinding.NPLeaderboardRegisterCallbacks(HandleLoadLeaderboardsNativeCallback, HandleLoadScoresNativeCallback, NativeCallbackResponder.HandleLoadImageNativeCallback, HandleReportScoreCallbackInternal); + } + + public Leaderboard(string id, string platformId) + : base(id, platformId) + { + var nativePtr = LeaderboardBinding.NPLeaderboardCreate(platformId); + + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + m_title = LeaderboardBinding.NPLeaderboardGetTitle(nativePtr); + m_lastRequestRange = new Range(); + } + + public Leaderboard(IntPtr nativePtr, string id, string platformId) + : base(id, platformId) + { + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr); + m_title = LeaderboardBinding.NPLeaderboardGetTitle(nativePtr); + m_lastRequestRange = new Range(); + } + + ~Leaderboard() + { + Dispose(false); + } + +#endregion + +#region Static methods + + private static Leaderboard[] CreateLeaderboardArray(ref NativeArray nativeArray) + { + return MarshalUtility.ConvertNativeArrayItems( + arrayPtr: nativeArray.Pointer, + length: nativeArray.Length, + converter: (input) => + { + string platformId = LeaderboardBinding.NPLeaderboardGetId(input); + var settings = GameServices.FindLeaderboardDefinitionWithPlatformId(platformId); + if (null == settings) + { + DebugLogger.LogWarning(EssentialKitDomain.Default, $"Could not find settings for specified platform id: {platformId}."); + return null; + } + + return new Leaderboard(nativePtr: input, id: settings.Id, platformId: platformId); + }, + includeNullObjects: false); + } + + public static void LoadLeaderboards(string[] leaderboardIds, LoadLeaderboardsInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + LeaderboardBinding.NPLeaderboardLoadLeaderboards(leaderboardIds, leaderboardIds.Length, tagPtr); + } + + public static void ShowLeaderboardView(string leaderboardPlatformId, LeaderboardTimeScope timescope, ViewClosedInternalCallback callback) + { + var gKTimeScope = GameCenterUtility.ConvertToGKLeaderboardTimeScope(timescope); + LeaderboardBinding.NPLeaderboardShowView(leaderboardPlatformId, gKTimeScope, MarshalUtility.GetIntPtr(callback)); + } + +#endregion + +#region Base class methods + + protected override string GetTitleInternal() + { + return m_title; + } + + protected override LeaderboardPlayerScope GetPlayerScopeInternal() + { + return m_playerScope; + } + + protected override void SetPlayerScopeInternal(LeaderboardPlayerScope value) + { + m_playerScope = value; + } + + protected override LeaderboardTimeScope GetTimeScopeInternal() + { + return m_timeScope; + } + + protected override void SetTimeScopeInternal(LeaderboardTimeScope value) + { + m_timeScope = value; + } + + protected override ILeaderboardScore GetLocalPlayerScoreInternal() + { + return m_localPlayerScore; + } + + protected override void LoadTopScoresInternal(LoadScoresInternalCallback callback) + { + LoadScoreInternal(1, LoadScoresQuerySize, true, callback); + } + + protected override void LoadPlayerCenteredScoresInternal(LoadScoresInternalCallback callback) + { + LoadScoreInternal(1, 1, false, (scores, localPlayerScore, error) => + { + // check request status + if (error == null) + { + int startIndex = 1; + if(m_localPlayerScore != null) + { + startIndex = ((int)(m_localPlayerScore.Rank / LoadScoresQuerySize) * LoadScoresQuerySize) + 1; + } + + LoadScoreInternal(startIndex, LoadScoresQuerySize, true, callback); + } + else + { + callback(null, null, error); + } + }); + } + + protected override void LoadNextInternal(LoadScoresInternalCallback callback) + { + // check whether we have necessary data to support pagination + if ((m_scores == null) || (m_scores.Length == 0)) + { + LoadTopScoresInternal(callback); + return; + } + + // seek to next page results + int scoreLength = m_scores.Length; + var lastScoreEntry = m_scores[scoreLength - 1]; + long nextPageStartIndex = lastScoreEntry.Rank + 1; + LoadScoreInternal(nextPageStartIndex, LoadScoresQuerySize, true, callback); + } + + protected override void LoadPreviousInternal(LoadScoresInternalCallback callback) + { + // check whether we have necessary data to support pagination + if ((m_scores == null) || (m_scores.Length == 0)) + { + LoadTopScoresInternal(callback); + return; + } + + // seek to previous page results + var firstScoreEntry = m_scores[0]; + long prevPageStartIndex = firstScoreEntry.Rank - LoadScoresQuerySize; + if (prevPageStartIndex < 0) + { + prevPageStartIndex = 1; + } + LoadScoreInternal(prevPageStartIndex, LoadScoresQuerySize, true, callback); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + LeaderboardBinding.NPLeaderboardLoadImage(AddrOfNativeObject(), tagPtr); + } + + protected override void ReportScoreInternal(long score, ReportScoreInternalCallback callback, string tag = null) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + LeaderboardBinding.NPLeaderboardReportScore(AddrOfNativeObject(), score, tag, tagPtr); + } + +#endregion + +#region Private methods + + private void LoadScoreInternal(long startIndex, int count, bool recordRequest, LoadScoresInternalCallback callback) + { + // record request properties, if specified + if (recordRequest) + { + m_lastRequestRange.StartIndex = startIndex; + m_lastRequestRange.Count = count; + } + + // create intermediate response handler + LoadScoresInternalCallback internalCallback = (scores, localPlayerScore, error) => { + m_localPlayerScore = localPlayerScore; + OnLoadScoreFinished(scores, localPlayerScore, error, callback); + }; + + // make request + var tagPtr = MarshalUtility.GetIntPtr(internalCallback); + + var playerScope = GameCenterUtility.ConvertToGKLeaderboardPlayerScope(m_playerScope); + var timeScope = GameCenterUtility.ConvertToGKLeaderboardTimeScope(m_timeScope); + + + LeaderboardBinding.NPLeaderboardLoadScores(AddrOfNativeObject(), playerScope, timeScope, startIndex, count, tagPtr); + } + + private void OnLoadScoreFinished(ILeaderboardScore[] scores, ILeaderboardScore localPlayerScore, Error error, LoadScoresInternalCallback callback) + { + // check response status + if (error == null) + { + m_scores = scores; + } + + // send result to caller object + callback(scores, localPlayerScore, error); + } + +#endregion + +#region Native callback methods + + [MonoPInvokeCallback(typeof(GameServicesLoadArrayNativeCallback))] + private static void HandleLoadLeaderboardsNativeCallback(ref NativeArray nativeArray, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var leaderboards = CreateLeaderboardArray(ref nativeArray); + var errorObj = error.Convert(GameServicesError.kDomain); + LoadLeaderboardsInternalCallback callback = (LoadLeaderboardsInternalCallback)tagHandle.Target; + callback(leaderboards, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GameServicesLoadScoresNativeCallback))] + private static void HandleLoadScoresNativeCallback(ref NativeArray nativeArray, IntPtr localPlayerScorePtr, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + LoadScoresInternalCallback callback = (LoadScoresInternalCallback)tagHandle.Target; + Leaderboard leaderboard = callback?.Target as Leaderboard; + + string leaderboardId = leaderboard?.Id; + string leaderboardPlatformId = leaderboard?.PlatformId; + + // send result + var managedArray = MarshalUtility.CreateManagedArray(nativeArray.Pointer, nativeArray.Length); + var scores = (managedArray == null) ? null : Array.ConvertAll(managedArray, (nativePtr) => new LeaderboardScore(leaderboardId, leaderboardPlatformId, nativePtr)); + var errorObj = error.Convert(GameServicesError.kDomain); + + ILeaderboardScore localPlayerScore = null; + if (IntPtr.Zero != localPlayerScorePtr) + { + // create score object= + localPlayerScore = new LeaderboardScore(leaderboardId, leaderboardPlatformId, localPlayerScorePtr); + } + + ((LoadScoresInternalCallback)tagHandle.Target)(scores, localPlayerScore, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GameServicesReportNativeCallback))] + private static void HandleReportScoreCallbackInternal(NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var errorObj = error.Convert(GameServicesError.kDomain); + ((ReportScoreInternalCallback)tagHandle.Target).Invoke((errorObj == null), errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + + #region Nested types + + private class Range + { + public long StartIndex { get; set; } + + public int Count { get; set; } + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Leaderboard.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Leaderboard.cs.meta new file mode 100644 index 00000000..d2c6c255 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Leaderboard.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6b8c80fe161944f60ba890727910cb19 +timeCreated: 1553342238 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardBinding.cs new file mode 100644 index 00000000..dcd13653 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardBinding.cs @@ -0,0 +1,40 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class LeaderboardBinding + { + [DllImport("__Internal")] + public static extern void NPLeaderboardRegisterCallbacks(GameServicesLoadArrayNativeCallback loadLeaderboardsCallback, GameServicesLoadScoresNativeCallback loadScoresCallback, GameServicesLoadImageNativeCallback loadImageCallback, GameServicesReportNativeCallback reportNativeCallback); + + [DllImport("__Internal")] + public static extern void NPLeaderboardLoadLeaderboards(string[] leaderboardIds, int length, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern IntPtr NPLeaderboardCreate(string id); + + [DllImport("__Internal")] + public static extern string NPLeaderboardGetId(IntPtr leaderboardPtr); + + [DllImport("__Internal")] + public static extern string NPLeaderboardGetTitle(IntPtr leaderboardPtr); + + [DllImport("__Internal")] + public static extern void NPLeaderboardLoadScores(IntPtr leaderboardPtr, GKLeaderboardPlayerScope playerScope, GKLeaderboardTimeScope timeScope, long startIndex, int count, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPLeaderboardLoadImage(IntPtr leaderboardPtr, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPLeaderboardShowView(string leaderboardID, GKLeaderboardTimeScope timeScope, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPLeaderboardReportScore(IntPtr leaderboardPtr, long score, string context, IntPtr tagPtr); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardBinding.cs.meta new file mode 100644 index 00000000..e365c0f4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d79ccf425042c41ec821480920ba8453 +timeCreated: 1554372544 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScore.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScore.cs new file mode 100644 index 00000000..0443359e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScore.cs @@ -0,0 +1,62 @@ +#if UNITY_IOS || UNITY_TVOS +using System; + using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal sealed class LeaderboardScore : LeaderboardScoreBase + { + #region Constructors + + static LeaderboardScore() + { + } + + public LeaderboardScore(string leaderboardId, string leaderboardPlatformId, IntPtr nativePtr) + : base(leaderboardId, leaderboardPlatformId) + { + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr); + } + + ~LeaderboardScore() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + protected override IPlayer GetPlayerInternal() + { + var playerPtr = LeaderboardScoreBinding.NPLeaderboardScoreEntryGetPlayer(AddrOfNativeObject()); + return new Player(playerPtr, false); + } + + protected override long GetRankInternal() + { + return LeaderboardScoreBinding.NPLeaderboardScoreEntryGetRank(AddrOfNativeObject()); + } + + protected override long GetValueInternal() + { + return LeaderboardScoreBinding.NPLeaderboardScoreEntryGetValue(AddrOfNativeObject()); + } + + protected override DateTime GetLastReportedDateInternal() + { + string dateStr = LeaderboardScoreBinding.NPLeaderboardScoreEntryGetLastReportedDate(AddrOfNativeObject()); + return IosNativePluginsUtility.ParseDateTimeStringInUTCFormat(dateStr); + } + + protected override string GetTagInternal() + { + return LeaderboardScoreBinding.NPLeaderboardScoreEntryGetTag(AddrOfNativeObject()); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScore.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScore.cs.meta new file mode 100644 index 00000000..9994a1a4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2d94eeb188684388b2aae7703b619e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScoreBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScoreBinding.cs new file mode 100644 index 00000000..fdc3e501 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScoreBinding.cs @@ -0,0 +1,25 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class LeaderboardScoreBinding + { + [DllImport("__Internal")] + public static extern long NPLeaderboardScoreEntryGetRank(IntPtr entryPtr); + + [DllImport("__Internal")] + public static extern long NPLeaderboardScoreEntryGetValue(IntPtr entryPtr); + + [DllImport("__Internal")] + public static extern string NPLeaderboardScoreEntryGetLastReportedDate(IntPtr entryPtr); + + [DllImport("__Internal")] + public static extern IntPtr NPLeaderboardScoreEntryGetPlayer(IntPtr entryPtr); + + [DllImport("__Internal")] + public static extern string NPLeaderboardScoreEntryGetTag(IntPtr entryPtr); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScoreBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScoreBinding.cs.meta new file mode 100644 index 00000000..dd7fe973 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LeaderboardScoreBinding.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1af6081ee90ea4798ac528becc08efee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LocalPlayer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LocalPlayer.cs new file mode 100644 index 00000000..4dd64a66 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LocalPlayer.cs @@ -0,0 +1,131 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using AOT; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.EssentialKit; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal sealed class LocalPlayer : Player, ILocalPlayer + { + #region Static fields + + private static readonly LocalPlayer s_localPlayer = null; + + #endregion + + #region Static event + + private static AuthChangeInternalCallback s_onAuthChange; + + #endregion + + #region Constructors + + static LocalPlayer() + { + // create local player + s_localPlayer = new LocalPlayer(); + + // register + PlayerBinding.NPLocalPlayerRegisterCallbacks(HandleAuthChangeNativeCallback); + + // update properties + s_localPlayer.UpdateNativeReference(); + } + + ~LocalPlayer() + { + Dispose(false); + } + + #endregion + + #region Static methods + + public static LocalPlayer GetLocalPlayer() + { + return s_localPlayer; + } + + public static void Authenticate() + { + PlayerBinding.NPLocalPlayerAuthenticate(); + } + + public static void SetAuthChangeCallback(AuthChangeInternalCallback callback) + { + // set value + s_onAuthChange = callback; + } + + #endregion + + #region Private methods + + private void UpdateNativeReference() + { + var localPlayerPtr = PlayerBinding.NPLocalPlayerGetLocalPlayer(); + + // set properties + NativeObjectRef = new IosNativeObjectRef(localPlayerPtr); + } + + #endregion + + #region ILocalPlayer implementation + + public bool IsAuthenticated + { + get + { + return PlayerBinding.NPLocalPlayerIsAuthenticated(); + } + } + + public bool IsUnderAge + { + get + { + return PlayerBinding.NPLocalPlayerIsUnderage(); + } + } + + public void LoadFriends(EventCallback callback) + { + LoadPlayersInternalCallback callbackWrapper = (players, error) => SendLoadPlayerFriendsResult(callback, players, error); + var tagPtr = MarshalUtility.GetIntPtr(callbackWrapper); + PlayerBinding.NPLocalPlayerLoadFriends(tagPtr); + } + + public void AddFriend(string playerId, EventCallback callback) + { + ViewClosedInternalCallback callbackWrapper = (error) => SendViewClosedResult(callback, error); + PlayerBinding.NPLocalPlayerShowAddFriendRequestView(playerId, MarshalUtility.GetIntPtr(callbackWrapper)); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(GameServicesAuthStateChangeNativeCallback))] + private static void HandleAuthChangeNativeCallback(GKLocalPlayerAuthState state, NativeError error) + { + s_localPlayer.UpdateNativeReference(); + + // send result + var authStatus = GameCenterUtility.ConvertToLocalPlayerAuthStatus(state); + var errorObj = error.Convert(GameServicesError.kDomain); + s_onAuthChange(authStatus, errorObj); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LocalPlayer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LocalPlayer.cs.meta new file mode 100644 index 00000000..47cd3261 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/LocalPlayer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9a18826c8a5844c2db9a06099534c344 +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeCallbackResponder.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeCallbackResponder.cs new file mode 100644 index 00000000..207d196e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeCallbackResponder.cs @@ -0,0 +1,120 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.EssentialKit; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class NativeCallbackResponder + { + #region Native callback methods + + [MonoPInvokeCallback(typeof(GameServicesLoadImageNativeCallback))] + public static void HandleLoadImageNativeCallback(IntPtr dataArrayPtr, int dataLength, NativeError error, IntPtr tagPtr) + { + // get handle from pointer + var handle = GCHandle.FromIntPtr(tagPtr); + var callback = (LoadImageInternalCallback)handle.Target; + + try + { + var errorObj = error.Convert(GameServicesError.kDomain); + if (errorObj == null) + { + // create texture from raw data + var byteArray = new byte[dataLength]; + Marshal.Copy(dataArrayPtr, byteArray, 0, dataLength); + + // send result + callback(byteArray, null); + } + else + { + // send result + callback(null, errorObj); + } + } + finally + { + // release handle + handle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GameServicesViewClosedNativeCallback))] + public static void HandleViewClosedNativeCallback(NativeError error, IntPtr tagPtr) + { + GCHandle tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var callback = (ViewClosedInternalCallback)tagHandle.Target; + var errorObj = error.Convert(GameServicesError.kDomain); + callback.Invoke(errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GameServicesLoadServerCredentialsNativeCallback))] + public static void HandleLoadServerCredentialsNativeCallback(string publicKeyUrl, IntPtr signaturePtr, int signatureDataLength, IntPtr saltPtr, int saltDataLength, long timestamp, NativeError error, IntPtr tagPtr) + { + GCHandle tagHandle = GCHandle.FromIntPtr(tagPtr); + var callback = (LoadServerCredentialsInternalCallback)tagHandle.Target; + + try + { + var errorObj = error.Convert(GameServicesError.kDomain); + if (errorObj == null) + { + // create signature data from signaturePtr + var signature = new byte[signatureDataLength]; + Marshal.Copy(signaturePtr, signature, 0, signatureDataLength); + + + // create salt data from saltPtr + var salt = new byte[saltDataLength]; + Marshal.Copy(saltPtr, salt, 0, saltDataLength); + + + ServerCredentials.IosPlatformProperties iosPlatformProperties = new ServerCredentials.IosPlatformProperties(publicKeyUrl, signature, salt, timestamp); + ServerCredentials serverCredentials = new ServerCredentials(iosProperties: iosPlatformProperties); + + // send result + callback(serverCredentials, null); + } + else + { + // send result + callback(null, errorObj); + } + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeCallbackResponder.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeCallbackResponder.cs.meta new file mode 100644 index 00000000..685044db --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeCallbackResponder.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 53fe39537325b4847945c328e50782d1 +timeCreated: 1577949857 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeDelegates.cs new file mode 100644 index 00000000..01d6c991 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeDelegates.cs @@ -0,0 +1,24 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal delegate void GameServicesLoadArrayNativeCallback(ref NativeArray nativeArray, NativeError error, IntPtr tagPtr); + + internal delegate void GameServicesLoadScoresNativeCallback(ref NativeArray nativeArray, IntPtr localPlayerScorePtr, NativeError error, IntPtr tagPtr); + + internal delegate void GameServicesReportNativeCallback(NativeError error, IntPtr tagPtr); + + internal delegate void GameServicesAuthStateChangeNativeCallback(GKLocalPlayerAuthState state, NativeError error); + + internal delegate void GameServicesLoadImageNativeCallback(IntPtr dataPtr, int dataLength, NativeError error, IntPtr tagPtr); + + internal delegate void GameServicesViewClosedNativeCallback(NativeError error, IntPtr tagPtr); + + internal delegate void GameServicesLoadServerCredentialsNativeCallback(string publicKeyUrl, IntPtr signaturePtr, int signatureDataLength, IntPtr saltPtr, int saltDataLength, long timestamp, NativeError error, IntPtr tagPtr); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeDelegates.cs.meta new file mode 100644 index 00000000..5b46134c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 326a2addae5e4416abe8a068a5adfec0 +timeCreated: 1553342238 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Player.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Player.cs new file mode 100644 index 00000000..aab7dc66 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Player.cs @@ -0,0 +1,116 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.EssentialKit; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal class Player : PlayerBase + { + #region Constructors + + static Player() + { + // register callbacks + PlayerBinding.NPPlayerRegisterCallbacks(HandleLoadPlayersNativeCallback, NativeCallbackResponder.HandleLoadImageNativeCallback, NativeCallbackResponder.HandleViewClosedNativeCallback); + } + + protected Player() + { } + + public Player(IntPtr nativePtr, bool retain = true) + { + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain); + } + + ~Player() + { + Dispose(false); + } + + #endregion + + #region Static methods + + public static void LoadPlayers(string[] playerIds, LoadPlayersInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + PlayerBinding.NPPlayerLoadPlayers(playerIds, playerIds.Length, tagPtr); + } + + #endregion + + #region Base class methods + + protected override string GetIdInternal() + { + return PlayerBinding.NPPlayerGetId(AddrOfNativeObject()); + } + protected override string GetDeveloperScopeIdInternal() + { + return PlayerBinding.NPPlayerGetDeveloperScopeId(AddrOfNativeObject()); + } + + protected override string GetLegacyIdInternal() + { + return PlayerBinding.NPPlayerGetLegacyId(AddrOfNativeObject()); + } + + protected override string GetAliasInternal() + { + return PlayerBinding.NPPlayerGetAlias(AddrOfNativeObject()); + } + + protected override string GetDisplayNameInternal() + { + return PlayerBinding.NPPlayerGetDisplayName(AddrOfNativeObject()); + } + + protected override void LoadImageInternal(LoadImageInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + PlayerBinding.NPPlayerLoadImage(AddrOfNativeObject(), tagPtr); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(GameServicesLoadArrayNativeCallback))] + private static void HandleLoadPlayersNativeCallback(ref NativeArray nativeArray, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var managedArray = MarshalUtility.CreateManagedArray(nativeArray.Pointer, nativeArray.Length); + var players = (managedArray == null) + ? null + : Array.ConvertAll(managedArray, (nativePtr) => new Player(nativePtr)); + var errorObj = error.Convert(GameServicesError.kDomain); + ((LoadPlayersInternalCallback)tagHandle.Target).Invoke(players, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Player.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Player.cs.meta new file mode 100644 index 00000000..6243ee9b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/Player.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73c4242b2851c4305a743d241f2e2f4c +timeCreated: 1553342239 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/PlayerBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/PlayerBinding.cs new file mode 100644 index 00000000..7d230ec8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/PlayerBinding.cs @@ -0,0 +1,58 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.GameServicesCore.iOS +{ + internal static class PlayerBinding + { + [DllImport("__Internal")] + public static extern void NPPlayerRegisterCallbacks(GameServicesLoadArrayNativeCallback loadPlayersCallback, GameServicesLoadImageNativeCallback loadPlayerImageCallback, GameServicesViewClosedNativeCallback friendProfileViewClosedCallback); + + [DllImport("__Internal")] + public static extern void NPPlayerLoadPlayers(string[] playerIds, int count, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPLocalPlayerLoadFriends(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPLocalPlayerShowAddFriendRequestView(string requestedPlayerId, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern string NPPlayerGetId(IntPtr playerPtr); + + [DllImport("__Internal")] + public static extern string NPPlayerGetDeveloperScopeId(IntPtr playerPtr); + + [DllImport("__Internal")] + public static extern string NPPlayerGetLegacyId(IntPtr playerPtr); + + [DllImport("__Internal")] + public static extern string NPPlayerGetAlias(IntPtr playerPtr); + + [DllImport("__Internal")] + public static extern string NPPlayerGetDisplayName(IntPtr playerPtr); + + [DllImport("__Internal")] + public static extern void NPPlayerLoadImage(IntPtr playerPtr, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPLocalPlayerRegisterCallbacks(GameServicesAuthStateChangeNativeCallback authChangeCallback); + + [DllImport("__Internal")] + public static extern IntPtr NPLocalPlayerGetLocalPlayer(); + + [DllImport("__Internal")] + public static extern void NPLocalPlayerAuthenticate(); + + [DllImport("__Internal")] + public static extern bool NPLocalPlayerIsAuthenticated(); + + [DllImport("__Internal")] + public static extern bool NPLocalPlayerIsUnderage(); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/PlayerBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/PlayerBinding.cs.meta new file mode 100644 index 00000000..5c52ded9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/GameServices/PlayerBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 42ac04e06a9fe448c8b52686c1675852 +timeCreated: 1554372544 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices.meta new file mode 100644 index 00000000..dd01e434 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d80f66f7672a24af98b83df09b73337d +folderAsset: yes +timeCreated: 1554375741 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/AVAuthorizationStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/AVAuthorizationStatus.cs new file mode 100644 index 00000000..9f1e1076 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/AVAuthorizationStatus.cs @@ -0,0 +1,19 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal enum AVAuthorizationStatus : long + { + AVAuthorizationStatusNotDetermined, + + AVAuthorizationStatusRestricted, + + AVAuthorizationStatusDenied, + + AVAuthorizationStatusAuthorized, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/AVAuthorizationStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/AVAuthorizationStatus.cs.meta new file mode 100644 index 00000000..f70d76c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/AVAuthorizationStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ebc63b5d17e4c4789b3c5a25ff06183c +timeCreated: 1554383961 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaContentBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaContentBinding.cs new file mode 100644 index 00000000..cb071105 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaContentBinding.cs @@ -0,0 +1,16 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal static class MediaContentBinding + { + [DllImport("__Internal")] + public static extern void NPMediaContentAsRawData(IntPtr mediaContentPtr, IntPtr tag, MediaContentGetRawDataNativeCallback callback); + + [DllImport("__Internal")] + public static extern void NPMediaContentAsFilePath(IntPtr mediaContentPtr, string directoryName, string fileName, IntPtr tag, MediaContentAsFilePathNativeCallback callback); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaContentBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaContentBinding.cs.meta new file mode 100644 index 00000000..a74fd2c1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaContentBinding.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3670fb6efa2b544e980f3925513c085d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesBinding.cs new file mode 100644 index 00000000..27e6a6f1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesBinding.cs @@ -0,0 +1,28 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal static class MediaServicesBinding + { + [DllImport("__Internal")] + public static extern PHAuthorizationStatus NPMediaServicesGetPhotoLibraryAccessStatus(); + + [DllImport("__Internal")] + public static extern AVAuthorizationStatus NPMediaServicesGetCameraAccessStatus(); + + [DllImport("__Internal")] + public static extern void NPMediaServicesSelectMediaContent(NativeMediaContentSelectionOptionsData options, IntPtr tagPtr, SelectMediaContentInternalNativeCallback handleSelectMediaContentNativeCallback); + + [DllImport("__Internal")] + public static extern void NPMediaServicesCaptureMediaContent(NativeMediaContentCaptureOptionsData options, IntPtr tagPtr, CaptureMediaContentInternalNativeCallback handleCaptureMediaContentNativeCallback); + + [DllImport("__Internal")] + public static extern void NPMediaServicesSaveMediaContent(byte[] data, long length, string mimeType, NativeMediaContentSaveOptionsData options, IntPtr tagPtr, SaveMediaContentInternalNativeCallback handleSaveMediaContentNativeCallback); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesBinding.cs.meta new file mode 100644 index 00000000..6e3a0290 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesBinding.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b503c56f491cf410fa90d05698d31d8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesInterface.cs new file mode 100644 index 00000000..e1515fa3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesInterface.cs @@ -0,0 +1,202 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + + public sealed class MediaServicesInterface : NativeMediaServicesInterfaceBase + { + #region Constructors + + public MediaServicesInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base class methods + + public override GalleryAccessStatus GetGalleryAccessStatus(GalleryAccessMode mode) + { + var status = MediaServicesBinding.NPMediaServicesGetPhotoLibraryAccessStatus(); + return MediaServicesUtility.ConvertToGalleryAccessStatus(status); + } + + public override CameraAccessStatus GetCameraAccessStatus() + { + var status = MediaServicesBinding.NPMediaServicesGetCameraAccessStatus(); + return MediaServicesUtility.ConvertToCameraAccessStatus(status); + } + + public override void SelectMediaContent(MediaContentSelectOptions options, SelectMediaContentInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + MediaServicesBinding.NPMediaServicesSelectMediaContent(MediaServicesUtility.Convert(options), tagPtr, HandleSelectMediaContentNativeCallback); + } + + public override void CaptureMediaContent(MediaContentCaptureOptions options, CaptureMediaContentInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + MediaServicesBinding.NPMediaServicesCaptureMediaContent(MediaServicesUtility.Convert(options), tagPtr, HandleCaptureMediaContentNativeCallback); + } + + public override void SaveMediaContent(byte[] data, string mimeType, MediaContentSaveOptions options, SaveMediaContentInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + MediaServicesBinding.NPMediaServicesSaveMediaContent(data, data.Length, mimeType, MediaServicesUtility.Convert(options), tagPtr, HandleSaveMediaContentNativeCallback); + } + + /* + public override void RequestGalleryAccess(GalleryAccessMode mode, RequestGalleryAccessInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + MediaServicesBinding.NPMediaServicesRequestPhotoLibraryAccess(tagPtr); + } + public override void RequestCameraAccess(RequestCameraAccessInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + MediaServicesBinding.NPMediaServicesRequestCameraAccess(tagPtr); + } + + + + public override bool CanSelectImageFromGallery() + { + return MediaServicesBinding.NPMediaServicesCanPickImageFromGallery(); + } + + public override void SelectImageFromGallery(bool canEdit, SelectImageInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + IosNativePluginsUtility.SetLastTouchPosition(); + MediaServicesBinding.NPMediaServicesPickImageFromGallery(canEdit, tagPtr); + } + + public override bool CanCaptureImageFromCamera() + { + return MediaServicesBinding.NPMediaServicesCanPickImageFromCamera(); + } + + public override void CaptureImageFromCamera(bool canEdit, SelectImageInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + MediaServicesBinding.NPMediaServicesPickImageFromCamera(canEdit, tagPtr); + } + + public override bool CanSaveImageToGallery() + { + return MediaServicesBinding.NPMediaServicesCanSaveImageToAlbum(); + } + + public override void SaveImageToGallery(string albumName, Texture2D image, SaveImageToGalleryInternalCallback callback) + { + var imageData = image.Encode(); + var handle = GCHandle.Alloc(imageData, GCHandleType.Pinned); + + // make request + var tagPtr = MarshalUtility.GetIntPtr(callback); + MediaServicesBinding.NPMediaServicesSaveImageToAlbum(albumName, handle.AddrOfPinnedObject(), imageData.Length, tagPtr); + + // release pinned data object + handle.Free(); + } + */ + + #endregion + + #region Native callback methods + + + [MonoPInvokeCallback(typeof(SelectMediaContentInternalNativeCallback))] + private static void HandleSelectMediaContentNativeCallback(ref NativeArray mediaContentsPtr, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + SelectMediaContentInternalCallback callback = (SelectMediaContentInternalCallback)tagHandle.Target; + + // send result + var managedArray = MarshalUtility.CreateManagedArray(mediaContentsPtr.Pointer, mediaContentsPtr.Length); + var mediaContents = (managedArray == null) ? null : Array.ConvertAll(managedArray, (nativePtr) => new NativeMediaContent(nativePtr)); + var errorObj = error.Convert(MediaServicesError.kDomain); + + callback(mediaContents, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(CaptureMediaContentInternalNativeCallback))] + private static void HandleCaptureMediaContentNativeCallback(IntPtr capturedMediaContentPtr, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + CaptureMediaContentInternalCallback callback = (CaptureMediaContentInternalCallback)tagHandle.Target; + + var errorObj = error.Convert(MediaServicesError.kDomain); + NativeMediaContent mediaContent = null; + + // send result + if(errorObj == null) + { + mediaContent = new NativeMediaContent(capturedMediaContentPtr); + } + + callback(mediaContent, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(SaveMediaContentInternalNativeCallback))] + private static void HandleSaveMediaContentNativeCallback(bool success, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + SaveMediaContentInternalCallback callback = (SaveMediaContentInternalCallback)tagHandle.Target; + var errorObj = error.Convert(MediaServicesError.kDomain); + + callback(success, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesInterface.cs.meta new file mode 100644 index 00000000..92812b7f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9f30ba70f1d940d9ae7218c47f3e18e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesUtility.cs new file mode 100644 index 00000000..1dc3f23e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesUtility.cs @@ -0,0 +1,86 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal static class MediaServicesUtility + { + public static GalleryAccessStatus ConvertToGalleryAccessStatus(PHAuthorizationStatus status) + { + switch (status) + { + case PHAuthorizationStatus.PHAuthorizationStatusDenied: + return GalleryAccessStatus.Denied; + + case PHAuthorizationStatus.PHAuthorizationStatusAuthorized: + return GalleryAccessStatus.Authorized; + + case PHAuthorizationStatus.PHAuthorizationStatusRestricted: + return GalleryAccessStatus.Restricted; + + case PHAuthorizationStatus.PHAuthorizationStatusNotDetermined: + return GalleryAccessStatus.NotDetermined; + + default: + throw VBException.SwitchCaseNotImplemented(status); + } + } + + public static CameraAccessStatus ConvertToCameraAccessStatus(AVAuthorizationStatus status) + { + switch (status) + { + case AVAuthorizationStatus.AVAuthorizationStatusDenied: + return CameraAccessStatus.Denied; + + case AVAuthorizationStatus.AVAuthorizationStatusAuthorized: + return CameraAccessStatus.Authorized; + + case AVAuthorizationStatus.AVAuthorizationStatusRestricted: + return CameraAccessStatus.Restricted; + + case AVAuthorizationStatus.AVAuthorizationStatusNotDetermined: + return CameraAccessStatus.NotDetermined; + + default: + throw VBException.SwitchCaseNotImplemented(status); + } + } + + internal static NativeMediaContentSelectionOptionsData Convert(MediaContentSelectOptions options) + { + return new NativeMediaContentSelectionOptionsData() + { + Title = options.Title, + AllowedMimeType = options.AllowedMimeType, + MaxAllowed = options.MaxAllowed, + ShowPrepermissionDialog = false//options.ShowPrepermissionDialog + }; + } + + internal static NativeMediaContentCaptureOptionsData Convert(MediaContentCaptureOptions options) + { + return new NativeMediaContentCaptureOptionsData() + { + CaptureType = options.CaptureType, + Title = options.Title, + FileName = options.FileName + }; + } + + internal static NativeMediaContentSaveOptionsData Convert(MediaContentSaveOptions options) + { + return new NativeMediaContentSaveOptionsData() + { + DirectoryName = options.DirectoryName, + FileName = options.FileName + }; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesUtility.cs.meta new file mode 100644 index 00000000..2d241e7a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/MediaServicesUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7da2e4eae54b14b8da50fddcb32cbe7f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeCallback.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeCallback.cs new file mode 100644 index 00000000..17fd089a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeCallback.cs @@ -0,0 +1,26 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal delegate void RequestPhotoLibraryAccessNativeCallback(PHAuthorizationStatus status, string error, IntPtr tagPtr); + + internal delegate void RequestCameraAccessNativeCallback(AVAuthorizationStatus status, string error, IntPtr tagPtr); + + internal delegate void PickImageNativeCallback(IntPtr imageDataPtr, PickImageFinishReason reasonCode, IntPtr tagPtr); + + internal delegate void SaveImageToAlbumNativeCallback(bool success, string error, IntPtr tagPtr); + + + internal delegate void SelectMediaContentInternalNativeCallback(ref NativeArray contents, NativeError error, IntPtr tagPtr); + internal delegate void CaptureMediaContentInternalNativeCallback(IntPtr content, NativeError error, IntPtr tagPtr); + internal delegate void SaveMediaContentInternalNativeCallback(bool success, NativeError error, IntPtr tagPtr); + + internal delegate void MediaContentGetRawDataNativeCallback(IntPtr byteArrayPtr, int byteLength, string mime, NativeError error, IntPtr tagPtr); + internal delegate void MediaContentAsFilePathNativeCallback(string path, NativeError error, IntPtr tagPtr); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeCallback.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeCallback.cs.meta new file mode 100644 index 00000000..be7da299 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeCallback.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3728e46490b734972997978bf26acb8b +timeCreated: 1554382028 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContent.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContent.cs new file mode 100644 index 00000000..0e074f04 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContent.cs @@ -0,0 +1,103 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Runtime.InteropServices; +using AOT; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal class NativeMediaContent : NativeObjectBase, IMediaContent + { + internal NativeMediaContent(IntPtr nativePtr) : base(nativeObjectRef: new IosNativeObjectRef(nativePtr)) + { + } + + public void AsFilePath(string destinationDirectory, string fileName, EventCallback onComplete) + { + IntPtr tagPtr = MarshalUtility.GetIntPtr(onComplete); + MediaContentBinding.NPMediaContentAsFilePath(AddrOfNativeObject(), destinationDirectory, fileName, tagPtr, HandleMediaContentAsFilePathNativeCallback); + } + + public void AsRawMediaData(EventCallback onComplete) + { + IntPtr tagPtr = MarshalUtility.GetIntPtr(onComplete); + MediaContentBinding.NPMediaContentAsRawData(AddrOfNativeObject(), tagPtr, HandleMediaContentGetRawDataNativeCallback); + } + + public void AsTexture2D(EventCallback onComplete) + { + AsRawMediaData((rawData, error) => { + if (error == null) + { + Texture2D texture = rawData.Mime.StartsWith("image") ? new TextureData(rawData.Bytes).GetTexture() : null; + CallbackDispatcher.InvokeOnMainThread(onComplete, texture, null); + } + else + { + CallbackDispatcher.InvokeOnMainThread(onComplete, null, error); + } + }); + } + + [MonoPInvokeCallback(typeof(MediaContentGetRawDataNativeCallback))] + private static void HandleMediaContentGetRawDataNativeCallback(IntPtr byteArrayPtr, int byteLength, string mime, NativeError nativeError, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + var error = nativeError.Convert(); + + try + { + EventCallback callback = (EventCallback)tagHandle.Target; + + if (error == null) + { + var byteArray = new byte[byteLength]; + Marshal.Copy(byteArrayPtr, byteArray, 0, byteLength); + + // send result + CallbackDispatcher.InvokeOnMainThread(callback, new RawMediaData(byteArray, mime), null); + } + else + { + // send result + CallbackDispatcher.InvokeOnMainThread(callback, null, error); + } + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(MediaContentAsFilePathNativeCallback))] + private static void HandleMediaContentAsFilePathNativeCallback(string path, NativeError nativeError, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + var error = nativeError.Convert(); + + try + { + EventCallback callback = (EventCallback)tagHandle.Target; + CallbackDispatcher.InvokeOnMainThread(callback, path, error); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContent.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContent.cs.meta new file mode 100644 index 00000000..1f7fd052 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f0964532a34554faaad28587306e292e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentCaptureOptionsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentCaptureOptionsData.cs new file mode 100644 index 00000000..201aef46 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentCaptureOptionsData.cs @@ -0,0 +1,28 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct NativeMediaContentCaptureOptionsData + { + public MediaContentCaptureType CaptureType + { + get; + internal set; + } + + public string Title + { + get; + internal set; + } + + public string FileName + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentCaptureOptionsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentCaptureOptionsData.cs.meta new file mode 100644 index 00000000..af7be3a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentCaptureOptionsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f84bfcb1459b94c7d9c2d018630a7388 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSaveOptionsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSaveOptionsData.cs new file mode 100644 index 00000000..e3f35c99 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSaveOptionsData.cs @@ -0,0 +1,22 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct NativeMediaContentSaveOptionsData + { + public string DirectoryName + { + get; + internal set; + } + + public string FileName + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSaveOptionsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSaveOptionsData.cs.meta new file mode 100644 index 00000000..8895d0ac --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSaveOptionsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c81ce0ebade8b4f1d9aa0dc81898fc95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSelectionOptionsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSelectionOptionsData.cs new file mode 100644 index 00000000..e073ce29 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSelectionOptionsData.cs @@ -0,0 +1,34 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct NativeMediaContentSelectionOptionsData + { + public string Title + { + get; + internal set; + } + + public string AllowedMimeType + { + get; + internal set; + } + + public int MaxAllowed + { + get; + internal set; + } + + public bool ShowPrepermissionDialog + { + get; + internal set; + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSelectionOptionsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSelectionOptionsData.cs.meta new file mode 100644 index 00000000..1289a751 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/NativeMediaContentSelectionOptionsData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6ade57c1941449d999a4509f6571534 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PHAuthorizationStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PHAuthorizationStatus.cs new file mode 100644 index 00000000..8768b884 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PHAuthorizationStatus.cs @@ -0,0 +1,19 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal enum PHAuthorizationStatus : long + { + PHAuthorizationStatusNotDetermined, + + PHAuthorizationStatusRestricted, + + PHAuthorizationStatusDenied, + + PHAuthorizationStatusAuthorized, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PHAuthorizationStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PHAuthorizationStatus.cs.meta new file mode 100644 index 00000000..acec488e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PHAuthorizationStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e48bdef6a5a74429b8683e21e5cb9b32 +timeCreated: 1554383788 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PickImageFinishReason.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PickImageFinishReason.cs new file mode 100644 index 00000000..9b0f48e4 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PickImageFinishReason.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.MediaServicesCore.iOS +{ + internal enum PickImageFinishReason : long + { + PickImageFinishReasonCancelled, + + PickImageFinishReasonFailed, + + PickImageFinishReasonSuccess, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PickImageFinishReason.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PickImageFinishReason.cs.meta new file mode 100644 index 00000000..3952a87f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/MediaServices/PickImageFinishReason.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: de343cfe21bf446f88a5f128812d9339 +timeCreated: 1554383788 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI.meta new file mode 100644 index 00000000..c125f7a9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 757a3bb16658b42eb90ff9416d6f6e2f +folderAsset: yes +timeCreated: 1553076384 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerBinding.cs new file mode 100644 index 00000000..a0ec8ac5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerBinding.cs @@ -0,0 +1,41 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal static class AlertControllerBinding + { + [DllImport("__Internal")] + public static extern void NPAlertControllerRegisterCallback(AlertActionSelectNativeCallback actionSelectCallback); + + [DllImport("__Internal")] + public static extern IntPtr NPAlertControllerCreate(string title, string message, UIAlertControllerStyle preferredStyle); + + [DllImport("__Internal")] + public static extern void NPAlertControllerShow(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPAlertControllerDismiss(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPAlertControllerSetTitle(IntPtr nativePtr, string value); + + [DllImport("__Internal")] + public static extern string NPAlertControllerGetTitle(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPAlertControllerSetMessage(IntPtr nativePtr, string value); + + [DllImport("__Internal")] + public static extern string NPAlertControllerGetMessage(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPAlertControllerAddAction(IntPtr nativePtr, string text, bool isCancelType); + + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerBinding.cs.meta new file mode 100644 index 00000000..25555e8d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f3ead995bf48548ffad018aefcb11916 +timeCreated: 1562055127 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerUtility.cs new file mode 100644 index 00000000..51e349f6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerUtility.cs @@ -0,0 +1,32 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal static class AlertControllerUtility + { + #region Converter methods + + public static UIAlertControllerStyle ConvertToUIAlertControllerStyle(AlertDialogStyle style) + { + switch (style) + { + case AlertDialogStyle.Default: + return UIAlertControllerStyle.UIAlertControllerStyleAlert; + + case AlertDialogStyle.ActionSheet: + return UIAlertControllerStyle.UIAlertControllerStyleActionSheet; + + default: + throw VBException.SwitchCaseNotImplemented(style); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerUtility.cs.meta new file mode 100644 index 00000000..dbd44f6e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/AlertControllerUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 97edcabaa9bbb49a6a194da6d8fbe2f3 +timeCreated: 1553002953 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerControllerBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerControllerBinding.cs new file mode 100644 index 00000000..3582e46d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerControllerBinding.cs @@ -0,0 +1,19 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal static class DatePickerControllerBinding + { + [DllImport("__Internal")] + public static extern void NPDatePickerControllerRegisterCallback(DatePickerControllerNativeCallback callback); + + [DllImport("__Internal")] + public static extern void NPDatePickerControllerShow(UIDatePickerMode mode, long initialEpoch, long minimumEpoch, long maximumEpoch, IntPtr tagPtr); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerControllerBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerControllerBinding.cs.meta new file mode 100644 index 00000000..ef3dfcda --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerControllerBinding.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85549b0d24a2849d085d624cd64ad324 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerUtility.cs new file mode 100644 index 00000000..d6053a3d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerUtility.cs @@ -0,0 +1,35 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal static class DatePickerUtility + { + #region Converter methods + + public static UIDatePickerMode ConvertToUIDatePickerMode(DatePickerMode mode) + { + switch (mode) + { + case DatePickerMode.Date: + return UIDatePickerMode.UIDatePickerModeDate; + + case DatePickerMode.Time: + return UIDatePickerMode.UIDatePickerModeTime; + + case DatePickerMode.DateAndTime: + return UIDatePickerMode.UIDatePickerModeDateAndTime; + + default: + throw VBException.SwitchCaseNotImplemented(mode); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerUtility.cs.meta new file mode 100644 index 00000000..811d2dd9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/DatePickerUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 820f17a2a2304439f9a0c0557a385e43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeAlertDialog.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeAlertDialog.cs new file mode 100644 index 00000000..6263e27d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeAlertDialog.cs @@ -0,0 +1,114 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal sealed class NativeAlertDialog : NativeAlertDialogInterfaceBase, INativeAlertDialogInterface + { + #region Constructors + + static NativeAlertDialog() + { + // initialise component + AlertControllerBinding.NPAlertControllerRegisterCallback(actionSelectCallback: HandleAlertActionSelectCallbackInternal); + } + + public NativeAlertDialog(AlertDialogStyle alertStyle) + { + // prepare component + var nativePtr = AlertControllerBinding.NPAlertControllerCreate(title: string.Empty, message: string.Empty, preferredStyle: AlertControllerUtility.ConvertToUIAlertControllerStyle(alertStyle)); + Assert.IsFalse(IntPtr.Zero == nativePtr, Diagnostics.kCreateNativeObjectError); + + // set property + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + + // add to collection to map action + NativeInstanceMap.AddInstance(nativePtr, this); + } + + ~NativeAlertDialog() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + public override void SetTitle(string value) + { + AlertControllerBinding.NPAlertControllerSetTitle(AddrOfNativeObject(), value); + } + + public override string GetTitle() + { + return AlertControllerBinding.NPAlertControllerGetTitle(AddrOfNativeObject()); + } + + public override void SetMessage(string value) + { + AlertControllerBinding.NPAlertControllerSetMessage(AddrOfNativeObject(), value); + } + + public override string GetMessage() + { + return AlertControllerBinding.NPAlertControllerGetMessage(AddrOfNativeObject()); + } + + public override void AddButton(string text, bool isCancelType) + { + AlertControllerBinding.NPAlertControllerAddAction(AddrOfNativeObject(), text, isCancelType); + } + + public override void Show() + { + AlertControllerBinding.NPAlertControllerShow(AddrOfNativeObject()); + } + + public override void Dismiss() + { + AlertControllerBinding.NPAlertControllerDismiss(AddrOfNativeObject()); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(AlertActionSelectNativeCallback))] + private static void HandleAlertActionSelectCallbackInternal(IntPtr nativePtr, int selectedButtonIndex) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + owner.SendButtonClickEvent(selectedButtonIndex); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeAlertDialog.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeAlertDialog.cs.meta new file mode 100644 index 00000000..c5bf9904 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeAlertDialog.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b907aa56c3ecb446abef6ca284d1cba2 +timeCreated: 1576912639 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDatepicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDatepicker.cs new file mode 100644 index 00000000..0bf6eee1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDatepicker.cs @@ -0,0 +1,141 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.CoreLibrary; +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal sealed class NativeDatePicker : NativeDatePickerInterfaceBase, INativeDatePickerInterface + { + #region Fields + + private DateTimeKind m_kind; + private DateTime? m_minimumDate; + private DateTime? m_maximumDate; + private DateTime? m_initialDate; + + + #endregion + + #region Constructors + + static NativeDatePicker() + { + // initialise component + DatePickerControllerBinding.NPDatePickerControllerRegisterCallback(callback: HandleDatePickerControllerCallbackInternal); + } + + public NativeDatePicker(DatePickerMode mode) : base(mode) + { + } + + ~NativeDatePicker() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + public override void SetKind(DateTimeKind value) + { + m_kind = value; + } + + public override void SetMinimumDate(DateTime? value) + { + m_minimumDate = value; + } + + public override void SetMaximumDate(DateTime? value) + { + m_maximumDate = value; + } + + public override void SetInitialDate(DateTime? value) + { + m_initialDate = value; + } + + public override void Show() + { + long initialEpoch = GetEpochInSeconds(m_initialDate, DateTimeOffset.Now.ToUnixTimeSeconds()); + long minimumEpoch = GetEpochInSeconds(m_minimumDate); + long maximumEpoch = GetEpochInSeconds(m_maximumDate); + + DatePickerClosedInternalCallback callback = (DateTime? selectedDate, Error error) => + { + SendCloseEvent(selectedDate, error); + }; + + IntPtr tagPtr = MarshalUtility.GetIntPtr(callback); + DatePickerControllerBinding.NPDatePickerControllerShow(DatePickerUtility.ConvertToUIDatePickerMode(Mode), initialEpoch, minimumEpoch, maximumEpoch, tagPtr); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(DatePickerControllerNativeCallback))] + private static void HandleDatePickerControllerCallbackInternal(long selectedValue, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + try + { + DateTime? selectedTime = (selectedValue == -1) ? null : (DateTime?)DateTimeOffset.FromUnixTimeSeconds(selectedValue).DateTime; + ((DatePickerClosedInternalCallback)(tagHandle.Target))(selectedTime, null); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + #endregion + + #region Utility methods + + private long GetEpochInSeconds(DateTime? dateTime, long defualtValue = -1) + { + if (dateTime == null) + return defualtValue; + + TimeSpan timeSpan = dateTime.Value - new DateTime(1970, 1, 1); + long epoch = (int)timeSpan.TotalSeconds; + return epoch; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDatepicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDatepicker.cs.meta new file mode 100644 index 00000000..99a8d767 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDatepicker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: acdb46bcf00224f7c9fe452dca9a18b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDelegates.cs new file mode 100644 index 00000000..ae050381 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDelegates.cs @@ -0,0 +1,12 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal delegate void AlertActionSelectNativeCallback(IntPtr nativePtr, int selectedButtonIndex); + internal delegate void DatePickerControllerNativeCallback(long selectedValue, IntPtr tagPtr); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDelegates.cs.meta new file mode 100644 index 00000000..64ccffb5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 32992a9601ca64a1da868d0a2b524d2a +timeCreated: 1553076523 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeUIInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeUIInterface.cs new file mode 100644 index 00000000..a023a699 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeUIInterface.cs @@ -0,0 +1,33 @@ +#if UNITY_IOS || UNITY_TVOS + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + public sealed class NativeUIInterface : NativeUIInterfaceBase, INativeUIInterface + { + #region Constructors + + public NativeUIInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override INativeAlertDialogInterface CreateAlertDialog(AlertDialogStyle style) + { + return new NativeAlertDialog(style); + } + + public override INativeDatePickerInterface CreateDatePicker(DatePickerMode mode) + { + /*var unityUIInterface = new UnityUIInterface(); + return unityUIInterface.CreateDatePicker(mode);*/ + + return new NativeDatePicker(mode); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeUIInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeUIInterface.cs.meta new file mode 100644 index 00000000..f449abd0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/NativeUIInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f202bdb7569734089995bf4a42fe0b28 +timeCreated: 1577084744 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIAlertControllerStyle.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIAlertControllerStyle.cs new file mode 100644 index 00000000..a5e973ce --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIAlertControllerStyle.cs @@ -0,0 +1,16 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal enum UIAlertControllerStyle : long + { + UIAlertControllerStyleActionSheet = 0, + + UIAlertControllerStyleAlert, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIAlertControllerStyle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIAlertControllerStyle.cs.meta new file mode 100644 index 00000000..0a32ba88 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIAlertControllerStyle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4f3e8af48acea425c85e3ea658b3eb99 +timeCreated: 1553076668 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIDatePickerMode.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIDatePickerMode.cs new file mode 100644 index 00000000..22ab78f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIDatePickerMode.cs @@ -0,0 +1,16 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NativeUICore.iOS +{ + internal enum UIDatePickerMode : long + { + UIDatePickerModeTime = 0, + UIDatePickerModeDate, + UIDatePickerModeDateAndTime + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIDatePickerMode.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIDatePickerMode.cs.meta new file mode 100644 index 00000000..cec4e667 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NativeUI/UIDatePickerMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 407690b11a6d04bd39cac3bd928f42fc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices.meta new file mode 100644 index 00000000..b130a82e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8f2ad37386d44426f8c5fc3782a6139e +folderAsset: yes +timeCreated: 1553077406 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NativeDelegates.cs new file mode 100644 index 00000000..df030e4a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NativeDelegates.cs @@ -0,0 +1,11 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.EssentialKit; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore.iOS +{ + internal delegate void ReachabilityChangeNativeCallback(bool isReachable, NetworkStatus networkStatus); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NativeDelegates.cs.meta new file mode 100644 index 00000000..2030eb3c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dfd6b4c1f203f413dad9ed0cfaa1ed2c +timeCreated: 1553345360 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesBinding.cs new file mode 100644 index 00000000..006d9805 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesBinding.cs @@ -0,0 +1,30 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore.iOS +{ + internal static class NetworkServicesBinding + { + [DllImport("__Internal")] + public static extern void NPNetworkServicesRegisterCallbacks(ReachabilityChangeNativeCallback internetReachabilityChangeCallback, ReachabilityChangeNativeCallback hostReachabilityChangeCallback); + + [DllImport("__Internal")] + public static extern void NPNetworkServicesInit(string hostAddress); + + [DllImport("__Internal")] + public static extern void NPNetworkServicesStartReachabilityNotifier(); + + [DllImport("__Internal")] + public static extern void NPNetworkServicesStopReachabilityNotifier(); + + [DllImport("__Internal")] + public static extern NetworkStatus NPNetworkServicesGetInternetReachabilityStatus(); + + [DllImport("__Internal")] + public static extern NetworkStatus NPNetworkServicesGetHostReachabilityStatus(); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesBinding.cs.meta new file mode 100644 index 00000000..688bd980 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c9c81b7ebe6704f1a93c1ff51ebe5949 +timeCreated: 1553077418 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesInterface.cs new file mode 100644 index 00000000..16cf7306 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesInterface.cs @@ -0,0 +1,72 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using AOT; +using VoxelBusters.EssentialKit; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore.iOS +{ + public sealed class NetworkServicesInterface : NativeNetworkServicesInterfaceBase, INativeNetworkServicesInterface + { + #region Static fields + + private static bool s_initialised = false; + + private static NetworkServicesInterface s_instance = null; + + #endregion + + #region Constructors + + public NetworkServicesInterface() + : base(isAvailable: true) + { + if (!s_initialised) + { + s_initialised = true; + + NetworkServicesBinding.NPNetworkServicesRegisterCallbacks(HandleInternetReachabilityChangeNativeCallback, HandleHostReachabilityChangeNativeCallback); + + string hostAddress = NetworkServices.UnitySettings.HostAddress.IpV6; + NetworkServicesBinding.NPNetworkServicesInit(hostAddress); + } + + // save reference + s_instance = this; + } + + #endregion + + #region Base class methods + + public override void StartNotifier() + { + NetworkServicesBinding.NPNetworkServicesStartReachabilityNotifier(); + } + + public override void StopNotifier() + { + NetworkServicesBinding.NPNetworkServicesStopReachabilityNotifier(); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(ReachabilityChangeNativeCallback))] + private static void HandleInternetReachabilityChangeNativeCallback(bool isReachable, NetworkStatus networkStatus) + { + s_instance.SendInternetConnectivityChangeEvent(isReachable); + } + + [MonoPInvokeCallback(typeof(ReachabilityChangeNativeCallback))] + private static void HandleHostReachabilityChangeNativeCallback(bool isReachable, NetworkStatus networkStatus) + { + s_instance.SendHostReachabilityChangeEvent(isReachable); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesInterface.cs.meta new file mode 100644 index 00000000..27880195 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkServicesInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3b980781d1f5e4401a7ad26930f93da6 +timeCreated: 1553078261 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkStatus.cs new file mode 100644 index 00000000..73b2280c --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkStatus.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NetworkServicesCore.iOS +{ + internal enum NetworkStatus : long + { + NotReachable = 0, + + ReachableViaWiFi, + + ReachableViaWWAN, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkStatus.cs.meta new file mode 100644 index 00000000..b544c19e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NetworkServices/NetworkStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: abde3f2d1e63d4dbcaa03cb3f071c643 +timeCreated: 1553497736 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices.meta new file mode 100644 index 00000000..d70a4d78 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 962f1df6eb3ea46e5b2bdee23ef2d91b +folderAsset: yes +timeCreated: 1553079673 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/MutableNotification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/MutableNotification.cs new file mode 100644 index 00000000..06a6ea3d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/MutableNotification.cs @@ -0,0 +1,134 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal sealed class MutableNotification : Notification, IMutableNotification + { + #region Constructors + + public MutableNotification(string notificationId) + : base(notificationId) + { + // set properties + var contentPtr = NotificationBinding.NPNotificationContentCreate(); + SetNativeContentInternal(new IosNativeObjectRef(contentPtr, retain: false)); + } + + ~MutableNotification() + { + Dispose(false); + } + + #endregion + + #region INotificationPropertySetter implementation + + public void SetTitle(string value) + { + NotificationBinding.NPNotificationContentSetTitle(GetNativeContentInternal().Pointer, value); + } + + public void SetSubtitle(string value) + { + NotificationBinding.NPNotificationContentSetSubtitle(GetNativeContentInternal().Pointer, value); + } + + public void SetBody(string value) + { + NotificationBinding.NPNotificationContentSetBody(GetNativeContentInternal().Pointer, value); + } + + public void SetBadge(int value) + { + NotificationBinding.NPNotificationContentSetBadge(GetNativeContentInternal().Pointer, value); + } + + public void SetUserInfo(IDictionary value) + { + string jsonStr = ExternalServiceProvider.JsonServiceProvider.ToJson(value); + NotificationBinding.NPNotificationContentSetUserInfo(GetNativeContentInternal().Pointer, jsonStr); + } + + public void SetSoundFileName(string value) + { + NotificationBinding.NPNotificationContentSetSoundName(GetNativeContentInternal().Pointer, value); + } + + public void SetIosProperties(NotificationIosProperties value) + { + // copy new value + m_iosProperties = value; + + // sync property values + if (!string.IsNullOrEmpty(m_iosProperties.LaunchImageFileName)) + { + NotificationBinding.NPNotificationContentSetLaunchImageName(GetNativeContentInternal().Pointer, value.LaunchImageFileName); + } + } + + public void SetAndroidProperties(NotificationAndroidProperties value) + { } + + public void SetTrigger(INotificationTrigger trigger) + { + if (!CanCreateTrigger()) + { + return; + } + + // set property + var triggerPtr = CreateNativeTrigger(trigger); + SetTriggerInternal(trigger, new IosNativeObjectRef(triggerPtr, retain: false)); + } + + public void SetPriority(NotificationPriority value) + { + NotificationBinding.NPNotificationContentSetPriority(GetNativeContentInternal().Pointer, value); + } + + #endregion + + #region Private methods + + private IntPtr CreateNativeTrigger(INotificationTrigger trigger) + { + if (trigger is TimeIntervalNotificationTrigger) + { + TimeIntervalNotificationTrigger timeIntervalTrigger = (TimeIntervalNotificationTrigger)trigger; + return NotificationBinding.NPTimeIntervalNotificationTriggerCreate(timeIntervalTrigger.TimeInterval, timeIntervalTrigger.Repeats); + } + else if (trigger is CalendarNotificationTrigger) + { + CalendarNotificationTrigger calendarTrigger = (CalendarNotificationTrigger)trigger; + return NotificationBinding.NPCalendarNotificationTriggerCreate(calendarTrigger.DateComponents, calendarTrigger.Repeats); + } + else if (trigger is LocationNotificationTrigger) + { + LocationNotificationTrigger locationTrigger = (LocationNotificationTrigger)trigger; + UnityCircularRegion region = locationTrigger.Region; + return NotificationBinding.NPLocationNotificationTriggerCreate(region, locationTrigger.NotifyOnEntry, locationTrigger.NotifyOnExit, locationTrigger.Repeats); + } + + throw VBException.NotSupported(trigger.ToString()); + } + + #endregion + + #region Internal methods + + internal void SetRequestPtr(IntPtr requestPtr, bool retain) + { + NativeObjectRef = new IosNativeObjectRef(requestPtr, retain); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/MutableNotification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/MutableNotification.cs.meta new file mode 100644 index 00000000..c29b0ec1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/MutableNotification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 33cb61f360bf24580ae399cad2491228 +timeCreated: 1562056198 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NativeDelegates.cs new file mode 100644 index 00000000..d77f15f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NativeDelegates.cs @@ -0,0 +1,24 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal delegate void RequestAuthorizationNativeCallback(UNAuthorizationStatus status, NativeError error, IntPtr tagPtr); + + internal delegate void GetSettingsNativeCallback(ref UNNotificationSettingsData settings, IntPtr tagPtr); + + internal delegate void ScheduleNotificationNativeCallback(NativeError error, IntPtr tagPtr); + + internal delegate void GetScheduledNotificationsNativeCallback(ref NativeArray arrayPtr, NativeError error, IntPtr tagPtr); + + internal delegate void GetDeliveredNotificationsNativeCallback(ref NativeArray arrayPtr, NativeError error, IntPtr tagPtr); + + internal delegate void RegisterForRemoteNotificationsNativeCallback(string deviceToken, NativeError error, IntPtr tagPtr); + + internal delegate void NotificationReceivedNativeCallback(IntPtr nativePtr, bool isLaunchNotification); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NativeDelegates.cs.meta new file mode 100644 index 00000000..487da731 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b1ea10d907aa4a98896875841d54752 +timeCreated: 1554524154 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/Notification.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/Notification.cs new file mode 100644 index 00000000..5b8e6464 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/Notification.cs @@ -0,0 +1,192 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal class Notification : NotificationBase + { +#region Fields + + private INotificationTrigger m_trigger; + + private IosNativeObjectRef m_nativeContent; + + private IosNativeObjectRef m_nativeTrigger; + + protected NotificationIosProperties m_iosProperties; + + private bool m_isLaunchNotification; + + +#endregion + +#region Constructors + + protected Notification(string notificationId) + : base(notificationId) + { + // set properties + m_nativeContent = null; + m_nativeTrigger = null; + m_iosProperties = null; + m_isLaunchNotification = false; + } + + + public Notification(IntPtr requestPtr, bool isLaunchNotification = false) + : base(NotificationBinding.NPNotificationRequestGetId(requestPtr)) + { + var contentPtr = NotificationBinding.NPNotificationRequestGetContent(requestPtr); + var triggerPtr = NotificationBinding.NPNotificationRequestGetTrigger(requestPtr); + + // set native properties + NativeObjectRef = new IosNativeObjectRef(requestPtr); + if (contentPtr != IntPtr.Zero) + { + m_nativeContent = new IosNativeObjectRef(contentPtr, retain: false); + } + if (triggerPtr != IntPtr.Zero) + { + m_nativeTrigger = new IosNativeObjectRef(triggerPtr, retain: false); + } + + // create ios specific properties object + string launchImage = NotificationBinding.NPNotificationContentGetLaunchImageName(m_nativeContent.Pointer); + m_iosProperties = new NotificationIosProperties(launchImageFileName: launchImage); + + m_isLaunchNotification = isLaunchNotification; + } + + ~Notification() + { + Dispose(false); + } + +#endregion + +#region Base class implementation + + protected override string GetTitleInternal() + { + return NotificationBinding.NPNotificationContentGetTitle(m_nativeContent.Pointer); + } + + protected override string GetSubtitleInternal() + { + return NotificationBinding.NPNotificationContentGetSubtitle(m_nativeContent.Pointer); + } + + protected override string GetBodyInternal() + { + return NotificationBinding.NPNotificationContentGetBody(m_nativeContent.Pointer); + } + + protected override int GetBadgeInternal() + { + return NotificationBinding.NPNotificationContentGetBadge(m_nativeContent.Pointer); + } + + protected override IDictionary GetUserInfoInternal() + { + string jsonStr = NotificationBinding.NPNotificationContentGetUserInfo(m_nativeContent.Pointer); + return (IDictionary)ExternalServiceProvider.JsonServiceProvider.FromJson(jsonStr); + } + + protected override string GetSoundFileNameInternal() + { + return null; + } + + protected override INotificationTrigger GetTriggerInternal() + { + // reading property is allowed for existing notifications only + if (null == m_trigger) + { + if (NativeObjectRef != null && m_nativeTrigger != null) + { + m_trigger = NotificationTrigger.CreateNotificationTrigger(AddrOfNativeObject(), m_nativeTrigger.Pointer); + } + } + + return m_trigger; + } + + protected override bool GetIsLaunchNotificationInternal() + { + return m_isLaunchNotification; + } + + protected override NotificationIosProperties GetIosPropertiesInternal() + { + return m_iosProperties; + } + + protected override NotificationAndroidProperties GetAndroidPropertiesInternal() + { + return null; + } + +#endregion + +#region Private methods + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + if (m_nativeContent != null) + { + m_nativeContent.Dispose(); + } + if (m_nativeTrigger != null) + { + m_nativeTrigger.Dispose(); + } + + base.Dispose(disposing); + } + +#endregion + +#region Internal methods + + internal IosNativeObjectRef GetNativeContentInternal() + { + return m_nativeContent; + } + + internal void SetNativeContentInternal(IosNativeObjectRef obj) + { + m_nativeContent = obj; + } + + internal IosNativeObjectRef GetNativeTriggerInternal() + { + return m_nativeTrigger; + } + + internal void SetTriggerInternal(INotificationTrigger trigger, IosNativeObjectRef nativeTrigger) + { + m_trigger = trigger; + m_nativeTrigger = nativeTrigger; + } + + internal bool CanCreateTrigger() + { + return (m_trigger == null); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/Notification.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/Notification.cs.meta new file mode 100644 index 00000000..988cb396 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/Notification.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcb33932a2b5f4e32b01093edee48d8c +timeCreated: 1554708693 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationBinding.cs new file mode 100644 index 00000000..aa6ab976 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationBinding.cs @@ -0,0 +1,98 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal static class NotificationBinding + { + [DllImport("__Internal")] + public static extern IntPtr NPNotificationRequestCreate(string id, IntPtr contentPtr, IntPtr triggerPtr); + + [DllImport("__Internal")] + public static extern string NPNotificationRequestGetId(IntPtr requestPtr); + + [DllImport("__Internal")] + public static extern UNNotificationTriggerType NPNotificationRequestGetTriggerType(IntPtr requestPtr); + + [DllImport("__Internal")] + public static extern IntPtr NPNotificationRequestGetContent(IntPtr requestPtr); + + [DllImport("__Internal")] + public static extern IntPtr NPNotificationRequestGetTrigger(IntPtr requestPtr); + + [DllImport("__Internal")] + public static extern IntPtr NPNotificationContentCreate(); + + [DllImport("__Internal")] + public static extern string NPNotificationContentGetTitle(IntPtr contentPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetTitle(IntPtr contentPtr, string value); + + [DllImport("__Internal")] + public static extern string NPNotificationContentGetSubtitle(IntPtr contentPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetSubtitle(IntPtr contentPtr, string value); + + [DllImport("__Internal")] + public static extern string NPNotificationContentGetBody(IntPtr contentPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetBody(IntPtr contentPtr, string value); + + [DllImport("__Internal")] + public static extern int NPNotificationContentGetBadge(IntPtr contentPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetBadge(IntPtr contentPtr, int value); + + [DllImport("__Internal")] + public static extern string NPNotificationContentGetUserInfo(IntPtr contentPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetUserInfo(IntPtr contentPtr, string jsonStr); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetSoundName(IntPtr contentPtr, string soundName); + + [DllImport("__Internal")] + public static extern string NPNotificationContentGetLaunchImageName(IntPtr contentPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetLaunchImageName(IntPtr contentPtr, string value); + + [DllImport("__Internal")] + public static extern string NPNotificationContentGetCategoryId(IntPtr contentPtr); + + [DllImport("__Internal")] + public static extern bool NPNotificationTriggerGetRepeats(IntPtr triggerPtr); + + [DllImport("__Internal")] + public static extern IntPtr NPTimeIntervalNotificationTriggerCreate(double interval, bool repeats); + + [DllImport("__Internal")] + public static extern void NPTimeIntervalNotificationTriggerGetProperties(IntPtr triggerPtr, ref double timeInterval, ref string nextTriggerDate, ref bool repeats); + + [DllImport("__Internal")] + public static extern IntPtr NPCalendarNotificationTriggerCreate(UnityDateComponents dateComponents, bool repeats); + + [DllImport("__Internal")] + public static extern string NPCalendarNotificationTriggerGetProperties(IntPtr triggerPtr, ref UnityDateComponents dateComponents, ref string nextTriggerDate, ref bool repeats); + + [DllImport("__Internal")] + public static extern IntPtr NPLocationNotificationTriggerCreate(UnityCircularRegion regionData, bool notifyOnEntry, bool notifyOnExit, bool repeats); + + [DllImport("__Internal")] + public static extern void NPLocationNotificationTriggerGetProperties(IntPtr triggerPtr, ref UnityCircularRegion regionData, ref bool notifyOnEntry, ref bool notifyOnExit, ref bool repeats); + + [DllImport("__Internal")] + public static extern void NPNotificationContentSetPriority(IntPtr contentPtr, NotificationPriority priority); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationBinding.cs.meta new file mode 100644 index 00000000..07709ecf --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e5e70a7fbd760467da6707f563f2ef3d +timeCreated: 1554523817 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterBinding.cs new file mode 100644 index 00000000..e69d6a5f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterBinding.cs @@ -0,0 +1,61 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal static class NotificationCenterBinding + { + [DllImport("__Internal")] + public static extern void NPNotificationCenterRegisterCallbacks(RequestAuthorizationNativeCallback requestAuthorizationCallback, + GetSettingsNativeCallback getSettingsCallback, + ScheduleNotificationNativeCallback scheduleLocalNotificationCallback, + GetScheduledNotificationsNativeCallback getScheduledNotificationsCallback, + GetDeliveredNotificationsNativeCallback getDeliveredNotificationsCallback, + RegisterForRemoteNotificationsNativeCallback registerForRemoteNotificationCallback, + NotificationReceivedNativeCallback notificationReceivedCallback); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterInit(UNNotificationPresentationOptions presentationOptions); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterRequestAuthorization(UNAuthorizationOptions options, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterGetSettings(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterScheduleLocalNotification(IntPtr notificationRequestPtr, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterGetScheduledNotifications(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterRemovePendingNotification(string notificationId); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterRemoveAllPendingNotifications(); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterRemoveAllDeliveredNotifications(); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterGetDeliveredNotifications(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterRegisterForRemoteNotifications(IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern bool NPNotificationCenterIsRegisteredForRemoteNotifications(); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterUnregisterForRemoteNotifications(); + + [DllImport("__Internal")] + public static extern void NPNotificationCenterSetApplicationIconBadgeNumber(int count); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterBinding.cs.meta new file mode 100644 index 00000000..b2ad333a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0e06f1d15984e47e1b96caac7eb63c66 +timeCreated: 1554523830 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterInterface.cs new file mode 100644 index 00000000..ead82583 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterInterface.cs @@ -0,0 +1,303 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + public sealed class NotificationCenterInterface : NativeNotificationCenterInterfaceBase, INativeNotificationCenterInterface + { + #region Static fields + + private static NotificationCenterInterface s_sharedInstance = null; + + #endregion + + #region Constructors + + public NotificationCenterInterface() + : base(isAvailable: true) + { + if (s_sharedInstance == null) + { + // save reference + s_sharedInstance = this; + + // initialise native component + var unitySettings = NotificationServices.UnitySettings; + NotificationCenterBinding.NPNotificationCenterRegisterCallbacks(HandleRequestAuthorizationCallback, HandleGetSettingsCallback, HandleScheduleNotificationCallback, HandleGetScheduledNotificationsCallback, HandleGetDeliveredNotificationsCallback, HandleRegisterForRemoteNotificationsCallback, HandleNotificationReceivedCallback); + NotificationCenterBinding.NPNotificationCenterInit(NotificationServicesUtility.ConvertToUNNotificationPresentationOptions(unitySettings.PresentationOptions)); + } + } + + #endregion + + #region Base class methods + + public override void RequestPermission(NotificationPermissionOptions options, RequestPermissionInternalCallback callback) + { + // get native representation + var authorizationOptions = NotificationServicesUtility.ConvertToUNAuthorizationOptions(options); + + // make request + var tagPtr = MarshalUtility.GetIntPtr(callback); + NotificationCenterBinding.NPNotificationCenterRequestAuthorization(authorizationOptions, tagPtr); + } + + public override void GetSettings(GetSettingsInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + NotificationCenterBinding.NPNotificationCenterGetSettings(tagPtr); + } + + public override IMutableNotification CreateMutableNotification(string notificationId) + { + return new MutableNotification(notificationId); + } + + public override void ScheduleNotification(INotification notification, ScheduleNotificationInternalCallback callback) + { + var requestPtr = ((NotificationBase)notification).AddrOfNativeObject(); + if (requestPtr != IntPtr.Zero) + { + callback(false, new Error(description: "The operation could not be completed as request object was already scheduled")); + return; + } + + // create request object + var mutableNotification = (MutableNotification)notification; + var nativeContent = mutableNotification.GetNativeContentInternal(); + var nativeTrigger = mutableNotification.GetNativeTriggerInternal(); + + var contentPtr = (nativeContent == null) ? IntPtr.Zero : nativeContent.Pointer; + var triggerPtr = (nativeTrigger == null) ? IntPtr.Zero : nativeTrigger.Pointer; + requestPtr = NotificationBinding.NPNotificationRequestCreate(mutableNotification.Id, contentPtr, triggerPtr); + mutableNotification.SetRequestPtr(requestPtr, retain: false); + + // schedule notification + var tagPtr = MarshalUtility.GetIntPtr(callback); + NotificationCenterBinding.NPNotificationCenterScheduleLocalNotification(requestPtr, tagPtr); + } + + public override void GetScheduledNotifications(GetNotificationsInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + NotificationCenterBinding.NPNotificationCenterGetScheduledNotifications(tagPtr); + } + + public override void CancelScheduledNotification(string notificationId) + { + NotificationCenterBinding.NPNotificationCenterRemovePendingNotification(notificationId); + } + + public override void CancelAllScheduledNotifications() + { + NotificationCenterBinding.NPNotificationCenterRemoveAllPendingNotifications(); + } + + public override void GetDeliveredNotifications(GetNotificationsInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + NotificationCenterBinding.NPNotificationCenterGetDeliveredNotifications(tagPtr); + } + + public override void RemoveAllDeliveredNotifications() + { + NotificationCenterBinding.NPNotificationCenterRemoveAllDeliveredNotifications(); + } + + public override void RegisterForPushNotifications(RegisterForPushNotificationsInternalCallback callback) + { + var tagPtr = MarshalUtility.GetIntPtr(callback); + NotificationCenterBinding.NPNotificationCenterRegisterForRemoteNotifications(tagPtr); + } + + public override void UnregisterForPushNotifications() + { + NotificationCenterBinding.NPNotificationCenterUnregisterForRemoteNotifications(); + } + + public override bool IsRegisteredForPushNotifications() + { + return NotificationCenterBinding.NPNotificationCenterIsRegisteredForRemoteNotifications(); + } + + public override void SetApplicationIconBadgeNumber(int count) + { + NotificationCenterBinding.NPNotificationCenterSetApplicationIconBadgeNumber(count); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(RequestAuthorizationNativeCallback))] + private static void HandleRequestAuthorizationCallback(UNAuthorizationStatus status, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var permissionStatus = NotificationServicesUtility.ConvertToNotificationPermissionStatus(status); + var errorObj = error.Convert(NotificationServicesError.kDomain); + ((RequestPermissionInternalCallback)tagHandle.Target).Invoke(permissionStatus, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GetSettingsNativeCallback))] + private static void HandleGetSettingsCallback(ref UNNotificationSettingsData settings, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var unitySettings = new NotificationSettingsInternal( + permissionStatus: NotificationServicesUtility.ConvertToNotificationPermissionStatus(settings.AuthorizationStatus), + alertSetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.AlertSetting), + badgeSetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.BadgeSetting), + carPlaySetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.CarPlaySetting), + lockScreenSetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.LockScreenSetting), + notificationCenterSetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.NotificationCenterSetting), + soundSetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.SoundSetting), + criticalAlertSetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.CriticalAlertSetting), + announcementSetting: NotificationServicesUtility.ConvertToNotificationSettingStatus(settings.AnnouncementSetting), + alertStyle: NotificationServicesUtility.ConvertToNotificationAlertStyle(settings.AlertStyle), + previewStyle: NotificationServicesUtility.ConvertToNotificationPreviewStyle(settings.ShowPreviewsSetting), + exactTimingSetting: NotificationSettingStatus.Enabled); //This is enabled by default on iOS + ((GetSettingsInternalCallback)tagHandle.Target).Invoke(unitySettings); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(ScheduleNotificationNativeCallback))] + private static void HandleScheduleNotificationCallback(NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var errorObj = error.Convert(NotificationServicesError.kDomain); + ((ScheduleNotificationInternalCallback)tagHandle.Target).Invoke((errorObj == null), errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GetScheduledNotificationsNativeCallback))] + private static void HandleGetScheduledNotificationsCallback(ref NativeArray arrayPtr, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var nativeArray = MarshalUtility.CreateManagedArray(arrayPtr.Pointer, arrayPtr.Length); + var notifications = (nativeArray == null) + ? null + : Array.ConvertAll(nativeArray, (nativePtr) => new Notification(nativePtr)); + var errorObj = error.Convert(NotificationServicesError.kDomain); + ((GetNotificationsInternalCallback)tagHandle.Target).Invoke(notifications, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(GetDeliveredNotificationsNativeCallback))] + private static void HandleGetDeliveredNotificationsCallback(ref NativeArray arrayPtr, NativeError error, IntPtr tagPtr) + { + GCHandle tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // send result + var nativeArray = MarshalUtility.CreateManagedArray(arrayPtr.Pointer, arrayPtr.Length); + var notifications = (nativeArray == null) + ? null + : Array.ConvertAll(nativeArray, (nativePtr) => new Notification(nativePtr)); + var errorObj = error.Convert(NotificationServicesError.kDomain); + ((GetNotificationsInternalCallback)tagHandle.Target).Invoke(notifications, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + + [MonoPInvokeCallback(typeof(RegisterForRemoteNotificationsNativeCallback))] + private static void HandleRegisterForRemoteNotificationsCallback(string deviceToken, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + var errorObj = error.Convert(NotificationServicesError.kDomain); + ((RegisterForPushNotificationsInternalCallback)tagHandle.Target).Invoke(deviceToken, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(NotificationReceivedNativeCallback))] + private static void HandleNotificationReceivedCallback(IntPtr nativePtr, bool isLaunchNotification) + { + // send result + var notification = new Notification(nativePtr, isLaunchNotification); + s_sharedInstance.SendNotificationReceivedEvent(notification); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterInterface.cs.meta new file mode 100644 index 00000000..dae51fb8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationCenterInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c55876a2488f34c41b890f7d900e7131 +timeCreated: 1554525182 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationServicesUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationServicesUtility.cs new file mode 100644 index 00000000..0b8abb1a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationServicesUtility.cs @@ -0,0 +1,164 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Runtime.InteropServices; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal static class NotificationServicesUtility + { + #region Convert methods + + public static NotificationPermissionStatus ConvertToNotificationPermissionStatus(UNAuthorizationStatus status) + { + switch (status) + { + case UNAuthorizationStatus.UNAuthorizationStatusNotDetermined: + return NotificationPermissionStatus.NotDetermined; + + case UNAuthorizationStatus.UNAuthorizationStatusProvisional: + return NotificationPermissionStatus.Provisional; + + case UNAuthorizationStatus.UNAuthorizationStatusDenied: + return NotificationPermissionStatus.Denied; + + case UNAuthorizationStatus.UNAuthorizationStatusAuthorized: + return NotificationPermissionStatus.Authorized; + + default: + throw VBException.SwitchCaseNotImplemented(status); + } + } + + public static UNAuthorizationOptions ConvertToUNAuthorizationOptions(NotificationPermissionOptions unityOptions) + { + var nativeOptions = (UNAuthorizationOptions)0; + if (unityOptions.Contains(NotificationPermissionOptions.Badge)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionBadge; + } + if (unityOptions.Contains(NotificationPermissionOptions.Alert)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionAlert; + } + if (unityOptions.Contains(NotificationPermissionOptions.Sound)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionSound; + } + if (unityOptions.Contains(NotificationPermissionOptions.CarPlay)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionCarPlay; + } + if (unityOptions.Contains(NotificationPermissionOptions.CriticalAlert)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionCriticalAlert; + } + if (unityOptions.Contains(NotificationPermissionOptions.Provisional)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionProvisional; + } + if (unityOptions.Contains(NotificationPermissionOptions.ProvidesAppNotificationSettings)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionProvidesAppNotificationSettings; + } + if (unityOptions.Contains(NotificationPermissionOptions.Announcement)) + { + nativeOptions |= UNAuthorizationOptions.UNAuthorizationOptionAnnouncement; + } + + return nativeOptions; + } + + public static NotificationSettingStatus ConvertToNotificationSettingStatus(UNNotificationSetting status) + { + switch (status) + { + case UNNotificationSetting.UNNotificationSettingDisabled: + return NotificationSettingStatus.Disabled; + + case UNNotificationSetting.UNNotificationSettingEnabled: + return NotificationSettingStatus.Enabled; + + case UNNotificationSetting.UNNotificationSettingNotSupported: + return NotificationSettingStatus.NotSupported; + + default: + throw VBException.SwitchCaseNotImplemented(status); + } + } + + public static NotificationPreviewStyle ConvertToNotificationPreviewStyle(UNShowPreviewsSetting style) + { + switch (style) + { + case UNShowPreviewsSetting.UNShowPreviewsSettingAlways: + return NotificationPreviewStyle.Always; + + case UNShowPreviewsSetting.UNShowPreviewsSettingNever: + return NotificationPreviewStyle.Never; + + case UNShowPreviewsSetting.UNShowPreviewsSettingWhenAuthenticated: + return NotificationPreviewStyle.WhenAuthenticated; + + default: + throw VBException.SwitchCaseNotImplemented(style); + } + } + + public static NotificationAlertStyle ConvertToNotificationAlertStyle(UNAlertStyle style) + { + switch (style) + { + case UNAlertStyle.UNAlertStyleAlert: + return NotificationAlertStyle.Alert; + + case UNAlertStyle.UNAlertStyleBanner: + return NotificationAlertStyle.Banner; + + case UNAlertStyle.UNAlertStyleNone: + return NotificationAlertStyle.None; + + default: + throw VBException.SwitchCaseNotImplemented(style); + } + } + + public static UNNotificationPresentationOptions ConvertToUNNotificationPresentationOptions(NotificationPresentationOptions unityOptions) + { + var nativeOptions = (UNNotificationPresentationOptions)0; + if (unityOptions.Contains(NotificationPresentationOptions.Alert)) + { + nativeOptions |= UNNotificationPresentationOptions.UNNotificationPresentationOptionAlert; + } + if (unityOptions.Contains(NotificationPresentationOptions.Badge)) + { + nativeOptions |= UNNotificationPresentationOptions.UNNotificationPresentationOptionBadge; + } + if (unityOptions.Contains(NotificationPresentationOptions.Sound)) + { + nativeOptions |= UNNotificationPresentationOptions.UNNotificationPresentationOptionSound; + } + + return nativeOptions; + } + + public static bool Contains(this UNNotificationSetting options, UNNotificationSetting value) + { + return (options & value) != 0; + } + + public static bool Contains(this NotificationPermissionOptions options, NotificationPermissionOptions value) + { + return (options & value) != 0; + } + + public static bool Contains(this NotificationPresentationOptions options, NotificationPresentationOptions value) + { + return (options & value) != 0; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationServicesUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationServicesUtility.cs.meta new file mode 100644 index 00000000..02c8d42f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationServicesUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8bca9de2991f848b280a80265af4e60d +timeCreated: 1562129648 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationTrigger.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationTrigger.cs new file mode 100644 index 00000000..b975d1a6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationTrigger.cs @@ -0,0 +1,86 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal static class NotificationTrigger + { + #region Create methods + + public static INotificationTrigger CreateNotificationTrigger(IntPtr requestPtr, IntPtr triggerPtr) + { + // get trigger type + var triggerType = NotificationBinding.NPNotificationRequestGetTriggerType(requestPtr); + switch (triggerType) + { + case UNNotificationTriggerType.UNNotificationTriggerTypeTimeInterval: + return CreateTimeIntervalNotificationTrigger(triggerPtr); + + case UNNotificationTriggerType.UNNotificationTriggerTypeCalendar: + return CreateCalendarNotificationTrigger(triggerPtr); + + case UNNotificationTriggerType.UNNotificationTriggerTypeLocation: + return CreateLocationNotificationTrigger(triggerPtr); + + case UNNotificationTriggerType.UNNotificationTriggerTypePushNotification: + return CreatePushNotificationTrigger(); + + default: + throw VBException.SwitchCaseNotImplemented(triggerType); + } + } + + public static TimeIntervalNotificationTrigger CreateTimeIntervalNotificationTrigger(IntPtr triggerPtr) + { + // get properties + double timeInterval = 0; + string nextTriggerStr = null; + bool repeats = false; + NotificationBinding.NPTimeIntervalNotificationTriggerGetProperties(triggerPtr, ref timeInterval, ref nextTriggerStr, ref repeats); + var nextTriggerDate = IosNativePluginsUtility.ParseDateTimeStringInUTCFormat(nextTriggerStr); + + // create object + return new TimeIntervalNotificationTrigger(timeInterval, repeats, nextTriggerDate.ToLocalTime()); + } + + public static CalendarNotificationTrigger CreateCalendarNotificationTrigger(IntPtr triggerPtr) + { + // get properties + var dateComponents = new UnityDateComponents(); + string nextTriggerStr = null; + bool repeats = false; + NotificationBinding.NPCalendarNotificationTriggerGetProperties(triggerPtr, ref dateComponents, ref nextTriggerStr, ref repeats); + var nextTriggerDate = IosNativePluginsUtility.ParseDateTimeStringInUTCFormat(nextTriggerStr); + + // create object + return new CalendarNotificationTrigger(dateComponents, repeats, nextTriggerDate.ToLocalTime()); + } + + public static LocationNotificationTrigger CreateLocationNotificationTrigger(IntPtr triggerPtr) + { + // get properties + var region = new UnityCircularRegion(); + bool notifyOnEntry = false; + bool notifyOnExit = false; + bool repeats = false; + NotificationBinding.NPLocationNotificationTriggerGetProperties(triggerPtr, ref region, ref notifyOnEntry, ref notifyOnExit, ref repeats); + + // create object + return new LocationNotificationTrigger(region, notifyOnEntry, notifyOnExit, repeats); + } + + public static PushNotificationTrigger CreatePushNotificationTrigger() + { + return new PushNotificationTrigger(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationTrigger.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationTrigger.cs.meta new file mode 100644 index 00000000..35b79b98 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/NotificationTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 68ca5c9a843e1470398bfaa4cc694b81 +timeCreated: 1562071471 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAlertStyle.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAlertStyle.cs new file mode 100644 index 00000000..4349177d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAlertStyle.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal enum UNAlertStyle : long + { + UNAlertStyleNone = 0, + + UNAlertStyleBanner, + + UNAlertStyleAlert, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAlertStyle.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAlertStyle.cs.meta new file mode 100644 index 00000000..ee3fffcb --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAlertStyle.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 719ff6d1c193649e198bbf47f435fab2 +timeCreated: 1554525697 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationOptions.cs new file mode 100644 index 00000000..9ec78906 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationOptions.cs @@ -0,0 +1,29 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + [Flags] + internal enum UNAuthorizationOptions : long + { + UNAuthorizationOptionBadge = (1 << 0), + + UNAuthorizationOptionSound = (1 << 1), + + UNAuthorizationOptionAlert = (1 << 2), + + UNAuthorizationOptionCarPlay = (1 << 3), + + UNAuthorizationOptionCriticalAlert = (1 << 4), + + UNAuthorizationOptionProvidesAppNotificationSettings = (1 << 5), + + UNAuthorizationOptionProvisional = (1 << 6), + + UNAuthorizationOptionAnnouncement = (1 << 7) + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationOptions.cs.meta new file mode 100644 index 00000000..2c500683 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c56a107c0488e4dd4b37352233652b1d +timeCreated: 1554525260 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationStatus.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationStatus.cs new file mode 100644 index 00000000..0da5bf2d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationStatus.cs @@ -0,0 +1,23 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal enum UNAuthorizationStatus : long + { + // The user has not yet made a choice regarding whether the application may post user notifications. + UNAuthorizationStatusNotDetermined = 0, + + // The application is not authorized to post user notifications. + UNAuthorizationStatusDenied, + + // The application is authorized to post user notifications. + UNAuthorizationStatusAuthorized, + + // The application is authorized to post non-interruptive user notifications. + UNAuthorizationStatusProvisional, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationStatus.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationStatus.cs.meta new file mode 100644 index 00000000..9241921a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNAuthorizationStatus.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c11889305a05c4d8682adc863f7069fc +timeCreated: 1554525535 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationPresentationOptions.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationPresentationOptions.cs new file mode 100644 index 00000000..6451fe58 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationPresentationOptions.cs @@ -0,0 +1,19 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + [Flags] + internal enum UNNotificationPresentationOptions : long + { + UNNotificationPresentationOptionBadge = (1 << 0), + + UNNotificationPresentationOptionSound = (1 << 1), + + UNNotificationPresentationOptionAlert = (1 << 2), + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationPresentationOptions.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationPresentationOptions.cs.meta new file mode 100644 index 00000000..85531cc0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationPresentationOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2290b4df2a424d8fbbbeab5ea0e803c +timeCreated: 1554524823 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSetting.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSetting.cs new file mode 100644 index 00000000..ed6da25d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSetting.cs @@ -0,0 +1,20 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal enum UNNotificationSetting : long + { + // The application does not support this notification type + UNNotificationSettingNotSupported = 0, + + // The notification setting is turned off. + UNNotificationSettingDisabled, + + // The notification setting is turned on. + UNNotificationSettingEnabled, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSetting.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSetting.cs.meta new file mode 100644 index 00000000..b69141d6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSetting.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 51519ad57109f4b4282ad095ace335b5 +timeCreated: 1554525707 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSettingsData.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSettingsData.cs new file mode 100644 index 00000000..d9d3db05 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSettingsData.cs @@ -0,0 +1,83 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + [StructLayout(LayoutKind.Sequential)] + internal struct UNNotificationSettingsData + { + #region Properties + + public UNAuthorizationStatus AuthorizationStatus + { + get; + set; + } + + public UNNotificationSetting AlertSetting + { + get; + set; + } + + public UNNotificationSetting BadgeSetting + { + get; + set; + } + + public UNNotificationSetting CarPlaySetting + { + get; + set; + } + + public UNNotificationSetting LockScreenSetting + { + get; + set; + } + + public UNNotificationSetting NotificationCenterSetting + { + get; + set; + } + + public UNNotificationSetting SoundSetting + { + get; + set; + } + + public UNNotificationSetting CriticalAlertSetting + { + get; + set; + } + + public UNNotificationSetting AnnouncementSetting + { + get; + set; + } + + public UNAlertStyle AlertStyle + { + get; + set; + } + + public UNShowPreviewsSetting ShowPreviewsSetting + { + get; + set; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSettingsData.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSettingsData.cs.meta new file mode 100644 index 00000000..1d7e112e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationSettingsData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6b03d40bf0416491c9c9b8d13a1c224c +timeCreated: 1554728440 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationTriggerType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationTriggerType.cs new file mode 100644 index 00000000..598a322d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationTriggerType.cs @@ -0,0 +1,21 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal enum UNNotificationTriggerType : long + { + UNNotificationTriggerTypeUnknown, + + UNNotificationTriggerTypePushNotification, + + UNNotificationTriggerTypeCalendar, + + UNNotificationTriggerTypeTimeInterval, + + UNNotificationTriggerTypeLocation, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationTriggerType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationTriggerType.cs.meta new file mode 100644 index 00000000..b778b08a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNNotificationTriggerType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 97e608da0946e4108ac944cc94ce305a +timeCreated: 1554524144 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNShowPreviewsSetting.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNShowPreviewsSetting.cs new file mode 100644 index 00000000..ed8f9856 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNShowPreviewsSetting.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.NotificationServicesCore.iOS +{ + internal enum UNShowPreviewsSetting : long + { + UNShowPreviewsSettingAlways = 0, + + UNShowPreviewsSettingWhenAuthenticated, + + UNShowPreviewsSettingNever, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNShowPreviewsSetting.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNShowPreviewsSetting.cs.meta new file mode 100644 index 00000000..dda4e75b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/NotificationServices/UNShowPreviewsSetting.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5f6cd990df994ab59a9051cda0c2d0f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp.meta new file mode 100644 index 00000000..8a4469c3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f7a5d126fe9dd485cb6d5741c47507ec +folderAsset: yes +timeCreated: 1577099726 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/NativeRateMyAppInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/NativeRateMyAppInterface.cs new file mode 100644 index 00000000..9a4b2907 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/NativeRateMyAppInterface.cs @@ -0,0 +1,31 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.EssentialKit.NativeUICore.iOS; + +namespace VoxelBusters.EssentialKit.RateMyAppCore.iOS +{ + public class NativeRateMyAppInterface : NativeRateMyAppInterfaceBase + { + #region Constructors + + public NativeRateMyAppInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override void RequestStoreReview() + { + RateMyAppBinding.NPStoreReviewRequestReview(); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/NativeRateMyAppInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/NativeRateMyAppInterface.cs.meta new file mode 100644 index 00000000..e14981c9 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/NativeRateMyAppInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8d176269f95bc45f9a55deba8ccff34a +timeCreated: 1577101688 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/RateMyAppBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/RateMyAppBinding.cs new file mode 100644 index 00000000..50375de6 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/RateMyAppBinding.cs @@ -0,0 +1,12 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Runtime.InteropServices; + +namespace VoxelBusters.EssentialKit.RateMyAppCore.iOS +{ + internal static class RateMyAppBinding + { + [DllImport("__Internal")] + public static extern void NPStoreReviewRequestReview(); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/RateMyAppBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/RateMyAppBinding.cs.meta new file mode 100644 index 00000000..6bae6a9b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/RateMyApp/RateMyAppBinding.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 131c66ce310674c9d87b388508a45832 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices.meta new file mode 100644 index 00000000..4f05aa75 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0209ac494d7724c14b46d6effa133267 +folderAsset: yes +timeCreated: 1553000839 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMailComposeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMailComposeResult.cs new file mode 100644 index 00000000..da9d7369 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMailComposeResult.cs @@ -0,0 +1,19 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal enum MFMailComposeResult : long + { + MFMailComposeResultCancelled, + + MFMailComposeResultSaved, + + MFMailComposeResultSent, + + MFMailComposeResultFailed, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMailComposeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMailComposeResult.cs.meta new file mode 100644 index 00000000..82770e00 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMailComposeResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bddc09513b5a747a0a98a0bba38f4878 +timeCreated: 1553001055 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMessageComposeResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMessageComposeResult.cs new file mode 100644 index 00000000..644a64cc --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMessageComposeResult.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal enum MFMessageComposeResult : long + { + MFMessageComposeResultCancelled, + + MFMessageComposeResultSent, + + MFMessageComposeResultFailed, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMessageComposeResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMessageComposeResult.cs.meta new file mode 100644 index 00000000..40178076 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MFMessageComposeResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 575ebba0280474f45a97ec343135db98 +timeCreated: 1553002942 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailComposerBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailComposerBinding.cs new file mode 100644 index 00000000..74e806de --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailComposerBinding.cs @@ -0,0 +1,41 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal static class MailComposerBinding + { + [DllImport("__Internal")] + public static extern bool NPMailComposerCanSendMail(); + + [DllImport("__Internal")] + public static extern void NPMailComposerRegisterCallback(MailComposerClosedNativeCallback closedCallback); + + [DllImport("__Internal")] + public static extern IntPtr NPMailComposerCreate(); + + [DllImport("__Internal")] + public static extern void NPMailComposerShow(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPMailComposerSetRecipients(IntPtr nativePtr, MailRecipientType recipientType, string[] recipients, int count); + + [DllImport("__Internal")] + public static extern void NPMailComposerSetSubject(IntPtr nativePtr, string value); + + [DllImport("__Internal")] + public static extern void NPMailComposerSetBody(IntPtr nativePtr, string value, bool isHtml); + + [DllImport("__Internal")] + public static extern void NPMailComposerAddScreenshot(IntPtr nativePtr, string fileName); + + [DllImport("__Internal")] + public static extern void NPMailComposerAddAttachment(IntPtr nativePtr, UnityAttachment data); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailComposerBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailComposerBinding.cs.meta new file mode 100644 index 00000000..43eaf57f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailComposerBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 726d793be206d4bc2802bb1b6a91b38c +timeCreated: 1553000889 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailRecipientType.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailRecipientType.cs new file mode 100644 index 00000000..27c2fe2b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailRecipientType.cs @@ -0,0 +1,17 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal enum MailRecipientType : long + { + To, + + Cc, + + Bcc, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailRecipientType.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailRecipientType.cs.meta new file mode 100644 index 00000000..605c7591 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MailRecipientType.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 79d51dff86fff499383ea8f9f26b3a6d +timeCreated: 1553001047 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MessageComposerBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MessageComposerBinding.cs new file mode 100644 index 00000000..561f6899 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MessageComposerBinding.cs @@ -0,0 +1,47 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal sealed class MessageComposerBinding + { + [DllImport("__Internal")] + public static extern bool NPMessageComposerCanSendText(); + + [DllImport("__Internal")] + public static extern bool NPMessageComposerCanSendAttachments(); + + [DllImport("__Internal")] + public static extern bool NPMessageComposerCanSendSubject(); + + [DllImport("__Internal")] + public static extern void NPMessageComposerRegisterCallback(MessageComposerClosedNativeCallback closedCallback); + + [DllImport("__Internal")] + public static extern IntPtr NPMessageComposerCreate(); + + [DllImport("__Internal")] + public static extern void NPMessageComposerShow(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPMessageComposerSetRecipients(IntPtr nativePtr, string[] recipients, int count); + + [DllImport("__Internal")] + public static extern void NPMessageComposerSetSubject(IntPtr nativePtr, string value); + + [DllImport("__Internal")] + public static extern void NPMessageComposerSetBody(IntPtr nativePtr, string value); + + [DllImport("__Internal")] + public static extern void NPMessageComposerAddScreenshot(IntPtr nativePtr, string fileName); + + [DllImport("__Internal")] + public static extern void NPMessageComposerAddAttachment(IntPtr nativePtr, UnityAttachment data); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MessageComposerBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MessageComposerBinding.cs.meta new file mode 100644 index 00000000..1b96684f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/MessageComposerBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3293fc87f9f194718ac48c41b6e849d7 +timeCreated: 1553002953 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeDelegates.cs new file mode 100644 index 00000000..db4a6df3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeDelegates.cs @@ -0,0 +1,18 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal delegate void MailComposerClosedNativeCallback(IntPtr nativePtr, MFMailComposeResult result, NativeError error); + + internal delegate void MessageComposerClosedNativeCallback(IntPtr nativePtr, MFMessageComposeResult result); + + internal delegate void ShareSheetClosedNativeCallback(IntPtr nativePtr, bool completed, NativeError error); + + internal delegate void SocialShareComposerClosedNativeCallback(IntPtr nativePtr, SLComposeViewControllerResult result); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeDelegates.cs.meta new file mode 100644 index 00000000..ac38ea36 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 22519391f6cf74a51ae44d23cfe6c9b2 +timeCreated: 1553002896 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMailComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMailComposer.cs new file mode 100644 index 00000000..baa56aa5 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMailComposer.cs @@ -0,0 +1,146 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal sealed class NativeMailComposer : NativeMailComposerBase, INativeMailComposer + { + #region Constructors + + static NativeMailComposer() + { + // register callbacks + MailComposerBinding.NPMailComposerRegisterCallback(closedCallback: HandleMailComposerClosedCallbackInternal); + } + + public NativeMailComposer() + { + // create object + var nativePtr = MailComposerBinding.NPMailComposerCreate(); + Assert.IsFalse(IntPtr.Zero == nativePtr, Diagnostics.kCreateNativeObjectError); + + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + + // track instance + NativeInstanceMap.AddInstance(nativePtr, this); + } + + ~NativeMailComposer() + { + Dispose(false); + } + + #endregion + + #region Static methods + + public static bool CanSendMail() + { + return MailComposerBinding.NPMailComposerCanSendMail(); + } + + #endregion + + #region Base class methods + + public override void SetToRecipients(params string[] values) + { + int count = values.Length; + MailComposerBinding.NPMailComposerSetRecipients(AddrOfNativeObject(), MailRecipientType.To, values, count); + } + + public override void SetCcRecipients(params string[] values) + { + int count = values.Length; + MailComposerBinding.NPMailComposerSetRecipients(AddrOfNativeObject(), MailRecipientType.Cc, values, count); + } + + public override void SetBccRecipients(params string[] values) + { + int count = values.Length; + MailComposerBinding.NPMailComposerSetRecipients(AddrOfNativeObject(), MailRecipientType.Bcc, values, count); + } + + public override void SetSubject(string value) + { + MailComposerBinding.NPMailComposerSetSubject(AddrOfNativeObject(), value); + } + + public override void SetBody(string value, bool isHtml) + { + MailComposerBinding.NPMailComposerSetBody(AddrOfNativeObject(), value, isHtml); + } + + public override void AddScreenshot(string fileName) + { + MailComposerBinding.NPMailComposerAddScreenshot(AddrOfNativeObject(), fileName); + } + + public override void AddAttachmentData(byte[] data, string mimeType, string fileName) + { + // create data + GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); + UnityAttachment attachmentData = new UnityAttachment() + { + DataArrayLength = data.Length, + DataArrayPtr = handle.AddrOfPinnedObject(), + MimeTypePtr = Marshal.StringToHGlobalAuto(mimeType), + FileNamePtr = Marshal.StringToHGlobalAuto(fileName), + }; + MailComposerBinding.NPMailComposerAddAttachment(AddrOfNativeObject(), attachmentData); + + // release pinned data object + handle.Free(); + } + + public override void Show() + { + MailComposerBinding.NPMailComposerShow(AddrOfNativeObject()); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(MailComposerClosedNativeCallback))] + private static void HandleMailComposerClosedCallbackInternal(IntPtr nativePtr, MFMailComposeResult result, NativeError error) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, nameof(owner)); + + // send result + var errorObj = error.Convert(SharingServicesError.kDomain); + owner.SendCloseEvent(SharingUtility.ConvertToMailComposerResultCode(result), errorObj); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMailComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMailComposer.cs.meta new file mode 100644 index 00000000..0563499d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMailComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b055b0fa1017449b19f5d264ce3273e7 +timeCreated: 1576907091 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMessageComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMessageComposer.cs new file mode 100644 index 00000000..77b910d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMessageComposer.cs @@ -0,0 +1,150 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal sealed class NativeMessageComposer : NativeMessageComposerBase, INativeMessageComposer + { + #region Constructors + + static NativeMessageComposer() + { + // register for callbacks + MessageComposerBinding.NPMessageComposerRegisterCallback(closedCallback: HandleMessageComposerClosedCallbackInternal); + } + + public NativeMessageComposer() + { + // create object + var nativePtr = MessageComposerBinding.NPMessageComposerCreate(); + Assert.IsFalse(IntPtr.Zero == nativePtr, Diagnostics.kCreateNativeObjectError); + + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + + // track instance + NativeInstanceMap.AddInstance(nativePtr, this); + } + + ~NativeMessageComposer() + { + Dispose(false); + } + + #endregion + + #region Static methods + + public static bool CanSendText() + { + return MessageComposerBinding.NPMessageComposerCanSendText(); + } + + public static bool CanSendAttachments() + { + return MessageComposerBinding.NPMessageComposerCanSendAttachments(); + } + + public static bool CanSendSubject() + { + return MessageComposerBinding.NPMessageComposerCanSendSubject(); + } + + #endregion + + #region Base class methods + + public override void SetRecipients(params string[] values) + { + int count = values.Length; + MessageComposerBinding.NPMessageComposerSetRecipients(AddrOfNativeObject(), values, count); + } + + public override void SetSubject(string value) + { + MessageComposerBinding.NPMessageComposerSetSubject(AddrOfNativeObject(), value); + } + + public override void SetBody(string value) + { + MessageComposerBinding.NPMessageComposerSetBody(AddrOfNativeObject(), value); + } + + public override void AddScreenshot(string fileName) + { + MessageComposerBinding.NPMessageComposerAddScreenshot(AddrOfNativeObject(), fileName); + } + + public override void AddImage(Texture2D image, string fileName) + { + string mimeType; + byte[] data = image.Encode(out mimeType); + AddAttachmentData(data, mimeType, fileName); + } + + public override void AddAttachmentData(byte[] data, string mimeType, string fileName) + { + // create data + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + var attachmentData = new UnityAttachment() + { + DataArrayLength = data.Length, + DataArrayPtr = handle.AddrOfPinnedObject(), + MimeTypePtr = Marshal.StringToHGlobalAuto(mimeType), + FileNamePtr = Marshal.StringToHGlobalAuto(fileName), + }; + MessageComposerBinding.NPMessageComposerAddAttachment(AddrOfNativeObject(), attachmentData); + + // release pinned data object + handle.Free(); + } + + public override void Show() + { + MessageComposerBinding.NPMessageComposerShow(AddrOfNativeObject()); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(MessageComposerClosedNativeCallback))] + private static void HandleMessageComposerClosedCallbackInternal(IntPtr nativePtr, MFMessageComposeResult result) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + // send result + owner.SendCloseEvent(SharingUtility.ConvertToMessageComposerResultCode(result), null); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMessageComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMessageComposer.cs.meta new file mode 100644 index 00000000..9571cf5b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeMessageComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 36398f07f7cd54ddfb980b7f6f4922e5 +timeCreated: 1576908000 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeShareSheet.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeShareSheet.cs new file mode 100644 index 00000000..23e24dc3 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeShareSheet.cs @@ -0,0 +1,132 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + public sealed class NativeShareSheet : NativeShareSheetBase, INativeShareSheet + { +#region Constructors + + static NativeShareSheet() + { + // register callbacks + ShareSheetBinding.NPShareSheetRegisterCallback(closedCallback: HandleShareSheetClosedCallbackInternal); + } + + public NativeShareSheet() + { + // create object + var nativePtr = ShareSheetBinding.NPShareSheetCreate(); + Assert.IsFalse(IntPtr.Zero == nativePtr, Diagnostics.kCreateNativeObjectError); + + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + + // track instance + NativeInstanceMap.AddInstance(nativePtr, this); + } + + ~NativeShareSheet() + { + Dispose(false); + } + +#endregion + +#region Base class methods + + public override void AddText(string text) + { + ShareSheetBinding.NPShareSheetAddText(AddrOfNativeObject(), text); + } + + public override void AddScreenshot() + { + ShareSheetBinding.NPShareSheetAddScreenshot(AddrOfNativeObject()); + } + + public override void AddImage(byte[] imageData, string mimeType) + { + // copy data to managed environment + var handle = GCHandle.Alloc(imageData, GCHandleType.Pinned); + + // send data + ShareSheetBinding.NPShareSheetAddImage(AddrOfNativeObject(), handle.AddrOfPinnedObject(), imageData.Length); + + // release pinned data object + handle.Free(); + } + + public override void AddURL(URLString url) + { + ShareSheetBinding.NPShareSheetAddURL(AddrOfNativeObject(), url.ToString()); + } + + public override void AddAttachment(byte[] data, string mimeType, string fileName) + { + // create data + GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); + UnityAttachment attachmentData = new UnityAttachment() + { + DataArrayLength = data.Length, + DataArrayPtr = handle.AddrOfPinnedObject(), + MimeTypePtr = Marshal.StringToHGlobalAuto(mimeType), + FileNamePtr = Marshal.StringToHGlobalAuto(fileName), + }; + ShareSheetBinding.NPShareSheetAddAttachment(AddrOfNativeObject(), attachmentData); + + // release pinned data object + handle.Free(); + } + + public override void Show(Vector2 screenPosition) + { + var invertedPosition = UnityEngineUtility.InvertScreenPosition(screenPosition, invertX: false); + ShareSheetBinding.NPShareSheetShow(AddrOfNativeObject(), invertedPosition.x, invertedPosition.y); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + +#endregion + +#region Native callback methods + + [MonoPInvokeCallback(typeof(ShareSheetClosedNativeCallback))] + private static void HandleShareSheetClosedCallbackInternal(IntPtr nativePtr, bool completed, NativeError error) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + // send result + var errorObj = error.Convert(SharingServicesError.kDomain); + owner.SendCloseEvent(completed ? ShareSheetResultCode.Done : ShareSheetResultCode.Cancelled, errorObj); + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeShareSheet.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeShareSheet.cs.meta new file mode 100644 index 00000000..f5cb851f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeShareSheet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1cb1f973cbf3c44289925ee1b08ba952 +timeCreated: 1553080588 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSharingInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSharingInterface.cs new file mode 100644 index 00000000..d9e8d482 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSharingInterface.cs @@ -0,0 +1,68 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + public sealed class NativeSharingInterface : NativeSharingInterfaceBase, INativeSharingInterface + { + #region Constructors + + public NativeSharingInterface() + : base(isAvailable: true) + { } + + #endregion + + #region Base methods + + public override bool CanSendMail() + { + return NativeMailComposer.CanSendMail(); + } + + public override INativeMailComposer CreateMailComposer() + { + return new NativeMailComposer(); + } + + public override bool CanSendText() + { + return NativeMessageComposer.CanSendText(); + } + + public override bool CanSendAttachments() + { + return NativeMessageComposer.CanSendAttachments(); + } + + public override bool CanSendSubject() + { + return NativeMessageComposer.CanSendSubject(); + } + + public override INativeMessageComposer CreateMessageComposer() + { + return new NativeMessageComposer(); + } + + public override INativeShareSheet CreateShareSheet() + { + return new NativeShareSheet(); + } + + public override bool IsSocialShareComposerAvailable(SocialShareComposerType composerType) + { + return NativeSocialShareComposer.IsComposerAvailable(composerType); + } + + public override INativeSocialShareComposer CreateSocialShareComposer(SocialShareComposerType composerType) + { + return new NativeSocialShareComposer(composerType); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSharingInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSharingInterface.cs.meta new file mode 100644 index 00000000..9bffd5d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSharingInterface.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9cf724dc0391b448e999b20da5c4b4d7 +timeCreated: 1577082377 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSocialShareComposer.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSocialShareComposer.cs new file mode 100644 index 00000000..a9a38a17 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSocialShareComposer.cs @@ -0,0 +1,123 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + public sealed class NativeSocialShareComposer : NativeSocialShareComposerBase, INativeSocialShareComposer + { + #region Constructors + + static NativeSocialShareComposer() + { + // register callbacks + SocialShareComposerBinding.NPSocialShareComposerRegisterCallback(closedCallback: HandleSocialShareComposerClosedCallbackInternal); + } + + public NativeSocialShareComposer(SocialShareComposerType composerType) + { + // create object + var nativePtr = SocialShareComposerBinding.NPSocialShareComposerCreate(composerType); + Assert.IsFalse(IntPtr.Zero == nativePtr, Diagnostics.kCreateNativeObjectError); + + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + + // track instance + NativeInstanceMap.AddInstance(nativePtr, this); + } + + ~NativeSocialShareComposer() + { + Dispose(false); + } + + #endregion + + #region Static methods + + internal static bool IsComposerAvailable(SocialShareComposerType composerType) + { + return SocialShareComposerBinding.NPSocialShareComposerIsComposerAvailable(composerType); + } + + #endregion + + #region Base class methods + + public override void SetText(string value) + { + SocialShareComposerBinding.NPSocialShareComposerAddText(AddrOfNativeObject(), value); + } + + public override void AddScreenshot() + { + SocialShareComposerBinding.NPSocialShareComposerAddScreenshot(AddrOfNativeObject()); + } + + public override void AddImage(byte[] imageData) + { + // copy data to managed environment + var handle = GCHandle.Alloc(imageData, GCHandleType.Pinned); + + // send data + SocialShareComposerBinding.NPSocialShareComposerAddImage(AddrOfNativeObject(), handle.AddrOfPinnedObject(), imageData.Length); + + // release pinned data object + handle.Free(); + } + + public override void AddURL(URLString url) + { + SocialShareComposerBinding.NPSocialShareComposerAddURL(AddrOfNativeObject(), url.ToString()); + } + + public override void Show(Vector2 screenPosition) + { + var invertedPosition = UnityEngineUtility.InvertScreenPosition(screenPosition, invertX: false); + SocialShareComposerBinding.NPSocialShareComposerShow(AddrOfNativeObject(), invertedPosition.x, invertedPosition.y); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(SocialShareComposerClosedNativeCallback))] + private static void HandleSocialShareComposerClosedCallbackInternal(IntPtr nativePtr, SLComposeViewControllerResult result) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + // send result + owner.SendCloseEvent(SharingUtility.ConvertToShareComposerResultCode(result), null); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSocialShareComposer.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSocialShareComposer.cs.meta new file mode 100644 index 00000000..b988af8e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/NativeSocialShareComposer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9fde9721f3bf84cb3840bf2588e25850 +timeCreated: 1553079883 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SLComposeViewControllerResult.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SLComposeViewControllerResult.cs new file mode 100644 index 00000000..025b8612 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SLComposeViewControllerResult.cs @@ -0,0 +1,15 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal enum SLComposeViewControllerResult : long + { + SLComposeViewControllerResultCancelled, + + SLComposeViewControllerResultDone, + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SLComposeViewControllerResult.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SLComposeViewControllerResult.cs.meta new file mode 100644 index 00000000..6ffbcf52 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SLComposeViewControllerResult.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c948e9f80e4234e92aaae6c98c16f9d9 +timeCreated: 1553079966 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/ShareSheetBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/ShareSheetBinding.cs new file mode 100644 index 00000000..7abb3250 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/ShareSheetBinding.cs @@ -0,0 +1,39 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Runtime.InteropServices; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal static class ShareSheetBinding + { + [DllImport("__Internal")] + public static extern void NPShareSheetRegisterCallback(ShareSheetClosedNativeCallback closedCallback); + + [DllImport("__Internal")] + public static extern IntPtr NPShareSheetCreate(); + + [DllImport("__Internal")] + public static extern void NPShareSheetShow(IntPtr nativePtr, float posX, float posY); + + [DllImport("__Internal")] + public static extern void NPShareSheetAddText(IntPtr nativePtr, string value); + + [DllImport("__Internal")] + public static extern void NPShareSheetAddScreenshot(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPShareSheetAddImage(IntPtr nativePtr, IntPtr dataArrayPtr, int dataLength); + + [DllImport("__Internal")] + public static extern void NPShareSheetAddURL(IntPtr nativePtr, string url); + + [DllImport("__Internal")] + public static extern void NPShareSheetAddAttachment(IntPtr nativePtr, UnityAttachment data); + + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/ShareSheetBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/ShareSheetBinding.cs.meta new file mode 100644 index 00000000..ea65926f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/ShareSheetBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 902547e688c30465680286528265f1b9 +timeCreated: 1553080601 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SharingUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SharingUtility.cs new file mode 100644 index 00000000..a81065a1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SharingUtility.cs @@ -0,0 +1,71 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal static class SharingUtility + { + #region Converter methods + + public static MailComposerResultCode ConvertToMailComposerResultCode(MFMailComposeResult result) + { + switch (result) + { + case MFMailComposeResult.MFMailComposeResultCancelled: + return MailComposerResultCode.Cancelled; + + case MFMailComposeResult.MFMailComposeResultSaved: + return MailComposerResultCode.Saved; + + case MFMailComposeResult.MFMailComposeResultSent: + return MailComposerResultCode.Sent; + + case MFMailComposeResult.MFMailComposeResultFailed: + return MailComposerResultCode.Failed; + + default: + throw VBException.SwitchCaseNotImplemented(result); + } + } + + public static MessageComposerResultCode ConvertToMessageComposerResultCode(MFMessageComposeResult result) + { + switch (result) + { + case MFMessageComposeResult.MFMessageComposeResultCancelled: + return MessageComposerResultCode.Cancelled; + + case MFMessageComposeResult.MFMessageComposeResultSent: + return MessageComposerResultCode.Sent; + + case MFMessageComposeResult.MFMessageComposeResultFailed: + return MessageComposerResultCode.Failed; + + default: + throw VBException.SwitchCaseNotImplemented(result); + } + } + + public static SocialShareComposerResultCode ConvertToShareComposerResultCode(SLComposeViewControllerResult result) + { + switch (result) + { + case SLComposeViewControllerResult.SLComposeViewControllerResultCancelled: + return SocialShareComposerResultCode.Cancelled; + + case SLComposeViewControllerResult.SLComposeViewControllerResultDone: + return SocialShareComposerResultCode.Done; + + default: + throw VBException.SwitchCaseNotImplemented(result); + } + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SharingUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SharingUtility.cs.meta new file mode 100644 index 00000000..66dd96f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SharingUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 50ae8cbcc09cd45b7bed3db7d04a2303 +timeCreated: 1577082377 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SocialShareComposerBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SocialShareComposerBinding.cs new file mode 100644 index 00000000..c06f06a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SocialShareComposerBinding.cs @@ -0,0 +1,37 @@ +#if UNITY_IOS || UNITY_TVOS +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System; +using UnityEngine; + +namespace VoxelBusters.EssentialKit.SharingServicesCore.iOS +{ + internal static class SocialShareComposerBinding + { + [DllImport("__Internal")] + public static extern bool NPSocialShareComposerIsComposerAvailable(SocialShareComposerType composerType); + + [DllImport("__Internal")] + public static extern void NPSocialShareComposerRegisterCallback(SocialShareComposerClosedNativeCallback closedCallback); + + [DllImport("__Internal")] + public static extern IntPtr NPSocialShareComposerCreate(SocialShareComposerType composerType); + + [DllImport("__Internal")] + public static extern void NPSocialShareComposerShow(IntPtr nativePtr, float posX, float posY); + + [DllImport("__Internal")] + public static extern void NPSocialShareComposerAddText(IntPtr nativePtr, string value); + + [DllImport("__Internal")] + public static extern void NPSocialShareComposerAddScreenshot(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPSocialShareComposerAddImage(IntPtr nativePtr, IntPtr dataArrayPtr, int dataLength); + + [DllImport("__Internal")] + public static extern void NPSocialShareComposerAddURL(IntPtr nativePtr, string url); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SocialShareComposerBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SocialShareComposerBinding.cs.meta new file mode 100644 index 00000000..38bdf042 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/SharingServices/SocialShareComposerBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 50e2b35676a2a455096c55445e8e3cd8 +timeCreated: 1553079890 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/VoxelBusters.EssentialKit.iOSModule.asmdef b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/VoxelBusters.EssentialKit.iOSModule.asmdef new file mode 100644 index 00000000..d785b04d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/VoxelBusters.EssentialKit.iOSModule.asmdef @@ -0,0 +1,21 @@ +{ + "name": "VoxelBusters.EssentialKit.iOSModule", + "references": [ + "VoxelBusters.CoreLibrary", + "VoxelBusters.CoreLibrary.NativePlugins", + "VoxelBusters.CoreLibrary.NativePlugins.iOSModule", + "VoxelBusters.EssentialKit" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor", + "iOS", + "tvOS" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/VoxelBusters.EssentialKit.iOSModule.asmdef.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/VoxelBusters.EssentialKit.iOSModule.asmdef.meta new file mode 100644 index 00000000..2f90b05d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/VoxelBusters.EssentialKit.iOSModule.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0d714fe1295684bd99b899b3d4bcf0f0 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView.meta new file mode 100644 index 00000000..81ec2104 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6dbd8d17f738d4e87a07cce6c8a511d0 +folderAsset: yes +timeCreated: 1553082545 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeDelegates.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeDelegates.cs new file mode 100644 index 00000000..00bd66aa --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeDelegates.cs @@ -0,0 +1,16 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.WebViewCore.iOS +{ + internal delegate void WebViewNativeCallback(IntPtr nativePtr, NativeError error); + + internal delegate void WebViewRunJavaScriptNativeCallback(IntPtr nativePtr, string result, NativeError error, IntPtr tagPtr); + + internal delegate void WebViewURLSchemeMatchFoundNativeCallback(IntPtr nativePtr, string url); +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeDelegates.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeDelegates.cs.meta new file mode 100644 index 00000000..27692051 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeDelegates.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c1e705f03f9db41e794ee04d9cbce9a0 +timeCreated: 1553605667 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeWebView.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeWebView.cs new file mode 100644 index 00000000..a27b2b9a --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeWebView.cs @@ -0,0 +1,264 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using AOT; +using VoxelBusters.CoreLibrary.NativePlugins; +using VoxelBusters.CoreLibrary.NativePlugins.iOS; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.WebViewCore.iOS +{ + public sealed class NativeWebView : NativeWebViewBase, INativeWebView + { + #region Constructors + + static NativeWebView() + { + // register for events + WebViewBinding.NPWebViewRegisterCallbacks(HandleOnShowNativeCallback, HandleOnHideNativeCallback, HandleLoadStartNativeCallback, HandleLoadFinishNativeCallback, HandleRunJavaScriptNativeCallback, HandleURLSchemeMatchFoundNativeCallback); + } + + public NativeWebView() + : base(isAvailable: true) + { + // create instance + var nativePtr = WebViewBinding.NPWebViewCreate(); + + // set properties + NativeObjectRef = new IosNativeObjectRef(nativePtr, retain: false); + + // add to collection to map action + NativeInstanceMap.AddInstance(nativePtr, this); + } + + ~NativeWebView() + { + Dispose(false); + } + + #endregion + + #region Base class methods + + public override string GetURL() + { + return WebViewBinding.NPWebViewGetURL(AddrOfNativeObject()); + } + + public override string GetTitle() + { + return WebViewBinding.NPWebViewGetTitle(AddrOfNativeObject()); + } + + public override void SetFrame(Rect value) + { + UnityRect rect = (UnityRect)value; + rect.X /= Screen.width; + rect.Y /= Screen.height; + rect.Width /= Screen.width; + rect.Height /= Screen.height; + WebViewBinding.NPWebViewSetNormalizedRect(AddrOfNativeObject(), rect); + } + + public override void SetStyle(WebViewStyle style) + { + WebViewBinding.NPWebViewSetStyle(AddrOfNativeObject(), style); + } + + public override void SetScalesPageToFit(bool value) + { + WebViewBinding.NPWebViewSetScalesPageToFit(AddrOfNativeObject(), value); + } + + public override void SetCanBounce(bool value) + { + WebViewBinding.NPWebViewSetCanBounce(AddrOfNativeObject(), value); + } + + public override void SetBackgroundColor(Color value) + { + WebViewBinding.NPWebViewSetBackgroundColor(AddrOfNativeObject(), (UnityColor)value); + } + + public override double GetProgress() + { + return WebViewBinding.NPWebViewGetProgress(AddrOfNativeObject()); + } + + public override bool GetIsLoading() + { + return WebViewBinding.NPWebViewGetIsLoading(AddrOfNativeObject()); + } + + public override void SetJavaScriptEnabled(bool value) + { + WebViewBinding.NPWebViewSetJavaScriptEnabled(AddrOfNativeObject(), value); + } + + public override void Show() + { + WebViewBinding.NPWebViewShow(AddrOfNativeObject()); + } + + public override void Hide() + { + WebViewBinding.NPWebViewHide(AddrOfNativeObject()); + } + + public override void LoadURL(string url) + { + WebViewBinding.NPWebViewLoadURL(AddrOfNativeObject(), url); + } + + public override void LoadHtmlString(string htmlString, string baseURL) + { + WebViewBinding.NPWebViewLoadHtmlString(AddrOfNativeObject(), htmlString, baseURL); + } + + public override void LoadData(byte[] data, string mimeType, string textEncodingName, string baseURL) + { + GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); + UnityAttachment attachment = new UnityAttachment() + { + DataArrayLength = data.Length, + DataArrayPtr = handle.AddrOfPinnedObject(), + MimeTypePtr = Marshal.StringToHGlobalAuto(mimeType), + }; + + WebViewBinding.NPWebViewLoadData(AddrOfNativeObject(), attachment, textEncodingName, baseURL); + + // release pinned data object + handle.Free(); + } + + public override void Reload() + { + WebViewBinding.NPWebViewReload(AddrOfNativeObject()); + } + + public override void StopLoading() + { + WebViewBinding.NPWebViewStopLoading(AddrOfNativeObject()); + } + + public override void RunJavaScript(string script, RunJavaScriptInternalCallback callback) + { + IntPtr tagPtr = MarshalUtility.GetIntPtr(callback); + WebViewBinding.NPWebViewRunJavaScript(AddrOfNativeObject(), script, tagPtr); + } + + public override void AddURLScheme(string urlScheme) + { + WebViewBinding.NPWebViewAddURLScheme(AddrOfNativeObject(), urlScheme); + } + + public override void ClearCache() + { + WebViewBinding.NPWebViewClearCache(); + } + + protected override void Dispose(bool disposing) + { + // check whether object is released + if (IsDisposed) + { + return; + } + + // release all unmanaged type objects + var nativePtr = AddrOfNativeObject(); + if (nativePtr != IntPtr.Zero) + { + NativeInstanceMap.RemoveInstance(nativePtr); + } + + base.Dispose(disposing); + } + + #endregion + + #region Native callback methods + + [MonoPInvokeCallback(typeof(WebViewNativeCallback))] + private static void HandleOnShowNativeCallback(IntPtr nativePtr, NativeError error) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + // invoke event + var errorObj = error.Convert(WebViewError.kDomain); + owner.SendShowEvent(errorObj); + } + + [MonoPInvokeCallback(typeof(WebViewNativeCallback))] + private static void HandleOnHideNativeCallback(IntPtr nativePtr, NativeError error) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + // invoke event + var errorObj = error.Convert(WebViewError.kDomain); + owner.SendHideEvent(errorObj); + } + + [MonoPInvokeCallback(typeof(WebViewNativeCallback))] + private static void HandleLoadStartNativeCallback(IntPtr nativePtr, NativeError error) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + // invoke event + var errorObj = error.Convert(WebViewError.kDomain); + owner.SendLoadStartEvent(errorObj); + } + + [MonoPInvokeCallback(typeof(WebViewNativeCallback))] + private static void HandleLoadFinishNativeCallback(IntPtr nativePtr, NativeError error) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, nameof(owner)); + + // invoke event + var errorObj = error.Convert(WebViewError.kDomain); + owner.SendLoadFinishEvent(errorObj); + } + + [MonoPInvokeCallback(typeof(WebViewRunJavaScriptNativeCallback))] + private static void HandleRunJavaScriptNativeCallback(IntPtr nativePtr, string result, NativeError error, IntPtr tagPtr) + { + var tagHandle = GCHandle.FromIntPtr(tagPtr); + + try + { + // invoke event + var errorObj = error.Convert(WebViewError.kDomain); + ((RunJavaScriptInternalCallback)tagHandle.Target).Invoke(result, errorObj); + } + catch (Exception exception) + { + DebugLogger.LogException(EssentialKitDomain.Default, exception); + } + finally + { + // release handle + tagHandle.Free(); + } + } + + [MonoPInvokeCallback(typeof(WebViewURLSchemeMatchFoundNativeCallback))] + private static void HandleURLSchemeMatchFoundNativeCallback(IntPtr nativePtr, string url) + { + var owner = NativeInstanceMap.GetOwner(nativePtr); + Assert.IsPropertyNotNull(owner, "owner"); + + // invoke event + owner.SendURLSchemeMatchFoundEvent(url); + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeWebView.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeWebView.cs.meta new file mode 100644 index 00000000..3e39aae1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/NativeWebView.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 808a9a9d2fcf44717999bde13465eca9 +timeCreated: 1576915906 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/WebViewBinding.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/WebViewBinding.cs new file mode 100644 index 00000000..37ac2697 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/WebViewBinding.cs @@ -0,0 +1,103 @@ +#if UNITY_IOS || UNITY_TVOS +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.WebViewCore.iOS +{ + internal static class WebViewBinding + { + [DllImport("__Internal")] + public static extern void NPWebViewRegisterCallbacks(WebViewNativeCallback onShowCallback, + WebViewNativeCallback onHideCallback, + WebViewNativeCallback loadStartCallback, + WebViewNativeCallback loadFinishCallback, + WebViewRunJavaScriptNativeCallback runJavaScriptFinishCallback, + WebViewURLSchemeMatchFoundNativeCallback urlMatchFoundCallback); + + [DllImport("__Internal")] + public static extern IntPtr NPWebViewCreate(); + + [DllImport("__Internal")] + public static extern string NPWebViewGetURL(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern string NPWebViewGetTitle(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern UnityRect NPWebViewGetNormalizedRect(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewSetNormalizedRect(IntPtr nativePtr, UnityRect rect); + + [DllImport("__Internal")] + public static extern WebViewStyle NPWebViewGetStyle(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewSetStyle(IntPtr nativePtr, WebViewStyle style); + + [DllImport("__Internal")] + public static extern bool NPWebViewGetScalesPageToFit(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewSetScalesPageToFit(IntPtr nativePtr, bool value); + + [DllImport("__Internal")] + public static extern bool NPWebViewGetCanBounce(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewSetCanBounce(IntPtr nativePtr, bool value); + + [DllImport("__Internal")] + public static extern UnityColor NPWebViewGetBackgroundColor(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewSetBackgroundColor(IntPtr nativePtr, UnityColor color); + + [DllImport("__Internal")] + public static extern double NPWebViewGetProgress(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern bool NPWebViewGetIsLoading(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern bool NPWebViewGetJavaScriptEnabled(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewSetJavaScriptEnabled(IntPtr nativePtr, bool enabled); + + [DllImport("__Internal")] + public static extern void NPWebViewShow(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewHide(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewLoadURL(IntPtr nativePtr, string urlStr); + + [DllImport("__Internal")] + public static extern void NPWebViewLoadHtmlString(IntPtr nativePtr, string htmlStr, string baseUrl); + + [DllImport("__Internal")] + public static extern void NPWebViewLoadData(IntPtr nativePtr, UnityAttachment attachmentData, string encodingName, string baseUrl); + + [DllImport("__Internal")] + public static extern void NPWebViewReload(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewStopLoading(IntPtr nativePtr); + + [DllImport("__Internal")] + public static extern void NPWebViewRunJavaScript(IntPtr nativePtr, string script, IntPtr tagPtr); + + [DllImport("__Internal")] + public static extern void NPWebViewAddURLScheme(IntPtr nativePtr, string scheme); + + [DllImport("__Internal")] + public static extern void NPWebViewClearCache(); + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/WebViewBinding.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/WebViewBinding.cs.meta new file mode 100644 index 00000000..32c2d887 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Runtime/iOS/WebView/WebViewBinding.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5a579ca03df89429a8903476baaf42a6 +timeCreated: 1553605039 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts.meta new file mode 100644 index 00000000..d94d7059 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c1b8df37a5d44e0f95f37e721fcc0b6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials.meta new file mode 100644 index 00000000..d54c3575 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe1fa7f927c944c7688912a73c41617e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices.meta new file mode 100644 index 00000000..2d51f4ee --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4748106697c224ebabea221da42148de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/IAPManager.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/IAPManager.cs new file mode 100644 index 00000000..9e5e5e17 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/IAPManager.cs @@ -0,0 +1,292 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public static class IAPManager + { + #region Static fields + + private static IBillingProduct[] s_cachedProducts; + + private static Dictionary s_cachedProductsMap; + + private static InternalState s_currentState; + + private static bool s_isPurchasing; + + private static bool s_isRestoring; + + private static EventCallback s_getProductsObservers; + + private static EventCallback s_buyProductObserver; + + private static EventCallback s_restorePurchasesObservers; + + #endregion + + #region Static events + + public static event EventCallback OnInitializeStoreComplete + { + add { BillingServices.OnInitializeStoreComplete += value; } + remove { BillingServices.OnInitializeStoreComplete -= value; } + } + + public static event Callback OnTransactionStateChange + { + add { BillingServices.OnTransactionStateChange += value; } + remove { BillingServices.OnTransactionStateChange -= value; } + } + + public static event EventCallback OnRestorePurchasesComplete + { + add { BillingServices.OnRestorePurchasesComplete += value; } + remove { BillingServices.OnRestorePurchasesComplete -= value; } + } + + #endregion + + #region Constructors + + static IAPManager() + { + // set default state + s_cachedProducts = null; + s_cachedProductsMap = new Dictionary(capacity: 8); + s_currentState = InternalState.NotInitialized; + + // complete other actions + RegisterForCallbacks(); + } + + #endregion + + #region Public methods + + public static void SetDirty() + { + if (s_currentState != InternalState.Initialized) + { + return; + } + + // update state value + s_currentState = InternalState.NotInitialized; + } + + public static void GetBillingProducts(EventCallback callback) + { + Assert.IsArgNotNull(callback, nameof(callback)); + + switch (s_currentState) + { + case InternalState.NotInitialized: + InitializeStore(); + s_getProductsObservers += callback; + break; + + case InternalState.Initializing: + s_getProductsObservers += callback; + break; + + case InternalState.Initialized: + callback.Invoke(s_cachedProducts, null); + break; + + default: + throw VBException.SwitchCaseNotImplemented(s_currentState); + } + } + + public static void BuyProduct(string productId, EventCallback callback, string tag = null) + { + Assert.IsArgNotNull(callback, nameof(callback)); + + // ensure that store is initialized + var initializing = TryInitializeStore((products, error) => + { + if (error == null) + { + BuyProduct(productId, callback, tag); + } + else + { + callback.Invoke(null, error); + } + }); + if (initializing) + { + return; + } + + // check whether there are any ongoing operations + if (!IsStoreAvailable()) + { + callback.Invoke(null, BillingServicesError.StoreIsBusy()); + return; + } + + // get specified product information + s_cachedProductsMap.TryGetValue(productId, out IBillingProduct product); + if (product == null) + { + callback.Invoke(null, BillingServicesError.ProductNotAvailable()); + return; + } + + // initiate purchase request + s_isPurchasing = true; + s_buyProductObserver = callback; + BillingServices.BuyProduct(product, new BuyProductOptions.Builder().SetTag(tag).Build()); + } + + public static void RestorePurchases(EventCallback callback, bool forceRefresh, string tag = null) + { + Assert.IsArgNotNull(callback, nameof(callback)); + + // ensure that store is initialized + var initializing = TryInitializeStore((products, error) => + { + if (error == null) + { + RestorePurchases(callback, forceRefresh, tag); + } + else + { + callback.Invoke(null, error); + } + }); + if (initializing) + { + return; + } + + // check whether there are any ongoing operations + if (s_isPurchasing) + { + callback.Invoke(null, BillingServicesError.StoreIsBusy()); + return; + } + + // start restore request + s_restorePurchasesObservers += callback; + if (!s_isRestoring) + { + s_isRestoring = true; + BillingServices.RestorePurchases(forceRefresh, tag); + } + } + + #endregion + + #region Private methods + + private static void RegisterForCallbacks() + { + BillingServices.OnInitializeStoreComplete += HandleOnInitializeStore; + BillingServices.OnTransactionStateChange += HandleOnTransactionStateChange; + BillingServices.OnRestorePurchasesComplete += HandleOnRestorePurchasesComplete; + } + + private static void InitializeStore() + { + s_currentState = InternalState.Initializing; + + BillingServices.InitializeStore(); + } + + // returns true incase if initialisation is required + private static bool TryInitializeStore(EventCallback callback) + { + if (s_currentState != InternalState.Initialized) + { + GetBillingProducts(callback); + return true; + } + + return false; + } + + private static bool IsStoreAvailable() + { + return !(s_isPurchasing || s_isRestoring); + } + + #endregion + + #region Event callback methods + + private static void HandleOnInitializeStore(BillingServicesInitializeStoreResult result, Error error) + { + // update internal state + s_cachedProductsMap.Clear(); + s_cachedProducts = result.Products; + if (error == null) + { + s_currentState = InternalState.Initialized; + foreach (var product in result.Products) + { + s_cachedProductsMap[product.Id] = product; + } + } + else + { + s_currentState = InternalState.NotInitialized; + } + + // forward results to the observer + if (s_getProductsObservers != null) + { + s_getProductsObservers.Invoke(result.Products, error); + s_getProductsObservers = null; + } + } + + private static void HandleOnTransactionStateChange(BillingServicesTransactionStateChangeResult result) + { + // reset state + s_isPurchasing = false; + + // send result to the observer objects + foreach (var transaction in result.Transactions) + { + if (transaction.TransactionState == BillingTransactionState.Purchasing) + { + continue; + } + + s_buyProductObserver.Invoke(transaction, null); + } + s_buyProductObserver = null; + } + + private static void HandleOnRestorePurchasesComplete(BillingServicesRestorePurchasesResult result, Error error) + { + // reset state + s_isRestoring = false; + + // send result to the observer objects + s_restorePurchasesObservers.Invoke(result.Transactions, error); + s_restorePurchasesObservers = null; + } + + #endregion + + #region Nested types + + private enum InternalState + { + NotInitialized = 0, + + Initializing, + + Initialized + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/IAPManager.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/IAPManager.cs.meta new file mode 100644 index 00000000..effe97a0 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/IAPManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50c8911c45fa04dcea8260bf7534cebc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIAPUtility.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIAPUtility.cs new file mode 100644 index 00000000..5394851e --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIAPUtility.cs @@ -0,0 +1,166 @@ +#if ESSENTIAL_KIT_USE_UNITY_IAP_BILLING +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Purchasing; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public static class UnityIAPUtility + { +#region Unity methods + + public static ProductDefinition ConvertToUnityProductDefinition(BillingProductDefinition productDefinition) + { + return new ProductDefinition(id: productDefinition.Id, + storeSpecificId: productDefinition.GetPlatformIdForActivePlatform(), + type: ConvertToUnityProductType(productDefinition.ProductType), + enabled: true, + payouts: CollectionUtility.ConvertAll(productDefinition.Payouts, (item) => ConvertToUnityPayoutDefinition(item))); + } + + public static PayoutDefinition ConvertToUnityPayoutDefinition(BillingProductPayoutDefinition payoutDefinition) + { + return new PayoutDefinition(type: ConvertToUnityPayoutType(payoutDefinition.Category), + subtype: payoutDefinition.Variant, + quantity: payoutDefinition.Quantity, + data: payoutDefinition.Data); + } + + public static ProductType ConvertToUnityProductType(BillingProductType productType) + { + switch (productType) + { + case BillingProductType.Consumable: + return ProductType.Consumable; + + case BillingProductType.NonConsumable: + return ProductType.NonConsumable; + + case BillingProductType.Subscription: + return ProductType.Subscription; + + default: + throw VBException.SwitchCaseNotImplemented(productType); + } + } + + public static PayoutType ConvertToUnityPayoutType(BillingProductPayoutCategory payoutCategory) + { + switch (payoutCategory) + { + case BillingProductPayoutCategory.Currency: + return PayoutType.Currency; + + case BillingProductPayoutCategory.Item: + return PayoutType.Item; + + case BillingProductPayoutCategory.Other: + return PayoutType.Other; + + default: + throw VBException.SwitchCaseNotImplemented(payoutCategory); + } + } + +#endregion + +#region Native methods + + public static BillingProductPayoutDefinition ConvertToNativePayout(PayoutDefinition definition) + { + return new BillingProductPayoutDefinition( + payoutType: ConvertToNativePayoutType(definition.type), + subtype: definition.subtype, + quantity: definition.quantity, + data: definition.data); + } + + public static BillingProductPayoutCategory ConvertToNativePayoutType(PayoutType payoutType) + { + switch (payoutType) + { + case PayoutType.Currency: + return BillingProductPayoutCategory.Currency; + + case PayoutType.Item: + return BillingProductPayoutCategory.Item; + + case PayoutType.Other: + case PayoutType.Resource: + return BillingProductPayoutCategory.Other; + + default: + throw VBException.SwitchCaseNotImplemented(payoutType); + } + } + + public static IBillingProduct ConvertToNativeProduct(Product unityProduct) + { + return new BillingProductPlain(id: unityProduct.definition.id, + platformId: unityProduct.definition.storeSpecificId, + localizedTitle: unityProduct.metadata.localizedTitle, + localizedDescription: unityProduct.metadata.localizedDescription, + price: unityProduct.metadata.localizedPriceString, + localizedPrice: unityProduct.metadata.localizedPriceString, + priceCurrencyCode: unityProduct.metadata.isoCurrencyCode, + payouts: CollectionUtility.ConvertAll(new List(unityProduct.definition.payouts), converter: (item) => ConvertToNativePayout(item))); + } + + public static IBillingTransaction ConvertToNativeTransaction(Product unityProduct) + { + return null; + } + + public static Error ConvertToNativeError(InitializationFailureReason failureReason) + { + switch (failureReason) + { + case InitializationFailureReason.PurchasingUnavailable: + return BillingError.StoreNotAvailable; + + case InitializationFailureReason.NoProductsAvailable: + return BillingError.ConfigurationInvalid; + + case InitializationFailureReason.AppNotKnown: + return BillingError.StoreNotAvailable; + + default: + throw VBException.SwitchCaseNotImplemented(failureReason); + } + } + + public static Error ConvertToNativeError(PurchaseFailureReason failureReason) + { + switch (failureReason) + { + case PurchaseFailureReason.PurchasingUnavailable: + return BillingError.PaymentNotAllowed; + + case PurchaseFailureReason.ProductUnavailable: + return BillingError.ProductUnavailable; + + case PurchaseFailureReason.SignatureInvalid: + return BillingError.SignatureInvalid; + + case PurchaseFailureReason.UserCancelled: + return BillingError.PaymentCancelled; + + case PurchaseFailureReason.PaymentDeclined: + return BillingError.PaymentDeclined; + + case PurchaseFailureReason.ExistingPurchasePending: + case PurchaseFailureReason.DuplicateTransaction: + return BillingError.PaymentInvalid; + + case PurchaseFailureReason.Unknown: + default: + return BillingError.Unknown; + } + } + +#endregion + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIAPUtility.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIAPUtility.cs.meta new file mode 100644 index 00000000..9329454b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIAPUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d054d4d58dcf445f4aeeb98ebe15b953 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIapServicesInterface.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIapServicesInterface.cs new file mode 100644 index 00000000..a99c199b --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIapServicesInterface.cs @@ -0,0 +1,257 @@ +#if ESSENTIAL_KIT_USE_UNITY_IAP_BILLING +using System.Collections; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; +using UnityEngine.Purchasing; +using UnityEngine.Purchasing.Extension; +using VoxelBusters.CoreLibrary; +using VoxelBusters.CoreLibrary.NativePlugins; + +namespace VoxelBusters.EssentialKit.BillingServicesCore +{ + public class UnityIapInterface : NativeBillingServicesInterfaceBase, IDetailedStoreListener + { +#region Fields + + private IStoreController m_storeController; + + private IExtensionProvider m_extensionProvider; + + private List m_Transactions; + +#endregion + +#region Constructors + + public UnityIapInterface() + : base(isAvailable: true) + { + // Set properties + m_Transactions = new List(); + } + +#endregion + +#region Base class methods + + public override bool CanMakePayments() + { + return false; + } + + public override void RetrieveProducts(BillingProductDefinition[] productDefinitions) + { + // Get product list + var convertedDefinitions = System.Array.ConvertAll(productDefinitions, (item) => UnityIAPUtility.ConvertToUnityProductDefinition(item)); + var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); + builder.AddProducts(convertedDefinitions); + + // Call operation + UnityPurchasing.Initialize(this, builder); + } + + public override bool StartPayment(IBillingPayment payment, BillingProductOfferRedeemDetails offerRedeemDetails, out Error error) + { + // Guard case + if (!CanPerformTransactions(out error)) + { + return false; + } + + // Initiate request + var product = m_storeController.products.WithID(payment.ProductId); + if ((product == null) || !product.availableToPurchase) + { + error = BillingError.ProductUnavailable; + return false; + } + + m_storeController.InitiatePurchase(product); + return true; + } + + public override IBillingTransaction[] GetTransactions() + { + return new IBillingTransaction[0]; + } + + public override void FinishTransactions(IBillingTransaction[] transactions) + { + } + + public override void RestorePurchases(bool forceRefresh, string tag) + { + // Guard case + if (!CanPerformTransactions(out Error error)) + { + SendRestorePurchasesCompleteEvent(new IBillingTransaction[0], error); + return; + } + + var apple = m_extensionProvider.GetExtension(); + if (apple != null) + { + apple.RestoreTransactions((success, errorMessage) => { + // Restore purchases initiated. See ProcessPurchase for any restored transactions. + DebugLogger.Log("[Restore transactions] Success :" + success + "Error : " + errorMessage); + }); + } + } + + public override void TryClearingUnfinishedTransactions() + { + + } + +#endregion + + +#region Private methods + + private bool CanPerformTransactions(out Error error, bool includeRestore = false) + { + if (m_storeController == null) + { + error = BillingError.StoreNotInitialized; + return false; + } + if (includeRestore && (m_extensionProvider == null)) + { + error = BillingError.RestoreNotSupported; + return false; + } + + error = null; + return true; + } + + private void ProcessTransactionData() + { + var pendingTransactions = m_Transactions.ToArray(); + + /* + var extension = m_extensionProvider.GetExtension(); + extension.RefreshAppReceipt( + successCallback: (receipt) => + { + //foreach (var product in receipt.) + }, + errorCallback: () => + { + }); + + + + + + var product = e.purchasedProduct; + var payment = new BillingPayment( + productId: product.definition.id, + productPlatformId: product.definition.storeSpecificId, + quantity: 1, + tag: null); + var transaction = new BillingTransactionPlain( + transactionId: product.transactionID, + payment: payment, + transactionDate: System.DateTime.Now, + transactionState: BillingTransactionState.Failed, + verificationState: BillingReceiptVerificationState.NotDetermined, + receipt: product.receipt); + SendPaymentStateChangeEvent(transaction); + */ + } + +#endregion + +#region IDetailedStoreListener implementation + + public void OnInitialized(IStoreController controller, IExtensionProvider extensions) + { + // Store references + m_storeController = controller; + m_extensionProvider = extensions; + + // Forward event data to the caller + var unityProductCollection = controller.products; + var nativeProducts = System.Array.ConvertAll( + unityProductCollection.all, + (item) => UnityIAPUtility.ConvertToNativeProduct(item)); + SendRetrieveProductsCompleteEvent( + products: nativeProducts, + invalidProductIds: new string[0], + error: null); + } + + public void OnInitializeFailed(InitializationFailureReason reason, string message) + { + SendRetrieveProductsCompleteEvent( + products: new IBillingProduct[0], + invalidProductIds: new string[0], + error: UnityIAPUtility.ConvertToNativeError(reason)); + } + + public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) + { + + return PurchaseProcessingResult.Pending; + } + + public void OnPurchaseFailed(Product item, PurchaseFailureDescription failureDescription) + { + var payment = new BillingPayment( + productId: item.definition.id, + productPlatformId: item.definition.storeSpecificId, + quantity: 1, + tag: null); + var transaction = new BillingTransactionPlain( + transactionId: item.transactionID, + payment: payment, + transactionDate: System.DateTime.Now, + transactionState: BillingTransactionState.Failed, + verificationState: BillingReceiptVerificationState.NotDetermined, + receipt: item.receipt, + error: UnityIAPUtility.ConvertToNativeError(failureDescription.reason)); + SendPaymentStateChangeEvent(transaction); + } + +#endregion + + void ConfigureAppleFraudDetection(IAppleExtensions appleExtensions) + { + /* + //To make sure the account id and profile id do not contain personally identifiable information, we obfuscate this information by hashing it. + var hashedUsername = HashString(user.Username); + + appleExtensions.SetApplicationUsername(hashedUsername); + */ + } + + static string HashString(string input) + { + var stringBuilder = new StringBuilder(); + foreach (var b in GetHash(input)) + stringBuilder.Append(b.ToString("X2")); + + return stringBuilder.ToString(); + } + + static IEnumerable GetHash(string input) + { + using (HashAlgorithm algorithm = SHA256.Create()) + return algorithm.ComputeHash(Encoding.UTF8.GetBytes(input)); + } + + public void OnInitializeFailed(InitializationFailureReason error) + { + throw new System.NotImplementedException("This callback is obsolete"); + } + + public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) + { + throw new System.NotImplementedException("This callback is obsolete"); + } + } +} +#endif \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIapServicesInterface.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIapServicesInterface.cs.meta new file mode 100644 index 00000000..382d766d --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/BillingServices/UnityIapServicesInterface.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f8418ec5077a4d76b44bd57a220d15d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker.meta new file mode 100644 index 00000000..1af3bf56 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 154d592ad4c9c4df884e7b58be401832 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePicker.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePicker.cs new file mode 100644 index 00000000..3a41f8d1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePicker.cs @@ -0,0 +1,219 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using TMPro; +using VoxelBusters.EssentialKit.NativeUICore; +using VoxelBusters.CoreLibrary; + +namespace VoxelBusters.EssentialKit.Extensions +{ + public class TMP_DatePicker : UnityUIDatePicker + { + #region Fields + + [SerializeField] + private RectTransform m_dateNode = null; + + [SerializeField] + private TMP_Dropdown m_dayDropdown = null; + + [SerializeField] + private TMP_Dropdown m_monthDropdown = null; + + [SerializeField] + private TMP_Dropdown m_yearDropdown = null; + + [SerializeField] + private RectTransform m_timeNode = null; + + [SerializeField] + private TMP_Dropdown m_hourDropdown = null; + + [SerializeField] + private TMP_Dropdown m_minuteDropdown = null; + + #endregion + + #region Private static methods + + private static int GetDropdownValue(TMP_Dropdown dropdown) + { + var option = dropdown.options[dropdown.value]; + return int.Parse(option.text); + } + + private static void SelectDropdownValue(TMP_Dropdown dropdown, int value) + { + var option = dropdown.options[0]; + int start = int.Parse(option.text); + + // set offset from starting value + dropdown.value = (value - start); + } + + private static List ConvertIntegerToStringNames(int startIndex, int count, string format) + { + int end = startIndex + count; + var values = new List(count); + for (int iter = startIndex; iter < end; iter++) + { + values.Add(iter.ToString(format)); + } + + return values; + } + + #endregion + + #region Base class methods + + protected override void Awake() + { + base.Awake(); + } + + protected override void Start() + { + base.Start(); + } + + public override void Show() + { + base.Show(); + + // set initial selected date + SelectedDate = InitialDate ?? GetCurrentDateTime(Kind); + + // configure components + ConfigureYearDropdown(); + ConfigureMonthDropdown(); + ConfigureDayDropdown(SelectedDate.Month, SelectedDate.Year); + ConfigureHourDropdown(); + ConfigureMinuteDropdown(); + + // update visiblity + m_timeNode.gameObject.SetActive(Mode != DatePickerMode.Date); + m_dateNode.gameObject.SetActive(Mode != DatePickerMode.Time); + + // show selected date + if (Mode != DatePickerMode.Time) + { + SelectDropdownValue(m_yearDropdown, SelectedDate.Year); + SelectDropdownValue(m_monthDropdown, SelectedDate.Month); + SelectDropdownValue(m_dayDropdown, SelectedDate.Day); + } + if (Mode != DatePickerMode.Date) + { + SelectDropdownValue(m_hourDropdown, SelectedDate.Hour); + SelectDropdownValue(m_minuteDropdown, SelectedDate.Minute); + } + } + + #endregion + + #region Private methods + + private void ConfigureYearDropdown() + { + int startYear = 1900, endYear = 2100; + if (MinDate.HasValue) + { + startYear = MinDate.Value.Year; + } + if (MaxDate.HasValue) + { + endYear = MaxDate.Value.Year; + } + + // configure components + var years = ConvertIntegerToStringNames(startYear, endYear - startYear, "D4"); + m_yearDropdown.ClearOptions(); + m_yearDropdown.AddOptions(years); + } + + private void ConfigureMonthDropdown() + { + // configure components + var months = ConvertIntegerToStringNames(1, 12, "D2"); + m_monthDropdown.ClearOptions(); + m_monthDropdown.AddOptions(months); + } + + private void ConfigureDayDropdown(int month, int year) + { + // get all the days + var days = new List(); + for (var date = new DateTime(year, month, 1); date.Month == month; date = date.AddDays(1)) + { + days.Add(date.Day.ToString("D2")); + } + + m_dayDropdown.ClearOptions(); + m_dayDropdown.AddOptions(days); + } + + private void ConfigureHourDropdown() + { + var hours = ConvertIntegerToStringNames(0, 24, "D2"); + m_hourDropdown.ClearOptions(); + m_hourDropdown.AddOptions(hours); + } + + private void ConfigureMinuteDropdown() + { + var minute = ConvertIntegerToStringNames(0, 60, "D2"); + m_minuteDropdown.ClearOptions(); + m_minuteDropdown.AddOptions(minute); + } + + #endregion + + #region UI callback methods + + public void OnSubmit() + { + // construct date + int year = 0; + int month = 1; + int day = 1; + int hour = 0; + int minute = 0; + if (Mode != DatePickerMode.Time) + { + year = GetDropdownValue(m_yearDropdown); + month = GetDropdownValue(m_monthDropdown); + day = GetDropdownValue(m_dayDropdown); + } + if (Mode != DatePickerMode.Date) + { + hour = GetDropdownValue(m_hourDropdown); + minute = GetDropdownValue(m_minuteDropdown); + } + // send result + var date = new DateTime(year, month, day, hour, minute, 0, Kind); + SendCompletionResult(date, null); + + // remove view + DismissInternal(); + } + + public void OnDismiss() + { + Dismiss(); + } + + public void OnDropdownValueChange(Dropdown dropdown) + { + // reconfigure day dropdown on year/month selection change + if (dropdown == m_yearDropdown || + dropdown == m_monthDropdown) + { + ConfigureDayDropdown(GetDropdownValue(m_monthDropdown), GetDropdownValue(m_yearDropdown)); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePicker.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePicker.cs.meta new file mode 100644 index 00000000..742bc3a8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePicker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 69e2a1bad265143a1bf4058a6aacbaef +timeCreated: 1579874409 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePickerInputField.cs b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePickerInputField.cs new file mode 100644 index 00000000..acbea4ea --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePickerInputField.cs @@ -0,0 +1,255 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.EventSystems; +using TMPro; +using UnityEngine.UI; + +namespace VoxelBusters.EssentialKit.Extensions +{ + public class TMP_DatePickerInputField : Selectable, IPointerClickHandler, ISubmitHandler, ICancelHandler + { + #region Fields + + [SerializeField] + private TextMeshProUGUI m_placeholder = null; + + [SerializeField] + private TextMeshProUGUI m_text = null; + + [SerializeField] + private DateTimeKind m_kind = DateTimeKind.Local; + + [SerializeField] + private DatePickerMode m_mode = DatePickerMode.DateAndTime; + + [SerializeField] + private string m_displayFormat = "dd MMM yyyy hh:mm tt"; + + [SerializeField] + private UnityEvent m_onValueChange = new UnityEvent(); + + private DateTime? m_minimumDate; + + private DateTime? m_maximumDate; + + private DateTime? m_initialDate; + + private DateTime? m_date; + + private bool m_isSelected; + + #endregion + + #region Properties + + public DateTimeKind Kind + { + get + { + return m_kind; + } + set + { + m_kind = value; + } + } + + public DatePickerMode Mode + { + get + { + return m_mode; + } + set + { + m_mode = value; + } + } + + public string DisplayFormat + { + get + { + return m_displayFormat; + } + set + { + m_displayFormat = value; + } + } + + public DateTime? MinimumDate + { + get + { + return m_minimumDate; + } + set + { + m_minimumDate = value; + } + } + + public DateTime? MaximumDate + { + get + { + return m_maximumDate; + } + set + { + m_maximumDate = value; + } + } + + public DateTime? InitialDate + { + get + { + return m_initialDate; + } + set + { + m_initialDate = value; + } + } + + public DateTime? Date + { + get + { + return m_date; + } + set + { + if ((value == null) || + ((MinimumDate == null || value >= MinimumDate) && (MaximumDate == null || value <= MaximumDate))) + { + // copy new value + m_date = value; + + // update content + SetText(m_date.HasValue ? m_date.Value.ToString(m_displayFormat) : string.Empty); + + // send event + if (m_onValueChange != null) + { + m_onValueChange.Invoke(); + } + } + } + } + + #endregion + + #region Events + + public UnityEvent OnValueChange + { + get + { + return m_onValueChange; + } + } + + #endregion + + #region Unity methods + + protected override void Awake() + { + base.Awake(); + + // set default state + m_isSelected = false; + SetText(null); + } + + #endregion + + #region Public methods + + public void Show() + { + if (!IsActive() || !IsInteractable() || m_isSelected) + return; + + // update activity status + m_isSelected = true; + + // create date picker object + var datePicker = DatePicker.CreateInstance(m_mode) + //.SetKind(m_kind) + .SetMinimumDate(MinimumDate) + .SetMaximumDate(MaximumDate) + .SetInitialDate(Date.HasValue ? Date : InitialDate) + .SetOnValueChange(OnDatePickerValueChange) + .SetOnCloseCallback(OnDatePickerClose); + + // show date picker + datePicker.Show(); + } + + #endregion + + #region Private methods + + private void SetText(string value) + { + // update state based on content + bool isEmpty = string.IsNullOrEmpty(value); + m_placeholder.gameObject.SetActive(isEmpty); + m_text.gameObject.SetActive(!isEmpty); + + // update content + if (!isEmpty) + { + m_text.text = value; + } + } + + #endregion + + #region IPointerClickHandler implementation + + public virtual void OnPointerClick(PointerEventData eventData) + { + Show(); + } + + #endregion + + #region ISubmitHandler implementation + + public virtual void OnSubmit(BaseEventData eventData) + { } + + #endregion + + #region ICancelHandler implementation + + public virtual void OnCancel(BaseEventData eventData) + { } + + #endregion + + #region UI callback methods + + private void OnDatePickerClose(DatePickerResult data) + { + // unset flag + m_isSelected = false; + } + + private void OnDatePickerValueChange(DateTime? dateTime) + { + // update local value + Date = dateTime; + } + + #endregion + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePickerInputField.cs.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePickerInputField.cs.meta new file mode 100644 index 00000000..d0137cd1 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/Scripts/Essentials/DatePicker/TMP_DatePickerInputField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 372cfc342c29d4ebaaacfb6b2d52ad53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/package.json b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/package.json new file mode 100644 index 00000000..5de53373 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/package.json @@ -0,0 +1,15 @@ +{ + "name": "com.voxelbusters.essentialkit", + "displayName": "Essential Kit", + "version": "1.0.0", + "unity": "2018.3", + "description": "", + "dependencies": {}, + "samples": [], + "keywords": [], + "author": { + "name": "Voxel Busters", + "email": "support@voxelbusters.com", + "url": "https://www.voxelbusters.com" + } +} \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/package.json.meta b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/package.json.meta new file mode 100644 index 00000000..10e4e99f --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/EssentialKit/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 008a4b72a62e940cdbe79e535f20451e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/EintooAR/Assets/Plugins/VoxelBusters/link.xml b/EintooAR/Assets/Plugins/VoxelBusters/link.xml new file mode 100644 index 00000000..b9e945f7 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/link.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EintooAR/Assets/Plugins/VoxelBusters/link.xml.meta b/EintooAR/Assets/Plugins/VoxelBusters/link.xml.meta new file mode 100644 index 00000000..be5853d8 --- /dev/null +++ b/EintooAR/Assets/Plugins/VoxelBusters/link.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 09d3ba4708a0e2f469a34adb8600317d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: